1 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
3 * alias.cc (ref_all_alias_ptr_type_p): Use _P() defines from tree.h.
4 * attribs.cc (diag_attr_exclusions): Ditto.
5 (decl_attributes): Ditto.
6 (build_type_attribute_qual_variant): Ditto.
7 * builtins.cc (fold_builtin_carg): Ditto.
8 (fold_builtin_next_arg): Ditto.
10 * cfgexpand.cc (expand_return): Ditto.
11 * cgraph.h (decl_in_symtab_p): Ditto.
12 (symtab_node::get_create): Ditto.
13 * dwarf2out.cc (base_type_die): Ditto.
14 (implicit_ptr_descriptor): Ditto.
15 (gen_array_type_die): Ditto.
16 (gen_type_die_with_usage): Ditto.
17 (optimize_location_into_implicit_ptr): Ditto.
18 * expr.cc (do_store_flag): Ditto.
19 * fold-const.cc (negate_expr_p): Ditto.
20 (fold_negate_expr_1): Ditto.
21 (fold_convert_const): Ditto.
22 (fold_convert_loc): Ditto.
23 (constant_boolean_node): Ditto.
24 (fold_binary_op_with_conditional_arg): Ditto.
25 (build_fold_addr_expr_with_type_loc): Ditto.
26 (fold_comparison): Ditto.
27 (fold_checksum_tree): Ditto.
28 (tree_unary_nonnegative_warnv_p): Ditto.
29 (integer_valued_real_unary_p): Ditto.
30 (fold_read_from_constant_string): Ditto.
31 * gcc-rich-location.cc (maybe_range_label_for_tree_type_mismatch::get_text): Ditto.
32 * gimple-expr.cc (useless_type_conversion_p): Ditto.
33 (is_gimple_reg): Ditto.
34 (is_gimple_asm_val): Ditto.
35 (mark_addressable): Ditto.
36 * gimple-expr.h (is_gimple_variable): Ditto.
37 (virtual_operand_p): Ditto.
38 * gimple-ssa-warn-access.cc (pass_waccess::check_dangling_stores): Ditto.
39 * gimplify.cc (gimplify_bind_expr): Ditto.
40 (gimplify_return_expr): Ditto.
41 (gimple_add_padding_init_for_auto_var): Ditto.
42 (gimplify_addr_expr): Ditto.
43 (omp_add_variable): Ditto.
44 (omp_notice_variable): Ditto.
45 (omp_get_base_pointer): Ditto.
46 (omp_strip_components_and_deref): Ditto.
47 (omp_strip_indirections): Ditto.
48 (omp_accumulate_sibling_list): Ditto.
49 (omp_build_struct_sibling_lists): Ditto.
50 (gimplify_adjust_omp_clauses_1): Ditto.
51 (gimplify_adjust_omp_clauses): Ditto.
52 (gimplify_omp_for): Ditto.
53 (goa_lhs_expr_p): Ditto.
54 (gimplify_one_sizepos): Ditto.
55 * graphite-scop-detection.cc (scop_detection::graphite_can_represent_scev): Ditto.
56 * ipa-devirt.cc (odr_types_equivalent_p): Ditto.
57 * ipa-prop.cc (ipa_set_jf_constant): Ditto.
58 (propagate_controlled_uses): Ditto.
59 * ipa-sra.cc (type_prevails_p): Ditto.
60 (scan_expr_access): Ditto.
61 * optabs-tree.cc (optab_for_tree_code): Ditto.
62 * toplev.cc (wrapup_global_declaration_1): Ditto.
63 * trans-mem.cc (transaction_invariant_address_p): Ditto.
64 * tree-cfg.cc (verify_types_in_gimple_reference): Ditto.
65 (verify_gimple_comparison): Ditto.
66 (verify_gimple_assign_binary): Ditto.
67 (verify_gimple_assign_single): Ditto.
68 * tree-complex.cc (get_component_ssa_name): Ditto.
69 * tree-emutls.cc (lower_emutls_2): Ditto.
70 * tree-inline.cc (copy_tree_body_r): Ditto.
71 (estimate_move_cost): Ditto.
72 (copy_decl_for_dup_finish): Ditto.
73 * tree-nested.cc (convert_nonlocal_omp_clauses): Ditto.
74 (note_nonlocal_vla_type): Ditto.
75 (convert_local_omp_clauses): Ditto.
76 (remap_vla_decls): Ditto.
77 (fixup_vla_decls): Ditto.
78 * tree-parloops.cc (loop_has_vector_phi_nodes): Ditto.
79 * tree-pretty-print.cc (print_declaration): Ditto.
80 (print_call_name): Ditto.
81 * tree-sra.cc (compare_access_positions): Ditto.
82 * tree-ssa-alias.cc (compare_type_sizes): Ditto.
83 * tree-ssa-ccp.cc (get_default_value): Ditto.
84 * tree-ssa-coalesce.cc (populate_coalesce_list_for_outofssa): Ditto.
85 * tree-ssa-dom.cc (reduce_vector_comparison_to_scalar_comparison): Ditto.
86 * tree-ssa-forwprop.cc (can_propagate_from): Ditto.
87 * tree-ssa-propagate.cc (may_propagate_copy): Ditto.
88 * tree-ssa-sccvn.cc (fully_constant_vn_reference_p): Ditto.
89 * tree-ssa-sink.cc (statement_sink_location): Ditto.
90 * tree-ssa-structalias.cc (type_must_have_pointers): Ditto.
91 * tree-ssa-ter.cc (find_replaceable_in_bb): Ditto.
92 * tree-ssa-uninit.cc (warn_uninit): Ditto.
93 * tree-ssa.cc (maybe_rewrite_mem_ref_base): Ditto.
94 (non_rewritable_mem_ref_base): Ditto.
95 * tree-streamer-in.cc (lto_input_ts_type_non_common_tree_pointers): Ditto.
96 * tree-streamer-out.cc (write_ts_type_non_common_tree_pointers): Ditto.
97 * tree-vect-generic.cc (do_binop): Ditto.
99 * tree-vect-stmts.cc (vect_init_vector): Ditto.
100 * tree-vector-builder.h (tree_vector_builder::note_representative): Ditto.
101 * tree.cc (sign_mask_for): Ditto.
102 (verify_type_variant): Ditto.
103 (gimple_canonical_types_compatible_p): Ditto.
104 (verify_type): Ditto.
105 * ubsan.cc (get_ubsan_type_info_for_type): Ditto.
106 * var-tracking.cc (prepare_call_arguments): Ditto.
107 (vt_add_function_parameters): Ditto.
108 * varasm.cc (decode_addr_const): Ditto.
110 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
112 * omp-low.cc (scan_sharing_clauses): Use _P() defines from tree.h.
113 (lower_reduction_clauses): Ditto.
114 (lower_send_clauses): Ditto.
115 (lower_omp_task_reductions): Ditto.
116 * omp-oacc-neuter-broadcast.cc (install_var_field): Ditto.
117 (worker_single_copy): Ditto.
118 * omp-offload.cc (oacc_rewrite_var_decl): Ditto.
119 * omp-simd-clone.cc (plausible_type_for_simd_clone): Ditto.
121 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
123 * lto-streamer-in.cc (lto_input_var_decl_ref): Use _P defines from
125 (lto_read_body_or_constructor): Ditto.
126 * lto-streamer-out.cc (tree_is_indexable): Ditto.
127 (lto_output_var_decl_ref): Ditto.
128 (DFS::DFS_write_tree_body): Ditto.
130 (write_symbol_extension_info): Ditto.
132 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
134 * config/aarch64/aarch64.cc (aarch64_short_vector_p): Use _P
136 (aarch64_mangle_type): Ditto.
137 * config/alpha/alpha.cc (alpha_in_small_data_p): Ditto.
138 (alpha_gimplify_va_arg_1): Ditto.
139 * config/arc/arc.cc (arc_encode_section_info): Ditto.
140 (arc_is_aux_reg_p): Ditto.
141 (arc_is_uncached_mem_p): Ditto.
142 (arc_handle_aux_attribute): Ditto.
143 * config/arm/arm.cc (arm_handle_isr_attribute): Ditto.
144 (arm_handle_cmse_nonsecure_call): Ditto.
145 (arm_set_default_type_attributes): Ditto.
146 (arm_is_segment_info_known): Ditto.
147 (arm_mangle_type): Ditto.
148 * config/arm/unknown-elf.h (IN_NAMED_SECTION_P): Ditto.
149 * config/avr/avr.cc (avr_lookup_function_attribute1): Ditto.
150 (avr_decl_absdata_p): Ditto.
151 (avr_insert_attributes): Ditto.
152 (avr_section_type_flags): Ditto.
153 (avr_encode_section_info): Ditto.
154 * config/bfin/bfin.cc (bfin_handle_l2_attribute): Ditto.
155 * config/bpf/bpf.cc (bpf_core_compute): Ditto.
156 * config/c6x/c6x.cc (c6x_in_small_data_p): Ditto.
157 * config/csky/csky.cc (csky_handle_isr_attribute): Ditto.
158 (csky_mangle_type): Ditto.
159 * config/darwin-c.cc (darwin_pragma_unused): Ditto.
160 * config/darwin.cc (is_objc_metadata): Ditto.
161 * config/epiphany/epiphany.cc (epiphany_function_ok_for_sibcall): Ditto.
162 * config/epiphany/epiphany.h (ROUND_TYPE_ALIGN): Ditto.
163 * config/frv/frv.cc (frv_emit_movsi): Ditto.
164 * config/gcn/gcn-tree.cc (gcn_lockless_update): Ditto.
165 * config/gcn/gcn.cc (gcn_asm_output_symbol_ref): Ditto.
166 * config/h8300/h8300.cc (h8300_encode_section_info): Ditto.
167 * config/i386/i386-expand.cc: Ditto.
168 * config/i386/i386.cc (type_natural_mode): Ditto.
169 (ix86_function_arg): Ditto.
170 (ix86_data_alignment): Ditto.
171 (ix86_local_alignment): Ditto.
172 (ix86_simd_clone_compute_vecsize_and_simdlen): Ditto.
173 * config/i386/winnt-cxx.cc (i386_pe_type_dllimport_p): Ditto.
174 (i386_pe_type_dllexport_p): Ditto.
175 (i386_pe_adjust_class_at_definition): Ditto.
176 * config/i386/winnt.cc (i386_pe_determine_dllimport_p): Ditto.
177 (i386_pe_binds_local_p): Ditto.
178 (i386_pe_section_type_flags): Ditto.
179 * config/ia64/ia64.cc (ia64_encode_section_info): Ditto.
180 (ia64_gimplify_va_arg): Ditto.
181 (ia64_in_small_data_p): Ditto.
182 * config/iq2000/iq2000.cc (iq2000_function_arg): Ditto.
183 * config/lm32/lm32.cc (lm32_in_small_data_p): Ditto.
184 * config/loongarch/loongarch.cc (loongarch_handle_model_attribute): Ditto.
185 * config/m32c/m32c.cc (m32c_insert_attributes): Ditto.
186 * config/mcore/mcore.cc (mcore_mark_dllimport): Ditto.
187 (mcore_encode_section_info): Ditto.
188 * config/microblaze/microblaze.cc (microblaze_elf_in_small_data_p): Ditto.
189 * config/mips/mips.cc (mips_output_aligned_decl_common): Ditto.
190 * config/mmix/mmix.cc (mmix_encode_section_info): Ditto.
191 * config/nvptx/nvptx.cc (nvptx_encode_section_info): Ditto.
192 (pass_in_memory): Ditto.
193 (nvptx_generate_vector_shuffle): Ditto.
194 (nvptx_lockless_update): Ditto.
195 * config/pa/pa.cc (pa_function_arg_padding): Ditto.
196 (pa_function_value): Ditto.
197 (pa_function_arg): Ditto.
198 * config/pa/pa.h (IN_NAMED_SECTION_P): Ditto.
199 (TEXT_SPACE_P): Ditto.
200 * config/pa/som.h (MAKE_DECL_ONE_ONLY): Ditto.
201 * config/pdp11/pdp11.cc (pdp11_return_in_memory): Ditto.
202 * config/riscv/riscv.cc (riscv_in_small_data_p): Ditto.
203 (riscv_mangle_type): Ditto.
204 * config/rl78/rl78.cc (rl78_insert_attributes): Ditto.
205 (rl78_addsi3_internal): Ditto.
206 * config/rs6000/aix.h (ROUND_TYPE_ALIGN): Ditto.
207 * config/rs6000/darwin.h (ROUND_TYPE_ALIGN): Ditto.
208 * config/rs6000/freebsd64.h (ROUND_TYPE_ALIGN): Ditto.
209 * config/rs6000/linux64.h (ROUND_TYPE_ALIGN): Ditto.
210 * config/rs6000/rs6000-call.cc (rs6000_function_arg_boundary): Ditto.
211 (rs6000_function_arg_advance_1): Ditto.
212 (rs6000_function_arg): Ditto.
213 (rs6000_pass_by_reference): Ditto.
214 * config/rs6000/rs6000-logue.cc (rs6000_function_ok_for_sibcall): Ditto.
215 * config/rs6000/rs6000.cc (rs6000_data_alignment): Ditto.
216 (rs6000_set_default_type_attributes): Ditto.
217 (rs6000_elf_in_small_data_p): Ditto.
218 (IN_NAMED_SECTION): Ditto.
219 (rs6000_xcoff_encode_section_info): Ditto.
220 (rs6000_function_value): Ditto.
221 (invalid_arg_for_unprototyped_fn): Ditto.
222 * config/s390/s390-c.cc (s390_fn_types_compatible): Ditto.
223 (s390_vec_n_elem): Ditto.
224 * config/s390/s390.cc (s390_check_type_for_vector_abi): Ditto.
225 (s390_function_arg_integer): Ditto.
226 (s390_return_in_memory): Ditto.
227 (s390_encode_section_info): Ditto.
228 * config/sh/sh.cc (sh_gimplify_va_arg_expr): Ditto.
229 (sh_function_value): Ditto.
230 * config/sol2.cc (solaris_insert_attributes): Ditto.
231 * config/sparc/sparc.cc (function_arg_slotno): Ditto.
232 * config/sparc/sparc.h (ROUND_TYPE_ALIGN): Ditto.
233 * config/stormy16/stormy16.cc (xstormy16_encode_section_info): Ditto.
234 (xstormy16_handle_below100_attribute): Ditto.
235 * config/v850/v850.cc (v850_encode_section_info): Ditto.
236 (v850_insert_attributes): Ditto.
237 * config/visium/visium.cc (visium_pass_by_reference): Ditto.
238 (visium_return_in_memory): Ditto.
239 * config/xtensa/xtensa.cc (xtensa_multibss_section_type_flags): Ditto.
241 2023-05-18 Uros Bizjak <ubizjak@gmail.com>
243 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi_partial): New.
244 (ix86_expand_vecop_qihi): Add op2vec bool variable.
245 Do not set REG_EQUAL note.
246 * config/i386/i386-protos.h (ix86_expand_vecop_qihi_partial):
248 * config/i386/i386.cc (ix86_multiplication_cost): Handle
249 V4QImode and V8QImode.
250 * config/i386/mmx.md (mulv8qi3): New expander.
252 * config/i386/sse.md (mulv8qi3): Remove.
254 2023-05-18 Georg-Johann Lay <avr@gjlay.de>
256 * config/avr/gen-avr-mmcu-specs.cc: Remove stale */ after // comment.
258 2023-05-18 Jonathan Wakely <jwakely@redhat.com>
261 * config.gcc: Use = operator instead of ==.
263 2023-05-18 Michael Bäuerle <micha@NetBSD.org>
266 * config/nvptx/gen-opt.sh: Use = operator instead of ==.
267 * configure.ac: Likewise.
268 * configure: Regenerate.
270 2023-05-18 Stam Markianos-Wright <stam.markianos-wright@arm.com>
272 * config/arm/arm_mve.h: (__ARM_mve_typeid): Add more pointer types.
273 (__ARM_mve_coerce1): Remove.
274 (__ARM_mve_coerce2): Remove.
275 (__ARM_mve_coerce3): Remove.
276 (__ARM_mve_coerce_i_scalar): New.
277 (__ARM_mve_coerce_s8_ptr): New.
278 (__ARM_mve_coerce_u8_ptr): New.
279 (__ARM_mve_coerce_s16_ptr): New.
280 (__ARM_mve_coerce_u16_ptr): New.
281 (__ARM_mve_coerce_s32_ptr): New.
282 (__ARM_mve_coerce_u32_ptr): New.
283 (__ARM_mve_coerce_s64_ptr): New.
284 (__ARM_mve_coerce_u64_ptr): New.
285 (__ARM_mve_coerce_f_scalar): New.
286 (__ARM_mve_coerce_f16_ptr): New.
287 (__ARM_mve_coerce_f32_ptr): New.
288 (__arm_vst4q): Change _coerce_ overloads.
289 (__arm_vbicq): Change _coerce_ overloads.
290 (__arm_vld1q): Change _coerce_ overloads.
291 (__arm_vld1q_z): Change _coerce_ overloads.
292 (__arm_vld2q): Change _coerce_ overloads.
293 (__arm_vld4q): Change _coerce_ overloads.
294 (__arm_vldrhq_gather_offset): Change _coerce_ overloads.
295 (__arm_vldrhq_gather_offset_z): Change _coerce_ overloads.
296 (__arm_vldrhq_gather_shifted_offset): Change _coerce_ overloads.
297 (__arm_vldrhq_gather_shifted_offset_z): Change _coerce_ overloads.
298 (__arm_vldrwq_gather_offset): Change _coerce_ overloads.
299 (__arm_vldrwq_gather_offset_z): Change _coerce_ overloads.
300 (__arm_vldrwq_gather_shifted_offset): Change _coerce_ overloads.
301 (__arm_vldrwq_gather_shifted_offset_z): Change _coerce_ overloads.
302 (__arm_vst1q_p): Change _coerce_ overloads.
303 (__arm_vst2q): Change _coerce_ overloads.
304 (__arm_vst1q): Change _coerce_ overloads.
305 (__arm_vstrhq): Change _coerce_ overloads.
306 (__arm_vstrhq_p): Change _coerce_ overloads.
307 (__arm_vstrhq_scatter_offset_p): Change _coerce_ overloads.
308 (__arm_vstrhq_scatter_offset): Change _coerce_ overloads.
309 (__arm_vstrhq_scatter_shifted_offset_p): Change _coerce_ overloads.
310 (__arm_vstrhq_scatter_shifted_offset): Change _coerce_ overloads.
311 (__arm_vstrwq_p): Change _coerce_ overloads.
312 (__arm_vstrwq): Change _coerce_ overloads.
313 (__arm_vstrwq_scatter_offset): Change _coerce_ overloads.
314 (__arm_vstrwq_scatter_offset_p): Change _coerce_ overloads.
315 (__arm_vstrwq_scatter_shifted_offset): Change _coerce_ overloads.
316 (__arm_vstrwq_scatter_shifted_offset_p): Change _coerce_ overloads.
317 (__arm_vsetq_lane): Change _coerce_ overloads.
318 (__arm_vldrbq_gather_offset): Change _coerce_ overloads.
319 (__arm_vdwdupq_x_u8): Change _coerce_ overloads.
320 (__arm_vdwdupq_x_u16): Change _coerce_ overloads.
321 (__arm_vdwdupq_x_u32): Change _coerce_ overloads.
322 (__arm_viwdupq_x_u8): Change _coerce_ overloads.
323 (__arm_viwdupq_x_u16): Change _coerce_ overloads.
324 (__arm_viwdupq_x_u32): Change _coerce_ overloads.
325 (__arm_vidupq_x_u8): Change _coerce_ overloads.
326 (__arm_vddupq_x_u8): Change _coerce_ overloads.
327 (__arm_vidupq_x_u16): Change _coerce_ overloads.
328 (__arm_vddupq_x_u16): Change _coerce_ overloads.
329 (__arm_vidupq_x_u32): Change _coerce_ overloads.
330 (__arm_vddupq_x_u32): Change _coerce_ overloads.
331 (__arm_vldrdq_gather_offset): Change _coerce_ overloads.
332 (__arm_vldrdq_gather_offset_z): Change _coerce_ overloads.
333 (__arm_vldrdq_gather_shifted_offset): Change _coerce_ overloads.
334 (__arm_vldrdq_gather_shifted_offset_z): Change _coerce_ overloads.
335 (__arm_vldrbq_gather_offset_z): Change _coerce_ overloads.
336 (__arm_vidupq_u16): Change _coerce_ overloads.
337 (__arm_vidupq_u32): Change _coerce_ overloads.
338 (__arm_vidupq_u8): Change _coerce_ overloads.
339 (__arm_vddupq_u16): Change _coerce_ overloads.
340 (__arm_vddupq_u32): Change _coerce_ overloads.
341 (__arm_vddupq_u8): Change _coerce_ overloads.
342 (__arm_viwdupq_m): Change _coerce_ overloads.
343 (__arm_viwdupq_u16): Change _coerce_ overloads.
344 (__arm_viwdupq_u32): Change _coerce_ overloads.
345 (__arm_viwdupq_u8): Change _coerce_ overloads.
346 (__arm_vdwdupq_m): Change _coerce_ overloads.
347 (__arm_vdwdupq_u16): Change _coerce_ overloads.
348 (__arm_vdwdupq_u32): Change _coerce_ overloads.
349 (__arm_vdwdupq_u8): Change _coerce_ overloads.
350 (__arm_vstrbq): Change _coerce_ overloads.
351 (__arm_vstrbq_p): Change _coerce_ overloads.
352 (__arm_vstrbq_scatter_offset_p): Change _coerce_ overloads.
353 (__arm_vstrdq_scatter_offset_p): Change _coerce_ overloads.
354 (__arm_vstrdq_scatter_offset): Change _coerce_ overloads.
355 (__arm_vstrdq_scatter_shifted_offset_p): Change _coerce_ overloads.
356 (__arm_vstrdq_scatter_shifted_offset): Change _coerce_ overloads.
358 2023-05-18 Stam Markianos-Wright <stam.markianos-wright@arm.com>
360 * config/arm/arm_mve.h (__arm_vbicq): Change coerce on
363 2023-05-18 Stam Markianos-Wright <stam.markianos-wright@arm.com>
365 * config/arm/arm_mve.h (__arm_vadcq_s32): Fix arithmetic.
366 (__arm_vadcq_u32): Likewise.
367 (__arm_vadcq_m_s32): Likewise.
368 (__arm_vadcq_m_u32): Likewise.
369 (__arm_vsbcq_s32): Likewise.
370 (__arm_vsbcq_u32): Likewise.
371 (__arm_vsbcq_m_s32): Likewise.
372 (__arm_vsbcq_m_u32): Likewise.
373 * config/arm/mve.md (get_fpscr_nzcvqc): Make unspec_volatile.
375 2023-05-18 Andrea Corallo <andrea.corallo@arm.com>
377 * config/arm/mve.md (mve_vrndq_m_f<mode>, mve_vrev64q_f<mode>)
378 (mve_vrev32q_fv8hf, mve_vcvttq_f32_f16v4sf)
379 (mve_vcvtbq_f32_f16v4sf, mve_vcvtq_to_f_<supf><mode>)
380 (mve_vrev64q_<supf><mode>, mve_vcvtq_from_f_<supf><mode>)
381 (mve_vmovltq_<supf><mode>, mve_vmovlbq_<supf><mode>)
382 (mve_vcvtpq_<supf><mode>, mve_vcvtnq_<supf><mode>)
383 (mve_vcvtmq_<supf><mode>, mve_vcvtaq_<supf><mode>)
384 (mve_vmvnq_n_<supf><mode>, mve_vrev16q_<supf>v16qi)
385 (mve_vctp<MVE_vctp>q<MVE_vpred>, mve_vbrsrq_n_f<mode>)
386 (mve_vbrsrq_n_<supf><mode>, mve_vandq_f<mode>, mve_vbicq_f<mode>)
387 (mve_vctp<MVE_vctp>q_m<MVE_vpred>, mve_vcvtbq_f16_f32v8hf)
388 (mve_vcvttq_f16_f32v8hf, mve_veorq_f<mode>)
389 (mve_vmlaldavxq_s<mode>, mve_vmlsldavq_s<mode>)
390 (mve_vmlsldavxq_s<mode>, mve_vornq_f<mode>, mve_vorrq_f<mode>)
391 (mve_vrmlaldavhxq_sv4si, mve_vcvtq_m_to_f_<supf><mode>)
392 (mve_vshlcq_<supf><mode>, mve_vmvnq_m_<supf><mode>)
393 (mve_vpselq_<supf><mode>, mve_vcvtbq_m_f16_f32v8hf)
394 (mve_vcvtbq_m_f32_f16v4sf, mve_vcvttq_m_f16_f32v8hf)
395 (mve_vcvttq_m_f32_f16v4sf, mve_vmlaldavq_p_<supf><mode>)
396 (mve_vmlsldavaq_s<mode>, mve_vmlsldavaxq_s<mode>)
397 (mve_vmlsldavq_p_s<mode>, mve_vmlsldavxq_p_s<mode>)
398 (mve_vmvnq_m_n_<supf><mode>, mve_vorrq_m_n_<supf><mode>)
399 (mve_vpselq_f<mode>, mve_vrev32q_m_fv8hf)
400 (mve_vrev32q_m_<supf><mode>, mve_vrev64q_m_f<mode>)
401 (mve_vrmlaldavhaxq_sv4si, mve_vrmlaldavhxq_p_sv4si)
402 (mve_vrmlsldavhaxq_sv4si, mve_vrmlsldavhq_p_sv4si)
403 (mve_vrmlsldavhxq_p_sv4si, mve_vrev16q_m_<supf>v16qi)
404 (mve_vrmlaldavhq_p_<supf>v4si, mve_vrmlsldavhaq_sv4si)
405 (mve_vandq_m_<supf><mode>, mve_vbicq_m_<supf><mode>)
406 (mve_veorq_m_<supf><mode>, mve_vornq_m_<supf><mode>)
407 (mve_vorrq_m_<supf><mode>, mve_vandq_m_f<mode>)
408 (mve_vbicq_m_f<mode>, mve_veorq_m_f<mode>, mve_vornq_m_f<mode>)
409 (mve_vorrq_m_f<mode>)
410 (mve_vstrdq_scatter_shifted_offset_p_<supf>v2di_insn)
411 (mve_vstrdq_scatter_shifted_offset_<supf>v2di_insn)
412 (mve_vstrdq_scatter_base_wb_p_<supf>v2di) : Fix spacing and
413 capitalization in the emitted asm.
415 2023-05-18 Andrea Corallo <andrea.corallo@arm.com>
417 * config/arm/constraints.md (mve_vldrd_immediate): Move it to
419 (Ri): Move constraint definition from predicates.md.
420 (Rl): Define new constraint.
421 * config/arm/mve.md (mve_vstrwq_scatter_base_wb_p_<supf>v4si): Add
423 (mve_vstrwq_scatter_base_wb_p_fv4sf): Add missing Up constraint
424 for op 1, use mve_vstrw_immediate predicate and Rl constraint for
425 op 2. Fix asm output spacing.
426 (mve_vstrdq_scatter_base_wb_p_<supf>v2di): Add missing constraint.
427 * config/arm/predicates.md (Ri) Move constraint to constraints.md
428 (mve_vldrd_immediate): Move it from
430 (mve_vstrw_immediate): New predicate.
432 2023-05-18 Pan Li <pan2.li@intel.com>
433 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
434 Kito Cheng <kito.cheng@sifive.com>
435 Richard Biener <rguenther@suse.de>
436 Richard Sandiford <richard.sandiford@arm.com>
438 * combine.cc (struct reg_stat_type): Extend machine_mode to 16 bits.
439 * cse.cc (struct qty_table_elem): Extend machine_mode to 16 bits
440 (struct table_elt): Extend machine_mode to 16 bits.
442 * genmodes.cc (emit_mode_wider): Extend type from char to short.
443 (emit_mode_complex): Ditto.
444 (emit_mode_inner): Ditto.
445 (emit_class_narrowest_mode): Ditto.
446 * genopinit.cc (main): Extend the machine_mode limit.
447 * ira-int.h (struct ira_allocno): Extend machine_mode to 16 bits and
448 re-ordered the struct fields for padding.
449 * machmode.h (MACHINE_MODE_BITSIZE): New macro.
450 (GET_MODE_2XWIDER_MODE): Extend type from char to short.
451 (get_mode_alignment): Extend type from char to short.
452 * ree.cc (struct ext_modified): Extend machine_mode to 16 bits and
453 removed the ATTRIBUTE_PACKED.
454 * rtl-ssa/accesses.h: Extend machine_mode to 16 bits, narrow
455 * rtl-ssa/internals.inl (rtl_ssa::access_info): Adjust the assignment.
456 m_kind to 2 bits and remove m_spare.
457 * rtl.h (RTX_CODE_BITSIZE): New macro.
458 (struct rtx_def): Swap both the bit size and location between the
459 rtx_code and the machine_mode.
460 (subreg_shape::unique_id): Extend the machine_mode limit.
461 * rtlanal.h: Extend machine_mode to 16 bits.
462 * tree-core.h (struct tree_type_common): Extend machine_mode to 16
463 bits and re-ordered the struct fields for padding.
464 (struct tree_decl_common): Extend machine_mode to 16 bits.
466 2023-05-17 Jin Ma <jinma@linux.alibaba.com>
468 * genrecog.cc (print_nonbool_test): Fix type error of
469 switch (SUBREG_BYTE (op))'.
471 2023-05-17 Jin Ma <jinma@linux.alibaba.com>
473 * common/config/riscv/riscv-common.cc: Remove
474 trailing spaces on lines.
475 * config/riscv/riscv.cc (riscv_legitimize_move): Likewise.
476 * config/riscv/riscv.h (enum reg_class): Likewise.
477 * config/riscv/riscv.md: Likewise.
479 2023-05-17 John David Anglin <danglin@gcc.gnu.org>
481 * config/pa/pa.md (clear_cache): New.
483 2023-05-17 Arsen Arsenović <arsen@aarsen.me>
485 * doc/extend.texi (C++ Concepts) <forall>: Remove extraneous
486 parenthesis. Fix misnamed index entry.
487 <concept>: Fix misnamed index entry.
489 2023-05-17 Jivan Hakobyan <jivanhakobyan9@gmail.com>
491 * config/riscv/riscv.md (*<optab><GPR:mode>3_mask): New pattern,
493 (*<optab>si3_mask, *<optab>di3_mask): Here.
494 (*<optab>si3_mask_1, *<optab>di3_mask_1): And here.
495 * config/riscv/bitmanip.md (*<bitmanip_optab><GPR:mode>3_mask): New
497 (*<bitmanip_optab>si3_sext_mask): Likewise.
498 * config/riscv/iterators.md (shiftm1): Use const_si_mask_operand
499 and const_di_mask_operand.
500 (bitmanip_rotate): New iterator.
501 (bitmanip_optab): Add rotates.
502 * config/riscv/predicates.md (const_si_mask_operand): Renamed
503 from const31_operand. Generalize to handle more mask constants.
504 (const_di_mask_operand): Similarly.
506 2023-05-17 Jakub Jelinek <jakub@redhat.com>
509 * config/i386/i386-builtin-types.def (FLOAT128): Use
510 float128t_type_node rather than float128_type_node.
512 2023-05-17 Alexander Monakov <amonakov@ispras.ru>
514 * tree-ssa-math-opts.cc (convert_mult_to_fma): Enable only for
515 FP_CONTRACT_FAST (no functional change).
517 2023-05-17 Uros Bizjak <ubizjak@gmail.com>
519 * config/i386/i386.cc (ix86_multiplication_cost): Correct
520 calcuation of integer vector mode costs to reflect generated
521 instruction sequences of different integer vector modes and
522 different target ABIs.
524 2023-05-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
526 * config/riscv/riscv-opts.h (enum riscv_entity): New enum.
527 * config/riscv/riscv.cc (riscv_emit_mode_set): New function.
528 (riscv_mode_needed): Ditto.
529 (riscv_mode_after): Ditto.
530 (riscv_mode_entry): Ditto.
531 (riscv_mode_exit): Ditto.
532 (riscv_mode_priority): Ditto.
533 (TARGET_MODE_EMIT): New target hook.
534 (TARGET_MODE_NEEDED): Ditto.
535 (TARGET_MODE_AFTER): Ditto.
536 (TARGET_MODE_ENTRY): Ditto.
537 (TARGET_MODE_EXIT): Ditto.
538 (TARGET_MODE_PRIORITY): Ditto.
539 * config/riscv/riscv.h (OPTIMIZE_MODE_SWITCHING): Ditto.
540 (NUM_MODES_FOR_MODE_SWITCHING): Ditto.
541 * config/riscv/riscv.md: Add csrwvxrm.
542 * config/riscv/vector.md (rnu,rne,rdn,rod,none): New attribute.
543 (vxrmsi): New pattern.
545 2023-05-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
547 * config/riscv/riscv-vector-builtins-bases.cc: Introduce rounding mode.
548 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
549 (struct narrow_alu_def): Ditto.
550 * config/riscv/riscv-vector-builtins.cc (function_builder::apply_predication): Ditto.
551 (function_expander::use_exact_insn): Ditto.
552 * config/riscv/riscv-vector-builtins.h (function_checker::arg_num): New function.
553 (function_base::has_rounding_mode_operand_p): New function.
555 2023-05-17 Andrew Pinski <apinski@marvell.com>
557 * tree-ssa-forwprop.cc (simplify_builtin_call): Check
558 against 0 instead of calling integer_zerop.
560 2023-05-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
562 * config/riscv/riscv-vector-builtins.cc (register_vxrm): New function.
563 (DEF_RVV_VXRM_ENUM): New macro.
564 (handle_pragma_vector): Add vxrm enum register.
565 * config/riscv/riscv-vector-builtins.def (DEF_RVV_VXRM_ENUM): New macro.
571 2023-05-17 Aldy Hernandez <aldyh@redhat.com>
573 * value-range.h (Value_Range::operator=): New.
575 2023-05-17 Aldy Hernandez <aldyh@redhat.com>
577 * value-range.cc (vrange::operator=): Add a stub to copy
579 * value-range.h (is_a <unsupported_range>): New.
580 (Value_Range::operator=): Support copying unsupported ranges.
582 2023-05-17 Aldy Hernandez <aldyh@redhat.com>
584 * data-streamer-in.cc (streamer_read_real_value): New.
585 (streamer_read_value_range): New.
586 * data-streamer-out.cc (streamer_write_real_value): New.
587 (streamer_write_vrange): New.
588 * data-streamer.h (streamer_write_vrange): New.
589 (streamer_read_value_range): New.
591 2023-05-17 Jonathan Wakely <jwakely@redhat.com>
594 * doc/invoke.texi (Code Gen Options): Note that -fshort-enums
595 is ignored for a fixed underlying type.
596 (C++ Dialect Options): Likewise for -fstrict-enums.
598 2023-05-17 Tobias Burnus <tobias@codesourcery.com>
600 * gimplify.cc (gimplify_scan_omp_clauses): Remove Fortran
603 2023-05-17 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
605 * config/s390/s390.cc (TARGET_ATOMIC_ALIGN_FOR_MODE):
607 (s390_atomic_align_for_mode): New.
609 2023-05-17 Jakub Jelinek <jakub@redhat.com>
611 * wide-int.cc (wi::from_array): Add missing closing paren in function
614 2023-05-17 Kewen Lin <linkw@linux.ibm.com>
616 * tree-vect-loop.cc (vect_analyze_loop_1): Don't retry analysis with
617 suggested unroll factor once the previous analysis fails.
619 2023-05-17 Pan Li <pan2.li@intel.com>
621 * config/riscv/genrvv-type-indexer.cc (BOOL_SIZE_LIST): New
623 (main): Add bool1 to the type indexer.
624 * config/riscv/riscv-vector-builtins-functions.def
625 (vreinterpret): Register vbool1 interpret function.
626 * config/riscv/riscv-vector-builtins-types.def
627 (DEF_RVV_BOOL1_INTERPRET_OPS): New macro.
628 (vint8m1_t): Add the type to bool1_interpret_ops.
633 (vuint16m1_t): Ditto.
634 (vuint32m1_t): Ditto.
635 (vuint64m1_t): Ditto.
636 * config/riscv/riscv-vector-builtins.cc
637 (DEF_RVV_BOOL1_INTERPRET_OPS): New macro.
638 (required_extensions_p): Add bool1 interpret case.
639 * config/riscv/riscv-vector-builtins.def
640 (bool1_interpret): Add bool1 interpret to base type.
641 * config/riscv/vector.md (@vreinterpret<mode>): Add new expand
642 with VB dest for vreinterpret.
644 2023-05-17 Jiufu Guo <guojiufu@linux.ibm.com>
647 * config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Support building
648 constants through "lis; xoris".
650 2023-05-16 Ajit Kumar Agarwal <aagarwa1@linux.ibm.com>
652 * common/config/rs6000/rs6000-common.cc: Add REE pass as a
653 default rs6000 target pass for O2 and above.
654 * doc/invoke.texi: Document -free
656 2023-05-16 Kito Cheng <kito.cheng@sifive.com>
658 * common/config/riscv/riscv-common.cc (riscv_compute_multilib):
659 Fix wrong select_kind...
661 2023-05-16 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
663 * config/s390/s390-protos.h (s390_expand_setmem): Change
665 * config/s390/s390.cc (s390_expand_setmem): For memset's less
666 than or equal to 256 byte do not perform a libc call.
667 * config/s390/s390.md: Change expander into a version which
670 2023-05-16 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
672 * config/s390/s390-protos.h (s390_expand_movmem): New.
673 * config/s390/s390.cc (s390_expand_movmem): New.
674 * config/s390/s390.md (movmem<mode>): New.
678 2023-05-16 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
680 * config/s390/s390-protos.h (s390_expand_cpymem): Change
682 * config/s390/s390.cc (s390_expand_cpymem): For memcpy's less
683 than or equal to 256 byte do not perform a libc call.
684 (s390_expand_insv): Adapt new function signature of
686 * config/s390/s390.md: Change expander into a version which
689 2023-05-16 Andrew Pinski <apinski@marvell.com>
691 PR tree-optimization/109424
692 * match.pd: Add patterns for min/max of zero_one_valued
695 2023-05-16 Juzhe-Zhong <juzhe.zhong@rivai.ai>
697 * config/riscv/riscv-protos.h (enum frm_field_enum): New enum.
698 * config/riscv/riscv-vector-builtins.cc
699 (function_expander::use_ternop_insn): Add default rounding mode.
700 (function_expander::use_widen_ternop_insn): Ditto.
701 * config/riscv/riscv.cc (riscv_hard_regno_nregs): Add FRM REGNUM.
702 (riscv_hard_regno_mode_ok): Ditto.
703 (riscv_conditional_register_usage): Ditto.
704 * config/riscv/riscv.h (DWARF_FRAME_REGNUM): Ditto.
706 (RISCV_DWARF_FRM): Ditto.
707 * config/riscv/riscv.md: Ditto.
708 * config/riscv/vector-iterators.md: split no frm and has frm operations.
709 * config/riscv/vector.md (@pred_<optab><mode>_scalar): New pattern.
710 (@pred_<optab><mode>): Ditto.
712 2023-05-15 Aldy Hernandez <aldyh@redhat.com>
714 PR tree-optimization/109695
715 * value-range.cc (irange::operator=): Resize range.
716 (irange::union_): Same.
717 (irange::intersect): Same.
718 (irange::invert): Same.
719 (int_range_max): Default to 3 sub-ranges and resize as needed.
720 * value-range.h (irange::maybe_resize): New.
722 (int_range::int_range): Adjust for resizing.
723 (int_range::operator=): Same.
725 2023-05-15 Aldy Hernandez <aldyh@redhat.com>
727 * ipa-cp.cc (ipcp_vr_lattice::meet_with_1): Avoid unnecessary
729 * value-range.cc (irange::union_nonzero_bits): Return TRUE only
732 2023-05-15 Juzhe-Zhong <juzhe.zhong@rivai.ai>
734 * config/riscv/riscv-protos.h (enum vxrm_field_enum): New enum.
735 * config/riscv/riscv-vector-builtins.cc
736 (function_expander::use_exact_insn): Add default rounding mode operand.
737 * config/riscv/riscv.cc (riscv_hard_regno_nregs): Add VXRM_REGNUM.
738 (riscv_hard_regno_mode_ok): Ditto.
739 (riscv_conditional_register_usage): Ditto.
740 * config/riscv/riscv.h (DWARF_FRAME_REGNUM): Ditto.
742 (RISCV_DWARF_VXRM): Ditto.
743 * config/riscv/riscv.md: Ditto.
744 * config/riscv/vector.md: Ditto
746 2023-05-15 Pan Li <pan2.li@intel.com>
748 * optabs.cc (maybe_gen_insn): Add case to generate instruction
749 that has 11 operands.
751 2023-05-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
753 * config/aarch64/aarch64.cc (aarch64_rtx_costs, NEG case): Add costing
754 logic for vector modes.
756 2023-05-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
759 * config/aarch64/aarch64-simd.md (aarch64_cm<optab><mode>): Rename to...
760 (aarch64_cm<optab><mode><vczle><vczbe>): ... This.
761 (aarch64_cmtst<mode>): Rename to...
762 (aarch64_cmtst<mode><vczle><vczbe>): ... This.
763 (*aarch64_cmtst_same_<mode>): Rename to...
764 (*aarch64_cmtst_same_<mode><vczle><vczbe>): ... This.
765 (*aarch64_cmtstdi): Rename to...
766 (*aarch64_cmtstdi<vczle><vczbe>): ... This.
767 (aarch64_fac<optab><mode>): Rename to...
768 (aarch64_fac<optab><mode><vczle><vczbe>): ... This.
770 2023-05-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
773 * config/aarch64/aarch64-simd.md (aarch64_s<optab><mode>): Rename to...
774 (aarch64_s<optab><mode><vczle><vczbe>): ... This.
776 2023-05-15 Pan Li <pan2.li@intel.com>
777 Juzhe-Zhong <juzhe.zhong@rivai.ai>
778 kito-cheng <kito.cheng@sifive.com>
780 * config/riscv/riscv-v.cc (const_vlmax_p): New function for
781 deciding the mode is constant or not.
782 (set_len_and_policy): Optimize VLS-VLMAX code gen to vsetivli.
784 2023-05-15 Richard Biener <rguenther@suse.de>
786 PR tree-optimization/109848
787 * tree-ssa-forwprop.cc (pass_forwprop::execute): Put the
788 TARGET_MEM_REF address preparation before the store, not
791 2023-05-15 Juzhe-Zhong <juzhe.zhong@rivai.ai>
793 * config/riscv/riscv.cc
794 (riscv_vectorize_preferred_vector_alignment): New function.
795 (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): New target hook.
797 2023-05-14 Andrew Pinski <apinski@marvell.com>
799 PR tree-optimization/109829
800 * match.pd: Add pattern for `signbit(x) !=/== 0 ? x : -x`.
802 2023-05-14 Uros Bizjak <ubizjak@gmail.com>
805 * config/i386/i386.cc: Revert the 2023-05-11 change.
806 (ix86_widen_mult_cost): Return high value instead of
807 ICEing for unsupported modes.
809 2023-05-14 Ard Biesheuvel <ardb@kernel.org>
811 * config/i386/i386.cc (x86_function_profiler): Take
812 ix86_direct_extern_access into account when generating calls
815 2023-05-14 Pan Li <pan2.li@intel.com>
817 * config/riscv/riscv-vector-builtins.cc (required_extensions_p):
818 Refactor the or pattern to switch cases.
820 2023-05-13 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
822 * config/aarch64/aarch64.cc (aarch64_expand_vector_init_fallback): Rename
823 aarch64_expand_vector_init to this, and remove interleaving case.
824 Recursively call aarch64_expand_vector_init_fallback, instead of
825 aarch64_expand_vector_init.
826 (aarch64_unzip_vector_init): New function.
827 (aarch64_expand_vector_init): Likewise.
829 2023-05-13 Kito Cheng <kito.cheng@sifive.com>
831 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::cleanup_insns):
832 Pull out function call from the gcc_assert.
834 2023-05-13 Kito Cheng <kito.cheng@sifive.com>
836 * config/riscv/riscv-vsetvl.cc (vlmul_to_str): New.
837 (policy_to_str): New.
838 (vector_insn_info::dump): Use vlmul_to_str and policy_to_str.
840 2023-05-13 Andrew Pinski <apinski@marvell.com>
842 PR tree-optimization/109834
843 * match.pd (popcount(bswap(x))->popcount(x)): Fix up unsigned type checking.
844 (popcount(rotate(x,y))->popcount(x)): Likewise.
846 2023-05-12 Uros Bizjak <ubizjak@gmail.com>
848 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2): Also
849 reject ymm instructions for TARGET_PREFER_AVX128. Use generic
850 gen_extend_insn to generate zero/sign extension instructions.
852 (ix86_expand_vecop_qihi): Initialize interleave functions
853 for MULT code only. Fix comments.
855 2023-05-12 Uros Bizjak <ubizjak@gmail.com>
858 * config/i386/mmx.md (mulv2si3): Remove expander.
859 (mulv2si3): Rename insn pattern from *mulv2si.
861 2023-05-12 Tobias Burnus <tobias@codesourcery.com>
864 * lto-cgraph.cc (output_symtab): Guard lto_output_toplevel_asms by
865 '!lto_stream_offload_p'.
867 2023-05-12 Kito Cheng <kito.cheng@sifive.com>
868 Juzhe-Zhong <juzhe.zhong@rivai.ai>
871 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::get_vsetvl_at_end): New.
872 (local_avl_compatible_p): New.
873 (pass_vsetvl::local_eliminate_vsetvl_insn): Enhance local optimizations
874 for LCM, rewrite as a backward algorithm.
875 (pass_vsetvl::cleanup_insns): Use new local_eliminate_vsetvl_insn
876 interface, handle a BB at once.
878 2023-05-12 Richard Biener <rguenther@suse.de>
880 PR tree-optimization/64731
881 * tree-ssa-forwprop.cc (pass_forwprop::execute): Also
882 handle TARGET_MEM_REF destinations of stores from vector
885 2023-05-12 Richard Biener <rguenther@suse.de>
887 PR tree-optimization/109791
888 * match.pd (minus (convert ADDR_EXPR@0) (convert (pointer_plus @1 @2))):
890 (minus (convert (pointer_plus @1 @2)) (convert ADDR_EXPR@0)):
893 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
895 * config/arm/arm-mve-builtins-base.cc (vsriq): New.
896 * config/arm/arm-mve-builtins-base.def (vsriq): New.
897 * config/arm/arm-mve-builtins-base.h (vsriq): New.
898 * config/arm/arm-mve-builtins.cc
899 (function_instance::has_inactive_argument): Handle vsriq.
900 * config/arm/arm_mve.h (vsriq): Remove.
902 (vsriq_n_u8): Remove.
903 (vsriq_n_s8): Remove.
904 (vsriq_n_u16): Remove.
905 (vsriq_n_s16): Remove.
906 (vsriq_n_u32): Remove.
907 (vsriq_n_s32): Remove.
908 (vsriq_m_n_s8): Remove.
909 (vsriq_m_n_u8): Remove.
910 (vsriq_m_n_s16): Remove.
911 (vsriq_m_n_u16): Remove.
912 (vsriq_m_n_s32): Remove.
913 (vsriq_m_n_u32): Remove.
914 (__arm_vsriq_n_u8): Remove.
915 (__arm_vsriq_n_s8): Remove.
916 (__arm_vsriq_n_u16): Remove.
917 (__arm_vsriq_n_s16): Remove.
918 (__arm_vsriq_n_u32): Remove.
919 (__arm_vsriq_n_s32): Remove.
920 (__arm_vsriq_m_n_s8): Remove.
921 (__arm_vsriq_m_n_u8): Remove.
922 (__arm_vsriq_m_n_s16): Remove.
923 (__arm_vsriq_m_n_u16): Remove.
924 (__arm_vsriq_m_n_s32): Remove.
925 (__arm_vsriq_m_n_u32): Remove.
926 (__arm_vsriq): Remove.
927 (__arm_vsriq_m): Remove.
929 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
931 * config/arm/iterators.md (mve_insn): Add vsri.
932 * config/arm/mve.md (mve_vsriq_n_<supf><mode>): Rename into ...
933 (@mve_<mve_insn>q_n_<supf><mode>): .,. this.
934 (mve_vsriq_m_n_<supf><mode>): Rename into ...
935 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
937 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
939 * config/arm/arm-mve-builtins-shapes.cc (ternary_rshift): New.
940 * config/arm/arm-mve-builtins-shapes.h (ternary_rshift): New.
942 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
944 * config/arm/arm-mve-builtins-base.cc (vsliq): New.
945 * config/arm/arm-mve-builtins-base.def (vsliq): New.
946 * config/arm/arm-mve-builtins-base.h (vsliq): New.
947 * config/arm/arm-mve-builtins.cc
948 (function_instance::has_inactive_argument): Handle vsliq.
949 * config/arm/arm_mve.h (vsliq): Remove.
951 (vsliq_n_u8): Remove.
952 (vsliq_n_s8): Remove.
953 (vsliq_n_u16): Remove.
954 (vsliq_n_s16): Remove.
955 (vsliq_n_u32): Remove.
956 (vsliq_n_s32): Remove.
957 (vsliq_m_n_s8): Remove.
958 (vsliq_m_n_s32): Remove.
959 (vsliq_m_n_s16): Remove.
960 (vsliq_m_n_u8): Remove.
961 (vsliq_m_n_u32): Remove.
962 (vsliq_m_n_u16): Remove.
963 (__arm_vsliq_n_u8): Remove.
964 (__arm_vsliq_n_s8): Remove.
965 (__arm_vsliq_n_u16): Remove.
966 (__arm_vsliq_n_s16): Remove.
967 (__arm_vsliq_n_u32): Remove.
968 (__arm_vsliq_n_s32): Remove.
969 (__arm_vsliq_m_n_s8): Remove.
970 (__arm_vsliq_m_n_s32): Remove.
971 (__arm_vsliq_m_n_s16): Remove.
972 (__arm_vsliq_m_n_u8): Remove.
973 (__arm_vsliq_m_n_u32): Remove.
974 (__arm_vsliq_m_n_u16): Remove.
975 (__arm_vsliq): Remove.
976 (__arm_vsliq_m): Remove.
978 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
980 * config/arm/iterators.md (mve_insn>): Add vsli.
981 * config/arm/mve.md (mve_vsliq_n_<supf><mode>): Rename into ...
982 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
983 (mve_vsliq_m_n_<supf><mode>): Rename into ...
984 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
986 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
988 * config/arm/arm-mve-builtins-shapes.cc (ternary_lshift): New.
989 * config/arm/arm-mve-builtins-shapes.h (ternary_lshift): New.
991 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
993 * config/arm/arm-mve-builtins-base.cc (vpselq): New.
994 * config/arm/arm-mve-builtins-base.def (vpselq): New.
995 * config/arm/arm-mve-builtins-base.h (vpselq): New.
996 * config/arm/arm_mve.h (vpselq): Remove.
999 (vpselq_u16): Remove.
1000 (vpselq_s16): Remove.
1001 (vpselq_u32): Remove.
1002 (vpselq_s32): Remove.
1003 (vpselq_u64): Remove.
1004 (vpselq_s64): Remove.
1005 (vpselq_f16): Remove.
1006 (vpselq_f32): Remove.
1007 (__arm_vpselq_u8): Remove.
1008 (__arm_vpselq_s8): Remove.
1009 (__arm_vpselq_u16): Remove.
1010 (__arm_vpselq_s16): Remove.
1011 (__arm_vpselq_u32): Remove.
1012 (__arm_vpselq_s32): Remove.
1013 (__arm_vpselq_u64): Remove.
1014 (__arm_vpselq_s64): Remove.
1015 (__arm_vpselq_f16): Remove.
1016 (__arm_vpselq_f32): Remove.
1017 (__arm_vpselq): Remove.
1019 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
1021 * config/arm/arm-mve-builtins-shapes.cc (vpsel): New.
1022 * config/arm/arm-mve-builtins-shapes.h (vpsel): New.
1024 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
1026 * config/arm/arm.cc (arm_expand_vcond): Use gen_mve_q instead of
1028 * config/arm/iterators.md (MVE_VPSELQ_F): New.
1029 (mve_insn): Add vpsel.
1030 * config/arm/mve.md (@mve_vpselq_<supf><mode>): Rename into ...
1031 (@mve_<mve_insn>q_<supf><mode>): ... this.
1032 (@mve_vpselq_f<mode>): Rename into ...
1033 (@mve_<mve_insn>q_f<mode>): ... this.
1035 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
1037 * config/arm/arm-mve-builtins-base.cc (vfmaq, vfmasq, vfmsq): New.
1038 * config/arm/arm-mve-builtins-base.def (vfmaq, vfmasq, vfmsq): New.
1039 * config/arm/arm-mve-builtins-base.h (vfmaq, vfmasq, vfmsq): New.
1040 * config/arm/arm-mve-builtins.cc
1041 (function_instance::has_inactive_argument): Handle vfmaq, vfmasq,
1043 * config/arm/arm_mve.h (vfmaq): Remove.
1049 (vfmaq_f16): Remove.
1050 (vfmaq_n_f16): Remove.
1051 (vfmasq_n_f16): Remove.
1052 (vfmsq_f16): Remove.
1053 (vfmaq_f32): Remove.
1054 (vfmaq_n_f32): Remove.
1055 (vfmasq_n_f32): Remove.
1056 (vfmsq_f32): Remove.
1057 (vfmaq_m_f32): Remove.
1058 (vfmaq_m_f16): Remove.
1059 (vfmaq_m_n_f32): Remove.
1060 (vfmaq_m_n_f16): Remove.
1061 (vfmasq_m_n_f32): Remove.
1062 (vfmasq_m_n_f16): Remove.
1063 (vfmsq_m_f32): Remove.
1064 (vfmsq_m_f16): Remove.
1065 (__arm_vfmaq_f16): Remove.
1066 (__arm_vfmaq_n_f16): Remove.
1067 (__arm_vfmasq_n_f16): Remove.
1068 (__arm_vfmsq_f16): Remove.
1069 (__arm_vfmaq_f32): Remove.
1070 (__arm_vfmaq_n_f32): Remove.
1071 (__arm_vfmasq_n_f32): Remove.
1072 (__arm_vfmsq_f32): Remove.
1073 (__arm_vfmaq_m_f32): Remove.
1074 (__arm_vfmaq_m_f16): Remove.
1075 (__arm_vfmaq_m_n_f32): Remove.
1076 (__arm_vfmaq_m_n_f16): Remove.
1077 (__arm_vfmasq_m_n_f32): Remove.
1078 (__arm_vfmasq_m_n_f16): Remove.
1079 (__arm_vfmsq_m_f32): Remove.
1080 (__arm_vfmsq_m_f16): Remove.
1081 (__arm_vfmaq): Remove.
1082 (__arm_vfmasq): Remove.
1083 (__arm_vfmsq): Remove.
1084 (__arm_vfmaq_m): Remove.
1085 (__arm_vfmasq_m): Remove.
1086 (__arm_vfmsq_m): Remove.
1088 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
1090 * config/arm/iterators.md (MVE_FP_M_BINARY): Add VFMAQ_M_F,
1092 (MVE_FP_M_N_BINARY): Add VFMAQ_M_N_F, VFMASQ_M_N_F.
1093 (MVE_VFMxQ_F, MVE_VFMAxQ_N_F): New.
1094 (mve_insn): Add vfma, vfmas, vfms.
1095 * config/arm/mve.md (mve_vfmaq_f<mode>, mve_vfmsq_f<mode>): Merge
1097 (@mve_<mve_insn>q_f<mode>): ... this.
1098 (mve_vfmaq_n_f<mode>, mve_vfmasq_n_f<mode>): Merge into ...
1099 (@mve_<mve_insn>q_n_f<mode>): ... this.
1100 (mve_vfmaq_m_f<mode>, mve_vfmsq_m_f<mode>): Merge into
1101 @mve_<mve_insn>q_m_f<mode>.
1102 (mve_vfmaq_m_n_f<mode>, mve_vfmasq_m_n_f<mode>): Merge into
1103 @mve_<mve_insn>q_m_n_f<mode>.
1105 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
1107 * config/arm/arm-mve-builtins-shapes.cc (ternary_opt_n): New.
1108 * config/arm/arm-mve-builtins-shapes.h (ternary_opt_n): New.
1110 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
1112 * config/arm/arm-mve-builtins-base.cc
1113 (FUNCTION_WITH_RTX_M_N_NO_F): New.
1115 * config/arm/arm-mve-builtins-base.def (vmvnq): New.
1116 * config/arm/arm-mve-builtins-base.h (vmvnq): New.
1117 * config/arm/arm_mve.h (vmvnq): Remove.
1121 (vmvnq_s16): Remove.
1122 (vmvnq_s32): Remove.
1123 (vmvnq_n_s16): Remove.
1124 (vmvnq_n_s32): Remove.
1126 (vmvnq_u16): Remove.
1127 (vmvnq_u32): Remove.
1128 (vmvnq_n_u16): Remove.
1129 (vmvnq_n_u32): Remove.
1130 (vmvnq_m_u8): Remove.
1131 (vmvnq_m_s8): Remove.
1132 (vmvnq_m_u16): Remove.
1133 (vmvnq_m_s16): Remove.
1134 (vmvnq_m_u32): Remove.
1135 (vmvnq_m_s32): Remove.
1136 (vmvnq_m_n_s16): Remove.
1137 (vmvnq_m_n_u16): Remove.
1138 (vmvnq_m_n_s32): Remove.
1139 (vmvnq_m_n_u32): Remove.
1140 (vmvnq_x_s8): Remove.
1141 (vmvnq_x_s16): Remove.
1142 (vmvnq_x_s32): Remove.
1143 (vmvnq_x_u8): Remove.
1144 (vmvnq_x_u16): Remove.
1145 (vmvnq_x_u32): Remove.
1146 (vmvnq_x_n_s16): Remove.
1147 (vmvnq_x_n_s32): Remove.
1148 (vmvnq_x_n_u16): Remove.
1149 (vmvnq_x_n_u32): Remove.
1150 (__arm_vmvnq_s8): Remove.
1151 (__arm_vmvnq_s16): Remove.
1152 (__arm_vmvnq_s32): Remove.
1153 (__arm_vmvnq_n_s16): Remove.
1154 (__arm_vmvnq_n_s32): Remove.
1155 (__arm_vmvnq_u8): Remove.
1156 (__arm_vmvnq_u16): Remove.
1157 (__arm_vmvnq_u32): Remove.
1158 (__arm_vmvnq_n_u16): Remove.
1159 (__arm_vmvnq_n_u32): Remove.
1160 (__arm_vmvnq_m_u8): Remove.
1161 (__arm_vmvnq_m_s8): Remove.
1162 (__arm_vmvnq_m_u16): Remove.
1163 (__arm_vmvnq_m_s16): Remove.
1164 (__arm_vmvnq_m_u32): Remove.
1165 (__arm_vmvnq_m_s32): Remove.
1166 (__arm_vmvnq_m_n_s16): Remove.
1167 (__arm_vmvnq_m_n_u16): Remove.
1168 (__arm_vmvnq_m_n_s32): Remove.
1169 (__arm_vmvnq_m_n_u32): Remove.
1170 (__arm_vmvnq_x_s8): Remove.
1171 (__arm_vmvnq_x_s16): Remove.
1172 (__arm_vmvnq_x_s32): Remove.
1173 (__arm_vmvnq_x_u8): Remove.
1174 (__arm_vmvnq_x_u16): Remove.
1175 (__arm_vmvnq_x_u32): Remove.
1176 (__arm_vmvnq_x_n_s16): Remove.
1177 (__arm_vmvnq_x_n_s32): Remove.
1178 (__arm_vmvnq_x_n_u16): Remove.
1179 (__arm_vmvnq_x_n_u32): Remove.
1180 (__arm_vmvnq): Remove.
1181 (__arm_vmvnq_m): Remove.
1182 (__arm_vmvnq_x): Remove.
1184 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
1186 * config/arm/iterators.md (mve_insn): Add vmvn.
1187 * config/arm/mve.md (mve_vmvnq_n_<supf><mode>): Rename into ...
1188 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
1189 (mve_vmvnq_m_<supf><mode>): Rename into ...
1190 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
1191 (mve_vmvnq_m_n_<supf><mode>): Rename into ...
1192 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
1194 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
1196 * config/arm/arm-mve-builtins-shapes.cc (mvn): New.
1197 * config/arm/arm-mve-builtins-shapes.h (mvn): New.
1199 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
1201 * config/arm/arm-mve-builtins-base.cc (vbrsrq): New.
1202 * config/arm/arm-mve-builtins-base.def (vbrsrq): New.
1203 * config/arm/arm-mve-builtins-base.h (vbrsrq): New.
1204 * config/arm/arm_mve.h (vbrsrq): Remove.
1207 (vbrsrq_n_f16): Remove.
1208 (vbrsrq_n_f32): Remove.
1209 (vbrsrq_n_u8): Remove.
1210 (vbrsrq_n_s8): Remove.
1211 (vbrsrq_n_u16): Remove.
1212 (vbrsrq_n_s16): Remove.
1213 (vbrsrq_n_u32): Remove.
1214 (vbrsrq_n_s32): Remove.
1215 (vbrsrq_m_n_s8): Remove.
1216 (vbrsrq_m_n_s32): Remove.
1217 (vbrsrq_m_n_s16): Remove.
1218 (vbrsrq_m_n_u8): Remove.
1219 (vbrsrq_m_n_u32): Remove.
1220 (vbrsrq_m_n_u16): Remove.
1221 (vbrsrq_m_n_f32): Remove.
1222 (vbrsrq_m_n_f16): Remove.
1223 (vbrsrq_x_n_s8): Remove.
1224 (vbrsrq_x_n_s16): Remove.
1225 (vbrsrq_x_n_s32): Remove.
1226 (vbrsrq_x_n_u8): Remove.
1227 (vbrsrq_x_n_u16): Remove.
1228 (vbrsrq_x_n_u32): Remove.
1229 (vbrsrq_x_n_f16): Remove.
1230 (vbrsrq_x_n_f32): Remove.
1231 (__arm_vbrsrq_n_u8): Remove.
1232 (__arm_vbrsrq_n_s8): Remove.
1233 (__arm_vbrsrq_n_u16): Remove.
1234 (__arm_vbrsrq_n_s16): Remove.
1235 (__arm_vbrsrq_n_u32): Remove.
1236 (__arm_vbrsrq_n_s32): Remove.
1237 (__arm_vbrsrq_m_n_s8): Remove.
1238 (__arm_vbrsrq_m_n_s32): Remove.
1239 (__arm_vbrsrq_m_n_s16): Remove.
1240 (__arm_vbrsrq_m_n_u8): Remove.
1241 (__arm_vbrsrq_m_n_u32): Remove.
1242 (__arm_vbrsrq_m_n_u16): Remove.
1243 (__arm_vbrsrq_x_n_s8): Remove.
1244 (__arm_vbrsrq_x_n_s16): Remove.
1245 (__arm_vbrsrq_x_n_s32): Remove.
1246 (__arm_vbrsrq_x_n_u8): Remove.
1247 (__arm_vbrsrq_x_n_u16): Remove.
1248 (__arm_vbrsrq_x_n_u32): Remove.
1249 (__arm_vbrsrq_n_f16): Remove.
1250 (__arm_vbrsrq_n_f32): Remove.
1251 (__arm_vbrsrq_m_n_f32): Remove.
1252 (__arm_vbrsrq_m_n_f16): Remove.
1253 (__arm_vbrsrq_x_n_f16): Remove.
1254 (__arm_vbrsrq_x_n_f32): Remove.
1255 (__arm_vbrsrq): Remove.
1256 (__arm_vbrsrq_m): Remove.
1257 (__arm_vbrsrq_x): Remove.
1259 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
1261 * config/arm/iterators.md (MVE_VBRSR_M_N_FP, MVE_VBRSR_N_FP): New.
1262 (mve_insn): Add vbrsr.
1263 * config/arm/mve.md (mve_vbrsrq_n_f<mode>): Rename into ...
1264 (@mve_<mve_insn>q_n_f<mode>): ... this.
1265 (mve_vbrsrq_n_<supf><mode>): Rename into ...
1266 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
1267 (mve_vbrsrq_m_n_<supf><mode>): Rename into ...
1268 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
1269 (mve_vbrsrq_m_n_f<mode>): Rename into ...
1270 (@mve_<mve_insn>q_m_n_f<mode>): ... this.
1272 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
1274 * config/arm/arm-mve-builtins-shapes.cc (binary_imm32): New.
1275 * config/arm/arm-mve-builtins-shapes.h (binary_imm32): New.
1277 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
1279 * config/arm/arm-mve-builtins-base.cc (vqshluq): New.
1280 * config/arm/arm-mve-builtins-base.def (vqshluq): New.
1281 * config/arm/arm-mve-builtins-base.h (vqshluq): New.
1282 * config/arm/arm_mve.h (vqshluq): Remove.
1283 (vqshluq_m): Remove.
1284 (vqshluq_n_s8): Remove.
1285 (vqshluq_n_s16): Remove.
1286 (vqshluq_n_s32): Remove.
1287 (vqshluq_m_n_s8): Remove.
1288 (vqshluq_m_n_s16): Remove.
1289 (vqshluq_m_n_s32): Remove.
1290 (__arm_vqshluq_n_s8): Remove.
1291 (__arm_vqshluq_n_s16): Remove.
1292 (__arm_vqshluq_n_s32): Remove.
1293 (__arm_vqshluq_m_n_s8): Remove.
1294 (__arm_vqshluq_m_n_s16): Remove.
1295 (__arm_vqshluq_m_n_s32): Remove.
1296 (__arm_vqshluq): Remove.
1297 (__arm_vqshluq_m): Remove.
1299 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
1301 * config/arm/iterators.md (mve_insn): Add vqshlu.
1302 (supf): Add VQSHLUQ_M_N_S, VQSHLUQ_N_S.
1303 (VQSHLUQ_M_N, VQSHLUQ_N): New.
1304 * config/arm/mve.md (mve_vqshluq_n_s<mode>): Change name into ...
1305 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
1306 (mve_vqshluq_m_n_s<mode>): Change name into ...
1307 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
1309 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
1311 * config/arm/arm-mve-builtins-shapes.cc
1312 (binary_lshift_unsigned): New.
1313 * config/arm/arm-mve-builtins-shapes.h
1314 (binary_lshift_unsigned): New.
1316 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
1318 * config/arm/arm-mve-builtins-base.cc (vrmlaldavhaq)
1319 (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
1320 * config/arm/arm-mve-builtins-base.def (vrmlaldavhaq)
1321 (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
1322 * config/arm/arm-mve-builtins-base.h (vrmlaldavhaq)
1323 (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
1324 * config/arm/arm-mve-builtins-functions.h: Handle vrmlaldavhaq,
1325 vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq.
1326 * config/arm/arm_mve.h (vrmlaldavhaq): Remove.
1327 (vrmlaldavhaxq): Remove.
1328 (vrmlsldavhaq): Remove.
1329 (vrmlsldavhaxq): Remove.
1330 (vrmlaldavhaq_p): Remove.
1331 (vrmlaldavhaxq_p): Remove.
1332 (vrmlsldavhaq_p): Remove.
1333 (vrmlsldavhaxq_p): Remove.
1334 (vrmlaldavhaq_s32): Remove.
1335 (vrmlaldavhaq_u32): Remove.
1336 (vrmlaldavhaxq_s32): Remove.
1337 (vrmlsldavhaq_s32): Remove.
1338 (vrmlsldavhaxq_s32): Remove.
1339 (vrmlaldavhaq_p_s32): Remove.
1340 (vrmlaldavhaq_p_u32): Remove.
1341 (vrmlaldavhaxq_p_s32): Remove.
1342 (vrmlsldavhaq_p_s32): Remove.
1343 (vrmlsldavhaxq_p_s32): Remove.
1344 (__arm_vrmlaldavhaq_s32): Remove.
1345 (__arm_vrmlaldavhaq_u32): Remove.
1346 (__arm_vrmlaldavhaxq_s32): Remove.
1347 (__arm_vrmlsldavhaq_s32): Remove.
1348 (__arm_vrmlsldavhaxq_s32): Remove.
1349 (__arm_vrmlaldavhaq_p_s32): Remove.
1350 (__arm_vrmlaldavhaq_p_u32): Remove.
1351 (__arm_vrmlaldavhaxq_p_s32): Remove.
1352 (__arm_vrmlsldavhaq_p_s32): Remove.
1353 (__arm_vrmlsldavhaxq_p_s32): Remove.
1354 (__arm_vrmlaldavhaq): Remove.
1355 (__arm_vrmlaldavhaxq): Remove.
1356 (__arm_vrmlsldavhaq): Remove.
1357 (__arm_vrmlsldavhaxq): Remove.
1358 (__arm_vrmlaldavhaq_p): Remove.
1359 (__arm_vrmlaldavhaxq_p): Remove.
1360 (__arm_vrmlsldavhaq_p): Remove.
1361 (__arm_vrmlsldavhaxq_p): Remove.
1363 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
1365 * config/arm/iterators.md (MVE_VRMLxLDAVHAxQ)
1366 (MVE_VRMLxLDAVHAxQ_P): New.
1367 (mve_insn): Add vrmlaldavha, vrmlaldavhax, vrmlsldavha,
1369 (supf): Add VRMLALDAVHAXQ_P_S, VRMLALDAVHAXQ_S, VRMLSLDAVHAQ_P_S,
1370 VRMLSLDAVHAQ_S, VRMLSLDAVHAXQ_P_S, VRMLSLDAVHAXQ_S,
1372 * config/arm/mve.md (mve_vrmlaldavhaq_<supf>v4si)
1373 (mve_vrmlaldavhaxq_sv4si, mve_vrmlsldavhaxq_sv4si)
1374 (mve_vrmlsldavhaq_sv4si): Merge into ...
1375 (@mve_<mve_insn>q_<supf>v4si): ... this.
1376 (mve_vrmlaldavhaq_p_sv4si, mve_vrmlaldavhaq_p_uv4si)
1377 (mve_vrmlaldavhaxq_p_sv4si, mve_vrmlsldavhaq_p_sv4si)
1378 (mve_vrmlsldavhaxq_p_sv4si): Merge into ...
1379 (@mve_<mve_insn>q_p_<supf>v4si): ... this.
1381 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
1383 * config/arm/arm-mve-builtins-base.cc (vqdmullbq, vqdmulltq): New.
1384 * config/arm/arm-mve-builtins-base.def (vqdmullbq, vqdmulltq):
1386 * config/arm/arm-mve-builtins-base.h (vqdmullbq, vqdmulltq): New.
1387 * config/arm/arm_mve.h (vqdmulltq): Remove.
1388 (vqdmullbq): Remove.
1389 (vqdmullbq_m): Remove.
1390 (vqdmulltq_m): Remove.
1391 (vqdmulltq_s16): Remove.
1392 (vqdmulltq_n_s16): Remove.
1393 (vqdmullbq_s16): Remove.
1394 (vqdmullbq_n_s16): Remove.
1395 (vqdmulltq_s32): Remove.
1396 (vqdmulltq_n_s32): Remove.
1397 (vqdmullbq_s32): Remove.
1398 (vqdmullbq_n_s32): Remove.
1399 (vqdmullbq_m_n_s32): Remove.
1400 (vqdmullbq_m_n_s16): Remove.
1401 (vqdmullbq_m_s32): Remove.
1402 (vqdmullbq_m_s16): Remove.
1403 (vqdmulltq_m_n_s32): Remove.
1404 (vqdmulltq_m_n_s16): Remove.
1405 (vqdmulltq_m_s32): Remove.
1406 (vqdmulltq_m_s16): Remove.
1407 (__arm_vqdmulltq_s16): Remove.
1408 (__arm_vqdmulltq_n_s16): Remove.
1409 (__arm_vqdmullbq_s16): Remove.
1410 (__arm_vqdmullbq_n_s16): Remove.
1411 (__arm_vqdmulltq_s32): Remove.
1412 (__arm_vqdmulltq_n_s32): Remove.
1413 (__arm_vqdmullbq_s32): Remove.
1414 (__arm_vqdmullbq_n_s32): Remove.
1415 (__arm_vqdmullbq_m_n_s32): Remove.
1416 (__arm_vqdmullbq_m_n_s16): Remove.
1417 (__arm_vqdmullbq_m_s32): Remove.
1418 (__arm_vqdmullbq_m_s16): Remove.
1419 (__arm_vqdmulltq_m_n_s32): Remove.
1420 (__arm_vqdmulltq_m_n_s16): Remove.
1421 (__arm_vqdmulltq_m_s32): Remove.
1422 (__arm_vqdmulltq_m_s16): Remove.
1423 (__arm_vqdmulltq): Remove.
1424 (__arm_vqdmullbq): Remove.
1425 (__arm_vqdmullbq_m): Remove.
1426 (__arm_vqdmulltq_m): Remove.
1428 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
1430 * config/arm/iterators.md (MVE_VQDMULLxQ, MVE_VQDMULLxQ_M)
1431 (MVE_VQDMULLxQ_M_N, MVE_VQDMULLxQ_N): New.
1432 (mve_insn): Add vqdmullb, vqdmullt.
1433 (supf): Add VQDMULLBQ_S, VQDMULLBQ_M_S, VQDMULLBQ_M_N_S,
1434 VQDMULLBQ_N_S, VQDMULLTQ_S, VQDMULLTQ_M_S, VQDMULLTQ_M_N_S,
1436 * config/arm/mve.md (mve_vqdmullbq_n_s<mode>)
1437 (mve_vqdmulltq_n_s<mode>): Merge into ...
1438 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
1439 (mve_vqdmullbq_s<mode>, mve_vqdmulltq_s<mode>): Merge into ...
1440 (@mve_<mve_insn>q_<supf><mode>): ... this.
1441 (mve_vqdmullbq_m_n_s<mode>, mve_vqdmulltq_m_n_s<mode>): Merge into
1443 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
1444 (mve_vqdmullbq_m_s<mode>, mve_vqdmulltq_m_s<mode>): Merge into ...
1445 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
1447 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
1449 * config/arm/arm-mve-builtins-shapes.cc (binary_widen_opt_n): New.
1450 * config/arm/arm-mve-builtins-shapes.h (binary_widen_opt_n): New.
1452 2023-05-12 Kito Cheng <kito.cheng@sifive.com>
1454 * common/config/riscv/riscv-common.cc (riscv_select_multilib_by_abi):
1455 Drop unused parameter.
1456 (riscv_select_multilib): Ditto.
1457 (riscv_compute_multilib): Update call site of
1458 riscv_select_multilib_by_abi and riscv_select_multilib_by_abi.
1460 2023-05-12 Juzhe Zhong <juzhe.zhong@rivai.ai>
1462 * config/riscv/autovec.md (vec_init<mode><vel>): New pattern.
1463 * config/riscv/riscv-protos.h (expand_vec_init): New function.
1464 * config/riscv/riscv-v.cc (class rvv_builder): New class.
1465 (rvv_builder::can_duplicate_repeating_sequence_p): New function.
1466 (rvv_builder::get_merged_repeating_sequence): Ditto.
1467 (expand_vector_init_insert_elems): Ditto.
1468 (expand_vec_init): Ditto.
1469 * config/riscv/vector-iterators.md: New attribute.
1471 2023-05-12 Haochen Gui <guihaoc@gcc.gnu.org>
1473 * config/rs6000/rs6000-builtins.def
1474 (__builtin_vsx_scalar_insert_exp): Replace bif-pattern from xsiexpdp
1476 (__builtin_vsx_scalar_insert_exp_dp): Replace bif-pattern from
1477 xsiexpdpf to xsiexpdpf_di.
1478 * config/rs6000/vsx.md (xsiexpdp): Rename to...
1479 (xsiexpdp_<mode>): ..., set the mode of second operand to GPR and
1480 replace TARGET_64BIT with TARGET_POWERPC64.
1481 (xsiexpdpf): Rename to...
1482 (xsiexpdpf_<mode>): ..., set the mode of second operand to GPR and
1483 replace TARGET_64BIT with TARGET_POWERPC64.
1485 2023-05-12 Haochen Gui <guihaoc@gcc.gnu.org>
1487 * config/rs6000/rs6000-builtins.def
1488 (__builtin_vsx_scalar_extract_sig): Set return type to const signed
1490 * config/rs6000/vsx.md (xsxsigdp): Replace TARGET_64BIT with
1493 2023-05-12 Haochen Gui <guihaoc@gcc.gnu.org>
1495 * config/rs6000/rs6000-builtins.def
1496 (__builtin_vsx_scalar_extract_exp): Set return type to const signed
1497 int and set its bif-pattern to xsxexpdp_si, move it from power9-64
1499 * config/rs6000/vsx.md (xsxexpdp): Rename to ...
1500 (xsxexpdp_<mode>): ..., set mode of operand 0 to GPR and remove
1502 * doc/extend.texi (scalar_extract_exp): Remove 64-bit environment
1503 requirement when it has a 64-bit argument.
1505 2023-05-12 Pan Li <pan2.li@intel.com>
1506 Richard Sandiford <richard.sandiford@arm.com>
1507 Richard Biener <rguenther@suse.de>
1508 Jakub Jelinek <jakub@redhat.com>
1510 * mux-utils.h: Add overload operator == and != for pointer_mux.
1511 * var-tracking.cc: Included mux-utils.h for pointer_tmux.
1512 (decl_or_value): Changed from void * to pointer_mux<tree_node, rtx_def>.
1513 (dv_is_decl_p): Reconciled to the new type, aka pointer_mux.
1514 (dv_as_decl): Ditto.
1515 (dv_as_opaque): Removed due to unnecessary.
1516 (struct variable_hasher): Take decl_or_value as compare_type.
1517 (variable_hasher::equal): Diito.
1518 (dv_from_decl): Reconciled to the new type, aka pointer_mux.
1519 (dv_from_value): Ditto.
1520 (attrs_list_member): Ditto.
1522 (var_reg_decl_set): Ditto.
1523 (var_reg_delete_and_set): Ditto.
1524 (find_loc_in_1pdv): Ditto.
1525 (canonicalize_values_star): Ditto.
1526 (variable_post_merge_new_vals): Ditto.
1527 (dump_onepart_variable_differences): Ditto.
1528 (variable_different_p): Ditto.
1529 (set_slot_part): Ditto.
1530 (clobber_slot_part): Ditto.
1531 (clobber_variable_part): Ditto.
1533 2023-05-11 mtsamis <manolis.tsamis@vrull.eu>
1535 * match.pd: simplify vector shift + bit_and + multiply.
1537 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
1539 * config/arm/arm-mve-builtins-base.cc (vmlaq, vmlasq, vqdmlahq)
1540 (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
1541 * config/arm/arm-mve-builtins-base.def (vmlaq, vmlasq, vqdmlahq)
1542 (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
1543 * config/arm/arm-mve-builtins-base.h (vmlaq, vmlasq, vqdmlahq)
1544 (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
1545 * config/arm/arm-mve-builtins.cc
1546 (function_instance::has_inactive_argument): Handle vmlaq, vmlasq,
1547 vqdmlahq, vqdmlashq, vqrdmlahq, vqrdmlashq.
1548 * config/arm/arm_mve.h (vqrdmlashq): Remove.
1549 (vqrdmlahq): Remove.
1550 (vqdmlashq): Remove.
1556 (vqdmlashq_m): Remove.
1557 (vqdmlahq_m): Remove.
1558 (vqrdmlahq_m): Remove.
1559 (vqrdmlashq_m): Remove.
1560 (vmlasq_n_u8): Remove.
1561 (vmlaq_n_u8): Remove.
1562 (vqrdmlashq_n_s8): Remove.
1563 (vqrdmlahq_n_s8): Remove.
1564 (vqdmlahq_n_s8): Remove.
1565 (vqdmlashq_n_s8): Remove.
1566 (vmlasq_n_s8): Remove.
1567 (vmlaq_n_s8): Remove.
1568 (vmlasq_n_u16): Remove.
1569 (vmlaq_n_u16): Remove.
1570 (vqrdmlashq_n_s16): Remove.
1571 (vqrdmlahq_n_s16): Remove.
1572 (vqdmlashq_n_s16): Remove.
1573 (vqdmlahq_n_s16): Remove.
1574 (vmlasq_n_s16): Remove.
1575 (vmlaq_n_s16): Remove.
1576 (vmlasq_n_u32): Remove.
1577 (vmlaq_n_u32): Remove.
1578 (vqrdmlashq_n_s32): Remove.
1579 (vqrdmlahq_n_s32): Remove.
1580 (vqdmlashq_n_s32): Remove.
1581 (vqdmlahq_n_s32): Remove.
1582 (vmlasq_n_s32): Remove.
1583 (vmlaq_n_s32): Remove.
1584 (vmlaq_m_n_s8): Remove.
1585 (vmlaq_m_n_s32): Remove.
1586 (vmlaq_m_n_s16): Remove.
1587 (vmlaq_m_n_u8): Remove.
1588 (vmlaq_m_n_u32): Remove.
1589 (vmlaq_m_n_u16): Remove.
1590 (vmlasq_m_n_s8): Remove.
1591 (vmlasq_m_n_s32): Remove.
1592 (vmlasq_m_n_s16): Remove.
1593 (vmlasq_m_n_u8): Remove.
1594 (vmlasq_m_n_u32): Remove.
1595 (vmlasq_m_n_u16): Remove.
1596 (vqdmlashq_m_n_s8): Remove.
1597 (vqdmlashq_m_n_s32): Remove.
1598 (vqdmlashq_m_n_s16): Remove.
1599 (vqdmlahq_m_n_s8): Remove.
1600 (vqdmlahq_m_n_s32): Remove.
1601 (vqdmlahq_m_n_s16): Remove.
1602 (vqrdmlahq_m_n_s8): Remove.
1603 (vqrdmlahq_m_n_s32): Remove.
1604 (vqrdmlahq_m_n_s16): Remove.
1605 (vqrdmlashq_m_n_s8): Remove.
1606 (vqrdmlashq_m_n_s32): Remove.
1607 (vqrdmlashq_m_n_s16): Remove.
1608 (__arm_vmlasq_n_u8): Remove.
1609 (__arm_vmlaq_n_u8): Remove.
1610 (__arm_vqrdmlashq_n_s8): Remove.
1611 (__arm_vqdmlashq_n_s8): Remove.
1612 (__arm_vqrdmlahq_n_s8): Remove.
1613 (__arm_vqdmlahq_n_s8): Remove.
1614 (__arm_vmlasq_n_s8): Remove.
1615 (__arm_vmlaq_n_s8): Remove.
1616 (__arm_vmlasq_n_u16): Remove.
1617 (__arm_vmlaq_n_u16): Remove.
1618 (__arm_vqrdmlashq_n_s16): Remove.
1619 (__arm_vqdmlashq_n_s16): Remove.
1620 (__arm_vqrdmlahq_n_s16): Remove.
1621 (__arm_vqdmlahq_n_s16): Remove.
1622 (__arm_vmlasq_n_s16): Remove.
1623 (__arm_vmlaq_n_s16): Remove.
1624 (__arm_vmlasq_n_u32): Remove.
1625 (__arm_vmlaq_n_u32): Remove.
1626 (__arm_vqrdmlashq_n_s32): Remove.
1627 (__arm_vqdmlashq_n_s32): Remove.
1628 (__arm_vqrdmlahq_n_s32): Remove.
1629 (__arm_vqdmlahq_n_s32): Remove.
1630 (__arm_vmlasq_n_s32): Remove.
1631 (__arm_vmlaq_n_s32): Remove.
1632 (__arm_vmlaq_m_n_s8): Remove.
1633 (__arm_vmlaq_m_n_s32): Remove.
1634 (__arm_vmlaq_m_n_s16): Remove.
1635 (__arm_vmlaq_m_n_u8): Remove.
1636 (__arm_vmlaq_m_n_u32): Remove.
1637 (__arm_vmlaq_m_n_u16): Remove.
1638 (__arm_vmlasq_m_n_s8): Remove.
1639 (__arm_vmlasq_m_n_s32): Remove.
1640 (__arm_vmlasq_m_n_s16): Remove.
1641 (__arm_vmlasq_m_n_u8): Remove.
1642 (__arm_vmlasq_m_n_u32): Remove.
1643 (__arm_vmlasq_m_n_u16): Remove.
1644 (__arm_vqdmlahq_m_n_s8): Remove.
1645 (__arm_vqdmlahq_m_n_s32): Remove.
1646 (__arm_vqdmlahq_m_n_s16): Remove.
1647 (__arm_vqrdmlahq_m_n_s8): Remove.
1648 (__arm_vqrdmlahq_m_n_s32): Remove.
1649 (__arm_vqrdmlahq_m_n_s16): Remove.
1650 (__arm_vqrdmlashq_m_n_s8): Remove.
1651 (__arm_vqrdmlashq_m_n_s32): Remove.
1652 (__arm_vqrdmlashq_m_n_s16): Remove.
1653 (__arm_vqdmlashq_m_n_s8): Remove.
1654 (__arm_vqdmlashq_m_n_s16): Remove.
1655 (__arm_vqdmlashq_m_n_s32): Remove.
1656 (__arm_vmlasq): Remove.
1657 (__arm_vmlaq): Remove.
1658 (__arm_vqrdmlashq): Remove.
1659 (__arm_vqdmlashq): Remove.
1660 (__arm_vqrdmlahq): Remove.
1661 (__arm_vqdmlahq): Remove.
1662 (__arm_vmlaq_m): Remove.
1663 (__arm_vmlasq_m): Remove.
1664 (__arm_vqdmlahq_m): Remove.
1665 (__arm_vqrdmlahq_m): Remove.
1666 (__arm_vqrdmlashq_m): Remove.
1667 (__arm_vqdmlashq_m): Remove.
1669 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
1671 * config/arm/iterators.md (MVE_VMLxQ_N): New.
1672 (mve_insn): Add vmla, vmlas, vqdmlah, vqdmlash, vqrdmlah,
1674 (supf): Add VQDMLAHQ_N_S, VQDMLASHQ_N_S, VQRDMLAHQ_N_S,
1676 * config/arm/mve.md (mve_vmlaq_n_<supf><mode>)
1677 (mve_vmlasq_n_<supf><mode>, mve_vqdmlahq_n_<supf><mode>)
1678 (mve_vqdmlashq_n_<supf><mode>, mve_vqrdmlahq_n_<supf><mode>)
1679 (mve_vqrdmlashq_n_<supf><mode>): Merge into ...
1680 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
1682 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
1684 * config/arm/arm-mve-builtins-shapes.cc (ternary_n): New.
1685 * config/arm/arm-mve-builtins-shapes.h (ternary_n): New.
1687 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
1689 * config/arm/arm-mve-builtins-base.cc (vqdmladhq, vqdmladhxq)
1690 (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
1692 * config/arm/arm-mve-builtins-base.def (vqdmladhq, vqdmladhxq)
1693 (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
1695 * config/arm/arm-mve-builtins-base.h (vqdmladhq, vqdmladhxq)
1696 (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
1698 * config/arm/arm-mve-builtins.cc
1699 (function_instance::has_inactive_argument): Handle vqrdmladhq,
1700 vqrdmladhxq, vqrdmlsdhq, vqrdmlsdhxq vqdmladhq, vqdmladhxq,
1701 vqdmlsdhq, vqdmlsdhxq.
1702 * config/arm/arm_mve.h (vqrdmlsdhxq): Remove.
1703 (vqrdmlsdhq): Remove.
1704 (vqrdmladhxq): Remove.
1705 (vqrdmladhq): Remove.
1706 (vqdmlsdhxq): Remove.
1707 (vqdmlsdhq): Remove.
1708 (vqdmladhxq): Remove.
1709 (vqdmladhq): Remove.
1710 (vqdmladhq_m): Remove.
1711 (vqdmladhxq_m): Remove.
1712 (vqdmlsdhq_m): Remove.
1713 (vqdmlsdhxq_m): Remove.
1714 (vqrdmladhq_m): Remove.
1715 (vqrdmladhxq_m): Remove.
1716 (vqrdmlsdhq_m): Remove.
1717 (vqrdmlsdhxq_m): Remove.
1718 (vqrdmlsdhxq_s8): Remove.
1719 (vqrdmlsdhq_s8): Remove.
1720 (vqrdmladhxq_s8): Remove.
1721 (vqrdmladhq_s8): Remove.
1722 (vqdmlsdhxq_s8): Remove.
1723 (vqdmlsdhq_s8): Remove.
1724 (vqdmladhxq_s8): Remove.
1725 (vqdmladhq_s8): Remove.
1726 (vqrdmlsdhxq_s16): Remove.
1727 (vqrdmlsdhq_s16): Remove.
1728 (vqrdmladhxq_s16): Remove.
1729 (vqrdmladhq_s16): Remove.
1730 (vqdmlsdhxq_s16): Remove.
1731 (vqdmlsdhq_s16): Remove.
1732 (vqdmladhxq_s16): Remove.
1733 (vqdmladhq_s16): Remove.
1734 (vqrdmlsdhxq_s32): Remove.
1735 (vqrdmlsdhq_s32): Remove.
1736 (vqrdmladhxq_s32): Remove.
1737 (vqrdmladhq_s32): Remove.
1738 (vqdmlsdhxq_s32): Remove.
1739 (vqdmlsdhq_s32): Remove.
1740 (vqdmladhxq_s32): Remove.
1741 (vqdmladhq_s32): Remove.
1742 (vqdmladhq_m_s8): Remove.
1743 (vqdmladhq_m_s32): Remove.
1744 (vqdmladhq_m_s16): Remove.
1745 (vqdmladhxq_m_s8): Remove.
1746 (vqdmladhxq_m_s32): Remove.
1747 (vqdmladhxq_m_s16): Remove.
1748 (vqdmlsdhq_m_s8): Remove.
1749 (vqdmlsdhq_m_s32): Remove.
1750 (vqdmlsdhq_m_s16): Remove.
1751 (vqdmlsdhxq_m_s8): Remove.
1752 (vqdmlsdhxq_m_s32): Remove.
1753 (vqdmlsdhxq_m_s16): Remove.
1754 (vqrdmladhq_m_s8): Remove.
1755 (vqrdmladhq_m_s32): Remove.
1756 (vqrdmladhq_m_s16): Remove.
1757 (vqrdmladhxq_m_s8): Remove.
1758 (vqrdmladhxq_m_s32): Remove.
1759 (vqrdmladhxq_m_s16): Remove.
1760 (vqrdmlsdhq_m_s8): Remove.
1761 (vqrdmlsdhq_m_s32): Remove.
1762 (vqrdmlsdhq_m_s16): Remove.
1763 (vqrdmlsdhxq_m_s8): Remove.
1764 (vqrdmlsdhxq_m_s32): Remove.
1765 (vqrdmlsdhxq_m_s16): Remove.
1766 (__arm_vqrdmlsdhxq_s8): Remove.
1767 (__arm_vqrdmlsdhq_s8): Remove.
1768 (__arm_vqrdmladhxq_s8): Remove.
1769 (__arm_vqrdmladhq_s8): Remove.
1770 (__arm_vqdmlsdhxq_s8): Remove.
1771 (__arm_vqdmlsdhq_s8): Remove.
1772 (__arm_vqdmladhxq_s8): Remove.
1773 (__arm_vqdmladhq_s8): Remove.
1774 (__arm_vqrdmlsdhxq_s16): Remove.
1775 (__arm_vqrdmlsdhq_s16): Remove.
1776 (__arm_vqrdmladhxq_s16): Remove.
1777 (__arm_vqrdmladhq_s16): Remove.
1778 (__arm_vqdmlsdhxq_s16): Remove.
1779 (__arm_vqdmlsdhq_s16): Remove.
1780 (__arm_vqdmladhxq_s16): Remove.
1781 (__arm_vqdmladhq_s16): Remove.
1782 (__arm_vqrdmlsdhxq_s32): Remove.
1783 (__arm_vqrdmlsdhq_s32): Remove.
1784 (__arm_vqrdmladhxq_s32): Remove.
1785 (__arm_vqrdmladhq_s32): Remove.
1786 (__arm_vqdmlsdhxq_s32): Remove.
1787 (__arm_vqdmlsdhq_s32): Remove.
1788 (__arm_vqdmladhxq_s32): Remove.
1789 (__arm_vqdmladhq_s32): Remove.
1790 (__arm_vqdmladhq_m_s8): Remove.
1791 (__arm_vqdmladhq_m_s32): Remove.
1792 (__arm_vqdmladhq_m_s16): Remove.
1793 (__arm_vqdmladhxq_m_s8): Remove.
1794 (__arm_vqdmladhxq_m_s32): Remove.
1795 (__arm_vqdmladhxq_m_s16): Remove.
1796 (__arm_vqdmlsdhq_m_s8): Remove.
1797 (__arm_vqdmlsdhq_m_s32): Remove.
1798 (__arm_vqdmlsdhq_m_s16): Remove.
1799 (__arm_vqdmlsdhxq_m_s8): Remove.
1800 (__arm_vqdmlsdhxq_m_s32): Remove.
1801 (__arm_vqdmlsdhxq_m_s16): Remove.
1802 (__arm_vqrdmladhq_m_s8): Remove.
1803 (__arm_vqrdmladhq_m_s32): Remove.
1804 (__arm_vqrdmladhq_m_s16): Remove.
1805 (__arm_vqrdmladhxq_m_s8): Remove.
1806 (__arm_vqrdmladhxq_m_s32): Remove.
1807 (__arm_vqrdmladhxq_m_s16): Remove.
1808 (__arm_vqrdmlsdhq_m_s8): Remove.
1809 (__arm_vqrdmlsdhq_m_s32): Remove.
1810 (__arm_vqrdmlsdhq_m_s16): Remove.
1811 (__arm_vqrdmlsdhxq_m_s8): Remove.
1812 (__arm_vqrdmlsdhxq_m_s32): Remove.
1813 (__arm_vqrdmlsdhxq_m_s16): Remove.
1814 (__arm_vqrdmlsdhxq): Remove.
1815 (__arm_vqrdmlsdhq): Remove.
1816 (__arm_vqrdmladhxq): Remove.
1817 (__arm_vqrdmladhq): Remove.
1818 (__arm_vqdmlsdhxq): Remove.
1819 (__arm_vqdmlsdhq): Remove.
1820 (__arm_vqdmladhxq): Remove.
1821 (__arm_vqdmladhq): Remove.
1822 (__arm_vqdmladhq_m): Remove.
1823 (__arm_vqdmladhxq_m): Remove.
1824 (__arm_vqdmlsdhq_m): Remove.
1825 (__arm_vqdmlsdhxq_m): Remove.
1826 (__arm_vqrdmladhq_m): Remove.
1827 (__arm_vqrdmladhxq_m): Remove.
1828 (__arm_vqrdmlsdhq_m): Remove.
1829 (__arm_vqrdmlsdhxq_m): Remove.
1831 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
1833 * config/arm/iterators.md (MVE_VQxDMLxDHxQ_S): New.
1834 (mve_insn): Add vqdmladh, vqdmladhx, vqdmlsdh, vqdmlsdhx,
1835 vqrdmladh, vqrdmladhx, vqrdmlsdh, vqrdmlsdhx.
1836 (supf): Add VQDMLADHQ_S, VQDMLADHXQ_S, VQDMLSDHQ_S, VQDMLSDHXQ_S,
1837 VQRDMLADHQ_S,VQRDMLADHXQ_S, VQRDMLSDHQ_S, VQRDMLSDHXQ_S.
1838 * config/arm/mve.md (mve_vqrdmladhq_s<mode>)
1839 (mve_vqrdmladhxq_s<mode>, mve_vqrdmlsdhq_s<mode>)
1840 (mve_vqrdmlsdhxq_s<mode>, mve_vqdmlsdhxq_s<mode>)
1841 (mve_vqdmlsdhq_s<mode>, mve_vqdmladhxq_s<mode>)
1842 (mve_vqdmladhq_s<mode>): Merge into ...
1843 (@mve_<mve_insn>q_<supf><mode>): ... this.
1845 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
1847 * config/arm/arm-mve-builtins-shapes.cc (ternary): New.
1848 * config/arm/arm-mve-builtins-shapes.h (ternary): New.
1850 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
1852 * config/arm/arm-mve-builtins-base.cc (vmlaldavaq, vmlaldavaxq)
1853 (vmlsldavaq, vmlsldavaxq): New.
1854 * config/arm/arm-mve-builtins-base.def (vmlaldavaq, vmlaldavaxq)
1855 (vmlsldavaq, vmlsldavaxq): New.
1856 * config/arm/arm-mve-builtins-base.h (vmlaldavaq, vmlaldavaxq)
1857 (vmlsldavaq, vmlsldavaxq): New.
1858 * config/arm/arm_mve.h (vmlaldavaq): Remove.
1859 (vmlaldavaxq): Remove.
1860 (vmlsldavaq): Remove.
1861 (vmlsldavaxq): Remove.
1862 (vmlaldavaq_p): Remove.
1863 (vmlaldavaxq_p): Remove.
1864 (vmlsldavaq_p): Remove.
1865 (vmlsldavaxq_p): Remove.
1866 (vmlaldavaq_s16): Remove.
1867 (vmlaldavaxq_s16): Remove.
1868 (vmlsldavaq_s16): Remove.
1869 (vmlsldavaxq_s16): Remove.
1870 (vmlaldavaq_u16): Remove.
1871 (vmlaldavaq_s32): Remove.
1872 (vmlaldavaxq_s32): Remove.
1873 (vmlsldavaq_s32): Remove.
1874 (vmlsldavaxq_s32): Remove.
1875 (vmlaldavaq_u32): Remove.
1876 (vmlaldavaq_p_s32): Remove.
1877 (vmlaldavaq_p_s16): Remove.
1878 (vmlaldavaq_p_u32): Remove.
1879 (vmlaldavaq_p_u16): Remove.
1880 (vmlaldavaxq_p_s32): Remove.
1881 (vmlaldavaxq_p_s16): Remove.
1882 (vmlsldavaq_p_s32): Remove.
1883 (vmlsldavaq_p_s16): Remove.
1884 (vmlsldavaxq_p_s32): Remove.
1885 (vmlsldavaxq_p_s16): Remove.
1886 (__arm_vmlaldavaq_s16): Remove.
1887 (__arm_vmlaldavaxq_s16): Remove.
1888 (__arm_vmlsldavaq_s16): Remove.
1889 (__arm_vmlsldavaxq_s16): Remove.
1890 (__arm_vmlaldavaq_u16): Remove.
1891 (__arm_vmlaldavaq_s32): Remove.
1892 (__arm_vmlaldavaxq_s32): Remove.
1893 (__arm_vmlsldavaq_s32): Remove.
1894 (__arm_vmlsldavaxq_s32): Remove.
1895 (__arm_vmlaldavaq_u32): Remove.
1896 (__arm_vmlaldavaq_p_s32): Remove.
1897 (__arm_vmlaldavaq_p_s16): Remove.
1898 (__arm_vmlaldavaq_p_u32): Remove.
1899 (__arm_vmlaldavaq_p_u16): Remove.
1900 (__arm_vmlaldavaxq_p_s32): Remove.
1901 (__arm_vmlaldavaxq_p_s16): Remove.
1902 (__arm_vmlsldavaq_p_s32): Remove.
1903 (__arm_vmlsldavaq_p_s16): Remove.
1904 (__arm_vmlsldavaxq_p_s32): Remove.
1905 (__arm_vmlsldavaxq_p_s16): Remove.
1906 (__arm_vmlaldavaq): Remove.
1907 (__arm_vmlaldavaxq): Remove.
1908 (__arm_vmlsldavaq): Remove.
1909 (__arm_vmlsldavaxq): Remove.
1910 (__arm_vmlaldavaq_p): Remove.
1911 (__arm_vmlaldavaxq_p): Remove.
1912 (__arm_vmlsldavaq_p): Remove.
1913 (__arm_vmlsldavaxq_p): Remove.
1915 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
1917 * config/arm/iterators.md (MVE_VMLxLDAVAxQ, MVE_VMLxLDAVAxQ_P):
1919 (mve_insn): Add vmlaldava, vmlaldavax, vmlsldava, vmlsldavax.
1920 (supf): Add VMLALDAVAXQ_P_S, VMLALDAVAXQ_S, VMLSLDAVAQ_P_S,
1921 VMLSLDAVAQ_S, VMLSLDAVAXQ_P_S, VMLSLDAVAXQ_S.
1922 * config/arm/mve.md (mve_vmlaldavaq_<supf><mode>)
1923 (mve_vmlsldavaq_s<mode>, mve_vmlsldavaxq_s<mode>)
1924 (mve_vmlaldavaxq_s<mode>): Merge into ...
1925 (@mve_<mve_insn>q_<supf><mode>): ... this.
1926 (mve_vmlaldavaq_p_<supf><mode>, mve_vmlaldavaxq_p_<supf><mode>)
1927 (mve_vmlsldavaq_p_s<mode>, mve_vmlsldavaxq_p_s<mode>): Merge into
1929 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
1931 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
1933 * config/arm/arm-mve-builtins-shapes.cc (binary_acca_int64): New.
1934 * config/arm/arm-mve-builtins-shapes.h (binary_acca_int64): New.
1936 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
1938 * config/arm/arm-mve-builtins-base.cc (vrmlaldavhq, vrmlaldavhxq)
1939 (vrmlsldavhq, vrmlsldavhxq): New.
1940 * config/arm/arm-mve-builtins-base.def (vrmlaldavhq, vrmlaldavhxq)
1941 (vrmlsldavhq, vrmlsldavhxq): New.
1942 * config/arm/arm-mve-builtins-base.h (vrmlaldavhq, vrmlaldavhxq)
1943 (vrmlsldavhq, vrmlsldavhxq): New.
1944 * config/arm/arm-mve-builtins-functions.h
1945 (unspec_mve_function_exact_insn_pred_p): Handle vrmlaldavhq,
1946 vrmlaldavhxq, vrmlsldavhq, vrmlsldavhxq.
1947 * config/arm/arm_mve.h (vrmlaldavhq): Remove.
1948 (vrmlsldavhxq): Remove.
1949 (vrmlsldavhq): Remove.
1950 (vrmlaldavhxq): Remove.
1951 (vrmlaldavhq_p): Remove.
1952 (vrmlaldavhxq_p): Remove.
1953 (vrmlsldavhq_p): Remove.
1954 (vrmlsldavhxq_p): Remove.
1955 (vrmlaldavhq_u32): Remove.
1956 (vrmlsldavhxq_s32): Remove.
1957 (vrmlsldavhq_s32): Remove.
1958 (vrmlaldavhxq_s32): Remove.
1959 (vrmlaldavhq_s32): Remove.
1960 (vrmlaldavhq_p_s32): Remove.
1961 (vrmlaldavhxq_p_s32): Remove.
1962 (vrmlsldavhq_p_s32): Remove.
1963 (vrmlsldavhxq_p_s32): Remove.
1964 (vrmlaldavhq_p_u32): Remove.
1965 (__arm_vrmlaldavhq_u32): Remove.
1966 (__arm_vrmlsldavhxq_s32): Remove.
1967 (__arm_vrmlsldavhq_s32): Remove.
1968 (__arm_vrmlaldavhxq_s32): Remove.
1969 (__arm_vrmlaldavhq_s32): Remove.
1970 (__arm_vrmlaldavhq_p_s32): Remove.
1971 (__arm_vrmlaldavhxq_p_s32): Remove.
1972 (__arm_vrmlsldavhq_p_s32): Remove.
1973 (__arm_vrmlsldavhxq_p_s32): Remove.
1974 (__arm_vrmlaldavhq_p_u32): Remove.
1975 (__arm_vrmlaldavhq): Remove.
1976 (__arm_vrmlsldavhxq): Remove.
1977 (__arm_vrmlsldavhq): Remove.
1978 (__arm_vrmlaldavhxq): Remove.
1979 (__arm_vrmlaldavhq_p): Remove.
1980 (__arm_vrmlaldavhxq_p): Remove.
1981 (__arm_vrmlsldavhq_p): Remove.
1982 (__arm_vrmlsldavhxq_p): Remove.
1984 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
1986 * config/arm/iterators.md (MVE_VRMLxLDAVxQ, MVE_VRMLxLDAVHxQ_P):
1988 (mve_insn): Add vrmlaldavh, vrmlaldavhx, vrmlsldavh, vrmlsldavhx.
1989 (supf): Add VRMLALDAVHXQ_P_S, VRMLALDAVHXQ_S, VRMLSLDAVHQ_P_S,
1990 VRMLSLDAVHQ_S, VRMLSLDAVHXQ_P_S, VRMLSLDAVHXQ_S.
1991 * config/arm/mve.md (mve_vrmlaldavhxq_sv4si)
1992 (mve_vrmlsldavhq_sv4si, mve_vrmlsldavhxq_sv4si)
1993 (mve_vrmlaldavhq_<supf>v4si): Merge into ...
1994 (@mve_<mve_insn>q_<supf>v4si): ... this.
1995 (mve_vrmlaldavhxq_p_sv4si, mve_vrmlsldavhq_p_sv4si)
1996 (mve_vrmlsldavhxq_p_sv4si, mve_vrmlaldavhq_p_<supf>v4si): Merge
1998 (@mve_<mve_insn>q_p_<supf>v4si): ... this.
2000 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
2002 * config/arm/arm-mve-builtins-base.cc (vmlaldavq, vmlaldavxq)
2003 (vmlsldavq, vmlsldavxq): New.
2004 * config/arm/arm-mve-builtins-base.def (vmlaldavq, vmlaldavxq)
2005 (vmlsldavq, vmlsldavxq): New.
2006 * config/arm/arm-mve-builtins-base.h (vmlaldavq, vmlaldavxq)
2007 (vmlsldavq, vmlsldavxq): New.
2008 * config/arm/arm_mve.h (vmlaldavq): Remove.
2009 (vmlsldavxq): Remove.
2010 (vmlsldavq): Remove.
2011 (vmlaldavxq): Remove.
2012 (vmlaldavq_p): Remove.
2013 (vmlaldavxq_p): Remove.
2014 (vmlsldavq_p): Remove.
2015 (vmlsldavxq_p): Remove.
2016 (vmlaldavq_u16): Remove.
2017 (vmlsldavxq_s16): Remove.
2018 (vmlsldavq_s16): Remove.
2019 (vmlaldavxq_s16): Remove.
2020 (vmlaldavq_s16): Remove.
2021 (vmlaldavq_u32): Remove.
2022 (vmlsldavxq_s32): Remove.
2023 (vmlsldavq_s32): Remove.
2024 (vmlaldavxq_s32): Remove.
2025 (vmlaldavq_s32): Remove.
2026 (vmlaldavq_p_s16): Remove.
2027 (vmlaldavxq_p_s16): Remove.
2028 (vmlsldavq_p_s16): Remove.
2029 (vmlsldavxq_p_s16): Remove.
2030 (vmlaldavq_p_u16): Remove.
2031 (vmlaldavq_p_s32): Remove.
2032 (vmlaldavxq_p_s32): Remove.
2033 (vmlsldavq_p_s32): Remove.
2034 (vmlsldavxq_p_s32): Remove.
2035 (vmlaldavq_p_u32): Remove.
2036 (__arm_vmlaldavq_u16): Remove.
2037 (__arm_vmlsldavxq_s16): Remove.
2038 (__arm_vmlsldavq_s16): Remove.
2039 (__arm_vmlaldavxq_s16): Remove.
2040 (__arm_vmlaldavq_s16): Remove.
2041 (__arm_vmlaldavq_u32): Remove.
2042 (__arm_vmlsldavxq_s32): Remove.
2043 (__arm_vmlsldavq_s32): Remove.
2044 (__arm_vmlaldavxq_s32): Remove.
2045 (__arm_vmlaldavq_s32): Remove.
2046 (__arm_vmlaldavq_p_s16): Remove.
2047 (__arm_vmlaldavxq_p_s16): Remove.
2048 (__arm_vmlsldavq_p_s16): Remove.
2049 (__arm_vmlsldavxq_p_s16): Remove.
2050 (__arm_vmlaldavq_p_u16): Remove.
2051 (__arm_vmlaldavq_p_s32): Remove.
2052 (__arm_vmlaldavxq_p_s32): Remove.
2053 (__arm_vmlsldavq_p_s32): Remove.
2054 (__arm_vmlsldavxq_p_s32): Remove.
2055 (__arm_vmlaldavq_p_u32): Remove.
2056 (__arm_vmlaldavq): Remove.
2057 (__arm_vmlsldavxq): Remove.
2058 (__arm_vmlsldavq): Remove.
2059 (__arm_vmlaldavxq): Remove.
2060 (__arm_vmlaldavq_p): Remove.
2061 (__arm_vmlaldavxq_p): Remove.
2062 (__arm_vmlsldavq_p): Remove.
2063 (__arm_vmlsldavxq_p): Remove.
2065 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
2067 * config/arm/iterators.md (MVE_VMLxLDAVxQ, MVE_VMLxLDAVxQ_P): New.
2068 (mve_insn): Add vmlaldav, vmlaldavx, vmlsldav, vmlsldavx.
2069 (supf): Add VMLALDAVXQ_S, VMLSLDAVQ_S, VMLSLDAVXQ_S,
2070 VMLALDAVXQ_P_S, VMLSLDAVQ_P_S, VMLSLDAVXQ_P_S.
2071 * config/arm/mve.md (mve_vmlaldavq_<supf><mode>)
2072 (mve_vmlaldavxq_s<mode>, mve_vmlsldavq_s<mode>)
2073 (mve_vmlsldavxq_s<mode>): Merge into ...
2074 (@mve_<mve_insn>q_<supf><mode>): ... this.
2075 (mve_vmlaldavq_p_<supf><mode>, mve_vmlaldavxq_p_s<mode>)
2076 (mve_vmlsldavq_p_s<mode>, mve_vmlsldavxq_p_s<mode>): Merge into
2078 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
2080 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
2082 * config/arm/arm-mve-builtins-shapes.cc (binary_acc_int64): New.
2083 * config/arm/arm-mve-builtins-shapes.h (binary_acc_int64): New.
2085 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
2087 * config/arm/arm-mve-builtins-base.cc (vabavq): New.
2088 * config/arm/arm-mve-builtins-base.def (vabavq): New.
2089 * config/arm/arm-mve-builtins-base.h (vabavq): New.
2090 * config/arm/arm_mve.h (vabavq): Remove.
2092 (vabavq_s8): Remove.
2093 (vabavq_s16): Remove.
2094 (vabavq_s32): Remove.
2095 (vabavq_u8): Remove.
2096 (vabavq_u16): Remove.
2097 (vabavq_u32): Remove.
2098 (vabavq_p_s8): Remove.
2099 (vabavq_p_u8): Remove.
2100 (vabavq_p_s16): Remove.
2101 (vabavq_p_u16): Remove.
2102 (vabavq_p_s32): Remove.
2103 (vabavq_p_u32): Remove.
2104 (__arm_vabavq_s8): Remove.
2105 (__arm_vabavq_s16): Remove.
2106 (__arm_vabavq_s32): Remove.
2107 (__arm_vabavq_u8): Remove.
2108 (__arm_vabavq_u16): Remove.
2109 (__arm_vabavq_u32): Remove.
2110 (__arm_vabavq_p_s8): Remove.
2111 (__arm_vabavq_p_u8): Remove.
2112 (__arm_vabavq_p_s16): Remove.
2113 (__arm_vabavq_p_u16): Remove.
2114 (__arm_vabavq_p_s32): Remove.
2115 (__arm_vabavq_p_u32): Remove.
2116 (__arm_vabavq): Remove.
2117 (__arm_vabavq_p): Remove.
2119 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
2121 * config/arm/iterators.md (mve_insn): Add vabav.
2122 * config/arm/mve.md (mve_vabavq_<supf><mode>): Rename into ...
2123 (@mve_<mve_insn>q_<supf><mode>): ... this,.
2124 (mve_vabavq_p_<supf><mode>): Rename into ...
2125 (@mve_<mve_insn>q_p_<supf><mode>): ... this,.
2127 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
2129 * config/arm/arm-mve-builtins-base.cc (vmladavaxq, vmladavaq)
2130 (vmlsdavaq, vmlsdavaxq): New.
2131 * config/arm/arm-mve-builtins-base.def (vmladavaxq, vmladavaq)
2132 (vmlsdavaq, vmlsdavaxq): New.
2133 * config/arm/arm-mve-builtins-base.h (vmladavaxq, vmladavaq)
2134 (vmlsdavaq, vmlsdavaxq): New.
2135 * config/arm/arm_mve.h (vmladavaq): Remove.
2136 (vmlsdavaxq): Remove.
2137 (vmlsdavaq): Remove.
2138 (vmladavaxq): Remove.
2139 (vmladavaq_p): Remove.
2140 (vmladavaxq_p): Remove.
2141 (vmlsdavaq_p): Remove.
2142 (vmlsdavaxq_p): Remove.
2143 (vmladavaq_u8): Remove.
2144 (vmlsdavaxq_s8): Remove.
2145 (vmlsdavaq_s8): Remove.
2146 (vmladavaxq_s8): Remove.
2147 (vmladavaq_s8): Remove.
2148 (vmladavaq_u16): Remove.
2149 (vmlsdavaxq_s16): Remove.
2150 (vmlsdavaq_s16): Remove.
2151 (vmladavaxq_s16): Remove.
2152 (vmladavaq_s16): Remove.
2153 (vmladavaq_u32): Remove.
2154 (vmlsdavaxq_s32): Remove.
2155 (vmlsdavaq_s32): Remove.
2156 (vmladavaxq_s32): Remove.
2157 (vmladavaq_s32): Remove.
2158 (vmladavaq_p_s8): Remove.
2159 (vmladavaq_p_s32): Remove.
2160 (vmladavaq_p_s16): Remove.
2161 (vmladavaq_p_u8): Remove.
2162 (vmladavaq_p_u32): Remove.
2163 (vmladavaq_p_u16): Remove.
2164 (vmladavaxq_p_s8): Remove.
2165 (vmladavaxq_p_s32): Remove.
2166 (vmladavaxq_p_s16): Remove.
2167 (vmlsdavaq_p_s8): Remove.
2168 (vmlsdavaq_p_s32): Remove.
2169 (vmlsdavaq_p_s16): Remove.
2170 (vmlsdavaxq_p_s8): Remove.
2171 (vmlsdavaxq_p_s32): Remove.
2172 (vmlsdavaxq_p_s16): Remove.
2173 (__arm_vmladavaq_u8): Remove.
2174 (__arm_vmlsdavaxq_s8): Remove.
2175 (__arm_vmlsdavaq_s8): Remove.
2176 (__arm_vmladavaxq_s8): Remove.
2177 (__arm_vmladavaq_s8): Remove.
2178 (__arm_vmladavaq_u16): Remove.
2179 (__arm_vmlsdavaxq_s16): Remove.
2180 (__arm_vmlsdavaq_s16): Remove.
2181 (__arm_vmladavaxq_s16): Remove.
2182 (__arm_vmladavaq_s16): Remove.
2183 (__arm_vmladavaq_u32): Remove.
2184 (__arm_vmlsdavaxq_s32): Remove.
2185 (__arm_vmlsdavaq_s32): Remove.
2186 (__arm_vmladavaxq_s32): Remove.
2187 (__arm_vmladavaq_s32): Remove.
2188 (__arm_vmladavaq_p_s8): Remove.
2189 (__arm_vmladavaq_p_s32): Remove.
2190 (__arm_vmladavaq_p_s16): Remove.
2191 (__arm_vmladavaq_p_u8): Remove.
2192 (__arm_vmladavaq_p_u32): Remove.
2193 (__arm_vmladavaq_p_u16): Remove.
2194 (__arm_vmladavaxq_p_s8): Remove.
2195 (__arm_vmladavaxq_p_s32): Remove.
2196 (__arm_vmladavaxq_p_s16): Remove.
2197 (__arm_vmlsdavaq_p_s8): Remove.
2198 (__arm_vmlsdavaq_p_s32): Remove.
2199 (__arm_vmlsdavaq_p_s16): Remove.
2200 (__arm_vmlsdavaxq_p_s8): Remove.
2201 (__arm_vmlsdavaxq_p_s32): Remove.
2202 (__arm_vmlsdavaxq_p_s16): Remove.
2203 (__arm_vmladavaq): Remove.
2204 (__arm_vmlsdavaxq): Remove.
2205 (__arm_vmlsdavaq): Remove.
2206 (__arm_vmladavaxq): Remove.
2207 (__arm_vmladavaq_p): Remove.
2208 (__arm_vmladavaxq_p): Remove.
2209 (__arm_vmlsdavaq_p): Remove.
2210 (__arm_vmlsdavaxq_p): Remove.
2212 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
2214 * config/arm/arm-mve-builtins-shapes.cc (binary_acca_int32): New.
2215 * config/arm/arm-mve-builtins-shapes.h (binary_acca_int32): New.
2217 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
2219 * config/arm/arm-mve-builtins-base.cc (vmladavq, vmladavxq)
2220 (vmlsdavq, vmlsdavxq): New.
2221 * config/arm/arm-mve-builtins-base.def (vmladavq, vmladavxq)
2222 (vmlsdavq, vmlsdavxq): New.
2223 * config/arm/arm-mve-builtins-base.h (vmladavq, vmladavxq)
2224 (vmlsdavq, vmlsdavxq): New.
2225 * config/arm/arm_mve.h (vmladavq): Remove.
2226 (vmlsdavxq): Remove.
2228 (vmladavxq): Remove.
2229 (vmladavq_p): Remove.
2230 (vmlsdavxq_p): Remove.
2231 (vmlsdavq_p): Remove.
2232 (vmladavxq_p): Remove.
2233 (vmladavq_u8): Remove.
2234 (vmlsdavxq_s8): Remove.
2235 (vmlsdavq_s8): Remove.
2236 (vmladavxq_s8): Remove.
2237 (vmladavq_s8): Remove.
2238 (vmladavq_u16): Remove.
2239 (vmlsdavxq_s16): Remove.
2240 (vmlsdavq_s16): Remove.
2241 (vmladavxq_s16): Remove.
2242 (vmladavq_s16): Remove.
2243 (vmladavq_u32): Remove.
2244 (vmlsdavxq_s32): Remove.
2245 (vmlsdavq_s32): Remove.
2246 (vmladavxq_s32): Remove.
2247 (vmladavq_s32): Remove.
2248 (vmladavq_p_u8): Remove.
2249 (vmlsdavxq_p_s8): Remove.
2250 (vmlsdavq_p_s8): Remove.
2251 (vmladavxq_p_s8): Remove.
2252 (vmladavq_p_s8): Remove.
2253 (vmladavq_p_u16): Remove.
2254 (vmlsdavxq_p_s16): Remove.
2255 (vmlsdavq_p_s16): Remove.
2256 (vmladavxq_p_s16): Remove.
2257 (vmladavq_p_s16): Remove.
2258 (vmladavq_p_u32): Remove.
2259 (vmlsdavxq_p_s32): Remove.
2260 (vmlsdavq_p_s32): Remove.
2261 (vmladavxq_p_s32): Remove.
2262 (vmladavq_p_s32): Remove.
2263 (__arm_vmladavq_u8): Remove.
2264 (__arm_vmlsdavxq_s8): Remove.
2265 (__arm_vmlsdavq_s8): Remove.
2266 (__arm_vmladavxq_s8): Remove.
2267 (__arm_vmladavq_s8): Remove.
2268 (__arm_vmladavq_u16): Remove.
2269 (__arm_vmlsdavxq_s16): Remove.
2270 (__arm_vmlsdavq_s16): Remove.
2271 (__arm_vmladavxq_s16): Remove.
2272 (__arm_vmladavq_s16): Remove.
2273 (__arm_vmladavq_u32): Remove.
2274 (__arm_vmlsdavxq_s32): Remove.
2275 (__arm_vmlsdavq_s32): Remove.
2276 (__arm_vmladavxq_s32): Remove.
2277 (__arm_vmladavq_s32): Remove.
2278 (__arm_vmladavq_p_u8): Remove.
2279 (__arm_vmlsdavxq_p_s8): Remove.
2280 (__arm_vmlsdavq_p_s8): Remove.
2281 (__arm_vmladavxq_p_s8): Remove.
2282 (__arm_vmladavq_p_s8): Remove.
2283 (__arm_vmladavq_p_u16): Remove.
2284 (__arm_vmlsdavxq_p_s16): Remove.
2285 (__arm_vmlsdavq_p_s16): Remove.
2286 (__arm_vmladavxq_p_s16): Remove.
2287 (__arm_vmladavq_p_s16): Remove.
2288 (__arm_vmladavq_p_u32): Remove.
2289 (__arm_vmlsdavxq_p_s32): Remove.
2290 (__arm_vmlsdavq_p_s32): Remove.
2291 (__arm_vmladavxq_p_s32): Remove.
2292 (__arm_vmladavq_p_s32): Remove.
2293 (__arm_vmladavq): Remove.
2294 (__arm_vmlsdavxq): Remove.
2295 (__arm_vmlsdavq): Remove.
2296 (__arm_vmladavxq): Remove.
2297 (__arm_vmladavq_p): Remove.
2298 (__arm_vmlsdavxq_p): Remove.
2299 (__arm_vmlsdavq_p): Remove.
2300 (__arm_vmladavxq_p): Remove.
2302 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
2304 * config/arm/iterators.md (MVE_VMLxDAVQ, MVE_VMLxDAVQ_P)
2305 (MVE_VMLxDAVAQ, MVE_VMLxDAVAQ_P): New.
2306 (mve_insn): Add vmladava, vmladavax, vmladav, vmladavx, vmlsdava,
2307 vmlsdavax, vmlsdav, vmlsdavx.
2308 (supf): Add VMLADAVAXQ_P_S, VMLADAVAXQ_S, VMLADAVXQ_P_S,
2309 VMLADAVXQ_S, VMLSDAVAQ_P_S, VMLSDAVAQ_S, VMLSDAVAXQ_P_S,
2310 VMLSDAVAXQ_S, VMLSDAVQ_P_S, VMLSDAVQ_S, VMLSDAVXQ_P_S,
2312 * config/arm/mve.md (mve_vmladavq_<supf><mode>)
2313 (mve_vmladavxq_s<mode>, mve_vmlsdavq_s<mode>)
2314 (mve_vmlsdavxq_s<mode>): Merge into ...
2315 (@mve_<mve_insn>q_<supf><mode>): ... this.
2316 (mve_vmlsdavaq_s<mode>, mve_vmladavaxq_s<mode>)
2317 (mve_vmlsdavaxq_s<mode>, mve_vmladavaq_<supf><mode>): Merge into
2319 (@mve_<mve_insn>q_<supf><mode>): ... this.
2320 (mve_vmladavq_p_<supf><mode>, mve_vmladavxq_p_s<mode>)
2321 (mve_vmlsdavq_p_s<mode>, mve_vmlsdavxq_p_s<mode>): Merge into ...
2322 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
2323 (mve_vmladavaq_p_<supf><mode>, mve_vmladavaxq_p_s<mode>)
2324 (mve_vmlsdavaq_p_s<mode>, mve_vmlsdavaxq_p_s<mode>): Merge into
2326 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
2328 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
2330 * config/arm/arm-mve-builtins-shapes.cc (binary_acc_int32): New.
2331 * config/arm/arm-mve-builtins-shapes.h (binary_acc_int32): New.
2333 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
2335 * config/arm/arm-mve-builtins-base.cc (vaddlvaq): New.
2336 * config/arm/arm-mve-builtins-base.def (vaddlvaq): New.
2337 * config/arm/arm-mve-builtins-base.h (vaddlvaq): New.
2338 * config/arm/arm_mve.h (vaddlvaq): Remove.
2339 (vaddlvaq_p): Remove.
2340 (vaddlvaq_u32): Remove.
2341 (vaddlvaq_s32): Remove.
2342 (vaddlvaq_p_s32): Remove.
2343 (vaddlvaq_p_u32): Remove.
2344 (__arm_vaddlvaq_u32): Remove.
2345 (__arm_vaddlvaq_s32): Remove.
2346 (__arm_vaddlvaq_p_s32): Remove.
2347 (__arm_vaddlvaq_p_u32): Remove.
2348 (__arm_vaddlvaq): Remove.
2349 (__arm_vaddlvaq_p): Remove.
2351 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
2353 * config/arm/arm-mve-builtins-shapes.cc (unary_widen_acc): New.
2354 * config/arm/arm-mve-builtins-shapes.h (unary_widen_acc): New.
2356 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
2358 * config/arm/iterators.md (mve_insn): Add vaddlva.
2359 * config/arm/mve.md (mve_vaddlvaq_<supf>v4si): Rename into ...
2360 (@mve_<mve_insn>q_<supf>v4si): ... this.
2361 (mve_vaddlvaq_p_<supf>v4si): Rename into ...
2362 (@mve_<mve_insn>q_p_<supf>v4si): ... this.
2364 2023-05-11 Uros Bizjak <ubizjak@gmail.com>
2367 * config/i386/i386.cc (ix86_widen_mult_cost):
2368 Handle V4HImode and V2SImode.
2370 2023-05-11 Andrew Pinski <apinski@marvell.com>
2372 * tree-ssa-dce.cc (simple_dce_from_worklist): For ssa names
2373 defined by a phi node with more than one uses, allow for the
2374 only uses are in that same defining statement.
2376 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
2378 * config/riscv/riscv.cc (riscv_const_insns): Add permissible
2381 2023-05-11 Pan Li <pan2.li@intel.com>
2383 * config/riscv/vector.md: Add comments for simplifying to vmset.
2385 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
2387 * config/riscv/autovec.md (<optab><mode>3): Add scalar shift
2389 (v<optab><mode>3): Add vector shift pattern.
2390 * config/riscv/vector-iterators.md: New iterator.
2392 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
2394 * config/riscv/autovec.md: Use renamed functions.
2395 * config/riscv/riscv-protos.h (emit_vlmax_op): Rename.
2396 (emit_vlmax_reg_op): To this.
2397 (emit_nonvlmax_op): Rename.
2398 (emit_len_op): To this.
2399 (emit_nonvlmax_binop): Rename.
2400 (emit_len_binop): To this.
2401 * config/riscv/riscv-v.cc (emit_pred_op): Add default parameter.
2402 (emit_pred_binop): Remove vlmax_p.
2403 (emit_vlmax_op): Rename.
2404 (emit_vlmax_reg_op): To this.
2405 (emit_nonvlmax_op): Rename.
2406 (emit_len_op): To this.
2407 (emit_nonvlmax_binop): Rename.
2408 (emit_len_binop): To this.
2409 (sew64_scalar_helper): Use renamed functions.
2410 (expand_tuple_move): Use renamed functions.
2411 * config/riscv/riscv.cc (vector_zero_call_used_regs): Use
2413 * config/riscv/vector.md: Use renamed functions.
2415 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
2416 Michael Collison <collison@rivosinc.com>
2418 * config/riscv/autovec.md (<optab><mode>3): Add integer binops.
2419 * config/riscv/riscv-protos.h (emit_nonvlmax_binop): Declare.
2420 * config/riscv/riscv-v.cc (emit_pred_op): New function.
2421 (set_expander_dest_and_mask): New function.
2422 (emit_pred_binop): New function.
2423 (emit_nonvlmax_binop): New function.
2425 2023-05-11 Pan Li <pan2.li@intel.com>
2427 * cfgloopmanip.cc (create_empty_loop_on_edge): Add PLUS_EXPR.
2428 * gimple-loop-interchange.cc
2429 (tree_loop_interchange::map_inductions_to_loop): Ditto.
2430 * tree-ssa-loop-ivcanon.cc (create_canonical_iv): Ditto.
2431 * tree-ssa-loop-ivopts.cc (create_new_iv): Ditto.
2432 * tree-ssa-loop-manip.cc (create_iv): Ditto.
2433 (tree_transform_and_unroll_loop): Ditto.
2434 (canonicalize_loop_ivs): Ditto.
2435 * tree-ssa-loop-manip.h (create_iv): Ditto.
2436 * tree-vect-data-refs.cc (vect_create_data_ref_ptr): Ditto.
2437 * tree-vect-loop-manip.cc (vect_set_loop_controls_directly):
2439 (vect_set_loop_condition_normal): Ditto.
2440 * tree-vect-loop.cc (vect_create_epilog_for_reduction): Ditto.
2441 * tree-vect-stmts.cc (vectorizable_store): Ditto.
2442 (vectorizable_load): Ditto.
2444 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
2446 * config/arm/arm-mve-builtins-base.cc (vmovlbq, vmovltq): New.
2447 * config/arm/arm-mve-builtins-base.def (vmovlbq, vmovltq): New.
2448 * config/arm/arm-mve-builtins-base.h (vmovlbq, vmovltq): New.
2449 * config/arm/arm_mve.h (vmovlbq): Remove.
2451 (vmovlbq_m): Remove.
2452 (vmovltq_m): Remove.
2453 (vmovlbq_x): Remove.
2454 (vmovltq_x): Remove.
2455 (vmovlbq_s8): Remove.
2456 (vmovlbq_s16): Remove.
2457 (vmovltq_s8): Remove.
2458 (vmovltq_s16): Remove.
2459 (vmovltq_u8): Remove.
2460 (vmovltq_u16): Remove.
2461 (vmovlbq_u8): Remove.
2462 (vmovlbq_u16): Remove.
2463 (vmovlbq_m_s8): Remove.
2464 (vmovltq_m_s8): Remove.
2465 (vmovlbq_m_u8): Remove.
2466 (vmovltq_m_u8): Remove.
2467 (vmovlbq_m_s16): Remove.
2468 (vmovltq_m_s16): Remove.
2469 (vmovlbq_m_u16): Remove.
2470 (vmovltq_m_u16): Remove.
2471 (vmovlbq_x_s8): Remove.
2472 (vmovlbq_x_s16): Remove.
2473 (vmovlbq_x_u8): Remove.
2474 (vmovlbq_x_u16): Remove.
2475 (vmovltq_x_s8): Remove.
2476 (vmovltq_x_s16): Remove.
2477 (vmovltq_x_u8): Remove.
2478 (vmovltq_x_u16): Remove.
2479 (__arm_vmovlbq_s8): Remove.
2480 (__arm_vmovlbq_s16): Remove.
2481 (__arm_vmovltq_s8): Remove.
2482 (__arm_vmovltq_s16): Remove.
2483 (__arm_vmovltq_u8): Remove.
2484 (__arm_vmovltq_u16): Remove.
2485 (__arm_vmovlbq_u8): Remove.
2486 (__arm_vmovlbq_u16): Remove.
2487 (__arm_vmovlbq_m_s8): Remove.
2488 (__arm_vmovltq_m_s8): Remove.
2489 (__arm_vmovlbq_m_u8): Remove.
2490 (__arm_vmovltq_m_u8): Remove.
2491 (__arm_vmovlbq_m_s16): Remove.
2492 (__arm_vmovltq_m_s16): Remove.
2493 (__arm_vmovlbq_m_u16): Remove.
2494 (__arm_vmovltq_m_u16): Remove.
2495 (__arm_vmovlbq_x_s8): Remove.
2496 (__arm_vmovlbq_x_s16): Remove.
2497 (__arm_vmovlbq_x_u8): Remove.
2498 (__arm_vmovlbq_x_u16): Remove.
2499 (__arm_vmovltq_x_s8): Remove.
2500 (__arm_vmovltq_x_s16): Remove.
2501 (__arm_vmovltq_x_u8): Remove.
2502 (__arm_vmovltq_x_u16): Remove.
2503 (__arm_vmovlbq): Remove.
2504 (__arm_vmovltq): Remove.
2505 (__arm_vmovlbq_m): Remove.
2506 (__arm_vmovltq_m): Remove.
2507 (__arm_vmovlbq_x): Remove.
2508 (__arm_vmovltq_x): Remove.
2510 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
2512 * config/arm/arm-mve-builtins-shapes.cc (unary_widen): New.
2513 * config/arm/arm-mve-builtins-shapes.h (unary_widen): New.
2515 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
2517 * config/arm/iterators.md (mve_insn): Add vmovlb, vmovlt.
2518 (VMOVLBQ, VMOVLTQ): Merge into ...
2519 (VMOVLxQ): ... this.
2520 (VMOVLTQ_M, VMOVLBQ_M): Merge into ...
2521 (VMOVLxQ_M): ... this.
2522 * config/arm/mve.md (mve_vmovltq_<supf><mode>)
2523 (mve_vmovlbq_<supf><mode>): Merge into ...
2524 (@mve_<mve_insn>q_<supf><mode>): ... this.
2525 (mve_vmovlbq_m_<supf><mode>, mve_vmovltq_m_<supf><mode>): Merge
2527 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
2529 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
2531 * config/arm/arm-mve-builtins-base.cc (vaddlvq): New.
2532 * config/arm/arm-mve-builtins-base.def (vaddlvq): New.
2533 * config/arm/arm-mve-builtins-base.h (vaddlvq): New.
2534 * config/arm/arm-mve-builtins-functions.h
2535 (unspec_mve_function_exact_insn_pred_p): Handle vaddlvq.
2536 * config/arm/arm_mve.h (vaddlvq): Remove.
2537 (vaddlvq_p): Remove.
2538 (vaddlvq_s32): Remove.
2539 (vaddlvq_u32): Remove.
2540 (vaddlvq_p_s32): Remove.
2541 (vaddlvq_p_u32): Remove.
2542 (__arm_vaddlvq_s32): Remove.
2543 (__arm_vaddlvq_u32): Remove.
2544 (__arm_vaddlvq_p_s32): Remove.
2545 (__arm_vaddlvq_p_u32): Remove.
2546 (__arm_vaddlvq): Remove.
2547 (__arm_vaddlvq_p): Remove.
2549 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
2551 * config/arm/iterators.md (mve_insn): Add vaddlv.
2552 * config/arm/mve.md (mve_vaddlvq_<supf>v4si): Rename into ...
2553 (@mve_<mve_insn>q_<supf>v4si): ... this.
2554 (mve_vaddlvq_p_<supf>v4si): Rename into ...
2555 (@mve_<mve_insn>q_p_<supf>v4si): ... this.
2557 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
2559 * config/arm/arm-mve-builtins-shapes.cc (unary_acc): New.
2560 * config/arm/arm-mve-builtins-shapes.h (unary_acc): New.
2562 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
2564 * config/arm/arm-mve-builtins-base.cc (vaddvaq): New.
2565 * config/arm/arm-mve-builtins-base.def (vaddvaq): New.
2566 * config/arm/arm-mve-builtins-base.h (vaddvaq): New.
2567 * config/arm/arm_mve.h (vaddvaq): Remove.
2568 (vaddvaq_p): Remove.
2569 (vaddvaq_u8): Remove.
2570 (vaddvaq_s8): Remove.
2571 (vaddvaq_u16): Remove.
2572 (vaddvaq_s16): Remove.
2573 (vaddvaq_u32): Remove.
2574 (vaddvaq_s32): Remove.
2575 (vaddvaq_p_u8): Remove.
2576 (vaddvaq_p_s8): Remove.
2577 (vaddvaq_p_u16): Remove.
2578 (vaddvaq_p_s16): Remove.
2579 (vaddvaq_p_u32): Remove.
2580 (vaddvaq_p_s32): Remove.
2581 (__arm_vaddvaq_u8): Remove.
2582 (__arm_vaddvaq_s8): Remove.
2583 (__arm_vaddvaq_u16): Remove.
2584 (__arm_vaddvaq_s16): Remove.
2585 (__arm_vaddvaq_u32): Remove.
2586 (__arm_vaddvaq_s32): Remove.
2587 (__arm_vaddvaq_p_u8): Remove.
2588 (__arm_vaddvaq_p_s8): Remove.
2589 (__arm_vaddvaq_p_u16): Remove.
2590 (__arm_vaddvaq_p_s16): Remove.
2591 (__arm_vaddvaq_p_u32): Remove.
2592 (__arm_vaddvaq_p_s32): Remove.
2593 (__arm_vaddvaq): Remove.
2594 (__arm_vaddvaq_p): Remove.
2596 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
2598 * config/arm/arm-mve-builtins-shapes.cc (unary_int32_acc): New.
2599 * config/arm/arm-mve-builtins-shapes.h (unary_int32_acc): New.
2601 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
2603 * config/arm/iterators.md (mve_insn): Add vaddva.
2604 * config/arm/mve.md (mve_vaddvaq_<supf><mode>): Rename into ...
2605 (@mve_<mve_insn>q_<supf><mode>): ... this.
2606 (mve_vaddvaq_p_<supf><mode>): Rename into ...
2607 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
2609 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
2611 * config/arm/arm-mve-builtins-base.cc (vaddvq): New.
2612 * config/arm/arm-mve-builtins-base.def (vaddvq): New.
2613 * config/arm/arm-mve-builtins-base.h (vaddvq): New.
2614 * config/arm/arm_mve.h (vaddvq): Remove.
2616 (vaddvq_s8): Remove.
2617 (vaddvq_s16): Remove.
2618 (vaddvq_s32): Remove.
2619 (vaddvq_u8): Remove.
2620 (vaddvq_u16): Remove.
2621 (vaddvq_u32): Remove.
2622 (vaddvq_p_u8): Remove.
2623 (vaddvq_p_s8): Remove.
2624 (vaddvq_p_u16): Remove.
2625 (vaddvq_p_s16): Remove.
2626 (vaddvq_p_u32): Remove.
2627 (vaddvq_p_s32): Remove.
2628 (__arm_vaddvq_s8): Remove.
2629 (__arm_vaddvq_s16): Remove.
2630 (__arm_vaddvq_s32): Remove.
2631 (__arm_vaddvq_u8): Remove.
2632 (__arm_vaddvq_u16): Remove.
2633 (__arm_vaddvq_u32): Remove.
2634 (__arm_vaddvq_p_u8): Remove.
2635 (__arm_vaddvq_p_s8): Remove.
2636 (__arm_vaddvq_p_u16): Remove.
2637 (__arm_vaddvq_p_s16): Remove.
2638 (__arm_vaddvq_p_u32): Remove.
2639 (__arm_vaddvq_p_s32): Remove.
2640 (__arm_vaddvq): Remove.
2641 (__arm_vaddvq_p): Remove.
2643 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
2645 * config/arm/arm-mve-builtins-shapes.cc (unary_int32): New.
2646 * config/arm/arm-mve-builtins-shapes.h (unary_int32): New.
2648 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
2650 * config/arm/iterators.md (mve_insn): Add vaddv.
2651 * config/arm/mve.md (@mve_vaddvq_<supf><mode>): Rename into ...
2652 (@mve_<mve_insn>q_<supf><mode>): ... this.
2653 (mve_vaddvq_p_<supf><mode>): Rename into ...
2654 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
2655 * config/arm/vec-common.md: Use gen_mve_q instead of
2658 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
2660 * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N): New.
2662 * config/arm/arm-mve-builtins-base.def (vdupq): New.
2663 * config/arm/arm-mve-builtins-base.h: (vdupq): New.
2664 * config/arm/arm_mve.h (vdupq_n): Remove.
2666 (vdupq_n_f16): Remove.
2667 (vdupq_n_f32): Remove.
2668 (vdupq_n_s8): Remove.
2669 (vdupq_n_s16): Remove.
2670 (vdupq_n_s32): Remove.
2671 (vdupq_n_u8): Remove.
2672 (vdupq_n_u16): Remove.
2673 (vdupq_n_u32): Remove.
2674 (vdupq_m_n_u8): Remove.
2675 (vdupq_m_n_s8): Remove.
2676 (vdupq_m_n_u16): Remove.
2677 (vdupq_m_n_s16): Remove.
2678 (vdupq_m_n_u32): Remove.
2679 (vdupq_m_n_s32): Remove.
2680 (vdupq_m_n_f16): Remove.
2681 (vdupq_m_n_f32): Remove.
2682 (vdupq_x_n_s8): Remove.
2683 (vdupq_x_n_s16): Remove.
2684 (vdupq_x_n_s32): Remove.
2685 (vdupq_x_n_u8): Remove.
2686 (vdupq_x_n_u16): Remove.
2687 (vdupq_x_n_u32): Remove.
2688 (vdupq_x_n_f16): Remove.
2689 (vdupq_x_n_f32): Remove.
2690 (__arm_vdupq_n_s8): Remove.
2691 (__arm_vdupq_n_s16): Remove.
2692 (__arm_vdupq_n_s32): Remove.
2693 (__arm_vdupq_n_u8): Remove.
2694 (__arm_vdupq_n_u16): Remove.
2695 (__arm_vdupq_n_u32): Remove.
2696 (__arm_vdupq_m_n_u8): Remove.
2697 (__arm_vdupq_m_n_s8): Remove.
2698 (__arm_vdupq_m_n_u16): Remove.
2699 (__arm_vdupq_m_n_s16): Remove.
2700 (__arm_vdupq_m_n_u32): Remove.
2701 (__arm_vdupq_m_n_s32): Remove.
2702 (__arm_vdupq_x_n_s8): Remove.
2703 (__arm_vdupq_x_n_s16): Remove.
2704 (__arm_vdupq_x_n_s32): Remove.
2705 (__arm_vdupq_x_n_u8): Remove.
2706 (__arm_vdupq_x_n_u16): Remove.
2707 (__arm_vdupq_x_n_u32): Remove.
2708 (__arm_vdupq_n_f16): Remove.
2709 (__arm_vdupq_n_f32): Remove.
2710 (__arm_vdupq_m_n_f16): Remove.
2711 (__arm_vdupq_m_n_f32): Remove.
2712 (__arm_vdupq_x_n_f16): Remove.
2713 (__arm_vdupq_x_n_f32): Remove.
2714 (__arm_vdupq_n): Remove.
2715 (__arm_vdupq_m): Remove.
2717 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
2719 * config/arm/arm-mve-builtins-shapes.cc (unary_n): New.
2720 * config/arm/arm-mve-builtins-shapes.h (unary_n): New.
2722 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
2724 * config/arm/iterators.md (MVE_FP_M_N_VDUPQ_ONLY)
2725 (MVE_FP_N_VDUPQ_ONLY): New.
2726 (mve_insn): Add vdupq.
2727 * config/arm/mve.md (mve_vdupq_n_f<mode>): Rename into ...
2728 (@mve_<mve_insn>q_n_f<mode>): ... this.
2729 (mve_vdupq_n_<supf><mode>): Rename into ...
2730 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
2731 (mve_vdupq_m_n_<supf><mode>): Rename into ...
2732 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
2733 (mve_vdupq_m_n_f<mode>): Rename into ...
2734 (@mve_<mve_insn>q_m_n_f<mode>): ... this.
2736 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
2738 * config/arm/arm-mve-builtins-base.cc (vrev16q, vrev32q, vrev64q):
2740 * config/arm/arm-mve-builtins-base.def (vrev16q, vrev32q)
2742 * config/arm/arm-mve-builtins-base.h (vrev16q, vrev32q)
2744 * config/arm/arm_mve.h (vrev16q): Remove.
2747 (vrev64q_m): Remove.
2748 (vrev16q_m): Remove.
2749 (vrev32q_m): Remove.
2750 (vrev16q_x): Remove.
2751 (vrev32q_x): Remove.
2752 (vrev64q_x): Remove.
2753 (vrev64q_f16): Remove.
2754 (vrev64q_f32): Remove.
2755 (vrev32q_f16): Remove.
2756 (vrev16q_s8): Remove.
2757 (vrev32q_s8): Remove.
2758 (vrev32q_s16): Remove.
2759 (vrev64q_s8): Remove.
2760 (vrev64q_s16): Remove.
2761 (vrev64q_s32): Remove.
2762 (vrev64q_u8): Remove.
2763 (vrev64q_u16): Remove.
2764 (vrev64q_u32): Remove.
2765 (vrev32q_u8): Remove.
2766 (vrev32q_u16): Remove.
2767 (vrev16q_u8): Remove.
2768 (vrev64q_m_u8): Remove.
2769 (vrev64q_m_s8): Remove.
2770 (vrev64q_m_u16): Remove.
2771 (vrev64q_m_s16): Remove.
2772 (vrev64q_m_u32): Remove.
2773 (vrev64q_m_s32): Remove.
2774 (vrev16q_m_s8): Remove.
2775 (vrev32q_m_f16): Remove.
2776 (vrev16q_m_u8): Remove.
2777 (vrev32q_m_s8): Remove.
2778 (vrev64q_m_f16): Remove.
2779 (vrev32q_m_u8): Remove.
2780 (vrev32q_m_s16): Remove.
2781 (vrev64q_m_f32): Remove.
2782 (vrev32q_m_u16): Remove.
2783 (vrev16q_x_s8): Remove.
2784 (vrev16q_x_u8): Remove.
2785 (vrev32q_x_s8): Remove.
2786 (vrev32q_x_s16): Remove.
2787 (vrev32q_x_u8): Remove.
2788 (vrev32q_x_u16): Remove.
2789 (vrev64q_x_s8): Remove.
2790 (vrev64q_x_s16): Remove.
2791 (vrev64q_x_s32): Remove.
2792 (vrev64q_x_u8): Remove.
2793 (vrev64q_x_u16): Remove.
2794 (vrev64q_x_u32): Remove.
2795 (vrev32q_x_f16): Remove.
2796 (vrev64q_x_f16): Remove.
2797 (vrev64q_x_f32): Remove.
2798 (__arm_vrev16q_s8): Remove.
2799 (__arm_vrev32q_s8): Remove.
2800 (__arm_vrev32q_s16): Remove.
2801 (__arm_vrev64q_s8): Remove.
2802 (__arm_vrev64q_s16): Remove.
2803 (__arm_vrev64q_s32): Remove.
2804 (__arm_vrev64q_u8): Remove.
2805 (__arm_vrev64q_u16): Remove.
2806 (__arm_vrev64q_u32): Remove.
2807 (__arm_vrev32q_u8): Remove.
2808 (__arm_vrev32q_u16): Remove.
2809 (__arm_vrev16q_u8): Remove.
2810 (__arm_vrev64q_m_u8): Remove.
2811 (__arm_vrev64q_m_s8): Remove.
2812 (__arm_vrev64q_m_u16): Remove.
2813 (__arm_vrev64q_m_s16): Remove.
2814 (__arm_vrev64q_m_u32): Remove.
2815 (__arm_vrev64q_m_s32): Remove.
2816 (__arm_vrev16q_m_s8): Remove.
2817 (__arm_vrev16q_m_u8): Remove.
2818 (__arm_vrev32q_m_s8): Remove.
2819 (__arm_vrev32q_m_u8): Remove.
2820 (__arm_vrev32q_m_s16): Remove.
2821 (__arm_vrev32q_m_u16): Remove.
2822 (__arm_vrev16q_x_s8): Remove.
2823 (__arm_vrev16q_x_u8): Remove.
2824 (__arm_vrev32q_x_s8): Remove.
2825 (__arm_vrev32q_x_s16): Remove.
2826 (__arm_vrev32q_x_u8): Remove.
2827 (__arm_vrev32q_x_u16): Remove.
2828 (__arm_vrev64q_x_s8): Remove.
2829 (__arm_vrev64q_x_s16): Remove.
2830 (__arm_vrev64q_x_s32): Remove.
2831 (__arm_vrev64q_x_u8): Remove.
2832 (__arm_vrev64q_x_u16): Remove.
2833 (__arm_vrev64q_x_u32): Remove.
2834 (__arm_vrev64q_f16): Remove.
2835 (__arm_vrev64q_f32): Remove.
2836 (__arm_vrev32q_f16): Remove.
2837 (__arm_vrev32q_m_f16): Remove.
2838 (__arm_vrev64q_m_f16): Remove.
2839 (__arm_vrev64q_m_f32): Remove.
2840 (__arm_vrev32q_x_f16): Remove.
2841 (__arm_vrev64q_x_f16): Remove.
2842 (__arm_vrev64q_x_f32): Remove.
2843 (__arm_vrev16q): Remove.
2844 (__arm_vrev32q): Remove.
2845 (__arm_vrev64q): Remove.
2846 (__arm_vrev64q_m): Remove.
2847 (__arm_vrev16q_m): Remove.
2848 (__arm_vrev32q_m): Remove.
2849 (__arm_vrev16q_x): Remove.
2850 (__arm_vrev32q_x): Remove.
2851 (__arm_vrev64q_x): Remove.
2853 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
2855 * config/arm/iterators.md (MVE_V8HF, MVE_V16QI)
2856 (MVE_FP_VREV64Q_ONLY, MVE_FP_M_VREV64Q_ONLY, MVE_FP_VREV32Q_ONLY)
2857 (MVE_FP_M_VREV32Q_ONLY): New iterators.
2858 (mve_insn): Add vrev16q, vrev32q, vrev64q.
2859 * config/arm/mve.md (mve_vrev64q_f<mode>): Rename into ...
2860 (@mve_<mve_insn>q_f<mode>): ... this
2861 (mve_vrev32q_fv8hf): Rename into @mve_<mve_insn>q_f<mode>.
2862 (mve_vrev64q_<supf><mode>): Rename into ...
2863 (@mve_<mve_insn>q_<supf><mode>): ... this.
2864 (mve_vrev32q_<supf><mode>): Rename into
2865 @mve_<mve_insn>q_<supf><mode>.
2866 (mve_vrev16q_<supf>v16qi): Rename into
2867 @mve_<mve_insn>q_<supf><mode>.
2868 (mve_vrev64q_m_<supf><mode>): Rename into
2869 @mve_<mve_insn>q_m_<supf><mode>.
2870 (mve_vrev32q_m_fv8hf): Rename into @mve_<mve_insn>q_m_f<mode>.
2871 (mve_vrev32q_m_<supf><mode>): Rename into
2872 @mve_<mve_insn>q_m_<supf><mode>.
2873 (mve_vrev64q_m_f<mode>): Rename into @mve_<mve_insn>q_m_f<mode>.
2874 (mve_vrev16q_m_<supf>v16qi): Rename into
2875 @mve_<mve_insn>q_m_<supf><mode>.
2877 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
2879 * config/arm/arm-mve-builtins-base.cc (vcmpeqq, vcmpneq, vcmpgeq)
2880 (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
2881 * config/arm/arm-mve-builtins-base.def (vcmpeqq, vcmpneq, vcmpgeq)
2882 (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
2883 * config/arm/arm-mve-builtins-base.h (vcmpeqq, vcmpneq, vcmpgeq)
2884 (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
2885 * config/arm/arm-mve-builtins-functions.h (class
2886 unspec_based_mve_function_exact_insn_vcmp): New.
2887 * config/arm/arm-mve-builtins.cc
2888 (function_instance::has_inactive_argument): Handle vcmp.
2889 * config/arm/arm_mve.h (vcmpneq): Remove.
2897 (vcmpneq_m): Remove.
2898 (vcmphiq_m): Remove.
2899 (vcmpeqq_m): Remove.
2900 (vcmpcsq_m): Remove.
2901 (vcmpcsq_m_n): Remove.
2902 (vcmpltq_m): Remove.
2903 (vcmpleq_m): Remove.
2904 (vcmpgtq_m): Remove.
2905 (vcmpgeq_m): Remove.
2906 (vcmpneq_s8): Remove.
2907 (vcmpneq_s16): Remove.
2908 (vcmpneq_s32): Remove.
2909 (vcmpneq_u8): Remove.
2910 (vcmpneq_u16): Remove.
2911 (vcmpneq_u32): Remove.
2912 (vcmpneq_n_u8): Remove.
2913 (vcmphiq_u8): Remove.
2914 (vcmphiq_n_u8): Remove.
2915 (vcmpeqq_u8): Remove.
2916 (vcmpeqq_n_u8): Remove.
2917 (vcmpcsq_u8): Remove.
2918 (vcmpcsq_n_u8): Remove.
2919 (vcmpneq_n_s8): Remove.
2920 (vcmpltq_s8): Remove.
2921 (vcmpltq_n_s8): Remove.
2922 (vcmpleq_s8): Remove.
2923 (vcmpleq_n_s8): Remove.
2924 (vcmpgtq_s8): Remove.
2925 (vcmpgtq_n_s8): Remove.
2926 (vcmpgeq_s8): Remove.
2927 (vcmpgeq_n_s8): Remove.
2928 (vcmpeqq_s8): Remove.
2929 (vcmpeqq_n_s8): Remove.
2930 (vcmpneq_n_u16): Remove.
2931 (vcmphiq_u16): Remove.
2932 (vcmphiq_n_u16): Remove.
2933 (vcmpeqq_u16): Remove.
2934 (vcmpeqq_n_u16): Remove.
2935 (vcmpcsq_u16): Remove.
2936 (vcmpcsq_n_u16): Remove.
2937 (vcmpneq_n_s16): Remove.
2938 (vcmpltq_s16): Remove.
2939 (vcmpltq_n_s16): Remove.
2940 (vcmpleq_s16): Remove.
2941 (vcmpleq_n_s16): Remove.
2942 (vcmpgtq_s16): Remove.
2943 (vcmpgtq_n_s16): Remove.
2944 (vcmpgeq_s16): Remove.
2945 (vcmpgeq_n_s16): Remove.
2946 (vcmpeqq_s16): Remove.
2947 (vcmpeqq_n_s16): Remove.
2948 (vcmpneq_n_u32): Remove.
2949 (vcmphiq_u32): Remove.
2950 (vcmphiq_n_u32): Remove.
2951 (vcmpeqq_u32): Remove.
2952 (vcmpeqq_n_u32): Remove.
2953 (vcmpcsq_u32): Remove.
2954 (vcmpcsq_n_u32): Remove.
2955 (vcmpneq_n_s32): Remove.
2956 (vcmpltq_s32): Remove.
2957 (vcmpltq_n_s32): Remove.
2958 (vcmpleq_s32): Remove.
2959 (vcmpleq_n_s32): Remove.
2960 (vcmpgtq_s32): Remove.
2961 (vcmpgtq_n_s32): Remove.
2962 (vcmpgeq_s32): Remove.
2963 (vcmpgeq_n_s32): Remove.
2964 (vcmpeqq_s32): Remove.
2965 (vcmpeqq_n_s32): Remove.
2966 (vcmpneq_n_f16): Remove.
2967 (vcmpneq_f16): Remove.
2968 (vcmpltq_n_f16): Remove.
2969 (vcmpltq_f16): Remove.
2970 (vcmpleq_n_f16): Remove.
2971 (vcmpleq_f16): Remove.
2972 (vcmpgtq_n_f16): Remove.
2973 (vcmpgtq_f16): Remove.
2974 (vcmpgeq_n_f16): Remove.
2975 (vcmpgeq_f16): Remove.
2976 (vcmpeqq_n_f16): Remove.
2977 (vcmpeqq_f16): Remove.
2978 (vcmpneq_n_f32): Remove.
2979 (vcmpneq_f32): Remove.
2980 (vcmpltq_n_f32): Remove.
2981 (vcmpltq_f32): Remove.
2982 (vcmpleq_n_f32): Remove.
2983 (vcmpleq_f32): Remove.
2984 (vcmpgtq_n_f32): Remove.
2985 (vcmpgtq_f32): Remove.
2986 (vcmpgeq_n_f32): Remove.
2987 (vcmpgeq_f32): Remove.
2988 (vcmpeqq_n_f32): Remove.
2989 (vcmpeqq_f32): Remove.
2990 (vcmpeqq_m_f16): Remove.
2991 (vcmpeqq_m_f32): Remove.
2992 (vcmpneq_m_u8): Remove.
2993 (vcmpneq_m_n_u8): Remove.
2994 (vcmphiq_m_u8): Remove.
2995 (vcmphiq_m_n_u8): Remove.
2996 (vcmpeqq_m_u8): Remove.
2997 (vcmpeqq_m_n_u8): Remove.
2998 (vcmpcsq_m_u8): Remove.
2999 (vcmpcsq_m_n_u8): Remove.
3000 (vcmpneq_m_s8): Remove.
3001 (vcmpneq_m_n_s8): Remove.
3002 (vcmpltq_m_s8): Remove.
3003 (vcmpltq_m_n_s8): Remove.
3004 (vcmpleq_m_s8): Remove.
3005 (vcmpleq_m_n_s8): Remove.
3006 (vcmpgtq_m_s8): Remove.
3007 (vcmpgtq_m_n_s8): Remove.
3008 (vcmpgeq_m_s8): Remove.
3009 (vcmpgeq_m_n_s8): Remove.
3010 (vcmpeqq_m_s8): Remove.
3011 (vcmpeqq_m_n_s8): Remove.
3012 (vcmpneq_m_u16): Remove.
3013 (vcmpneq_m_n_u16): Remove.
3014 (vcmphiq_m_u16): Remove.
3015 (vcmphiq_m_n_u16): Remove.
3016 (vcmpeqq_m_u16): Remove.
3017 (vcmpeqq_m_n_u16): Remove.
3018 (vcmpcsq_m_u16): Remove.
3019 (vcmpcsq_m_n_u16): Remove.
3020 (vcmpneq_m_s16): Remove.
3021 (vcmpneq_m_n_s16): Remove.
3022 (vcmpltq_m_s16): Remove.
3023 (vcmpltq_m_n_s16): Remove.
3024 (vcmpleq_m_s16): Remove.
3025 (vcmpleq_m_n_s16): Remove.
3026 (vcmpgtq_m_s16): Remove.
3027 (vcmpgtq_m_n_s16): Remove.
3028 (vcmpgeq_m_s16): Remove.
3029 (vcmpgeq_m_n_s16): Remove.
3030 (vcmpeqq_m_s16): Remove.
3031 (vcmpeqq_m_n_s16): Remove.
3032 (vcmpneq_m_u32): Remove.
3033 (vcmpneq_m_n_u32): Remove.
3034 (vcmphiq_m_u32): Remove.
3035 (vcmphiq_m_n_u32): Remove.
3036 (vcmpeqq_m_u32): Remove.
3037 (vcmpeqq_m_n_u32): Remove.
3038 (vcmpcsq_m_u32): Remove.
3039 (vcmpcsq_m_n_u32): Remove.
3040 (vcmpneq_m_s32): Remove.
3041 (vcmpneq_m_n_s32): Remove.
3042 (vcmpltq_m_s32): Remove.
3043 (vcmpltq_m_n_s32): Remove.
3044 (vcmpleq_m_s32): Remove.
3045 (vcmpleq_m_n_s32): Remove.
3046 (vcmpgtq_m_s32): Remove.
3047 (vcmpgtq_m_n_s32): Remove.
3048 (vcmpgeq_m_s32): Remove.
3049 (vcmpgeq_m_n_s32): Remove.
3050 (vcmpeqq_m_s32): Remove.
3051 (vcmpeqq_m_n_s32): Remove.
3052 (vcmpeqq_m_n_f16): Remove.
3053 (vcmpgeq_m_f16): Remove.
3054 (vcmpgeq_m_n_f16): Remove.
3055 (vcmpgtq_m_f16): Remove.
3056 (vcmpgtq_m_n_f16): Remove.
3057 (vcmpleq_m_f16): Remove.
3058 (vcmpleq_m_n_f16): Remove.
3059 (vcmpltq_m_f16): Remove.
3060 (vcmpltq_m_n_f16): Remove.
3061 (vcmpneq_m_f16): Remove.
3062 (vcmpneq_m_n_f16): Remove.
3063 (vcmpeqq_m_n_f32): Remove.
3064 (vcmpgeq_m_f32): Remove.
3065 (vcmpgeq_m_n_f32): Remove.
3066 (vcmpgtq_m_f32): Remove.
3067 (vcmpgtq_m_n_f32): Remove.
3068 (vcmpleq_m_f32): Remove.
3069 (vcmpleq_m_n_f32): Remove.
3070 (vcmpltq_m_f32): Remove.
3071 (vcmpltq_m_n_f32): Remove.
3072 (vcmpneq_m_f32): Remove.
3073 (vcmpneq_m_n_f32): Remove.
3074 (__arm_vcmpneq_s8): Remove.
3075 (__arm_vcmpneq_s16): Remove.
3076 (__arm_vcmpneq_s32): Remove.
3077 (__arm_vcmpneq_u8): Remove.
3078 (__arm_vcmpneq_u16): Remove.
3079 (__arm_vcmpneq_u32): Remove.
3080 (__arm_vcmpneq_n_u8): Remove.
3081 (__arm_vcmphiq_u8): Remove.
3082 (__arm_vcmphiq_n_u8): Remove.
3083 (__arm_vcmpeqq_u8): Remove.
3084 (__arm_vcmpeqq_n_u8): Remove.
3085 (__arm_vcmpcsq_u8): Remove.
3086 (__arm_vcmpcsq_n_u8): Remove.
3087 (__arm_vcmpneq_n_s8): Remove.
3088 (__arm_vcmpltq_s8): Remove.
3089 (__arm_vcmpltq_n_s8): Remove.
3090 (__arm_vcmpleq_s8): Remove.
3091 (__arm_vcmpleq_n_s8): Remove.
3092 (__arm_vcmpgtq_s8): Remove.
3093 (__arm_vcmpgtq_n_s8): Remove.
3094 (__arm_vcmpgeq_s8): Remove.
3095 (__arm_vcmpgeq_n_s8): Remove.
3096 (__arm_vcmpeqq_s8): Remove.
3097 (__arm_vcmpeqq_n_s8): Remove.
3098 (__arm_vcmpneq_n_u16): Remove.
3099 (__arm_vcmphiq_u16): Remove.
3100 (__arm_vcmphiq_n_u16): Remove.
3101 (__arm_vcmpeqq_u16): Remove.
3102 (__arm_vcmpeqq_n_u16): Remove.
3103 (__arm_vcmpcsq_u16): Remove.
3104 (__arm_vcmpcsq_n_u16): Remove.
3105 (__arm_vcmpneq_n_s16): Remove.
3106 (__arm_vcmpltq_s16): Remove.
3107 (__arm_vcmpltq_n_s16): Remove.
3108 (__arm_vcmpleq_s16): Remove.
3109 (__arm_vcmpleq_n_s16): Remove.
3110 (__arm_vcmpgtq_s16): Remove.
3111 (__arm_vcmpgtq_n_s16): Remove.
3112 (__arm_vcmpgeq_s16): Remove.
3113 (__arm_vcmpgeq_n_s16): Remove.
3114 (__arm_vcmpeqq_s16): Remove.
3115 (__arm_vcmpeqq_n_s16): Remove.
3116 (__arm_vcmpneq_n_u32): Remove.
3117 (__arm_vcmphiq_u32): Remove.
3118 (__arm_vcmphiq_n_u32): Remove.
3119 (__arm_vcmpeqq_u32): Remove.
3120 (__arm_vcmpeqq_n_u32): Remove.
3121 (__arm_vcmpcsq_u32): Remove.
3122 (__arm_vcmpcsq_n_u32): Remove.
3123 (__arm_vcmpneq_n_s32): Remove.
3124 (__arm_vcmpltq_s32): Remove.
3125 (__arm_vcmpltq_n_s32): Remove.
3126 (__arm_vcmpleq_s32): Remove.
3127 (__arm_vcmpleq_n_s32): Remove.
3128 (__arm_vcmpgtq_s32): Remove.
3129 (__arm_vcmpgtq_n_s32): Remove.
3130 (__arm_vcmpgeq_s32): Remove.
3131 (__arm_vcmpgeq_n_s32): Remove.
3132 (__arm_vcmpeqq_s32): Remove.
3133 (__arm_vcmpeqq_n_s32): Remove.
3134 (__arm_vcmpneq_m_u8): Remove.
3135 (__arm_vcmpneq_m_n_u8): Remove.
3136 (__arm_vcmphiq_m_u8): Remove.
3137 (__arm_vcmphiq_m_n_u8): Remove.
3138 (__arm_vcmpeqq_m_u8): Remove.
3139 (__arm_vcmpeqq_m_n_u8): Remove.
3140 (__arm_vcmpcsq_m_u8): Remove.
3141 (__arm_vcmpcsq_m_n_u8): Remove.
3142 (__arm_vcmpneq_m_s8): Remove.
3143 (__arm_vcmpneq_m_n_s8): Remove.
3144 (__arm_vcmpltq_m_s8): Remove.
3145 (__arm_vcmpltq_m_n_s8): Remove.
3146 (__arm_vcmpleq_m_s8): Remove.
3147 (__arm_vcmpleq_m_n_s8): Remove.
3148 (__arm_vcmpgtq_m_s8): Remove.
3149 (__arm_vcmpgtq_m_n_s8): Remove.
3150 (__arm_vcmpgeq_m_s8): Remove.
3151 (__arm_vcmpgeq_m_n_s8): Remove.
3152 (__arm_vcmpeqq_m_s8): Remove.
3153 (__arm_vcmpeqq_m_n_s8): Remove.
3154 (__arm_vcmpneq_m_u16): Remove.
3155 (__arm_vcmpneq_m_n_u16): Remove.
3156 (__arm_vcmphiq_m_u16): Remove.
3157 (__arm_vcmphiq_m_n_u16): Remove.
3158 (__arm_vcmpeqq_m_u16): Remove.
3159 (__arm_vcmpeqq_m_n_u16): Remove.
3160 (__arm_vcmpcsq_m_u16): Remove.
3161 (__arm_vcmpcsq_m_n_u16): Remove.
3162 (__arm_vcmpneq_m_s16): Remove.
3163 (__arm_vcmpneq_m_n_s16): Remove.
3164 (__arm_vcmpltq_m_s16): Remove.
3165 (__arm_vcmpltq_m_n_s16): Remove.
3166 (__arm_vcmpleq_m_s16): Remove.
3167 (__arm_vcmpleq_m_n_s16): Remove.
3168 (__arm_vcmpgtq_m_s16): Remove.
3169 (__arm_vcmpgtq_m_n_s16): Remove.
3170 (__arm_vcmpgeq_m_s16): Remove.
3171 (__arm_vcmpgeq_m_n_s16): Remove.
3172 (__arm_vcmpeqq_m_s16): Remove.
3173 (__arm_vcmpeqq_m_n_s16): Remove.
3174 (__arm_vcmpneq_m_u32): Remove.
3175 (__arm_vcmpneq_m_n_u32): Remove.
3176 (__arm_vcmphiq_m_u32): Remove.
3177 (__arm_vcmphiq_m_n_u32): Remove.
3178 (__arm_vcmpeqq_m_u32): Remove.
3179 (__arm_vcmpeqq_m_n_u32): Remove.
3180 (__arm_vcmpcsq_m_u32): Remove.
3181 (__arm_vcmpcsq_m_n_u32): Remove.
3182 (__arm_vcmpneq_m_s32): Remove.
3183 (__arm_vcmpneq_m_n_s32): Remove.
3184 (__arm_vcmpltq_m_s32): Remove.
3185 (__arm_vcmpltq_m_n_s32): Remove.
3186 (__arm_vcmpleq_m_s32): Remove.
3187 (__arm_vcmpleq_m_n_s32): Remove.
3188 (__arm_vcmpgtq_m_s32): Remove.
3189 (__arm_vcmpgtq_m_n_s32): Remove.
3190 (__arm_vcmpgeq_m_s32): Remove.
3191 (__arm_vcmpgeq_m_n_s32): Remove.
3192 (__arm_vcmpeqq_m_s32): Remove.
3193 (__arm_vcmpeqq_m_n_s32): Remove.
3194 (__arm_vcmpneq_n_f16): Remove.
3195 (__arm_vcmpneq_f16): Remove.
3196 (__arm_vcmpltq_n_f16): Remove.
3197 (__arm_vcmpltq_f16): Remove.
3198 (__arm_vcmpleq_n_f16): Remove.
3199 (__arm_vcmpleq_f16): Remove.
3200 (__arm_vcmpgtq_n_f16): Remove.
3201 (__arm_vcmpgtq_f16): Remove.
3202 (__arm_vcmpgeq_n_f16): Remove.
3203 (__arm_vcmpgeq_f16): Remove.
3204 (__arm_vcmpeqq_n_f16): Remove.
3205 (__arm_vcmpeqq_f16): Remove.
3206 (__arm_vcmpneq_n_f32): Remove.
3207 (__arm_vcmpneq_f32): Remove.
3208 (__arm_vcmpltq_n_f32): Remove.
3209 (__arm_vcmpltq_f32): Remove.
3210 (__arm_vcmpleq_n_f32): Remove.
3211 (__arm_vcmpleq_f32): Remove.
3212 (__arm_vcmpgtq_n_f32): Remove.
3213 (__arm_vcmpgtq_f32): Remove.
3214 (__arm_vcmpgeq_n_f32): Remove.
3215 (__arm_vcmpgeq_f32): Remove.
3216 (__arm_vcmpeqq_n_f32): Remove.
3217 (__arm_vcmpeqq_f32): Remove.
3218 (__arm_vcmpeqq_m_f16): Remove.
3219 (__arm_vcmpeqq_m_f32): Remove.
3220 (__arm_vcmpeqq_m_n_f16): Remove.
3221 (__arm_vcmpgeq_m_f16): Remove.
3222 (__arm_vcmpgeq_m_n_f16): Remove.
3223 (__arm_vcmpgtq_m_f16): Remove.
3224 (__arm_vcmpgtq_m_n_f16): Remove.
3225 (__arm_vcmpleq_m_f16): Remove.
3226 (__arm_vcmpleq_m_n_f16): Remove.
3227 (__arm_vcmpltq_m_f16): Remove.
3228 (__arm_vcmpltq_m_n_f16): Remove.
3229 (__arm_vcmpneq_m_f16): Remove.
3230 (__arm_vcmpneq_m_n_f16): Remove.
3231 (__arm_vcmpeqq_m_n_f32): Remove.
3232 (__arm_vcmpgeq_m_f32): Remove.
3233 (__arm_vcmpgeq_m_n_f32): Remove.
3234 (__arm_vcmpgtq_m_f32): Remove.
3235 (__arm_vcmpgtq_m_n_f32): Remove.
3236 (__arm_vcmpleq_m_f32): Remove.
3237 (__arm_vcmpleq_m_n_f32): Remove.
3238 (__arm_vcmpltq_m_f32): Remove.
3239 (__arm_vcmpltq_m_n_f32): Remove.
3240 (__arm_vcmpneq_m_f32): Remove.
3241 (__arm_vcmpneq_m_n_f32): Remove.
3242 (__arm_vcmpneq): Remove.
3243 (__arm_vcmphiq): Remove.
3244 (__arm_vcmpeqq): Remove.
3245 (__arm_vcmpcsq): Remove.
3246 (__arm_vcmpltq): Remove.
3247 (__arm_vcmpleq): Remove.
3248 (__arm_vcmpgtq): Remove.
3249 (__arm_vcmpgeq): Remove.
3250 (__arm_vcmpneq_m): Remove.
3251 (__arm_vcmphiq_m): Remove.
3252 (__arm_vcmpeqq_m): Remove.
3253 (__arm_vcmpcsq_m): Remove.
3254 (__arm_vcmpltq_m): Remove.
3255 (__arm_vcmpleq_m): Remove.
3256 (__arm_vcmpgtq_m): Remove.
3257 (__arm_vcmpgeq_m): Remove.
3259 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
3261 * config/arm/arm-mve-builtins-shapes.cc (cmp): New.
3262 * config/arm/arm-mve-builtins-shapes.h (cmp): New.
3264 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
3266 * config/arm/iterators.md (MVE_CMP_M, MVE_CMP_M_F, MVE_CMP_M_N)
3267 (MVE_CMP_M_N_F, mve_cmp_op1): New.
3270 * config/arm/mve.md (mve_vcmp<mve_cmp_op>q_n_<mode>): Rename into ...
3271 (@mve_vcmp<mve_cmp_op>q_n_<mode>): ... this.
3272 (mve_vcmpeqq_m_f<mode>, mve_vcmpgeq_m_f<mode>)
3273 (mve_vcmpgtq_m_f<mode>, mve_vcmpleq_m_f<mode>)
3274 (mve_vcmpltq_m_f<mode>, mve_vcmpneq_m_f<mode>): Merge into ...
3275 (@mve_vcmp<mve_cmp_op1>q_m_f<mode>): ... this.
3276 (mve_vcmpcsq_m_u<mode>, mve_vcmpeqq_m_<supf><mode>)
3277 (mve_vcmpgeq_m_s<mode>, mve_vcmpgtq_m_s<mode>)
3278 (mve_vcmphiq_m_u<mode>, mve_vcmpleq_m_s<mode>)
3279 (mve_vcmpltq_m_s<mode>, mve_vcmpneq_m_<supf><mode>): Merge into
3281 (@mve_vcmp<mve_cmp_op1>q_m_<supf><mode>): ... this.
3282 (mve_vcmpcsq_m_n_u<mode>, mve_vcmpeqq_m_n_<supf><mode>)
3283 (mve_vcmpgeq_m_n_s<mode>, mve_vcmpgtq_m_n_s<mode>)
3284 (mve_vcmphiq_m_n_u<mode>, mve_vcmpleq_m_n_s<mode>)
3285 (mve_vcmpltq_m_n_s<mode>, mve_vcmpneq_m_n_<supf><mode>): Merge
3287 (@mve_vcmp<mve_cmp_op1>q_m_n_<supf><mode>): ... this.
3288 (mve_vcmpeqq_m_n_f<mode>, mve_vcmpgeq_m_n_f<mode>)
3289 (mve_vcmpgtq_m_n_f<mode>, mve_vcmpleq_m_n_f<mode>)
3290 (mve_vcmpltq_m_n_f<mode>, mve_vcmpneq_m_n_f<mode>): Merge into ...
3291 (@mve_vcmp<mve_cmp_op1>q_m_n_f<mode>): ... this.
3293 2023-05-11 Roger Sayle <roger@nextmovesoftware.com>
3295 * match.pd <popcount optimizations>: Simplify popcount(X|Y) +
3296 popcount(X&Y) as popcount(X)+popcount(Y). Likewise, simplify
3297 popcount(X)+popcount(Y)-popcount(X&Y) as popcount(X|Y), and
3300 2023-05-11 Roger Sayle <roger@nextmovesoftware.com>
3302 * match.pd <popcount optimizations>: Simplify popcount(bswap(x))
3303 as popcount(x). Simplify popcount(rotate(x,y)) as popcount(x).
3304 <parity optimizations>: Simplify parity(bswap(x)) as parity(x).
3305 Simplify parity(rotate(x,y)) as parity(x).
3307 2023-05-11 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3309 * config/riscv/autovec.md (@vec_series<mode>): New pattern
3310 * config/riscv/riscv-protos.h (expand_vec_series): New function.
3311 * config/riscv/riscv-v.cc (emit_binop): Ditto.
3312 (emit_index_op): Ditto.
3313 (expand_vec_series): Ditto.
3314 (expand_const_vector): Add series vector handling.
3315 * config/riscv/riscv.cc (riscv_const_insns): Enable series vector for testing.
3317 2023-05-10 Roger Sayle <roger@nextmovesoftware.com>
3319 * config/i386/i386.md (*concat<mode><dwi>3_1): Use preferred
3320 [(const_int 0)] idiom, instead of [(clobber (const_int 0))].
3321 (*concat<mode><dwi>3_2): Likewise.
3322 (*concat<mode><dwi>3_3): Likewise.
3323 (*concat<mode><dwi>3_4): Likewise.
3324 (*concat<mode><dwi>3_5): Likewise.
3325 (*concat<mode><dwi>3_6): Likewise.
3326 (*concat<mode><dwi>3_7): Likewise.
3328 2023-05-10 Uros Bizjak <ubizjak@gmail.com>
3331 * config/i386/mmx.md (sse4_1_<code>v2qiv2si2): New insn pattern.
3332 (<insn>v4qiv4hi2): New expander.
3333 (<insn>v2hiv2si2): Ditto.
3334 (<insn>v2qiv2si2): Ditto.
3335 (<insn>v2qiv2hi2): Ditto.
3337 2023-05-10 Jeff Law <jlaw@ventanamicro>
3339 * config/h8300/constraints.md (Q): Make this a special memory
3343 2023-05-10 Jakub Jelinek <jakub@redhat.com>
3346 * ipa-prop.cc (ipa_get_callee_param_type): Don't return TREE_VALUE (t)
3347 if t is void_list_node.
3349 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3351 * config/aarch64/aarch64-simd.md (aarch64_sqmovun<mode>_insn_le): Delete.
3352 (aarch64_sqmovun<mode>_insn_be): Delete.
3353 (aarch64_sqmovun<mode><vczle><vczbe>): New define_insn.
3354 (aarch64_sqmovun<mode>): Delete expander.
3356 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3359 * config/aarch64/aarch64-simd.md (aarch64_<PERMUTE:perm_insn><mode>):
3361 (aarch64_<PERMUTE:perm_insn><mode><vczle><vczbe>): ... This.
3362 (aarch64_rev<REVERSE:rev_op><mode>): Rename to...
3363 (aarch64_rev<REVERSE:rev_op><mode><vczle><vczbe>): ... This.
3365 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3368 * config/aarch64/aarch64-simd.md (aarch64_<su_optab>q<addsub><mode>):
3370 (aarch64_<su_optab>q<addsub><mode><vczle><vczbe>): ... This.
3371 (aarch64_<sur>qadd<mode>): Rename to...
3372 (aarch64_<sur>qadd<mode><vczle><vczbe>): ... This.
3374 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3376 * config/aarch64/aarch64-simd.md
3377 (aarch64_<sur>q<r>shr<u>n_n<mode>_insn_le): Delete.
3378 (aarch64_<sur>q<r>shr<u>n_n<mode>_insn_be): Delete.
3379 (aarch64_<sur>q<r>shr<u>n_n<mode>_insn<vczle><vczbe>): New define_insn.
3380 (aarch64_<sur>q<r>shr<u>n_n<mode>): Simplify expander.
3382 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3385 * config/aarch64/aarch64-simd.md (aarch64_xtn<mode>_insn_le): Delete.
3386 (aarch64_xtn<mode>_insn_be): Likewise.
3387 (trunc<mode><Vnarrowq>2): Rename to...
3388 (trunc<mode><Vnarrowq>2<vczle><vczbe>): ... This.
3389 (aarch64_xtn<mode>): Move under the above. Just emit the truncate RTL.
3390 (aarch64_<su>qmovn<mode>): Likewise.
3391 (aarch64_<su>qmovn<mode><vczle><vczbe>): New define_insn.
3392 (aarch64_<su>qmovn<mode>_insn_le): Delete.
3393 (aarch64_<su>qmovn<mode>_insn_be): Likewise.
3395 2023-05-10 Li Xu <xuli1@eswincomputing.com>
3397 * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): For vfmv.f.s/vmv.x.s
3398 intruction replace null avl with (const_int 0).
3400 2023-05-10 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3402 * config/riscv/riscv.cc (riscv_support_vector_misalignment): Fix
3405 2023-05-10 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3408 * config/riscv/riscv-vsetvl.cc (avl_source_has_vsetvl_p): New function.
3409 (source_equal_p): Fix dead loop in vsetvl avl checking.
3411 2023-05-10 Hans-Peter Nilsson <hp@axis.com>
3413 * config/cris/cris.cc (cris_postdbr_cmpelim): Correct mode
3414 of modeadjusted_dccr.
3416 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
3418 * config/arm/arm-mve-builtins-base.cc (vmaxaq, vminaq): New.
3419 * config/arm/arm-mve-builtins-base.def (vmaxaq, vminaq): New.
3420 * config/arm/arm-mve-builtins-base.h (vmaxaq, vminaq): New.
3421 * config/arm/arm-mve-builtins.cc
3422 (function_instance::has_inactive_argument): Handle vmaxaq and
3424 * config/arm/arm_mve.h (vminaq): Remove.
3428 (vminaq_s8): Remove.
3429 (vmaxaq_s8): Remove.
3430 (vminaq_s16): Remove.
3431 (vmaxaq_s16): Remove.
3432 (vminaq_s32): Remove.
3433 (vmaxaq_s32): Remove.
3434 (vminaq_m_s8): Remove.
3435 (vmaxaq_m_s8): Remove.
3436 (vminaq_m_s16): Remove.
3437 (vmaxaq_m_s16): Remove.
3438 (vminaq_m_s32): Remove.
3439 (vmaxaq_m_s32): Remove.
3440 (__arm_vminaq_s8): Remove.
3441 (__arm_vmaxaq_s8): Remove.
3442 (__arm_vminaq_s16): Remove.
3443 (__arm_vmaxaq_s16): Remove.
3444 (__arm_vminaq_s32): Remove.
3445 (__arm_vmaxaq_s32): Remove.
3446 (__arm_vminaq_m_s8): Remove.
3447 (__arm_vmaxaq_m_s8): Remove.
3448 (__arm_vminaq_m_s16): Remove.
3449 (__arm_vmaxaq_m_s16): Remove.
3450 (__arm_vminaq_m_s32): Remove.
3451 (__arm_vmaxaq_m_s32): Remove.
3452 (__arm_vminaq): Remove.
3453 (__arm_vmaxaq): Remove.
3454 (__arm_vminaq_m): Remove.
3455 (__arm_vmaxaq_m): Remove.
3457 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
3459 * config/arm/iterators.md (MVE_VMAXAVMINAQ, MVE_VMAXAVMINAQ_M):
3461 (mve_insn): Add vmaxa, vmina.
3462 (supf): Add VMAXAQ_S, VMAXAQ_M_S, VMINAQ_S, VMINAQ_M_S.
3463 * config/arm/mve.md (mve_vmaxaq_s<mode>, mve_vminaq_s<mode>):
3465 (@mve_<mve_insn>q_<supf><mode>): ... this.
3466 (mve_vmaxaq_m_s<mode>, mve_vminaq_m_s<mode>): Merge into ...
3467 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
3469 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
3471 * config/arm/arm-mve-builtins-shapes.cc (binary_maxamina): New.
3472 * config/arm/arm-mve-builtins-shapes.h (binary_maxamina): New.
3474 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
3476 * config/arm/arm-mve-builtins-base.cc (vmaxnmaq, vminnmaq): New.
3477 * config/arm/arm-mve-builtins-base.def (vmaxnmaq, vminnmaq): New.
3478 * config/arm/arm-mve-builtins-base.h (vmaxnmaq, vminnmaq): New.
3479 * config/arm/arm-mve-builtins.cc
3480 (function_instance::has_inactive_argument): Handle vmaxnmaq and
3482 * config/arm/arm_mve.h (vminnmaq): Remove.
3484 (vmaxnmaq_m): Remove.
3485 (vminnmaq_m): Remove.
3486 (vminnmaq_f16): Remove.
3487 (vmaxnmaq_f16): Remove.
3488 (vminnmaq_f32): Remove.
3489 (vmaxnmaq_f32): Remove.
3490 (vmaxnmaq_m_f16): Remove.
3491 (vminnmaq_m_f16): Remove.
3492 (vmaxnmaq_m_f32): Remove.
3493 (vminnmaq_m_f32): Remove.
3494 (__arm_vminnmaq_f16): Remove.
3495 (__arm_vmaxnmaq_f16): Remove.
3496 (__arm_vminnmaq_f32): Remove.
3497 (__arm_vmaxnmaq_f32): Remove.
3498 (__arm_vmaxnmaq_m_f16): Remove.
3499 (__arm_vminnmaq_m_f16): Remove.
3500 (__arm_vmaxnmaq_m_f32): Remove.
3501 (__arm_vminnmaq_m_f32): Remove.
3502 (__arm_vminnmaq): Remove.
3503 (__arm_vmaxnmaq): Remove.
3504 (__arm_vmaxnmaq_m): Remove.
3505 (__arm_vminnmaq_m): Remove.
3507 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
3509 * config/arm/iterators.md (MVE_VMAXNMA_VMINNMAQ)
3510 (MVE_VMAXNMA_VMINNMAQ_M): New.
3511 (mve_insn): Add vmaxnma, vminnma.
3512 * config/arm/mve.md (mve_vmaxnmaq_f<mode>, mve_vminnmaq_f<mode>):
3514 (@mve_<mve_insn>q_f<mode>): ... this.
3515 (mve_vmaxnmaq_m_f<mode>, mve_vminnmaq_m_f<mode>): Merge into ...
3516 (@mve_<mve_insn>q_m_f<mode>): ... this.
3518 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
3520 * config/arm/arm-mve-builtins-base.cc (FUNCTION_PRED_P_F): New.
3521 (vmaxnmavq, vmaxnmvq, vminnmavq, vminnmvq): New.
3522 * config/arm/arm-mve-builtins-base.def (vmaxnmavq, vmaxnmvq)
3523 (vminnmavq, vminnmvq): New.
3524 * config/arm/arm-mve-builtins-base.h (vmaxnmavq, vmaxnmvq)
3525 (vminnmavq, vminnmvq): New.
3526 * config/arm/arm_mve.h (vminnmvq): Remove.
3527 (vminnmavq): Remove.
3529 (vmaxnmavq): Remove.
3530 (vmaxnmavq_p): Remove.
3531 (vmaxnmvq_p): Remove.
3532 (vminnmavq_p): Remove.
3533 (vminnmvq_p): Remove.
3534 (vminnmvq_f16): Remove.
3535 (vminnmavq_f16): Remove.
3536 (vmaxnmvq_f16): Remove.
3537 (vmaxnmavq_f16): Remove.
3538 (vminnmvq_f32): Remove.
3539 (vminnmavq_f32): Remove.
3540 (vmaxnmvq_f32): Remove.
3541 (vmaxnmavq_f32): Remove.
3542 (vmaxnmavq_p_f16): Remove.
3543 (vmaxnmvq_p_f16): Remove.
3544 (vminnmavq_p_f16): Remove.
3545 (vminnmvq_p_f16): Remove.
3546 (vmaxnmavq_p_f32): Remove.
3547 (vmaxnmvq_p_f32): Remove.
3548 (vminnmavq_p_f32): Remove.
3549 (vminnmvq_p_f32): Remove.
3550 (__arm_vminnmvq_f16): Remove.
3551 (__arm_vminnmavq_f16): Remove.
3552 (__arm_vmaxnmvq_f16): Remove.
3553 (__arm_vmaxnmavq_f16): Remove.
3554 (__arm_vminnmvq_f32): Remove.
3555 (__arm_vminnmavq_f32): Remove.
3556 (__arm_vmaxnmvq_f32): Remove.
3557 (__arm_vmaxnmavq_f32): Remove.
3558 (__arm_vmaxnmavq_p_f16): Remove.
3559 (__arm_vmaxnmvq_p_f16): Remove.
3560 (__arm_vminnmavq_p_f16): Remove.
3561 (__arm_vminnmvq_p_f16): Remove.
3562 (__arm_vmaxnmavq_p_f32): Remove.
3563 (__arm_vmaxnmvq_p_f32): Remove.
3564 (__arm_vminnmavq_p_f32): Remove.
3565 (__arm_vminnmvq_p_f32): Remove.
3566 (__arm_vminnmvq): Remove.
3567 (__arm_vminnmavq): Remove.
3568 (__arm_vmaxnmvq): Remove.
3569 (__arm_vmaxnmavq): Remove.
3570 (__arm_vmaxnmavq_p): Remove.
3571 (__arm_vmaxnmvq_p): Remove.
3572 (__arm_vminnmavq_p): Remove.
3573 (__arm_vminnmvq_p): Remove.
3574 (__arm_vmaxnmavq_m): Remove.
3575 (__arm_vmaxnmvq_m): Remove.
3577 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
3579 * config/arm/arm-mve-builtins-functions.h
3580 (unspec_mve_function_exact_insn_pred_p): Use code_for_mve_q_p_f.
3582 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
3584 * config/arm/iterators.md (MVE_VMAXNMxV_MINNMxVQ)
3585 (MVE_VMAXNMxV_MINNMxVQ_P): New.
3586 (mve_insn): Add vmaxnmav, vmaxnmv, vminnmav, vminnmv.
3587 * config/arm/mve.md (mve_vmaxnmavq_f<mode>, mve_vmaxnmvq_f<mode>)
3588 (mve_vminnmavq_f<mode>, mve_vminnmvq_f<mode>): Merge into ...
3589 (@mve_<mve_insn>q_f<mode>): ... this.
3590 (mve_vmaxnmavq_p_f<mode>, mve_vmaxnmvq_p_f<mode>)
3591 (mve_vminnmavq_p_f<mode>, mve_vminnmvq_p_f<mode>): Merge into ...
3592 (@mve_<mve_insn>q_p_f<mode>): ... this.
3594 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
3596 * config/arm/arm-mve-builtins-base.cc (vmaxnmq, vminnmq): New.
3597 * config/arm/arm-mve-builtins-base.def (vmaxnmq, vminnmq): New.
3598 * config/arm/arm-mve-builtins-base.h (vmaxnmq, vminnmq): New.
3599 * config/arm/arm_mve.h (vminnmq): Remove.
3601 (vmaxnmq_m): Remove.
3602 (vminnmq_m): Remove.
3603 (vminnmq_x): Remove.
3604 (vmaxnmq_x): Remove.
3605 (vminnmq_f16): Remove.
3606 (vmaxnmq_f16): Remove.
3607 (vminnmq_f32): Remove.
3608 (vmaxnmq_f32): Remove.
3609 (vmaxnmq_m_f32): Remove.
3610 (vmaxnmq_m_f16): Remove.
3611 (vminnmq_m_f32): Remove.
3612 (vminnmq_m_f16): Remove.
3613 (vminnmq_x_f16): Remove.
3614 (vminnmq_x_f32): Remove.
3615 (vmaxnmq_x_f16): Remove.
3616 (vmaxnmq_x_f32): Remove.
3617 (__arm_vminnmq_f16): Remove.
3618 (__arm_vmaxnmq_f16): Remove.
3619 (__arm_vminnmq_f32): Remove.
3620 (__arm_vmaxnmq_f32): Remove.
3621 (__arm_vmaxnmq_m_f32): Remove.
3622 (__arm_vmaxnmq_m_f16): Remove.
3623 (__arm_vminnmq_m_f32): Remove.
3624 (__arm_vminnmq_m_f16): Remove.
3625 (__arm_vminnmq_x_f16): Remove.
3626 (__arm_vminnmq_x_f32): Remove.
3627 (__arm_vmaxnmq_x_f16): Remove.
3628 (__arm_vmaxnmq_x_f32): Remove.
3629 (__arm_vminnmq): Remove.
3630 (__arm_vmaxnmq): Remove.
3631 (__arm_vmaxnmq_m): Remove.
3632 (__arm_vminnmq_m): Remove.
3633 (__arm_vminnmq_x): Remove.
3634 (__arm_vmaxnmq_x): Remove.
3636 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
3638 * config/arm/iterators.md (MAX_MIN_F): New.
3639 (MVE_FP_M_BINARY): Add VMAXNMQ_M_F, VMINNMQ_M_F.
3640 (mve_insn): Add vmaxnm, vminnm.
3641 (max_min_f_str): New.
3642 * config/arm/mve.md (mve_vmaxnmq_f<mode>, mve_vminnmq_f<mode>):
3644 (@mve_<max_min_f_str>q_f<mode>): ... this.
3645 (mve_vmaxnmq_m_f<mode>, mve_vminnmq_m_f<mode>): Merge into ...
3646 (@mve_<mve_insn>q_m_f<mode>): ... this.
3648 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
3650 * config/arm/vec-common.md (smin<mode>3): Use VDQWH iterator.
3651 (smax<mode>3): Likewise.
3653 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
3655 * config/arm/arm-mve-builtins-base.cc (FUNCTION_PRED_P_S_U)
3656 (FUNCTION_PRED_P_S): New.
3657 (vmaxavq, vminavq, vmaxvq, vminvq): New.
3658 * config/arm/arm-mve-builtins-base.def (vmaxavq, vminavq, vmaxvq)
3660 * config/arm/arm-mve-builtins-base.h (vmaxavq, vminavq, vmaxvq)
3662 * config/arm/arm_mve.h (vminvq): Remove.
3666 (vminvq_u8): Remove.
3667 (vmaxvq_u8): Remove.
3668 (vminvq_s8): Remove.
3669 (vmaxvq_s8): Remove.
3670 (vminvq_u16): Remove.
3671 (vmaxvq_u16): Remove.
3672 (vminvq_s16): Remove.
3673 (vmaxvq_s16): Remove.
3674 (vminvq_u32): Remove.
3675 (vmaxvq_u32): Remove.
3676 (vminvq_s32): Remove.
3677 (vmaxvq_s32): Remove.
3678 (vminvq_p_u8): Remove.
3679 (vmaxvq_p_u8): Remove.
3680 (vminvq_p_s8): Remove.
3681 (vmaxvq_p_s8): Remove.
3682 (vminvq_p_u16): Remove.
3683 (vmaxvq_p_u16): Remove.
3684 (vminvq_p_s16): Remove.
3685 (vmaxvq_p_s16): Remove.
3686 (vminvq_p_u32): Remove.
3687 (vmaxvq_p_u32): Remove.
3688 (vminvq_p_s32): Remove.
3689 (vmaxvq_p_s32): Remove.
3690 (__arm_vminvq_u8): Remove.
3691 (__arm_vmaxvq_u8): Remove.
3692 (__arm_vminvq_s8): Remove.
3693 (__arm_vmaxvq_s8): Remove.
3694 (__arm_vminvq_u16): Remove.
3695 (__arm_vmaxvq_u16): Remove.
3696 (__arm_vminvq_s16): Remove.
3697 (__arm_vmaxvq_s16): Remove.
3698 (__arm_vminvq_u32): Remove.
3699 (__arm_vmaxvq_u32): Remove.
3700 (__arm_vminvq_s32): Remove.
3701 (__arm_vmaxvq_s32): Remove.
3702 (__arm_vminvq_p_u8): Remove.
3703 (__arm_vmaxvq_p_u8): Remove.
3704 (__arm_vminvq_p_s8): Remove.
3705 (__arm_vmaxvq_p_s8): Remove.
3706 (__arm_vminvq_p_u16): Remove.
3707 (__arm_vmaxvq_p_u16): Remove.
3708 (__arm_vminvq_p_s16): Remove.
3709 (__arm_vmaxvq_p_s16): Remove.
3710 (__arm_vminvq_p_u32): Remove.
3711 (__arm_vmaxvq_p_u32): Remove.
3712 (__arm_vminvq_p_s32): Remove.
3713 (__arm_vmaxvq_p_s32): Remove.
3714 (__arm_vminvq): Remove.
3715 (__arm_vmaxvq): Remove.
3716 (__arm_vminvq_p): Remove.
3717 (__arm_vmaxvq_p): Remove.
3720 (vminavq_p): Remove.
3721 (vmaxavq_p): Remove.
3722 (vminavq_s8): Remove.
3723 (vmaxavq_s8): Remove.
3724 (vminavq_s16): Remove.
3725 (vmaxavq_s16): Remove.
3726 (vminavq_s32): Remove.
3727 (vmaxavq_s32): Remove.
3728 (vminavq_p_s8): Remove.
3729 (vmaxavq_p_s8): Remove.
3730 (vminavq_p_s16): Remove.
3731 (vmaxavq_p_s16): Remove.
3732 (vminavq_p_s32): Remove.
3733 (vmaxavq_p_s32): Remove.
3734 (__arm_vminavq_s8): Remove.
3735 (__arm_vmaxavq_s8): Remove.
3736 (__arm_vminavq_s16): Remove.
3737 (__arm_vmaxavq_s16): Remove.
3738 (__arm_vminavq_s32): Remove.
3739 (__arm_vmaxavq_s32): Remove.
3740 (__arm_vminavq_p_s8): Remove.
3741 (__arm_vmaxavq_p_s8): Remove.
3742 (__arm_vminavq_p_s16): Remove.
3743 (__arm_vmaxavq_p_s16): Remove.
3744 (__arm_vminavq_p_s32): Remove.
3745 (__arm_vmaxavq_p_s32): Remove.
3746 (__arm_vminavq): Remove.
3747 (__arm_vmaxavq): Remove.
3748 (__arm_vminavq_p): Remove.
3749 (__arm_vmaxavq_p): Remove.
3751 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
3753 * config/arm/iterators.md (MVE_VMAXVQ_VMINVQ, MVE_VMAXVQ_VMINVQ_P): New.
3754 (mve_insn): Add vmaxav, vmaxv, vminav, vminv.
3755 (supf): Add VMAXAVQ_S, VMAXAVQ_P_S, VMINAVQ_S, VMINAVQ_P_S.
3756 * config/arm/mve.md (mve_vmaxavq_s<mode>, mve_vmaxvq_<supf><mode>)
3757 (mve_vminavq_s<mode>, mve_vminvq_<supf><mode>): Merge into ...
3758 (@mve_<mve_insn>q_<supf><mode>): ... this.
3759 (mve_vmaxavq_p_s<mode>, mve_vmaxvq_p_<supf><mode>)
3760 (mve_vminavq_p_s<mode>, mve_vminvq_p_<supf><mode>): Merge into ...
3761 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
3763 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
3765 * config/arm/arm-mve-builtins-functions.h (class
3766 unspec_mve_function_exact_insn_pred_p): New.
3768 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
3770 * config/arm/arm-mve-builtins-shapes.cc (binary_maxavminav): New.
3771 * config/arm/arm-mve-builtins-shapes.h (binary_maxavminav): New.
3773 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
3775 * config/arm/arm-mve-builtins-shapes.cc (binary_maxvminv): New.
3776 * config/arm/arm-mve-builtins-shapes.h (binary_maxvminv): New.
3778 2023-05-09 Richard Sandiford <richard.sandiford@arm.com>
3780 * config/aarch64/aarch64-protos.h (aarch64_adjust_reg_alloc_order):
3782 * config/aarch64/aarch64.h (REG_ALLOC_ORDER): Define.
3783 (ADJUST_REG_ALLOC_ORDER): Likewise.
3784 * config/aarch64/aarch64.cc (aarch64_adjust_reg_alloc_order): New
3786 * config/aarch64/aarch64-sve.md (*vcond_mask_<mode><vpred>): Use
3787 Upa rather than Upl for unpredicated movprfx alternatives.
3789 2023-05-09 Jeff Law <jlaw@ventanamicro>
3791 * config/h8300/testcompare.md: Add peephole2 which uses a memory
3792 load to set flags, thus eliminating a compare against zero.
3794 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
3796 * config/arm/arm-mve-builtins-base.cc (vshllbq, vshlltq): New.
3797 * config/arm/arm-mve-builtins-base.def (vshllbq, vshlltq): New.
3798 * config/arm/arm-mve-builtins-base.h (vshllbq, vshlltq): New.
3799 * config/arm/arm_mve.h (vshlltq): Remove.
3801 (vshllbq_m): Remove.
3802 (vshlltq_m): Remove.
3803 (vshllbq_x): Remove.
3804 (vshlltq_x): Remove.
3805 (vshlltq_n_u8): Remove.
3806 (vshllbq_n_u8): Remove.
3807 (vshlltq_n_s8): Remove.
3808 (vshllbq_n_s8): Remove.
3809 (vshlltq_n_u16): Remove.
3810 (vshllbq_n_u16): Remove.
3811 (vshlltq_n_s16): Remove.
3812 (vshllbq_n_s16): Remove.
3813 (vshllbq_m_n_s8): Remove.
3814 (vshllbq_m_n_s16): Remove.
3815 (vshllbq_m_n_u8): Remove.
3816 (vshllbq_m_n_u16): Remove.
3817 (vshlltq_m_n_s8): Remove.
3818 (vshlltq_m_n_s16): Remove.
3819 (vshlltq_m_n_u8): Remove.
3820 (vshlltq_m_n_u16): Remove.
3821 (vshllbq_x_n_s8): Remove.
3822 (vshllbq_x_n_s16): Remove.
3823 (vshllbq_x_n_u8): Remove.
3824 (vshllbq_x_n_u16): Remove.
3825 (vshlltq_x_n_s8): Remove.
3826 (vshlltq_x_n_s16): Remove.
3827 (vshlltq_x_n_u8): Remove.
3828 (vshlltq_x_n_u16): Remove.
3829 (__arm_vshlltq_n_u8): Remove.
3830 (__arm_vshllbq_n_u8): Remove.
3831 (__arm_vshlltq_n_s8): Remove.
3832 (__arm_vshllbq_n_s8): Remove.
3833 (__arm_vshlltq_n_u16): Remove.
3834 (__arm_vshllbq_n_u16): Remove.
3835 (__arm_vshlltq_n_s16): Remove.
3836 (__arm_vshllbq_n_s16): Remove.
3837 (__arm_vshllbq_m_n_s8): Remove.
3838 (__arm_vshllbq_m_n_s16): Remove.
3839 (__arm_vshllbq_m_n_u8): Remove.
3840 (__arm_vshllbq_m_n_u16): Remove.
3841 (__arm_vshlltq_m_n_s8): Remove.
3842 (__arm_vshlltq_m_n_s16): Remove.
3843 (__arm_vshlltq_m_n_u8): Remove.
3844 (__arm_vshlltq_m_n_u16): Remove.
3845 (__arm_vshllbq_x_n_s8): Remove.
3846 (__arm_vshllbq_x_n_s16): Remove.
3847 (__arm_vshllbq_x_n_u8): Remove.
3848 (__arm_vshllbq_x_n_u16): Remove.
3849 (__arm_vshlltq_x_n_s8): Remove.
3850 (__arm_vshlltq_x_n_s16): Remove.
3851 (__arm_vshlltq_x_n_u8): Remove.
3852 (__arm_vshlltq_x_n_u16): Remove.
3853 (__arm_vshlltq): Remove.
3854 (__arm_vshllbq): Remove.
3855 (__arm_vshllbq_m): Remove.
3856 (__arm_vshlltq_m): Remove.
3857 (__arm_vshllbq_x): Remove.
3858 (__arm_vshlltq_x): Remove.
3860 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
3862 * config/arm/iterators.md (mve_insn): Add vshllb, vshllt.
3863 (VSHLLBQ_N, VSHLLTQ_N): Remove.
3865 (VSHLLBQ_M_N, VSHLLTQ_M_N): Remove.
3867 * config/arm/mve.md (mve_vshllbq_n_<supf><mode>)
3868 (mve_vshlltq_n_<supf><mode>): Merge into ...
3869 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
3870 (mve_vshllbq_m_n_<supf><mode>, mve_vshlltq_m_n_<supf><mode>):
3872 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
3874 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
3876 * config/arm/arm-mve-builtins-shapes.cc (binary_widen_n): New.
3877 * config/arm/arm-mve-builtins-shapes.h (binary_widen_n): New.
3879 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
3881 * config/arm/arm-mve-builtins-base.cc (vmovnbq, vmovntq, vqmovnbq)
3882 (vqmovntq, vqmovunbq, vqmovuntq): New.
3883 * config/arm/arm-mve-builtins-base.def (vmovnbq, vmovntq)
3884 (vqmovnbq, vqmovntq, vqmovunbq, vqmovuntq): New.
3885 * config/arm/arm-mve-builtins-base.h (vmovnbq, vmovntq, vqmovnbq)
3886 (vqmovntq, vqmovunbq, vqmovuntq): New.
3887 * config/arm/arm-mve-builtins.cc
3888 (function_instance::has_inactive_argument): Handle vmovnbq,
3889 vmovntq, vqmovnbq, vqmovntq, vqmovunbq, vqmovuntq.
3890 * config/arm/arm_mve.h (vqmovntq): Remove.
3892 (vqmovnbq_m): Remove.
3893 (vqmovntq_m): Remove.
3894 (vqmovntq_u16): Remove.
3895 (vqmovnbq_u16): Remove.
3896 (vqmovntq_s16): Remove.
3897 (vqmovnbq_s16): Remove.
3898 (vqmovntq_u32): Remove.
3899 (vqmovnbq_u32): Remove.
3900 (vqmovntq_s32): Remove.
3901 (vqmovnbq_s32): Remove.
3902 (vqmovnbq_m_s16): Remove.
3903 (vqmovntq_m_s16): Remove.
3904 (vqmovnbq_m_u16): Remove.
3905 (vqmovntq_m_u16): Remove.
3906 (vqmovnbq_m_s32): Remove.
3907 (vqmovntq_m_s32): Remove.
3908 (vqmovnbq_m_u32): Remove.
3909 (vqmovntq_m_u32): Remove.
3910 (__arm_vqmovntq_u16): Remove.
3911 (__arm_vqmovnbq_u16): Remove.
3912 (__arm_vqmovntq_s16): Remove.
3913 (__arm_vqmovnbq_s16): Remove.
3914 (__arm_vqmovntq_u32): Remove.
3915 (__arm_vqmovnbq_u32): Remove.
3916 (__arm_vqmovntq_s32): Remove.
3917 (__arm_vqmovnbq_s32): Remove.
3918 (__arm_vqmovnbq_m_s16): Remove.
3919 (__arm_vqmovntq_m_s16): Remove.
3920 (__arm_vqmovnbq_m_u16): Remove.
3921 (__arm_vqmovntq_m_u16): Remove.
3922 (__arm_vqmovnbq_m_s32): Remove.
3923 (__arm_vqmovntq_m_s32): Remove.
3924 (__arm_vqmovnbq_m_u32): Remove.
3925 (__arm_vqmovntq_m_u32): Remove.
3926 (__arm_vqmovntq): Remove.
3927 (__arm_vqmovnbq): Remove.
3928 (__arm_vqmovnbq_m): Remove.
3929 (__arm_vqmovntq_m): Remove.
3932 (vmovnbq_m): Remove.
3933 (vmovntq_m): Remove.
3934 (vmovntq_u16): Remove.
3935 (vmovnbq_u16): Remove.
3936 (vmovntq_s16): Remove.
3937 (vmovnbq_s16): Remove.
3938 (vmovntq_u32): Remove.
3939 (vmovnbq_u32): Remove.
3940 (vmovntq_s32): Remove.
3941 (vmovnbq_s32): Remove.
3942 (vmovnbq_m_s16): Remove.
3943 (vmovntq_m_s16): Remove.
3944 (vmovnbq_m_u16): Remove.
3945 (vmovntq_m_u16): Remove.
3946 (vmovnbq_m_s32): Remove.
3947 (vmovntq_m_s32): Remove.
3948 (vmovnbq_m_u32): Remove.
3949 (vmovntq_m_u32): Remove.
3950 (__arm_vmovntq_u16): Remove.
3951 (__arm_vmovnbq_u16): Remove.
3952 (__arm_vmovntq_s16): Remove.
3953 (__arm_vmovnbq_s16): Remove.
3954 (__arm_vmovntq_u32): Remove.
3955 (__arm_vmovnbq_u32): Remove.
3956 (__arm_vmovntq_s32): Remove.
3957 (__arm_vmovnbq_s32): Remove.
3958 (__arm_vmovnbq_m_s16): Remove.
3959 (__arm_vmovntq_m_s16): Remove.
3960 (__arm_vmovnbq_m_u16): Remove.
3961 (__arm_vmovntq_m_u16): Remove.
3962 (__arm_vmovnbq_m_s32): Remove.
3963 (__arm_vmovntq_m_s32): Remove.
3964 (__arm_vmovnbq_m_u32): Remove.
3965 (__arm_vmovntq_m_u32): Remove.
3966 (__arm_vmovntq): Remove.
3967 (__arm_vmovnbq): Remove.
3968 (__arm_vmovnbq_m): Remove.
3969 (__arm_vmovntq_m): Remove.
3970 (vqmovuntq): Remove.
3971 (vqmovunbq): Remove.
3972 (vqmovunbq_m): Remove.
3973 (vqmovuntq_m): Remove.
3974 (vqmovuntq_s16): Remove.
3975 (vqmovunbq_s16): Remove.
3976 (vqmovuntq_s32): Remove.
3977 (vqmovunbq_s32): Remove.
3978 (vqmovunbq_m_s16): Remove.
3979 (vqmovuntq_m_s16): Remove.
3980 (vqmovunbq_m_s32): Remove.
3981 (vqmovuntq_m_s32): Remove.
3982 (__arm_vqmovuntq_s16): Remove.
3983 (__arm_vqmovunbq_s16): Remove.
3984 (__arm_vqmovuntq_s32): Remove.
3985 (__arm_vqmovunbq_s32): Remove.
3986 (__arm_vqmovunbq_m_s16): Remove.
3987 (__arm_vqmovuntq_m_s16): Remove.
3988 (__arm_vqmovunbq_m_s32): Remove.
3989 (__arm_vqmovuntq_m_s32): Remove.
3990 (__arm_vqmovuntq): Remove.
3991 (__arm_vqmovunbq): Remove.
3992 (__arm_vqmovunbq_m): Remove.
3993 (__arm_vqmovuntq_m): Remove.
3995 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
3997 * config/arm/iterators.md (MVE_MOVN, MVE_MOVN_M): New.
3998 (mve_insn): Add vmovnb, vmovnt, vqmovnb, vqmovnt, vqmovunb,
4001 (supf): Add VQMOVUNBQ_M_S, VQMOVUNBQ_S, VQMOVUNTQ_M_S,
4003 * config/arm/mve.md (mve_vmovnbq_<supf><mode>)
4004 (mve_vmovntq_<supf><mode>, mve_vqmovnbq_<supf><mode>)
4005 (mve_vqmovntq_<supf><mode>, mve_vqmovunbq_s<mode>)
4006 (mve_vqmovuntq_s<mode>): Merge into ...
4007 (@mve_<mve_insn>q_<supf><mode>): ... this.
4008 (mve_vmovnbq_m_<supf><mode>, mve_vmovntq_m_<supf><mode>)
4009 (mve_vqmovnbq_m_<supf><mode>, mve_vqmovntq_m_<supf><mode>)
4010 (mve_vqmovunbq_m_s<mode>, mve_vqmovuntq_m_s<mode>): Merge into ...
4011 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
4013 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
4015 * config/arm/arm-mve-builtins-shapes.cc (binary_move_narrow): New.
4016 (binary_move_narrow_unsigned): New.
4017 * config/arm/arm-mve-builtins-shapes.h (binary_move_narrow): New.
4018 (binary_move_narrow_unsigned): New.
4020 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
4022 * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_F): New.
4023 (vrndaq, vrndmq, vrndnq, vrndpq, vrndq, vrndxq): New.
4024 * config/arm/arm-mve-builtins-base.def (vrndaq, vrndmq, vrndnq)
4025 (vrndpq, vrndq, vrndxq): New.
4026 * config/arm/arm-mve-builtins-base.h (vrndaq, vrndmq, vrndnq)
4027 (vrndpq, vrndq, vrndxq): New.
4028 * config/arm/arm_mve.h (vrndxq): Remove.
4046 (vrndxq_f16): Remove.
4047 (vrndxq_f32): Remove.
4048 (vrndq_f16): Remove.
4049 (vrndq_f32): Remove.
4050 (vrndpq_f16): Remove.
4051 (vrndpq_f32): Remove.
4052 (vrndnq_f16): Remove.
4053 (vrndnq_f32): Remove.
4054 (vrndmq_f16): Remove.
4055 (vrndmq_f32): Remove.
4056 (vrndaq_f16): Remove.
4057 (vrndaq_f32): Remove.
4058 (vrndaq_m_f16): Remove.
4059 (vrndmq_m_f16): Remove.
4060 (vrndnq_m_f16): Remove.
4061 (vrndpq_m_f16): Remove.
4062 (vrndq_m_f16): Remove.
4063 (vrndxq_m_f16): Remove.
4064 (vrndaq_m_f32): Remove.
4065 (vrndmq_m_f32): Remove.
4066 (vrndnq_m_f32): Remove.
4067 (vrndpq_m_f32): Remove.
4068 (vrndq_m_f32): Remove.
4069 (vrndxq_m_f32): Remove.
4070 (vrndq_x_f16): Remove.
4071 (vrndq_x_f32): Remove.
4072 (vrndnq_x_f16): Remove.
4073 (vrndnq_x_f32): Remove.
4074 (vrndmq_x_f16): Remove.
4075 (vrndmq_x_f32): Remove.
4076 (vrndpq_x_f16): Remove.
4077 (vrndpq_x_f32): Remove.
4078 (vrndaq_x_f16): Remove.
4079 (vrndaq_x_f32): Remove.
4080 (vrndxq_x_f16): Remove.
4081 (vrndxq_x_f32): Remove.
4082 (__arm_vrndxq_f16): Remove.
4083 (__arm_vrndxq_f32): Remove.
4084 (__arm_vrndq_f16): Remove.
4085 (__arm_vrndq_f32): Remove.
4086 (__arm_vrndpq_f16): Remove.
4087 (__arm_vrndpq_f32): Remove.
4088 (__arm_vrndnq_f16): Remove.
4089 (__arm_vrndnq_f32): Remove.
4090 (__arm_vrndmq_f16): Remove.
4091 (__arm_vrndmq_f32): Remove.
4092 (__arm_vrndaq_f16): Remove.
4093 (__arm_vrndaq_f32): Remove.
4094 (__arm_vrndaq_m_f16): Remove.
4095 (__arm_vrndmq_m_f16): Remove.
4096 (__arm_vrndnq_m_f16): Remove.
4097 (__arm_vrndpq_m_f16): Remove.
4098 (__arm_vrndq_m_f16): Remove.
4099 (__arm_vrndxq_m_f16): Remove.
4100 (__arm_vrndaq_m_f32): Remove.
4101 (__arm_vrndmq_m_f32): Remove.
4102 (__arm_vrndnq_m_f32): Remove.
4103 (__arm_vrndpq_m_f32): Remove.
4104 (__arm_vrndq_m_f32): Remove.
4105 (__arm_vrndxq_m_f32): Remove.
4106 (__arm_vrndq_x_f16): Remove.
4107 (__arm_vrndq_x_f32): Remove.
4108 (__arm_vrndnq_x_f16): Remove.
4109 (__arm_vrndnq_x_f32): Remove.
4110 (__arm_vrndmq_x_f16): Remove.
4111 (__arm_vrndmq_x_f32): Remove.
4112 (__arm_vrndpq_x_f16): Remove.
4113 (__arm_vrndpq_x_f32): Remove.
4114 (__arm_vrndaq_x_f16): Remove.
4115 (__arm_vrndaq_x_f32): Remove.
4116 (__arm_vrndxq_x_f16): Remove.
4117 (__arm_vrndxq_x_f32): Remove.
4118 (__arm_vrndxq): Remove.
4119 (__arm_vrndq): Remove.
4120 (__arm_vrndpq): Remove.
4121 (__arm_vrndnq): Remove.
4122 (__arm_vrndmq): Remove.
4123 (__arm_vrndaq): Remove.
4124 (__arm_vrndaq_m): Remove.
4125 (__arm_vrndmq_m): Remove.
4126 (__arm_vrndnq_m): Remove.
4127 (__arm_vrndpq_m): Remove.
4128 (__arm_vrndq_m): Remove.
4129 (__arm_vrndxq_m): Remove.
4130 (__arm_vrndq_x): Remove.
4131 (__arm_vrndnq_x): Remove.
4132 (__arm_vrndmq_x): Remove.
4133 (__arm_vrndpq_x): Remove.
4134 (__arm_vrndaq_x): Remove.
4135 (__arm_vrndxq_x): Remove.
4137 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
4139 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_N_NO_U_F): New.
4140 (vabsq, vnegq, vclsq, vclzq, vqabsq, vqnegq): New.
4141 * config/arm/arm-mve-builtins-base.def (vabsq, vnegq, vclsq)
4142 (vclzq, vqabsq, vqnegq): New.
4143 * config/arm/arm-mve-builtins-base.h (vabsq, vnegq, vclsq, vclzq)
4144 (vqabsq, vqnegq): New.
4145 * config/arm/arm_mve.h (vabsq): Remove.
4148 (vabsq_f16): Remove.
4149 (vabsq_f32): Remove.
4151 (vabsq_s16): Remove.
4152 (vabsq_s32): Remove.
4153 (vabsq_m_s8): Remove.
4154 (vabsq_m_s16): Remove.
4155 (vabsq_m_s32): Remove.
4156 (vabsq_m_f16): Remove.
4157 (vabsq_m_f32): Remove.
4158 (vabsq_x_s8): Remove.
4159 (vabsq_x_s16): Remove.
4160 (vabsq_x_s32): Remove.
4161 (vabsq_x_f16): Remove.
4162 (vabsq_x_f32): Remove.
4163 (__arm_vabsq_s8): Remove.
4164 (__arm_vabsq_s16): Remove.
4165 (__arm_vabsq_s32): Remove.
4166 (__arm_vabsq_m_s8): Remove.
4167 (__arm_vabsq_m_s16): Remove.
4168 (__arm_vabsq_m_s32): Remove.
4169 (__arm_vabsq_x_s8): Remove.
4170 (__arm_vabsq_x_s16): Remove.
4171 (__arm_vabsq_x_s32): Remove.
4172 (__arm_vabsq_f16): Remove.
4173 (__arm_vabsq_f32): Remove.
4174 (__arm_vabsq_m_f16): Remove.
4175 (__arm_vabsq_m_f32): Remove.
4176 (__arm_vabsq_x_f16): Remove.
4177 (__arm_vabsq_x_f32): Remove.
4178 (__arm_vabsq): Remove.
4179 (__arm_vabsq_m): Remove.
4180 (__arm_vabsq_x): Remove.
4184 (vnegq_f16): Remove.
4185 (vnegq_f32): Remove.
4187 (vnegq_s16): Remove.
4188 (vnegq_s32): Remove.
4189 (vnegq_m_s8): Remove.
4190 (vnegq_m_s16): Remove.
4191 (vnegq_m_s32): Remove.
4192 (vnegq_m_f16): Remove.
4193 (vnegq_m_f32): Remove.
4194 (vnegq_x_s8): Remove.
4195 (vnegq_x_s16): Remove.
4196 (vnegq_x_s32): Remove.
4197 (vnegq_x_f16): Remove.
4198 (vnegq_x_f32): Remove.
4199 (__arm_vnegq_s8): Remove.
4200 (__arm_vnegq_s16): Remove.
4201 (__arm_vnegq_s32): Remove.
4202 (__arm_vnegq_m_s8): Remove.
4203 (__arm_vnegq_m_s16): Remove.
4204 (__arm_vnegq_m_s32): Remove.
4205 (__arm_vnegq_x_s8): Remove.
4206 (__arm_vnegq_x_s16): Remove.
4207 (__arm_vnegq_x_s32): Remove.
4208 (__arm_vnegq_f16): Remove.
4209 (__arm_vnegq_f32): Remove.
4210 (__arm_vnegq_m_f16): Remove.
4211 (__arm_vnegq_m_f32): Remove.
4212 (__arm_vnegq_x_f16): Remove.
4213 (__arm_vnegq_x_f32): Remove.
4214 (__arm_vnegq): Remove.
4215 (__arm_vnegq_m): Remove.
4216 (__arm_vnegq_x): Remove.
4221 (vclsq_s16): Remove.
4222 (vclsq_s32): Remove.
4223 (vclsq_m_s8): Remove.
4224 (vclsq_m_s16): Remove.
4225 (vclsq_m_s32): Remove.
4226 (vclsq_x_s8): Remove.
4227 (vclsq_x_s16): Remove.
4228 (vclsq_x_s32): Remove.
4229 (__arm_vclsq_s8): Remove.
4230 (__arm_vclsq_s16): Remove.
4231 (__arm_vclsq_s32): Remove.
4232 (__arm_vclsq_m_s8): Remove.
4233 (__arm_vclsq_m_s16): Remove.
4234 (__arm_vclsq_m_s32): Remove.
4235 (__arm_vclsq_x_s8): Remove.
4236 (__arm_vclsq_x_s16): Remove.
4237 (__arm_vclsq_x_s32): Remove.
4238 (__arm_vclsq): Remove.
4239 (__arm_vclsq_m): Remove.
4240 (__arm_vclsq_x): Remove.
4245 (vclzq_s16): Remove.
4246 (vclzq_s32): Remove.
4248 (vclzq_u16): Remove.
4249 (vclzq_u32): Remove.
4250 (vclzq_m_u8): Remove.
4251 (vclzq_m_s8): Remove.
4252 (vclzq_m_u16): Remove.
4253 (vclzq_m_s16): Remove.
4254 (vclzq_m_u32): Remove.
4255 (vclzq_m_s32): Remove.
4256 (vclzq_x_s8): Remove.
4257 (vclzq_x_s16): Remove.
4258 (vclzq_x_s32): Remove.
4259 (vclzq_x_u8): Remove.
4260 (vclzq_x_u16): Remove.
4261 (vclzq_x_u32): Remove.
4262 (__arm_vclzq_s8): Remove.
4263 (__arm_vclzq_s16): Remove.
4264 (__arm_vclzq_s32): Remove.
4265 (__arm_vclzq_u8): Remove.
4266 (__arm_vclzq_u16): Remove.
4267 (__arm_vclzq_u32): Remove.
4268 (__arm_vclzq_m_u8): Remove.
4269 (__arm_vclzq_m_s8): Remove.
4270 (__arm_vclzq_m_u16): Remove.
4271 (__arm_vclzq_m_s16): Remove.
4272 (__arm_vclzq_m_u32): Remove.
4273 (__arm_vclzq_m_s32): Remove.
4274 (__arm_vclzq_x_s8): Remove.
4275 (__arm_vclzq_x_s16): Remove.
4276 (__arm_vclzq_x_s32): Remove.
4277 (__arm_vclzq_x_u8): Remove.
4278 (__arm_vclzq_x_u16): Remove.
4279 (__arm_vclzq_x_u32): Remove.
4280 (__arm_vclzq): Remove.
4281 (__arm_vclzq_m): Remove.
4282 (__arm_vclzq_x): Remove.
4287 (vqabsq_s8): Remove.
4288 (vqabsq_s16): Remove.
4289 (vqabsq_s32): Remove.
4290 (vqnegq_s8): Remove.
4291 (vqnegq_s16): Remove.
4292 (vqnegq_s32): Remove.
4293 (vqnegq_m_s8): Remove.
4294 (vqabsq_m_s8): Remove.
4295 (vqnegq_m_s16): Remove.
4296 (vqabsq_m_s16): Remove.
4297 (vqnegq_m_s32): Remove.
4298 (vqabsq_m_s32): Remove.
4299 (__arm_vqabsq_s8): Remove.
4300 (__arm_vqabsq_s16): Remove.
4301 (__arm_vqabsq_s32): Remove.
4302 (__arm_vqnegq_s8): Remove.
4303 (__arm_vqnegq_s16): Remove.
4304 (__arm_vqnegq_s32): Remove.
4305 (__arm_vqnegq_m_s8): Remove.
4306 (__arm_vqabsq_m_s8): Remove.
4307 (__arm_vqnegq_m_s16): Remove.
4308 (__arm_vqabsq_m_s16): Remove.
4309 (__arm_vqnegq_m_s32): Remove.
4310 (__arm_vqabsq_m_s32): Remove.
4311 (__arm_vqabsq): Remove.
4312 (__arm_vqnegq): Remove.
4313 (__arm_vqnegq_m): Remove.
4314 (__arm_vqabsq_m): Remove.
4316 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
4318 * config/arm/iterators.md (MVE_INT_M_UNARY, MVE_INT_UNARY)
4319 (MVE_FP_UNARY, MVE_FP_M_UNARY): New.
4320 (mve_insn): Add vabs, vcls, vclz, vneg, vqabs, vqneg, vrnda,
4321 vrndm, vrndn, vrndp, vrnd, vrndx.
4322 (isu): Add VABSQ_M_S, VCLSQ_M_S, VCLZQ_M_S, VCLZQ_M_U, VNEGQ_M_S,
4323 VQABSQ_M_S, VQNEGQ_M_S.
4325 * config/arm/mve.md (mve_vrndq_m_f<mode>, mve_vrndxq_f<mode>)
4326 (mve_vrndq_f<mode>, mve_vrndpq_f<mode>, mve_vrndnq_f<mode>)
4327 (mve_vrndmq_f<mode>, mve_vrndaq_f<mode>): Merge into ...
4328 (@mve_<mve_insn>q_f<mode>): ... this.
4329 (mve_vnegq_f<mode>, mve_vabsq_f<mode>): Merge into ...
4330 (mve_v<absneg_str>q_f<mode>): ... this.
4331 (mve_vnegq_s<mode>, mve_vabsq_s<mode>): Merge into ...
4332 (mve_v<absneg_str>q_s<mode>): ... this.
4333 (mve_vclsq_s<mode>, mve_vqnegq_s<mode>, mve_vqabsq_s<mode>): Merge into ...
4334 (@mve_<mve_insn>q_<supf><mode>): ... this.
4335 (mve_vabsq_m_s<mode>, mve_vclsq_m_s<mode>)
4336 (mve_vclzq_m_<supf><mode>, mve_vnegq_m_s<mode>)
4337 (mve_vqabsq_m_s<mode>, mve_vqnegq_m_s<mode>): Merge into ...
4338 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
4339 (mve_vabsq_m_f<mode>, mve_vnegq_m_f<mode>, mve_vrndaq_m_f<mode>)
4340 (mve_vrndmq_m_f<mode>, mve_vrndnq_m_f<mode>, mve_vrndpq_m_f<mode>)
4341 (mve_vrndxq_m_f<mode>): Merge into ...
4342 (@mve_<mve_insn>q_m_f<mode>): ... this.
4344 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
4346 * config/arm/arm-mve-builtins-shapes.cc (unary): New.
4347 * config/arm/arm-mve-builtins-shapes.h (unary): New.
4349 2023-05-09 Jakub Jelinek <jakub@redhat.com>
4351 * mux-utils.h: Fix comment typo, avoides -> avoids.
4353 2023-05-09 Jakub Jelinek <jakub@redhat.com>
4355 PR tree-optimization/109778
4356 * wide-int.h (wi::lrotate, wi::rrotate): Call wi::lrshift on
4357 wi::zext (x, width) rather than x if width != precision, rather
4358 than using wi::zext (right, width) after the shift.
4359 * tree-ssa-ccp.cc (bit_value_binop): Call wi::ext on the results
4360 of wi::lrotate or wi::rrotate.
4362 2023-05-09 Alexander Monakov <amonakov@ispras.ru>
4364 * genmatch.cc (get_out_file): Make static and rename to ...
4365 (choose_output): ... this. Reimplement. Update all uses ...
4366 (decision_tree::gen): ... here and ...
4369 2023-05-09 Alexander Monakov <amonakov@ispras.ru>
4371 * genmatch.cc (showUsage): Reimplement as ...
4372 (usage): ...this. Adjust all uses.
4373 (main): Print usage when no arguments. Add missing 'return 1'.
4375 2023-05-09 Alexander Monakov <amonakov@ispras.ru>
4377 * genmatch.cc (header_file): Make static.
4378 (emit_func): Rename to...
4379 (fp_decl): ... this. Adjust all uses.
4380 (fp_decl_done): New function. Use it...
4381 (decision_tree::gen): ... here and...
4382 (write_predicate): ... here.
4385 2023-05-09 Richard Sandiford <richard.sandiford@arm.com>
4387 * ira-conflicts.cc (can_use_same_reg_p): Skip over non-matching
4390 2023-05-08 Roger Sayle <roger@nextmovesoftware.com>
4391 Uros Bizjak <ubizjak@gmail.com>
4393 * config/i386/i386.md (any_or_plus): Move definition earlier.
4394 (*insvti_highpart_1): New define_insn_and_split to overwrite
4395 (insv) the highpart of a TImode register/memory.
4397 2023-05-08 Eugene Rozenfeld <erozen@microsoft.com>
4399 * auto-profile.cc (auto_profile): Check todo from early_inline
4400 to see if cleanup_tree_vfg needs to be called.
4401 (early_inline): Return todo from early_inliner.
4403 2023-05-08 Kito Cheng <kito.cheng@sifive.com>
4405 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::get_vector_info):
4407 (pass_vsetvl::get_block_info): New.
4408 (pass_vsetvl::update_vector_info): New.
4409 (pass_vsetvl::simple_vsetvl): Use get_vector_info.
4410 (pass_vsetvl::compute_local_backward_infos): Ditto.
4411 (pass_vsetvl::transfer_before): Ditto.
4412 (pass_vsetvl::transfer_after): Ditto.
4413 (pass_vsetvl::emit_local_forward_vsetvls): Ditto.
4414 (pass_vsetvl::local_eliminate_vsetvl_insn): Ditto.
4415 (pass_vsetvl::cleanup_insns): Ditto.
4416 (pass_vsetvl::compute_local_backward_infos): Use
4419 2023-05-08 Jeff Law <jlaw@ventanamicro>
4421 * config/stormy16/stormy16.md (zero_extendhisi2): Fix length.
4423 2023-05-08 Richard Biener <rguenther@suse.de>
4424 Michael Meissner <meissner@linux.ibm.com>
4426 PR middle-end/108623
4427 * tree-core.h (tree_type_common): Bump up precision field to 16 bits.
4428 Align bit fields > 1 bit to at least an 8-bit boundary.
4430 2023-05-08 Andrew Pinski <apinski@marvell.com>
4432 PR tree-optimization/109424
4433 PR tree-optimization/59424
4434 * tree-ssa-phiopt.cc (factor_out_conditional_conversion): Rename to ...
4435 (factor_out_conditional_operation): This and add support for all unary
4437 (pass_phiopt::execute): Update call to factor_out_conditional_conversion
4438 to call factor_out_conditional_operation instead.
4440 2023-05-08 Andrew Pinski <apinski@marvell.com>
4442 * tree-ssa-phiopt.cc (pass_phiopt::execute): Loop
4443 over factor_out_conditional_conversion.
4445 2023-05-08 Andrew Pinski <apinski@marvell.com>
4447 PR tree-optimization/49959
4448 PR tree-optimization/103771
4449 * tree-ssa-phiopt.cc (pass_phiopt::execute): Support
4450 Diamond shapped bb form for factor_out_conditional_conversion.
4452 2023-05-08 Juzhe-Zhong <juzhe.zhong@rivai.ai>
4454 * config/riscv/autovec.md (movmisalign<mode>): New pattern.
4455 * config/riscv/riscv-protos.h (riscv_vector_mask_mode_p): Delete.
4456 (riscv_vector_get_mask_mode): Ditto.
4457 (get_mask_policy_no_pred): Ditto.
4458 (get_tail_policy_no_pred): Ditto.
4459 (get_mask_mode): New function.
4460 * config/riscv/riscv-v.cc (get_mask_policy_no_pred): Delete.
4461 (get_tail_policy_no_pred): Ditto.
4462 (riscv_vector_mask_mode_p): Ditto.
4463 (riscv_vector_get_mask_mode): Ditto.
4464 (get_mask_mode): New function.
4465 * config/riscv/riscv-vector-builtins.cc (use_real_merge_p): Remove
4467 (get_tail_policy_for_pred): Ditto.
4468 * config/riscv/riscv-vector-builtins.h (get_tail_policy_for_pred): Ditto.
4469 (get_mask_policy_for_pred): Ditto
4470 * config/riscv/riscv.cc (riscv_get_mask_mode): Refine codes.
4472 2023-05-08 Kito Cheng <kito.cheng@sifive.com>
4474 * common/config/riscv/riscv-common.cc (riscv_select_multilib_by_abi): New.
4475 (riscv_select_multilib): New.
4476 (riscv_compute_multilib): Extract logic to riscv_select_multilib and
4477 also handle select_by_abi.
4478 * config/riscv/elf.h (RISCV_USE_CUSTOMISED_MULTI_LIB): Change it
4479 to select_by_abi_arch_cmodel from 1.
4480 * config/riscv/linux.h (RISCV_USE_CUSTOMISED_MULTI_LIB): Define.
4481 * config/riscv/riscv-opts.h (enum riscv_multilib_select_kind): New.
4483 2023-05-08 Alexander Monakov <amonakov@ispras.ru>
4485 * Makefile.in: (gimple-match-head.o-warn): Remove.
4486 (GIMPLE_MATCH_PD_SEQ_SRC): Do not depend on
4487 gimple-match-exports.cc.
4488 (gimple-match-auto.h): Only depend on s-gimple-match.
4489 (generic-match-auto.h): Likewise.
4491 2023-05-08 Andrew Pinski <apinski@marvell.com>
4493 PR tree-optimization/109691
4494 * tree-ssa-dce.cc (simple_dce_from_worklist): Add need_eh_cleanup
4496 If the removed statement can throw, have need_eh_cleanup
4497 include the bb of that statement.
4498 * tree-ssa-dce.h (simple_dce_from_worklist): Update declaration.
4499 * tree-ssa-propagate.cc (struct prop_stats_d): Remove
4501 (substitute_and_fold_dom_walker::substitute_and_fold_dom_walker):
4502 Initialize dceworklist instead of stmts_to_remove.
4503 (substitute_and_fold_dom_walker::~substitute_and_fold_dom_walker):
4504 Destore dceworklist instead of stmts_to_remove.
4505 (substitute_and_fold_dom_walker::before_dom_children):
4506 Set dceworklist instead of adding to stmts_to_remove.
4507 (substitute_and_fold_engine::substitute_and_fold):
4508 Call simple_dce_from_worklist instead of poping
4510 Don't update the stat on removal statements.
4512 2023-05-07 Andrew Pinski <apinski@marvell.com>
4515 * config/aarch64/aarch64-builtins.cc (aarch64_simd_switcher::aarch64_simd_switcher):
4516 Change argument type to aarch64_feature_flags.
4517 * config/aarch64/aarch64-protos.h (aarch64_simd_switcher): Change
4518 constructor argument type to aarch64_feature_flags.
4519 Change m_old_asm_isa_flags to be aarch64_feature_flags.
4521 2023-05-07 Jiufu Guo <guojiufu@linux.ibm.com>
4523 * config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Generate
4524 more parallel code if can_create_pseudo_p.
4526 2023-05-07 Roger Sayle <roger@nextmovesoftware.com>
4529 * lower-subreg.cc (resolve_simple_move): Don't emit a clobber
4530 immediately before moving a multi-word register by parts.
4532 2023-05-06 Jeff Law <jlaw@ventanamicro>
4534 * config/riscv/riscv-v.cc (riscv_vector_preferred_simd_mode): Delete.
4536 2023-05-06 Michael Collison <collison@rivosinc.com>
4538 * tree-vect-slp.cc (can_duplicate_and_interleave_p):
4539 Check that GET_MODE_NUNITS is a multiple of 2.
4541 2023-05-06 Michael Collison <collison@rivosinc.com>
4543 * config/riscv/riscv.cc
4544 (riscv_estimated_poly_value): Implement
4545 TARGET_ESTIMATED_POLY_VALUE.
4546 (riscv_preferred_simd_mode): Implement
4547 TARGET_VECTORIZE_PREFERRED_SIMD_MODE.
4548 (riscv_get_mask_mode): Implement TARGET_VECTORIZE_GET_MASK_MODE.
4549 (riscv_empty_mask_is_expensive): Implement
4550 TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE.
4551 (riscv_vectorize_create_costs): Implement
4552 TARGET_VECTORIZE_CREATE_COSTS.
4553 (riscv_support_vector_misalignment): Implement
4554 TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT.
4555 (TARGET_ESTIMATED_POLY_VALUE): Register target macro.
4556 (TARGET_VECTORIZE_GET_MASK_MODE): Ditto.
4557 (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): Ditto.
4558 (TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT): Ditto.
4560 2023-05-06 Jeff Law <jlaw@ventanamicro>
4562 * config/riscv/riscv-v.cc (autovec_use_vlmax_p): Remove
4563 duplicate definition.
4565 2023-05-06 Michael Collison <collison@rivosinc.com>
4567 * config/riscv/riscv-v.cc (autovec_use_vlmax_p): New function.
4568 (riscv_vector_preferred_simd_mode): Ditto.
4569 (get_mask_policy_no_pred): Ditto.
4570 (get_tail_policy_no_pred): Ditto.
4571 (riscv_vector_mask_mode_p): Ditto.
4572 (riscv_vector_get_mask_mode): Ditto.
4574 2023-05-06 Michael Collison <collison@rivosinc.com>
4576 * config/riscv/riscv-vector-builtins.cc (get_tail_policy_for_pred):
4577 Remove static declaration to to make externally visible.
4578 (get_mask_policy_for_pred): Ditto.
4579 * config/riscv/riscv-vector-builtins.h (get_tail_policy_for_pred):
4580 New external declaration.
4581 (get_mask_policy_for_pred): Ditto.
4583 2023-05-06 Michael Collison <collison@rivosinc.com>
4585 * config/riscv/riscv-protos.h (riscv_vector_mask_mode_p): New.
4586 (riscv_vector_get_mask_mode): Ditto.
4587 (get_mask_policy_no_pred): Ditto.
4588 (get_tail_policy_no_pred): Ditto.
4590 2023-05-06 Xi Ruoyao <xry111@xry111.site>
4592 * config/loongarch/loongarch.h (struct machine_function): Add
4593 reg_is_wrapped_separately array for register wrapping
4595 * config/loongarch/loongarch.cc
4596 (loongarch_get_separate_components): New function.
4597 (loongarch_components_for_bb): Likewise.
4598 (loongarch_disqualify_components): Likewise.
4599 (loongarch_process_components): Likewise.
4600 (loongarch_emit_prologue_components): Likewise.
4601 (loongarch_emit_epilogue_components): Likewise.
4602 (loongarch_set_handled_components): Likewise.
4603 (TARGET_SHRINK_WRAP_GET_SEPARATE_COMPONENTS): Define.
4604 (TARGET_SHRINK_WRAP_COMPONENTS_FOR_BB): Likewise.
4605 (TARGET_SHRINK_WRAP_DISQUALIFY_COMPONENTS): Likewise.
4606 (TARGET_SHRINK_WRAP_EMIT_PROLOGUE_COMPONENTS): Likewise.
4607 (TARGET_SHRINK_WRAP_EMIT_EPILOGUE_COMPONENTS): Likewise.
4608 (TARGET_SHRINK_WRAP_SET_HANDLED_COMPONENTS): Likewise.
4609 (loongarch_for_each_saved_reg): Skip registers that are wrapped
4612 2023-05-06 Xi Ruoyao <xry111@xry111.site>
4615 * Makefile.in (s-macro_list): Pass -nostdinc to
4618 2023-05-06 Juzhe-Zhong <juzhe.zhong@rivai.ai>
4620 * config/riscv/riscv-protos.h (preferred_simd_mode): New function.
4621 * config/riscv/riscv-v.cc (autovec_use_vlmax_p): Ditto.
4622 (preferred_simd_mode): Ditto.
4623 * config/riscv/riscv.cc (riscv_get_arg_info): Handle RVV type in function arg.
4624 (riscv_convert_vector_bits): Adjust for RVV auto-vectorization.
4625 (riscv_preferred_simd_mode): New function.
4626 (TARGET_VECTORIZE_PREFERRED_SIMD_MODE): New target hook support.
4627 * config/riscv/vector.md: Add autovec.md.
4628 * config/riscv/autovec.md: New file.
4630 2023-05-06 Jakub Jelinek <jakub@redhat.com>
4632 * real.h (dconst_pi): Define.
4633 (dconst_e_ptr): Formatting fix.
4634 (dconst_pi_ptr): Declare.
4635 * real.cc (dconst_pi_ptr): New function.
4636 * gimple-range-op.cc (cfn_sincos::fold_range): Intersect the generic
4637 boundaries range with range computed from sin/cos of the particular
4638 bounds if the argument range is shorter than 2*pi.
4639 (cfn_sincos::op1_range): Take bulps into account when determining
4640 which result ranges are always invalid or behave like known NAN.
4642 2023-05-06 Aldy Hernandez <aldyh@redhat.com>
4644 * gimple-range-cache.cc (sbr_sparse_bitmap::set_bb_range): Do not
4645 pass type to vrange_storage::equal_p.
4646 * value-range-storage.cc (vrange_storage::equal_p): Remove type.
4647 (irange_storage::equal_p): Same.
4648 (frange_storage::equal_p): Same.
4649 * value-range-storage.h (class frange_storage): Same.
4651 2023-05-06 Juzhe-Zhong <juzhe.zhong@rivai.ai>
4654 * config/riscv/riscv-vsetvl.cc (local_eliminate_vsetvl_insn): Remove it.
4655 (pass_vsetvl::local_eliminate_vsetvl_insn): New function.
4657 2023-05-06 liuhongt <hongtao.liu@intel.com>
4659 * combine.cc (maybe_swap_commutative_operands): Canonicalize
4660 vec_merge when mask is constant.
4661 * doc/md.texi: Document vec_merge canonicalization.
4663 2023-05-06 Jakub Jelinek <jakub@redhat.com>
4665 * value-range.h (frange_arithmetic): Declare.
4666 * range-op-float.cc (frange_arithmetic): No longer static.
4667 * gimple-range-op.cc (frange_mpfr_arg1): New function.
4668 (cfn_sqrt::fold_range): Intersect the generic boundaries range
4669 with range computed from sqrt of the particular bounds.
4670 (cfn_sqrt::op1_range): Intersect the generic boundaries range
4671 with range computed from squared particular bounds.
4673 2023-05-06 Jakub Jelinek <jakub@redhat.com>
4675 * Makefile.in (check_p_numbers): Rename to one_to_9999, move
4676 earlier with helper variables also renamed.
4677 (MATCH_SPLUT_SEQ): Use $(wordlist 1,$(NUM_MATCH_SPLITS),$(one_to_9999))
4678 instead of $(shell seq 1 $(NUM_MATCH_SPLITS)).
4679 (check_p_subdirs): Use $(one_to_9999) instead of $(check_p_numbers).
4681 2023-05-06 Hans-Peter Nilsson <hp@axis.com>
4683 * config/cris/cris.md (splitop): Add PLUS.
4684 * config/cris/cris.cc (cris_split_constant): Also handle
4685 PLUS when a split into two insns may be useful.
4687 2023-05-05 Hans-Peter Nilsson <hp@axis.com>
4689 * config/cris/cris.md (movandsplit1): New define_peephole2.
4691 2023-05-05 Hans-Peter Nilsson <hp@axis.com>
4693 * config/cris/cris.md (lsrandsplit1): New define_peephole2.
4695 2023-05-05 Hans-Peter Nilsson <hp@axis.com>
4697 * doc/md.texi (define_peephole2): Document order of scanning.
4699 2023-05-05 Pan Li <pan2.li@intel.com>
4700 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
4702 * config/riscv/vector.md: Allow const as the operand of RVV
4705 2023-05-05 Pan Li <pan2.li@intel.com>
4707 * config/riscv/riscv.h (VECTOR_STORE_FLAG_VALUE): Add new macro
4708 consumed by simplify_rtx.
4710 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
4712 * config/arm/arm-mve-builtins-base.cc (vrshrq, vshrq): New.
4713 * config/arm/arm-mve-builtins-base.def (vrshrq, vshrq): New.
4714 * config/arm/arm-mve-builtins-base.h (vrshrq, vshrq): New.
4715 * config/arm/arm_mve.h (vshrq): Remove.
4721 (vshrq_n_s8): Remove.
4722 (vshrq_n_s16): Remove.
4723 (vshrq_n_s32): Remove.
4724 (vshrq_n_u8): Remove.
4725 (vshrq_n_u16): Remove.
4726 (vshrq_n_u32): Remove.
4727 (vrshrq_n_u8): Remove.
4728 (vrshrq_n_s8): Remove.
4729 (vrshrq_n_u16): Remove.
4730 (vrshrq_n_s16): Remove.
4731 (vrshrq_n_u32): Remove.
4732 (vrshrq_n_s32): Remove.
4733 (vrshrq_m_n_s8): Remove.
4734 (vrshrq_m_n_s32): Remove.
4735 (vrshrq_m_n_s16): Remove.
4736 (vrshrq_m_n_u8): Remove.
4737 (vrshrq_m_n_u32): Remove.
4738 (vrshrq_m_n_u16): Remove.
4739 (vshrq_m_n_s8): Remove.
4740 (vshrq_m_n_s32): Remove.
4741 (vshrq_m_n_s16): Remove.
4742 (vshrq_m_n_u8): Remove.
4743 (vshrq_m_n_u32): Remove.
4744 (vshrq_m_n_u16): Remove.
4745 (vrshrq_x_n_s8): Remove.
4746 (vrshrq_x_n_s16): Remove.
4747 (vrshrq_x_n_s32): Remove.
4748 (vrshrq_x_n_u8): Remove.
4749 (vrshrq_x_n_u16): Remove.
4750 (vrshrq_x_n_u32): Remove.
4751 (vshrq_x_n_s8): Remove.
4752 (vshrq_x_n_s16): Remove.
4753 (vshrq_x_n_s32): Remove.
4754 (vshrq_x_n_u8): Remove.
4755 (vshrq_x_n_u16): Remove.
4756 (vshrq_x_n_u32): Remove.
4757 (__arm_vshrq_n_s8): Remove.
4758 (__arm_vshrq_n_s16): Remove.
4759 (__arm_vshrq_n_s32): Remove.
4760 (__arm_vshrq_n_u8): Remove.
4761 (__arm_vshrq_n_u16): Remove.
4762 (__arm_vshrq_n_u32): Remove.
4763 (__arm_vrshrq_n_u8): Remove.
4764 (__arm_vrshrq_n_s8): Remove.
4765 (__arm_vrshrq_n_u16): Remove.
4766 (__arm_vrshrq_n_s16): Remove.
4767 (__arm_vrshrq_n_u32): Remove.
4768 (__arm_vrshrq_n_s32): Remove.
4769 (__arm_vrshrq_m_n_s8): Remove.
4770 (__arm_vrshrq_m_n_s32): Remove.
4771 (__arm_vrshrq_m_n_s16): Remove.
4772 (__arm_vrshrq_m_n_u8): Remove.
4773 (__arm_vrshrq_m_n_u32): Remove.
4774 (__arm_vrshrq_m_n_u16): Remove.
4775 (__arm_vshrq_m_n_s8): Remove.
4776 (__arm_vshrq_m_n_s32): Remove.
4777 (__arm_vshrq_m_n_s16): Remove.
4778 (__arm_vshrq_m_n_u8): Remove.
4779 (__arm_vshrq_m_n_u32): Remove.
4780 (__arm_vshrq_m_n_u16): Remove.
4781 (__arm_vrshrq_x_n_s8): Remove.
4782 (__arm_vrshrq_x_n_s16): Remove.
4783 (__arm_vrshrq_x_n_s32): Remove.
4784 (__arm_vrshrq_x_n_u8): Remove.
4785 (__arm_vrshrq_x_n_u16): Remove.
4786 (__arm_vrshrq_x_n_u32): Remove.
4787 (__arm_vshrq_x_n_s8): Remove.
4788 (__arm_vshrq_x_n_s16): Remove.
4789 (__arm_vshrq_x_n_s32): Remove.
4790 (__arm_vshrq_x_n_u8): Remove.
4791 (__arm_vshrq_x_n_u16): Remove.
4792 (__arm_vshrq_x_n_u32): Remove.
4793 (__arm_vshrq): Remove.
4794 (__arm_vrshrq): Remove.
4795 (__arm_vrshrq_m): Remove.
4796 (__arm_vshrq_m): Remove.
4797 (__arm_vrshrq_x): Remove.
4798 (__arm_vshrq_x): Remove.
4800 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
4802 * config/arm/iterators.md (MVE_VSHRQ_M_N, MVE_VSHRQ_N): New.
4803 (mve_insn): Add vrshr, vshr.
4804 * config/arm/mve.md (mve_vshrq_n_<supf><mode>)
4805 (mve_vrshrq_n_<supf><mode>): Merge into ...
4806 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
4807 (mve_vrshrq_m_n_<supf><mode>, mve_vshrq_m_n_<supf><mode>): Merge
4809 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
4811 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
4813 * config/arm/arm-mve-builtins-shapes.cc (binary_rshift): New.
4814 * config/arm/arm-mve-builtins-shapes.h (binary_rshift): New.
4816 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
4818 * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N_NO_U_F): New.
4819 (vqshrunbq, vqshruntq, vqrshrunbq, vqrshruntq): New.
4820 * config/arm/arm-mve-builtins-base.def (vqshrunbq, vqshruntq)
4821 (vqrshrunbq, vqrshruntq): New.
4822 * config/arm/arm-mve-builtins-base.h (vqshrunbq, vqshruntq)
4823 (vqrshrunbq, vqrshruntq): New.
4824 * config/arm/arm-mve-builtins.cc
4825 (function_instance::has_inactive_argument): Handle vqshrunbq,
4826 vqshruntq, vqrshrunbq, vqrshruntq.
4827 * config/arm/arm_mve.h (vqrshrunbq): Remove.
4828 (vqrshruntq): Remove.
4829 (vqrshrunbq_m): Remove.
4830 (vqrshruntq_m): Remove.
4831 (vqrshrunbq_n_s16): Remove.
4832 (vqrshrunbq_n_s32): Remove.
4833 (vqrshruntq_n_s16): Remove.
4834 (vqrshruntq_n_s32): Remove.
4835 (vqrshrunbq_m_n_s32): Remove.
4836 (vqrshrunbq_m_n_s16): Remove.
4837 (vqrshruntq_m_n_s32): Remove.
4838 (vqrshruntq_m_n_s16): Remove.
4839 (__arm_vqrshrunbq_n_s16): Remove.
4840 (__arm_vqrshrunbq_n_s32): Remove.
4841 (__arm_vqrshruntq_n_s16): Remove.
4842 (__arm_vqrshruntq_n_s32): Remove.
4843 (__arm_vqrshrunbq_m_n_s32): Remove.
4844 (__arm_vqrshrunbq_m_n_s16): Remove.
4845 (__arm_vqrshruntq_m_n_s32): Remove.
4846 (__arm_vqrshruntq_m_n_s16): Remove.
4847 (__arm_vqrshrunbq): Remove.
4848 (__arm_vqrshruntq): Remove.
4849 (__arm_vqrshrunbq_m): Remove.
4850 (__arm_vqrshruntq_m): Remove.
4851 (vqshrunbq): Remove.
4852 (vqshruntq): Remove.
4853 (vqshrunbq_m): Remove.
4854 (vqshruntq_m): Remove.
4855 (vqshrunbq_n_s16): Remove.
4856 (vqshruntq_n_s16): Remove.
4857 (vqshrunbq_n_s32): Remove.
4858 (vqshruntq_n_s32): Remove.
4859 (vqshrunbq_m_n_s32): Remove.
4860 (vqshrunbq_m_n_s16): Remove.
4861 (vqshruntq_m_n_s32): Remove.
4862 (vqshruntq_m_n_s16): Remove.
4863 (__arm_vqshrunbq_n_s16): Remove.
4864 (__arm_vqshruntq_n_s16): Remove.
4865 (__arm_vqshrunbq_n_s32): Remove.
4866 (__arm_vqshruntq_n_s32): Remove.
4867 (__arm_vqshrunbq_m_n_s32): Remove.
4868 (__arm_vqshrunbq_m_n_s16): Remove.
4869 (__arm_vqshruntq_m_n_s32): Remove.
4870 (__arm_vqshruntq_m_n_s16): Remove.
4871 (__arm_vqshrunbq): Remove.
4872 (__arm_vqshruntq): Remove.
4873 (__arm_vqshrunbq_m): Remove.
4874 (__arm_vqshruntq_m): Remove.
4876 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
4878 * config/arm/iterators.md (MVE_SHRN_N): Add VQRSHRUNBQ,
4879 VQRSHRUNTQ, VQSHRUNBQ, VQSHRUNTQ.
4880 (MVE_SHRN_M_N): Likewise.
4881 (mve_insn): Add vqrshrunb, vqrshrunt, vqshrunb, vqshrunt.
4882 (isu): Add VQRSHRUNBQ, VQRSHRUNTQ, VQSHRUNBQ, VQSHRUNTQ.
4884 * config/arm/mve.md (mve_vqrshrunbq_n_s<mode>): Remove.
4885 (mve_vqrshruntq_n_s<mode>): Remove.
4886 (mve_vqshrunbq_n_s<mode>): Remove.
4887 (mve_vqshruntq_n_s<mode>): Remove.
4888 (mve_vqrshrunbq_m_n_s<mode>): Remove.
4889 (mve_vqrshruntq_m_n_s<mode>): Remove.
4890 (mve_vqshrunbq_m_n_s<mode>): Remove.
4891 (mve_vqshruntq_m_n_s<mode>): Remove.
4893 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
4895 * config/arm/arm-mve-builtins-shapes.cc
4896 (binary_rshift_narrow_unsigned): New.
4897 * config/arm/arm-mve-builtins-shapes.h
4898 (binary_rshift_narrow_unsigned): New.
4900 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
4902 * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N_NO_F): New.
4903 (vshrnbq, vshrntq, vrshrnbq, vrshrntq, vqshrnbq, vqshrntq)
4904 (vqrshrnbq, vqrshrntq): New.
4905 * config/arm/arm-mve-builtins-base.def (vshrnbq, vshrntq)
4906 (vrshrnbq, vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq, vqrshrntq):
4908 * config/arm/arm-mve-builtins-base.h (vshrnbq, vshrntq, vrshrnbq)
4909 (vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq, vqrshrntq): New.
4910 * config/arm/arm-mve-builtins.cc
4911 (function_instance::has_inactive_argument): Handle vshrnbq,
4912 vshrntq, vrshrnbq, vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq,
4914 * config/arm/arm_mve.h (vshrnbq): Remove.
4916 (vshrnbq_m): Remove.
4917 (vshrntq_m): Remove.
4918 (vshrnbq_n_s16): Remove.
4919 (vshrntq_n_s16): Remove.
4920 (vshrnbq_n_u16): Remove.
4921 (vshrntq_n_u16): Remove.
4922 (vshrnbq_n_s32): Remove.
4923 (vshrntq_n_s32): Remove.
4924 (vshrnbq_n_u32): Remove.
4925 (vshrntq_n_u32): Remove.
4926 (vshrnbq_m_n_s32): Remove.
4927 (vshrnbq_m_n_s16): Remove.
4928 (vshrnbq_m_n_u32): Remove.
4929 (vshrnbq_m_n_u16): Remove.
4930 (vshrntq_m_n_s32): Remove.
4931 (vshrntq_m_n_s16): Remove.
4932 (vshrntq_m_n_u32): Remove.
4933 (vshrntq_m_n_u16): Remove.
4934 (__arm_vshrnbq_n_s16): Remove.
4935 (__arm_vshrntq_n_s16): Remove.
4936 (__arm_vshrnbq_n_u16): Remove.
4937 (__arm_vshrntq_n_u16): Remove.
4938 (__arm_vshrnbq_n_s32): Remove.
4939 (__arm_vshrntq_n_s32): Remove.
4940 (__arm_vshrnbq_n_u32): Remove.
4941 (__arm_vshrntq_n_u32): Remove.
4942 (__arm_vshrnbq_m_n_s32): Remove.
4943 (__arm_vshrnbq_m_n_s16): Remove.
4944 (__arm_vshrnbq_m_n_u32): Remove.
4945 (__arm_vshrnbq_m_n_u16): Remove.
4946 (__arm_vshrntq_m_n_s32): Remove.
4947 (__arm_vshrntq_m_n_s16): Remove.
4948 (__arm_vshrntq_m_n_u32): Remove.
4949 (__arm_vshrntq_m_n_u16): Remove.
4950 (__arm_vshrnbq): Remove.
4951 (__arm_vshrntq): Remove.
4952 (__arm_vshrnbq_m): Remove.
4953 (__arm_vshrntq_m): Remove.
4956 (vrshrnbq_m): Remove.
4957 (vrshrntq_m): Remove.
4958 (vrshrnbq_n_s16): Remove.
4959 (vrshrntq_n_s16): Remove.
4960 (vrshrnbq_n_u16): Remove.
4961 (vrshrntq_n_u16): Remove.
4962 (vrshrnbq_n_s32): Remove.
4963 (vrshrntq_n_s32): Remove.
4964 (vrshrnbq_n_u32): Remove.
4965 (vrshrntq_n_u32): Remove.
4966 (vrshrnbq_m_n_s32): Remove.
4967 (vrshrnbq_m_n_s16): Remove.
4968 (vrshrnbq_m_n_u32): Remove.
4969 (vrshrnbq_m_n_u16): Remove.
4970 (vrshrntq_m_n_s32): Remove.
4971 (vrshrntq_m_n_s16): Remove.
4972 (vrshrntq_m_n_u32): Remove.
4973 (vrshrntq_m_n_u16): Remove.
4974 (__arm_vrshrnbq_n_s16): Remove.
4975 (__arm_vrshrntq_n_s16): Remove.
4976 (__arm_vrshrnbq_n_u16): Remove.
4977 (__arm_vrshrntq_n_u16): Remove.
4978 (__arm_vrshrnbq_n_s32): Remove.
4979 (__arm_vrshrntq_n_s32): Remove.
4980 (__arm_vrshrnbq_n_u32): Remove.
4981 (__arm_vrshrntq_n_u32): Remove.
4982 (__arm_vrshrnbq_m_n_s32): Remove.
4983 (__arm_vrshrnbq_m_n_s16): Remove.
4984 (__arm_vrshrnbq_m_n_u32): Remove.
4985 (__arm_vrshrnbq_m_n_u16): Remove.
4986 (__arm_vrshrntq_m_n_s32): Remove.
4987 (__arm_vrshrntq_m_n_s16): Remove.
4988 (__arm_vrshrntq_m_n_u32): Remove.
4989 (__arm_vrshrntq_m_n_u16): Remove.
4990 (__arm_vrshrnbq): Remove.
4991 (__arm_vrshrntq): Remove.
4992 (__arm_vrshrnbq_m): Remove.
4993 (__arm_vrshrntq_m): Remove.
4996 (vqshrnbq_m): Remove.
4997 (vqshrntq_m): Remove.
4998 (vqshrnbq_n_s16): Remove.
4999 (vqshrntq_n_s16): Remove.
5000 (vqshrnbq_n_u16): Remove.
5001 (vqshrntq_n_u16): Remove.
5002 (vqshrnbq_n_s32): Remove.
5003 (vqshrntq_n_s32): Remove.
5004 (vqshrnbq_n_u32): Remove.
5005 (vqshrntq_n_u32): Remove.
5006 (vqshrnbq_m_n_s32): Remove.
5007 (vqshrnbq_m_n_s16): Remove.
5008 (vqshrnbq_m_n_u32): Remove.
5009 (vqshrnbq_m_n_u16): Remove.
5010 (vqshrntq_m_n_s32): Remove.
5011 (vqshrntq_m_n_s16): Remove.
5012 (vqshrntq_m_n_u32): Remove.
5013 (vqshrntq_m_n_u16): Remove.
5014 (__arm_vqshrnbq_n_s16): Remove.
5015 (__arm_vqshrntq_n_s16): Remove.
5016 (__arm_vqshrnbq_n_u16): Remove.
5017 (__arm_vqshrntq_n_u16): Remove.
5018 (__arm_vqshrnbq_n_s32): Remove.
5019 (__arm_vqshrntq_n_s32): Remove.
5020 (__arm_vqshrnbq_n_u32): Remove.
5021 (__arm_vqshrntq_n_u32): Remove.
5022 (__arm_vqshrnbq_m_n_s32): Remove.
5023 (__arm_vqshrnbq_m_n_s16): Remove.
5024 (__arm_vqshrnbq_m_n_u32): Remove.
5025 (__arm_vqshrnbq_m_n_u16): Remove.
5026 (__arm_vqshrntq_m_n_s32): Remove.
5027 (__arm_vqshrntq_m_n_s16): Remove.
5028 (__arm_vqshrntq_m_n_u32): Remove.
5029 (__arm_vqshrntq_m_n_u16): Remove.
5030 (__arm_vqshrnbq): Remove.
5031 (__arm_vqshrntq): Remove.
5032 (__arm_vqshrnbq_m): Remove.
5033 (__arm_vqshrntq_m): Remove.
5034 (vqrshrnbq): Remove.
5035 (vqrshrntq): Remove.
5036 (vqrshrnbq_m): Remove.
5037 (vqrshrntq_m): Remove.
5038 (vqrshrnbq_n_s16): Remove.
5039 (vqrshrnbq_n_u16): Remove.
5040 (vqrshrnbq_n_s32): Remove.
5041 (vqrshrnbq_n_u32): Remove.
5042 (vqrshrntq_n_s16): Remove.
5043 (vqrshrntq_n_u16): Remove.
5044 (vqrshrntq_n_s32): Remove.
5045 (vqrshrntq_n_u32): Remove.
5046 (vqrshrnbq_m_n_s32): Remove.
5047 (vqrshrnbq_m_n_s16): Remove.
5048 (vqrshrnbq_m_n_u32): Remove.
5049 (vqrshrnbq_m_n_u16): Remove.
5050 (vqrshrntq_m_n_s32): Remove.
5051 (vqrshrntq_m_n_s16): Remove.
5052 (vqrshrntq_m_n_u32): Remove.
5053 (vqrshrntq_m_n_u16): Remove.
5054 (__arm_vqrshrnbq_n_s16): Remove.
5055 (__arm_vqrshrnbq_n_u16): Remove.
5056 (__arm_vqrshrnbq_n_s32): Remove.
5057 (__arm_vqrshrnbq_n_u32): Remove.
5058 (__arm_vqrshrntq_n_s16): Remove.
5059 (__arm_vqrshrntq_n_u16): Remove.
5060 (__arm_vqrshrntq_n_s32): Remove.
5061 (__arm_vqrshrntq_n_u32): Remove.
5062 (__arm_vqrshrnbq_m_n_s32): Remove.
5063 (__arm_vqrshrnbq_m_n_s16): Remove.
5064 (__arm_vqrshrnbq_m_n_u32): Remove.
5065 (__arm_vqrshrnbq_m_n_u16): Remove.
5066 (__arm_vqrshrntq_m_n_s32): Remove.
5067 (__arm_vqrshrntq_m_n_s16): Remove.
5068 (__arm_vqrshrntq_m_n_u32): Remove.
5069 (__arm_vqrshrntq_m_n_u16): Remove.
5070 (__arm_vqrshrnbq): Remove.
5071 (__arm_vqrshrntq): Remove.
5072 (__arm_vqrshrnbq_m): Remove.
5073 (__arm_vqrshrntq_m): Remove.
5075 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
5077 * config/arm/iterators.md (MVE_SHRN_N, MVE_SHRN_M_N): New.
5078 (mve_insn): Add vqrshrnb, vqrshrnt, vqshrnb, vqshrnt, vrshrnb,
5079 vrshrnt, vshrnb, vshrnt.
5081 * config/arm/mve.md (mve_vqrshrnbq_n_<supf><mode>)
5082 (mve_vqrshrntq_n_<supf><mode>, mve_vqshrnbq_n_<supf><mode>)
5083 (mve_vqshrntq_n_<supf><mode>, mve_vrshrnbq_n_<supf><mode>)
5084 (mve_vrshrntq_n_<supf><mode>, mve_vshrnbq_n_<supf><mode>)
5085 (mve_vshrntq_n_<supf><mode>): Merge into ...
5086 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
5087 (mve_vqrshrnbq_m_n_<supf><mode>, mve_vqrshrntq_m_n_<supf><mode>)
5088 (mve_vqshrnbq_m_n_<supf><mode>, mve_vqshrntq_m_n_<supf><mode>)
5089 (mve_vrshrnbq_m_n_<supf><mode>, mve_vrshrntq_m_n_<supf><mode>)
5090 (mve_vshrnbq_m_n_<supf><mode>, mve_vshrntq_m_n_<supf><mode>):
5092 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
5094 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
5096 * config/arm/arm-mve-builtins-shapes.cc (binary_rshift_narrow):
5098 * config/arm/arm-mve-builtins-shapes.h (binary_rshift_narrow): New.
5100 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
5102 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_NO_F): New.
5103 (vmaxq, vminq): New.
5104 * config/arm/arm-mve-builtins-base.def (vmaxq, vminq): New.
5105 * config/arm/arm-mve-builtins-base.h (vmaxq, vminq): New.
5106 * config/arm/arm_mve.h (vminq): Remove.
5116 (vminq_u16): Remove.
5117 (vmaxq_u16): Remove.
5118 (vminq_s16): Remove.
5119 (vmaxq_s16): Remove.
5120 (vminq_u32): Remove.
5121 (vmaxq_u32): Remove.
5122 (vminq_s32): Remove.
5123 (vmaxq_s32): Remove.
5124 (vmaxq_m_s8): Remove.
5125 (vmaxq_m_s32): Remove.
5126 (vmaxq_m_s16): Remove.
5127 (vmaxq_m_u8): Remove.
5128 (vmaxq_m_u32): Remove.
5129 (vmaxq_m_u16): Remove.
5130 (vminq_m_s8): Remove.
5131 (vminq_m_s32): Remove.
5132 (vminq_m_s16): Remove.
5133 (vminq_m_u8): Remove.
5134 (vminq_m_u32): Remove.
5135 (vminq_m_u16): Remove.
5136 (vminq_x_s8): Remove.
5137 (vminq_x_s16): Remove.
5138 (vminq_x_s32): Remove.
5139 (vminq_x_u8): Remove.
5140 (vminq_x_u16): Remove.
5141 (vminq_x_u32): Remove.
5142 (vmaxq_x_s8): Remove.
5143 (vmaxq_x_s16): Remove.
5144 (vmaxq_x_s32): Remove.
5145 (vmaxq_x_u8): Remove.
5146 (vmaxq_x_u16): Remove.
5147 (vmaxq_x_u32): Remove.
5148 (__arm_vminq_u8): Remove.
5149 (__arm_vmaxq_u8): Remove.
5150 (__arm_vminq_s8): Remove.
5151 (__arm_vmaxq_s8): Remove.
5152 (__arm_vminq_u16): Remove.
5153 (__arm_vmaxq_u16): Remove.
5154 (__arm_vminq_s16): Remove.
5155 (__arm_vmaxq_s16): Remove.
5156 (__arm_vminq_u32): Remove.
5157 (__arm_vmaxq_u32): Remove.
5158 (__arm_vminq_s32): Remove.
5159 (__arm_vmaxq_s32): Remove.
5160 (__arm_vmaxq_m_s8): Remove.
5161 (__arm_vmaxq_m_s32): Remove.
5162 (__arm_vmaxq_m_s16): Remove.
5163 (__arm_vmaxq_m_u8): Remove.
5164 (__arm_vmaxq_m_u32): Remove.
5165 (__arm_vmaxq_m_u16): Remove.
5166 (__arm_vminq_m_s8): Remove.
5167 (__arm_vminq_m_s32): Remove.
5168 (__arm_vminq_m_s16): Remove.
5169 (__arm_vminq_m_u8): Remove.
5170 (__arm_vminq_m_u32): Remove.
5171 (__arm_vminq_m_u16): Remove.
5172 (__arm_vminq_x_s8): Remove.
5173 (__arm_vminq_x_s16): Remove.
5174 (__arm_vminq_x_s32): Remove.
5175 (__arm_vminq_x_u8): Remove.
5176 (__arm_vminq_x_u16): Remove.
5177 (__arm_vminq_x_u32): Remove.
5178 (__arm_vmaxq_x_s8): Remove.
5179 (__arm_vmaxq_x_s16): Remove.
5180 (__arm_vmaxq_x_s32): Remove.
5181 (__arm_vmaxq_x_u8): Remove.
5182 (__arm_vmaxq_x_u16): Remove.
5183 (__arm_vmaxq_x_u32): Remove.
5184 (__arm_vminq): Remove.
5185 (__arm_vmaxq): Remove.
5186 (__arm_vmaxq_m): Remove.
5187 (__arm_vminq_m): Remove.
5188 (__arm_vminq_x): Remove.
5189 (__arm_vmaxq_x): Remove.
5191 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
5193 * config/arm/iterators.md (MAX_MIN_SU): New.
5194 (max_min_su_str): New.
5195 (max_min_supf): New.
5196 * config/arm/mve.md (mve_vmaxq_s<mode>, mve_vmaxq_u<mode>)
5197 (mve_vminq_s<mode>, mve_vminq_u<mode>): Merge into ...
5198 (mve_<max_min_su_str>q_<max_min_supf><mode>): ... this.
5200 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
5202 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_M_N_R): New.
5203 (vqshlq, vshlq): New.
5204 * config/arm/arm-mve-builtins-base.def (vqshlq, vshlq): New.
5205 * config/arm/arm-mve-builtins-base.h (vqshlq, vshlq): New.
5206 * config/arm/arm_mve.h (vshlq): Remove.
5209 (vshlq_m_r): Remove.
5211 (vshlq_m_n): Remove.
5213 (vshlq_x_n): Remove.
5215 (vshlq_s16): Remove.
5216 (vshlq_s32): Remove.
5218 (vshlq_u16): Remove.
5219 (vshlq_u32): Remove.
5220 (vshlq_r_u8): Remove.
5221 (vshlq_n_u8): Remove.
5222 (vshlq_r_s8): Remove.
5223 (vshlq_n_s8): Remove.
5224 (vshlq_r_u16): Remove.
5225 (vshlq_n_u16): Remove.
5226 (vshlq_r_s16): Remove.
5227 (vshlq_n_s16): Remove.
5228 (vshlq_r_u32): Remove.
5229 (vshlq_n_u32): Remove.
5230 (vshlq_r_s32): Remove.
5231 (vshlq_n_s32): Remove.
5232 (vshlq_m_r_u8): Remove.
5233 (vshlq_m_r_s8): Remove.
5234 (vshlq_m_r_u16): Remove.
5235 (vshlq_m_r_s16): Remove.
5236 (vshlq_m_r_u32): Remove.
5237 (vshlq_m_r_s32): Remove.
5238 (vshlq_m_u8): Remove.
5239 (vshlq_m_s8): Remove.
5240 (vshlq_m_u16): Remove.
5241 (vshlq_m_s16): Remove.
5242 (vshlq_m_u32): Remove.
5243 (vshlq_m_s32): Remove.
5244 (vshlq_m_n_s8): Remove.
5245 (vshlq_m_n_s32): Remove.
5246 (vshlq_m_n_s16): Remove.
5247 (vshlq_m_n_u8): Remove.
5248 (vshlq_m_n_u32): Remove.
5249 (vshlq_m_n_u16): Remove.
5250 (vshlq_x_s8): Remove.
5251 (vshlq_x_s16): Remove.
5252 (vshlq_x_s32): Remove.
5253 (vshlq_x_u8): Remove.
5254 (vshlq_x_u16): Remove.
5255 (vshlq_x_u32): Remove.
5256 (vshlq_x_n_s8): Remove.
5257 (vshlq_x_n_s16): Remove.
5258 (vshlq_x_n_s32): Remove.
5259 (vshlq_x_n_u8): Remove.
5260 (vshlq_x_n_u16): Remove.
5261 (vshlq_x_n_u32): Remove.
5262 (__arm_vshlq_s8): Remove.
5263 (__arm_vshlq_s16): Remove.
5264 (__arm_vshlq_s32): Remove.
5265 (__arm_vshlq_u8): Remove.
5266 (__arm_vshlq_u16): Remove.
5267 (__arm_vshlq_u32): Remove.
5268 (__arm_vshlq_r_u8): Remove.
5269 (__arm_vshlq_n_u8): Remove.
5270 (__arm_vshlq_r_s8): Remove.
5271 (__arm_vshlq_n_s8): Remove.
5272 (__arm_vshlq_r_u16): Remove.
5273 (__arm_vshlq_n_u16): Remove.
5274 (__arm_vshlq_r_s16): Remove.
5275 (__arm_vshlq_n_s16): Remove.
5276 (__arm_vshlq_r_u32): Remove.
5277 (__arm_vshlq_n_u32): Remove.
5278 (__arm_vshlq_r_s32): Remove.
5279 (__arm_vshlq_n_s32): Remove.
5280 (__arm_vshlq_m_r_u8): Remove.
5281 (__arm_vshlq_m_r_s8): Remove.
5282 (__arm_vshlq_m_r_u16): Remove.
5283 (__arm_vshlq_m_r_s16): Remove.
5284 (__arm_vshlq_m_r_u32): Remove.
5285 (__arm_vshlq_m_r_s32): Remove.
5286 (__arm_vshlq_m_u8): Remove.
5287 (__arm_vshlq_m_s8): Remove.
5288 (__arm_vshlq_m_u16): Remove.
5289 (__arm_vshlq_m_s16): Remove.
5290 (__arm_vshlq_m_u32): Remove.
5291 (__arm_vshlq_m_s32): Remove.
5292 (__arm_vshlq_m_n_s8): Remove.
5293 (__arm_vshlq_m_n_s32): Remove.
5294 (__arm_vshlq_m_n_s16): Remove.
5295 (__arm_vshlq_m_n_u8): Remove.
5296 (__arm_vshlq_m_n_u32): Remove.
5297 (__arm_vshlq_m_n_u16): Remove.
5298 (__arm_vshlq_x_s8): Remove.
5299 (__arm_vshlq_x_s16): Remove.
5300 (__arm_vshlq_x_s32): Remove.
5301 (__arm_vshlq_x_u8): Remove.
5302 (__arm_vshlq_x_u16): Remove.
5303 (__arm_vshlq_x_u32): Remove.
5304 (__arm_vshlq_x_n_s8): Remove.
5305 (__arm_vshlq_x_n_s16): Remove.
5306 (__arm_vshlq_x_n_s32): Remove.
5307 (__arm_vshlq_x_n_u8): Remove.
5308 (__arm_vshlq_x_n_u16): Remove.
5309 (__arm_vshlq_x_n_u32): Remove.
5310 (__arm_vshlq): Remove.
5311 (__arm_vshlq_r): Remove.
5312 (__arm_vshlq_n): Remove.
5313 (__arm_vshlq_m_r): Remove.
5314 (__arm_vshlq_m): Remove.
5315 (__arm_vshlq_m_n): Remove.
5316 (__arm_vshlq_x): Remove.
5317 (__arm_vshlq_x_n): Remove.
5321 (vqshlq_m_r): Remove.
5322 (vqshlq_m_n): Remove.
5324 (vqshlq_u8): Remove.
5325 (vqshlq_r_u8): Remove.
5326 (vqshlq_n_u8): Remove.
5327 (vqshlq_s8): Remove.
5328 (vqshlq_r_s8): Remove.
5329 (vqshlq_n_s8): Remove.
5330 (vqshlq_u16): Remove.
5331 (vqshlq_r_u16): Remove.
5332 (vqshlq_n_u16): Remove.
5333 (vqshlq_s16): Remove.
5334 (vqshlq_r_s16): Remove.
5335 (vqshlq_n_s16): Remove.
5336 (vqshlq_u32): Remove.
5337 (vqshlq_r_u32): Remove.
5338 (vqshlq_n_u32): Remove.
5339 (vqshlq_s32): Remove.
5340 (vqshlq_r_s32): Remove.
5341 (vqshlq_n_s32): Remove.
5342 (vqshlq_m_r_u8): Remove.
5343 (vqshlq_m_r_s8): Remove.
5344 (vqshlq_m_r_u16): Remove.
5345 (vqshlq_m_r_s16): Remove.
5346 (vqshlq_m_r_u32): Remove.
5347 (vqshlq_m_r_s32): Remove.
5348 (vqshlq_m_n_s8): Remove.
5349 (vqshlq_m_n_s32): Remove.
5350 (vqshlq_m_n_s16): Remove.
5351 (vqshlq_m_n_u8): Remove.
5352 (vqshlq_m_n_u32): Remove.
5353 (vqshlq_m_n_u16): Remove.
5354 (vqshlq_m_s8): Remove.
5355 (vqshlq_m_s32): Remove.
5356 (vqshlq_m_s16): Remove.
5357 (vqshlq_m_u8): Remove.
5358 (vqshlq_m_u32): Remove.
5359 (vqshlq_m_u16): Remove.
5360 (__arm_vqshlq_u8): Remove.
5361 (__arm_vqshlq_r_u8): Remove.
5362 (__arm_vqshlq_n_u8): Remove.
5363 (__arm_vqshlq_s8): Remove.
5364 (__arm_vqshlq_r_s8): Remove.
5365 (__arm_vqshlq_n_s8): Remove.
5366 (__arm_vqshlq_u16): Remove.
5367 (__arm_vqshlq_r_u16): Remove.
5368 (__arm_vqshlq_n_u16): Remove.
5369 (__arm_vqshlq_s16): Remove.
5370 (__arm_vqshlq_r_s16): Remove.
5371 (__arm_vqshlq_n_s16): Remove.
5372 (__arm_vqshlq_u32): Remove.
5373 (__arm_vqshlq_r_u32): Remove.
5374 (__arm_vqshlq_n_u32): Remove.
5375 (__arm_vqshlq_s32): Remove.
5376 (__arm_vqshlq_r_s32): Remove.
5377 (__arm_vqshlq_n_s32): Remove.
5378 (__arm_vqshlq_m_r_u8): Remove.
5379 (__arm_vqshlq_m_r_s8): Remove.
5380 (__arm_vqshlq_m_r_u16): Remove.
5381 (__arm_vqshlq_m_r_s16): Remove.
5382 (__arm_vqshlq_m_r_u32): Remove.
5383 (__arm_vqshlq_m_r_s32): Remove.
5384 (__arm_vqshlq_m_n_s8): Remove.
5385 (__arm_vqshlq_m_n_s32): Remove.
5386 (__arm_vqshlq_m_n_s16): Remove.
5387 (__arm_vqshlq_m_n_u8): Remove.
5388 (__arm_vqshlq_m_n_u32): Remove.
5389 (__arm_vqshlq_m_n_u16): Remove.
5390 (__arm_vqshlq_m_s8): Remove.
5391 (__arm_vqshlq_m_s32): Remove.
5392 (__arm_vqshlq_m_s16): Remove.
5393 (__arm_vqshlq_m_u8): Remove.
5394 (__arm_vqshlq_m_u32): Remove.
5395 (__arm_vqshlq_m_u16): Remove.
5396 (__arm_vqshlq): Remove.
5397 (__arm_vqshlq_r): Remove.
5398 (__arm_vqshlq_n): Remove.
5399 (__arm_vqshlq_m_r): Remove.
5400 (__arm_vqshlq_m_n): Remove.
5401 (__arm_vqshlq_m): Remove.
5403 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
5405 * config/arm/arm-mve-builtins-functions.h (class
5406 unspec_mve_function_exact_insn_vshl): New.
5408 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
5410 * config/arm/arm-mve-builtins-shapes.cc (binary_lshift_r): New.
5411 * config/arm/arm-mve-builtins-shapes.h (binary_lshift_r): New.
5413 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
5415 * config/arm/arm-mve-builtins.cc (has_inactive_argument)
5416 (finish_opt_n_resolution): Handle MODE_r.
5417 * config/arm/arm-mve-builtins.def (r): New mode.
5419 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
5421 * config/arm/arm-mve-builtins-shapes.cc (binary_lshift): New.
5422 * config/arm/arm-mve-builtins-shapes.h (binary_lshift): New.
5424 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
5426 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_N): New.
5428 * config/arm/arm-mve-builtins-base.def (vabdq): New.
5429 * config/arm/arm-mve-builtins-base.h (vabdq): New.
5430 * config/arm/arm_mve.h (vabdq): Remove.
5435 (vabdq_u16): Remove.
5436 (vabdq_s16): Remove.
5437 (vabdq_u32): Remove.
5438 (vabdq_s32): Remove.
5439 (vabdq_f16): Remove.
5440 (vabdq_f32): Remove.
5441 (vabdq_m_s8): Remove.
5442 (vabdq_m_s32): Remove.
5443 (vabdq_m_s16): Remove.
5444 (vabdq_m_u8): Remove.
5445 (vabdq_m_u32): Remove.
5446 (vabdq_m_u16): Remove.
5447 (vabdq_m_f32): Remove.
5448 (vabdq_m_f16): Remove.
5449 (vabdq_x_s8): Remove.
5450 (vabdq_x_s16): Remove.
5451 (vabdq_x_s32): Remove.
5452 (vabdq_x_u8): Remove.
5453 (vabdq_x_u16): Remove.
5454 (vabdq_x_u32): Remove.
5455 (vabdq_x_f16): Remove.
5456 (vabdq_x_f32): Remove.
5457 (__arm_vabdq_u8): Remove.
5458 (__arm_vabdq_s8): Remove.
5459 (__arm_vabdq_u16): Remove.
5460 (__arm_vabdq_s16): Remove.
5461 (__arm_vabdq_u32): Remove.
5462 (__arm_vabdq_s32): Remove.
5463 (__arm_vabdq_m_s8): Remove.
5464 (__arm_vabdq_m_s32): Remove.
5465 (__arm_vabdq_m_s16): Remove.
5466 (__arm_vabdq_m_u8): Remove.
5467 (__arm_vabdq_m_u32): Remove.
5468 (__arm_vabdq_m_u16): Remove.
5469 (__arm_vabdq_x_s8): Remove.
5470 (__arm_vabdq_x_s16): Remove.
5471 (__arm_vabdq_x_s32): Remove.
5472 (__arm_vabdq_x_u8): Remove.
5473 (__arm_vabdq_x_u16): Remove.
5474 (__arm_vabdq_x_u32): Remove.
5475 (__arm_vabdq_f16): Remove.
5476 (__arm_vabdq_f32): Remove.
5477 (__arm_vabdq_m_f32): Remove.
5478 (__arm_vabdq_m_f16): Remove.
5479 (__arm_vabdq_x_f16): Remove.
5480 (__arm_vabdq_x_f32): Remove.
5481 (__arm_vabdq): Remove.
5482 (__arm_vabdq_m): Remove.
5483 (__arm_vabdq_x): Remove.
5485 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
5487 * config/arm/iterators.md (MVE_FP_M_BINARY): Add vabdq.
5488 (MVE_FP_VABDQ_ONLY): New.
5489 (mve_insn): Add vabd.
5490 * config/arm/mve.md (mve_vabdq_f<mode>): Move into ...
5491 (@mve_<mve_insn>q_f<mode>): ... this.
5492 (mve_vabdq_m_f<mode>): Remove.
5494 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
5496 * config/arm/arm-mve-builtins-base.cc (vqrdmulhq): New.
5497 * config/arm/arm-mve-builtins-base.def (vqrdmulhq): New.
5498 * config/arm/arm-mve-builtins-base.h (vqrdmulhq): New.
5499 * config/arm/arm_mve.h (vqrdmulhq): Remove.
5500 (vqrdmulhq_m): Remove.
5501 (vqrdmulhq_s8): Remove.
5502 (vqrdmulhq_n_s8): Remove.
5503 (vqrdmulhq_s16): Remove.
5504 (vqrdmulhq_n_s16): Remove.
5505 (vqrdmulhq_s32): Remove.
5506 (vqrdmulhq_n_s32): Remove.
5507 (vqrdmulhq_m_n_s8): Remove.
5508 (vqrdmulhq_m_n_s32): Remove.
5509 (vqrdmulhq_m_n_s16): Remove.
5510 (vqrdmulhq_m_s8): Remove.
5511 (vqrdmulhq_m_s32): Remove.
5512 (vqrdmulhq_m_s16): Remove.
5513 (__arm_vqrdmulhq_s8): Remove.
5514 (__arm_vqrdmulhq_n_s8): Remove.
5515 (__arm_vqrdmulhq_s16): Remove.
5516 (__arm_vqrdmulhq_n_s16): Remove.
5517 (__arm_vqrdmulhq_s32): Remove.
5518 (__arm_vqrdmulhq_n_s32): Remove.
5519 (__arm_vqrdmulhq_m_n_s8): Remove.
5520 (__arm_vqrdmulhq_m_n_s32): Remove.
5521 (__arm_vqrdmulhq_m_n_s16): Remove.
5522 (__arm_vqrdmulhq_m_s8): Remove.
5523 (__arm_vqrdmulhq_m_s32): Remove.
5524 (__arm_vqrdmulhq_m_s16): Remove.
5525 (__arm_vqrdmulhq): Remove.
5526 (__arm_vqrdmulhq_m): Remove.
5528 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
5530 * config/arm/iterators.md (MVE_SHIFT_M_R, MVE_SHIFT_M_N)
5531 (MVE_SHIFT_N, MVE_SHIFT_R): New.
5532 (mve_insn): Add vqshl, vshl.
5533 * config/arm/mve.md (mve_vqshlq_n_<supf><mode>)
5534 (mve_vshlq_n_<supf><mode>): Merge into ...
5535 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
5536 (mve_vqshlq_r_<supf><mode>, mve_vshlq_r_<supf><mode>): Merge into
5538 (@mve_<mve_insn>q_r_<supf><mode>): ... this.
5539 (mve_vqshlq_m_r_<supf><mode>, mve_vshlq_m_r_<supf><mode>): Merge
5541 (@mve_<mve_insn>q_m_r_<supf><mode>): ... this.
5542 (mve_vqshlq_m_n_<supf><mode>, mve_vshlq_m_n_<supf><mode>): Merge
5544 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
5545 * config/arm/vec-common.md (mve_vshlq_<supf><mode>): Transform
5547 (@mve_<mve_insn>q_<supf><mode>): ... this.
5549 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
5551 * config/arm/arm-mve-builtins-base.cc (vqrshlq, vrshlq): New.
5552 * config/arm/arm-mve-builtins-base.def (vqrshlq, vrshlq): New.
5553 * config/arm/arm-mve-builtins-base.h (vqrshlq, vrshlq): New.
5554 * config/arm/arm-mve-builtins.cc (has_inactive_argument): Handle
5556 * config/arm/arm_mve.h (vrshlq): Remove.
5557 (vrshlq_m_n): Remove.
5560 (vrshlq_u8): Remove.
5561 (vrshlq_n_u8): Remove.
5562 (vrshlq_s8): Remove.
5563 (vrshlq_n_s8): Remove.
5564 (vrshlq_u16): Remove.
5565 (vrshlq_n_u16): Remove.
5566 (vrshlq_s16): Remove.
5567 (vrshlq_n_s16): Remove.
5568 (vrshlq_u32): Remove.
5569 (vrshlq_n_u32): Remove.
5570 (vrshlq_s32): Remove.
5571 (vrshlq_n_s32): Remove.
5572 (vrshlq_m_n_u8): Remove.
5573 (vrshlq_m_n_s8): Remove.
5574 (vrshlq_m_n_u16): Remove.
5575 (vrshlq_m_n_s16): Remove.
5576 (vrshlq_m_n_u32): Remove.
5577 (vrshlq_m_n_s32): Remove.
5578 (vrshlq_m_s8): Remove.
5579 (vrshlq_m_s32): Remove.
5580 (vrshlq_m_s16): Remove.
5581 (vrshlq_m_u8): Remove.
5582 (vrshlq_m_u32): Remove.
5583 (vrshlq_m_u16): Remove.
5584 (vrshlq_x_s8): Remove.
5585 (vrshlq_x_s16): Remove.
5586 (vrshlq_x_s32): Remove.
5587 (vrshlq_x_u8): Remove.
5588 (vrshlq_x_u16): Remove.
5589 (vrshlq_x_u32): Remove.
5590 (__arm_vrshlq_u8): Remove.
5591 (__arm_vrshlq_n_u8): Remove.
5592 (__arm_vrshlq_s8): Remove.
5593 (__arm_vrshlq_n_s8): Remove.
5594 (__arm_vrshlq_u16): Remove.
5595 (__arm_vrshlq_n_u16): Remove.
5596 (__arm_vrshlq_s16): Remove.
5597 (__arm_vrshlq_n_s16): Remove.
5598 (__arm_vrshlq_u32): Remove.
5599 (__arm_vrshlq_n_u32): Remove.
5600 (__arm_vrshlq_s32): Remove.
5601 (__arm_vrshlq_n_s32): Remove.
5602 (__arm_vrshlq_m_n_u8): Remove.
5603 (__arm_vrshlq_m_n_s8): Remove.
5604 (__arm_vrshlq_m_n_u16): Remove.
5605 (__arm_vrshlq_m_n_s16): Remove.
5606 (__arm_vrshlq_m_n_u32): Remove.
5607 (__arm_vrshlq_m_n_s32): Remove.
5608 (__arm_vrshlq_m_s8): Remove.
5609 (__arm_vrshlq_m_s32): Remove.
5610 (__arm_vrshlq_m_s16): Remove.
5611 (__arm_vrshlq_m_u8): Remove.
5612 (__arm_vrshlq_m_u32): Remove.
5613 (__arm_vrshlq_m_u16): Remove.
5614 (__arm_vrshlq_x_s8): Remove.
5615 (__arm_vrshlq_x_s16): Remove.
5616 (__arm_vrshlq_x_s32): Remove.
5617 (__arm_vrshlq_x_u8): Remove.
5618 (__arm_vrshlq_x_u16): Remove.
5619 (__arm_vrshlq_x_u32): Remove.
5620 (__arm_vrshlq): Remove.
5621 (__arm_vrshlq_m_n): Remove.
5622 (__arm_vrshlq_m): Remove.
5623 (__arm_vrshlq_x): Remove.
5625 (vqrshlq_m_n): Remove.
5626 (vqrshlq_m): Remove.
5627 (vqrshlq_u8): Remove.
5628 (vqrshlq_n_u8): Remove.
5629 (vqrshlq_s8): Remove.
5630 (vqrshlq_n_s8): Remove.
5631 (vqrshlq_u16): Remove.
5632 (vqrshlq_n_u16): Remove.
5633 (vqrshlq_s16): Remove.
5634 (vqrshlq_n_s16): Remove.
5635 (vqrshlq_u32): Remove.
5636 (vqrshlq_n_u32): Remove.
5637 (vqrshlq_s32): Remove.
5638 (vqrshlq_n_s32): Remove.
5639 (vqrshlq_m_n_u8): Remove.
5640 (vqrshlq_m_n_s8): Remove.
5641 (vqrshlq_m_n_u16): Remove.
5642 (vqrshlq_m_n_s16): Remove.
5643 (vqrshlq_m_n_u32): Remove.
5644 (vqrshlq_m_n_s32): Remove.
5645 (vqrshlq_m_s8): Remove.
5646 (vqrshlq_m_s32): Remove.
5647 (vqrshlq_m_s16): Remove.
5648 (vqrshlq_m_u8): Remove.
5649 (vqrshlq_m_u32): Remove.
5650 (vqrshlq_m_u16): Remove.
5651 (__arm_vqrshlq_u8): Remove.
5652 (__arm_vqrshlq_n_u8): Remove.
5653 (__arm_vqrshlq_s8): Remove.
5654 (__arm_vqrshlq_n_s8): Remove.
5655 (__arm_vqrshlq_u16): Remove.
5656 (__arm_vqrshlq_n_u16): Remove.
5657 (__arm_vqrshlq_s16): Remove.
5658 (__arm_vqrshlq_n_s16): Remove.
5659 (__arm_vqrshlq_u32): Remove.
5660 (__arm_vqrshlq_n_u32): Remove.
5661 (__arm_vqrshlq_s32): Remove.
5662 (__arm_vqrshlq_n_s32): Remove.
5663 (__arm_vqrshlq_m_n_u8): Remove.
5664 (__arm_vqrshlq_m_n_s8): Remove.
5665 (__arm_vqrshlq_m_n_u16): Remove.
5666 (__arm_vqrshlq_m_n_s16): Remove.
5667 (__arm_vqrshlq_m_n_u32): Remove.
5668 (__arm_vqrshlq_m_n_s32): Remove.
5669 (__arm_vqrshlq_m_s8): Remove.
5670 (__arm_vqrshlq_m_s32): Remove.
5671 (__arm_vqrshlq_m_s16): Remove.
5672 (__arm_vqrshlq_m_u8): Remove.
5673 (__arm_vqrshlq_m_u32): Remove.
5674 (__arm_vqrshlq_m_u16): Remove.
5675 (__arm_vqrshlq): Remove.
5676 (__arm_vqrshlq_m_n): Remove.
5677 (__arm_vqrshlq_m): Remove.
5679 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
5681 * config/arm/iterators.md (MVE_RSHIFT_M_N, MVE_RSHIFT_N): New.
5682 (mve_insn): Add vqrshl, vrshl.
5683 * config/arm/mve.md (mve_vqrshlq_n_<supf><mode>)
5684 (mve_vrshlq_n_<supf><mode>): Merge into ...
5685 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
5686 (mve_vqrshlq_m_n_<supf><mode>, mve_vrshlq_m_n_<supf><mode>): Merge
5688 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
5690 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
5692 * config/arm/arm-mve-builtins-shapes.cc (binary_round_lshift): New.
5693 * config/arm/arm-mve-builtins-shapes.h (binary_round_lshift): New.
5695 2023-05-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5698 * config/riscv/riscv-vsetvl.cc (avl_info::multiple_source_equal_p): Add
5699 denegrate PHI optmization.
5701 2023-05-05 Uros Bizjak <ubizjak@gmail.com>
5703 * config/i386/predicates.md (register_no_SP_operand):
5704 Rename from index_register_operand.
5705 (call_register_operand): Update for rename.
5706 * config/i386/i386.md (*lea<mode>_general_[1234]): Update for rename.
5708 2023-05-05 Tamar Christina <tamar.christina@arm.com>
5711 * Makefile.in (NUM_MATCH_SPLITS, MATCH_SPLITS_SEQ,
5712 GIMPLE_MATCH_PD_SEQ_SRC, GIMPLE_MATCH_PD_SEQ_O,
5713 GENERIC_MATCH_PD_SEQ_SRC, GENERIC_MATCH_PD_SEQ_O): New.
5714 (OBJS, MOSTLYCLEANFILES, .PRECIOUS): Use them.
5715 (s-match): Split into s-generic-match and s-gimple-match.
5716 * configure.ac (with-matchpd-partitions,
5717 DEFAULT_MATCHPD_PARTITIONS): New.
5718 * configure: Regenerate.
5720 2023-05-05 Tamar Christina <tamar.christina@arm.com>
5723 * genmatch.cc (emit_func, SIZED_BASED_CHUNKS, get_out_file): New.
5724 (decision_tree::gen): Accept list of files instead of single and update
5725 to write function definition to header and main file.
5726 (write_predicate): Likewise.
5727 (write_header): Emit pragmas and new includes.
5728 (main): Create file buffers and cleanup.
5729 (showUsage, write_header_includes): New.
5731 2023-05-05 Tamar Christina <tamar.christina@arm.com>
5734 * Makefile.in (OBJS): Add gimple-match-exports.o.
5735 * genmatch.cc (decision_tree::gen): Export gimple_gimplify helpers.
5736 * gimple-match-head.cc (gimple_simplify, gimple_resimplify1,
5737 gimple_resimplify2, gimple_resimplify3, gimple_resimplify4,
5738 gimple_resimplify5, constant_for_folding, convert_conditional_op,
5739 maybe_resimplify_conditional_op, gimple_match_op::resimplify,
5740 maybe_build_generic_op, build_call_internal, maybe_push_res_to_seq,
5741 do_valueize, try_conditional_simplification, gimple_extract,
5742 gimple_extract_op, canonicalize_code, commutative_binary_op_p,
5743 commutative_ternary_op_p, first_commutative_argument,
5744 associative_binary_op_p, directly_supported_p,
5745 get_conditional_internal_fn): Moved to gimple-match-exports.cc
5746 * gimple-match-exports.cc: New file.
5748 2023-05-05 Tamar Christina <tamar.christina@arm.com>
5751 * genmatch.cc (decision_tree::gen, write_predicate): Generate new
5753 (dt_simplify::gen_1): Use it.
5755 2023-05-05 Tamar Christina <tamar.christina@arm.com>
5758 * genmatch.cc (output_line_directive): Only emit commented directive
5761 2023-05-05 Tamar Christina <tamar.christina@arm.com>
5764 * genmatch.cc (dt_simplify::gen_1): Only emit labels if used.
5766 2023-05-05 Tobias Burnus <tobias@codesourcery.com>
5768 * config/gcn/gcn.cc (gcn_vectorize_builtin_vectorized_function): Remove
5769 unused in_mode/in_n variables.
5771 2023-05-05 Richard Biener <rguenther@suse.de>
5773 PR tree-optimization/109735
5774 * tree-vect-stmts.cc (vectorizable_operation): Perform
5775 conversion for POINTER_DIFF_EXPR unconditionally.
5777 2023-05-05 Uros Bizjak <ubizjak@gmail.com>
5779 * config/i386/mmx.md (mulv2si3): New expander.
5780 (*mulv2si3): New insn pattern.
5782 2023-05-05 Tobias Burnus <tobias@codesourcery.com>
5783 Thomas Schwinge <thomas@codesourcery.com>
5786 * config/nvptx/mkoffload.cc (process): Emit dummy procedure
5787 alongside reverse-offload function table to prevent NULL values
5788 of the function addresses.
5790 2023-05-05 Jakub Jelinek <jakub@redhat.com>
5792 * builtins.cc (do_mpfr_ckconv, do_mpc_ckconv): Fix comment typo,
5794 * fold-const-call.cc (do_mpfr_ckconv, do_mpc_ckconv): Likewise.
5796 2023-05-05 Andrew Pinski <apinski@marvell.com>
5798 PR tree-optimization/109732
5799 * tree-ssa-phiopt.cc (match_simplify_replacement): Fix the selection
5800 of the argtrue/argfalse.
5802 2023-05-05 Andrew Pinski <apinski@marvell.com>
5804 PR tree-optimization/109722
5805 * match.pd: Extend the `ABS<a> == 0` pattern
5806 to cover `ABSU<a> == 0` too.
5808 2023-05-04 Uros Bizjak <ubizjak@gmail.com>
5811 * config/i386/predicates.md (index_reg_operand): New predicate.
5812 * config/i386/i386.md (ashift to lea spliter): Use
5813 general_reg_operand and index_reg_operand predicates.
5815 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5817 * config/aarch64/aarch64-simd.md (aarch64_<sur><addsub>hn2<mode>_insn_le):
5818 Rename and reimplement with RTL codes to...
5819 (aarch64_<optab>hn2<mode>_insn_le): .. This.
5820 (aarch64_r<optab>hn2<mode>_insn_le): New pattern.
5821 (aarch64_<sur><addsub>hn2<mode>_insn_be): Rename and reimplement with RTL
5823 (aarch64_<optab>hn2<mode>_insn_be): ... This.
5824 (aarch64_r<optab>hn2<mode>_insn_be): New pattern.
5825 (aarch64_<sur><addsub>hn2<mode>): Rename and adjust expander to...
5826 (aarch64_<optab>hn2<mode>): ... This.
5827 (aarch64_r<optab>hn2<mode>): New expander.
5828 * config/aarch64/iterators.md (UNSPEC_ADDHN, UNSPEC_RADDHN,
5829 UNSPEC_SUBHN, UNSPEC_RSUBHN): Delete unspecs.
5831 (sur): Remove handling of the above.
5834 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5836 * config/aarch64/aarch64-simd.md (aarch64_<sur><addsub>hn<mode>_insn_le):
5838 (aarch64_<optab>hn<mode>_insn<vczle><vczbe>): New define_insn.
5839 (aarch64_<sur><addsub>hn<mode>_insn_be): Delete.
5840 (aarch64_r<optab>hn<mode>_insn<vczle><vczbe>): New define_insn.
5841 (aarch64_<sur><addsub>hn<mode>): Delete.
5842 (aarch64_<optab>hn<mode>): New define_expand.
5843 (aarch64_r<optab>hn<mode>): Likewise.
5844 * config/aarch64/predicates.md (aarch64_simd_raddsubhn_imm_vec):
5847 2023-05-04 Andrew Pinski <apinski@marvell.com>
5849 * tree-ssa-phiopt.cc (replace_phi_edge_with_variable): Handle
5850 diamond form bb with forwarder only empty blocks better.
5852 2023-05-04 Andrew Pinski <apinski@marvell.com>
5854 * tree-ssa-threadupdate.cc (copy_phi_arg_into_existing_phi): Move to ...
5855 * tree-cfg.cc (copy_phi_arg_into_existing_phi): Here and remove static.
5856 (gimple_duplicate_sese_tail): Use copy_phi_arg_into_existing_phi instead
5857 of an inline version of it.
5858 * tree-cfgcleanup.cc (remove_forwarder_block): Likewise.
5859 * tree-cfg.h (copy_phi_arg_into_existing_phi): New declaration.
5861 2023-05-04 Andrew Pinski <apinski@marvell.com>
5863 * tree-ssa-phiopt.cc (replace_phi_edge_with_variable): Change
5864 the default argument value for dce_ssa_names to nullptr.
5865 Check to make sure dce_ssa_names is a non-nullptr before
5866 calling simple_dce_from_worklist.
5868 2023-05-04 Uros Bizjak <ubizjak@gmail.com>
5870 * config/i386/predicates.md (index_register_operand): Reject
5871 arg_pointer_rtx, frame_pointer_rtx, stack_pointer_rtx and
5872 VIRTUAL_REGISTER_P operands. Allow subregs of memory before reload.
5873 (call_register_no_elim_operand): Rewrite as ...
5874 (call_register_operand): ... this.
5875 (call_insn_operand): Use call_register_operand predicate.
5877 2023-05-04 Richard Biener <rguenther@suse.de>
5879 PR tree-optimization/109721
5880 * tree-vect-stmts.cc (vectorizable_operation): Make sure
5881 to test word_mode for all !target_support_p operations.
5883 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5886 * config/aarch64/aarch64-simd.md (aarch64_<su>aba<mode>): Rename to...
5887 (aarch64_<su>aba<mode><vczle><vczbe>): ... This.
5888 (aarch64_mla<mode>): Rename to...
5889 (aarch64_mla<mode><vczle><vczbe>): ... This.
5890 (*aarch64_mla_elt<mode>): Rename to...
5891 (*aarch64_mla_elt<mode><vczle><vczbe>): ... This.
5892 (*aarch64_mla_elt_<vswap_width_name><mode>): Rename to...
5893 (*aarch64_mla_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
5894 (aarch64_mla_n<mode>): Rename to...
5895 (aarch64_mla_n<mode><vczle><vczbe>): ... This.
5896 (aarch64_mls<mode>): Rename to...
5897 (aarch64_mls<mode><vczle><vczbe>): ... This.
5898 (*aarch64_mls_elt<mode>): Rename to...
5899 (*aarch64_mls_elt<mode><vczle><vczbe>): ... This.
5900 (*aarch64_mls_elt_<vswap_width_name><mode>): Rename to...
5901 (*aarch64_mls_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
5902 (aarch64_mls_n<mode>): Rename to...
5903 (aarch64_mls_n<mode><vczle><vczbe>): ... This.
5904 (fma<mode>4): Rename to...
5905 (fma<mode>4<vczle><vczbe>): ... This.
5906 (*aarch64_fma4_elt<mode>): Rename to...
5907 (*aarch64_fma4_elt<mode><vczle><vczbe>): ... This.
5908 (*aarch64_fma4_elt_<vswap_width_name><mode>): Rename to...
5909 (*aarch64_fma4_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
5910 (*aarch64_fma4_elt_from_dup<mode>): Rename to...
5911 (*aarch64_fma4_elt_from_dup<mode><vczle><vczbe>): ... This.
5912 (fnma<mode>4): Rename to...
5913 (fnma<mode>4<vczle><vczbe>): ... This.
5914 (*aarch64_fnma4_elt<mode>): Rename to...
5915 (*aarch64_fnma4_elt<mode><vczle><vczbe>): ... This.
5916 (*aarch64_fnma4_elt_<vswap_width_name><mode>): Rename to...
5917 (*aarch64_fnma4_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
5918 (*aarch64_fnma4_elt_from_dup<mode>): Rename to...
5919 (*aarch64_fnma4_elt_from_dup<mode><vczle><vczbe>): ... This.
5920 (aarch64_simd_bsl<mode>_internal): Rename to...
5921 (aarch64_simd_bsl<mode>_internal<vczle><vczbe>): ... This.
5922 (*aarch64_simd_bsl<mode>_alt): Rename to...
5923 (*aarch64_simd_bsl<mode>_alt<vczle><vczbe>): ... This.
5925 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5928 * config/aarch64/aarch64-simd.md (aarch64_<su>abd<mode>): Rename to...
5929 (aarch64_<su>abd<mode><vczle><vczbe>): ... This.
5930 (fabd<mode>3): Rename to...
5931 (fabd<mode>3<vczle><vczbe>): ... This.
5932 (aarch64_<optab>p<mode>): Rename to...
5933 (aarch64_<optab>p<mode><vczle><vczbe>): ... This.
5934 (aarch64_faddp<mode>): Rename to...
5935 (aarch64_faddp<mode><vczle><vczbe>): ... This.
5937 2023-05-04 Martin Liska <mliska@suse.cz>
5939 * gcov.cc (GCOV_JSON_FORMAT_VERSION): New definition.
5940 (print_version): Use it.
5941 (generate_results): Likewise.
5943 2023-05-04 Richard Biener <rguenther@suse.de>
5945 * tree-cfg.h (last_stmt): Rename to ...
5946 (last_nondebug_stmt): ... this.
5947 * tree-cfg.cc (last_stmt): Rename to ...
5948 (last_nondebug_stmt): ... this.
5949 (assign_discriminators): Adjust.
5950 (group_case_labels_stmt): Likewise.
5951 (gimple_can_duplicate_bb_p): Likewise.
5952 (execute_fixup_cfg): Likewise.
5953 * auto-profile.cc (afdo_propagate_circuit): Likewise.
5954 * gimple-range.cc (gimple_ranger::range_on_exit): Likewise.
5955 * omp-expand.cc (workshare_safe_to_combine_p): Likewise.
5956 (determine_parallel_type): Likewise.
5957 (adjust_context_and_scope): Likewise.
5958 (expand_task_call): Likewise.
5959 (remove_exit_barrier): Likewise.
5960 (expand_omp_taskreg): Likewise.
5961 (expand_omp_for_init_counts): Likewise.
5962 (expand_omp_for_init_vars): Likewise.
5963 (expand_omp_for_static_chunk): Likewise.
5964 (expand_omp_simd): Likewise.
5965 (expand_oacc_for): Likewise.
5966 (expand_omp_for): Likewise.
5967 (expand_omp_sections): Likewise.
5968 (expand_omp_atomic_fetch_op): Likewise.
5969 (expand_omp_atomic_cas): Likewise.
5970 (expand_omp_atomic): Likewise.
5971 (expand_omp_target): Likewise.
5972 (expand_omp): Likewise.
5973 (omp_make_gimple_edges): Likewise.
5974 * trans-mem.cc (tm_region_init): Likewise.
5975 * tree-inline.cc (redirect_all_calls): Likewise.
5976 * tree-parloops.cc (gen_parallel_loop): Likewise.
5977 * tree-ssa-loop-ch.cc (do_while_loop_p): Likewise.
5978 * tree-ssa-loop-ivcanon.cc (canonicalize_loop_induction_variables):
5980 * tree-ssa-loop-ivopts.cc (stmt_after_ip_normal_pos): Likewise.
5981 (may_eliminate_iv): Likewise.
5982 * tree-ssa-loop-manip.cc (standard_iv_increment_position): Likewise.
5983 * tree-ssa-loop-niter.cc (do_warn_aggressive_loop_optimizations):
5985 (estimate_numbers_of_iterations): Likewise.
5986 * tree-ssa-loop-split.cc (compute_added_num_insns): Likewise.
5987 * tree-ssa-loop-unswitch.cc (get_predicates_for_bb): Likewise.
5988 (set_predicates_for_bb): Likewise.
5989 (init_loop_unswitch_info): Likewise.
5990 (hoist_guard): Likewise.
5991 * tree-ssa-phiopt.cc (match_simplify_replacement): Likewise.
5992 (minmax_replacement): Likewise.
5993 * tree-ssa-reassoc.cc (update_range_test): Likewise.
5994 (optimize_range_tests_to_bit_test): Likewise.
5995 (optimize_range_tests_var_bound): Likewise.
5996 (optimize_range_tests): Likewise.
5997 (no_side_effect_bb): Likewise.
5998 (suitable_cond_bb): Likewise.
5999 (maybe_optimize_range_tests): Likewise.
6000 (reassociate_bb): Likewise.
6001 * tree-vrp.cc (rvrp_folder::pre_fold_bb): Likewise.
6003 2023-05-04 Jakub Jelinek <jakub@redhat.com>
6006 * config/i386/i386-features.cc (timode_scalar_chain::convert_insn):
6007 If src is REG, change its mode to V1TImode and call fix_debug_reg_uses
6008 for it only if it still has TImode. Don't decide whether to call
6009 fix_debug_reg_uses based on whether SRC is ever set or not.
6011 2023-05-04 Hans-Peter Nilsson <hp@axis.com>
6013 * config/cris/cris.cc (cris_split_constant): New function.
6014 * config/cris/cris.md (splitop): New iterator.
6015 (opsplit1): New define_peephole2.
6016 * config/cris/cris-protos.h (cris_split_constant): Declare.
6017 (cris_splittable_constant_p): New macro.
6019 2023-05-04 Hans-Peter Nilsson <hp@axis.com>
6021 * config/cris/cris.cc (TARGET_SPILL_CLASS): Define
6024 2023-05-04 Hans-Peter Nilsson <hp@axis.com>
6026 * config/cris/cris.cc (cris_side_effect_mode_ok): Use
6027 lra_in_progress, not reload_in_progress.
6028 * config/cris/cris.md ("movdi", "*addi_reload"): Ditto.
6029 * config/cris/constraints.md ("Q"): Ditto.
6031 2023-05-03 Andrew Pinski <apinski@marvell.com>
6033 * tree-ssa-dce.cc (simple_dce_from_worklist): Record
6034 stats on removed number of statements and phis.
6036 2023-05-03 Aldy Hernandez <aldyh@redhat.com>
6038 PR tree-optimization/109711
6039 * value-range.cc (irange::verify_range): Allow types of
6042 2023-05-03 Alexander Monakov <amonakov@ispras.ru>
6045 * calls.cc (can_implement_as_sibling_call_p): Reject calls
6046 to __sanitizer_cov_trace_pc.
6048 2023-05-03 Richard Sandiford <richard.sandiford@arm.com>
6051 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Add
6052 a new ABI break parameter for GCC 14. Set it to the alignment
6053 of enums that have an underlying type. Take the true alignment
6054 of such enums from the TYPE_ALIGN of the underlying type's
6056 (aarch64_function_arg_boundary): Update accordingly.
6057 (aarch64_layout_arg, aarch64_gimplify_va_arg_expr): Likewise.
6058 Warn about ABI differences.
6060 2023-05-03 Richard Sandiford <richard.sandiford@arm.com>
6063 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Rename
6064 ABI break variables to abi_break_gcc_9 and abi_break_gcc_13.
6065 (aarch64_layout_arg, aarch64_function_arg_boundary): Likewise.
6066 (aarch64_gimplify_va_arg_expr): Likewise.
6068 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
6070 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_M_N_NO_F)
6071 (FUNCTION_WITHOUT_N_NO_F, FUNCTION_WITH_M_N_NO_U_F): New.
6072 (vhaddq, vhsubq, vmulhq, vqaddq, vqsubq, vqdmulhq, vrhaddq)
6074 * config/arm/arm-mve-builtins-base.def (vhaddq, vhsubq, vmulhq)
6075 (vqaddq, vqsubq, vqdmulhq, vrhaddq, vrmulhq): New.
6076 * config/arm/arm-mve-builtins-base.h (vhaddq, vhsubq, vmulhq)
6077 (vqaddq, vqsubq, vqdmulhq, vrhaddq, vrmulhq): New.
6078 * config/arm/arm_mve.h (vhsubq): Remove.
6084 (vhsubq_u8): Remove.
6085 (vhsubq_n_u8): Remove.
6086 (vhaddq_u8): Remove.
6087 (vhaddq_n_u8): Remove.
6088 (vhsubq_s8): Remove.
6089 (vhsubq_n_s8): Remove.
6090 (vhaddq_s8): Remove.
6091 (vhaddq_n_s8): Remove.
6092 (vhsubq_u16): Remove.
6093 (vhsubq_n_u16): Remove.
6094 (vhaddq_u16): Remove.
6095 (vhaddq_n_u16): Remove.
6096 (vhsubq_s16): Remove.
6097 (vhsubq_n_s16): Remove.
6098 (vhaddq_s16): Remove.
6099 (vhaddq_n_s16): Remove.
6100 (vhsubq_u32): Remove.
6101 (vhsubq_n_u32): Remove.
6102 (vhaddq_u32): Remove.
6103 (vhaddq_n_u32): Remove.
6104 (vhsubq_s32): Remove.
6105 (vhsubq_n_s32): Remove.
6106 (vhaddq_s32): Remove.
6107 (vhaddq_n_s32): Remove.
6108 (vhaddq_m_n_s8): Remove.
6109 (vhaddq_m_n_s32): Remove.
6110 (vhaddq_m_n_s16): Remove.
6111 (vhaddq_m_n_u8): Remove.
6112 (vhaddq_m_n_u32): Remove.
6113 (vhaddq_m_n_u16): Remove.
6114 (vhaddq_m_s8): Remove.
6115 (vhaddq_m_s32): Remove.
6116 (vhaddq_m_s16): Remove.
6117 (vhaddq_m_u8): Remove.
6118 (vhaddq_m_u32): Remove.
6119 (vhaddq_m_u16): Remove.
6120 (vhsubq_m_n_s8): Remove.
6121 (vhsubq_m_n_s32): Remove.
6122 (vhsubq_m_n_s16): Remove.
6123 (vhsubq_m_n_u8): Remove.
6124 (vhsubq_m_n_u32): Remove.
6125 (vhsubq_m_n_u16): Remove.
6126 (vhsubq_m_s8): Remove.
6127 (vhsubq_m_s32): Remove.
6128 (vhsubq_m_s16): Remove.
6129 (vhsubq_m_u8): Remove.
6130 (vhsubq_m_u32): Remove.
6131 (vhsubq_m_u16): Remove.
6132 (vhaddq_x_n_s8): Remove.
6133 (vhaddq_x_n_s16): Remove.
6134 (vhaddq_x_n_s32): Remove.
6135 (vhaddq_x_n_u8): Remove.
6136 (vhaddq_x_n_u16): Remove.
6137 (vhaddq_x_n_u32): Remove.
6138 (vhaddq_x_s8): Remove.
6139 (vhaddq_x_s16): Remove.
6140 (vhaddq_x_s32): Remove.
6141 (vhaddq_x_u8): Remove.
6142 (vhaddq_x_u16): Remove.
6143 (vhaddq_x_u32): Remove.
6144 (vhsubq_x_n_s8): Remove.
6145 (vhsubq_x_n_s16): Remove.
6146 (vhsubq_x_n_s32): Remove.
6147 (vhsubq_x_n_u8): Remove.
6148 (vhsubq_x_n_u16): Remove.
6149 (vhsubq_x_n_u32): Remove.
6150 (vhsubq_x_s8): Remove.
6151 (vhsubq_x_s16): Remove.
6152 (vhsubq_x_s32): Remove.
6153 (vhsubq_x_u8): Remove.
6154 (vhsubq_x_u16): Remove.
6155 (vhsubq_x_u32): Remove.
6156 (__arm_vhsubq_u8): Remove.
6157 (__arm_vhsubq_n_u8): Remove.
6158 (__arm_vhaddq_u8): Remove.
6159 (__arm_vhaddq_n_u8): Remove.
6160 (__arm_vhsubq_s8): Remove.
6161 (__arm_vhsubq_n_s8): Remove.
6162 (__arm_vhaddq_s8): Remove.
6163 (__arm_vhaddq_n_s8): Remove.
6164 (__arm_vhsubq_u16): Remove.
6165 (__arm_vhsubq_n_u16): Remove.
6166 (__arm_vhaddq_u16): Remove.
6167 (__arm_vhaddq_n_u16): Remove.
6168 (__arm_vhsubq_s16): Remove.
6169 (__arm_vhsubq_n_s16): Remove.
6170 (__arm_vhaddq_s16): Remove.
6171 (__arm_vhaddq_n_s16): Remove.
6172 (__arm_vhsubq_u32): Remove.
6173 (__arm_vhsubq_n_u32): Remove.
6174 (__arm_vhaddq_u32): Remove.
6175 (__arm_vhaddq_n_u32): Remove.
6176 (__arm_vhsubq_s32): Remove.
6177 (__arm_vhsubq_n_s32): Remove.
6178 (__arm_vhaddq_s32): Remove.
6179 (__arm_vhaddq_n_s32): Remove.
6180 (__arm_vhaddq_m_n_s8): Remove.
6181 (__arm_vhaddq_m_n_s32): Remove.
6182 (__arm_vhaddq_m_n_s16): Remove.
6183 (__arm_vhaddq_m_n_u8): Remove.
6184 (__arm_vhaddq_m_n_u32): Remove.
6185 (__arm_vhaddq_m_n_u16): Remove.
6186 (__arm_vhaddq_m_s8): Remove.
6187 (__arm_vhaddq_m_s32): Remove.
6188 (__arm_vhaddq_m_s16): Remove.
6189 (__arm_vhaddq_m_u8): Remove.
6190 (__arm_vhaddq_m_u32): Remove.
6191 (__arm_vhaddq_m_u16): Remove.
6192 (__arm_vhsubq_m_n_s8): Remove.
6193 (__arm_vhsubq_m_n_s32): Remove.
6194 (__arm_vhsubq_m_n_s16): Remove.
6195 (__arm_vhsubq_m_n_u8): Remove.
6196 (__arm_vhsubq_m_n_u32): Remove.
6197 (__arm_vhsubq_m_n_u16): Remove.
6198 (__arm_vhsubq_m_s8): Remove.
6199 (__arm_vhsubq_m_s32): Remove.
6200 (__arm_vhsubq_m_s16): Remove.
6201 (__arm_vhsubq_m_u8): Remove.
6202 (__arm_vhsubq_m_u32): Remove.
6203 (__arm_vhsubq_m_u16): Remove.
6204 (__arm_vhaddq_x_n_s8): Remove.
6205 (__arm_vhaddq_x_n_s16): Remove.
6206 (__arm_vhaddq_x_n_s32): Remove.
6207 (__arm_vhaddq_x_n_u8): Remove.
6208 (__arm_vhaddq_x_n_u16): Remove.
6209 (__arm_vhaddq_x_n_u32): Remove.
6210 (__arm_vhaddq_x_s8): Remove.
6211 (__arm_vhaddq_x_s16): Remove.
6212 (__arm_vhaddq_x_s32): Remove.
6213 (__arm_vhaddq_x_u8): Remove.
6214 (__arm_vhaddq_x_u16): Remove.
6215 (__arm_vhaddq_x_u32): Remove.
6216 (__arm_vhsubq_x_n_s8): Remove.
6217 (__arm_vhsubq_x_n_s16): Remove.
6218 (__arm_vhsubq_x_n_s32): Remove.
6219 (__arm_vhsubq_x_n_u8): Remove.
6220 (__arm_vhsubq_x_n_u16): Remove.
6221 (__arm_vhsubq_x_n_u32): Remove.
6222 (__arm_vhsubq_x_s8): Remove.
6223 (__arm_vhsubq_x_s16): Remove.
6224 (__arm_vhsubq_x_s32): Remove.
6225 (__arm_vhsubq_x_u8): Remove.
6226 (__arm_vhsubq_x_u16): Remove.
6227 (__arm_vhsubq_x_u32): Remove.
6228 (__arm_vhsubq): Remove.
6229 (__arm_vhaddq): Remove.
6230 (__arm_vhaddq_m): Remove.
6231 (__arm_vhsubq_m): Remove.
6232 (__arm_vhaddq_x): Remove.
6233 (__arm_vhsubq_x): Remove.
6237 (vmulhq_u8): Remove.
6238 (vmulhq_s8): Remove.
6239 (vmulhq_u16): Remove.
6240 (vmulhq_s16): Remove.
6241 (vmulhq_u32): Remove.
6242 (vmulhq_s32): Remove.
6243 (vmulhq_m_s8): Remove.
6244 (vmulhq_m_s32): Remove.
6245 (vmulhq_m_s16): Remove.
6246 (vmulhq_m_u8): Remove.
6247 (vmulhq_m_u32): Remove.
6248 (vmulhq_m_u16): Remove.
6249 (vmulhq_x_s8): Remove.
6250 (vmulhq_x_s16): Remove.
6251 (vmulhq_x_s32): Remove.
6252 (vmulhq_x_u8): Remove.
6253 (vmulhq_x_u16): Remove.
6254 (vmulhq_x_u32): Remove.
6255 (__arm_vmulhq_u8): Remove.
6256 (__arm_vmulhq_s8): Remove.
6257 (__arm_vmulhq_u16): Remove.
6258 (__arm_vmulhq_s16): Remove.
6259 (__arm_vmulhq_u32): Remove.
6260 (__arm_vmulhq_s32): Remove.
6261 (__arm_vmulhq_m_s8): Remove.
6262 (__arm_vmulhq_m_s32): Remove.
6263 (__arm_vmulhq_m_s16): Remove.
6264 (__arm_vmulhq_m_u8): Remove.
6265 (__arm_vmulhq_m_u32): Remove.
6266 (__arm_vmulhq_m_u16): Remove.
6267 (__arm_vmulhq_x_s8): Remove.
6268 (__arm_vmulhq_x_s16): Remove.
6269 (__arm_vmulhq_x_s32): Remove.
6270 (__arm_vmulhq_x_u8): Remove.
6271 (__arm_vmulhq_x_u16): Remove.
6272 (__arm_vmulhq_x_u32): Remove.
6273 (__arm_vmulhq): Remove.
6274 (__arm_vmulhq_m): Remove.
6275 (__arm_vmulhq_x): Remove.
6280 (vqsubq_u8): Remove.
6281 (vqsubq_n_u8): Remove.
6282 (vqaddq_u8): Remove.
6283 (vqaddq_n_u8): Remove.
6284 (vqsubq_s8): Remove.
6285 (vqsubq_n_s8): Remove.
6286 (vqaddq_s8): Remove.
6287 (vqaddq_n_s8): Remove.
6288 (vqsubq_u16): Remove.
6289 (vqsubq_n_u16): Remove.
6290 (vqaddq_u16): Remove.
6291 (vqaddq_n_u16): Remove.
6292 (vqsubq_s16): Remove.
6293 (vqsubq_n_s16): Remove.
6294 (vqaddq_s16): Remove.
6295 (vqaddq_n_s16): Remove.
6296 (vqsubq_u32): Remove.
6297 (vqsubq_n_u32): Remove.
6298 (vqaddq_u32): Remove.
6299 (vqaddq_n_u32): Remove.
6300 (vqsubq_s32): Remove.
6301 (vqsubq_n_s32): Remove.
6302 (vqaddq_s32): Remove.
6303 (vqaddq_n_s32): Remove.
6304 (vqaddq_m_n_s8): Remove.
6305 (vqaddq_m_n_s32): Remove.
6306 (vqaddq_m_n_s16): Remove.
6307 (vqaddq_m_n_u8): Remove.
6308 (vqaddq_m_n_u32): Remove.
6309 (vqaddq_m_n_u16): Remove.
6310 (vqaddq_m_s8): Remove.
6311 (vqaddq_m_s32): Remove.
6312 (vqaddq_m_s16): Remove.
6313 (vqaddq_m_u8): Remove.
6314 (vqaddq_m_u32): Remove.
6315 (vqaddq_m_u16): Remove.
6316 (vqsubq_m_n_s8): Remove.
6317 (vqsubq_m_n_s32): Remove.
6318 (vqsubq_m_n_s16): Remove.
6319 (vqsubq_m_n_u8): Remove.
6320 (vqsubq_m_n_u32): Remove.
6321 (vqsubq_m_n_u16): Remove.
6322 (vqsubq_m_s8): Remove.
6323 (vqsubq_m_s32): Remove.
6324 (vqsubq_m_s16): Remove.
6325 (vqsubq_m_u8): Remove.
6326 (vqsubq_m_u32): Remove.
6327 (vqsubq_m_u16): Remove.
6328 (__arm_vqsubq_u8): Remove.
6329 (__arm_vqsubq_n_u8): Remove.
6330 (__arm_vqaddq_u8): Remove.
6331 (__arm_vqaddq_n_u8): Remove.
6332 (__arm_vqsubq_s8): Remove.
6333 (__arm_vqsubq_n_s8): Remove.
6334 (__arm_vqaddq_s8): Remove.
6335 (__arm_vqaddq_n_s8): Remove.
6336 (__arm_vqsubq_u16): Remove.
6337 (__arm_vqsubq_n_u16): Remove.
6338 (__arm_vqaddq_u16): Remove.
6339 (__arm_vqaddq_n_u16): Remove.
6340 (__arm_vqsubq_s16): Remove.
6341 (__arm_vqsubq_n_s16): Remove.
6342 (__arm_vqaddq_s16): Remove.
6343 (__arm_vqaddq_n_s16): Remove.
6344 (__arm_vqsubq_u32): Remove.
6345 (__arm_vqsubq_n_u32): Remove.
6346 (__arm_vqaddq_u32): Remove.
6347 (__arm_vqaddq_n_u32): Remove.
6348 (__arm_vqsubq_s32): Remove.
6349 (__arm_vqsubq_n_s32): Remove.
6350 (__arm_vqaddq_s32): Remove.
6351 (__arm_vqaddq_n_s32): Remove.
6352 (__arm_vqaddq_m_n_s8): Remove.
6353 (__arm_vqaddq_m_n_s32): Remove.
6354 (__arm_vqaddq_m_n_s16): Remove.
6355 (__arm_vqaddq_m_n_u8): Remove.
6356 (__arm_vqaddq_m_n_u32): Remove.
6357 (__arm_vqaddq_m_n_u16): Remove.
6358 (__arm_vqaddq_m_s8): Remove.
6359 (__arm_vqaddq_m_s32): Remove.
6360 (__arm_vqaddq_m_s16): Remove.
6361 (__arm_vqaddq_m_u8): Remove.
6362 (__arm_vqaddq_m_u32): Remove.
6363 (__arm_vqaddq_m_u16): Remove.
6364 (__arm_vqsubq_m_n_s8): Remove.
6365 (__arm_vqsubq_m_n_s32): Remove.
6366 (__arm_vqsubq_m_n_s16): Remove.
6367 (__arm_vqsubq_m_n_u8): Remove.
6368 (__arm_vqsubq_m_n_u32): Remove.
6369 (__arm_vqsubq_m_n_u16): Remove.
6370 (__arm_vqsubq_m_s8): Remove.
6371 (__arm_vqsubq_m_s32): Remove.
6372 (__arm_vqsubq_m_s16): Remove.
6373 (__arm_vqsubq_m_u8): Remove.
6374 (__arm_vqsubq_m_u32): Remove.
6375 (__arm_vqsubq_m_u16): Remove.
6376 (__arm_vqsubq): Remove.
6377 (__arm_vqaddq): Remove.
6378 (__arm_vqaddq_m): Remove.
6379 (__arm_vqsubq_m): Remove.
6381 (vqdmulhq_m): Remove.
6382 (vqdmulhq_s8): Remove.
6383 (vqdmulhq_n_s8): Remove.
6384 (vqdmulhq_s16): Remove.
6385 (vqdmulhq_n_s16): Remove.
6386 (vqdmulhq_s32): Remove.
6387 (vqdmulhq_n_s32): Remove.
6388 (vqdmulhq_m_n_s8): Remove.
6389 (vqdmulhq_m_n_s32): Remove.
6390 (vqdmulhq_m_n_s16): Remove.
6391 (vqdmulhq_m_s8): Remove.
6392 (vqdmulhq_m_s32): Remove.
6393 (vqdmulhq_m_s16): Remove.
6394 (__arm_vqdmulhq_s8): Remove.
6395 (__arm_vqdmulhq_n_s8): Remove.
6396 (__arm_vqdmulhq_s16): Remove.
6397 (__arm_vqdmulhq_n_s16): Remove.
6398 (__arm_vqdmulhq_s32): Remove.
6399 (__arm_vqdmulhq_n_s32): Remove.
6400 (__arm_vqdmulhq_m_n_s8): Remove.
6401 (__arm_vqdmulhq_m_n_s32): Remove.
6402 (__arm_vqdmulhq_m_n_s16): Remove.
6403 (__arm_vqdmulhq_m_s8): Remove.
6404 (__arm_vqdmulhq_m_s32): Remove.
6405 (__arm_vqdmulhq_m_s16): Remove.
6406 (__arm_vqdmulhq): Remove.
6407 (__arm_vqdmulhq_m): Remove.
6409 (vrhaddq_m): Remove.
6410 (vrhaddq_x): Remove.
6411 (vrhaddq_u8): Remove.
6412 (vrhaddq_s8): Remove.
6413 (vrhaddq_u16): Remove.
6414 (vrhaddq_s16): Remove.
6415 (vrhaddq_u32): Remove.
6416 (vrhaddq_s32): Remove.
6417 (vrhaddq_m_s8): Remove.
6418 (vrhaddq_m_s32): Remove.
6419 (vrhaddq_m_s16): Remove.
6420 (vrhaddq_m_u8): Remove.
6421 (vrhaddq_m_u32): Remove.
6422 (vrhaddq_m_u16): Remove.
6423 (vrhaddq_x_s8): Remove.
6424 (vrhaddq_x_s16): Remove.
6425 (vrhaddq_x_s32): Remove.
6426 (vrhaddq_x_u8): Remove.
6427 (vrhaddq_x_u16): Remove.
6428 (vrhaddq_x_u32): Remove.
6429 (__arm_vrhaddq_u8): Remove.
6430 (__arm_vrhaddq_s8): Remove.
6431 (__arm_vrhaddq_u16): Remove.
6432 (__arm_vrhaddq_s16): Remove.
6433 (__arm_vrhaddq_u32): Remove.
6434 (__arm_vrhaddq_s32): Remove.
6435 (__arm_vrhaddq_m_s8): Remove.
6436 (__arm_vrhaddq_m_s32): Remove.
6437 (__arm_vrhaddq_m_s16): Remove.
6438 (__arm_vrhaddq_m_u8): Remove.
6439 (__arm_vrhaddq_m_u32): Remove.
6440 (__arm_vrhaddq_m_u16): Remove.
6441 (__arm_vrhaddq_x_s8): Remove.
6442 (__arm_vrhaddq_x_s16): Remove.
6443 (__arm_vrhaddq_x_s32): Remove.
6444 (__arm_vrhaddq_x_u8): Remove.
6445 (__arm_vrhaddq_x_u16): Remove.
6446 (__arm_vrhaddq_x_u32): Remove.
6447 (__arm_vrhaddq): Remove.
6448 (__arm_vrhaddq_m): Remove.
6449 (__arm_vrhaddq_x): Remove.
6451 (vrmulhq_m): Remove.
6452 (vrmulhq_x): Remove.
6453 (vrmulhq_u8): Remove.
6454 (vrmulhq_s8): Remove.
6455 (vrmulhq_u16): Remove.
6456 (vrmulhq_s16): Remove.
6457 (vrmulhq_u32): Remove.
6458 (vrmulhq_s32): Remove.
6459 (vrmulhq_m_s8): Remove.
6460 (vrmulhq_m_s32): Remove.
6461 (vrmulhq_m_s16): Remove.
6462 (vrmulhq_m_u8): Remove.
6463 (vrmulhq_m_u32): Remove.
6464 (vrmulhq_m_u16): Remove.
6465 (vrmulhq_x_s8): Remove.
6466 (vrmulhq_x_s16): Remove.
6467 (vrmulhq_x_s32): Remove.
6468 (vrmulhq_x_u8): Remove.
6469 (vrmulhq_x_u16): Remove.
6470 (vrmulhq_x_u32): Remove.
6471 (__arm_vrmulhq_u8): Remove.
6472 (__arm_vrmulhq_s8): Remove.
6473 (__arm_vrmulhq_u16): Remove.
6474 (__arm_vrmulhq_s16): Remove.
6475 (__arm_vrmulhq_u32): Remove.
6476 (__arm_vrmulhq_s32): Remove.
6477 (__arm_vrmulhq_m_s8): Remove.
6478 (__arm_vrmulhq_m_s32): Remove.
6479 (__arm_vrmulhq_m_s16): Remove.
6480 (__arm_vrmulhq_m_u8): Remove.
6481 (__arm_vrmulhq_m_u32): Remove.
6482 (__arm_vrmulhq_m_u16): Remove.
6483 (__arm_vrmulhq_x_s8): Remove.
6484 (__arm_vrmulhq_x_s16): Remove.
6485 (__arm_vrmulhq_x_s32): Remove.
6486 (__arm_vrmulhq_x_u8): Remove.
6487 (__arm_vrmulhq_x_u16): Remove.
6488 (__arm_vrmulhq_x_u32): Remove.
6489 (__arm_vrmulhq): Remove.
6490 (__arm_vrmulhq_m): Remove.
6491 (__arm_vrmulhq_x): Remove.
6493 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
6495 * config/arm/iterators.md (MVE_INT_SU_BINARY): New.
6496 (mve_insn): Add vabdq, vhaddq, vhsubq, vmulhq, vqaddq, vqdmulhq,
6497 vqrdmulhq, vqrshlq, vqshlq, vqsubq, vrhaddq, vrmulhq, vrshlq.
6498 (supf): Add VQDMULHQ_S, VQRDMULHQ_S.
6499 * config/arm/mve.md (mve_vabdq_<supf><mode>)
6500 (@mve_vhaddq_<supf><mode>, mve_vhsubq_<supf><mode>)
6501 (mve_vmulhq_<supf><mode>, mve_vqaddq_<supf><mode>)
6502 (mve_vqdmulhq_s<mode>, mve_vqrdmulhq_s<mode>)
6503 (mve_vqrshlq_<supf><mode>, mve_vqshlq_<supf><mode>)
6504 (mve_vqsubq_<supf><mode>, @mve_vrhaddq_<supf><mode>)
6505 (mve_vrmulhq_<supf><mode>, mve_vrshlq_<supf><mode>): Merge into
6507 (@mve_<mve_insn>q_<supf><mode>): ... this.
6508 * config/arm/vec-common.md (avg<mode>3_floor, uavg<mode>3_floor)
6509 (avg<mode>3_ceil, uavg<mode>3_ceil): Use gen_mve_q instead of
6510 gen_mve_vhaddq / gen_mve_vrhaddq.
6512 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
6514 * config/arm/iterators.md (MVE_INT_SU_M_N_BINARY): New.
6515 (mve_insn): Add vhaddq, vhsubq, vmlaq, vmlasq, vqaddq, vqdmlahq,
6516 vqdmlashq, vqdmulhq, vqrdmlahq, vqrdmlashq, vqrdmulhq, vqsubq.
6517 (supf): Add VQDMLAHQ_M_N_S, VQDMLASHQ_M_N_S, VQRDMLAHQ_M_N_S,
6518 VQRDMLASHQ_M_N_S, VQDMULHQ_M_N_S, VQRDMULHQ_M_N_S.
6519 * config/arm/mve.md (mve_vhaddq_m_n_<supf><mode>)
6520 (mve_vhsubq_m_n_<supf><mode>, mve_vmlaq_m_n_<supf><mode>)
6521 (mve_vmlasq_m_n_<supf><mode>, mve_vqaddq_m_n_<supf><mode>)
6522 (mve_vqdmlahq_m_n_s<mode>, mve_vqdmlashq_m_n_s<mode>)
6523 (mve_vqrdmlahq_m_n_s<mode>, mve_vqrdmlashq_m_n_s<mode>)
6524 (mve_vqsubq_m_n_<supf><mode>, mve_vqdmulhq_m_n_s<mode>)
6525 (mve_vqrdmulhq_m_n_s<mode>): Merge into ...
6526 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
6528 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
6530 * config/arm/iterators.md (MVE_INT_SU_N_BINARY): New.
6531 (mve_insn): Add vhaddq, vhsubq, vqaddq, vqdmulhq, vqrdmulhq,
6533 (supf): Add VQDMULHQ_N_S, VQRDMULHQ_N_S.
6534 * config/arm/mve.md (mve_vhaddq_n_<supf><mode>)
6535 (mve_vhsubq_n_<supf><mode>, mve_vqaddq_n_<supf><mode>)
6536 (mve_vqdmulhq_n_s<mode>, mve_vqrdmulhq_n_s<mode>)
6537 (mve_vqsubq_n_<supf><mode>): Merge into ...
6538 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
6540 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
6542 * config/arm/iterators.md (MVE_INT_SU_M_BINARY): New.
6543 (mve_insn): Add vabdq, vhaddq, vhsubq, vmaxq, vminq, vmulhq,
6544 vqaddq, vqdmladhq, vqdmladhxq, vqdmlsdhq, vqdmlsdhxq, vqdmulhq,
6545 vqrdmladhq, vqrdmladhxq, vqrdmlsdhq, vqrdmlsdhxq, vqrdmulhq,
6546 vqrshlq, vqshlq, vqsubq, vrhaddq, vrmulhq, vrshlq, vshlq.
6547 (supf): Add VQDMLADHQ_M_S, VQDMLADHXQ_M_S, VQDMLSDHQ_M_S,
6548 VQDMLSDHXQ_M_S, VQDMULHQ_M_S, VQRDMLADHQ_M_S, VQRDMLADHXQ_M_S,
6549 VQRDMLSDHQ_M_S, VQRDMLSDHXQ_M_S, VQRDMULHQ_M_S.
6550 * config/arm/mve.md (@mve_<mve_insn>q_m_<supf><mode>): New.
6551 (mve_vshlq_m_<supf><mode>): Merged into
6552 @mve_<mve_insn>q_m_<supf><mode>.
6553 (mve_vabdq_m_<supf><mode>): Likewise.
6554 (mve_vhaddq_m_<supf><mode>): Likewise.
6555 (mve_vhsubq_m_<supf><mode>): Likewise.
6556 (mve_vmaxq_m_<supf><mode>): Likewise.
6557 (mve_vminq_m_<supf><mode>): Likewise.
6558 (mve_vmulhq_m_<supf><mode>): Likewise.
6559 (mve_vqaddq_m_<supf><mode>): Likewise.
6560 (mve_vqrshlq_m_<supf><mode>): Likewise.
6561 (mve_vqshlq_m_<supf><mode>): Likewise.
6562 (mve_vqsubq_m_<supf><mode>): Likewise.
6563 (mve_vrhaddq_m_<supf><mode>): Likewise.
6564 (mve_vrmulhq_m_<supf><mode>): Likewise.
6565 (mve_vrshlq_m_<supf><mode>): Likewise.
6566 (mve_vqdmladhq_m_s<mode>): Likewise.
6567 (mve_vqdmladhxq_m_s<mode>): Likewise.
6568 (mve_vqdmlsdhq_m_s<mode>): Likewise.
6569 (mve_vqdmlsdhxq_m_s<mode>): Likewise.
6570 (mve_vqdmulhq_m_s<mode>): Likewise.
6571 (mve_vqrdmladhq_m_s<mode>): Likewise.
6572 (mve_vqrdmladhxq_m_s<mode>): Likewise.
6573 (mve_vqrdmlsdhq_m_s<mode>): Likewise.
6574 (mve_vqrdmlsdhxq_m_s<mode>): Likewise.
6575 (mve_vqrdmulhq_m_s<mode>): Likewise.
6577 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
6579 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_M_N): New. (vcreateq): New.
6580 * config/arm/arm-mve-builtins-base.def (vcreateq): New.
6581 * config/arm/arm-mve-builtins-base.h (vcreateq): New.
6582 * config/arm/arm_mve.h (vcreateq_f16): Remove.
6583 (vcreateq_f32): Remove.
6584 (vcreateq_u8): Remove.
6585 (vcreateq_u16): Remove.
6586 (vcreateq_u32): Remove.
6587 (vcreateq_u64): Remove.
6588 (vcreateq_s8): Remove.
6589 (vcreateq_s16): Remove.
6590 (vcreateq_s32): Remove.
6591 (vcreateq_s64): Remove.
6592 (__arm_vcreateq_u8): Remove.
6593 (__arm_vcreateq_u16): Remove.
6594 (__arm_vcreateq_u32): Remove.
6595 (__arm_vcreateq_u64): Remove.
6596 (__arm_vcreateq_s8): Remove.
6597 (__arm_vcreateq_s16): Remove.
6598 (__arm_vcreateq_s32): Remove.
6599 (__arm_vcreateq_s64): Remove.
6600 (__arm_vcreateq_f16): Remove.
6601 (__arm_vcreateq_f32): Remove.
6603 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
6605 * config/arm/iterators.md (MVE_FP_CREATE_ONLY): New.
6606 (mve_insn): Add VCREATEQ_S, VCREATEQ_U, VCREATEQ_F.
6607 * config/arm/mve.md (mve_vcreateq_f<mode>): Rename into ...
6608 (@mve_<mve_insn>q_f<mode>): ... this.
6609 (mve_vcreateq_<supf><mode>): Rename into ...
6610 (@mve_<mve_insn>q_<supf><mode>): ... this.
6612 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
6614 * config/arm/arm-mve-builtins-shapes.cc (create): New.
6615 * config/arm/arm-mve-builtins-shapes.h: (create): New.
6617 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
6619 * config/arm/arm-mve-builtins-functions.h (class
6620 unspec_mve_function_exact_insn): New.
6622 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
6624 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_N_NO_N_F): New.
6626 * config/arm/arm-mve-builtins-base.def (vorrq): New.
6627 * config/arm/arm-mve-builtins-base.h (vorrq): New.
6628 * config/arm/arm-mve-builtins.cc
6629 (function_instance::has_inactive_argument): Handle vorrq.
6630 * config/arm/arm_mve.h (vorrq): Remove.
6631 (vorrq_m_n): Remove.
6636 (vorrq_u16): Remove.
6637 (vorrq_s16): Remove.
6638 (vorrq_u32): Remove.
6639 (vorrq_s32): Remove.
6640 (vorrq_n_u16): Remove.
6641 (vorrq_f16): Remove.
6642 (vorrq_n_s16): Remove.
6643 (vorrq_n_u32): Remove.
6644 (vorrq_f32): Remove.
6645 (vorrq_n_s32): Remove.
6646 (vorrq_m_n_s16): Remove.
6647 (vorrq_m_n_u16): Remove.
6648 (vorrq_m_n_s32): Remove.
6649 (vorrq_m_n_u32): Remove.
6650 (vorrq_m_s8): Remove.
6651 (vorrq_m_s32): Remove.
6652 (vorrq_m_s16): Remove.
6653 (vorrq_m_u8): Remove.
6654 (vorrq_m_u32): Remove.
6655 (vorrq_m_u16): Remove.
6656 (vorrq_m_f32): Remove.
6657 (vorrq_m_f16): Remove.
6658 (vorrq_x_s8): Remove.
6659 (vorrq_x_s16): Remove.
6660 (vorrq_x_s32): Remove.
6661 (vorrq_x_u8): Remove.
6662 (vorrq_x_u16): Remove.
6663 (vorrq_x_u32): Remove.
6664 (vorrq_x_f16): Remove.
6665 (vorrq_x_f32): Remove.
6666 (__arm_vorrq_u8): Remove.
6667 (__arm_vorrq_s8): Remove.
6668 (__arm_vorrq_u16): Remove.
6669 (__arm_vorrq_s16): Remove.
6670 (__arm_vorrq_u32): Remove.
6671 (__arm_vorrq_s32): Remove.
6672 (__arm_vorrq_n_u16): Remove.
6673 (__arm_vorrq_n_s16): Remove.
6674 (__arm_vorrq_n_u32): Remove.
6675 (__arm_vorrq_n_s32): Remove.
6676 (__arm_vorrq_m_n_s16): Remove.
6677 (__arm_vorrq_m_n_u16): Remove.
6678 (__arm_vorrq_m_n_s32): Remove.
6679 (__arm_vorrq_m_n_u32): Remove.
6680 (__arm_vorrq_m_s8): Remove.
6681 (__arm_vorrq_m_s32): Remove.
6682 (__arm_vorrq_m_s16): Remove.
6683 (__arm_vorrq_m_u8): Remove.
6684 (__arm_vorrq_m_u32): Remove.
6685 (__arm_vorrq_m_u16): Remove.
6686 (__arm_vorrq_x_s8): Remove.
6687 (__arm_vorrq_x_s16): Remove.
6688 (__arm_vorrq_x_s32): Remove.
6689 (__arm_vorrq_x_u8): Remove.
6690 (__arm_vorrq_x_u16): Remove.
6691 (__arm_vorrq_x_u32): Remove.
6692 (__arm_vorrq_f16): Remove.
6693 (__arm_vorrq_f32): Remove.
6694 (__arm_vorrq_m_f32): Remove.
6695 (__arm_vorrq_m_f16): Remove.
6696 (__arm_vorrq_x_f16): Remove.
6697 (__arm_vorrq_x_f32): Remove.
6698 (__arm_vorrq): Remove.
6699 (__arm_vorrq_m_n): Remove.
6700 (__arm_vorrq_m): Remove.
6701 (__arm_vorrq_x): Remove.
6703 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
6705 * config/arm/arm-mve-builtins-shapes.cc (binary_orrq): New.
6706 * config/arm/arm-mve-builtins-shapes.h (binary_orrq): New.
6707 * config/arm/arm-mve-builtins.cc (preds_m_or_none): Remove static.
6708 * config/arm/arm-mve-builtins.h (preds_m_or_none): Declare.
6710 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
6712 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M): New.
6714 * config/arm/arm-mve-builtins-base.def (vandq, veorq): New.
6715 * config/arm/arm-mve-builtins-base.h (vandq, veorq): New.
6716 * config/arm/arm_mve.h (vandq): Remove.
6721 (vandq_u16): Remove.
6722 (vandq_s16): Remove.
6723 (vandq_u32): Remove.
6724 (vandq_s32): Remove.
6725 (vandq_f16): Remove.
6726 (vandq_f32): Remove.
6727 (vandq_m_s8): Remove.
6728 (vandq_m_s32): Remove.
6729 (vandq_m_s16): Remove.
6730 (vandq_m_u8): Remove.
6731 (vandq_m_u32): Remove.
6732 (vandq_m_u16): Remove.
6733 (vandq_m_f32): Remove.
6734 (vandq_m_f16): Remove.
6735 (vandq_x_s8): Remove.
6736 (vandq_x_s16): Remove.
6737 (vandq_x_s32): Remove.
6738 (vandq_x_u8): Remove.
6739 (vandq_x_u16): Remove.
6740 (vandq_x_u32): Remove.
6741 (vandq_x_f16): Remove.
6742 (vandq_x_f32): Remove.
6743 (__arm_vandq_u8): Remove.
6744 (__arm_vandq_s8): Remove.
6745 (__arm_vandq_u16): Remove.
6746 (__arm_vandq_s16): Remove.
6747 (__arm_vandq_u32): Remove.
6748 (__arm_vandq_s32): Remove.
6749 (__arm_vandq_m_s8): Remove.
6750 (__arm_vandq_m_s32): Remove.
6751 (__arm_vandq_m_s16): Remove.
6752 (__arm_vandq_m_u8): Remove.
6753 (__arm_vandq_m_u32): Remove.
6754 (__arm_vandq_m_u16): Remove.
6755 (__arm_vandq_x_s8): Remove.
6756 (__arm_vandq_x_s16): Remove.
6757 (__arm_vandq_x_s32): Remove.
6758 (__arm_vandq_x_u8): Remove.
6759 (__arm_vandq_x_u16): Remove.
6760 (__arm_vandq_x_u32): Remove.
6761 (__arm_vandq_f16): Remove.
6762 (__arm_vandq_f32): Remove.
6763 (__arm_vandq_m_f32): Remove.
6764 (__arm_vandq_m_f16): Remove.
6765 (__arm_vandq_x_f16): Remove.
6766 (__arm_vandq_x_f32): Remove.
6767 (__arm_vandq): Remove.
6768 (__arm_vandq_m): Remove.
6769 (__arm_vandq_x): Remove.
6774 (veorq_u16): Remove.
6775 (veorq_s16): Remove.
6776 (veorq_u32): Remove.
6777 (veorq_s32): Remove.
6778 (veorq_f16): Remove.
6779 (veorq_f32): Remove.
6780 (veorq_m_s8): Remove.
6781 (veorq_m_s32): Remove.
6782 (veorq_m_s16): Remove.
6783 (veorq_m_u8): Remove.
6784 (veorq_m_u32): Remove.
6785 (veorq_m_u16): Remove.
6786 (veorq_m_f32): Remove.
6787 (veorq_m_f16): Remove.
6788 (veorq_x_s8): Remove.
6789 (veorq_x_s16): Remove.
6790 (veorq_x_s32): Remove.
6791 (veorq_x_u8): Remove.
6792 (veorq_x_u16): Remove.
6793 (veorq_x_u32): Remove.
6794 (veorq_x_f16): Remove.
6795 (veorq_x_f32): Remove.
6796 (__arm_veorq_u8): Remove.
6797 (__arm_veorq_s8): Remove.
6798 (__arm_veorq_u16): Remove.
6799 (__arm_veorq_s16): Remove.
6800 (__arm_veorq_u32): Remove.
6801 (__arm_veorq_s32): Remove.
6802 (__arm_veorq_m_s8): Remove.
6803 (__arm_veorq_m_s32): Remove.
6804 (__arm_veorq_m_s16): Remove.
6805 (__arm_veorq_m_u8): Remove.
6806 (__arm_veorq_m_u32): Remove.
6807 (__arm_veorq_m_u16): Remove.
6808 (__arm_veorq_x_s8): Remove.
6809 (__arm_veorq_x_s16): Remove.
6810 (__arm_veorq_x_s32): Remove.
6811 (__arm_veorq_x_u8): Remove.
6812 (__arm_veorq_x_u16): Remove.
6813 (__arm_veorq_x_u32): Remove.
6814 (__arm_veorq_f16): Remove.
6815 (__arm_veorq_f32): Remove.
6816 (__arm_veorq_m_f32): Remove.
6817 (__arm_veorq_m_f16): Remove.
6818 (__arm_veorq_x_f16): Remove.
6819 (__arm_veorq_x_f32): Remove.
6820 (__arm_veorq): Remove.
6821 (__arm_veorq_m): Remove.
6822 (__arm_veorq_x): Remove.
6824 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
6826 * config/arm/iterators.md (MVE_INT_M_BINARY_LOGIC)
6827 (MVE_FP_M_BINARY_LOGIC): New.
6828 (MVE_INT_M_N_BINARY_LOGIC): New.
6829 (MVE_INT_N_BINARY_LOGIC): New.
6830 (mve_insn): Add vand, veor, vorr, vbic.
6831 * config/arm/mve.md (mve_vandq_m_<supf><mode>)
6832 (mve_veorq_m_<supf><mode>, mve_vorrq_m_<supf><mode>)
6833 (mve_vbicq_m_<supf><mode>): Merge into ...
6834 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
6835 (mve_vandq_m_f<mode>, mve_veorq_m_f<mode>, mve_vorrq_m_f<mode>)
6836 (mve_vbicq_m_f<mode>): Merge into ...
6837 (@mve_<mve_insn>q_m_f<mode>): ... this.
6838 (mve_vorrq_n_<supf><mode>)
6839 (mve_vbicq_n_<supf><mode>): Merge into ...
6840 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
6841 (mve_vorrq_m_n_<supf><mode>, mve_vbicq_m_n_<supf><mode>): Merge
6843 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
6845 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
6847 * config/arm/arm-mve-builtins-shapes.cc (binary): New.
6848 * config/arm/arm-mve-builtins-shapes.h (binary): New.
6850 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
6852 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_N):
6854 (vaddq, vmulq, vsubq): New.
6855 * config/arm/arm-mve-builtins-base.def (vaddq, vmulq, vsubq): New.
6856 * config/arm/arm-mve-builtins-base.h (vaddq, vmulq, vsubq): New.
6857 * config/arm/arm_mve.h (vaddq): Remove.
6860 (vaddq_n_u8): Remove.
6861 (vaddq_n_s8): Remove.
6862 (vaddq_n_u16): Remove.
6863 (vaddq_n_s16): Remove.
6864 (vaddq_n_u32): Remove.
6865 (vaddq_n_s32): Remove.
6866 (vaddq_n_f16): Remove.
6867 (vaddq_n_f32): Remove.
6868 (vaddq_m_n_s8): Remove.
6869 (vaddq_m_n_s32): Remove.
6870 (vaddq_m_n_s16): Remove.
6871 (vaddq_m_n_u8): Remove.
6872 (vaddq_m_n_u32): Remove.
6873 (vaddq_m_n_u16): Remove.
6874 (vaddq_m_s8): Remove.
6875 (vaddq_m_s32): Remove.
6876 (vaddq_m_s16): Remove.
6877 (vaddq_m_u8): Remove.
6878 (vaddq_m_u32): Remove.
6879 (vaddq_m_u16): Remove.
6880 (vaddq_m_f32): Remove.
6881 (vaddq_m_f16): Remove.
6882 (vaddq_m_n_f32): Remove.
6883 (vaddq_m_n_f16): Remove.
6885 (vaddq_s16): Remove.
6886 (vaddq_s32): Remove.
6888 (vaddq_u16): Remove.
6889 (vaddq_u32): Remove.
6890 (vaddq_f16): Remove.
6891 (vaddq_f32): Remove.
6892 (vaddq_x_s8): Remove.
6893 (vaddq_x_s16): Remove.
6894 (vaddq_x_s32): Remove.
6895 (vaddq_x_n_s8): Remove.
6896 (vaddq_x_n_s16): Remove.
6897 (vaddq_x_n_s32): Remove.
6898 (vaddq_x_u8): Remove.
6899 (vaddq_x_u16): Remove.
6900 (vaddq_x_u32): Remove.
6901 (vaddq_x_n_u8): Remove.
6902 (vaddq_x_n_u16): Remove.
6903 (vaddq_x_n_u32): Remove.
6904 (vaddq_x_f16): Remove.
6905 (vaddq_x_f32): Remove.
6906 (vaddq_x_n_f16): Remove.
6907 (vaddq_x_n_f32): Remove.
6908 (__arm_vaddq_n_u8): Remove.
6909 (__arm_vaddq_n_s8): Remove.
6910 (__arm_vaddq_n_u16): Remove.
6911 (__arm_vaddq_n_s16): Remove.
6912 (__arm_vaddq_n_u32): Remove.
6913 (__arm_vaddq_n_s32): Remove.
6914 (__arm_vaddq_m_n_s8): Remove.
6915 (__arm_vaddq_m_n_s32): Remove.
6916 (__arm_vaddq_m_n_s16): Remove.
6917 (__arm_vaddq_m_n_u8): Remove.
6918 (__arm_vaddq_m_n_u32): Remove.
6919 (__arm_vaddq_m_n_u16): Remove.
6920 (__arm_vaddq_m_s8): Remove.
6921 (__arm_vaddq_m_s32): Remove.
6922 (__arm_vaddq_m_s16): Remove.
6923 (__arm_vaddq_m_u8): Remove.
6924 (__arm_vaddq_m_u32): Remove.
6925 (__arm_vaddq_m_u16): Remove.
6926 (__arm_vaddq_s8): Remove.
6927 (__arm_vaddq_s16): Remove.
6928 (__arm_vaddq_s32): Remove.
6929 (__arm_vaddq_u8): Remove.
6930 (__arm_vaddq_u16): Remove.
6931 (__arm_vaddq_u32): Remove.
6932 (__arm_vaddq_x_s8): Remove.
6933 (__arm_vaddq_x_s16): Remove.
6934 (__arm_vaddq_x_s32): Remove.
6935 (__arm_vaddq_x_n_s8): Remove.
6936 (__arm_vaddq_x_n_s16): Remove.
6937 (__arm_vaddq_x_n_s32): Remove.
6938 (__arm_vaddq_x_u8): Remove.
6939 (__arm_vaddq_x_u16): Remove.
6940 (__arm_vaddq_x_u32): Remove.
6941 (__arm_vaddq_x_n_u8): Remove.
6942 (__arm_vaddq_x_n_u16): Remove.
6943 (__arm_vaddq_x_n_u32): Remove.
6944 (__arm_vaddq_n_f16): Remove.
6945 (__arm_vaddq_n_f32): Remove.
6946 (__arm_vaddq_m_f32): Remove.
6947 (__arm_vaddq_m_f16): Remove.
6948 (__arm_vaddq_m_n_f32): Remove.
6949 (__arm_vaddq_m_n_f16): Remove.
6950 (__arm_vaddq_f16): Remove.
6951 (__arm_vaddq_f32): Remove.
6952 (__arm_vaddq_x_f16): Remove.
6953 (__arm_vaddq_x_f32): Remove.
6954 (__arm_vaddq_x_n_f16): Remove.
6955 (__arm_vaddq_x_n_f32): Remove.
6956 (__arm_vaddq): Remove.
6957 (__arm_vaddq_m): Remove.
6958 (__arm_vaddq_x): Remove.
6963 (vmulq_n_u8): Remove.
6965 (vmulq_n_s8): Remove.
6966 (vmulq_u16): Remove.
6967 (vmulq_n_u16): Remove.
6968 (vmulq_s16): Remove.
6969 (vmulq_n_s16): Remove.
6970 (vmulq_u32): Remove.
6971 (vmulq_n_u32): Remove.
6972 (vmulq_s32): Remove.
6973 (vmulq_n_s32): Remove.
6974 (vmulq_n_f16): Remove.
6975 (vmulq_f16): Remove.
6976 (vmulq_n_f32): Remove.
6977 (vmulq_f32): Remove.
6978 (vmulq_m_n_s8): Remove.
6979 (vmulq_m_n_s32): Remove.
6980 (vmulq_m_n_s16): Remove.
6981 (vmulq_m_n_u8): Remove.
6982 (vmulq_m_n_u32): Remove.
6983 (vmulq_m_n_u16): Remove.
6984 (vmulq_m_s8): Remove.
6985 (vmulq_m_s32): Remove.
6986 (vmulq_m_s16): Remove.
6987 (vmulq_m_u8): Remove.
6988 (vmulq_m_u32): Remove.
6989 (vmulq_m_u16): Remove.
6990 (vmulq_m_f32): Remove.
6991 (vmulq_m_f16): Remove.
6992 (vmulq_m_n_f32): Remove.
6993 (vmulq_m_n_f16): Remove.
6994 (vmulq_x_s8): Remove.
6995 (vmulq_x_s16): Remove.
6996 (vmulq_x_s32): Remove.
6997 (vmulq_x_n_s8): Remove.
6998 (vmulq_x_n_s16): Remove.
6999 (vmulq_x_n_s32): Remove.
7000 (vmulq_x_u8): Remove.
7001 (vmulq_x_u16): Remove.
7002 (vmulq_x_u32): Remove.
7003 (vmulq_x_n_u8): Remove.
7004 (vmulq_x_n_u16): Remove.
7005 (vmulq_x_n_u32): Remove.
7006 (vmulq_x_f16): Remove.
7007 (vmulq_x_f32): Remove.
7008 (vmulq_x_n_f16): Remove.
7009 (vmulq_x_n_f32): Remove.
7010 (__arm_vmulq_u8): Remove.
7011 (__arm_vmulq_n_u8): Remove.
7012 (__arm_vmulq_s8): Remove.
7013 (__arm_vmulq_n_s8): Remove.
7014 (__arm_vmulq_u16): Remove.
7015 (__arm_vmulq_n_u16): Remove.
7016 (__arm_vmulq_s16): Remove.
7017 (__arm_vmulq_n_s16): Remove.
7018 (__arm_vmulq_u32): Remove.
7019 (__arm_vmulq_n_u32): Remove.
7020 (__arm_vmulq_s32): Remove.
7021 (__arm_vmulq_n_s32): Remove.
7022 (__arm_vmulq_m_n_s8): Remove.
7023 (__arm_vmulq_m_n_s32): Remove.
7024 (__arm_vmulq_m_n_s16): Remove.
7025 (__arm_vmulq_m_n_u8): Remove.
7026 (__arm_vmulq_m_n_u32): Remove.
7027 (__arm_vmulq_m_n_u16): Remove.
7028 (__arm_vmulq_m_s8): Remove.
7029 (__arm_vmulq_m_s32): Remove.
7030 (__arm_vmulq_m_s16): Remove.
7031 (__arm_vmulq_m_u8): Remove.
7032 (__arm_vmulq_m_u32): Remove.
7033 (__arm_vmulq_m_u16): Remove.
7034 (__arm_vmulq_x_s8): Remove.
7035 (__arm_vmulq_x_s16): Remove.
7036 (__arm_vmulq_x_s32): Remove.
7037 (__arm_vmulq_x_n_s8): Remove.
7038 (__arm_vmulq_x_n_s16): Remove.
7039 (__arm_vmulq_x_n_s32): Remove.
7040 (__arm_vmulq_x_u8): Remove.
7041 (__arm_vmulq_x_u16): Remove.
7042 (__arm_vmulq_x_u32): Remove.
7043 (__arm_vmulq_x_n_u8): Remove.
7044 (__arm_vmulq_x_n_u16): Remove.
7045 (__arm_vmulq_x_n_u32): Remove.
7046 (__arm_vmulq_n_f16): Remove.
7047 (__arm_vmulq_f16): Remove.
7048 (__arm_vmulq_n_f32): Remove.
7049 (__arm_vmulq_f32): Remove.
7050 (__arm_vmulq_m_f32): Remove.
7051 (__arm_vmulq_m_f16): Remove.
7052 (__arm_vmulq_m_n_f32): Remove.
7053 (__arm_vmulq_m_n_f16): Remove.
7054 (__arm_vmulq_x_f16): Remove.
7055 (__arm_vmulq_x_f32): Remove.
7056 (__arm_vmulq_x_n_f16): Remove.
7057 (__arm_vmulq_x_n_f32): Remove.
7058 (__arm_vmulq): Remove.
7059 (__arm_vmulq_m): Remove.
7060 (__arm_vmulq_x): Remove.
7064 (vsubq_n_f16): Remove.
7065 (vsubq_n_f32): Remove.
7067 (vsubq_n_u8): Remove.
7069 (vsubq_n_s8): Remove.
7070 (vsubq_u16): Remove.
7071 (vsubq_n_u16): Remove.
7072 (vsubq_s16): Remove.
7073 (vsubq_n_s16): Remove.
7074 (vsubq_u32): Remove.
7075 (vsubq_n_u32): Remove.
7076 (vsubq_s32): Remove.
7077 (vsubq_n_s32): Remove.
7078 (vsubq_f16): Remove.
7079 (vsubq_f32): Remove.
7080 (vsubq_m_s8): Remove.
7081 (vsubq_m_u8): Remove.
7082 (vsubq_m_s16): Remove.
7083 (vsubq_m_u16): Remove.
7084 (vsubq_m_s32): Remove.
7085 (vsubq_m_u32): Remove.
7086 (vsubq_m_n_s8): Remove.
7087 (vsubq_m_n_s32): Remove.
7088 (vsubq_m_n_s16): Remove.
7089 (vsubq_m_n_u8): Remove.
7090 (vsubq_m_n_u32): Remove.
7091 (vsubq_m_n_u16): Remove.
7092 (vsubq_m_f32): Remove.
7093 (vsubq_m_f16): Remove.
7094 (vsubq_m_n_f32): Remove.
7095 (vsubq_m_n_f16): Remove.
7096 (vsubq_x_s8): Remove.
7097 (vsubq_x_s16): Remove.
7098 (vsubq_x_s32): Remove.
7099 (vsubq_x_n_s8): Remove.
7100 (vsubq_x_n_s16): Remove.
7101 (vsubq_x_n_s32): Remove.
7102 (vsubq_x_u8): Remove.
7103 (vsubq_x_u16): Remove.
7104 (vsubq_x_u32): Remove.
7105 (vsubq_x_n_u8): Remove.
7106 (vsubq_x_n_u16): Remove.
7107 (vsubq_x_n_u32): Remove.
7108 (vsubq_x_f16): Remove.
7109 (vsubq_x_f32): Remove.
7110 (vsubq_x_n_f16): Remove.
7111 (vsubq_x_n_f32): Remove.
7112 (__arm_vsubq_u8): Remove.
7113 (__arm_vsubq_n_u8): Remove.
7114 (__arm_vsubq_s8): Remove.
7115 (__arm_vsubq_n_s8): Remove.
7116 (__arm_vsubq_u16): Remove.
7117 (__arm_vsubq_n_u16): Remove.
7118 (__arm_vsubq_s16): Remove.
7119 (__arm_vsubq_n_s16): Remove.
7120 (__arm_vsubq_u32): Remove.
7121 (__arm_vsubq_n_u32): Remove.
7122 (__arm_vsubq_s32): Remove.
7123 (__arm_vsubq_n_s32): Remove.
7124 (__arm_vsubq_m_s8): Remove.
7125 (__arm_vsubq_m_u8): Remove.
7126 (__arm_vsubq_m_s16): Remove.
7127 (__arm_vsubq_m_u16): Remove.
7128 (__arm_vsubq_m_s32): Remove.
7129 (__arm_vsubq_m_u32): Remove.
7130 (__arm_vsubq_m_n_s8): Remove.
7131 (__arm_vsubq_m_n_s32): Remove.
7132 (__arm_vsubq_m_n_s16): Remove.
7133 (__arm_vsubq_m_n_u8): Remove.
7134 (__arm_vsubq_m_n_u32): Remove.
7135 (__arm_vsubq_m_n_u16): Remove.
7136 (__arm_vsubq_x_s8): Remove.
7137 (__arm_vsubq_x_s16): Remove.
7138 (__arm_vsubq_x_s32): Remove.
7139 (__arm_vsubq_x_n_s8): Remove.
7140 (__arm_vsubq_x_n_s16): Remove.
7141 (__arm_vsubq_x_n_s32): Remove.
7142 (__arm_vsubq_x_u8): Remove.
7143 (__arm_vsubq_x_u16): Remove.
7144 (__arm_vsubq_x_u32): Remove.
7145 (__arm_vsubq_x_n_u8): Remove.
7146 (__arm_vsubq_x_n_u16): Remove.
7147 (__arm_vsubq_x_n_u32): Remove.
7148 (__arm_vsubq_n_f16): Remove.
7149 (__arm_vsubq_n_f32): Remove.
7150 (__arm_vsubq_f16): Remove.
7151 (__arm_vsubq_f32): Remove.
7152 (__arm_vsubq_m_f32): Remove.
7153 (__arm_vsubq_m_f16): Remove.
7154 (__arm_vsubq_m_n_f32): Remove.
7155 (__arm_vsubq_m_n_f16): Remove.
7156 (__arm_vsubq_x_f16): Remove.
7157 (__arm_vsubq_x_f32): Remove.
7158 (__arm_vsubq_x_n_f16): Remove.
7159 (__arm_vsubq_x_n_f32): Remove.
7160 (__arm_vsubq): Remove.
7161 (__arm_vsubq_m): Remove.
7162 (__arm_vsubq_x): Remove.
7163 * config/arm/arm_mve_builtins.def (vsubq_u, vsubq_s, vsubq_f):
7165 (vmulq_u, vmulq_s, vmulq_f): Remove.
7166 * config/arm/mve.md (mve_vsubq_<supf><mode>): Remove.
7167 (mve_vmulq_<supf><mode>): Remove.
7169 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
7171 * config/arm/iterators.md (MVE_INT_BINARY_RTX, MVE_INT_M_BINARY)
7172 (MVE_INT_M_N_BINARY, MVE_INT_N_BINARY, MVE_FP_M_BINARY)
7173 (MVE_FP_M_N_BINARY, MVE_FP_N_BINARY, mve_addsubmul, mve_insn): New
7176 (mve_vsubq_n_f<mode>, mve_vaddq_n_f<mode>, mve_vmulq_n_f<mode>):
7178 (@mve_<mve_insn>q_n_f<mode>): ... this.
7179 (mve_vaddq_n_<supf><mode>, mve_vmulq_n_<supf><mode>)
7180 (mve_vsubq_n_<supf><mode>): Factorize into ...
7181 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
7182 (mve_vaddq<mode>, mve_vmulq<mode>, mve_vsubq<mode>): Factorize
7184 (mve_<mve_addsubmul>q<mode>): ... this.
7185 (mve_vaddq_f<mode>, mve_vmulq_f<mode>, mve_vsubq_f<mode>):
7187 (mve_<mve_addsubmul>q_f<mode>): ... this.
7188 (mve_vaddq_m_<supf><mode>, mve_vmulq_m_<supf><mode>)
7189 (mve_vsubq_m_<supf><mode>): Factorize into ...
7190 (@mve_<mve_insn>q_m_<supf><mode>): ... this,
7191 (mve_vaddq_m_n_<supf><mode>, mve_vmulq_m_n_<supf><mode>)
7192 (mve_vsubq_m_n_<supf><mode>): Factorize into ...
7193 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
7194 (mve_vaddq_m_f<mode>, mve_vmulq_m_f<mode>, mve_vsubq_m_f<mode>):
7196 (@mve_<mve_insn>q_m_f<mode>): ... this.
7197 (mve_vaddq_m_n_f<mode>, mve_vmulq_m_n_f<mode>)
7198 (mve_vsubq_m_n_f<mode>): Factorize into ...
7199 (@mve_<mve_insn>q_m_n_f<mode>): ... this.
7201 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
7203 * config/arm/arm-mve-builtins-functions.h (class
7204 unspec_based_mve_function_base): New.
7205 (class unspec_based_mve_function_exact_insn): New.
7207 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
7209 * config/arm/arm-mve-builtins-shapes.cc (binary_opt_n): New.
7210 * config/arm/arm-mve-builtins-shapes.h (binary_opt_n): New.
7212 2023-05-03 Murray Steele <murray.steele@arm.com>
7213 Christophe Lyon <christophe.lyon@arm.com>
7215 * config/arm/arm-mve-builtins-base.cc (class
7216 vuninitializedq_impl): New.
7217 * config/arm/arm-mve-builtins-base.def (vuninitializedq): New.
7218 * config/arm/arm-mve-builtins-base.h (vuninitializedq): New
7220 * config/arm/arm-mve-builtins-shapes.cc (inherent): New.
7221 * config/arm/arm-mve-builtins-shapes.h (inherent): New
7223 * config/arm/arm_mve_types.h (__arm_vuninitializedq): Move to ...
7224 * config/arm/arm_mve.h (__arm_vuninitializedq): ... here.
7225 (__arm_vuninitializedq_u8): Remove.
7226 (__arm_vuninitializedq_u16): Remove.
7227 (__arm_vuninitializedq_u32): Remove.
7228 (__arm_vuninitializedq_u64): Remove.
7229 (__arm_vuninitializedq_s8): Remove.
7230 (__arm_vuninitializedq_s16): Remove.
7231 (__arm_vuninitializedq_s32): Remove.
7232 (__arm_vuninitializedq_s64): Remove.
7233 (__arm_vuninitializedq_f16): Remove.
7234 (__arm_vuninitializedq_f32): Remove.
7236 2023-05-03 Murray Steele <murray.steele@arm.com>
7237 Christophe Lyon <christophe.lyon@arm.com>
7239 * config/arm/arm-mve-builtins-base.cc (vreinterpretq_impl): New class.
7240 * config/arm/arm-mve-builtins-base.def: Define vreinterpretq.
7241 * config/arm/arm-mve-builtins-base.h (vreinterpretq): New declaration.
7242 * config/arm/arm-mve-builtins-shapes.cc (parse_element_type): New function.
7243 (parse_type): Likewise.
7244 (parse_signature): Likewise.
7245 (build_one): Likewise.
7246 (build_all): Likewise.
7247 (overloaded_base): New struct.
7248 (unary_convert_def): Likewise.
7249 * config/arm/arm-mve-builtins-shapes.h (unary_convert): Declare.
7250 * config/arm/arm-mve-builtins.cc (TYPES_reinterpret_signed1): New
7252 (TYPES_reinterpret_unsigned1): Likewise.
7253 (TYPES_reinterpret_integer): Likewise.
7254 (TYPES_reinterpret_integer1): Likewise.
7255 (TYPES_reinterpret_float1): Likewise.
7256 (TYPES_reinterpret_float): Likewise.
7257 (reinterpret_integer): New.
7258 (reinterpret_float): New.
7259 (handle_arm_mve_h): Register builtins.
7260 * config/arm/arm_mve.h (vreinterpretq_s16): Remove.
7261 (vreinterpretq_s32): Likewise.
7262 (vreinterpretq_s64): Likewise.
7263 (vreinterpretq_s8): Likewise.
7264 (vreinterpretq_u16): Likewise.
7265 (vreinterpretq_u32): Likewise.
7266 (vreinterpretq_u64): Likewise.
7267 (vreinterpretq_u8): Likewise.
7268 (vreinterpretq_f16): Likewise.
7269 (vreinterpretq_f32): Likewise.
7270 (vreinterpretq_s16_s32): Likewise.
7271 (vreinterpretq_s16_s64): Likewise.
7272 (vreinterpretq_s16_s8): Likewise.
7273 (vreinterpretq_s16_u16): Likewise.
7274 (vreinterpretq_s16_u32): Likewise.
7275 (vreinterpretq_s16_u64): Likewise.
7276 (vreinterpretq_s16_u8): Likewise.
7277 (vreinterpretq_s32_s16): Likewise.
7278 (vreinterpretq_s32_s64): Likewise.
7279 (vreinterpretq_s32_s8): Likewise.
7280 (vreinterpretq_s32_u16): Likewise.
7281 (vreinterpretq_s32_u32): Likewise.
7282 (vreinterpretq_s32_u64): Likewise.
7283 (vreinterpretq_s32_u8): Likewise.
7284 (vreinterpretq_s64_s16): Likewise.
7285 (vreinterpretq_s64_s32): Likewise.
7286 (vreinterpretq_s64_s8): Likewise.
7287 (vreinterpretq_s64_u16): Likewise.
7288 (vreinterpretq_s64_u32): Likewise.
7289 (vreinterpretq_s64_u64): Likewise.
7290 (vreinterpretq_s64_u8): Likewise.
7291 (vreinterpretq_s8_s16): Likewise.
7292 (vreinterpretq_s8_s32): Likewise.
7293 (vreinterpretq_s8_s64): Likewise.
7294 (vreinterpretq_s8_u16): Likewise.
7295 (vreinterpretq_s8_u32): Likewise.
7296 (vreinterpretq_s8_u64): Likewise.
7297 (vreinterpretq_s8_u8): Likewise.
7298 (vreinterpretq_u16_s16): Likewise.
7299 (vreinterpretq_u16_s32): Likewise.
7300 (vreinterpretq_u16_s64): Likewise.
7301 (vreinterpretq_u16_s8): Likewise.
7302 (vreinterpretq_u16_u32): Likewise.
7303 (vreinterpretq_u16_u64): Likewise.
7304 (vreinterpretq_u16_u8): Likewise.
7305 (vreinterpretq_u32_s16): Likewise.
7306 (vreinterpretq_u32_s32): Likewise.
7307 (vreinterpretq_u32_s64): Likewise.
7308 (vreinterpretq_u32_s8): Likewise.
7309 (vreinterpretq_u32_u16): Likewise.
7310 (vreinterpretq_u32_u64): Likewise.
7311 (vreinterpretq_u32_u8): Likewise.
7312 (vreinterpretq_u64_s16): Likewise.
7313 (vreinterpretq_u64_s32): Likewise.
7314 (vreinterpretq_u64_s64): Likewise.
7315 (vreinterpretq_u64_s8): Likewise.
7316 (vreinterpretq_u64_u16): Likewise.
7317 (vreinterpretq_u64_u32): Likewise.
7318 (vreinterpretq_u64_u8): Likewise.
7319 (vreinterpretq_u8_s16): Likewise.
7320 (vreinterpretq_u8_s32): Likewise.
7321 (vreinterpretq_u8_s64): Likewise.
7322 (vreinterpretq_u8_s8): Likewise.
7323 (vreinterpretq_u8_u16): Likewise.
7324 (vreinterpretq_u8_u32): Likewise.
7325 (vreinterpretq_u8_u64): Likewise.
7326 (vreinterpretq_s32_f16): Likewise.
7327 (vreinterpretq_s32_f32): Likewise.
7328 (vreinterpretq_u16_f16): Likewise.
7329 (vreinterpretq_u16_f32): Likewise.
7330 (vreinterpretq_u32_f16): Likewise.
7331 (vreinterpretq_u32_f32): Likewise.
7332 (vreinterpretq_u64_f16): Likewise.
7333 (vreinterpretq_u64_f32): Likewise.
7334 (vreinterpretq_u8_f16): Likewise.
7335 (vreinterpretq_u8_f32): Likewise.
7336 (vreinterpretq_f16_f32): Likewise.
7337 (vreinterpretq_f16_s16): Likewise.
7338 (vreinterpretq_f16_s32): Likewise.
7339 (vreinterpretq_f16_s64): Likewise.
7340 (vreinterpretq_f16_s8): Likewise.
7341 (vreinterpretq_f16_u16): Likewise.
7342 (vreinterpretq_f16_u32): Likewise.
7343 (vreinterpretq_f16_u64): Likewise.
7344 (vreinterpretq_f16_u8): Likewise.
7345 (vreinterpretq_f32_f16): Likewise.
7346 (vreinterpretq_f32_s16): Likewise.
7347 (vreinterpretq_f32_s32): Likewise.
7348 (vreinterpretq_f32_s64): Likewise.
7349 (vreinterpretq_f32_s8): Likewise.
7350 (vreinterpretq_f32_u16): Likewise.
7351 (vreinterpretq_f32_u32): Likewise.
7352 (vreinterpretq_f32_u64): Likewise.
7353 (vreinterpretq_f32_u8): Likewise.
7354 (vreinterpretq_s16_f16): Likewise.
7355 (vreinterpretq_s16_f32): Likewise.
7356 (vreinterpretq_s64_f16): Likewise.
7357 (vreinterpretq_s64_f32): Likewise.
7358 (vreinterpretq_s8_f16): Likewise.
7359 (vreinterpretq_s8_f32): Likewise.
7360 (__arm_vreinterpretq_f16): Likewise.
7361 (__arm_vreinterpretq_f32): Likewise.
7362 (__arm_vreinterpretq_s16): Likewise.
7363 (__arm_vreinterpretq_s32): Likewise.
7364 (__arm_vreinterpretq_s64): Likewise.
7365 (__arm_vreinterpretq_s8): Likewise.
7366 (__arm_vreinterpretq_u16): Likewise.
7367 (__arm_vreinterpretq_u32): Likewise.
7368 (__arm_vreinterpretq_u64): Likewise.
7369 (__arm_vreinterpretq_u8): Likewise.
7370 * config/arm/arm_mve_types.h (__arm_vreinterpretq_s16_s32): Remove.
7371 (__arm_vreinterpretq_s16_s64): Likewise.
7372 (__arm_vreinterpretq_s16_s8): Likewise.
7373 (__arm_vreinterpretq_s16_u16): Likewise.
7374 (__arm_vreinterpretq_s16_u32): Likewise.
7375 (__arm_vreinterpretq_s16_u64): Likewise.
7376 (__arm_vreinterpretq_s16_u8): Likewise.
7377 (__arm_vreinterpretq_s32_s16): Likewise.
7378 (__arm_vreinterpretq_s32_s64): Likewise.
7379 (__arm_vreinterpretq_s32_s8): Likewise.
7380 (__arm_vreinterpretq_s32_u16): Likewise.
7381 (__arm_vreinterpretq_s32_u32): Likewise.
7382 (__arm_vreinterpretq_s32_u64): Likewise.
7383 (__arm_vreinterpretq_s32_u8): Likewise.
7384 (__arm_vreinterpretq_s64_s16): Likewise.
7385 (__arm_vreinterpretq_s64_s32): Likewise.
7386 (__arm_vreinterpretq_s64_s8): Likewise.
7387 (__arm_vreinterpretq_s64_u16): Likewise.
7388 (__arm_vreinterpretq_s64_u32): Likewise.
7389 (__arm_vreinterpretq_s64_u64): Likewise.
7390 (__arm_vreinterpretq_s64_u8): Likewise.
7391 (__arm_vreinterpretq_s8_s16): Likewise.
7392 (__arm_vreinterpretq_s8_s32): Likewise.
7393 (__arm_vreinterpretq_s8_s64): Likewise.
7394 (__arm_vreinterpretq_s8_u16): Likewise.
7395 (__arm_vreinterpretq_s8_u32): Likewise.
7396 (__arm_vreinterpretq_s8_u64): Likewise.
7397 (__arm_vreinterpretq_s8_u8): Likewise.
7398 (__arm_vreinterpretq_u16_s16): Likewise.
7399 (__arm_vreinterpretq_u16_s32): Likewise.
7400 (__arm_vreinterpretq_u16_s64): Likewise.
7401 (__arm_vreinterpretq_u16_s8): Likewise.
7402 (__arm_vreinterpretq_u16_u32): Likewise.
7403 (__arm_vreinterpretq_u16_u64): Likewise.
7404 (__arm_vreinterpretq_u16_u8): Likewise.
7405 (__arm_vreinterpretq_u32_s16): Likewise.
7406 (__arm_vreinterpretq_u32_s32): Likewise.
7407 (__arm_vreinterpretq_u32_s64): Likewise.
7408 (__arm_vreinterpretq_u32_s8): Likewise.
7409 (__arm_vreinterpretq_u32_u16): Likewise.
7410 (__arm_vreinterpretq_u32_u64): Likewise.
7411 (__arm_vreinterpretq_u32_u8): Likewise.
7412 (__arm_vreinterpretq_u64_s16): Likewise.
7413 (__arm_vreinterpretq_u64_s32): Likewise.
7414 (__arm_vreinterpretq_u64_s64): Likewise.
7415 (__arm_vreinterpretq_u64_s8): Likewise.
7416 (__arm_vreinterpretq_u64_u16): Likewise.
7417 (__arm_vreinterpretq_u64_u32): Likewise.
7418 (__arm_vreinterpretq_u64_u8): Likewise.
7419 (__arm_vreinterpretq_u8_s16): Likewise.
7420 (__arm_vreinterpretq_u8_s32): Likewise.
7421 (__arm_vreinterpretq_u8_s64): Likewise.
7422 (__arm_vreinterpretq_u8_s8): Likewise.
7423 (__arm_vreinterpretq_u8_u16): Likewise.
7424 (__arm_vreinterpretq_u8_u32): Likewise.
7425 (__arm_vreinterpretq_u8_u64): Likewise.
7426 (__arm_vreinterpretq_s32_f16): Likewise.
7427 (__arm_vreinterpretq_s32_f32): Likewise.
7428 (__arm_vreinterpretq_s16_f16): Likewise.
7429 (__arm_vreinterpretq_s16_f32): Likewise.
7430 (__arm_vreinterpretq_s64_f16): Likewise.
7431 (__arm_vreinterpretq_s64_f32): Likewise.
7432 (__arm_vreinterpretq_s8_f16): Likewise.
7433 (__arm_vreinterpretq_s8_f32): Likewise.
7434 (__arm_vreinterpretq_u16_f16): Likewise.
7435 (__arm_vreinterpretq_u16_f32): Likewise.
7436 (__arm_vreinterpretq_u32_f16): Likewise.
7437 (__arm_vreinterpretq_u32_f32): Likewise.
7438 (__arm_vreinterpretq_u64_f16): Likewise.
7439 (__arm_vreinterpretq_u64_f32): Likewise.
7440 (__arm_vreinterpretq_u8_f16): Likewise.
7441 (__arm_vreinterpretq_u8_f32): Likewise.
7442 (__arm_vreinterpretq_f16_f32): Likewise.
7443 (__arm_vreinterpretq_f16_s16): Likewise.
7444 (__arm_vreinterpretq_f16_s32): Likewise.
7445 (__arm_vreinterpretq_f16_s64): Likewise.
7446 (__arm_vreinterpretq_f16_s8): Likewise.
7447 (__arm_vreinterpretq_f16_u16): Likewise.
7448 (__arm_vreinterpretq_f16_u32): Likewise.
7449 (__arm_vreinterpretq_f16_u64): Likewise.
7450 (__arm_vreinterpretq_f16_u8): Likewise.
7451 (__arm_vreinterpretq_f32_f16): Likewise.
7452 (__arm_vreinterpretq_f32_s16): Likewise.
7453 (__arm_vreinterpretq_f32_s32): Likewise.
7454 (__arm_vreinterpretq_f32_s64): Likewise.
7455 (__arm_vreinterpretq_f32_s8): Likewise.
7456 (__arm_vreinterpretq_f32_u16): Likewise.
7457 (__arm_vreinterpretq_f32_u32): Likewise.
7458 (__arm_vreinterpretq_f32_u64): Likewise.
7459 (__arm_vreinterpretq_f32_u8): Likewise.
7460 (__arm_vreinterpretq_s16): Likewise.
7461 (__arm_vreinterpretq_s32): Likewise.
7462 (__arm_vreinterpretq_s64): Likewise.
7463 (__arm_vreinterpretq_s8): Likewise.
7464 (__arm_vreinterpretq_u16): Likewise.
7465 (__arm_vreinterpretq_u32): Likewise.
7466 (__arm_vreinterpretq_u64): Likewise.
7467 (__arm_vreinterpretq_u8): Likewise.
7468 (__arm_vreinterpretq_f16): Likewise.
7469 (__arm_vreinterpretq_f32): Likewise.
7470 * config/arm/mve.md (@arm_mve_reinterpret<mode>): New pattern.
7471 * config/arm/unspecs.md: (REINTERPRET): New unspec.
7473 2023-05-03 Murray Steele <murray.steele@arm.com>
7474 Christophe Lyon <christophe.lyon@arm.com>
7475 Christophe Lyon <christophe.lyon@arm.com
7477 * config.gcc: Add arm-mve-builtins-base.o and
7478 arm-mve-builtins-shapes.o to extra_objs.
7479 * config/arm/arm-builtins.cc (arm_builtin_decl): Handle MVE builtin
7481 (arm_expand_builtin): Likewise
7482 (arm_check_builtin_call): Likewise
7483 (arm_describe_resolver): Likewise.
7484 * config/arm/arm-builtins.h (enum resolver_ident): Add
7486 * config/arm/arm-c.cc (arm_pragma_arm): Handle new pragma.
7487 (arm_resolve_overloaded_builtin): Handle MVE builtins.
7488 (arm_register_target_pragmas): Register arm_check_builtin_call.
7489 * config/arm/arm-mve-builtins.cc (class registered_function): New
7491 (struct registered_function_hasher): New struct.
7492 (pred_suffixes): New table.
7493 (mode_suffixes): New table.
7494 (type_suffix_info): New table.
7495 (TYPES_float16): New.
7496 (TYPES_all_float): New.
7497 (TYPES_integer_8): New.
7498 (TYPES_integer_8_16): New.
7499 (TYPES_integer_16_32): New.
7500 (TYPES_integer_32): New.
7501 (TYPES_signed_16_32): New.
7502 (TYPES_signed_32): New.
7503 (TYPES_all_signed): New.
7504 (TYPES_all_unsigned): New.
7505 (TYPES_all_integer): New.
7506 (TYPES_all_integer_with_64): New.
7507 (DEF_VECTOR_TYPE): New.
7508 (DEF_DOUBLE_TYPE): New.
7509 (DEF_MVE_TYPES_ARRAY): New.
7511 (all_integer_with_64): New.
7515 (all_unsigned): New.
7517 (integer_8_16): New.
7518 (integer_16_32): New.
7520 (signed_16_32): New.
7522 (register_vector_type): Use void_type_node for mve.fp-only types when
7523 mve.fp is not enabled.
7524 (register_builtin_tuple_types): Likewise.
7525 (handle_arm_mve_h): New function..
7526 (matches_type_p): Likewise..
7527 (report_out_of_range): Likewise.
7528 (report_not_enum): Likewise.
7529 (report_missing_float): Likewise.
7530 (report_non_ice): Likewise.
7531 (check_requires_float): Likewise.
7532 (function_instance::hash): Likewise
7533 (function_instance::call_properties): Likewise.
7534 (function_instance::reads_global_state_p): Likewise.
7535 (function_instance::modifies_global_state_p): Likewise.
7536 (function_instance::could_trap_p): Likewise.
7537 (function_instance::has_inactive_argument): Likewise.
7538 (registered_function_hasher::hash): Likewise.
7539 (registered_function_hasher::equal): Likewise.
7540 (function_builder::function_builder): Likewise.
7541 (function_builder::~function_builder): Likewise.
7542 (function_builder::append_name): Likewise.
7543 (function_builder::finish_name): Likewise.
7544 (function_builder::get_name): Likewise.
7545 (add_attribute): Likewise.
7546 (function_builder::get_attributes): Likewise.
7547 (function_builder::add_function): Likewise.
7548 (function_builder::add_unique_function): Likewise.
7549 (function_builder::add_overloaded_function): Likewise.
7550 (function_builder::add_overloaded_functions): Likewise.
7551 (function_builder::register_function_group): Likewise.
7552 (function_call_info::function_call_info): Likewise.
7553 (function_resolver::function_resolver): Likewise.
7554 (function_resolver::get_vector_type): Likewise.
7555 (function_resolver::get_scalar_type_name): Likewise.
7556 (function_resolver::get_argument_type): Likewise.
7557 (function_resolver::scalar_argument_p): Likewise.
7558 (function_resolver::report_no_such_form): Likewise.
7559 (function_resolver::lookup_form): Likewise.
7560 (function_resolver::resolve_to): Likewise.
7561 (function_resolver::infer_vector_or_tuple_type): Likewise.
7562 (function_resolver::infer_vector_type): Likewise.
7563 (function_resolver::require_vector_or_scalar_type): Likewise.
7564 (function_resolver::require_vector_type): Likewise.
7565 (function_resolver::require_matching_vector_type): Likewise.
7566 (function_resolver::require_derived_vector_type): Likewise.
7567 (function_resolver::require_derived_scalar_type): Likewise.
7568 (function_resolver::require_integer_immediate): Likewise.
7569 (function_resolver::require_scalar_type): Likewise.
7570 (function_resolver::check_num_arguments): Likewise.
7571 (function_resolver::check_gp_argument): Likewise.
7572 (function_resolver::finish_opt_n_resolution): Likewise.
7573 (function_resolver::resolve_unary): Likewise.
7574 (function_resolver::resolve_unary_n): Likewise.
7575 (function_resolver::resolve_uniform): Likewise.
7576 (function_resolver::resolve_uniform_opt_n): Likewise.
7577 (function_resolver::resolve): Likewise.
7578 (function_checker::function_checker): Likewise.
7579 (function_checker::argument_exists_p): Likewise.
7580 (function_checker::require_immediate): Likewise.
7581 (function_checker::require_immediate_enum): Likewise.
7582 (function_checker::require_immediate_range): Likewise.
7583 (function_checker::check): Likewise.
7584 (gimple_folder::gimple_folder): Likewise.
7585 (gimple_folder::fold): Likewise.
7586 (function_expander::function_expander): Likewise.
7587 (function_expander::direct_optab_handler): Likewise.
7588 (function_expander::get_fallback_value): Likewise.
7589 (function_expander::get_reg_target): Likewise.
7590 (function_expander::add_output_operand): Likewise.
7591 (function_expander::add_input_operand): Likewise.
7592 (function_expander::add_integer_operand): Likewise.
7593 (function_expander::generate_insn): Likewise.
7594 (function_expander::use_exact_insn): Likewise.
7595 (function_expander::use_unpred_insn): Likewise.
7596 (function_expander::use_pred_x_insn): Likewise.
7597 (function_expander::use_cond_insn): Likewise.
7598 (function_expander::map_to_rtx_codes): Likewise.
7599 (function_expander::expand): Likewise.
7600 (resolve_overloaded_builtin): Likewise.
7601 (check_builtin_call): Likewise.
7602 (gimple_fold_builtin): Likewise.
7603 (expand_builtin): Likewise.
7604 (gt_ggc_mx): Likewise.
7605 (gt_pch_nx): Likewise.
7606 (gt_pch_nx): Likewise.
7607 * config/arm/arm-mve-builtins.def(s8): Define new type suffix.
7619 * config/arm/arm-mve-builtins.h (MAX_TUPLE_SIZE): New constant.
7620 (CP_READ_FPCR): Likewise.
7621 (CP_RAISE_FP_EXCEPTIONS): Likewise.
7622 (CP_READ_MEMORY): Likewise.
7623 (CP_WRITE_MEMORY): Likewise.
7624 (enum units_index): New enum.
7625 (enum predication_index): New.
7626 (enum type_class_index): New.
7627 (enum mode_suffix_index): New enum.
7628 (enum type_suffix_index): New.
7629 (struct mode_suffix_info): New struct.
7630 (struct type_suffix_info): New.
7631 (struct function_group_info): Likewise.
7632 (class function_instance): Likewise.
7633 (class registered_function): Likewise.
7634 (class function_builder): Likewise.
7635 (class function_call_info): Likewise.
7636 (class function_resolver): Likewise.
7637 (class function_checker): Likewise.
7638 (class gimple_folder): Likewise.
7639 (class function_expander): Likewise.
7640 (get_mve_pred16_t): Likewise.
7641 (find_mode_suffix): New function.
7642 (class function_base): Likewise.
7643 (class function_shape): Likewise.
7644 (function_instance::operator==): New function.
7645 (function_instance::operator!=): Likewise.
7646 (function_instance::vectors_per_tuple): Likewise.
7647 (function_instance::mode_suffix): Likewise.
7648 (function_instance::type_suffix): Likewise.
7649 (function_instance::scalar_type): Likewise.
7650 (function_instance::vector_type): Likewise.
7651 (function_instance::tuple_type): Likewise.
7652 (function_instance::vector_mode): Likewise.
7653 (function_call_info::function_returns_void_p): Likewise.
7654 (function_base::call_properties): Likewise.
7655 * config/arm/arm-protos.h (enum arm_builtin_class): Add
7657 (handle_arm_mve_h): New.
7658 (resolve_overloaded_builtin): New.
7659 (check_builtin_call): New.
7660 (gimple_fold_builtin): New.
7661 (expand_builtin): New.
7662 * config/arm/arm.cc (TARGET_GIMPLE_FOLD_BUILTIN): Define as
7663 arm_gimple_fold_builtin.
7664 (arm_gimple_fold_builtin): New function.
7665 * config/arm/arm_mve.h: Use new arm_mve.h pragma.
7666 * config/arm/predicates.md (arm_any_register_operand): New predicate.
7667 * config/arm/t-arm: (arm-mve-builtins.o): Add includes.
7668 (arm-mve-builtins-shapes.o): New target.
7669 (arm-mve-builtins-base.o): New target.
7670 * config/arm/arm-mve-builtins-base.cc: New file.
7671 * config/arm/arm-mve-builtins-base.def: New file.
7672 * config/arm/arm-mve-builtins-base.h: New file.
7673 * config/arm/arm-mve-builtins-functions.h: New file.
7674 * config/arm/arm-mve-builtins-shapes.cc: New file.
7675 * config/arm/arm-mve-builtins-shapes.h: New file.
7677 2023-05-03 Murray Steele <murray.steele@arm.com>
7678 Christophe Lyon <christophe.lyon@arm.com>
7679 Christophe Lyon <christophe.lyon@arm.com>
7681 * config/arm/arm-builtins.cc (arm_general_add_builtin_function):
7683 (arm_init_builtin): Use arm_general_add_builtin_function instead
7684 of arm_add_builtin_function.
7685 (arm_init_acle_builtins): Likewise.
7686 (arm_init_mve_builtins): Likewise.
7687 (arm_init_crypto_builtins): Likewise.
7688 (arm_init_builtins): Likewise.
7689 (arm_general_builtin_decl): New function.
7690 (arm_builtin_decl): Defer to numberspace-specialized functions.
7691 (arm_expand_builtin_args): Rename into arm_general_expand_builtin_args.
7692 (arm_expand_builtin_1): Rename into arm_general_expand_builtin_1 and ...
7693 (arm_general_expand_builtin_1): ... specialize for general builtins.
7694 (arm_expand_acle_builtin): Use arm_general_expand_builtin
7695 instead of arm_expand_builtin.
7696 (arm_expand_mve_builtin): Likewise.
7697 (arm_expand_neon_builtin): Likewise.
7698 (arm_expand_vfp_builtin): Likewise.
7699 (arm_general_expand_builtin): New function.
7700 (arm_expand_builtin): Specialize for general builtins.
7701 (arm_general_check_builtin_call): New function.
7702 (arm_check_builtin_call): Specialize for general builtins.
7703 (arm_describe_resolver): Validate numberspace.
7704 (arm_cde_end_args): Likewise.
7705 * config/arm/arm-protos.h (enum arm_builtin_class): New enum.
7706 (ARM_BUILTIN_SHIFT, ARM_BUILTIN_CLASS): New constants.
7708 2023-05-03 Martin Liska <mliska@suse.cz>
7711 * config/riscv/sync.md: Add gcc_unreachable to a switch.
7713 2023-05-03 Richard Biener <rguenther@suse.de>
7715 * tree-ssa-loop-split.cc (split_at_bb_p): Avoid last_stmt.
7716 (patch_loop_exit): Likewise.
7717 (connect_loops): Likewise.
7718 (split_loop): Likewise.
7719 (control_dep_semi_invariant_p): Likewise.
7720 (do_split_loop_on_cond): Likewise.
7721 (split_loop_on_cond): Likewise.
7722 * tree-ssa-loop-unswitch.cc (find_unswitching_predicates_for_bb):
7724 (simplify_loop_version): Likewise.
7725 (evaluate_bbs): Likewise.
7726 (find_loop_guard): Likewise.
7727 (clean_up_after_unswitching): Likewise.
7728 * tree-ssa-math-opts.cc (maybe_optimize_guarding_check):
7730 (optimize_spaceship): Take a gcond * argument, avoid
7732 (math_opts_dom_walker::after_dom_children): Adjust call to
7734 * tree-vrp.cc (maybe_set_nonzero_bits): Avoid last_stmt.
7735 * value-pointer-equiv.cc (pointer_equiv_analyzer::visit_edge):
7738 2023-05-03 Andreas Schwab <schwab@suse.de>
7740 * config/riscv/linux.h (LIB_SPEC): Don't redefine.
7742 2023-05-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
7744 * config/riscv/riscv-vector-builtins-bases.cc (fold_fault_load):
7746 (class vlseg): New class.
7747 (class vsseg): Ditto.
7748 (class vlsseg): Ditto.
7749 (class vssseg): Ditto.
7750 (class seg_indexed_load): Ditto.
7751 (class seg_indexed_store): Ditto.
7752 (class vlsegff): Ditto.
7754 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
7755 * config/riscv/riscv-vector-builtins-functions.def (vlseg):
7765 * config/riscv/riscv-vector-builtins-shapes.cc (struct
7766 seg_loadstore_def): Ditto.
7767 (struct seg_indexed_loadstore_def): Ditto.
7768 (struct seg_fault_load_def): Ditto.
7770 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
7771 * config/riscv/riscv-vector-builtins.cc
7772 (function_builder::append_nf): New function.
7773 * config/riscv/riscv-vector-builtins.def (vfloat32m1x2_t):
7774 Change ptr from double into float.
7775 (vfloat32m1x3_t): Ditto.
7776 (vfloat32m1x4_t): Ditto.
7777 (vfloat32m1x5_t): Ditto.
7778 (vfloat32m1x6_t): Ditto.
7779 (vfloat32m1x7_t): Ditto.
7780 (vfloat32m1x8_t): Ditto.
7781 (vfloat32m2x2_t): Ditto.
7782 (vfloat32m2x3_t): Ditto.
7783 (vfloat32m2x4_t): Ditto.
7784 (vfloat32m4x2_t): Ditto.
7785 * config/riscv/riscv-vector-builtins.h: Add segment intrinsics.
7786 * config/riscv/riscv-vsetvl.cc (fault_first_load_p): Adapt for
7788 * config/riscv/riscv.md: Add segment instructions.
7789 * config/riscv/vector-iterators.md: Support segment intrinsics.
7790 * config/riscv/vector.md (@pred_unit_strided_load<mode>): New
7792 (@pred_unit_strided_store<mode>): Ditto.
7793 (@pred_strided_load<mode>): Ditto.
7794 (@pred_strided_store<mode>): Ditto.
7795 (@pred_fault_load<mode>): Ditto.
7796 (@pred_indexed_<order>load<V1T:mode><V1I:mode>): Ditto.
7797 (@pred_indexed_<order>load<V2T:mode><V2I:mode>): Ditto.
7798 (@pred_indexed_<order>load<V4T:mode><V4I:mode>): Ditto.
7799 (@pred_indexed_<order>load<V8T:mode><V8I:mode>): Ditto.
7800 (@pred_indexed_<order>load<V16T:mode><V16I:mode>): Ditto.
7801 (@pred_indexed_<order>load<V32T:mode><V32I:mode>): Ditto.
7802 (@pred_indexed_<order>load<V64T:mode><V64I:mode>): Ditto.
7803 (@pred_indexed_<order>store<V1T:mode><V1I:mode>): Ditto.
7804 (@pred_indexed_<order>store<V2T:mode><V2I:mode>): Ditto.
7805 (@pred_indexed_<order>store<V4T:mode><V4I:mode>): Ditto.
7806 (@pred_indexed_<order>store<V8T:mode><V8I:mode>): Ditto.
7807 (@pred_indexed_<order>store<V16T:mode><V16I:mode>): Ditto.
7808 (@pred_indexed_<order>store<V32T:mode><V32I:mode>): Ditto.
7809 (@pred_indexed_<order>store<V64T:mode><V64I:mode>): Ditto.
7811 2023-05-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
7813 * config/riscv/genrvv-type-indexer.cc (valid_type): Adapt for
7818 * config/riscv/riscv-vector-builtins-bases.cc: Ditto.
7819 * config/riscv/riscv-vector-builtins-functions.def (vset): Add
7821 (vget): Add tuple type vget.
7822 * config/riscv/riscv-vector-builtins-types.def
7823 (DEF_RVV_TUPLE_OPS): New macro.
7824 (vint8mf8x2_t): Ditto.
7825 (vuint8mf8x2_t): Ditto.
7826 (vint8mf8x3_t): Ditto.
7827 (vuint8mf8x3_t): Ditto.
7828 (vint8mf8x4_t): Ditto.
7829 (vuint8mf8x4_t): Ditto.
7830 (vint8mf8x5_t): Ditto.
7831 (vuint8mf8x5_t): Ditto.
7832 (vint8mf8x6_t): Ditto.
7833 (vuint8mf8x6_t): Ditto.
7834 (vint8mf8x7_t): Ditto.
7835 (vuint8mf8x7_t): Ditto.
7836 (vint8mf8x8_t): Ditto.
7837 (vuint8mf8x8_t): Ditto.
7838 (vint8mf4x2_t): Ditto.
7839 (vuint8mf4x2_t): Ditto.
7840 (vint8mf4x3_t): Ditto.
7841 (vuint8mf4x3_t): Ditto.
7842 (vint8mf4x4_t): Ditto.
7843 (vuint8mf4x4_t): Ditto.
7844 (vint8mf4x5_t): Ditto.
7845 (vuint8mf4x5_t): Ditto.
7846 (vint8mf4x6_t): Ditto.
7847 (vuint8mf4x6_t): Ditto.
7848 (vint8mf4x7_t): Ditto.
7849 (vuint8mf4x7_t): Ditto.
7850 (vint8mf4x8_t): Ditto.
7851 (vuint8mf4x8_t): Ditto.
7852 (vint8mf2x2_t): Ditto.
7853 (vuint8mf2x2_t): Ditto.
7854 (vint8mf2x3_t): Ditto.
7855 (vuint8mf2x3_t): Ditto.
7856 (vint8mf2x4_t): Ditto.
7857 (vuint8mf2x4_t): Ditto.
7858 (vint8mf2x5_t): Ditto.
7859 (vuint8mf2x5_t): Ditto.
7860 (vint8mf2x6_t): Ditto.
7861 (vuint8mf2x6_t): Ditto.
7862 (vint8mf2x7_t): Ditto.
7863 (vuint8mf2x7_t): Ditto.
7864 (vint8mf2x8_t): Ditto.
7865 (vuint8mf2x8_t): Ditto.
7866 (vint8m1x2_t): Ditto.
7867 (vuint8m1x2_t): Ditto.
7868 (vint8m1x3_t): Ditto.
7869 (vuint8m1x3_t): Ditto.
7870 (vint8m1x4_t): Ditto.
7871 (vuint8m1x4_t): Ditto.
7872 (vint8m1x5_t): Ditto.
7873 (vuint8m1x5_t): Ditto.
7874 (vint8m1x6_t): Ditto.
7875 (vuint8m1x6_t): Ditto.
7876 (vint8m1x7_t): Ditto.
7877 (vuint8m1x7_t): Ditto.
7878 (vint8m1x8_t): Ditto.
7879 (vuint8m1x8_t): Ditto.
7880 (vint8m2x2_t): Ditto.
7881 (vuint8m2x2_t): Ditto.
7882 (vint8m2x3_t): Ditto.
7883 (vuint8m2x3_t): Ditto.
7884 (vint8m2x4_t): Ditto.
7885 (vuint8m2x4_t): Ditto.
7886 (vint8m4x2_t): Ditto.
7887 (vuint8m4x2_t): Ditto.
7888 (vint16mf4x2_t): Ditto.
7889 (vuint16mf4x2_t): Ditto.
7890 (vint16mf4x3_t): Ditto.
7891 (vuint16mf4x3_t): Ditto.
7892 (vint16mf4x4_t): Ditto.
7893 (vuint16mf4x4_t): Ditto.
7894 (vint16mf4x5_t): Ditto.
7895 (vuint16mf4x5_t): Ditto.
7896 (vint16mf4x6_t): Ditto.
7897 (vuint16mf4x6_t): Ditto.
7898 (vint16mf4x7_t): Ditto.
7899 (vuint16mf4x7_t): Ditto.
7900 (vint16mf4x8_t): Ditto.
7901 (vuint16mf4x8_t): Ditto.
7902 (vint16mf2x2_t): Ditto.
7903 (vuint16mf2x2_t): Ditto.
7904 (vint16mf2x3_t): Ditto.
7905 (vuint16mf2x3_t): Ditto.
7906 (vint16mf2x4_t): Ditto.
7907 (vuint16mf2x4_t): Ditto.
7908 (vint16mf2x5_t): Ditto.
7909 (vuint16mf2x5_t): Ditto.
7910 (vint16mf2x6_t): Ditto.
7911 (vuint16mf2x6_t): Ditto.
7912 (vint16mf2x7_t): Ditto.
7913 (vuint16mf2x7_t): Ditto.
7914 (vint16mf2x8_t): Ditto.
7915 (vuint16mf2x8_t): Ditto.
7916 (vint16m1x2_t): Ditto.
7917 (vuint16m1x2_t): Ditto.
7918 (vint16m1x3_t): Ditto.
7919 (vuint16m1x3_t): Ditto.
7920 (vint16m1x4_t): Ditto.
7921 (vuint16m1x4_t): Ditto.
7922 (vint16m1x5_t): Ditto.
7923 (vuint16m1x5_t): Ditto.
7924 (vint16m1x6_t): Ditto.
7925 (vuint16m1x6_t): Ditto.
7926 (vint16m1x7_t): Ditto.
7927 (vuint16m1x7_t): Ditto.
7928 (vint16m1x8_t): Ditto.
7929 (vuint16m1x8_t): Ditto.
7930 (vint16m2x2_t): Ditto.
7931 (vuint16m2x2_t): Ditto.
7932 (vint16m2x3_t): Ditto.
7933 (vuint16m2x3_t): Ditto.
7934 (vint16m2x4_t): Ditto.
7935 (vuint16m2x4_t): Ditto.
7936 (vint16m4x2_t): Ditto.
7937 (vuint16m4x2_t): Ditto.
7938 (vint32mf2x2_t): Ditto.
7939 (vuint32mf2x2_t): Ditto.
7940 (vint32mf2x3_t): Ditto.
7941 (vuint32mf2x3_t): Ditto.
7942 (vint32mf2x4_t): Ditto.
7943 (vuint32mf2x4_t): Ditto.
7944 (vint32mf2x5_t): Ditto.
7945 (vuint32mf2x5_t): Ditto.
7946 (vint32mf2x6_t): Ditto.
7947 (vuint32mf2x6_t): Ditto.
7948 (vint32mf2x7_t): Ditto.
7949 (vuint32mf2x7_t): Ditto.
7950 (vint32mf2x8_t): Ditto.
7951 (vuint32mf2x8_t): Ditto.
7952 (vint32m1x2_t): Ditto.
7953 (vuint32m1x2_t): Ditto.
7954 (vint32m1x3_t): Ditto.
7955 (vuint32m1x3_t): Ditto.
7956 (vint32m1x4_t): Ditto.
7957 (vuint32m1x4_t): Ditto.
7958 (vint32m1x5_t): Ditto.
7959 (vuint32m1x5_t): Ditto.
7960 (vint32m1x6_t): Ditto.
7961 (vuint32m1x6_t): Ditto.
7962 (vint32m1x7_t): Ditto.
7963 (vuint32m1x7_t): Ditto.
7964 (vint32m1x8_t): Ditto.
7965 (vuint32m1x8_t): Ditto.
7966 (vint32m2x2_t): Ditto.
7967 (vuint32m2x2_t): Ditto.
7968 (vint32m2x3_t): Ditto.
7969 (vuint32m2x3_t): Ditto.
7970 (vint32m2x4_t): Ditto.
7971 (vuint32m2x4_t): Ditto.
7972 (vint32m4x2_t): Ditto.
7973 (vuint32m4x2_t): Ditto.
7974 (vint64m1x2_t): Ditto.
7975 (vuint64m1x2_t): Ditto.
7976 (vint64m1x3_t): Ditto.
7977 (vuint64m1x3_t): Ditto.
7978 (vint64m1x4_t): Ditto.
7979 (vuint64m1x4_t): Ditto.
7980 (vint64m1x5_t): Ditto.
7981 (vuint64m1x5_t): Ditto.
7982 (vint64m1x6_t): Ditto.
7983 (vuint64m1x6_t): Ditto.
7984 (vint64m1x7_t): Ditto.
7985 (vuint64m1x7_t): Ditto.
7986 (vint64m1x8_t): Ditto.
7987 (vuint64m1x8_t): Ditto.
7988 (vint64m2x2_t): Ditto.
7989 (vuint64m2x2_t): Ditto.
7990 (vint64m2x3_t): Ditto.
7991 (vuint64m2x3_t): Ditto.
7992 (vint64m2x4_t): Ditto.
7993 (vuint64m2x4_t): Ditto.
7994 (vint64m4x2_t): Ditto.
7995 (vuint64m4x2_t): Ditto.
7996 (vfloat32mf2x2_t): Ditto.
7997 (vfloat32mf2x3_t): Ditto.
7998 (vfloat32mf2x4_t): Ditto.
7999 (vfloat32mf2x5_t): Ditto.
8000 (vfloat32mf2x6_t): Ditto.
8001 (vfloat32mf2x7_t): Ditto.
8002 (vfloat32mf2x8_t): Ditto.
8003 (vfloat32m1x2_t): Ditto.
8004 (vfloat32m1x3_t): Ditto.
8005 (vfloat32m1x4_t): Ditto.
8006 (vfloat32m1x5_t): Ditto.
8007 (vfloat32m1x6_t): Ditto.
8008 (vfloat32m1x7_t): Ditto.
8009 (vfloat32m1x8_t): Ditto.
8010 (vfloat32m2x2_t): Ditto.
8011 (vfloat32m2x3_t): Ditto.
8012 (vfloat32m2x4_t): Ditto.
8013 (vfloat32m4x2_t): Ditto.
8014 (vfloat64m1x2_t): Ditto.
8015 (vfloat64m1x3_t): Ditto.
8016 (vfloat64m1x4_t): Ditto.
8017 (vfloat64m1x5_t): Ditto.
8018 (vfloat64m1x6_t): Ditto.
8019 (vfloat64m1x7_t): Ditto.
8020 (vfloat64m1x8_t): Ditto.
8021 (vfloat64m2x2_t): Ditto.
8022 (vfloat64m2x3_t): Ditto.
8023 (vfloat64m2x4_t): Ditto.
8024 (vfloat64m4x2_t): Ditto.
8025 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TUPLE_OPS):
8027 (DEF_RVV_TYPE_INDEX): Ditto.
8028 (rvv_arg_type_info::get_tuple_subpart_type): New function.
8029 (DEF_RVV_TUPLE_TYPE): New macro.
8030 * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE_INDEX):
8031 Adapt for tuple vget/vset support.
8032 (vint8mf4_t): Ditto.
8033 (vuint8mf4_t): Ditto.
8034 (vint8mf2_t): Ditto.
8035 (vuint8mf2_t): Ditto.
8037 (vuint8m1_t): Ditto.
8039 (vuint8m2_t): Ditto.
8041 (vuint8m4_t): Ditto.
8043 (vuint8m8_t): Ditto.
8044 (vint16mf4_t): Ditto.
8045 (vuint16mf4_t): Ditto.
8046 (vint16mf2_t): Ditto.
8047 (vuint16mf2_t): Ditto.
8048 (vint16m1_t): Ditto.
8049 (vuint16m1_t): Ditto.
8050 (vint16m2_t): Ditto.
8051 (vuint16m2_t): Ditto.
8052 (vint16m4_t): Ditto.
8053 (vuint16m4_t): Ditto.
8054 (vint16m8_t): Ditto.
8055 (vuint16m8_t): Ditto.
8056 (vint32mf2_t): Ditto.
8057 (vuint32mf2_t): Ditto.
8058 (vint32m1_t): Ditto.
8059 (vuint32m1_t): Ditto.
8060 (vint32m2_t): Ditto.
8061 (vuint32m2_t): Ditto.
8062 (vint32m4_t): Ditto.
8063 (vuint32m4_t): Ditto.
8064 (vint32m8_t): Ditto.
8065 (vuint32m8_t): Ditto.
8066 (vint64m1_t): Ditto.
8067 (vuint64m1_t): Ditto.
8068 (vint64m2_t): Ditto.
8069 (vuint64m2_t): Ditto.
8070 (vint64m4_t): Ditto.
8071 (vuint64m4_t): Ditto.
8072 (vint64m8_t): Ditto.
8073 (vuint64m8_t): Ditto.
8074 (vfloat32mf2_t): Ditto.
8075 (vfloat32m1_t): Ditto.
8076 (vfloat32m2_t): Ditto.
8077 (vfloat32m4_t): Ditto.
8078 (vfloat32m8_t): Ditto.
8079 (vfloat64m1_t): Ditto.
8080 (vfloat64m2_t): Ditto.
8081 (vfloat64m4_t): Ditto.
8082 (vfloat64m8_t): Ditto.
8083 (tuple_subpart): Add tuple subpart base type.
8084 * config/riscv/riscv-vector-builtins.h (struct
8085 rvv_arg_type_info): Ditto.
8086 (tuple_type_field): New function.
8088 2023-05-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
8090 * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): New macro.
8091 (RVV_TUPLE_PARTIAL_MODES): Ditto.
8092 * config/riscv/riscv-protos.h (riscv_v_ext_tuple_mode_p): New
8095 (get_subpart_mode): Ditto.
8096 (get_tuple_mode): Ditto.
8097 (expand_tuple_move): Ditto.
8098 * config/riscv/riscv-v.cc (ENTRY): New macro.
8099 (TUPLE_ENTRY): Ditto.
8100 (get_nf): New function.
8101 (get_subpart_mode): Ditto.
8102 (get_tuple_mode): Ditto.
8103 (expand_tuple_move): Ditto.
8104 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TUPLE_TYPE):
8106 (register_tuple_type): New function
8107 * config/riscv/riscv-vector-builtins.def (DEF_RVV_TUPLE_TYPE):
8109 (vint8mf8x2_t): New macro.
8110 (vuint8mf8x2_t): Ditto.
8111 (vint8mf8x3_t): Ditto.
8112 (vuint8mf8x3_t): Ditto.
8113 (vint8mf8x4_t): Ditto.
8114 (vuint8mf8x4_t): Ditto.
8115 (vint8mf8x5_t): Ditto.
8116 (vuint8mf8x5_t): Ditto.
8117 (vint8mf8x6_t): Ditto.
8118 (vuint8mf8x6_t): Ditto.
8119 (vint8mf8x7_t): Ditto.
8120 (vuint8mf8x7_t): Ditto.
8121 (vint8mf8x8_t): Ditto.
8122 (vuint8mf8x8_t): Ditto.
8123 (vint8mf4x2_t): Ditto.
8124 (vuint8mf4x2_t): Ditto.
8125 (vint8mf4x3_t): Ditto.
8126 (vuint8mf4x3_t): Ditto.
8127 (vint8mf4x4_t): Ditto.
8128 (vuint8mf4x4_t): Ditto.
8129 (vint8mf4x5_t): Ditto.
8130 (vuint8mf4x5_t): Ditto.
8131 (vint8mf4x6_t): Ditto.
8132 (vuint8mf4x6_t): Ditto.
8133 (vint8mf4x7_t): Ditto.
8134 (vuint8mf4x7_t): Ditto.
8135 (vint8mf4x8_t): Ditto.
8136 (vuint8mf4x8_t): Ditto.
8137 (vint8mf2x2_t): Ditto.
8138 (vuint8mf2x2_t): Ditto.
8139 (vint8mf2x3_t): Ditto.
8140 (vuint8mf2x3_t): Ditto.
8141 (vint8mf2x4_t): Ditto.
8142 (vuint8mf2x4_t): Ditto.
8143 (vint8mf2x5_t): Ditto.
8144 (vuint8mf2x5_t): Ditto.
8145 (vint8mf2x6_t): Ditto.
8146 (vuint8mf2x6_t): Ditto.
8147 (vint8mf2x7_t): Ditto.
8148 (vuint8mf2x7_t): Ditto.
8149 (vint8mf2x8_t): Ditto.
8150 (vuint8mf2x8_t): Ditto.
8151 (vint8m1x2_t): Ditto.
8152 (vuint8m1x2_t): Ditto.
8153 (vint8m1x3_t): Ditto.
8154 (vuint8m1x3_t): Ditto.
8155 (vint8m1x4_t): Ditto.
8156 (vuint8m1x4_t): Ditto.
8157 (vint8m1x5_t): Ditto.
8158 (vuint8m1x5_t): Ditto.
8159 (vint8m1x6_t): Ditto.
8160 (vuint8m1x6_t): Ditto.
8161 (vint8m1x7_t): Ditto.
8162 (vuint8m1x7_t): Ditto.
8163 (vint8m1x8_t): Ditto.
8164 (vuint8m1x8_t): Ditto.
8165 (vint8m2x2_t): Ditto.
8166 (vuint8m2x2_t): Ditto.
8167 (vint8m2x3_t): Ditto.
8168 (vuint8m2x3_t): Ditto.
8169 (vint8m2x4_t): Ditto.
8170 (vuint8m2x4_t): Ditto.
8171 (vint8m4x2_t): Ditto.
8172 (vuint8m4x2_t): Ditto.
8173 (vint16mf4x2_t): Ditto.
8174 (vuint16mf4x2_t): Ditto.
8175 (vint16mf4x3_t): Ditto.
8176 (vuint16mf4x3_t): Ditto.
8177 (vint16mf4x4_t): Ditto.
8178 (vuint16mf4x4_t): Ditto.
8179 (vint16mf4x5_t): Ditto.
8180 (vuint16mf4x5_t): Ditto.
8181 (vint16mf4x6_t): Ditto.
8182 (vuint16mf4x6_t): Ditto.
8183 (vint16mf4x7_t): Ditto.
8184 (vuint16mf4x7_t): Ditto.
8185 (vint16mf4x8_t): Ditto.
8186 (vuint16mf4x8_t): Ditto.
8187 (vint16mf2x2_t): Ditto.
8188 (vuint16mf2x2_t): Ditto.
8189 (vint16mf2x3_t): Ditto.
8190 (vuint16mf2x3_t): Ditto.
8191 (vint16mf2x4_t): Ditto.
8192 (vuint16mf2x4_t): Ditto.
8193 (vint16mf2x5_t): Ditto.
8194 (vuint16mf2x5_t): Ditto.
8195 (vint16mf2x6_t): Ditto.
8196 (vuint16mf2x6_t): Ditto.
8197 (vint16mf2x7_t): Ditto.
8198 (vuint16mf2x7_t): Ditto.
8199 (vint16mf2x8_t): Ditto.
8200 (vuint16mf2x8_t): Ditto.
8201 (vint16m1x2_t): Ditto.
8202 (vuint16m1x2_t): Ditto.
8203 (vint16m1x3_t): Ditto.
8204 (vuint16m1x3_t): Ditto.
8205 (vint16m1x4_t): Ditto.
8206 (vuint16m1x4_t): Ditto.
8207 (vint16m1x5_t): Ditto.
8208 (vuint16m1x5_t): Ditto.
8209 (vint16m1x6_t): Ditto.
8210 (vuint16m1x6_t): Ditto.
8211 (vint16m1x7_t): Ditto.
8212 (vuint16m1x7_t): Ditto.
8213 (vint16m1x8_t): Ditto.
8214 (vuint16m1x8_t): Ditto.
8215 (vint16m2x2_t): Ditto.
8216 (vuint16m2x2_t): Ditto.
8217 (vint16m2x3_t): Ditto.
8218 (vuint16m2x3_t): Ditto.
8219 (vint16m2x4_t): Ditto.
8220 (vuint16m2x4_t): Ditto.
8221 (vint16m4x2_t): Ditto.
8222 (vuint16m4x2_t): Ditto.
8223 (vint32mf2x2_t): Ditto.
8224 (vuint32mf2x2_t): Ditto.
8225 (vint32mf2x3_t): Ditto.
8226 (vuint32mf2x3_t): Ditto.
8227 (vint32mf2x4_t): Ditto.
8228 (vuint32mf2x4_t): Ditto.
8229 (vint32mf2x5_t): Ditto.
8230 (vuint32mf2x5_t): Ditto.
8231 (vint32mf2x6_t): Ditto.
8232 (vuint32mf2x6_t): Ditto.
8233 (vint32mf2x7_t): Ditto.
8234 (vuint32mf2x7_t): Ditto.
8235 (vint32mf2x8_t): Ditto.
8236 (vuint32mf2x8_t): Ditto.
8237 (vint32m1x2_t): Ditto.
8238 (vuint32m1x2_t): Ditto.
8239 (vint32m1x3_t): Ditto.
8240 (vuint32m1x3_t): Ditto.
8241 (vint32m1x4_t): Ditto.
8242 (vuint32m1x4_t): Ditto.
8243 (vint32m1x5_t): Ditto.
8244 (vuint32m1x5_t): Ditto.
8245 (vint32m1x6_t): Ditto.
8246 (vuint32m1x6_t): Ditto.
8247 (vint32m1x7_t): Ditto.
8248 (vuint32m1x7_t): Ditto.
8249 (vint32m1x8_t): Ditto.
8250 (vuint32m1x8_t): Ditto.
8251 (vint32m2x2_t): Ditto.
8252 (vuint32m2x2_t): Ditto.
8253 (vint32m2x3_t): Ditto.
8254 (vuint32m2x3_t): Ditto.
8255 (vint32m2x4_t): Ditto.
8256 (vuint32m2x4_t): Ditto.
8257 (vint32m4x2_t): Ditto.
8258 (vuint32m4x2_t): Ditto.
8259 (vint64m1x2_t): Ditto.
8260 (vuint64m1x2_t): Ditto.
8261 (vint64m1x3_t): Ditto.
8262 (vuint64m1x3_t): Ditto.
8263 (vint64m1x4_t): Ditto.
8264 (vuint64m1x4_t): Ditto.
8265 (vint64m1x5_t): Ditto.
8266 (vuint64m1x5_t): Ditto.
8267 (vint64m1x6_t): Ditto.
8268 (vuint64m1x6_t): Ditto.
8269 (vint64m1x7_t): Ditto.
8270 (vuint64m1x7_t): Ditto.
8271 (vint64m1x8_t): Ditto.
8272 (vuint64m1x8_t): Ditto.
8273 (vint64m2x2_t): Ditto.
8274 (vuint64m2x2_t): Ditto.
8275 (vint64m2x3_t): Ditto.
8276 (vuint64m2x3_t): Ditto.
8277 (vint64m2x4_t): Ditto.
8278 (vuint64m2x4_t): Ditto.
8279 (vint64m4x2_t): Ditto.
8280 (vuint64m4x2_t): Ditto.
8281 (vfloat32mf2x2_t): Ditto.
8282 (vfloat32mf2x3_t): Ditto.
8283 (vfloat32mf2x4_t): Ditto.
8284 (vfloat32mf2x5_t): Ditto.
8285 (vfloat32mf2x6_t): Ditto.
8286 (vfloat32mf2x7_t): Ditto.
8287 (vfloat32mf2x8_t): Ditto.
8288 (vfloat32m1x2_t): Ditto.
8289 (vfloat32m1x3_t): Ditto.
8290 (vfloat32m1x4_t): Ditto.
8291 (vfloat32m1x5_t): Ditto.
8292 (vfloat32m1x6_t): Ditto.
8293 (vfloat32m1x7_t): Ditto.
8294 (vfloat32m1x8_t): Ditto.
8295 (vfloat32m2x2_t): Ditto.
8296 (vfloat32m2x3_t): Ditto.
8297 (vfloat32m2x4_t): Ditto.
8298 (vfloat32m4x2_t): Ditto.
8299 (vfloat64m1x2_t): Ditto.
8300 (vfloat64m1x3_t): Ditto.
8301 (vfloat64m1x4_t): Ditto.
8302 (vfloat64m1x5_t): Ditto.
8303 (vfloat64m1x6_t): Ditto.
8304 (vfloat64m1x7_t): Ditto.
8305 (vfloat64m1x8_t): Ditto.
8306 (vfloat64m2x2_t): Ditto.
8307 (vfloat64m2x3_t): Ditto.
8308 (vfloat64m2x4_t): Ditto.
8309 (vfloat64m4x2_t): Ditto.
8310 * config/riscv/riscv-vector-builtins.h (DEF_RVV_TUPLE_TYPE):
8312 * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): Ditto.
8313 * config/riscv/riscv.cc (riscv_v_ext_tuple_mode_p): New
8315 (TUPLE_ENTRY): Ditto.
8316 (riscv_v_ext_mode_p): New function.
8317 (riscv_v_adjust_nunits): Add tuple mode adjustment.
8318 (riscv_classify_address): Ditto.
8319 (riscv_binary_cost): Ditto.
8320 (riscv_rtx_costs): Ditto.
8321 (riscv_secondary_memory_needed): Ditto.
8322 (riscv_hard_regno_nregs): Ditto.
8323 (riscv_hard_regno_mode_ok): Ditto.
8324 (riscv_vector_mode_supported_p): Ditto.
8325 (riscv_regmode_natural_size): Ditto.
8326 (riscv_array_mode): New function.
8327 (TARGET_ARRAY_MODE): New target hook.
8328 * config/riscv/riscv.md: Add tuple modes.
8329 * config/riscv/vector-iterators.md: Ditto.
8330 * config/riscv/vector.md (mov<mode>): Add tuple modes data
8332 (*mov<VT:mode>_<P:mode>): Ditto.
8334 2023-05-03 Richard Biener <rguenther@suse.de>
8336 * cse.cc (cse_insn): Track an equivalence to the destination
8337 separately and delay using src_related for it.
8339 2023-05-03 Richard Biener <rguenther@suse.de>
8341 * cse.cc (HASH): Turn into inline function and mix
8342 in another HASH_SHIFT bits.
8343 (SAFE_HASH): Likewise.
8345 2023-05-03 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8348 * config/aarch64/aarch64-simd.md (aarch64_<sur>h<addsub><mode>): Rename to...
8349 (aarch64_<sur>h<addsub><mode><vczle><vczbe>): ... This.
8351 2023-05-03 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8354 * config/aarch64/aarch64-simd.md (add<mode>3): Rename to...
8355 (add<mode>3<vczle><vczbe>): ... This.
8356 (sub<mode>3): Rename to...
8357 (sub<mode>3<vczle><vczbe>): ... This.
8358 (mul<mode>3): Rename to...
8359 (mul<mode>3<vczle><vczbe>): ... This.
8360 (*div<mode>3): Rename to...
8361 (*div<mode>3<vczle><vczbe>): ... This.
8362 (neg<mode>2): Rename to...
8363 (neg<mode>2<vczle><vczbe>): ... This.
8364 (abs<mode>2): Rename to...
8365 (abs<mode>2<vczle><vczbe>): ... This.
8366 (<frint_pattern><mode>2): Rename to...
8367 (<frint_pattern><mode>2<vczle><vczbe>): ... This.
8368 (<fmaxmin><mode>3): Rename to...
8369 (<fmaxmin><mode>3<vczle><vczbe>): ... This.
8370 (*sqrt<mode>2): Rename to...
8371 (*sqrt<mode>2<vczle><vczbe>): ... This.
8373 2023-05-03 Kito Cheng <kito.cheng@sifive.com>
8375 * doc/md.texi (RISC-V): Add vr, vm, vd constarint.
8377 2023-05-03 Martin Liska <mliska@suse.cz>
8379 PR tree-optimization/109693
8380 * value-range-storage.cc (vrange_allocator::vrange_allocator):
8381 Remove unused field.
8382 * value-range-storage.h: Likewise.
8384 2023-05-02 Andrew Pinski <apinski@marvell.com>
8386 * tree-ssa-phiopt.cc (move_stmt): New function.
8387 (match_simplify_replacement): Use move_stmt instead
8388 of the inlined version.
8390 2023-05-02 Andrew Pinski <apinski@marvell.com>
8392 * match.pd (a != 0 ? CLRSB(a) : CST -> CLRSB(a)): New
8395 2023-05-02 Andrew Pinski <apinski@marvell.com>
8397 PR tree-optimization/109702
8398 * match.pd: Fix "a != 0 ? FUNC(a) : CST" patterns
8399 for FUNC of POPCOUNT BSWAP FFS PARITY CLZ and CTZ.
8401 2023-05-02 Andrew Pinski <apinski@marvell.com>
8404 * config/aarch64/aarch64.md (*cmov<mode>_insn_m1): New
8405 insn_and_split pattern.
8407 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
8409 * config/riscv/sync.md (atomic_load<mode>): Implement atomic
8412 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
8414 * config/riscv/sync.md (mem_thread_fence_1): Change fence
8415 depending on the given memory model.
8417 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
8419 * config/riscv/riscv-protos.h (riscv_union_memmodels): Expose
8420 riscv_union_memmodels function to sync.md.
8421 * config/riscv/riscv.cc (riscv_union_memmodels): Add function to
8422 get the union of two memmodels in sync.md.
8423 (riscv_print_operand): Add %I and %J flags that output the
8424 optimal LR/SC flag bits for a given memory model.
8425 * config/riscv/sync.md: Remove static .aqrl bits on LR op/.rl
8426 bits on SC op and replace with optimized %I, %J flags.
8428 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
8430 * config/riscv/riscv.cc
8431 (riscv_memmodel_needs_amo_release): Change function name.
8432 (riscv_print_operand): Remove unneeded %F case.
8433 * config/riscv/sync.md: Remove unneeded fences.
8435 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
8438 * config/riscv/sync.md (atomic_store<mode>): Use simple store
8439 instruction in combination with fence(s).
8441 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
8443 * config/riscv/riscv.cc (riscv_print_operand): Change behavior
8444 of %A to include release bits.
8446 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
8448 * config/riscv/sync.md (atomic_cas_value_strong<mode>): Change
8449 FENCE/LR.aq/SC.aq into sequentially consistent LR.aqrl/SC.rl
8452 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
8454 * config/riscv/sync.md: Change LR.aq/SC.rl pairs into
8455 sequentially consistent LR.aqrl/SC.rl pairs.
8457 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
8459 * config/riscv/riscv.cc: Remove MEMMODEL_SYNC_* cases and
8460 sanitize memmodel input with memmodel_base.
8462 2023-05-02 Yanzhang Wang <yanzhang.wang@intel.com>
8463 Pan Li <pan2.li@intel.com>
8466 * config/riscv/vector-iterators.md: Support VNx2HI and VNX4DI when MIN_VLEN >= 128.
8468 2023-05-02 Romain Naour <romain.naour@gmail.com>
8470 * config/riscv/genrvv-type-indexer.cc: Use log2 from the C header, without
8473 2023-05-02 Martin Liska <mliska@suse.cz>
8475 * doc/invoke.texi: Update documentation based on param.opt file.
8477 2023-05-02 Richard Biener <rguenther@suse.de>
8479 PR tree-optimization/109672
8480 * tree-vect-stmts.cc (vectorizable_operation): For plus,
8481 minus and negate always check the vector mode is word mode.
8483 2023-05-01 Andrew Pinski <apinski@marvell.com>
8485 * tree-ssa-phiopt.cc: Update comment about
8486 how the transformation are implemented.
8488 2023-05-01 Jeff Law <jlaw@ventanamicro>
8490 * config/stormy16/stormy16.cc (TARGET_LRA_P): Remove defintion.
8492 2023-05-01 Jeff Law <jlaw@ventanamicro>
8494 * config/cris/cris.cc (TARGET_LRA_P): Remove.
8495 * config/epiphany/epiphany.cc (TARGET_LRA_P): Remove.
8496 * config/iq2000/iq2000.cc (TARGET_LRA_P): Remove.
8497 * config/m32r/m32r.cc (TARGET_LRA_P): Remove.
8498 * config/microblaze/microblaze.cc (TARGET_LRA_P): Remove.
8499 * config/mmix/mmix.cc (TARGET_LRA_P): Remove.
8501 2023-05-01 Rasmus Villemoes <rasmus.villemoes@prevas.dk>
8503 * print-tree.h (PRINT_DECL_REMAP_DEBUG): New flag.
8504 * print-tree.cc (print_decl_identifier): Implement it.
8505 * toplev.cc (output_stack_usage_1): Use it.
8507 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
8509 * value-range.h (class int_range): Remove gt_ggc_mx and gt_pch_nx
8512 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
8514 * value-range.h (irange::set_nonzero): Inline.
8516 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
8518 * gimple-range-op.cc (cfn_ffs::fold_range): Use the correct
8520 * gimple-ssa-warn-alloca.cc (alloca_call_type): Use <2> for
8521 invalid_range, as it is an inverse range.
8522 * tree-vrp.cc (find_case_label_range): Avoid trees.
8523 * value-range.cc (irange::irange_set): Delete.
8524 (irange::irange_set_1bit_anti_range): Delete.
8525 (irange::irange_set_anti_range): Delete.
8526 (irange::set): Cleanup.
8527 * value-range.h (class irange): Remove irange_set,
8528 irange_set_anti_range, irange_set_1bit_anti_range.
8529 (irange::set_undefined): Remove set to m_type.
8531 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
8533 * range-op.cc (update_known_bitmask): Adjust for irange containing
8534 wide_ints internally.
8535 * tree-ssanames.cc (set_nonzero_bits): Same.
8536 * tree-ssanames.h (set_nonzero_bits): Same.
8537 * value-range-storage.cc (irange_storage::set_irange): Same.
8538 (irange_storage::get_irange): Same.
8539 * value-range.cc (irange::operator=): Same.
8540 (irange::irange_set): Same.
8541 (irange::irange_set_1bit_anti_range): Same.
8542 (irange::irange_set_anti_range): Same.
8543 (irange::set): Same.
8544 (irange::verify_range): Same.
8545 (irange::contains_p): Same.
8546 (irange::irange_single_pair_union): Same.
8547 (irange::union_): Same.
8548 (irange::irange_contains_p): Same.
8549 (irange::intersect): Same.
8550 (irange::invert): Same.
8551 (irange::set_range_from_nonzero_bits): Same.
8552 (irange::set_nonzero_bits): Same.
8554 (irange::intersect_nonzero_bits): Same.
8555 (irange::union_nonzero_bits): Same.
8559 (range_tests_strict_enum): Same.
8560 (range_tests_misc): Same.
8561 (range_tests_nonzero_bits): Same.
8562 * value-range.h (irange::type): Same.
8563 (irange::varying_compatible_p): Same.
8564 (irange::irange): Same.
8565 (int_range::int_range): Same.
8566 (irange::set_undefined): Same.
8567 (irange::set_varying): Same.
8568 (irange::lower_bound): Same.
8569 (irange::upper_bound): Same.
8571 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
8573 * gimple-range-fold.cc (tree_lower_bound): Delete.
8574 (tree_upper_bound): Delete.
8575 (vrp_val_max): Delete.
8576 (vrp_val_min): Delete.
8577 (fold_using_range::range_of_ssa_name_with_loop_info): Call
8578 range_of_var_in_loop.
8579 * vr-values.cc (valid_value_p): Delete.
8580 (fix_overflow): Delete.
8581 (get_scev_info): New.
8582 (bounds_of_var_in_loop): Refactor into...
8583 (induction_variable_may_overflow_p): ...this,
8584 (range_from_loop_direction): ...and this,
8585 (range_of_var_in_loop): ...and this.
8586 * vr-values.h (bounds_of_var_in_loop): Delete.
8587 (range_of_var_in_loop): New.
8589 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
8591 * gimple-range-fold.cc (adjust_pointer_diff_expr): Rewrite with
8595 * gimple-range-op.cc (cfn_strlen::fold_range): Use irange_val_*.
8596 * range-op.cc (max_limit): Same.
8598 (plus_minus_ranges): Same.
8599 (operator_rshift::op1_range): Same.
8600 (operator_cast::inside_domain_p): Same.
8601 * value-range.cc (vrp_val_is_max): Delete.
8602 (vrp_val_is_min): Delete.
8603 (range_tests_misc): Use irange_val_*.
8604 * value-range.h (vrp_val_is_min): Delete.
8605 (vrp_val_is_max): Delete.
8606 (vrp_val_max): Delete.
8607 (irange_val_min): New.
8608 (vrp_val_min): Delete.
8609 (irange_val_max): New.
8610 * vr-values.cc (check_for_binary_op_overflow): Use irange_val_*.
8612 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
8614 * fold-const.cc (expr_not_equal_to): Convert to irange wide_int API.
8615 * gimple-fold.cc (size_must_be_zero_p): Same.
8616 * gimple-loop-versioning.cc
8617 (loop_versioning::prune_loop_conditions): Same.
8618 * gimple-range-edge.cc (gcond_edge_range): Same.
8619 (gimple_outgoing_range::calc_switch_ranges): Same.
8620 * gimple-range-fold.cc (adjust_imagpart_expr): Same.
8621 (adjust_realpart_expr): Same.
8622 (fold_using_range::range_of_address): Same.
8623 (fold_using_range::relation_fold_and_or): Same.
8624 * gimple-range-gori.cc (gori_compute::gori_compute): Same.
8625 (range_is_either_true_or_false): Same.
8626 * gimple-range-op.cc (cfn_toupper_tolower::get_letter_range): Same.
8627 (cfn_clz::fold_range): Same.
8628 (cfn_ctz::fold_range): Same.
8629 * gimple-range-tests.cc (class test_expr_eval): Same.
8630 * gimple-ssa-warn-alloca.cc (alloca_call_type): Same.
8631 * ipa-cp.cc (ipa_value_range_from_jfunc): Same.
8632 (propagate_vr_across_jump_function): Same.
8633 (decide_whether_version_node): Same.
8634 * ipa-prop.cc (ipa_get_value_range): Same.
8635 * ipa-prop.h (ipa_range_set_and_normalize): Same.
8636 * range-op.cc (get_shift_range): Same.
8637 (value_range_from_overflowed_bounds): Same.
8638 (value_range_with_overflow): Same.
8639 (create_possibly_reversed_range): Same.
8640 (equal_op1_op2_relation): Same.
8641 (not_equal_op1_op2_relation): Same.
8642 (lt_op1_op2_relation): Same.
8643 (le_op1_op2_relation): Same.
8644 (gt_op1_op2_relation): Same.
8645 (ge_op1_op2_relation): Same.
8646 (operator_mult::op1_range): Same.
8647 (operator_exact_divide::op1_range): Same.
8648 (operator_lshift::op1_range): Same.
8649 (operator_rshift::op1_range): Same.
8650 (operator_cast::op1_range): Same.
8651 (operator_logical_and::fold_range): Same.
8652 (set_nonzero_range_from_mask): Same.
8653 (operator_bitwise_or::op1_range): Same.
8654 (operator_bitwise_xor::op1_range): Same.
8655 (operator_addr_expr::fold_range): Same.
8656 (pointer_plus_operator::wi_fold): Same.
8657 (pointer_or_operator::op1_range): Same.
8664 (range_op_cast_tests): Same.
8665 (range_op_lshift_tests): Same.
8666 (range_op_rshift_tests): Same.
8667 (range_op_bitwise_and_tests): Same.
8668 (range_relational_tests): Same.
8669 * range.cc (range_zero): Same.
8670 (range_nonzero): Same.
8671 * range.h (range_true): Same.
8672 (range_false): Same.
8673 (range_true_and_false): Same.
8674 * tree-data-ref.cc (split_constant_offset_1): Same.
8675 * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Same.
8676 * tree-ssa-loop-unswitch.cc (struct unswitch_predicate): Same.
8677 (find_unswitching_predicates_for_bb): Same.
8678 * tree-ssa-phiopt.cc (value_replacement): Same.
8679 * tree-ssa-threadbackward.cc
8680 (back_threader::find_taken_edge_cond): Same.
8681 * tree-ssanames.cc (ssa_name_has_boolean_range): Same.
8682 * tree-vrp.cc (find_case_label_range): Same.
8683 * value-query.cc (range_query::get_tree_range): Same.
8684 * value-range.cc (irange::set_nonnegative): Same.
8685 (frange::contains_p): Same.
8686 (frange::singleton_p): Same.
8687 (frange::internal_singleton_p): Same.
8688 (irange::irange_set): Same.
8689 (irange::irange_set_1bit_anti_range): Same.
8690 (irange::irange_set_anti_range): Same.
8691 (irange::set): Same.
8692 (irange::operator==): Same.
8693 (irange::singleton_p): Same.
8694 (irange::contains_p): Same.
8695 (irange::set_range_from_nonzero_bits): Same.
8696 (DEFINE_INT_RANGE_INSTANCE): Same.
8706 (range_uint128): New.
8709 (build_range3): Convert to irange wide_int API.
8710 (range_tests_irange3): Same.
8711 (range_tests_int_range_max): Same.
8712 (range_tests_strict_enum): Same.
8713 (range_tests_misc): Same.
8714 (range_tests_nonzero_bits): Same.
8715 (range_tests_nan): Same.
8716 (range_tests_signed_zeros): Same.
8717 * value-range.h (Value_Range::Value_Range): Same.
8718 (irange::set): Same.
8719 (irange::nonzero_p): Same.
8720 (irange::contains_p): Same.
8721 (range_includes_zero_p): Same.
8722 (irange::set_nonzero): Same.
8723 (irange::set_zero): Same.
8724 (contains_zero_p): Same.
8725 (frange::contains_p): Same.
8727 (simplify_using_ranges::op_with_boolean_value_range_p): Same.
8728 (bounds_of_var_in_loop): Same.
8729 (simplify_using_ranges::legacy_fold_cond_overflow): Same.
8731 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
8733 * value-range.cc (irange::irange_union): Rename to...
8734 (irange::union_): ...this.
8735 (irange::irange_intersect): Rename to...
8736 (irange::intersect): ...this.
8737 * value-range.h (irange::union_): Delete.
8738 (irange::intersect): Delete.
8740 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
8742 * vr-values.cc (bounds_of_var_in_loop): Convert to irange API.
8744 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
8746 * vr-values.cc (check_for_binary_op_overflow): Tidy up by using
8748 (compare_ranges): Delete.
8749 (compare_range_with_value): Delete.
8750 (bounds_of_var_in_loop): Tidy up by using ranger API.
8751 (simplify_using_ranges::fold_cond_with_ops): Cleanup and rename
8752 from vrp_evaluate_conditional_warnv_with_ops_using_ranges.
8753 (simplify_using_ranges::legacy_fold_cond_overflow): Remove
8754 strict_overflow_p and only_ranges.
8755 (simplify_using_ranges::legacy_fold_cond): Adjust call to
8756 legacy_fold_cond_overflow.
8757 (simplify_using_ranges::simplify_abs_using_ranges): Adjust for
8759 (range_fits_type_p): Rename value_range to irange.
8760 * vr-values.h (range_fits_type_p): Adjust prototype.
8762 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
8764 * value-range.cc (irange::irange_set_anti_range): Remove uses of
8765 tree_lower_bound and tree_upper_bound.
8766 (irange::verify_range): Same.
8767 (irange::operator==): Same.
8768 (irange::singleton_p): Same.
8769 * value-range.h (irange::tree_lower_bound): Delete.
8770 (irange::tree_upper_bound): Delete.
8771 (irange::lower_bound): Delete.
8772 (irange::upper_bound): Delete.
8773 (irange::zero_p): Remove uses of tree_lower_bound and
8776 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
8778 * tree-ssa-loop-niter.cc (refine_value_range_using_guard): Remove
8780 (determine_value_range): Same.
8781 (record_nonwrapping_iv): Same.
8782 (infer_loop_bounds_from_signedness): Same.
8783 (scev_var_range_cant_overflow): Same.
8784 * tree-vrp.cc (operand_less_p): Delete.
8785 * tree-vrp.h (operand_less_p): Delete.
8786 * value-range.cc (get_legacy_range): Remove uses of deprecated API.
8787 (irange::value_inside_range): Delete.
8788 * value-range.h (vrange::kind): Delete.
8789 (irange::num_pairs): Remove check of m_kind.
8790 (irange::min): Delete.
8791 (irange::max): Delete.
8793 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
8795 * gimple-fold.cc (maybe_fold_comparisons_from_match_pd): Adjust
8797 * gimple-range-cache.cc (sbr_vector::sbr_vector): Same.
8798 (sbr_vector::grow): Same.
8799 (sbr_vector::set_bb_range): Same.
8800 (sbr_vector::get_bb_range): Same.
8801 (sbr_sparse_bitmap::sbr_sparse_bitmap): Same.
8802 (sbr_sparse_bitmap::set_bb_range): Same.
8803 (sbr_sparse_bitmap::get_bb_range): Same.
8804 (block_range_cache::block_range_cache): Same.
8805 (ssa_global_cache::ssa_global_cache): Same.
8806 (ssa_global_cache::get_global_range): Same.
8807 (ssa_global_cache::set_global_range): Same.
8808 * gimple-range-cache.h: Same.
8809 * gimple-range-edge.cc
8810 (gimple_outgoing_range::gimple_outgoing_range): Same.
8811 (gimple_outgoing_range::switch_edge_range): Same.
8812 (gimple_outgoing_range::calc_switch_ranges): Same.
8813 * gimple-range-edge.h: Same.
8814 * gimple-range-infer.cc
8815 (infer_range_manager::infer_range_manager): Same.
8816 (infer_range_manager::get_nonzero): Same.
8817 (infer_range_manager::maybe_adjust_range): Same.
8818 (infer_range_manager::add_range): Same.
8819 * gimple-range-infer.h: Rename obstack_vrange_allocator to
8821 * tree-core.h (struct irange_storage_slot): Remove.
8822 (struct tree_ssa_name): Remove irange_info and frange_info. Make
8823 range_info a pointer to vrange_storage.
8824 * tree-ssanames.cc (range_info_fits_p): Adjust for vrange_storage.
8825 (range_info_alloc): Same.
8826 (range_info_free): Same.
8827 (range_info_get_range): Same.
8828 (range_info_set_range): Same.
8829 (get_nonzero_bits): Same.
8830 * value-query.cc (get_ssa_name_range_info): Same.
8831 * value-range-storage.cc (class vrange_internal_alloc): New.
8832 (class vrange_obstack_alloc): New.
8833 (class vrange_ggc_alloc): New.
8834 (vrange_allocator::vrange_allocator): New.
8835 (vrange_allocator::~vrange_allocator): New.
8836 (vrange_storage::alloc_slot): New.
8837 (vrange_allocator::alloc): New.
8838 (vrange_allocator::free): New.
8839 (vrange_allocator::clone): New.
8840 (vrange_allocator::clone_varying): New.
8841 (vrange_allocator::clone_undefined): New.
8842 (vrange_storage::alloc): New.
8843 (vrange_storage::set_vrange): Remove slot argument.
8844 (vrange_storage::get_vrange): Same.
8845 (vrange_storage::fits_p): Same.
8846 (vrange_storage::equal_p): New.
8847 (irange_storage::write_lengths_address): New.
8848 (irange_storage::lengths_address): New.
8849 (irange_storage_slot::alloc_slot): Remove.
8850 (irange_storage::alloc): New.
8851 (irange_storage_slot::irange_storage_slot): Remove.
8852 (irange_storage::irange_storage): New.
8853 (write_wide_int): New.
8854 (irange_storage_slot::set_irange): Remove.
8855 (irange_storage::set_irange): New.
8856 (read_wide_int): New.
8857 (irange_storage_slot::get_irange): Remove.
8858 (irange_storage::get_irange): New.
8859 (irange_storage_slot::size): Remove.
8860 (irange_storage::equal_p): New.
8861 (irange_storage_slot::num_wide_ints_needed): Remove.
8862 (irange_storage::size): New.
8863 (irange_storage_slot::fits_p): Remove.
8864 (irange_storage::fits_p): New.
8865 (irange_storage_slot::dump): Remove.
8866 (irange_storage::dump): New.
8867 (frange_storage_slot::alloc_slot): Remove.
8868 (frange_storage::alloc): New.
8869 (frange_storage_slot::set_frange): Remove.
8870 (frange_storage::set_frange): New.
8871 (frange_storage_slot::get_frange): Remove.
8872 (frange_storage::get_frange): New.
8873 (frange_storage_slot::fits_p): Remove.
8874 (frange_storage::equal_p): New.
8875 (frange_storage::fits_p): New.
8876 (ggc_vrange_allocator): New.
8877 (ggc_alloc_vrange_storage): New.
8878 * value-range-storage.h (class vrange_storage): Rewrite.
8879 (class irange_storage): Rewrite.
8880 (class frange_storage): Rewrite.
8881 (class obstack_vrange_allocator): Remove.
8882 (class ggc_vrange_allocator): Remove.
8883 (vrange_allocator::alloc_vrange): Remove.
8884 (vrange_allocator::alloc_irange): Remove.
8885 (vrange_allocator::alloc_frange): Remove.
8886 (ggc_alloc_vrange_storage): New.
8887 * value-range.h (class irange): Rename vrange_allocator to
8889 (class frange): Same.
8891 2023-04-30 Roger Sayle <roger@nextmovesoftware.com>
8893 * config/stormy16/stormy16.md (neghi2): Rewrite pattern using
8894 inc to avoid clobbering the carry flag.
8896 2023-04-30 Andrew Pinski <apinski@marvell.com>
8898 * match.pd: Add patterns for "a != 0 ? FUNC(a) : CST"
8899 for FUNC of POPCOUNT BSWAP FFS PARITY CLZ and CTZ.
8901 2023-04-30 Andrew Pinski <apinski@marvell.com>
8903 * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
8904 Allow some builtin/internal function calls which
8905 are known not to trap/throw.
8906 (phiopt_worker::match_simplify_replacement):
8907 Use name instead of getting the lhs again.
8909 2023-04-30 Joakim Nohlgård <joakim@nohlgard.se>
8911 * configure: Regenerate.
8912 * configure.ac: Use ld -r in the check for HAVE_LD_RO_RW_SECTION_MIXING
8914 2023-04-29 Hans-Peter Nilsson <hp@axis.com>
8916 * reload1.cc (emit_insn_if_valid_for_reload_1): Rename from
8917 emit_insn_if_valid_for_reload.
8918 (emit_insn_if_valid_for_reload): Call new helper, and if a SET fails
8919 to be recognized, also try emitting a parallel that clobbers
8920 TARGET_FLAGS_REGNUM, as applicable.
8922 2023-04-29 Roger Sayle <roger@nextmovesoftware.com>
8924 * config/stormy16/stormy16.md (neghi2): Convert from a define_expand
8926 (*rotatehi_1): New define_insn for efficient 2 insn sequence.
8927 (*rotatehi_8, *rotaterthi_8): New define_insn to emit a swpb.
8929 2023-04-29 Roger Sayle <roger@nextmovesoftware.com>
8931 * config/stormy16/stormy16.md (any_lshift): New code iterator.
8932 (any_or_plus): Likewise.
8933 (any_rotate): Likewise.
8934 (*<any_lshift>_and_internal): New define_insn_and_split to
8935 recognize a logical shift followed by an AND, and split it
8937 (*swpn): New define_insn matching xstormy16's swpn.
8938 (*swpn_zext): New define_insn recognizing swpn followed by
8939 zero_extendqihi2, i.e. with the high byte set to zero.
8940 (*swpn_sext): Likewise, for swpn followed by cbw.
8941 (*swpn_sext_2): Likewise, for an alternate RTL form.
8942 (*swpn_zext_ior): A pre-reload splitter so that an swpn+zext+ior
8943 sequence is split in the correct place to recognize the *swpn_zext
8944 followed by any_or_plus (ior, xor or plus) instruction.
8946 2023-04-29 Mikael Pettersson <mikpelinux@gmail.com>
8949 * config.gcc (vax-*-linux*): Add glibc-stdint.h.
8950 (lm32-*-uclinux*): Likewise.
8952 2023-04-29 Fei Gao <gaofei@eswincomputing.com>
8954 * config/riscv/riscv.cc (riscv_avoid_save_libcall): helper function
8955 for riscv_use_save_libcall.
8956 (riscv_use_save_libcall): call riscv_avoid_save_libcall.
8957 (riscv_compute_frame_info): restructure to decouple stack allocation
8958 for rv32e w/o save-restore.
8960 2023-04-28 Eugene Rozenfeld <erozen@microsoft.com>
8962 * doc/install.texi: Fix documentation typo
8964 2023-04-28 Matevos Mehrabyan <matevosmehrabyan@gmail.com>
8966 * config/riscv/iterators.md (only_div, paired_mod): New iterators.
8967 (u): Add div/udiv cases.
8968 * config/riscv/riscv-protos.h (riscv_use_divmod_expander): Prototype.
8969 * config/riscv/riscv.cc (struct riscv_tune_param): Add field for
8971 (rocket_tune_info, sifive_7_tune_info): Initialize new field.
8972 (thead_c906_tune_info): Likewise.
8973 (optimize_size_tune_info): Likewise.
8974 (riscv_use_divmod_expander): New function.
8975 * config/riscv/riscv.md (<u>divmod<mode>4): New expander.
8977 2023-04-28 Karen Sargsyan <karen1999411@gmail.com>
8979 * config/riscv/bitmanip.md: Added clmulr instruction.
8980 * config/riscv/riscv-builtins.cc (AVAIL): Add new.
8981 * config/riscv/riscv.md: (UNSPEC_CLMULR): Add new unspec type.
8983 * config/riscv/riscv-cmo.def: Added built-in function for clmulr.
8984 * config/riscv/crypto.md: Move clmul[h] instructions to bitmanip.md.
8985 * config/riscv/riscv-scalar-crypto.def: Move clmul[h] built-in
8986 functions to riscv-cmo.def.
8987 * config/riscv/generic.md: Add clmul to list of instructions
8988 using the generic_imul reservation.
8990 2023-04-28 Jivan Hakobyan <jivanhakobyan9@gmail.com>
8992 * config/riscv/bitmanip.md: Added expanders for minu/maxu instructions
8994 2023-04-28 Andrew Pinski <apinski@marvell.com>
8996 PR tree-optimization/100958
8997 * tree-ssa-phiopt.cc (two_value_replacement): Remove.
8998 (pass_phiopt::execute): Don't call two_value_replacement.
8999 * match.pd (a !=/== CST1 ? CST2 : CST3): Add pattern to
9000 handle what two_value_replacement did.
9002 2023-04-28 Andrew Pinski <apinski@marvell.com>
9004 * match.pd: Add patterns for
9005 "(A CMP B) ? MIN/MAX<A, C> : MIN/MAX <B, C>".
9007 2023-04-28 Andrew Pinski <apinski@marvell.com>
9009 * match.pd: Factor out the deciding the min/max from
9010 the "(cond (cmp (convert1? x) c1) (convert2? x) c2)"
9012 * fold-const.cc (minmax_from_comparison): this new function.
9013 * fold-const.h (minmax_from_comparison): New prototype.
9015 2023-04-28 Roger Sayle <roger@nextmovesoftware.com>
9017 PR rtl-optimization/109476
9018 * lower-subreg.cc: Include explow.h for force_reg.
9019 (find_decomposable_shift_zext): Pass an additional SPEED_P argument.
9020 If decomposing a suitable LSHIFTRT and we're not splitting
9021 ZERO_EXTEND (based on the current SPEED_P), then use a ZERO_EXTEND
9022 instead of setting a high part SUBREG to zero, which helps combine.
9023 (decompose_multiword_subregs): Update call to resolve_shift_zext.
9025 2023-04-28 Richard Biener <rguenther@suse.de>
9027 * tree-vect-data-refs.cc (vect_analyze_data_refs): Always
9029 * tree-vect-stmts.cc (vect_model_store_cost): Pass in the
9030 gather-scatter info and cost emulated scatters accordingly.
9031 (get_load_store_type): Support emulated scatters.
9032 (vectorizable_store): Likewise. Emulate them by extracting
9033 scalar offsets and data, doing scalar stores.
9035 2023-04-28 Richard Biener <rguenther@suse.de>
9037 * config/i386/i386.cc (ix86_vector_costs::add_stmt_cost):
9038 Tame down element extracts and scalar loads for gather/scatter
9039 similar to elementwise strided accesses.
9041 2023-04-28 Pan Li <pan2.li@intel.com>
9042 kito-cheng <kito.cheng@sifive.com>
9044 * config/riscv/vector.md: Add new define split to perform
9047 2023-04-28 Richard Biener <rguenther@suse.de>
9050 * ipa-param-manipulation.cc
9051 (ipa_param_body_adjustments::modify_expression): Allow
9052 conversion of a register to a non-register type. Elide
9053 conversions inside BIT_FIELD_REFs.
9055 2023-04-28 Richard Biener <rguenther@suse.de>
9057 PR tree-optimization/109644
9058 * tree-cfg.cc (verify_types_in_gimple_reference): Check
9059 register constraints on the outermost VIEW_CONVERT_EXPR
9060 only. Do not allow register or invariant bases on
9061 multi-level or possibly variable index handled components.
9063 2023-04-28 Richard Biener <rguenther@suse.de>
9065 * gimplify.cc (gimplify_compound_lval): When there's a
9066 non-register type produced by one of the handled component
9067 operations make sure we get a non-register base.
9069 2023-04-28 Richard Biener <rguenther@suse.de>
9071 PR tree-optimization/108752
9072 * tree-vect-generic.cc (build_replicated_const): Rename
9073 to build_replicated_int_cst and move to tree.{h,cc}.
9074 (do_plus_minus): Adjust.
9075 (do_negate): Likewise.
9076 * tree-vect-stmts.cc (vectorizable_operation): Emit emulated
9077 arithmetic vector operations in lowered form.
9078 * tree.h (build_replicated_int_cst): Declare.
9079 * tree.cc (build_replicated_int_cst): Moved from
9080 tree-vect-generic.cc build_replicated_const.
9082 2023-04-28 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
9085 * config/aarch64/aarch64-simd.md (aarch64_rbit<mode>): Rename to...
9086 (aarch64_rbit<mode><vczle><vczbe>): ... This.
9087 (neg<mode>2): Rename to...
9088 (neg<mode>2<vczle><vczbe>): ... This.
9089 (abs<mode>2): Rename to...
9090 (abs<mode>2<vczle><vczbe>): ... This.
9091 (aarch64_abs<mode>): Rename to...
9092 (aarch64_abs<mode><vczle><vczbe>): ... This.
9093 (one_cmpl<mode>2): Rename to...
9094 (one_cmpl<mode>2<vczle><vczbe>): ... This.
9095 (clrsb<mode>2): Rename to...
9096 (clrsb<mode>2<vczle><vczbe>): ... This.
9097 (clz<mode>2): Rename to...
9098 (clz<mode>2<vczle><vczbe>): ... This.
9099 (popcount<mode>2): Rename to...
9100 (popcount<mode>2<vczle><vczbe>): ... This.
9102 2023-04-28 Jakub Jelinek <jakub@redhat.com>
9104 * gimple-range-op.cc (class cfn_sqrt): New type.
9105 (op_cfn_sqrt): New variable.
9106 (gimple_range_op_handler::maybe_builtin_call): Handle
9107 CASE_CFN_SQRT{,_FN}.
9109 2023-04-28 Aldy Hernandez <aldyh@redhat.com>
9110 Jakub Jelinek <jakub@redhat.com>
9112 * value-range.h (frange_nextafter): Declare.
9113 * gimple-range-op.cc (class cfn_sincos): New.
9114 (op_cfn_sin, op_cfn_cos): New variables.
9115 (gimple_range_op_handler::maybe_builtin_call): Handle
9116 CASE_CFN_{SIN,COS}{,_FN}.
9118 2023-04-28 Jakub Jelinek <jakub@redhat.com>
9120 * target.def (libm_function_max_error): New target hook.
9121 * doc/tm.texi.in (TARGET_LIBM_FUNCTION_MAX_ERROR): Add.
9122 * doc/tm.texi: Regenerated.
9123 * targhooks.h (default_libm_function_max_error,
9124 glibc_linux_libm_function_max_error): Declare.
9125 * targhooks.cc: Include case-cfn-macros.h.
9126 (default_libm_function_max_error,
9127 glibc_linux_libm_function_max_error): New functions.
9128 * config/linux.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
9129 * config/linux-protos.h (linux_libm_function_max_error): Declare.
9130 * config/linux.cc: Include target.h and targhooks.h.
9131 (linux_libm_function_max_error): New function.
9132 * config/arc/arc.cc: Include targhooks.h and case-cfn-macros.h.
9133 (arc_libm_function_max_error): New function.
9134 (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
9135 * config/i386/i386.cc (ix86_libc_has_fast_function): Formatting fix.
9136 (ix86_libm_function_max_error): New function.
9137 (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
9138 * config/rs6000/rs6000-protos.h
9139 (rs6000_linux_libm_function_max_error): Declare.
9140 * config/rs6000/rs6000-linux.cc: Include target.h, targhooks.h, tree.h
9141 and case-cfn-macros.h.
9142 (rs6000_linux_libm_function_max_error): New function.
9143 * config/rs6000/linux.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
9144 * config/rs6000/linux64.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
9145 * config/or1k/or1k.cc: Include targhooks.h and case-cfn-macros.h.
9146 (or1k_libm_function_max_error): New function.
9147 (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
9149 2023-04-28 Alexandre Oliva <oliva@adacore.com>
9151 * gimple-harden-conditionals.cc (insert_edge_check_and_trap):
9152 Move detach value calls...
9153 (pass_harden_conditional_branches::execute): ... here.
9154 (pass_harden_compares::execute): Detach values before
9157 2023-04-27 Andrew Stubbs <ams@codesourcery.com>
9159 * config/gcn/gcn-valu.md (cmul<conj_op><mode>3): Use gcn_gen_undef.
9160 (cml<addsub_as><mode>4): Likewise.
9161 (vec_addsub<mode>3): Likewise.
9162 (cadd<rot><mode>3): Likewise.
9163 (vec_fmaddsub<mode>4): Likewise.
9164 (vec_fmsubadd<mode>4): Likewise, and use sub for the odd lanes.
9166 2023-04-27 Andrew Pinski <apinski@marvell.com>
9168 * tree-ssa-phiopt.cc (phiopt_early_allow): Allow for
9169 up to 2 min/max expressions in the sequence/match code.
9171 2023-04-27 Andrew Pinski <apinski@marvell.com>
9173 * rtlanal.cc (may_trap_p_1): Treat SMIN/SMAX similar as
9175 * tree-eh.cc (operation_could_trap_helper_p): Treate
9176 MIN_EXPR/MAX_EXPR similar as other comparisons.
9178 2023-04-27 Andrew Pinski <apinski@marvell.com>
9180 * tree-ssa-phiopt.cc (cond_store_replacement): Remove
9182 (cond_if_else_store_replacement): Likewise.
9183 (get_non_trapping): Likewise.
9184 (store_elim_worker): Move into ...
9185 (pass_cselim::execute): This.
9187 2023-04-27 Andrew Pinski <apinski@marvell.com>
9189 * tree-ssa-phiopt.cc (two_value_replacement): Remove
9191 (match_simplify_replacement): Likewise.
9192 (factor_out_conditional_conversion): Likewise.
9193 (value_replacement): Likewise.
9194 (minmax_replacement): Likewise.
9195 (spaceship_replacement): Likewise.
9196 (cond_removal_in_builtin_zero_pattern): Likewise.
9197 (hoist_adjacent_loads): Likewise.
9198 (tree_ssa_phiopt_worker): Move into ...
9199 (pass_phiopt::execute): this.
9201 2023-04-27 Andrew Pinski <apinski@marvell.com>
9203 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove
9204 do_store_elim argument and split that part out to ...
9205 (store_elim_worker): This new function.
9206 (pass_cselim::execute): Call store_elim_worker.
9207 (pass_phiopt::execute): Update call to tree_ssa_phiopt_worker.
9209 2023-04-27 Jan Hubicka <jh@suse.cz>
9211 * cfgloopmanip.h (unloop_loops): Export.
9212 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Unloop loops
9213 that no longer loop.
9214 * tree-ssa-loop-ivcanon.cc (unloop_loops): Export; do not free
9215 vectors of loops to unloop.
9216 (canonicalize_induction_variables): Free vectors here.
9217 (tree_unroll_loops_completely): Free vectors here.
9219 2023-04-27 Richard Biener <rguenther@suse.de>
9221 PR tree-optimization/109170
9222 * gimple-range-op.cc (gimple_range_op_handler::maybe_builtin_call):
9223 Handle __builtin_expect and similar via cfn_pass_through_arg1
9224 and inspecting the calls fnspec.
9225 * builtins.cc (builtin_fnspec): Handle BUILT_IN_EXPECT
9226 and BUILT_IN_EXPECT_WITH_PROBABILITY.
9228 2023-04-27 Alexandre Oliva <oliva@adacore.com>
9230 * genmultilib: Use CONFIG_SHELL to run sub-scripts.
9232 2023-04-27 Aldy Hernandez <aldyh@redhat.com>
9234 PR tree-optimization/109639
9235 * ipa-cp.cc (ipa_value_range_from_jfunc): Normalize range.
9236 (propagate_vr_across_jump_function): Same.
9237 * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
9238 * ipa-prop.h (ipa_range_set_and_normalize): New.
9239 * value-range.cc (irange::set): Assert min and max are INTEGER_CST.
9241 2023-04-27 Richard Biener <rguenther@suse.de>
9243 * match.pd (BIT_FIELD_REF CONSTRUCTOR@0 @1 @2): Do not
9244 create a CTOR operand in the result when simplifying GIMPLE.
9246 2023-04-27 Richard Biener <rguenther@suse.de>
9248 * gimplify.cc (gimplify_compound_lval): When the base
9249 gimplified to a register make sure to split up chains
9252 2023-04-27 Richard Biener <rguenther@suse.de>
9255 * ipa-param-manipulation.h
9256 (ipa_param_body_adjustments::modify_expression): Add extra_stmts
9258 * ipa-param-manipulation.cc
9259 (ipa_param_body_adjustments::modify_expression): Likewise.
9260 When we need a conversion and the replacement is a register
9261 split the conversion out.
9262 (ipa_param_body_adjustments::modify_assignment): Pass
9263 extra_stmts to RHS modify_expression.
9265 2023-04-27 Jonathan Wakely <jwakely@redhat.com>
9267 * doc/extend.texi (Zero Length): Describe example.
9269 2023-04-27 Richard Biener <rguenther@suse.de>
9271 PR tree-optimization/109594
9272 * tree-ssa.cc (non_rewritable_mem_ref_base): Constrain
9273 what we rewrite to a register based on the above.
9275 2023-04-26 Patrick O'Neill <patrick@rivosinc.com>
9277 * config/riscv/riscv.cc: Fix whitespace.
9278 * config/riscv/sync.md: Fix whitespace.
9280 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
9282 PR tree-optimization/108697
9283 * gimple-range-cache.cc (ssa_global_cache::clear_range): Do
9284 not clear the vector on an out of range query.
9285 (ssa_cache::dump): Use dump_range_query instead of get_range.
9286 (ssa_cache::dump_range_query): New.
9287 (ssa_lazy_cache::dump_range_query): New.
9288 (ssa_lazy_cache::set_range): New.
9289 * gimple-range-cache.h (ssa_cache::dump_range_query): New.
9290 (class ssa_lazy_cache): New.
9291 (ssa_lazy_cache::ssa_lazy_cache): New.
9292 (ssa_lazy_cache::~ssa_lazy_cache): New.
9293 (ssa_lazy_cache::get_range): New.
9294 (ssa_lazy_cache::clear_range): New.
9295 (ssa_lazy_cache::clear): New.
9296 (ssa_lazy_cache::dump): New.
9297 * gimple-range-path.cc (path_range_query::path_range_query): Do
9298 not allocate a ssa_cache object nor has_cache bitmap.
9299 (path_range_query::~path_range_query): Do not free objects.
9300 (path_range_query::clear_cache): Remove.
9301 (path_range_query::get_cache): Adjust.
9302 (path_range_query::set_cache): Remove.
9303 (path_range_query::dump): Don't call through a pointer.
9304 (path_range_query::internal_range_of_expr): Set cache directly.
9305 (path_range_query::reset_path): Clear cache directly.
9306 (path_range_query::ssa_range_in_phi): Fold with globals only.
9307 (path_range_query::compute_ranges_in_phis): Simply set range.
9308 (path_range_query::compute_ranges_in_block): Call cache directly.
9309 * gimple-range-path.h (class path_range_query): Replace bitmap
9310 and cache pointer with lazy cache object.
9311 * gimple-range.h (class assume_query): Use ssa_lazy_cache.
9313 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
9315 * gimple-range-cache.cc (ssa_cache::ssa_cache): Rename.
9316 (ssa_cache::~ssa_cache): Rename.
9317 (ssa_cache::has_range): New.
9318 (ssa_cache::get_range): Rename.
9319 (ssa_cache::set_range): Rename.
9320 (ssa_cache::clear_range): Rename.
9321 (ssa_cache::clear): Rename.
9322 (ssa_cache::dump): Rename and use get_range.
9323 (ranger_cache::get_global_range): Use get_range and set_range.
9324 (ranger_cache::range_of_def): Use get_range.
9325 * gimple-range-cache.h (class ssa_cache): Rename class and methods.
9326 (class ranger_cache): Use ssa_cache.
9327 * gimple-range-path.cc (path_range_query::path_range_query): Use
9329 (path_range_query::get_cache): Use get_range.
9330 (path_range_query::set_cache): Use set_range.
9331 * gimple-range-path.h (class path_range_query): Use ssa_cache.
9332 * gimple-range.cc (assume_query::assume_range_p): Use get_range.
9333 (assume_query::range_of_expr): Use get_range.
9334 (assume_query::assume_query): Use set_range.
9335 (assume_query::calculate_op): Use get_range and set_range.
9336 * gimple-range.h (class assume_query): Use ssa_cache.
9338 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
9340 * gimple-range-cache.cc (sbr_vector::sbr_vector): Add parameter
9341 and local to optionally zero memory.
9342 (br_vector::grow): Only zero memory if flag is set.
9343 (class sbr_lazy_vector): New.
9344 (sbr_lazy_vector::sbr_lazy_vector): New.
9345 (sbr_lazy_vector::set_bb_range): New.
9346 (sbr_lazy_vector::get_bb_range): New.
9347 (sbr_lazy_vector::bb_range_p): New.
9348 (block_range_cache::set_bb_range): Check flags and Use sbr_lazy_vector.
9349 * gimple-range-gori.cc (gori_map::calculate_gori): Use
9350 param_vrp_switch_limit.
9351 (gori_compute::gori_compute): Use param_vrp_switch_limit.
9352 * params.opt (vrp_sparse_threshold): Rename from evrp_sparse_threshold.
9353 (vrp_switch_limit): Rename from evrp_switch_limit.
9354 (vrp_vector_threshold): New.
9356 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
9358 * value-relation.cc (dom_oracle::query_relation): Check early for lack
9360 * value-relation.h (equiv_oracle::has_equiv_p): New.
9362 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
9364 PR tree-optimization/109417
9365 * gimple-range-gori.cc (range_def_chain::register_dependency):
9366 Save the ssa version number, not the pointer.
9367 (gori_compute::may_recompute_p): No need to check if a dependency
9368 is in the free list.
9369 * gimple-range-gori.h (class range_def_chain): Change ssa1 and ssa2
9370 fields to be unsigned int instead of trees.
9371 (ange_def_chain::depend1): Adjust.
9372 (ange_def_chain::depend2): Adjust.
9373 * gimple-range.h: Include "ssa.h" to inline ssa_name().
9375 2023-04-26 David Edelsohn <dje.gcc@gmail.com>
9377 * config/rs6000/aix72.h (TARGET_DEFAULT): Use ISA_2_6_MASKS_SERVER.
9378 * config/rs6000/aix73.h (TARGET_DEFAULT): Use ISA_2_7_MASKS_SERVER.
9379 (PROCESSOR_DEFAULT): Use PROCESSOR_POWER8.
9381 2023-04-26 Patrick O'Neill <patrick@rivosinc.com>
9384 * config/riscv/riscv-protos.h: Add helper function stubs.
9385 * config/riscv/riscv.cc: Add helper functions for subword masking.
9386 * config/riscv/riscv.opt: Add command-line flags -minline-atomics and
9387 -mno-inline-atomics.
9388 * config/riscv/sync.md: Add masking logic and inline asm for fetch_and_op,
9389 fetch_and_nand, CAS, and exchange ops.
9390 * doc/invoke.texi: Add blurb regarding new command-line flags
9391 -minline-atomics and -mno-inline-atomics.
9393 2023-04-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
9395 * config/aarch64/aarch64-simd.md (aarch64_rshrn2<mode>_insn_le):
9396 Reimplement using standard RTL codes instead of unspec.
9397 (aarch64_rshrn2<mode>_insn_be): Likewise.
9398 (aarch64_rshrn2<mode>): Adjust for the above.
9399 * config/aarch64/aarch64.md (UNSPEC_RSHRN): Delete.
9401 2023-04-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
9403 * config/aarch64/aarch64-simd.md (aarch64_rshrn<mode>_insn_le): Reimplement
9404 with standard RTL codes instead of an UNSPEC.
9405 (aarch64_rshrn<mode>_insn_be): Likewise.
9406 (aarch64_rshrn<mode>): Adjust for the above.
9407 * config/aarch64/predicates.md (aarch64_simd_rshrn_imm_vec): Define.
9409 2023-04-26 Pan Li <pan2.li@intel.com>
9410 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
9412 * config/riscv/riscv.cc (riscv_classify_address): Allow
9413 const0_rtx for the RVV load/store.
9415 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
9417 * range-op.cc (range_op_cast_tests): Remove legacy support.
9418 * value-range-storage.h (vrange_allocator::alloc_irange): Same.
9419 * value-range.cc (irange::operator=): Same.
9420 (get_legacy_range): Same.
9421 (irange::copy_legacy_to_multi_range): Delete.
9422 (irange::copy_to_legacy): Delete.
9423 (irange::irange_set_anti_range): Delete.
9424 (irange::set): Remove legacy support.
9425 (irange::verify_range): Same.
9426 (irange::legacy_lower_bound): Delete.
9427 (irange::legacy_upper_bound): Delete.
9428 (irange::legacy_equal_p): Delete.
9429 (irange::operator==): Remove legacy support.
9430 (irange::singleton_p): Same.
9431 (irange::value_inside_range): Same.
9432 (irange::contains_p): Same.
9433 (intersect_ranges): Delete.
9434 (irange::legacy_intersect): Delete.
9435 (union_ranges): Delete.
9436 (irange::legacy_union): Delete.
9437 (irange::legacy_verbose_union_): Delete.
9438 (irange::legacy_verbose_intersect): Delete.
9439 (irange::irange_union): Remove legacy support.
9440 (irange::irange_intersect): Same.
9441 (irange::intersect): Same.
9442 (irange::invert): Same.
9443 (ranges_from_anti_range): Delete.
9444 (gt_pch_nx): Adjust for legacy removal.
9446 (range_tests_legacy): Delete.
9447 (range_tests_misc): Adjust for legacy removal.
9448 (range_tests): Same.
9449 * value-range.h (class irange): Same.
9450 (irange::legacy_mode_p): Delete.
9451 (ranges_from_anti_range): Delete.
9452 (irange::nonzero_p): Adjust for legacy removal.
9453 (irange::lower_bound): Same.
9454 (irange::upper_bound): Same.
9455 (irange::union_): Same.
9456 (irange::intersect): Same.
9457 (irange::set_nonzero): Same.
9458 (irange::set_zero): Same.
9459 * vr-values.cc (simplify_using_ranges::legacy_fold_cond_overflow): Same.
9461 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
9463 * value-range.cc (irange::copy_legacy_to_multi_range): Rewrite use
9464 of range_has_numeric_bounds_p with irange API.
9465 (range_has_numeric_bounds_p): Delete.
9466 * value-range.h (range_has_numeric_bounds_p): Delete.
9468 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
9470 * tree-data-ref.cc (compute_distributive_range): Replace uses of
9471 range_int_cst_p with irange API.
9472 * tree-ssa-strlen.cc (get_range_strlen_dynamic): Same.
9473 * tree-vrp.h (range_int_cst_p): Delete.
9474 * vr-values.cc (check_for_binary_op_overflow): Replace usees of
9475 range_int_cst_p with irange API.
9476 (vr_set_zero_nonzero_bits): Same.
9477 (range_fits_type_p): Same.
9478 (simplify_using_ranges::simplify_casted_cond): Same.
9479 * tree-vrp.cc (range_int_cst_p): Remove.
9481 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
9483 * tree-ssa-strlen.cc (compare_nonzero_chars): Convert to wide_ints.
9485 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
9487 * builtins.cc (expand_builtin_strnlen): Rewrite deprecated irange
9488 API uses to new API.
9489 * gimple-predicate-analysis.cc (find_var_cmp_const): Same.
9490 * internal-fn.cc (get_min_precision): Same.
9492 * tree-affine.cc (expr_to_aff_combination): Same.
9493 * tree-data-ref.cc (dr_step_indicator): Same.
9494 * tree-dfa.cc (get_ref_base_and_extent): Same.
9495 * tree-scalar-evolution.cc (iv_can_overflow_p): Same.
9496 * tree-ssa-phiopt.cc (two_value_replacement): Same.
9497 * tree-ssa-pre.cc (insert_into_preds_of_block): Same.
9498 * tree-ssa-reassoc.cc (optimize_range_tests_to_bit_test): Same.
9499 * tree-ssa-strlen.cc (compare_nonzero_chars): Same.
9500 * tree-switch-conversion.cc (bit_test_cluster::emit): Same.
9501 * tree-vect-patterns.cc (vect_recog_divmod_pattern): Same.
9502 * tree.cc (get_range_pos_neg): Same.
9504 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
9506 * ipa-prop.cc (ipa_print_node_jump_functions_for_edge): Use
9507 vrange::dump instead of ad-hoc dumper.
9508 * tree-ssa-strlen.cc (dump_strlen_info): Same.
9509 * value-range-pretty-print.cc (visit): Pass TDF_NOUID to
9512 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
9514 * range-op.cc (operator_cast::op1_range): Use
9515 create_possibly_reversed_range.
9516 (operator_bitwise_and::simple_op1_range_solver): Same.
9517 * value-range.cc (swap_out_of_order_endpoints): Delete.
9518 (irange::set): Remove call to swap_out_of_order_endpoints.
9520 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
9522 * builtins.cc (determine_block_size): Convert use of legacy API to
9524 * gimple-array-bounds.cc (check_out_of_bounds_and_warn): Same.
9525 (array_bounds_checker::check_array_ref): Same.
9526 * gimple-ssa-warn-restrict.cc
9527 (builtin_memref::extend_offset_range): Same.
9528 * ipa-cp.cc (ipcp_store_vr_results): Same.
9529 * ipa-fnsummary.cc (set_switch_stmt_execution_predicate): Same.
9530 * ipa-prop.cc (struct ipa_vr_ggc_hash_traits): Same.
9531 (ipa_write_jump_function): Same.
9532 * pointer-query.cc (get_size_range): Same.
9533 * tree-data-ref.cc (split_constant_offset): Same.
9534 * tree-ssa-strlen.cc (get_range): Same.
9535 (maybe_diag_stxncpy_trunc): Same.
9536 (strlen_pass::get_len_or_size): Same.
9537 (strlen_pass::count_nonzero_bytes_addr): Same.
9538 * tree-vect-patterns.cc (vect_get_range_info): Same.
9539 * value-range.cc (irange::maybe_anti_range): Remove.
9540 (get_legacy_range): New.
9541 (irange::copy_to_legacy): Use get_legacy_range.
9542 (ranges_from_anti_range): Same.
9543 * value-range.h (class irange): Remove maybe_anti_range.
9544 (get_legacy_range): New.
9545 * vr-values.cc (check_for_binary_op_overflow): Convert use of
9546 legacy API to get_legacy_range.
9547 (compare_ranges): Same.
9548 (compare_range_with_value): Same.
9549 (bounds_of_var_in_loop): Same.
9550 (find_case_label_ranges): Same.
9551 (simplify_using_ranges::simplify_switch_using_ranges): Same.
9553 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
9555 * value-range-pretty-print.cc (vrange_printer::visit): Remove
9557 * value-range.cc (irange::constant_p): Remove.
9558 (irange::get_nonzero_bits_from_range): Remove constant_p use.
9559 * value-range.h (class irange): Remove constant_p.
9560 (irange::num_pairs): Remove constant_p use.
9562 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
9564 * value-range.cc (irange::copy_legacy_to_multi_range): Remove
9566 (irange::set): Same.
9567 (irange::legacy_lower_bound): Same.
9568 (irange::legacy_upper_bound): Same.
9569 (irange::contains_p): Same.
9570 (range_tests_legacy): Same.
9571 (irange::normalize_addresses): Remove.
9572 (irange::normalize_symbolics): Remove.
9573 (irange::symbolic_p): Remove.
9574 * value-range.h (class irange): Remove symbolic_p,
9575 normalize_symbolics, and normalize_addresses.
9576 * vr-values.cc (simplify_using_ranges::two_valued_val_range_p):
9577 Remove symbolics support.
9579 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
9581 * value-range.cc (irange::may_contain_p): Remove.
9582 * value-range.h (range_includes_zero_p): Rewrite may_contain_p
9583 usage with contains_p.
9584 * vr-values.cc (compare_range_with_value): Same.
9586 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
9588 * tree-vrp.cc (supported_types_p): Remove.
9589 (defined_ranges_p): Remove.
9590 (range_fold_binary_expr): Remove.
9591 (range_fold_unary_expr): Remove.
9592 * tree-vrp.h (range_fold_unary_expr): Remove.
9593 (range_fold_binary_expr): Remove.
9595 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
9597 * ipa-cp.cc (ipa_vr_operation_and_type_effects): Convert to ranger API.
9598 (ipa_value_range_from_jfunc): Same.
9599 (propagate_vr_across_jump_function): Same.
9600 * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
9601 * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Same.
9602 * vr-values.cc (bounds_of_var_in_loop): Same.
9604 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
9606 * gimple-array-bounds.cc (array_bounds_checker::get_value_range):
9607 Add irange argument.
9608 (check_out_of_bounds_and_warn): Remove check for vr.
9609 (array_bounds_checker::check_array_ref): Remove pointer qualifier
9610 for vr and adjust accordingly.
9611 * gimple-array-bounds.h (get_value_range): Add irange argument.
9612 * value-query.cc (class equiv_allocator): Delete.
9613 (range_query::get_value_range): Delete.
9614 (range_query::range_query): Remove allocator access.
9615 (range_query::~range_query): Same.
9616 * value-query.h (get_value_range): Delete.
9618 (simplify_using_ranges::op_with_boolean_value_range_p): Remove
9619 call to get_value_range.
9620 (check_for_binary_op_overflow): Same.
9621 (simplify_using_ranges::legacy_fold_cond_overflow): Same.
9622 (simplify_using_ranges::simplify_abs_using_ranges): Same.
9623 (simplify_using_ranges::simplify_cond_using_ranges_1): Same.
9624 (simplify_using_ranges::simplify_casted_cond): Same.
9625 (simplify_using_ranges::simplify_switch_using_ranges): Same.
9626 (simplify_using_ranges::two_valued_val_range_p): Same.
9628 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
9631 (simplify_using_ranges::vrp_evaluate_conditional_warnv_with_ops):
9633 (simplify_using_ranges::legacy_fold_cond_overflow): ...this.
9634 (simplify_using_ranges::vrp_visit_cond_stmt): Rename to...
9635 (simplify_using_ranges::legacy_fold_cond): ...this.
9636 (simplify_using_ranges::fold_cond): Rename
9637 vrp_evaluate_conditional_warnv_with_ops to
9638 legacy_fold_cond_overflow.
9639 * vr-values.h (class vr_values): Replace vrp_visit_cond_stmt and
9640 vrp_evaluate_conditional_warnv_with_ops with legacy_fold_cond and
9641 legacy_fold_cond_overflow respectively.
9643 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
9645 * vr-values.cc (get_vr_for_comparison): Remove.
9646 (compare_name_with_value): Same.
9647 (vrp_evaluate_conditional_warnv_with_ops): Remove calls to
9648 compare_name_with_value.
9649 * vr-values.h: Remove compare_name_with_value.
9650 Remove get_vr_for_comparison.
9652 2023-04-26 Roger Sayle <roger@nextmovesoftware.com>
9654 * config/stormy16/stormy16.md (bswaphi2): New define_insn.
9655 (bswapsi2): New define_insn.
9656 (swaphi): New define_insn to exchange two registers (swpw).
9657 (define_peephole2): Recognize exchange of registers as swaphi.
9659 2023-04-26 Richard Biener <rguenther@suse.de>
9661 * gimple-range-path.cc (path_range_query::compute_outgoing_relations):
9663 * ipa-pure-const.cc (pass_nothrow::execute): Likewise.
9664 * predict.cc (apply_return_prediction): Likewise.
9665 * sese.cc (set_ifsese_condition): Likewise. Simplify.
9666 * tree-cfg.cc (assert_unreachable_fallthru_edge_p): Avoid last_stmt.
9667 (make_edges_bb): Likewise.
9668 (make_cond_expr_edges): Likewise.
9669 (end_recording_case_labels): Likewise.
9670 (make_gimple_asm_edges): Likewise.
9671 (cleanup_dead_labels): Likewise.
9672 (group_case_labels): Likewise.
9673 (gimple_can_merge_blocks_p): Likewise.
9674 (gimple_merge_blocks): Likewise.
9675 (find_taken_edge): Likewise. Also handle empty fallthru blocks.
9676 (gimple_duplicate_sese_tail): Avoid last_stmt.
9677 (find_loop_dist_alias): Likewise.
9678 (gimple_block_ends_with_condjump_p): Likewise.
9679 (gimple_purge_dead_eh_edges): Likewise.
9680 (gimple_purge_dead_abnormal_call_edges): Likewise.
9681 (pass_warn_function_return::execute): Likewise.
9682 (execute_fixup_cfg): Likewise.
9683 * tree-eh.cc (redirect_eh_edge_1): Likewise.
9684 (pass_lower_resx::execute): Likewise.
9685 (pass_lower_eh_dispatch::execute): Likewise.
9686 (cleanup_empty_eh): Likewise.
9687 * tree-if-conv.cc (if_convertible_bb_p): Likewise.
9688 (predicate_bbs): Likewise.
9689 (ifcvt_split_critical_edges): Likewise.
9690 * tree-loop-distribution.cc (create_edge_for_control_dependence):
9692 (loop_distribution::transform_reduction_loop): Likewise.
9693 * tree-parloops.cc (transform_to_exit_first_loop_alt): Likewise.
9694 (try_transform_to_exit_first_loop_alt): Likewise.
9695 (transform_to_exit_first_loop): Likewise.
9696 (create_parallel_loop): Likewise.
9697 * tree-scalar-evolution.cc (get_loop_exit_condition): Likewise.
9698 * tree-ssa-dce.cc (mark_last_stmt_necessary): Likewise.
9699 (eliminate_unnecessary_stmts): Likewise.
9701 (dom_opt_dom_walker::set_global_ranges_from_unreachable_edges):
9703 * tree-ssa-ifcombine.cc (ifcombine_ifandif): Likewise.
9704 (pass_tree_ifcombine::execute): Likewise.
9705 * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Likewise.
9706 (should_duplicate_loop_header_p): Likewise.
9707 * tree-ssa-loop-ivcanon.cc (create_canonical_iv): Likewise.
9708 (tree_estimate_loop_size): Likewise.
9709 (try_unroll_loop_completely): Likewise.
9710 * tree-ssa-loop-ivopts.cc (tree_ssa_iv_optimize_loop): Likewise.
9711 * tree-ssa-loop-manip.cc (ip_normal_pos): Likewise.
9712 (canonicalize_loop_ivs): Likewise.
9713 * tree-ssa-loop-niter.cc (determine_value_range): Likewise.
9714 (bound_difference): Likewise.
9715 (number_of_iterations_popcount): Likewise.
9716 (number_of_iterations_cltz): Likewise.
9717 (number_of_iterations_cltz_complement): Likewise.
9718 (simplify_using_initial_conditions): Likewise.
9719 (number_of_iterations_exit_assumptions): Likewise.
9720 (loop_niter_by_eval): Likewise.
9721 (estimate_numbers_of_iterations): Likewise.
9723 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
9725 * config/riscv/vector.md: Refine vmadc/vmsbc RA constraint.
9727 2023-04-26 Kewen Lin <linkw@linux.ibm.com>
9730 * config/rs6000/rs6000-builtins.def
9731 (__builtin_vsx_scalar_cmp_exp_qp_eq, __builtin_vsx_scalar_cmp_exp_qp_gt
9732 __builtin_vsx_scalar_cmp_exp_qp_lt,
9733 __builtin_vsx_scalar_cmp_exp_qp_unordered): Move from stanza ieee128-hw
9736 2023-04-26 Kewen Lin <linkw@linux.ibm.com>
9739 * config/rs6000/altivec.md (sldoi_to_mov<mode>): Replace predicate
9740 easy_vector_constant with const_vector_each_byte_same, add
9741 handlings in preparation for !easy_vector_constant, and update
9742 VECTOR_UNIT_ALTIVEC_OR_VSX_P with VECTOR_MEM_ALTIVEC_OR_VSX_P.
9743 * config/rs6000/predicates.md (const_vector_each_byte_same): New
9746 2023-04-26 Juzhe-Zhong <juzhe.zhong@rivai.ai>
9748 * config/riscv/vector.md (*pred_cmp<mode>_merge_tie_mask): New pattern.
9749 (*pred_ltge<mode>_merge_tie_mask): Ditto.
9750 (*pred_cmp<mode>_scalar_merge_tie_mask): Ditto.
9751 (*pred_eqne<mode>_scalar_merge_tie_mask): Ditto.
9752 (*pred_cmp<mode>_extended_scalar_merge_tie_mask): Ditto.
9753 (*pred_eqne<mode>_extended_scalar_merge_tie_mask): Ditto.
9754 (*pred_cmp<mode>_narrow_merge_tie_mask): Ditto.
9756 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
9758 * config/riscv/vector.md: Fix redundant vmv1r.v.
9760 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
9762 * config/riscv/vector.md: Fix RA constraint.
9764 2023-04-26 Pan Li <pan2.li@intel.com>
9767 * tree-ssa-sccvn.cc (vn_reference_eq): add type vector subparts
9768 check for vn_reference equal.
9770 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
9772 * config/riscv/riscv-opts.h (enum riscv_autovec_preference_enum): Add enum for
9773 auto-vectorization preference.
9774 (enum riscv_autovec_lmul_enum): Add enum for choosing LMUL of RVV
9776 * config/riscv/riscv.opt: Add compile option for RVV auto-vectorization.
9778 2023-04-26 Jivan Hakobyan <jivanhakobyan9@gmail.com>
9780 * config/riscv/bitmanip.md: Updated predicates of bclri<mode>_nottwobits
9781 and bclridisi_nottwobits patterns.
9782 * config/riscv/predicates.md: (not_uimm_extra_bit_or_nottwobits): Adjust
9783 predicate to avoid splitting arith constants.
9784 (const_nottwobits_not_arith_operand): New predicate.
9786 2023-04-25 Hans-Peter Nilsson <hp@axis.com>
9788 * recog.cc (peep2_attempt, peep2_update_life): Correct
9789 head-comment description of parameter match_len.
9791 2023-04-25 Vineet Gupta <vineetg@rivosinc.com>
9793 * config/riscv/riscv.md: riscv_move_integer() drop in_splitter arg.
9794 riscv_split_symbol() drop in_splitter arg.
9795 * config/riscv/riscv.cc: riscv_move_integer() drop in_splitter arg.
9796 riscv_split_symbol() drop in_splitter arg.
9797 riscv_force_temporary() drop in_splitter arg.
9798 * config/riscv/riscv-protos.h: riscv_move_integer() drop in_splitter arg.
9799 riscv_split_symbol() drop in_splitter arg.
9801 2023-04-25 Eric Botcazou <ebotcazou@adacore.com>
9803 * tree-ssa.cc (insert_debug_temp_for_var_def): Do not create
9804 superfluous debug temporaries for single GIMPLE assignments.
9806 2023-04-25 Richard Biener <rguenther@suse.de>
9808 PR tree-optimization/109609
9809 * attr-fnspec.h (arg_max_access_size_given_by_arg_p):
9811 * tree-ssa-alias.cc (check_fnspec): Correctly interpret
9812 the size given by arg_max_access_size_given_by_arg_p as
9813 maximum, not exact, size.
9815 2023-04-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
9818 * config/aarch64/aarch64-simd.md (orn<mode>3): Rename to...
9819 (orn<mode>3<vczle><vczbe>): ... This.
9820 (bic<mode>3): Rename to...
9821 (bic<mode>3<vczle><vczbe>): ... This.
9822 (<su><maxmin><mode>3): Rename to...
9823 (<su><maxmin><mode>3<vczle><vczbe>): ... This.
9825 2023-04-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
9827 * config/aarch64/aarch64-simd.md (<su_optab>div<mode>3): New define_expand.
9828 * config/aarch64/iterators.md (VQDIV): New mode iterator.
9829 (vnx2di): New mode attribute.
9831 2023-04-25 Richard Biener <rguenther@suse.de>
9833 PR rtl-optimization/109585
9834 * tree-ssa-alias.cc (aliasing_component_refs_p): Fix typo.
9836 2023-04-25 Jakub Jelinek <jakub@redhat.com>
9839 * config/rs6000/rs6000.cc (rs6000_is_valid_rotate_dot_mask): For
9840 !TARGET_64BIT, don't return true if UINTVAL (mask) << (63 - nb)
9841 is larger than signed int maximum.
9843 2023-04-25 Martin Liska <mliska@suse.cz>
9845 * doc/gcov.texi: Document the new "calls" field and document
9846 the API bump. Mention also "block_ids" for lines.
9847 * gcov.cc (output_intermediate_json_line): Output info about
9848 calls and extend branches as well.
9849 (generate_results): Bump version to 2.
9850 (output_line_details): Use block ID instead of a non-sensual
9853 2023-04-25 Roger Sayle <roger@nextmovesoftware.com>
9855 * config/stormy16/stormy16.md (zero_extendqihi2): Restore/fix
9856 length attribute for the first (memory operand) alternative.
9858 2023-04-25 Victor Do Nascimento <victor.donascimento@arm.com>
9860 * config/aarch64/aarch64-simd.md(aarch64_simd_stp<mode>): New.
9861 * config/aarch64/constraints.md: Make "Umn" relaxed memory
9863 * config/aarch64/iterators.md(ldpstp_vel_sz): New.
9865 2023-04-25 Aldy Hernandez <aldyh@redhat.com>
9867 * value-range.cc (frange::set): Adjust constructor.
9868 * value-range.h (nan_state::nan_state): Replace default
9869 constructor with one taking an argument.
9871 2023-04-25 Aldy Hernandez <aldyh@redhat.com>
9873 * ipa-cp.cc (ipa_range_contains_p): New.
9874 (decide_whether_version_node): Use it.
9876 2023-04-24 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
9878 * tree-ssa-forwprop.cc (is_combined_permutation_identity): Try to
9879 simplify two successive VEC_PERM_EXPRs with same VLA mask,
9880 where mask chooses elements in reverse order.
9882 2023-04-24 Andrew Pinski <apinski@marvell.com>
9884 * tree-ssa-phiopt.cc (match_simplify_replacement): Add new arguments
9885 and support diamond shaped basic block form.
9886 (tree_ssa_phiopt_worker): Update call to match_simplify_replacement
9888 2023-04-24 Andrew Pinski <apinski@marvell.com>
9890 * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
9891 Instead of calling last_and_only_stmt, look for the last statement
9894 2023-04-24 Andrew Pinski <apinski@marvell.com>
9896 * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
9898 (match_simplify_replacement): Call
9899 empty_bb_or_one_feeding_into_p instead of doing it inline.
9901 2023-04-24 Andrew Pinski <apinski@marvell.com>
9903 PR tree-optimization/68894
9904 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove the
9905 continue for the do_hoist_loads diamond case.
9907 2023-04-24 Andrew Pinski <apinski@marvell.com>
9909 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Rearrange
9910 code for better code readability.
9912 2023-04-24 Andrew Pinski <apinski@marvell.com>
9914 PR tree-optimization/109604
9915 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Move the
9916 diamond form check from ...
9917 (minmax_replacement): Here.
9919 2023-04-24 Patrick Palka <ppalka@redhat.com>
9921 * tree.cc (strip_array_types): Don't define here.
9922 (is_typedef_decl): Don't define here.
9923 (typedef_variant_p): Don't define here.
9924 * tree.h (strip_array_types): Define here.
9925 (is_typedef_decl): Define here.
9926 (typedef_variant_p): Define here.
9928 2023-04-24 Frederik Harwath <frederik@codesourcery.com>
9930 * doc/generic.texi (OpenMP): Add != to allowed
9931 conditions and state that vars can be unsigned.
9932 * tree.def (OMP_FOR): Likewise.
9934 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
9936 * config/aarch64/aarch64-simd.md (mulv2di3): New expander.
9938 2023-04-24 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
9940 * doc/install.texi: Consistently use Solaris rather than Solaris 2.
9941 Remove explicit Solaris 11 references.
9943 (Options specification, --with-gnu-as): as and gas always differ
9945 Remove /usr/ccs/bin reference.
9946 (Installing GCC: Binaries, Solaris (SPARC, Intel)): Remove.
9947 (i?86-*-solaris2*): Merge assembler, linker recommendations ...
9948 (*-*-solaris2*): ... here.
9949 Update bundled GCC versions.
9950 Don't refer to pre-built binaries.
9951 Remove /bin/sh warning.
9952 Update assembler, linker recommendations.
9953 Document GNAT bootstrap compiler.
9954 (sparc-sun-solaris2*): Remove non-UltraSPARC reference.
9955 (sparc64-*-solaris2*): Move content...
9956 (sparcv9-*-solaris2*): ...here.
9957 Add GDC for 64-bit bootstrap compilers.
9959 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
9962 * config/aarch64/aarch64-sve.md (<optab><mode>3): Handle TARGET_SVE2 MUL
9964 * config/aarch64/aarch64-sve2.md (*aarch64_mul_unpredicated_<mode>): New
9967 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
9969 * config/aarch64/aarch64-simd.md (aarch64_<sur>abal2<mode>): Rename to...
9970 (aarch64_<su>abal2<mode>_insn): ... This. Use RTL codes instead of unspec.
9971 (aarch64_<su>abal2<mode>): New define_expand.
9972 * config/aarch64/aarch64.cc (aarch64_abd_rtx_p): New function.
9973 (aarch64_rtx_costs): Handle ABD rtxes.
9974 * config/aarch64/aarch64.md (UNSPEC_SABAL2, UNSPEC_UABAL2): Delete.
9975 * config/aarch64/iterators.md (ABAL2): Delete.
9976 (sur): Remove handling of UNSPEC_UABAL2 and UNSPEC_SABAL2.
9978 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
9980 * config/aarch64/aarch64-simd.md (aarch64_<sur>abal<mode>): Rename to...
9981 (aarch64_<su>abal<mode>): ... This. Use RTL codes instead of unspec.
9982 (<sur>sadv16qi): Rename to...
9983 (<su>sadv16qi): ... This. Adjust for the above.
9984 * config/aarch64/aarch64-sve.md (<sur>sad<vsi2qi>): Rename to...
9985 (<su>sad<vsi2qi>): ... This. Adjust for the above.
9986 * config/aarch64/aarch64.md (UNSPEC_SABAL, UNSPEC_UABAL): Delete.
9987 * config/aarch64/iterators.md (ABAL): Delete.
9988 (sur): Remove handling of UNSPEC_SABAL and UNSPEC_UABAL.
9990 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
9992 * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl2<mode>): Rename to...
9993 (aarch64_<su>abdl2<mode>_insn): ... This. Use RTL codes instead of unspec.
9994 (aarch64_<su>abdl2<mode>): New define_expand.
9995 * config/aarch64/aarch64.md (UNSPEC_SABDL2, UNSPEC_UABDL2): Delete.
9996 * config/aarch64/iterators.md (ABDL2): Delete.
9997 (sur): Remove handling of UNSPEC_SABDL2 and UNSPEC_UABDL2.
9999 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10001 * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl<mode>): Rename to...
10002 (aarch64_<su>abdl<mode>): ... This. Use standard RTL ops instead of
10004 * config/aarch64/aarch64.md (UNSPEC_SABDL, UNSPEC_UABDL): Delete.
10005 * config/aarch64/iterators.md (ABDL): Delete.
10006 (sur): Remove handling of UNSPEC_SABDL and UNSPEC_UABDL.
10008 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10010 * config/aarch64/aarch64-simd.md
10011 (*aarch64_<su>addlv<VDQV_L:mode>_ze<GPI:mode>): New pattern.
10013 2023-04-24 Richard Biener <rguenther@suse.de>
10015 * gimple-ssa-split-paths.cc (is_feasible_trace): Avoid
10017 * graphite-scop-detection.cc (single_pred_cond_non_loop_exit):
10019 * ipa-fnsummary.cc (set_cond_stmt_execution_predicate): Likewise.
10020 (set_switch_stmt_execution_predicate): Likewise.
10021 (phi_result_unknown_predicate): Likewise.
10022 * ipa-prop.cc (compute_complex_ancestor_jump_func): Likewise.
10023 (ipa_analyze_indirect_call_uses): Likewise.
10024 * predict.cc (predict_iv_comparison): Likewise.
10025 (predict_extra_loop_exits): Likewise.
10026 (predict_loops): Likewise.
10027 (tree_predict_by_opcode): Likewise.
10028 * gimple-predicate-analysis.cc (predicate::init_from_control_deps):
10030 * gimple-pretty-print.cc (dump_implicit_edges): Likewise.
10031 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Likewise.
10032 (replace_phi_edge_with_variable): Likewise.
10033 (two_value_replacement): Likewise.
10034 (value_replacement): Likewise.
10035 (minmax_replacement): Likewise.
10036 (spaceship_replacement): Likewise.
10037 (cond_removal_in_builtin_zero_pattern): Likewise.
10038 * tree-ssa-reassoc.cc (maybe_optimize_range_tests): Likewise.
10039 * tree-ssa-sccvn.cc (vn_phi_eq): Likewise.
10040 (vn_phi_lookup): Likewise.
10041 (vn_phi_insert): Likewise.
10042 * tree-ssa-structalias.cc (compute_points_to_sets): Likewise.
10043 * tree-ssa-threadbackward.cc (back_threader::maybe_thread_block):
10045 (back_threader_profitability::possibly_profitable_path_p):
10047 * tree-ssa-threadedge.cc (jump_threader::thread_outgoing_edges):
10049 * tree-switch-conversion.cc (pass_convert_switch::execute):
10051 (pass_lower_switch<O0>::execute): Likewise.
10052 * tree-tailcall.cc (tree_optimize_tail_calls_1): Likewise.
10053 * tree-vect-loop-manip.cc (vect_loop_versioning): Likewise.
10054 * tree-vect-slp.cc (vect_slp_function): Likewise.
10055 * tree-vect-stmts.cc (cfun_returns): Likewise.
10056 * tree-vectorizer.cc (vect_loop_vectorized_call): Likewise.
10057 (vect_loop_dist_alias_call): Likewise.
10059 2023-04-24 Richard Biener <rguenther@suse.de>
10061 * cfgcleanup.cc (outgoing_edges_match): Use FORWARDER_BLOCK_P.
10063 2023-04-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
10065 * config/riscv/riscv-vsetvl.cc
10066 (vector_infos_manager::all_avail_in_compatible_p): New function.
10067 (pass_vsetvl::refine_vsetvls): Optimize vsetvls.
10068 * config/riscv/riscv-vsetvl.h: New function.
10070 2023-04-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
10072 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::pre_vsetvl): Add function
10073 comment for cleanup_insns.
10075 2023-04-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
10077 * config/riscv/vector-iterators.md: New unspec to refine fault first load pattern.
10078 * config/riscv/vector.md: Refine fault first load pattern to erase avl from instructions
10079 with the fault first load property.
10081 2023-04-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10083 * config/aarch64/aarch64-simd.md (aarch64_float_truncate_lo_): Rename to...
10084 (aarch64_float_truncate_lo_<mode><vczle><vczbe>): ... This.
10086 2023-04-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10089 * config/aarch64/aarch64-simd.md (aarch64_addp<mode>): Rename to...
10090 (aarch64_addp<mode><vczle><vczbe>): ... This.
10092 2023-04-23 Roger Sayle <roger@nextmovesoftware.com>
10094 * config/stormy16/stormy16.cc (xstormy16_rtx_costs): Rewrite to
10095 provide reasonable values for common arithmetic operations and
10096 immediate operands (in several machine modes).
10098 2023-04-23 Roger Sayle <roger@nextmovesoftware.com>
10100 * config/stormy16/stormy16.cc (xstormy16_print_operand): Add %h
10101 format specifier to output high_part register name of SImode reg.
10102 * config/stormy16/stormy16.md (extendhisi2): New define_insn.
10103 (zero_extendqihi2): Fix lengths, consistent formatting and add
10104 "and Rx,#255" alternative, for documentation purposes.
10105 (zero_extendhisi2): New define_insn.
10107 2023-04-23 Roger Sayle <roger@nextmovesoftware.com>
10109 * config/stormy16/stormy16.cc (xstormy16_output_shift): Implement
10110 SImode shifts by two by performing a single bit SImode shift twice.
10112 2023-04-23 Aldy Hernandez <aldyh@redhat.com>
10114 PR tree-optimization/109593
10115 * value-range.cc (frange::operator==): Handle NANs.
10117 2023-04-23 liuhongt <hongtao.liu@intel.com>
10119 PR rtl-optimization/108707
10120 * ira-costs.cc (scan_one_insn): Use NO_REGS instead of
10121 GENERAL_REGS when preferred reg_class is not known.
10123 2023-04-22 Andrew Pinski <apinski@marvell.com>
10125 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker):
10126 Change the code around slightly to move diamond
10127 handling for do_store_elim/do_hoist_loads out of
10130 2023-04-22 Andrew Pinski <apinski@marvell.com>
10132 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker):
10133 Remove check on empty_block_p.
10135 2023-04-22 Jakub Jelinek <jakub@redhat.com>
10137 PR bootstrap/109589
10138 * system.h (class auto_mpz): Workaround PR62101 bug in GCC 4.8 and 4.9.
10139 * realmpfr.h (class auto_mpfr): Likewise.
10141 2023-04-22 Jakub Jelinek <jakub@redhat.com>
10143 PR tree-optimization/109583
10144 * match.pd (fneg/fadd simplify): Don't call related_vector_mode
10145 if vec_mode is not VECTOR_MODE_P.
10147 2023-04-22 Jan Hubicka <hubicka@ucw.cz>
10148 Ondrej Kubanek <kubanek0ondrej@gmail.com>
10150 * cfgloopmanip.h (adjust_loop_info_after_peeling): Declare.
10151 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Fix updating of
10152 loop profile and bounds after header duplication.
10153 * tree-ssa-loop-ivcanon.cc (adjust_loop_info_after_peeling):
10154 Break out from try_peel_loop; fix handling of 0 iterations.
10155 (try_peel_loop): Use adjust_loop_info_after_peeling.
10157 2023-04-21 Andrew MacLeod <amacleod@redhat.com>
10159 PR tree-optimization/109546
10160 * tree-vrp.cc (remove_unreachable::remove_and_update_globals): Do
10161 not fold conditions with ADDR_EXPR early.
10163 2023-04-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10165 * config/aarch64/aarch64.md (aarch64_umax<mode>3_insn): Delete.
10166 (umax<mode>3): Emit raw UMAX RTL instead of going through gen_ function
10168 (<optab><mode>3): New define_expand for MAXMIN_NOUMAX codes.
10169 (*aarch64_<optab><mode>3_zero): Define.
10170 (*aarch64_<optab><mode>3_cssc): Likewise.
10171 * config/aarch64/iterators.md (maxminand): New code attribute.
10173 2023-04-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10176 * config/aarch64/aarch64-opts.h (enum aarch64_tp_reg): Define.
10177 * config/aarch64/aarch64-protos.h (aarch64_output_load_tp):
10179 * config/aarch64/aarch64.cc (aarch64_tpidr_register): Declare.
10180 (aarch64_override_options_internal): Handle the above.
10181 (aarch64_output_load_tp): New function.
10182 * config/aarch64/aarch64.md (aarch64_load_tp_hard): Call
10183 aarch64_output_load_tp.
10184 * config/aarch64/aarch64.opt (aarch64_tp_reg): Define enum.
10185 (mtp=): New option.
10186 * doc/invoke.texi (AArch64 Options): Document -mtp=.
10188 2023-04-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10191 * config/aarch64/aarch64-simd.md (add_vec_concat_subst_le): Define.
10192 (add_vec_concat_subst_be): Likewise.
10195 (add<mode>3): Rename to...
10196 (add<mode>3<vczle><vczbe>): ... This.
10197 (sub<mode>3): Rename to...
10198 (sub<mode>3<vczle><vczbe>): ... This.
10199 (mul<mode>3): Rename to...
10200 (mul<mode>3<vczle><vczbe>): ... This.
10201 (and<mode>3): Rename to...
10202 (and<mode>3<vczle><vczbe>): ... This.
10203 (ior<mode>3): Rename to...
10204 (ior<mode>3<vczle><vczbe>): ... This.
10205 (xor<mode>3): Rename to...
10206 (xor<mode>3<vczle><vczbe>): ... This.
10207 * config/aarch64/iterators.md (VDZ): Define.
10209 2023-04-21 Patrick Palka <ppalka@redhat.com>
10211 * tree.cc (walk_tree_1): Avoid repeatedly dereferencing tp
10214 2023-04-21 Jan Hubicka <jh@suse.cz>
10216 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Fix previous
10219 2023-04-21 Vineet Gupta <vineetg@rivosinc.com>
10221 * expmed.h (x_shift*_cost): convert to int [speed][mode][shift].
10222 (shift*_cost_ptr ()): Access x_shift*_cost array directly.
10224 2023-04-21 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
10226 * config/aarch64/aarch64.cc (aarch64_simd_dup_constant): Use
10227 force_reg instead of copy_to_mode_reg.
10228 (aarch64_expand_vector_init): Likewise.
10230 2023-04-21 Uroš Bizjak <ubizjak@gmail.com>
10232 * config/i386/i386.h (REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Remove.
10233 (REG_OK_FOR_INDEX_NONSTRICT_P, REG_OK_FOR_BASE_NONSTRICT_P): Ditto.
10234 (REG_OK_FOR_INDEX_STRICT_P, REG_OK_FOR_BASE_STRICT_P): Ditto.
10235 (FIRST_INDEX_REG, LAST_INDEX_REG): New defines.
10236 (LEGACY_INDEX_REG_P, LEGACY_INDEX_REGNO_P): New macros.
10237 (INDEX_REG_P, INDEX_REGNO_P): Ditto.
10238 (REGNO_OK_FOR_INDEX_P): Use INDEX_REGNO_P predicates.
10239 (REGNO_OK_FOR_INDEX_NONSTRICT_P): New macro.
10240 (EG_OK_FOR_BASE_NONSTRICT_P): Ditto.
10241 * config/i386/predicates.md (index_register_operand):
10242 Use REGNO_OK_FOR_INDEX_P and REGNO_OK_FOR_INDEX_NONSTRICT_P macros.
10243 * config/i386/i386.cc (ix86_legitimate_address_p): Use
10244 REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_BASE_NONSTRICT_P,
10245 REGNO_OK_FOR_INDEX_P and REGNO_OK_FOR_INDEX_NONSTRICT_P macros.
10247 2023-04-21 Jan Hubicka <hubicka@ucw.cz>
10248 Ondrej Kubanek <kubanek0ondrej@gmail.com>
10250 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Update loop header and
10253 2023-04-21 Richard Biener <rguenther@suse.de>
10255 * is-a.h (safe_is_a): New.
10257 2023-04-21 Richard Biener <rguenther@suse.de>
10259 * gimple-iterator.h (gimple_stmt_iterator::operator*): Add.
10260 (gphi_iterator::operator*): Likewise.
10262 2023-04-21 Jan Hubicka <hubicka@ucw.cz>
10263 Michal Jires <michal@jires.eu>
10265 * ipa-inline.cc (class inline_badness): New class.
10266 (edge_heap_t, edge_heap_node_t): Use inline_badness for badness instead
10268 (update_edge_key): Update.
10269 (lookup_recursive_calls): Likewise.
10270 (recursive_inlining): Likewise.
10271 (add_new_edges_to_heap): Likewise.
10272 (inline_small_functions): Likewise.
10274 2023-04-21 Jan Hubicka <hubicka@ucw.cz>
10276 * ipa-devirt.cc (odr_types_equivalent_p): Cleanup warned checks.
10278 2023-04-21 Richard Biener <rguenther@suse.de>
10280 PR tree-optimization/109573
10281 * tree-vect-loop.cc (vectorizable_live_operation): Allow
10282 unhandled SSA copy as well. Demote assert to checking only.
10284 2023-04-21 Richard Biener <rguenther@suse.de>
10286 * df-core.cc (df_analyze): Compute RPO on the reverse graph
10287 for DF_BACKWARD problems.
10288 (loop_post_order_compute): Rename to ...
10289 (loop_rev_post_order_compute): ... this, compute a RPO.
10290 (loop_inverted_post_order_compute): Rename to ...
10291 (loop_inverted_rev_post_order_compute): ... this, compute a RPO.
10292 (df_analyze_loop): Use RPO on the forward graph for DF_FORWARD
10293 problems, RPO on the inverted graph for DF_BACKWARD.
10295 2023-04-21 Richard Biener <rguenther@suse.de>
10297 * cfganal.h (inverted_rev_post_order_compute): Rename
10299 (inverted_post_order_compute): ... this. Add struct function
10300 argument, change allocation to a C array.
10301 * cfganal.cc (inverted_rev_post_order_compute): Likewise.
10302 * lcm.cc (compute_antinout_edge): Adjust.
10303 * lra-lives.cc (lra_create_live_ranges_1): Likewise.
10304 * tree-ssa-dce.cc (remove_dead_stmt): Likewise.
10305 * tree-ssa-pre.cc (compute_antic): Likewise.
10307 2023-04-21 Richard Biener <rguenther@suse.de>
10309 * df.h (df_d::postorder_inverted): Change back to int *,
10311 * df-core.cc (rest_of_handle_df_finish): Adjust.
10312 (df_analyze_1): Likewise.
10313 (df_analyze): For DF_FORWARD problems use RPO on the forward
10315 (loop_inverted_post_order_compute): Adjust API.
10316 (df_analyze_loop): Adjust.
10317 (df_get_n_blocks): Likewise.
10318 (df_get_postorder): Likewise.
10320 2023-04-21 Juzhe-Zhong <juzhe.zhong@rivai.ai>
10323 * config/riscv/riscv-vsetvl.cc
10324 (vector_infos_manager::all_empty_predecessor_p): New function.
10325 (pass_vsetvl::backward_demand_fusion): Ditto.
10326 * config/riscv/riscv-vsetvl.h: Ditto.
10328 2023-04-21 Robin Dapp <rdapp@ventanamicro.com>
10331 * config/riscv/generic.md: Change standard names to insn names.
10333 2023-04-21 Richard Biener <rguenther@suse.de>
10335 * lcm.cc (compute_antinout_edge): Use RPO on the inverted graph.
10336 (compute_laterin): Use RPO.
10337 (compute_available): Likewise.
10339 2023-04-21 Peng Fan <fanpeng@loongson.cn>
10341 * config/loongarch/gnu-user.h (MUSL_DYNAMIC_LINKER): Redefine.
10343 2023-04-21 Juzhe-Zhong <juzhe.zhong@rivai.ai>
10346 * config/riscv/riscv-vsetvl.cc (local_eliminate_vsetvl_insn): New function.
10347 (vector_insn_info::skip_avl_compatible_p): Ditto.
10348 (vector_insn_info::merge): Remove default value.
10349 (pass_vsetvl::compute_local_backward_infos): Ditto.
10350 (pass_vsetvl::cleanup_insns): Add local vsetvl elimination.
10351 * config/riscv/riscv-vsetvl.h: Ditto.
10353 2023-04-20 Alejandro Colomar <alx.manpages@gmail.com>
10355 * doc/extend.texi (Common Function Attributes): Remove duplicate
10358 2023-04-20 Andrew MacLeod <amacleod@redhat.com>
10360 PR tree-optimization/109564
10361 * gimple-range-fold.cc (fold_using_range::range_of_phi): Do no ignore
10362 UNDEFINED range names when deciding if all PHI arguments are the same,
10364 2023-04-20 Jakub Jelinek <jakub@redhat.com>
10366 PR tree-optimization/109011
10367 * tree-vect-patterns.cc (vect_recog_ctz_ffs_pattern): Use
10368 .CTZ (X) = .POPCOUNT ((X - 1) & ~X) in preference to
10369 .CTZ (X) = PREC - .POPCOUNT (X | -X).
10371 2023-04-20 Vladimir N. Makarov <vmakarov@redhat.com>
10373 * lra-constraints.cc (match_reload): Exclude some hard regs for
10374 multi-reg inout reload pseudos used in asm in different mode.
10376 2023-04-20 Uros Bizjak <ubizjak@gmail.com>
10378 * config/arm/arm.cc (thumb1_legitimate_address_p):
10379 Use VIRTUAL_REGISTER_P predicate.
10380 (arm_eliminable_register): Ditto.
10381 * config/avr/avr.md (push<mode>_1): Ditto.
10382 * config/bfin/predicates.md (register_no_elim_operand): Ditto.
10383 * config/h8300/predicates.md (register_no_sp_elim_operand): Ditto.
10384 * config/i386/predicates.md (register_no_elim_operand): Ditto.
10385 * config/iq2000/predicates.md (call_insn_operand): Ditto.
10386 * config/microblaze/microblaze.h (CALL_INSN_OP): Ditto.
10388 2023-04-20 Uros Bizjak <ubizjak@gmail.com>
10391 * config/i386/predicates.md (extract_operator): New predicate.
10392 * config/i386/i386.md (any_extract): Remove code iterator.
10393 (*cmpqi_ext<mode>_1_mem_rex64): Use extract_operator predicate.
10394 (*cmpqi_ext<mode>_1): Ditto.
10395 (*cmpqi_ext<mode>_2): Ditto.
10396 (*cmpqi_ext<mode>_3_mem_rex64): Ditto.
10397 (*cmpqi_ext<mode>_3): Ditto.
10398 (*cmpqi_ext<mode>_4): Ditto.
10399 (*extzvqi_mem_rex64): Ditto.
10401 (*insvqi_2): Ditto.
10402 (*extendqi<SWI24:mode>_ext_1): Ditto.
10403 (*addqi_ext<mode>_0): Ditto.
10404 (*addqi_ext<mode>_1): Ditto.
10405 (*addqi_ext<mode>_2): Ditto.
10406 (*subqi_ext<mode>_0): Ditto.
10407 (*subqi_ext<mode>_2): Ditto.
10408 (*testqi_ext<mode>_1): Ditto.
10409 (*testqi_ext<mode>_2): Ditto.
10410 (*andqi_ext<mode>_0): Ditto.
10411 (*andqi_ext<mode>_1): Ditto.
10412 (*andqi_ext<mode>_1_cc): Ditto.
10413 (*andqi_ext<mode>_2): Ditto.
10414 (*<any_or:code>qi_ext<mode>_0): Ditto.
10415 (*<any_or:code>qi_ext<mode>_1): Ditto.
10416 (*<any_or:code>qi_ext<mode>_2): Ditto.
10417 (*xorqi_ext<mode>_1_cc): Ditto.
10418 (*negqi_ext<mode>_2): Ditto.
10419 (*ashlqi_ext<mode>_2): Ditto.
10420 (*<any_shiftrt:insn>qi_ext<mode>_2): Ditto.
10422 2023-04-20 Raphael Zinsly <rzinsly@ventanamicro.com>
10425 * config/riscv/bitmanip.md (clz, ctz, pcnt, min, max patterns): Use
10426 <bitmanip_insn> as the type to allow for fine grained control of
10427 scheduling these insns.
10428 * config/riscv/generic.md (generic_alu): Add bitmanip, clz, ctz, pcnt,
10430 * config/riscv/riscv.md (type attribute): Add types for clz, ctz,
10431 pcnt, signed and unsigned min/max.
10433 2023-04-20 Juzhe-Zhong <juzhe.zhong@rivai.ai>
10434 kito-cheng <kito.cheng@sifive.com>
10436 * config/riscv/riscv.h (enum reg_class): Fix RVV register order.
10438 2023-04-20 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
10439 kito-cheng <kito.cheng@sifive.com>
10442 * config/riscv/riscv-vsetvl.cc (count_regno_occurrences): New function.
10443 (pass_vsetvl::cleanup_insns): Fix bug.
10445 2023-04-20 Andrew Stubbs <ams@codesourcery.com>
10447 * config/gcn/gcn-valu.md (vnsi, VnSI): Add scalar modes.
10448 (ldexp<mode>3): Delete.
10449 (ldexp<mode>3<exec>): Change "B" to "A".
10451 2023-04-20 Jakub Jelinek <jakub@redhat.com>
10452 Jonathan Wakely <jwakely@redhat.com>
10454 * tree.h (built_in_function_equal_p): New helper function.
10455 (fndecl_built_in_p): Turn into variadic template to support
10456 1 or more built_in_function arguments.
10457 * builtins.cc (fold_builtin_expect): Use 3 argument fndecl_built_in_p.
10458 * gimplify.cc (goa_stabilize_expr): Likewise.
10459 * cgraphclones.cc (cgraph_node::create_clone): Likewise.
10460 * ipa-fnsummary.cc (compute_fn_summary): Likewise.
10461 * omp-low.cc (setjmp_or_longjmp_p): Likewise.
10462 * cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee,
10463 cgraph_update_edges_for_call_stmt_node,
10464 cgraph_edge::verify_corresponds_to_fndecl,
10465 cgraph_node::verify_node): Likewise.
10466 * tree-stdarg.cc (optimize_va_list_gpr_fpr_size): Likewise.
10467 * gimple-ssa-warn-access.cc (matching_alloc_calls_p): Likewise.
10468 * ipa-prop.cc (try_make_edge_direct_virtual_call): Likewise.
10470 2023-04-20 Jakub Jelinek <jakub@redhat.com>
10472 PR tree-optimization/109011
10473 * tree-vect-patterns.cc (vect_recog_ctz_ffs_pattern): New function.
10474 (vect_recog_popcount_clz_ctz_ffs_pattern): Move vect_pattern_detected
10475 call later. Don't punt for IFN_CTZ or IFN_FFS if it doesn't have
10476 direct optab support, but has instead IFN_CLZ, IFN_POPCOUNT or
10477 for IFN_FFS IFN_CTZ support, use vect_recog_ctz_ffs_pattern for that
10479 (vect_vect_recog_func_ptrs): Add ctz_ffs entry.
10481 2023-04-20 Richard Biener <rguenther@suse.de>
10483 * df-core.cc (rest_of_handle_df_initialize): Remove
10484 computation of df->postorder, df->postorder_inverted and
10487 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
10489 * common/config/i386/i386-common.cc
10490 (OPTION_MASK_ISA2_AVX_UNSET): Add OPTION_MASK_ISA2_VAES_UNSET.
10491 (ix86_handle_option): Set AVX flag for VAES.
10492 * config/i386/i386-builtins.cc (ix86_init_mmx_sse_builtins):
10493 Add OPTION_MASK_ISA2_VAES_UNSET.
10494 (def_builtin): Share builtin between AES and VAES.
10495 * config/i386/i386-expand.cc (ix86_check_builtin_isa_match):
10497 * config/i386/i386.md (aes): New isa attribute.
10498 * config/i386/sse.md (aesenc): Add pattern for VAES with xmm.
10499 (aesenclast): Ditto.
10501 (aesdeclast): Ditto.
10502 * config/i386/vaesintrin.h: Remove redundant avx target push.
10503 * config/i386/wmmintrin.h (_mm_aesdec_si128): Change to macro.
10504 (_mm_aesdeclast_si128): Ditto.
10505 (_mm_aesenc_si128): Ditto.
10506 (_mm_aesenclast_si128): Ditto.
10508 2023-04-20 Hu, Lin1 <lin1.hu@intel.com>
10510 * config/i386/avx2intrin.h
10511 (_MM_REDUCE_OPERATOR_BASIC_EPI16): New macro.
10512 (_MM_REDUCE_OPERATOR_MAX_MIN_EP16): Ditto.
10513 (_MM256_REDUCE_OPERATOR_BASIC_EPI16): Ditto.
10514 (_MM256_REDUCE_OPERATOR_MAX_MIN_EP16): Ditto.
10515 (_MM_REDUCE_OPERATOR_BASIC_EPI8): Ditto.
10516 (_MM_REDUCE_OPERATOR_MAX_MIN_EP8): Ditto.
10517 (_MM256_REDUCE_OPERATOR_BASIC_EPI8): Ditto.
10518 (_MM256_REDUCE_OPERATOR_MAX_MIN_EP8): Ditto.
10519 (_mm_reduce_add_epi16): New instrinsics.
10520 (_mm_reduce_mul_epi16): Ditto.
10521 (_mm_reduce_and_epi16): Ditto.
10522 (_mm_reduce_or_epi16): Ditto.
10523 (_mm_reduce_max_epi16): Ditto.
10524 (_mm_reduce_max_epu16): Ditto.
10525 (_mm_reduce_min_epi16): Ditto.
10526 (_mm_reduce_min_epu16): Ditto.
10527 (_mm256_reduce_add_epi16): Ditto.
10528 (_mm256_reduce_mul_epi16): Ditto.
10529 (_mm256_reduce_and_epi16): Ditto.
10530 (_mm256_reduce_or_epi16): Ditto.
10531 (_mm256_reduce_max_epi16): Ditto.
10532 (_mm256_reduce_max_epu16): Ditto.
10533 (_mm256_reduce_min_epi16): Ditto.
10534 (_mm256_reduce_min_epu16): Ditto.
10535 (_mm_reduce_add_epi8): Ditto.
10536 (_mm_reduce_mul_epi8): Ditto.
10537 (_mm_reduce_and_epi8): Ditto.
10538 (_mm_reduce_or_epi8): Ditto.
10539 (_mm_reduce_max_epi8): Ditto.
10540 (_mm_reduce_max_epu8): Ditto.
10541 (_mm_reduce_min_epi8): Ditto.
10542 (_mm_reduce_min_epu8): Ditto.
10543 (_mm256_reduce_add_epi8): Ditto.
10544 (_mm256_reduce_mul_epi8): Ditto.
10545 (_mm256_reduce_and_epi8): Ditto.
10546 (_mm256_reduce_or_epi8): Ditto.
10547 (_mm256_reduce_max_epi8): Ditto.
10548 (_mm256_reduce_max_epu8): Ditto.
10549 (_mm256_reduce_min_epi8): Ditto.
10550 (_mm256_reduce_min_epu8): Ditto.
10551 * config/i386/avx512vlbwintrin.h:
10552 (_mm_mask_reduce_add_epi16): Ditto.
10553 (_mm_mask_reduce_mul_epi16): Ditto.
10554 (_mm_mask_reduce_and_epi16): Ditto.
10555 (_mm_mask_reduce_or_epi16): Ditto.
10556 (_mm_mask_reduce_max_epi16): Ditto.
10557 (_mm_mask_reduce_max_epu16): Ditto.
10558 (_mm_mask_reduce_min_epi16): Ditto.
10559 (_mm_mask_reduce_min_epu16): Ditto.
10560 (_mm256_mask_reduce_add_epi16): Ditto.
10561 (_mm256_mask_reduce_mul_epi16): Ditto.
10562 (_mm256_mask_reduce_and_epi16): Ditto.
10563 (_mm256_mask_reduce_or_epi16): Ditto.
10564 (_mm256_mask_reduce_max_epi16): Ditto.
10565 (_mm256_mask_reduce_max_epu16): Ditto.
10566 (_mm256_mask_reduce_min_epi16): Ditto.
10567 (_mm256_mask_reduce_min_epu16): Ditto.
10568 (_mm_mask_reduce_add_epi8): Ditto.
10569 (_mm_mask_reduce_mul_epi8): Ditto.
10570 (_mm_mask_reduce_and_epi8): Ditto.
10571 (_mm_mask_reduce_or_epi8): Ditto.
10572 (_mm_mask_reduce_max_epi8): Ditto.
10573 (_mm_mask_reduce_max_epu8): Ditto.
10574 (_mm_mask_reduce_min_epi8): Ditto.
10575 (_mm_mask_reduce_min_epu8): Ditto.
10576 (_mm256_mask_reduce_add_epi8): Ditto.
10577 (_mm256_mask_reduce_mul_epi8): Ditto.
10578 (_mm256_mask_reduce_and_epi8): Ditto.
10579 (_mm256_mask_reduce_or_epi8): Ditto.
10580 (_mm256_mask_reduce_max_epi8): Ditto.
10581 (_mm256_mask_reduce_max_epu8): Ditto.
10582 (_mm256_mask_reduce_min_epi8): Ditto.
10583 (_mm256_mask_reduce_min_epu8): Ditto.
10585 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
10587 * common/config/i386/i386-common.cc
10588 (OPTION_MASK_ISA_VPCLMULQDQ_SET):
10589 Add OPTION_MASK_ISA_PCLMUL_SET and OPTION_MASK_ISA_AVX_SET.
10590 (OPTION_MASK_ISA_AVX_UNSET):
10591 Add OPTION_MASK_ISA_VPCLMULQDQ_UNSET.
10592 (OPTION_MASK_ISA_PCLMUL_UNSET): Ditto.
10593 * config/i386/i386.md (vpclmulqdqvl): New.
10594 * config/i386/sse.md (pclmulqdq): Add evex encoding.
10595 * config/i386/vpclmulqdqintrin.h: Remove redudant avx target
10598 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
10600 * config/i386/avx512vlbwintrin.h
10601 (_mm_mask_blend_epi16): Remove __OPTIMIZE__ wrapper.
10602 (_mm_mask_blend_epi8): Ditto.
10603 (_mm256_mask_blend_epi16): Ditto.
10604 (_mm256_mask_blend_epi8): Ditto.
10605 * config/i386/avx512vlintrin.h
10606 (_mm256_mask_blend_pd): Ditto.
10607 (_mm256_mask_blend_ps): Ditto.
10608 (_mm256_mask_blend_epi64): Ditto.
10609 (_mm256_mask_blend_epi32): Ditto.
10610 (_mm_mask_blend_pd): Ditto.
10611 (_mm_mask_blend_ps): Ditto.
10612 (_mm_mask_blend_epi64): Ditto.
10613 (_mm_mask_blend_epi32): Ditto.
10614 * config/i386/sse.md (VF_AVX512BWHFBF16): Removed.
10615 (VF_AVX512HFBFVL): Move it before the first usage.
10616 (<avx512>_blendm<mode>): Change iterator from VF_AVX512BWHFBF16
10617 to VF_AVX512HFBFVL.
10619 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
10621 * common/config/i386/i386-common.cc
10622 (OPTION_MASK_ISA_AVX512VBMI2_SET): Change OPTION_MASK_ISA_AVX512F_SET
10623 to OPTION_MASK_ISA_AVX512BW_SET.
10624 (OPTION_MASK_ISA_AVX512F_UNSET):
10625 Remove OPTION_MASK_ISA_AVX512VBMI2_UNSET.
10626 (OPTION_MASK_ISA_AVX512BW_UNSET):
10627 Add OPTION_MASK_ISA_AVX512VBMI2_UNSET.
10628 * config/i386/avx512vbmi2intrin.h: Do not push avx512bw.
10629 * config/i386/avx512vbmi2vlintrin.h: Ditto.
10630 * config/i386/i386-builtin.def: Remove OPTION_MASK_ISA_AVX512BW.
10631 * config/i386/sse.md (VI12_AVX512VLBW): Removed.
10632 (VI12_VI48F_AVX512VLBW): Rename to VI12_VI48F_AVX512VL.
10633 (compress<mode>_mask): Change iterator from VI12_AVX512VLBW to
10635 (compressstore<mode>_mask): Ditto.
10636 (expand<mode>_mask): Ditto.
10637 (expand<mode>_maskz): Ditto.
10638 (*expand<mode>_mask): Change iterator from VI12_VI48F_AVX512VLBW to
10639 VI12_VI48F_AVX512VL.
10641 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
10643 * common/config/i386/i386-common.cc
10644 (OPTION_MASK_ISA_AVX512BITALG_SET):
10645 Change OPTION_MASK_ISA_AVX512F_SET
10646 to OPTION_MASK_ISA_AVX512BW_SET.
10647 (OPTION_MASK_ISA_AVX512F_UNSET):
10648 Remove OPTION_MASK_ISA_AVX512BITALG_SET.
10649 (OPTION_MASK_ISA_AVX512BW_UNSET):
10650 Add OPTION_MASK_ISA_AVX512BITALG_SET.
10651 * config/i386/avx512bitalgintrin.h: Do not push avx512bw.
10652 * config/i386/i386-builtin.def:
10653 Remove redundant OPTION_MASK_ISA_AVX512BW.
10654 * config/i386/sse.md (VI1_AVX512VLBW): Removed.
10655 (avx512vl_vpshufbitqmb<mode><mask_scalar_merge_name>):
10656 Change the iterator from VI1_AVX512VLBW to VI1_AVX512VL.
10658 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
10660 * config/i386/i386-expand.cc
10661 (ix86_check_builtin_isa_match): Correct wrong comments.
10662 Add a new macro SHARE_BUILTIN and refactor the current if
10665 2023-04-20 Mo, Zewei <zewei.mo@intel.com>
10667 * config/i386/cpuid.h: Open a new section for Extended Features
10668 Leaf (%eax == 7, %ecx == 0) and Extended Features Sub-leaf (%eax == 7,
10671 2023-04-20 Hu, Lin1 <lin1.hu@intel.com>
10673 * config/i386/sse.md: Modify insn vperm{i,f}
10676 2023-04-19 Max Filippov <jcmvbkbc@gmail.com>
10678 * config/xtensa/xtensa-opts.h: New header.
10679 * config/xtensa/xtensa.h (STRICT_ALIGNMENT): Redefine as
10680 xtensa_strict_align.
10681 * config/xtensa/xtensa.cc (xtensa_option_override): When
10682 -m[no-]strict-align is not specified in the command line set
10683 xtensa_strict_align to 0 if the hardware supports both unaligned
10684 loads and stores or to 1 otherwise.
10685 * config/xtensa/xtensa.opt (mstrict-align): New option.
10686 * doc/invoke.texi (Xtensa Options): Document -m[no-]strict-align.
10688 2023-04-19 Max Filippov <jcmvbkbc@gmail.com>
10690 * config/xtensa/xtensa-dynconfig.cc (xtensa_get_config_v4): New
10693 2023-04-19 Andrew Pinski <apinski@marvell.com>
10695 * config/i386/i386.md (*movsicc_noc_zext_1): New pattern.
10697 2023-04-19 Juzhe-Zhong <juzhe.zhong@rivai.ai>
10699 * config/riscv/riscv-modes.def (FLOAT_MODE): Add chunk 128 support.
10700 (VECTOR_BOOL_MODE): Ditto.
10701 (ADJUST_NUNITS): Ditto.
10702 (ADJUST_ALIGNMENT): Ditto.
10703 (ADJUST_BYTESIZE): Ditto.
10704 (ADJUST_PRECISION): Ditto.
10705 (RVV_MODES): Ditto.
10706 (VECTOR_MODE_WITH_PREFIX): Ditto.
10707 * config/riscv/riscv-v.cc (ENTRY): Ditto.
10708 (get_vlmul): Ditto.
10709 (get_ratio): Ditto.
10710 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TYPE): Ditto.
10711 * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE): Ditto.
10712 (vbool64_t): Ditto.
10713 (vbool32_t): Ditto.
10714 (vbool16_t): Ditto.
10719 (vint8mf8_t): Ditto.
10720 (vuint8mf8_t): Ditto.
10721 (vint8mf4_t): Ditto.
10722 (vuint8mf4_t): Ditto.
10723 (vint8mf2_t): Ditto.
10724 (vuint8mf2_t): Ditto.
10725 (vint8m1_t): Ditto.
10726 (vuint8m1_t): Ditto.
10727 (vint8m2_t): Ditto.
10728 (vuint8m2_t): Ditto.
10729 (vint8m4_t): Ditto.
10730 (vuint8m4_t): Ditto.
10731 (vint8m8_t): Ditto.
10732 (vuint8m8_t): Ditto.
10733 (vint16mf4_t): Ditto.
10734 (vuint16mf4_t): Ditto.
10735 (vint16mf2_t): Ditto.
10736 (vuint16mf2_t): Ditto.
10737 (vint16m1_t): Ditto.
10738 (vuint16m1_t): Ditto.
10739 (vint16m2_t): Ditto.
10740 (vuint16m2_t): Ditto.
10741 (vint16m4_t): Ditto.
10742 (vuint16m4_t): Ditto.
10743 (vint16m8_t): Ditto.
10744 (vuint16m8_t): Ditto.
10745 (vint32mf2_t): Ditto.
10746 (vuint32mf2_t): Ditto.
10747 (vint32m1_t): Ditto.
10748 (vuint32m1_t): Ditto.
10749 (vint32m2_t): Ditto.
10750 (vuint32m2_t): Ditto.
10751 (vint32m4_t): Ditto.
10752 (vuint32m4_t): Ditto.
10753 (vint32m8_t): Ditto.
10754 (vuint32m8_t): Ditto.
10755 (vint64m1_t): Ditto.
10756 (vuint64m1_t): Ditto.
10757 (vint64m2_t): Ditto.
10758 (vuint64m2_t): Ditto.
10759 (vint64m4_t): Ditto.
10760 (vuint64m4_t): Ditto.
10761 (vint64m8_t): Ditto.
10762 (vuint64m8_t): Ditto.
10763 (vfloat32mf2_t): Ditto.
10764 (vfloat32m1_t): Ditto.
10765 (vfloat32m2_t): Ditto.
10766 (vfloat32m4_t): Ditto.
10767 (vfloat32m8_t): Ditto.
10768 (vfloat64m1_t): Ditto.
10769 (vfloat64m2_t): Ditto.
10770 (vfloat64m4_t): Ditto.
10771 (vfloat64m8_t): Ditto.
10772 * config/riscv/riscv-vector-switch.def (ENTRY): Ditto.
10773 * config/riscv/riscv.cc (riscv_legitimize_poly_move): Ditto.
10774 (riscv_convert_vector_bits): Ditto.
10775 * config/riscv/riscv.md:
10776 * config/riscv/vector-iterators.md:
10777 * config/riscv/vector.md
10778 (@pred_indexed_<order>store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
10779 (@pred_indexed_<order>store<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
10780 (@pred_indexed_<order>store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
10781 (@pred_indexed_<order>store<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
10782 (@pred_indexed_<order>store<VNX128_Q:mode><VNX128_Q:mode>): Ditto.
10783 (@pred_reduc_<reduc><mode><vlmul1_zve64>): Ditto.
10784 (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve64>): Ditto.
10785 (@pred_reduc_plus<order><mode><vlmul1_zve64>): Ditto.
10786 (@pred_widen_reduc_plus<order><mode><vwlmul1_zve64>): Ditto.
10788 2023-04-19 Pan Li <pan2.li@intel.com>
10790 * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
10791 Align IOR (A | (~A) -> -1) optimization MODE_CLASS condition to AND.
10793 2023-04-19 Uros Bizjak <ubizjak@gmail.com>
10797 * config/i386/i386.md (*cmpqi_ext<mode>_1_mem_rex64): New insn pattern.
10798 (*cmpqi_ext<mode>_1): Use nonimmediate_operand predicate
10799 for operand 0. Use any_extract code iterator.
10800 (*cmpqi_ext<mode>_1 peephole2): New peephole2 pattern.
10801 (*cmpqi_ext<mode>_2): Use any_extract code iterator.
10802 (*cmpqi_ext<mode>_3_mem_rex64): New insn pattern.
10803 (*cmpqi_ext<mode>_1): Use general_operand predicate
10804 for operand 1. Use any_extract code iterator.
10805 (*cmpqi_ext<mode>_3 peephole2): New peephole2 pattern.
10806 (*cmpqi_ext<mode>_4): Use any_extract code iterator.
10808 2023-04-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10810 * config/aarch64/aarch64-simd.md (aarch64_saddw2<mode>): Delete.
10811 (aarch64_uaddw2<mode>): Delete.
10812 (aarch64_ssubw2<mode>): Delete.
10813 (aarch64_usubw2<mode>): Delete.
10814 (aarch64_<ANY_EXTEND:su><ADDSUB:optab>w2<mode>): New define_expand.
10816 2023-04-19 Richard Biener <rguenther@suse.de>
10818 * tree-ssa-structalias.cc (do_ds_constraint): Use
10819 solve_add_graph_edge.
10821 2023-04-19 Richard Biener <rguenther@suse.de>
10823 * tree-ssa-structalias.cc (solve_add_graph_edge): New function,
10825 (do_sd_constraint): ... here.
10827 2023-04-19 Richard Biener <rguenther@suse.de>
10829 * tree-cfg.cc (gimple_can_merge_blocks_p): Remove condition
10830 rejecting the merge when A contains only a non-local label.
10832 2023-04-19 Uros Bizjak <ubizjak@gmail.com>
10834 * rtl.h (VIRTUAL_REGISTER_P): New predicate.
10835 (VIRTUAL_REGISTER_NUM_P): Ditto.
10836 (REGNO_PTR_FRAME_P): Use VIRTUAL_REGISTER_NUM_P predicate.
10837 * expr.cc (force_operand): Use VIRTUAL_REGISTER_P predicate.
10838 * function.cc (instantiate_decl_rtl): Ditto.
10839 * rtlanal.cc (rtx_addr_can_trap_p_1): Ditto.
10840 (nonzero_address_p): Ditto.
10841 (refers_to_regno_p): Use VIRTUAL_REGISTER_NUM_P predicate.
10843 2023-04-19 Aldy Hernandez <aldyh@redhat.com>
10845 * value-range.h (Value_Range::Value_Range): Avoid pointer sharing.
10847 2023-04-19 Richard Biener <rguenther@suse.de>
10849 * system.h (auto_mpz::operator->()): New.
10850 * realmpfr.h (auto_mpfr::operator->()): New.
10851 * builtins.cc (do_mpfr_lgamma_r): Use auto_mpfr.
10852 * real.cc (real_from_string): Likewise.
10853 (dconst_e_ptr): Likewise.
10854 (dconst_sqrt2_ptr): Likewise.
10855 * tree-ssa-loop-niter.cc (refine_value_range_using_guard):
10857 (bound_difference_of_offsetted_base): Likewise.
10858 (number_of_iterations_ne): Likewise.
10859 (number_of_iterations_lt_to_ne): Likewise.
10860 * ubsan.cc: Include realmpfr.h.
10861 (ubsan_instrument_float_cast): Use auto_mpfr.
10863 2023-04-19 Richard Biener <rguenther@suse.de>
10865 * tree-ssa-structalias.cc (solve_graph): Remove self-copy
10866 edges, remove edges from escaped after special-casing them.
10868 2023-04-19 Richard Biener <rguenther@suse.de>
10870 * tree-ssa-structalias.cc (do_sd_constraint): Fixup escape
10873 2023-04-19 Richard Biener <rguenther@suse.de>
10875 * tree-ssa-structalias.cc (do_sd_constraint): Do not write
10876 to the LHS varinfo solution member.
10878 2023-04-19 Richard Biener <rguenther@suse.de>
10880 * tree-ssa-structalias.cc (topo_visit): Look at the real
10881 destination of edges.
10883 2023-04-19 Richard Biener <rguenther@suse.de>
10885 PR tree-optimization/44794
10886 * tree-ssa-loop-manip.cc (tree_transform_and_unroll_loop):
10887 If an epilogue loop is required set its iteration upper bound.
10889 2023-04-19 Xi Ruoyao <xry111@xry111.site>
10892 * config/loongarch/loongarch-protos.h
10893 (loongarch_expand_block_move): Add a parameter as alignment RTX.
10894 * config/loongarch/loongarch.h:
10895 (LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER): Remove.
10896 (LARCH_MAX_MOVE_BYTES_STRAIGHT): Remove.
10897 (LARCH_MAX_MOVE_OPS_PER_LOOP_ITER): Define.
10898 (LARCH_MAX_MOVE_OPS_STRAIGHT): Define.
10899 (MOVE_RATIO): Use LARCH_MAX_MOVE_OPS_PER_LOOP_ITER instead of
10900 LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER.
10901 * config/loongarch/loongarch.cc (loongarch_expand_block_move):
10902 Take the alignment from the parameter, but set it to
10903 UNITS_PER_WORD if !TARGET_STRICT_ALIGN. Limit the length of
10904 straight-line implementation with LARCH_MAX_MOVE_OPS_STRAIGHT
10905 instead of LARCH_MAX_MOVE_BYTES_STRAIGHT.
10906 (loongarch_block_move_straight): When there are left-over bytes,
10907 half the mode size instead of falling back to byte mode at once.
10908 (loongarch_block_move_loop): Limit the length of loop body with
10909 LARCH_MAX_MOVE_OPS_PER_LOOP_ITER instead of
10910 LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER.
10911 * config/loongarch/loongarch.md (cpymemsi): Pass the alignment
10912 to loongarch_expand_block_move.
10914 2023-04-19 Xi Ruoyao <xry111@xry111.site>
10916 * config/loongarch/loongarch.cc
10917 (loongarch_setup_incoming_varargs): Don't save more GARs than
10918 cfun->va_list_gpr_size / UNITS_PER_WORD.
10920 2023-04-19 Richard Biener <rguenther@suse.de>
10922 * tree-ssa-loop-manip.cc (determine_exit_conditions): Fix
10923 no epilogue condition.
10925 2023-04-19 Richard Biener <rguenther@suse.de>
10927 * gimple.h (gimple_assign_load): Outline...
10928 * gimple.cc (gimple_assign_load): ... here. Avoid
10929 get_base_address and instead just strip the outermost
10930 handled component, treating a remaining handled component
10933 2023-04-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10935 * config/aarch64/aarch64-simd-builtins.def (neg): Delete builtins
10937 * config/aarch64/arm_fp16.h (vnegh_f16): Reimplement using normal negation.
10939 2023-04-19 Jakub Jelinek <jakub@redhat.com>
10941 PR tree-optimization/109011
10942 * tree-vect-patterns.cc (vect_recog_popcount_pattern): Rename to ...
10943 (vect_recog_popcount_clz_ctz_ffs_pattern): ... this. Handle also
10944 CLZ, CTZ and FFS. Remove vargs variable, use
10945 gimple_build_call_internal rather than gimple_build_call_internal_vec.
10946 (vect_vect_recog_func_ptrs): Adjust popcount entry.
10948 2023-04-19 Jakub Jelinek <jakub@redhat.com>
10951 * dse.cc (replace_read): If read_reg is a SUBREG of a word mode
10952 REG, for WORD_REGISTER_OPERATIONS copy SUBREG_REG of it into
10953 a new REG rather than the SUBREG.
10955 2023-04-19 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
10957 * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set_zero<mode>):
10960 2023-04-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10963 * config/aarch64/aarch64.cc (aarch64_rtx_costs): Merge ASHIFT and
10964 ROTATE, ROTATERT, LSHIFTRT, ASHIFTRT cases. Handle subregs in op1.
10966 2023-04-19 Richard Biener <rguenther@suse.de>
10968 PR rtl-optimization/109237
10969 * cse.cc (insn_live_p): Remove NEXT_INSN walk, instead check
10970 TREE_VISITED on INSN_VAR_LOCATION_DECL.
10971 (delete_trivially_dead_insns): Maintain TREE_VISITED on
10972 active debug bind INSN_VAR_LOCATION_DECL.
10974 2023-04-19 Richard Biener <rguenther@suse.de>
10976 PR rtl-optimization/109237
10977 * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
10979 2023-04-19 Christophe Lyon <christophe.lyon@arm.com>
10981 * doc/install.texi (enable-decimal-float): Add AArch64.
10983 2023-04-19 liuhongt <hongtao.liu@intel.com>
10985 PR rtl-optimization/109351
10986 * ira.cc (setup_class_subset_and_memory_move_costs): Check
10987 hard_regno_mode_ok before setting lowest memory move cost for
10988 the mode with different reg classes.
10990 2023-04-18 Jason Merrill <jason@redhat.com>
10992 * doc/invoke.texi: Remove stray @gol.
10994 2023-04-18 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
10996 * ifcvt.cc (cond_move_process_if_block): Consider the result of
10997 targetm.noce_conversion_profitable_p() when replacing the original
10998 sequence with the converted one.
11000 2023-04-18 Mark Harmstone <mark@harmstone.com>
11002 * common.opt (gcodeview): Add new option.
11003 * gcc.cc (driver_handle_option); Handle OPT_gcodeview.
11004 * opts.cc (command_handle_option): Similarly.
11005 * doc/invoke.texi: Add documentation for -gcodeview.
11007 2023-04-18 Andrew Pinski <apinski@marvell.com>
11009 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove declaration.
11010 (make_pass_phiopt): Make execute out of line.
11011 (tree_ssa_cs_elim): Move code into ...
11012 (pass_cselim::execute): here.
11014 2023-04-18 Sam James <sam@gentoo.org>
11016 * system.h: Drop unused INCLUDE_PTHREAD_H.
11018 2023-04-18 Kevin Lee <kevinl@rivosinc.com>
11020 * tree-vect-data-refs.cc (vect_grouped_store_supported): Add new
11023 2023-04-18 Sinan Lin <sinan.lin@linux.alibaba.com>
11025 * config/riscv/bitmanip.md (rotr<mode>3 expander): Enable for ZBKB.
11026 (bswapdi2, bswapsi2): Similarly.
11028 2023-04-18 Uros Bizjak <ubizjak@gmail.com>
11031 * config/i386/i386-builtin.def (__builtin_ia32_insertps128):
11032 Use CODE_FOR_sse4_1_insertps_v4sf.
11033 * config/i386/i386-expand.cc (expand_vec_perm_insertps): New.
11034 (expand_vec_perm_1): Call expand_vec_per_insertps.
11035 * config/i386/i386.md ("unspec"): Declare UNSPEC_INSERTPS here.
11036 * config/i386/mmx.md (mmxscalarmode): New mode attribute.
11037 (@sse4_1_insertps_<mode>): New insn pattern.
11038 * config/i386/sse.md (@sse4_1_insertps_<mode>): Macroize insn
11039 pattern from sse4_1_insertps using VI4F_128 mode iterator.
11041 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
11043 * value-range.cc (gt_ggc_mx): New.
11045 * value-range.h (class vrange): Add GTY marker.
11046 (class frange): Same.
11047 (gt_ggc_mx): Remove.
11048 (gt_pch_nx): Remove.
11050 2023-04-18 Victor L. Do Nascimento <victor.donascimento@arm.com>
11052 * lra-constraints.cc (constraint_unique): New.
11053 (process_address_1): Apply constraint_unique test.
11054 * recog.cc (constrain_operands): Allow relaxed memory
11057 2023-04-18 Kito Cheng <kito.cheng@sifive.com>
11059 * doc/extend.texi (Target Builtins): Add RISC-V Vector
11061 (RISC-V Vector Intrinsics): Document GCC implemented which
11062 version of RISC-V vector intrinsics and its reference.
11064 2023-04-18 Richard Biener <rguenther@suse.de>
11066 PR middle-end/108786
11067 * bitmap.h (bitmap_clear_first_set_bit): New.
11068 * bitmap.cc (bitmap_first_set_bit_worker): Rename from
11069 bitmap_first_set_bit and add optional clearing of the bit.
11070 (bitmap_first_set_bit): Wrap bitmap_first_set_bit_worker.
11071 (bitmap_clear_first_set_bit): Likewise.
11072 * df-core.cc (df_worklist_dataflow_doublequeue): Use
11073 bitmap_clear_first_set_bit.
11074 * graphite-scop-detection.cc (scop_detection::merge_sese):
11076 * sanopt.cc (sanitize_asan_mark_unpoison): Likewise.
11077 (sanitize_asan_mark_poison): Likewise.
11078 * tree-cfgcleanup.cc (cleanup_tree_cfg_noloop): Likewise.
11079 * tree-into-ssa.cc (rewrite_blocks): Likewise.
11080 * tree-ssa-dce.cc (simple_dce_from_worklist): Likewise.
11081 * tree-ssa-sccvn.cc (do_rpo_vn_1): Likewise.
11083 2023-04-18 Richard Biener <rguenther@suse.de>
11085 * tree-ssa-structalias.cc (dump_sa_stats): Split out from...
11086 (dump_sa_points_to_info): ... this function.
11087 (compute_points_to_sets): Guard large dumps with TDF_DETAILS,
11088 and call dump_sa_stats guarded with TDF_STATS.
11089 (ipa_pta_execute): Likewise.
11090 (compute_may_aliases): Guard dump_alias_info with
11091 TDF_DETAILS|TDF_ALIAS.
11093 2023-04-18 Andrew Pinski <apinski@marvell.com>
11095 * tree-ssa-phiopt.cc (gimple_simplify_phiopt): Dump
11096 the expression that is being tried when TDF_FOLDING
11098 (phiopt_worker::match_simplify_replacement): Dump
11099 the sequence which was created by gimple_simplify_phiopt
11100 when TDF_FOLDING is true.
11102 2023-04-18 Andrew Pinski <apinski@marvell.com>
11104 * tree-ssa-phiopt.cc (match_simplify_replacement):
11105 Simplify code that does the movement slightly.
11107 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11109 * config/aarch64/aarch64.md (@aarch64_rev16<mode>): Change to
11111 (rev16<mode>2): Rename to...
11112 (aarch64_rev16<mode>2_alt1): ... This.
11113 (rev16<mode>2_alt): Rename to...
11114 (*aarch64_rev16<mode>2_alt2): ... This.
11116 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
11118 * emit-rtl.cc (init_emit_once): Initialize dconstm0.
11119 * gimple-range-op.cc (class cfn_signbit): Remove dconstm0
11121 * range-op-float.cc (zero_range): Use dconstm0.
11122 (zero_to_inf_range): Same.
11123 * real.h (dconstm0): New.
11124 * value-range.cc (frange::flush_denormals_to_zero): Use dconstm0.
11125 (frange::set_zero): Do not declare dconstm0.
11127 2023-04-18 Richard Biener <rguenther@suse.de>
11129 * system.h (class auto_mpz): New,
11130 * realmpfr.h (class auto_mpfr): Likewise.
11131 * fold-const-call.cc (do_mpfr_arg1): Use auto_mpfr.
11132 (do_mpfr_arg2): Likewise.
11133 * tree-ssa-loop-niter.cc (bound_difference): Use auto_mpz;
11135 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11137 * config/aarch64/aarch64-builtins.cc (aarch64_init_simd_intrinsics): Take
11138 builtin flags from intrinsic data rather than hardcoded FLAG_AUTO_FP.
11140 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
11142 * value-range.cc (frange::operator==): Adjust for NAN.
11143 (range_tests_nan): Remove some NAN tests.
11145 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
11147 * inchash.cc (hash::add_real_value): New.
11148 * inchash.h (class hash): Add add_real_value.
11149 * value-range.cc (add_vrange): New.
11150 * value-range.h (inchash::add_vrange): New.
11152 2023-04-18 Richard Biener <rguenther@suse.de>
11154 PR tree-optimization/109539
11155 * gimple-ssa-warn-access.cc (pass_waccess::check_pointer_uses):
11156 Re-implement pointer relatedness for PHIs.
11158 2023-04-18 Andrew Stubbs <ams@codesourcery.com>
11160 * config/gcn/gcn-valu.md (SV_SFDF): New iterator.
11161 (SV_FP): New iterator.
11162 (scalar_mode, SCALAR_MODE): Add identity mappings for scalar modes.
11163 (recip<mode>2): Unify the two patterns using SV_FP.
11164 (div_scale<mode><exec_vcc>): New insn.
11165 (div_fmas<mode><exec>): New insn.
11166 (div_fixup<mode><exec>): New insn.
11167 (div<mode>3): Unify the two expanders and rewrite using hardfp.
11168 * config/gcn/gcn.cc (gcn_md_reorg): Support "vccwait" attribute.
11169 * config/gcn/gcn.md (unspec): Add UNSPEC_DIV_SCALE, UNSPEC_DIV_FMAS,
11170 and UNSPEC_DIV_FIXUP.
11171 (vccwait): New attribute.
11173 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11175 * config/aarch64/aarch64.cc (aarch64_validate_mcpu): Add hint to use -march
11176 if the argument matches that.
11178 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11180 * config/aarch64/atomics.md
11181 (*aarch64_atomic_load<ALLX:mode>_rcpc_zext):
11182 Use SD_HSDI for destination mode iterator.
11184 2023-04-18 Jin Ma <jinma@linux.alibaba.com>
11186 * common/config/riscv/riscv-common.cc (multi_letter_subset_rank): Swap the order
11187 of z-extensions and s-extensions.
11188 (riscv_subset_list::parse): Likewise.
11190 2023-04-18 Jakub Jelinek <jakub@redhat.com>
11192 PR tree-optimization/109240
11193 * match.pd (fneg/fadd): Rewrite such that it handles both plus as
11194 first vec_perm operand and minus as second using fneg/fadd and
11195 minus as first vec_perm operand and plus as second using fneg/fsub.
11197 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
11199 * data-streamer.cc (bp_pack_real_value): New.
11200 (bp_unpack_real_value): New.
11201 * data-streamer.h (bp_pack_real_value): New.
11202 (bp_unpack_real_value): New.
11203 * tree-streamer-in.cc (unpack_ts_real_cst_value_fields): Use
11204 bp_unpack_real_value.
11205 * tree-streamer-out.cc (pack_ts_real_cst_value_fields): Use
11206 bp_pack_real_value.
11208 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
11210 * wide-int.h (WIDE_INT_MAX_HWIS): New.
11211 (class fixed_wide_int_storage): Use it.
11212 (trailing_wide_ints <N>::set_precision): Use it.
11213 (trailing_wide_ints <N>::extra_size): Use it.
11215 2023-04-18 Xi Ruoyao <xry111@xry111.site>
11217 * config/loongarch/loongarch-protos.h
11218 (loongarch_addu16i_imm12_operand_p): New function prototype.
11219 (loongarch_split_plus_constant): Likewise.
11220 * config/loongarch/loongarch.cc
11221 (loongarch_addu16i_imm12_operand_p): New function.
11222 (loongarch_split_plus_constant): Likewise.
11223 * config/loongarch/loongarch.h (ADDU16I_OPERAND): New macro.
11224 (DUAL_IMM12_OPERAND): Likewise.
11225 (DUAL_ADDU16I_OPERAND): Likewise.
11226 * config/loongarch/constraints.md (La, Lb, Lc, Ld, Le): New
11228 * config/loongarch/predicates.md (const_dual_imm12_operand): New
11230 (const_addu16i_operand): Likewise.
11231 (const_addu16i_imm12_di_operand): Likewise.
11232 (const_addu16i_imm12_si_operand): Likewise.
11233 (plus_di_operand): Likewise.
11234 (plus_si_operand): Likewise.
11235 (plus_si_extend_operand): Likewise.
11236 * config/loongarch/loongarch.md (add<mode>3): Convert to
11237 define_insn_and_split. Use plus_<mode>_operand predicate
11238 instead of arith_operand. Add alternatives for La, Lb, Lc, Ld,
11239 and Le constraints.
11240 (*addsi3_extended): Convert to define_insn_and_split. Use
11241 plus_si_extend_operand instead of arith_operand. Add
11242 alternatives for La and Le alternatives.
11244 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
11246 * value-range.h (Value_Range::Value_Range): New.
11247 (Value_Range::contains_p): New.
11249 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
11251 * value-range.h (class vrange): Make m_discriminator const.
11252 (class irange): Make m_max_ranges const. Adjust constructors
11254 (class unsupported_range): Construct vrange appropriately.
11255 (class frange): Same.
11257 2023-04-18 Lulu Cheng <chenglulu@loongson.cn>
11259 * config/loongarch/loongarch.h (LOGICAL_OP_NON_SHORT_CIRCUIT): Remove the macro
11262 2023-04-18 Lulu Cheng <chenglulu@loongson.cn>
11264 * doc/extend.texi: Add section for LoongArch Base Built-in functions.
11266 2023-04-18 Fei Gao <gaofei@eswincomputing.com>
11268 * config/riscv/riscv.cc (riscv_first_stack_step): Make codes more
11270 (riscv_expand_epilogue): Likewise.
11272 2023-04-17 Fei Gao <gaofei@eswincomputing.com>
11274 * config/riscv/riscv.cc (riscv_expand_prologue): Consider save-restore in
11276 (riscv_expand_epilogue): Consider save-restore in stack deallocation.
11278 2023-04-17 Andrew Pinski <apinski@marvell.com>
11280 * tree-ssa-phiopt.cc (gate_hoist_loads): Remove
11283 2023-04-17 Aldy Hernandez <aldyh@redhat.com>
11285 * gimple-ssa-warn-alloca.cc (pass_walloca::execute): Do not export
11288 2023-04-17 Fei Gao <gaofei@eswincomputing.com>
11290 * config/riscv/riscv.cc (riscv_first_stack_step): Add a new function
11291 parameter remaining_size.
11292 (riscv_compute_frame_info): Adapt new riscv_first_stack_step interface.
11293 (riscv_expand_prologue): Likewise.
11294 (riscv_expand_epilogue): Likewise.
11296 2023-04-17 Feng Wang <wangfeng@eswincomputing.com>
11298 * config/riscv/bitmanip.md (rotrsi3_sext): Support generating
11299 roriw for constant counts.
11300 * rtl.h (reverse_rotate_by_imm_p): Add function declartion
11301 * simplify-rtx.cc (reverse_rotate_by_imm_p): New function.
11302 (simplify_context::simplify_binary_operation_1): Use it.
11303 * expmed.cc (expand_shift_1): Likewise.
11305 2023-04-17 Martin Jambor <mjambor@suse.cz>
11309 * cgraph.h (symtab_node::find_reference): Add parameter use_type.
11310 * ipa-prop.h (ipa_pass_through_data): New flag refdesc_decremented.
11311 (ipa_zap_jf_refdesc): New function.
11312 (ipa_get_jf_pass_through_refdesc_decremented): Likewise.
11313 (ipa_set_jf_pass_through_refdesc_decremented): Likewise.
11314 * ipa-cp.cc (ipcp_discover_new_direct_edges): Provide a value for
11315 the new parameter of find_reference.
11316 (adjust_references_in_caller): Likewise. Make sure the constant jump
11317 function is not used to decrement a refdec counter again. Only
11318 decrement refdesc counters when the pass_through jump function allows
11319 it. Added a detailed dump when decrementing refdesc counters.
11320 * ipa-prop.cc (ipa_print_node_jump_functions_for_edge): Dump new flag.
11321 (ipa_set_jf_simple_pass_through): Initialize the new flag.
11322 (ipa_set_jf_unary_pass_through): Likewise.
11323 (ipa_set_jf_arith_pass_through): Likewise.
11324 (remove_described_reference): Provide a value for the new parameter of
11326 (update_jump_functions_after_inlining): Zap refdesc of new jfunc if
11327 the previous pass_through had a flag mandating that we do so.
11328 (propagate_controlled_uses): Likewise. Only decrement refdesc
11329 counters when the pass_through jump function allows it.
11330 (ipa_edge_args_sum_t::duplicate): Provide a value for the new
11331 parameter of find_reference.
11332 (ipa_write_jump_function): Assert the new flag does not have to be
11334 * symtab.cc (symtab_node::find_reference): Add parameter use_type, use
11337 2023-04-17 Philipp Tomsich <philipp.tomsich@vrull.eu>
11338 Di Zhao <di.zhao@amperecomputing.com>
11340 * config/aarch64/aarch64-tuning-flags.def (AARCH64_EXTRA_TUNING_OPTION):
11341 Add AARCH64_EXTRA_TUNE_NO_LDP_COMBINE.
11342 * config/aarch64/aarch64.cc (aarch64_operands_ok_for_ldpstp):
11343 Check for the above tuning option when processing loads.
11345 2023-04-17 Richard Biener <rguenther@suse.de>
11347 PR tree-optimization/109524
11348 * tree-vrp.cc (remove_unreachable::m_list): Change to a
11349 vector of pairs of block indices.
11350 (remove_unreachable::maybe_register_block): Adjust.
11351 (remove_unreachable::remove_and_update_globals): Likewise.
11352 Deal with removed blocks.
11354 2023-04-16 Jeff Law <jlaw@ventanamicro>
11357 * config/riscv/riscv.cc (riscv_expand_conditional_move): For
11358 TARGET_SFB_ALU, force the true arm into a register.
11360 2023-04-15 John David Anglin <danglin@gcc.gnu.org>
11363 * config/pa/pa-protos.h (pa_function_arg_size): Update prototype.
11364 * config/pa/pa.cc (pa_function_arg): Return NULL_RTX if argument
11366 (pa_arg_partial_bytes): Don't call pa_function_arg_size twice.
11367 (pa_function_arg_size): Change return type to int. Return zero
11368 for arguments larger than 1 GB. Update comments.
11370 2023-04-15 Jakub Jelinek <jakub@redhat.com>
11372 PR tree-optimization/109154
11373 * tree-if-conv.cc (predicate_scalar_phi): For complex PHIs, emit just
11374 args_len - 1 COND_EXPRs rather than args_len. Formatting fix.
11376 2023-04-15 Jason Merrill <jason@redhat.com>
11379 * gimple-ssa-warn-access.cc (pass_waccess::check_dangling_stores):
11380 Overhaul lhs_ref.ref analysis.
11382 2023-04-14 Richard Biener <rguenther@suse.de>
11384 PR tree-optimization/109502
11385 * tree-vect-stmts.cc (vectorizable_assignment): Fix
11386 check for conversion between mask and non-mask types.
11388 2023-04-14 Jeff Law <jlaw@ventanamicro.com>
11389 Jakub Jelinek <jakub@redhat.com>
11393 * combine.cc (simplify_and_const_int_1): Compute nonzero_bits in
11394 word_mode rather than mode if WORD_REGISTER_OPERATIONS and mode is
11395 smaller than word_mode.
11396 * simplify-rtx.cc (simplify_context::simplify_binary_operation_1)
11397 <case AND>: Likewise.
11399 2023-04-14 Jakub Jelinek <jakub@redhat.com>
11401 * loop-iv.cc (iv_number_of_iterations): Use gen_int_mode instead
11404 2023-04-13 Andrew MacLeod <amacleod@redhat.com>
11406 PR tree-optimization/108139
11407 PR tree-optimization/109462
11408 * gimple-range-cache.cc (ranger_cache::fill_block_cache): Remove
11409 equivalency check for PHI nodes.
11410 * gimple-range-fold.cc (fold_using_range::range_of_phi): Ensure def
11411 does not dominate single-arg equivalency edges.
11413 2023-04-13 Richard Sandiford <richard.sandiford@arm.com>
11416 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Do
11417 not trust TYPE_ALIGN for pointer types; use POINTER_SIZE instead.
11419 2023-04-13 Richard Biener <rguenther@suse.de>
11421 PR tree-optimization/109491
11422 * tree-ssa-sccvn.cc (expressions_equal_p): Restore the
11423 NULL operands test.
11425 2023-04-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
11428 * config/riscv/riscv-vector-builtins-types.def (vint8mf8_t): Fix predicate.
11429 (vint16mf4_t): Ditto.
11430 (vint32mf2_t): Ditto.
11431 (vint64m1_t): Ditto.
11432 (vint64m2_t): Ditto.
11433 (vint64m4_t): Ditto.
11434 (vint64m8_t): Ditto.
11435 (vuint8mf8_t): Ditto.
11436 (vuint16mf4_t): Ditto.
11437 (vuint32mf2_t): Ditto.
11438 (vuint64m1_t): Ditto.
11439 (vuint64m2_t): Ditto.
11440 (vuint64m4_t): Ditto.
11441 (vuint64m8_t): Ditto.
11442 (vfloat32mf2_t): Ditto.
11443 (vbool64_t): Ditto.
11444 * config/riscv/riscv-vector-builtins.cc (register_builtin_type): Add comments.
11445 (register_vector_type): Ditto.
11446 (check_required_extensions): Fix condition.
11447 * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_ZVE64): Remove it.
11448 (RVV_REQUIRE_ELEN_64): New define.
11449 (RVV_REQUIRE_MIN_VLEN_64): Ditto.
11450 * config/riscv/riscv-vector-switch.def (TARGET_VECTOR_FP32): Remove it.
11451 (TARGET_VECTOR_FP64): Ditto.
11452 (ENTRY): Fix predicate.
11453 * config/riscv/vector-iterators.md: Fix predicate.
11455 2023-04-12 Jakub Jelinek <jakub@redhat.com>
11457 PR tree-optimization/109410
11458 * tree-ssa-reassoc.cc (build_and_add_sum): Split edge from entry
11459 block if first statement of the function is a call to returns_twice
11462 2023-04-12 Jakub Jelinek <jakub@redhat.com>
11465 * config/i386/i386.cc: Include rtl-error.h.
11466 (ix86_print_operand): For z modifier warning, use warning_for_asm
11467 if this_is_asm_operands. For Z modifier errors, use %c and code
11468 instead of hardcoded Z.
11470 2023-04-12 Costas Argyris <costas.argyris@gmail.com>
11472 * config/i386/x-mingw32-utf8: Remove extrataneous $@
11474 2023-04-12 Andrew MacLeod <amacleod@redhat.com>
11476 PR tree-optimization/109462
11477 * gimple-range-cache.cc (ranger_cache::fill_block_cache): Don't
11478 check for equivalences if NAME is a phi node.
11480 2023-04-12 Richard Biener <rguenther@suse.de>
11482 PR tree-optimization/109473
11483 * tree-vect-loop.cc (vect_create_epilog_for_reduction):
11484 Convert scalar result to the computation type before performing
11485 the reduction adjustment.
11487 2023-04-12 Richard Biener <rguenther@suse.de>
11489 PR tree-optimization/109469
11490 * tree-vect-slp.cc (vect_slp_function): Skip region starts with
11491 a returns-twice call.
11493 2023-04-12 Richard Biener <rguenther@suse.de>
11495 PR tree-optimization/109434
11496 * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Properly
11497 handle possibly throwing calls when processing the LHS
11498 and may-defs are not OK.
11500 2023-04-11 Lin Sinan <mynameisxiaou@gmail.com>
11502 * config/riscv/predicates.md (uimm_extra_bit_or_twobits): Adjust
11503 predicate to avoid splitting arith constants.
11505 2023-04-11 Yanzhang Wang <yanzhang.wang@intel.com>
11506 Pan Li <pan2.li@intel.com>
11507 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
11508 Kito Cheng <kito.cheng@sifive.com>
11511 * config/riscv/riscv-protos.h (emit_hard_vlmax_vsetvl): New.
11512 * config/riscv/riscv-v.cc (emit_hard_vlmax_vsetvl): New.
11513 (emit_vlmax_vsetvl): Use emit_hard_vlmax_vsetvl.
11514 * config/riscv/riscv.cc (vector_zero_call_used_regs): New.
11515 (riscv_zero_call_used_regs): New.
11516 (TARGET_ZERO_CALL_USED_REGS): New.
11518 2023-04-11 Martin Liska <mliska@suse.cz>
11521 * opts.cc (finish_options): Drop also
11522 x_flag_var_tracking_assignments.
11524 2023-04-11 Andre Vieira <andre.simoesdiasvieira@arm.com>
11526 PR tree-optimization/108888
11527 * tree-if-conv.cc (predicate_statements): Fix gimple call check.
11529 2023-04-11 Haochen Gui <guihaoc@gcc.gnu.org>
11532 * config/rs6000/vsx.md (vsx_sign_extend_qi_<mode>): Rename to...
11533 (vsx_sign_extend_v16qi_<mode>): ... this.
11534 (vsx_sign_extend_hi_<mode>): Rename to...
11535 (vsx_sign_extend_v8hi_<mode>): ... this.
11536 (vsx_sign_extend_si_v2di): Rename to...
11537 (vsx_sign_extend_v4si_v2di): ... this.
11538 (vsignextend_qi_<mode>): Remove.
11539 (vsignextend_hi_<mode>): Remove.
11540 (vsignextend_si_v2di): Remove.
11541 (vsignextend_v2di_v1ti): Remove.
11542 (*xxspltib_<mode>_split): Replace gen_vsx_sign_extend_qi_v2di with
11543 gen_vsx_sign_extend_v16qi_v2di and gen_vsx_sign_extend_qi_v4si
11544 with gen_vsx_sign_extend_v16qi_v4si.
11545 * config/rs6000/rs6000.md (split for DI constant generation):
11546 Replace gen_vsx_sign_extend_qi_si with gen_vsx_sign_extend_v16qi_si.
11547 (split for HSDI constant generation): Replace gen_vsx_sign_extend_qi_di
11548 with gen_vsx_sign_extend_v16qi_di and gen_vsx_sign_extend_qi_si
11549 with gen_vsx_sign_extend_v16qi_si.
11550 * config/rs6000/rs6000-builtins.def (__builtin_altivec_vsignextsb2d):
11551 Set bif-pattern to vsx_sign_extend_v16qi_v2di.
11552 (__builtin_altivec_vsignextsb2w): Set bif-pattern to
11553 vsx_sign_extend_v16qi_v4si.
11554 (__builtin_altivec_visgnextsh2d): Set bif-pattern to
11555 vsx_sign_extend_v8hi_v2di.
11556 (__builtin_altivec_vsignextsh2w): Set bif-pattern to
11557 vsx_sign_extend_v8hi_v4si.
11558 (__builtin_altivec_vsignextsw2d): Set bif-pattern to
11559 vsx_sign_extend_si_v2di.
11560 (__builtin_altivec_vsignext): Set bif-pattern to
11561 vsx_sign_extend_v2di_v1ti.
11562 * config/rs6000/rs6000-builtin.cc (lxvrse_expand_builtin): Replace
11563 gen_vsx_sign_extend_qi_v2di with gen_vsx_sign_extend_v16qi_v2di,
11564 gen_vsx_sign_extend_hi_v2di with gen_vsx_sign_extend_v8hi_v2di and
11565 gen_vsx_sign_extend_si_v2di with gen_vsx_sign_extend_v4si_v2di.
11567 2023-04-10 Michael Meissner <meissner@linux.ibm.com>
11570 * config/rs6000/vsx.md (vsx_fmav4sf4): Do not generate vmaddfp.
11571 (vsx_nfmsv4sf4): Do not generate vnmsubfp.
11573 2023-04-10 Haochen Jiang <haochen.jiang@intel.com>
11575 * config/i386/i386.h (PTA_GRANITERAPIDS): Add PTA_AMX_COMPLEX.
11577 2023-04-10 Haochen Jiang <haochen.jiang@intel.com>
11579 * common/config/i386/cpuinfo.h (get_available_features):
11580 Detect AMX-COMPLEX.
11581 * common/config/i386/i386-common.cc
11582 (OPTION_MASK_ISA2_AMX_COMPLEX_SET,
11583 OPTION_MASK_ISA2_AMX_COMPLEX_UNSET): New.
11584 (ix86_handle_option): Handle -mamx-complex.
11585 * common/config/i386/i386-cpuinfo.h (enum processor_features):
11586 Add FEATURE_AMX_COMPLEX.
11587 * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
11589 * config.gcc: Add amxcomplexintrin.h.
11590 * config/i386/cpuid.h (bit_AMX_COMPLEX): New.
11591 * config/i386/i386-c.cc (ix86_target_macros_internal): Define
11593 * config/i386/i386-isa.def (AMX_COMPLEX): Add DEF_PTA(AMX_COMPLEX).
11594 * config/i386/i386-options.cc (ix86_valid_target_attribute_inner_p):
11595 Handle amx-complex.
11596 * config/i386/i386.opt: Add option -mamx-complex.
11597 * config/i386/immintrin.h: Include amxcomplexintrin.h.
11598 * doc/extend.texi: Document amx-complex.
11599 * doc/invoke.texi: Document -mamx-complex.
11600 * doc/sourcebuild.texi: Document target amx-complex.
11601 * config/i386/amxcomplexintrin.h: New file.
11603 2023-04-08 Jakub Jelinek <jakub@redhat.com>
11605 PR tree-optimization/109392
11606 * tree-vect-generic.cc (tree_vec_extract): Handle failure
11607 of maybe_push_res_to_seq better.
11609 2023-04-08 Jakub Jelinek <jakub@redhat.com>
11611 * Makefile.in (CORETYPES_H): Depend on align.h, poly-int.h and
11613 (SYSTEM_H): Depend on $(HASHTAB_H).
11614 * config/riscv/t-riscv (build/genrvv-type-indexer.o): Remove unused
11615 dependency on $(RTL_BASE_H), remove redundant dependency on
11618 2023-04-06 Richard Earnshaw <rearnsha@arm.com>
11621 * config/arm/arm.cc (arm_effective_regno): New function.
11622 (mve_vector_mem_operand): Use it.
11624 2023-04-06 Andrew MacLeod <amacleod@redhat.com>
11626 PR tree-optimization/109417
11627 * gimple-range-gori.cc (gori_compute::may_recompute_p): Check if
11628 dependency is in SSA_NAME_FREE_LIST.
11630 2023-04-06 Andrew Pinski <apinski@marvell.com>
11632 PR tree-optimization/109427
11633 * params.opt (-param=vect-induction-float=):
11634 Fix option attribute typo for IntegerRange.
11636 2023-04-05 Jeff Law <jlaw@ventanamicro>
11639 * combine.cc (combine_instructions): Force re-recognition when
11640 after restoring the body of an insn to its original form.
11642 2023-04-05 Martin Jambor <mjambor@suse.cz>
11645 * ipa-sra.cc (zap_useless_ipcp_results): New function.
11646 (process_isra_node_results): Call it.
11648 2023-04-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
11650 * config/riscv/vector.md: Fix incorrect operand order.
11652 2023-04-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
11654 * config/riscv/riscv-vsetvl.cc
11655 (pass_vsetvl::compute_local_backward_infos): Update user vsetvl in local
11658 2023-04-05 Li Xu <xuli1@eswincomputing.com>
11660 * config/riscv/riscv-vector-builtins.def: Fix typo.
11661 * config/riscv/riscv.cc (riscv_dwarf_poly_indeterminate_value): Ditto.
11662 * config/riscv/vector-iterators.md: Ditto.
11664 2023-04-04 Hans-Peter Nilsson <hp@axis.com>
11666 * doc/md.texi (Including Patterns): Fix page break.
11668 2023-04-04 Jakub Jelinek <jakub@redhat.com>
11670 PR tree-optimization/109386
11671 * range-op-float.cc (foperator_lt::op1_range, foperator_lt::op2_range,
11672 foperator_le::op1_range, foperator_le::op2_range,
11673 foperator_gt::op1_range, foperator_gt::op2_range,
11674 foperator_ge::op1_range, foperator_ge::op2_range): Make r varying for
11675 BRS_FALSE case even if the other op is maybe_isnan, not just
11677 (foperator_unordered_lt::op1_range, foperator_unordered_lt::op2_range,
11678 foperator_unordered_le::op1_range, foperator_unordered_le::op2_range,
11679 foperator_unordered_gt::op1_range, foperator_unordered_gt::op2_range,
11680 foperator_unordered_ge::op1_range, foperator_unordered_ge::op2_range):
11681 Make r varying for BRS_TRUE case even if the other op is maybe_isnan,
11682 not just known_isnan.
11684 2023-04-04 Marek Polacek <polacek@redhat.com>
11686 PR sanitizer/109107
11687 * fold-const.cc (fold_binary_loc): Use TYPE_OVERFLOW_SANITIZED
11689 * match.pd: Use TYPE_OVERFLOW_SANITIZED.
11691 2023-04-04 Stam Markianos-Wright <stam.markianos-wright@arm.com>
11693 * config/arm/mve.md (mve_vcvtq_n_to_f_<supf><mode>): Swap operands.
11694 (mve_vcreateq_f<mode>): Swap operands.
11696 2023-04-04 Andrew Stubbs <ams@codesourcery.com>
11698 * config/gcn/gcn-valu.md (one_cmpl<mode>2<exec>): New.
11700 2023-04-04 Jakub Jelinek <jakub@redhat.com>
11703 * common/config/riscv/riscv-common.cc (riscv_subset_list::parse):
11704 Reword diagnostics about zfinx conflict with f, formatting fixes.
11706 2023-04-04 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
11708 * config/sol2.h (LIB_SPEC): Don't link with -lpthread.
11710 2023-04-04 Richard Biener <rguenther@suse.de>
11712 PR tree-optimization/109304
11713 * tree-profile.cc (tree_profiling): Use symtab node
11714 availability to decide whether to skip adjusting calls.
11715 Do not adjust calls to internal functions.
11717 2023-04-04 Kewen Lin <linkw@linux.ibm.com>
11720 * config/rs6000/rs6000.cc (rs6000_expand_vector_set_var_p9): Fix gen
11721 function for permutation control vector by considering big endianness.
11723 2023-04-04 Kewen Lin <linkw@linux.ibm.com>
11726 * config/rs6000/altivec.md (*p9v_parity<mode>2): Rename to ...
11727 (rs6000_vprtyb<mode>2): ... this.
11728 * config/rs6000/rs6000-builtins.def (VPRTYBD): Replace parityv2di2 with
11729 rs6000_vprtybv2di2.
11730 (VPRTYBW): Replace parityv4si2 with rs6000_vprtybv4si2.
11731 (VPRTYBQ): Replace parityv1ti2 with rs6000_vprtybv1ti2.
11732 * config/rs6000/vector.md (parity<mode>2 with VEC_IP): Expand with
11733 popcountv16qi2 and the corresponding rs6000_vprtyb<mode>2.
11735 2023-04-04 Hans-Peter Nilsson <hp@axis.com>
11736 Sandra Loosemore <sandra@codesourcery.com>
11738 * doc/md.texi (Insn Splitting): Tweak wording for readability.
11740 2023-04-03 Martin Jambor <mjambor@suse.cz>
11743 * ipa-prop.cc (determine_known_aggregate_parts): Check that the
11744 offset + size will be representable in unsigned int.
11746 2023-04-03 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
11748 * configure.ac (ZSTD_LIB): Move before zstd.h check.
11749 Unset gcc_cv_header_zstd_h without libzstd.
11750 * configure: Regenerate.
11752 2023-04-03 Martin Liska <mliska@suse.cz>
11754 * doc/invoke.texi: Document new param.
11756 2023-04-03 Cupertino Miranda <cupertino.miranda@oracle.com>
11758 * doc/sourcebuild.texi (const_volatile_readonly_section): Document
11759 new check_effective_target function.
11761 2023-04-03 Li Xu <xuli1@eswincomputing.com>
11763 * config/riscv/riscv-vector-builtins.def (vuint32m8_t): Fix typo.
11764 (vfloat32m8_t): Likewise
11766 2023-04-03 liuhongt <hongtao.liu@intel.com>
11768 * doc/md.texi: Document signbitm2.
11770 2023-04-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
11771 kito-cheng <kito.cheng@sifive.com>
11773 * config/riscv/vector.md: Fix RA constraint.
11775 2023-04-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
11777 * config/riscv/riscv-protos.h (gen_avl_for_scalar_move): New function.
11778 * config/riscv/riscv-v.cc (gen_avl_for_scalar_move): New function.
11779 * config/riscv/vector.md: Fix scalar move bug.
11781 2023-04-01 Jakub Jelinek <jakub@redhat.com>
11783 * range-op-float.cc (foperator_equal::fold_range): If at least
11784 one of the op ranges is not singleton and neither is NaN and all
11785 4 bounds are zero, return [1, 1].
11786 (foperator_not_equal::fold_range): In the same case return [0, 0].
11788 2023-04-01 Jakub Jelinek <jakub@redhat.com>
11790 * range-op-float.cc (foperator_equal::fold_range): Perform the
11791 non-singleton handling regardless of maybe_isnan (op1, op2).
11792 (foperator_not_equal::fold_range): Likewise.
11793 (foperator_lt::fold_range, foperator_le::fold_range,
11794 foperator_gt::fold_range, foperator_ge::fold_range): Perform the
11795 real_* comparison check which results in range_false (type)
11796 even if maybe_isnan (op1, op2). Simplify.
11797 (foperator_ltgt): New class.
11798 (fop_ltgt): New variable.
11799 (floating_op_table::floating_op_table): Handle LTGT_EXPR using
11802 2023-04-01 Jakub Jelinek <jakub@redhat.com>
11805 * builtins.cc (apply_args_size): If targetm.calls.get_raw_arg_mode
11806 returns VOIDmode, handle it like if the register isn't used for
11807 passing arguments at all.
11808 (apply_result_size): If targetm.calls.get_raw_result_mode returns
11809 VOIDmode, handle it like if the register isn't used for returning
11811 * target.def (get_raw_result_mode, get_raw_arg_mode): Document what it
11812 means to return VOIDmode.
11813 * doc/tm.texi: Regenerated.
11814 * config/aarch64/aarch64.cc (aarch64_function_value_regno_p): Return
11815 TARGET_SVE for P0_REGNUM.
11816 (aarch64_function_arg_regno_p): Also return true for p0-p3.
11817 (aarch64_get_reg_raw_mode): Return VOIDmode for PR_REGNUM_P regs.
11819 2023-03-31 Vladimir N. Makarov <vmakarov@redhat.com>
11821 * lra-constraints.cc: (combine_reload_insn): New function.
11823 2023-03-31 Jakub Jelinek <jakub@redhat.com>
11825 PR tree-optimization/91645
11826 * range-op-float.cc (foperator_unordered_lt::fold_range,
11827 foperator_unordered_le::fold_range,
11828 foperator_unordered_gt::fold_range,
11829 foperator_unordered_ge::fold_range,
11830 foperator_unordered_equal::fold_range): Call the ordered
11831 fold_range on ranges with cleared NaNs.
11832 * value-query.cc (range_query::get_tree_range): Handle also
11833 COMPARISON_CLASS_P trees.
11835 2023-03-31 Kito Cheng <kito.cheng@sifive.com>
11836 Andrew Pinski <pinskia@gmail.com>
11839 * config/riscv/t-riscv: Add missing dependencies.
11841 2023-03-31 liuhongt <hongtao.liu@intel.com>
11843 * config/i386/i386.cc (inline_memory_move_cost): Return 100
11844 for MASK_REGS when MODE_SIZE > 8.
11846 2023-03-31 liuhongt <hongtao.liu@intel.com>
11849 * config/i386/i386-builtin.def (BDESC): Adjust icode name from
11850 ufloat/ufix to floatuns/fixuns.
11851 * config/i386/i386-expand.cc
11852 (ix86_expand_vector_convert_uns_vsivsf): Adjust comments.
11853 * config/i386/sse.md
11854 (ufloat<sseintvecmodelower><mode>2<mask_name><round_name>):
11856 (<mask_codefor>floatuns<sseintvecmodelower><mode>2<mask_name><round_name>):.. this.
11857 (<mask_codefor><avx512>_ufix_notrunc<sf2simodelower><mode><mask_name><round_name>):
11859 (<mask_codefor><avx512>_fixuns_notrunc<sf2simodelower><mode><mask_name><round_name>):
11861 (<fixsuffix>fix_truncv16sfv16si2<mask_name><round_saeonly_name>):
11863 (fix<fixunssuffix>_truncv16sfv16si2<mask_name><round_saeonly_name>):.. this.
11864 (ufloat<si2dfmodelower><mode>2<mask_name>): Renamed to ..
11865 (floatuns<si2dfmodelower><mode>2<mask_name>): .. this.
11866 (ufloatv2siv2df2<mask_name>): Renamed to ..
11867 (<mask_codefor>floatunsv2siv2df2<mask_name>): .. this.
11868 (ufix_notrunc<mode><si2dfmodelower>2<mask_name><round_name>):
11870 (fixuns_notrunc<mode><si2dfmodelower>2<mask_name><round_name>):
11872 (ufix_notruncv2dfv2si2): Renamed to ..
11873 (fixuns_notruncv2dfv2si2):.. this.
11874 (ufix_notruncv2dfv2si2_mask): Renamed to ..
11875 (fixuns_notruncv2dfv2si2_mask): .. this.
11876 (*ufix_notruncv2dfv2si2_mask_1): Renamed to ..
11877 (*fixuns_notruncv2dfv2si2_mask_1): .. this.
11878 (ufix_truncv2dfv2si2): Renamed to ..
11879 (*fixuns_truncv2dfv2si2): .. this.
11880 (ufix_truncv2dfv2si2_mask): Renamed to ..
11881 (fixuns_truncv2dfv2si2_mask): .. this.
11882 (*ufix_truncv2dfv2si2_mask_1): Renamed to ..
11883 (*fixuns_truncv2dfv2si2_mask_1): .. this.
11884 (ufix_truncv4dfv4si2<mask_name>): Renamed to ..
11885 (fixuns_truncv4dfv4si2<mask_name>): .. this.
11886 (ufix_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
11888 (fixuns_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
11890 (ufix_trunc<mode><sseintvecmodelower>2<mask_name>): Renamed to ..
11891 (<mask_codefor>fixuns_trunc<mode><sseintvecmodelower>2<mask_name>):
11894 2023-03-30 Andrew MacLeod <amacleod@redhat.com>
11896 PR tree-optimization/109154
11897 * gimple-range-gori.cc (gori_compute::may_recompute_p): Add depth limit.
11898 * gimple-range-gori.h (may_recompute_p): Add depth param.
11899 * params.opt (ranger-recompute-depth): New param.
11901 2023-03-30 Jason Merrill <jason@redhat.com>
11905 * cgraph.h: Move reset() from cgraph_node to symtab_node.
11906 * cgraphunit.cc (symtab_node::reset): Adjust. Also call
11907 remove_from_same_comdat_group.
11909 2023-03-30 Richard Biener <rguenther@suse.de>
11911 PR tree-optimization/107561
11912 * gimple-ssa-warn-access.cc (get_size_range): Add flags
11913 argument and pass it on.
11914 (check_access): When querying for the size range pass
11915 SR_ALLOW_ZERO when the known destination size is zero.
11917 2023-03-30 Richard Biener <rguenther@suse.de>
11919 PR tree-optimization/109342
11920 * tree-ssa-sccvn.cc (vn_nary_op_get_predicated_value): New
11921 overload for edge. When that edge is a backedge use
11922 dominated_by_p directly.
11924 2023-03-30 liuhongt <hongtao.liu@intel.com>
11926 * config/i386/i386-expand.cc (expand_vec_perm_blend): Generate
11927 vpblendd instead of vpblendw for V4SI under avx2.
11929 2023-03-29 Hans-Peter Nilsson <hp@axis.com>
11931 * config/cris/cris.cc (cris_rtx_costs) [CONST_INT]: Return 0
11932 for many quick operands, for register-sized modes.
11934 2023-03-29 Jiawei <jiawei@iscas.ac.cn>
11936 * common/config/riscv/riscv-common.cc (riscv_subset_list::parse):
11939 2023-03-29 Martin Liska <mliska@suse.cz>
11941 PR bootstrap/109310
11942 * configure.ac: Emit a warning for deprecated option
11943 --enable-link-mutex.
11944 * configure: Regenerate.
11946 2023-03-29 Richard Biener <rguenther@suse.de>
11948 PR tree-optimization/109331
11949 * tree-ssa-forwprop.cc (pass_forwprop::execute): When we
11950 discover a taken edge make sure to cleanup the CFG.
11952 2023-03-29 Richard Biener <rguenther@suse.de>
11954 PR tree-optimization/109327
11955 * tree-ssa-forwprop.cc (pass_forwprop::execute): Deal with
11956 already removed stmts when draining to_remove.
11958 2023-03-29 Richard Biener <rguenther@suse.de>
11961 * dwarf2out.cc (lookup_type_die): Reset TREE_ASM_WRITTEN
11962 so we can re-create the DIE for the type if required.
11964 2023-03-29 Jakub Jelinek <jakub@redhat.com>
11965 Richard Biener <rguenther@suse.de>
11967 PR tree-optimization/109301
11968 * tree-ssa-math-opts.cc (pass_data_cse_sincos): Change
11969 properties_provided from PROP_gimple_opt_math to 0.
11970 (pass_data_expand_powcabs): Change properties_provided from 0 to
11971 PROP_gimple_opt_math.
11973 2023-03-29 Richard Biener <rguenther@suse.de>
11975 PR tree-optimization/109154
11976 * tree-if-conv.cc (gen_phi_arg_condition): Handle single
11977 inverted condition specially by inverting at the caller.
11978 (gen_phi_arg_condition): Swap COND_EXPR arms if requested.
11980 2023-03-28 David Malcolm <dmalcolm@redhat.com>
11983 * diagnostic-show-locus.cc (column_range::column_range): Factor
11984 out assertion conditional into...
11985 (column_range::valid_p): ...this new function.
11986 (line_corrections::add_hint): Don't attempt to consolidate hints
11987 if it would lead to invalid column_range instances.
11989 2023-03-28 Kito Cheng <kito.cheng@sifive.com>
11992 * config/riscv/riscv-c.cc (riscv_ext_version_value): New.
11993 (riscv_cpu_cpp_builtins): Define __riscv_v_intrinsic and
11996 2023-03-28 Alexander Monakov <amonakov@ispras.ru>
11998 PR rtl-optimization/109187
11999 * haifa-sched.cc (autopref_rank_for_schedule): Avoid use of overflowing
12000 subtraction in three-way comparison.
12002 2023-03-28 Andrew MacLeod <amacleod@redhat.com>
12004 PR tree-optimization/109265
12005 PR tree-optimization/109274
12006 * gimple-range-gori.cc (gori_compute::compute_operand_range): Do
12007 not create a relation record is op1 and op2 are the same symbol.
12008 (gori_compute::compute_operand1_range): Pass op1 == op2 to the
12009 handler for this stmt, but create a new record only if this statement
12010 generates a relation based on the ranges.
12011 (gori_compute::compute_operand2_range): Ditto.
12012 * value-relation.h (value_relation::set_relation): Always create the
12013 record that is requested.
12015 2023-03-28 Richard Biener <rguenther@suse.de>
12017 PR tree-optimization/107087
12018 * tree-ssa-forwprop.cc (pass_forwprop::execute): Track
12019 executable regions to avoid useless work and to better
12020 propagate degenerate PHIs.
12022 2023-03-28 Costas Argyris <costas.argyris@gmail.com>
12024 * config/i386/x-mingw32-utf8: update comments.
12026 2023-03-28 Richard Sandiford <richard.sandiford@arm.com>
12029 * config/aarch64/aarch64-protos.h (aarch64_vector_load_decl): Declare.
12030 * config/aarch64/aarch64.h (machine_function::vector_load_decls): New
12032 * config/aarch64/aarch64-builtins.cc (aarch64_record_vector_load_arg):
12034 (aarch64_general_gimple_fold_builtin): Delay folding of vld1 until
12035 after inlining. Record which decls are loaded from. Fix handling
12036 of vops for loads and stores.
12037 * config/aarch64/aarch64.cc (aarch64_vector_load_decl): New function.
12038 (aarch64_accesses_vector_load_decl_p): Likewise.
12039 (aarch64_vector_costs::m_stores_to_vector_load_decl): New member
12041 (aarch64_vector_costs::add_stmt_cost): If the function has a vld1
12042 that loads from a decl, treat vector stores to those decls as
12044 (aarch64_vector_costs::finish_cost): ...and in that case,
12045 if the vector code does nothing more than a store, give the
12046 prologue a zero cost as well.
12048 2023-03-28 Richard Biener <rguenther@suse.de>
12051 PR tree-optimization/108129
12052 * genmatch.cc (lower_for): For (match ...) delay
12053 substituting into the match operator if possible.
12054 (dt_operand::gen_gimple_expr): For user_id look at the
12055 first substitute for determining how to access operands.
12056 (dt_operand::gen_generic_expr): Likewise.
12057 (dt_node::gen_kids): Properly sort user_ids according
12058 to their substitutes.
12059 (dt_node::gen_kids_1): Code-generate user_id matching.
12061 2023-03-28 Jakub Jelinek <jakub@redhat.com>
12062 Jonathan Wakely <jwakely@redhat.com>
12064 * gcov-tool.cc (do_merge, do_merge_stream, do_rewrite, do_overlap):
12065 Use subcommand rather than sub-command in function comments.
12067 2023-03-28 Jakub Jelinek <jakub@redhat.com>
12069 PR tree-optimization/109154
12070 * value-range.h (frange::flush_denormals_to_zero): Make it public
12071 rather than private.
12072 * value-range.cc (frange::set): Don't call flush_denormals_to_zero
12074 * range-op-float.cc (range_operator_float::fold_range): Call
12075 flush_denormals_to_zero.
12077 2023-03-28 Jakub Jelinek <jakub@redhat.com>
12079 PR middle-end/106190
12080 * sanopt.cc (pass_sanopt::execute): Return TODO_cleanup_cfg if any
12081 of the IFN_{UB,HWA,A}SAN_* internal fns are lowered.
12083 2023-03-28 Jakub Jelinek <jakub@redhat.com>
12085 * range-op-float.cc (float_widen_lhs_range): Use pass get_nan_state
12086 as 4th argument to set to avoid clear_nan and union_ calls.
12088 2023-03-28 Jakub Jelinek <jakub@redhat.com>
12091 * config/i386/i386.cc (assign_386_stack_local): For DImode
12092 with SLOT_FLOATxFDI_387 and -m32 -mpreferred-stack-boundary=2 pass
12093 align 32 rather than 0 to assign_stack_local.
12095 2023-03-28 Eric Botcazou <ebotcazou@adacore.com>
12098 * config/sparc/sparc.cc (sparc_expand_vcond): Call signed_condition
12099 on operand #3 to get the final condition code. Use std::swap.
12100 * config/sparc/sparc.md (vcondv8qiv8qi): New VIS 4 expander.
12101 (fucmp<gcond:code>8<P:mode>_vis): Move around.
12102 (fpcmpu<gcond:code><GCM:gcm_name><P:mode>_vis): Likewise.
12103 (vcondu<GCM:mode><GCM:mode>): New VIS 4 expander.
12105 2023-03-28 Eric Botcazou <ebotcazou@adacore.com>
12107 * doc/gm2.texi: Add missing Next, Previous and Top fields to most
12108 top-level sections.
12110 2023-03-28 Costas Argyris <costas.argyris@gmail.com>
12112 * config.host: Pull in i386/x-mingw32-utf8 Makefile
12113 fragment and reference utf8rc-mingw32.o explicitly
12115 * config/i386/sym-mingw32.cc: prevent name mangling of
12117 * config/i386/x-mingw32-utf8: Make utf8rc-mingw32.o
12118 depend on manifest file explicitly.
12120 2023-03-28 Richard Biener <rguenther@suse.de>
12123 2023-03-27 Richard Biener <rguenther@suse.de>
12125 PR rtl-optimization/109237
12126 * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
12128 2023-03-28 Richard Biener <rguenther@suse.de>
12130 * common.opt (gdwarf): Remove Negative(gdwarf-).
12132 2023-03-28 Richard Biener <rguenther@suse.de>
12134 * common.opt (gdwarf): Add RejectNegative.
12135 (gdwarf-): Likewise.
12139 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
12141 * config/cris/constraints.md ("T"): Correct to
12142 define_memory_constraint.
12144 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
12146 * config/cris/cris.md (BW2): New mode-iterator.
12147 (lra_szext_decomposed, lra_szext_decomposed_indirect_with_offset): New
12150 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
12152 * config/cris/cris.md ("*add<mode>3_addi"): Improve to bail only
12153 for possible eliminable compares.
12155 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
12157 * config/cris/constraints.md ("R"): Remove unused constraint.
12159 2023-03-27 Jonathan Wakely <jwakely@redhat.com>
12161 PR gcov-profile/109297
12162 * gcov-tool.cc (merge_usage): Fix "subcomand" typo.
12163 (merge_stream_usage): Likewise.
12164 (overlap_usage): Likewise.
12166 2023-03-27 Christoph Müllner <christoph.muellner@vrull.eu>
12169 * config/riscv/thead.md: Add missing mode specifiers.
12171 2023-03-27 Philipp Tomsich <philipp.tomsich@vrull.eu>
12172 Jiangning Liu <jiangning.liu@amperecomputing.com>
12173 Manolis Tsamis <manolis.tsamis@vrull.eu>
12175 * config/aarch64/aarch64.cc: Update vector costs for ampere1.
12177 2023-03-27 Richard Biener <rguenther@suse.de>
12179 PR rtl-optimization/109237
12180 * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
12182 2023-03-27 Richard Biener <rguenther@suse.de>
12185 * lto-wrapper.cc (run_gcc): Parse alternate debug options
12186 as well, they always enable debug.
12188 2023-03-27 Kewen Lin <linkw@linux.ibm.com>
12191 * config/rs6000/emmintrin.h (_mm_bslli_si128): Move the implementation
12193 (_mm_slli_si128): ... here. Change to call _mm_bslli_si128 directly.
12195 2023-03-27 Kewen Lin <linkw@linux.ibm.com>
12198 * config/rs6000/emmintrin.h (_mm_bslli_si128): Check __N is not less
12199 than zero when calling vec_sld.
12200 (_mm_bsrli_si128): Return __A if __N is zero, check __N is bigger than
12201 zero when calling vec_sld.
12202 (_mm_slli_si128): Return __A if _imm5 is zero, check _imm5 is bigger
12203 than zero when calling vec_sld.
12205 2023-03-27 Sandra Loosemore <sandra@codesourcery.com>
12207 * doc/generic.texi (OpenMP): Document OMP_SIMD, OMP_DISTRIBUTE,
12208 OMP_TASKLOOP, and OMP_LOOP with OMP_FOR. Document how collapsed
12209 loops are represented and which fields are vectors. Add
12210 documentation for OMP_FOR_PRE_BODY field. Document internal
12211 form of non-rectangular loops and OMP_FOR_NON_RECTANGULAR.
12212 * tree.def (OMP_FOR): Make documentation consistent with the
12213 Texinfo manual, to fill some gaps and correct errors.
12215 2023-03-26 Andreas Schwab <schwab@linux-m68k.org>
12218 * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
12219 * config/m68k/m68k.cc (m68k_final_prescan_insn): Define.
12220 (handle_move_double): Call it before handle_movsi.
12221 * config/m68k/m68k-protos.h: Declare it.
12223 2023-03-26 Jakub Jelinek <jakub@redhat.com>
12225 PR tree-optimization/109230
12226 * match.pd (fneg/fadd simplify): Verify also odd permutation indexes.
12228 2023-03-26 Jakub Jelinek <jakub@redhat.com>
12231 * predict.cc (compute_function_frequency): Don't call
12232 warn_function_cold if function already has cold attribute.
12234 2023-03-26 Gerald Pfeifer <gerald@pfeifer.com>
12236 * doc/install.texi: Remove anachronistic note
12237 related to languages built and separate source tarballs.
12239 2023-03-25 David Malcolm <dmalcolm@redhat.com>
12242 * diagnostic-format-sarif.cc (read_until_eof): Delete.
12243 (maybe_read_file): Delete.
12244 (sarif_builder::maybe_make_artifact_content_object): Use
12245 get_source_file_content rather than maybe_read_file.
12246 Reject it if it's not valid UTF-8.
12247 * input.cc (file_cache_slot::get_full_file_content): New.
12248 (get_source_file_content): New.
12249 (selftest::check_cpp_valid_utf8_p): New.
12250 (selftest::test_cpp_valid_utf8_p): New.
12251 (selftest::input_cc_tests): Call selftest::test_cpp_valid_utf8_p.
12252 * input.h (get_source_file_content): New prototype.
12254 2023-03-24 David Malcolm <dmalcolm@redhat.com>
12256 * doc/analyzer.texi (Debugging the Analyzer): Add notes on useful
12258 (Special Functions for Debugging the Analyzer): Convert to a
12259 table, and rewrite in places.
12260 (Other Debugging Techniques): Add notes on how to compare two
12261 different exploded graphs.
12263 2023-03-24 David Malcolm <dmalcolm@redhat.com>
12266 * json.cc: Update comments to indicate that we now preserve
12267 insertion order of keys within objects.
12268 (object::print): Traverse keys in insertion order.
12269 (object::set): Preserve insertion order of keys.
12270 (selftest::test_writing_objects): Add an additional key to verify
12271 that we preserve insertion order.
12272 * json.h (object::m_keys): New field.
12274 2023-03-24 Andrew MacLeod <amacleod@redhat.com>
12276 PR tree-optimization/109238
12277 * gimple-range-cache.cc (ranger_cache::resolve_dom): Ignore
12278 predecessors which this block dominates.
12280 2023-03-24 Richard Biener <rguenther@suse.de>
12282 PR tree-optimization/106912
12283 * tree-profile.cc (tree_profiling): Update stmts only when
12284 profiling or testing coverage. Make sure to update calls
12285 fntype, stripping 'const' there.
12287 2023-03-24 Jakub Jelinek <jakub@redhat.com>
12289 PR middle-end/109258
12290 * builtins.cc (inline_expand_builtin_bytecmp): Return NULL_RTX early
12291 if target == const0_rtx.
12293 2023-03-24 Alexandre Oliva <oliva@adacore.com>
12295 * doc/sourcebuild.texi (weak_undefined, posix_memalign):
12296 Document options and effective targets.
12298 2023-03-24 Costas Argyris <costas.argyris@gmail.com>
12300 * config/i386/x-mingw32-utf8: Make HOST_EXTRA_OBJS_SYMBOL
12303 2023-03-23 Pat Haugen <pthaugen@linux.ibm.com>
12305 * config/rs6000/rs6000.md (*mod<mode>3, umod<mode>3): Add
12306 non-earlyclobber alternative.
12308 2023-03-23 Andrew Pinski <apinski@marvell.com>
12311 * fold-const.cc (maybe_lvalue_p): Treat COMPOUND_LITERAL_EXPR
12314 2023-03-23 Richard Biener <rguenther@suse.de>
12316 PR tree-optimization/107569
12317 * tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_stmt):
12318 Do not push SSA names with zero uses as available leader.
12319 (process_bb): Likewise.
12321 2023-03-23 Richard Biener <rguenther@suse.de>
12323 PR tree-optimization/109262
12324 * tree-ssa-forwprop.cc (pass_forwprop::execute): When
12325 combining a piecewise complex load avoid touching loads
12326 that throw internally. Use fun, not cfun throughout.
12328 2023-03-23 Jakub Jelinek <jakub@redhat.com>
12330 * value-range.cc (irange::irange_union, irange::intersect): Fix
12331 comment spelling bugs.
12332 * gimple-range-trace.cc (range_tracer::do_header): Likewise.
12333 * gimple-range-trace.h: Likewise.
12334 * gimple-range-edge.cc: Likewise.
12335 (gimple_outgoing_range_stmt_p,
12336 gimple_outgoing_range::switch_edge_range,
12337 gimple_outgoing_range::edge_range_p): Likewise.
12338 * gimple-range.cc (gimple_ranger::prefill_stmt_dependencies,
12339 gimple_ranger::fold_stmt, gimple_ranger::register_transitive_infer,
12340 assume_query::assume_query, assume_query::calculate_phi): Likewise.
12341 * gimple-range-edge.h: Likewise.
12342 * value-range.h (Value_Range::set, Value_Range::lower_bound,
12343 Value_Range::upper_bound, frange::set_undefined): Likewise.
12344 * gimple-range-gori.h (range_def_chain::depend, gori_map::m_outgoing,
12345 gori_compute): Likewise.
12346 * gimple-range-fold.h (fold_using_range): Likewise.
12347 * gimple-range-path.cc (path_range_query::compute_ranges_in_phis):
12349 * gimple-range-gori.cc (range_def_chain::in_chain_p,
12350 range_def_chain::dump, gori_map::calculate_gori,
12351 gori_compute::compute_operand_range_switch,
12352 gori_compute::logical_combine, gori_compute::refine_using_relation,
12353 gori_compute::compute_operand1_range, gori_compute::may_recompute_p):
12355 * gimple-range.h: Likewise.
12356 (enable_ranger): Likewise.
12357 * range-op.h (empty_range_varying): Likewise.
12358 * value-query.h (value_query): Likewise.
12359 * gimple-range-cache.cc (block_range_cache::set_bb_range,
12360 block_range_cache::dump, ssa_global_cache::clear_global_range,
12361 temporal_cache::temporal_value, temporal_cache::current_p,
12362 ranger_cache::range_of_def, ranger_cache::propagate_updated_value,
12363 ranger_cache::range_from_dom, ranger_cache::register_inferred_value):
12365 * gimple-range-fold.cc (fur_edge::get_phi_operand,
12366 fur_stmt::get_operand, gimple_range_adjustment,
12367 fold_using_range::range_of_phi,
12368 fold_using_range::relation_fold_and_or): Likewise.
12369 * value-range-storage.h (irange_storage_slot::MAX_INTS): Likewise.
12370 * value-query.cc (range_query::value_of_expr,
12371 range_query::value_on_edge, range_query::query_relation): Likewise.
12372 * tree-vrp.cc (remove_unreachable::remove_and_update_globals,
12373 intersect_range_with_nonzero_bits): Likewise.
12374 * gimple-range-infer.cc (gimple_infer_range::check_assume_func,
12375 exit_range): Likewise.
12376 * value-relation.h: Likewise.
12377 (equiv_oracle, relation_trio::relation_trio, value_relation,
12378 value_relation::value_relation, pe_min): Likewise.
12379 * range-op-float.cc (range_operator_float::rv_fold,
12380 frange_arithmetic, foperator_unordered_equal::op1_range,
12381 foperator_div::rv_fold): Likewise.
12382 * gimple-range-op.cc (cfn_clz::fold_range): Likewise.
12383 * value-relation.cc (equiv_oracle::query_relation,
12384 equiv_oracle::register_equiv, equiv_oracle::add_equiv_to_block,
12385 value_relation::apply_transitive, relation_chain_head::find_relation,
12386 dom_oracle::query_relation, dom_oracle::find_relation_block,
12387 dom_oracle::find_relation_dom, path_oracle::register_equiv): Likewise.
12388 * range-op.cc (range_operator::wi_fold_in_parts_equiv,
12389 create_possibly_reversed_range, adjust_op1_for_overflow,
12390 operator_mult::wi_fold, operator_exact_divide::op1_range,
12391 operator_cast::lhs_op1_relation, operator_cast::fold_pair,
12392 operator_cast::fold_range, operator_abs::wi_fold, range_op_cast_tests,
12393 range_op_lshift_tests): Likewise.
12395 2023-03-23 Andrew Stubbs <ams@codesourcery.com>
12397 * config/gcn/gcn.cc (gcn_class_max_nregs): Handle vectors in SGPRs.
12398 (move_callee_saved_registers): Detect the bug condition early.
12400 2023-03-23 Andrew Stubbs <ams@codesourcery.com>
12402 * config/gcn/gcn-protos.h (gcn_stepped_zero_int_parallel_p): New.
12403 * config/gcn/gcn-valu.md (V_1REG_ALT): New.
12405 (vec_extract<V_1REG:mode><V_1REG_ALT:mode>_nop): New.
12406 (vec_extract<V_2REG:mode><V_2REG_ALT:mode>_nop): New.
12407 (vec_extract<V_ALL:mode><V_ALL_ALT:mode>): Use new patterns.
12408 * config/gcn/gcn.cc (gcn_stepped_zero_int_parallel_p): New.
12409 * config/gcn/predicates.md (ascending_zero_int_parallel): New.
12411 2023-03-23 Jakub Jelinek <jakub@redhat.com>
12413 PR tree-optimization/109176
12414 * tree-vect-generic.cc (expand_vector_condition): If a has
12415 vector boolean type and is a comparison, also check if both
12416 the comparison and VEC_COND_EXPR could be successfully expanded
12419 2023-03-23 Pan Li <pan2.li@intel.com>
12420 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
12424 * config/riscv/riscv-modes.def (ADJUST_BYTESIZE): Adjust size
12425 for vector mask modes.
12426 * config/riscv/riscv.cc (riscv_v_adjust_bytesize): New.
12427 * config/riscv/riscv.h (riscv_v_adjust_bytesize): New.
12429 2023-03-23 Songhe Zhu <zhusonghe@eswincomputing.com>
12431 * config/riscv/multilib-generator: Adjusting the loop of 'alt' in 'alts'.
12433 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
12436 * config/riscv/riscv-protos.h (emit_vlmax_vsetvl): Define as global.
12437 (emit_vlmax_op): Ditto.
12438 * config/riscv/riscv-v.cc (get_sew): New function.
12439 (emit_vlmax_vsetvl): Adapt function.
12440 (emit_pred_op): Ditto.
12441 (emit_vlmax_op): Ditto.
12442 (emit_nonvlmax_op): Ditto.
12443 (legitimize_move): Fix LRA ICE.
12444 (gen_no_side_effects_vsetvl_rtx): Adapt function.
12445 * config/riscv/vector.md (@mov<V_FRACT:mode><P:mode>_lra): New pattern.
12446 (@mov<VB:mode><P:mode>_lra): Ditto.
12447 (*mov<V_FRACT:mode><P:mode>_lra): Ditto.
12448 (*mov<VB:mode><P:mode>_lra): Ditto.
12450 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
12453 * config/riscv/riscv-vector-builtins-bases.cc (class vlenb): Add
12454 __riscv_vlenb support.
12456 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
12457 * config/riscv/riscv-vector-builtins-functions.def (vlenb): Ditto.
12458 * config/riscv/riscv-vector-builtins-shapes.cc (struct vlenb_def): Ditto.
12460 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
12461 * config/riscv/riscv-vector-builtins.cc: Ditto.
12463 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
12464 kito-cheng <kito.cheng@sifive.com>
12466 * config/riscv/riscv-vsetvl.cc (reg_available_p): Fix bugs.
12467 (pass_vsetvl::compute_local_backward_infos): Fix bugs.
12468 (pass_vsetvl::need_vsetvl): Fix bugs.
12469 (pass_vsetvl::backward_demand_fusion): Fix bugs.
12470 (pass_vsetvl::demand_fusion): Fix bugs.
12471 (eliminate_insn): Fix bugs.
12472 (insert_vsetvl): Ditto.
12473 (pass_vsetvl::emit_local_forward_vsetvls): Ditto.
12474 * config/riscv/riscv-vsetvl.h (enum vsetvl_type): Ditto.
12475 * config/riscv/vector.md: Ditto.
12477 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
12478 kito-cheng <kito.cheng@sifive.com>
12480 * config/riscv/riscv-vector-builtins-bases.cc: Fix ternary bug.
12481 * config/riscv/vector-iterators.md (nmsac): Ditto.
12487 * config/riscv/vector.md (@pred_mul_<optab><mode>): Ditto.
12488 (@pred_mul_plus<mode>): Ditto.
12489 (*pred_madd<mode>): Ditto.
12490 (*pred_macc<mode>): Ditto.
12491 (*pred_mul_plus<mode>): Ditto.
12492 (@pred_mul_plus<mode>_scalar): Ditto.
12493 (*pred_madd<mode>_scalar): Ditto.
12494 (*pred_macc<mode>_scalar): Ditto.
12495 (*pred_mul_plus<mode>_scalar): Ditto.
12496 (*pred_madd<mode>_extended_scalar): Ditto.
12497 (*pred_macc<mode>_extended_scalar): Ditto.
12498 (*pred_mul_plus<mode>_extended_scalar): Ditto.
12499 (@pred_minus_mul<mode>): Ditto.
12500 (*pred_<madd_nmsub><mode>): Ditto.
12501 (*pred_nmsub<mode>): Ditto.
12502 (*pred_<macc_nmsac><mode>): Ditto.
12503 (*pred_nmsac<mode>): Ditto.
12504 (*pred_mul_<optab><mode>): Ditto.
12505 (*pred_minus_mul<mode>): Ditto.
12506 (@pred_mul_<optab><mode>_scalar): Ditto.
12507 (@pred_minus_mul<mode>_scalar): Ditto.
12508 (*pred_<madd_nmsub><mode>_scalar): Ditto.
12509 (*pred_nmsub<mode>_scalar): Ditto.
12510 (*pred_<macc_nmsac><mode>_scalar): Ditto.
12511 (*pred_nmsac<mode>_scalar): Ditto.
12512 (*pred_mul_<optab><mode>_scalar): Ditto.
12513 (*pred_minus_mul<mode>_scalar): Ditto.
12514 (*pred_<madd_nmsub><mode>_extended_scalar): Ditto.
12515 (*pred_nmsub<mode>_extended_scalar): Ditto.
12516 (*pred_<macc_nmsac><mode>_extended_scalar): Ditto.
12517 (*pred_nmsac<mode>_extended_scalar): Ditto.
12518 (*pred_mul_<optab><mode>_extended_scalar): Ditto.
12519 (*pred_minus_mul<mode>_extended_scalar): Ditto.
12520 (*pred_<madd_msub><mode>): Ditto.
12521 (*pred_<macc_msac><mode>): Ditto.
12522 (*pred_<madd_msub><mode>_scalar): Ditto.
12523 (*pred_<macc_msac><mode>_scalar): Ditto.
12524 (@pred_neg_mul_<optab><mode>): Ditto.
12525 (@pred_mul_neg_<optab><mode>): Ditto.
12526 (*pred_<nmadd_msub><mode>): Ditto.
12527 (*pred_<nmsub_nmadd><mode>): Ditto.
12528 (*pred_<nmacc_msac><mode>): Ditto.
12529 (*pred_<nmsac_nmacc><mode>): Ditto.
12530 (*pred_neg_mul_<optab><mode>): Ditto.
12531 (*pred_mul_neg_<optab><mode>): Ditto.
12532 (@pred_neg_mul_<optab><mode>_scalar): Ditto.
12533 (@pred_mul_neg_<optab><mode>_scalar): Ditto.
12534 (*pred_<nmadd_msub><mode>_scalar): Ditto.
12535 (*pred_<nmsub_nmadd><mode>_scalar): Ditto.
12536 (*pred_<nmacc_msac><mode>_scalar): Ditto.
12537 (*pred_<nmsac_nmacc><mode>_scalar): Ditto.
12538 (*pred_neg_mul_<optab><mode>_scalar): Ditto.
12539 (*pred_mul_neg_<optab><mode>_scalar): Ditto.
12540 (@pred_widen_neg_mul_<optab><mode>): Ditto.
12541 (@pred_widen_mul_neg_<optab><mode>): Ditto.
12542 (@pred_widen_neg_mul_<optab><mode>_scalar): Ditto.
12543 (@pred_widen_mul_neg_<optab><mode>_scalar): Ditto.
12545 2023-03-23 liuhongt <hongtao.liu@intel.com>
12547 * builtins.cc (builtin_memset_read_str): Replace
12548 targetm.gen_memset_scratch_rtx with gen_reg_rtx.
12549 (builtin_memset_gen_str): Ditto.
12550 * config/i386/i386-expand.cc
12551 (ix86_convert_const_wide_int_to_broadcast): Replace
12552 ix86_gen_scratch_sse_rtx with gen_reg_rtx.
12553 (ix86_expand_vector_move): Ditto.
12554 * config/i386/i386-protos.h (ix86_gen_scratch_sse_rtx):
12556 * config/i386/i386.cc (ix86_gen_scratch_sse_rtx): Removed.
12557 (TARGET_GEN_MEMSET_SCRATCH_RTX): Removed.
12558 * doc/tm.texi: Remove TARGET_GEN_MEMSET_SCRATCH_RTX.
12559 * doc/tm.texi.in: Ditto.
12560 * target.def: Ditto.
12562 2023-03-22 Vladimir N. Makarov <vmakarov@redhat.com>
12564 * lra.cc (lra): Do not repeat inheritance and live range splitting
12565 when asm error is found.
12567 2023-03-22 Andrew Jenner <andrew@codesourcery.com>
12569 * config/gcn/gcn-protos.h (gcn_expand_dpp_swap_pairs_insn)
12570 (gcn_expand_dpp_distribute_even_insn)
12571 (gcn_expand_dpp_distribute_odd_insn): Declare.
12572 * config/gcn/gcn-valu.md (@dpp_swap_pairs<mode>)
12573 (@dpp_distribute_even<mode>, @dpp_distribute_odd<mode>)
12574 (cmul<conj_op><mode>3, cml<addsub_as><mode>4, vec_addsub<mode>3)
12575 (cadd<rot><mode>3, vec_fmaddsub<mode>4, vec_fmsubadd<mode>4)
12576 (fms<mode>4<exec>, fms<mode>4_negop2<exec>, fms<mode>4)
12577 (fms<mode>4_negop2): New patterns.
12578 * config/gcn/gcn.cc (gcn_expand_dpp_swap_pairs_insn)
12579 (gcn_expand_dpp_distribute_even_insn)
12580 (gcn_expand_dpp_distribute_odd_insn): New functions.
12581 * config/gcn/gcn.md: Add entries to unspec enum.
12583 2023-03-22 Aldy Hernandez <aldyh@redhat.com>
12585 PR tree-optimization/109008
12586 * value-range.cc (frange::set): Add nan_state argument.
12587 * value-range.h (class nan_state): New.
12588 (frange::get_nan_state): New.
12590 2023-03-22 Martin Liska <mliska@suse.cz>
12592 * configure: Regenerate.
12594 2023-03-21 Joseph Myers <joseph@codesourcery.com>
12596 * stor-layout.cc (finalize_type_size): Copy TYPE_TYPELESS_STORAGE
12599 2023-03-21 Andrew MacLeod <amacleod@redhat.com>
12601 PR tree-optimization/109192
12602 * gimple-range-gori.cc (gori_compute::compute_operand_range):
12603 Terminate gori calculations if a relation is not relevant.
12604 * value-relation.h (value_relation::set_relation): Allow
12605 equality between op1 and op2 if they are the same.
12607 2023-03-21 Richard Biener <rguenther@suse.de>
12609 PR tree-optimization/109219
12610 * tree-vect-loop.cc (vectorizable_reduction): Check
12611 slp_node, not STMT_SLP_TYPE.
12612 * tree-vect-stmts.cc (vectorizable_condition): Likewise.
12613 * tree-vect-slp.cc (vect_slp_analyze_node_operations_1):
12614 Remove assertion on STMT_SLP_TYPE.
12616 2023-03-21 Jakub Jelinek <jakub@redhat.com>
12618 PR tree-optimization/109215
12619 * tree.h (enum special_array_member): Adjust comments for int_0
12621 * tree.cc (component_ref_sam_type): Clear zero_elts if memtype
12622 has zero sized element type and the array has variable number of
12623 elements or constant one or more elements.
12624 (component_ref_size): Adjust comments, formatting fix.
12626 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
12628 * configure.ac: Add check for the Texinfo 6.8
12629 CONTENTS_OUTPUT_LOCATION customization variable and set it if
12631 * configure: Regenerate.
12632 * Makefile.in (MAKEINFO_TOC_INLINE_FLAG): New variable. Set by
12633 configure.ac to -c CONTENTS_OUTPUT_LOCATION=inline if
12634 CONTENTS_OUTPUT_LOCATION support is detected, empty otherwise.
12635 ($(build_htmldir)/%/index.html): Pass MAKEINFO_TOC_INLINE_FLAG.
12637 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
12639 * doc/extend.texi: Associate use_hazard_barrier_return index
12640 entry with its attribute.
12641 * doc/invoke.texi: Associate -fcanon-prefix-map index entry with
12644 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
12646 * doc/implement-c.texi: Remove usage of @gol.
12647 * doc/invoke.texi: Ditto.
12648 * doc/sourcebuild.texi: Ditto.
12649 * doc/include/gcc-common.texi: Remove @gol. In new Makeinfo and
12650 texinfo.tex versions, the bug it was working around appears to
12653 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
12655 * doc/include/texinfo.tex: Update to 2023-01-17.19.
12657 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
12659 * doc/include/gcc-common.texi: Add @defbuiltin{,x} and
12660 @enddefbuiltin for defining built-in functions.
12661 * doc/extend.texi: Apply @defbuiltin{,x} to many, but not all,
12662 places where it should be used.
12664 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
12666 * doc/extend.texi (Formatted Output Function Checking): New
12667 subsection for grouping together printf et al.
12668 (Exception handling) Fix missing @ sign before copyright
12669 header, which lead to the copyright line leaking into
12670 '(gcc)Exception handling'.
12671 * doc/gcc.texi: Set document language to en_US.
12672 (@copying): Wrap front cover texts in quotations, move in manual
12675 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
12677 * doc/gcc.texi: Add the Indices appendix, to make texinfo
12678 generate nice indices overview page.
12680 2023-03-21 Richard Biener <rguenther@suse.de>
12682 PR tree-optimization/109170
12683 * gimple-range-op.cc (cfn_pass_through_arg1): New.
12684 (gimple_range_op_handler::maybe_builtin_call): Handle
12685 __builtin_expect via cfn_pass_through_arg1.
12687 2023-03-20 Michael Meissner <meissner@linux.ibm.com>
12690 * config/rs6000/rs6000.cc (create_complex_muldiv): Delete.
12691 (init_float128_ieee): Delete code to switch complex multiply and divide
12693 (complex_multiply_builtin_code): New helper function.
12694 (complex_divide_builtin_code): Likewise.
12695 (rs6000_mangle_decl_assembler_name): Add support for mangling the name
12696 of complex 128-bit multiply and divide built-in functions.
12698 2023-03-20 Peter Bergner <bergner@linux.ibm.com>
12701 * config/rs6000/rs6000-builtin.cc (stv_expand_builtin): Use tmode.
12703 2023-03-19 Jonny Grant <jg@jguk.org>
12705 * doc/extend.texi (Common Function Attributes) <nonnull>:
12708 2023-03-18 Peter Bergner <bergner@linux.ibm.com>
12710 PR rtl-optimization/109179
12711 * lra-constraints.cc (combine_reload_insn): Enforce TO is not a debug
12712 insn or note. Move the tests earlier to guard lra_get_insn_recog_data.
12714 2023-03-17 Jakub Jelinek <jakub@redhat.com>
12717 * function.h (push_struct_function): Add ABSTRACT_P argument defaulted
12719 * function.cc (push_struct_function): Add ABSTRACT_P argument, pass it
12720 to allocate_struct_function instead of false.
12721 * tree-inline.cc (initialize_cfun): Don't copy DECL_ARGUMENTS
12722 nor DECL_RESULT here. Pass true as ABSTRACT_P to
12723 push_struct_function. Call targetm.target_option.relayout_function
12725 (tree_function_versioning): Formatting fix.
12727 2023-03-17 Vladimir N. Makarov <vmakarov@redhat.com>
12729 * lra-constraints.cc: Include hooks.h.
12730 (combine_reload_insn): New function.
12731 (lra_constraints): Call it.
12733 2023-03-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
12734 kito-cheng <kito.cheng@sifive.com>
12736 * config/riscv/riscv-v.cc (legitimize_move): Allow undef value
12737 as legitimate value.
12738 * config/riscv/riscv-vector-builtins.cc
12739 (function_expander::use_ternop_insn): Fix bugs of ternary intrinsic.
12740 (function_expander::use_widen_ternop_insn): Ditto.
12741 * config/riscv/vector.md (@vundefined<mode>): New pattern.
12742 (pred_mul_<optab><mode>_undef_merge): Remove.
12743 (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
12744 (*pred_mul_<optab><mode>_undef_merge_extended_scalar): Ditto.
12745 (pred_neg_mul_<optab><mode>_undef_merge): Ditto.
12746 (*pred_neg_mul_<optab><mode>_undef_merge_scalar): Ditto.
12748 2023-03-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
12751 * config/riscv/riscv.md: Fix subreg bug.
12753 2023-03-17 Jakub Jelinek <jakub@redhat.com>
12755 PR middle-end/108685
12756 * omp-expand.cc (expand_omp_for_ordered_loops): Add L0_BB argument,
12757 use its loop_father rather than BODY_BB's loop_father.
12758 (expand_omp_for_generic): Adjust expand_omp_for_ordered_loops caller.
12759 If broken_loop with ordered > collapse and at least one of those
12760 extra loops aren't guaranteed to have at least one iteration, change
12761 l0_bb's loop_father to entry_bb's loop_father. Set cont_bb's
12762 loop_father to l0_bb's loop_father rather than l1_bb's.
12764 2023-03-17 Jakub Jelinek <jakub@redhat.com>
12767 * gdbhooks.py (TreePrinter.to_string): Wrap
12768 gdb.parse_and_eval('tree_code_type') in a try block, parse
12769 and eval 'tree_code_type_tmpl<0>::tree_code_type' instead if it
12770 raises exception. Update comments for the recent tree_code_type
12773 2023-03-17 Sandra Loosemore <sandra@codesourcery.com>
12775 * doc/extend.texi (BPF Built-in Functions): Fix numerous markup
12776 issues. Add more line breaks to example so it doesn't overflow
12779 2023-03-17 Sandra Loosemore <sandra@codesourcery.com>
12781 * doc/extend.texi (Common Function Attributes) <access>: Fix bad
12782 line breaks in examples.
12783 <malloc>: Fix bad line breaks in running text, also copy-edit
12785 (Extended Asm) <Generic Operand Modifiers>: Fix @multitable width.
12786 * doc/invoke.texi (Option Summary) <Developer Options>: Fix misplaced
12788 (C++ Dialect Options) <-fcontracts>: Add line break in example.
12789 <-Wctad-maybe-unsupported>: Likewise.
12790 <-Winvalid-constexpr>: Likewise.
12791 (Warning Options) <-Wdangling-pointer>: Likewise.
12792 <-Winterference-size>: Likewise.
12793 <-Wvla-parameter>: Likewise.
12794 (Static Analyzer Options): Fix bad line breaks in running text,
12795 plus add some missing markup.
12796 (Optimize Options) <openacc-privatization>: Fix more bad line
12797 breaks in running text.
12799 2023-03-16 Uros Bizjak <ubizjak@gmail.com>
12801 * config/i386/i386-expand.cc (expand_vec_perm_pblendv):
12802 Handle 8-byte modes only with TARGET_MMX_WITH_SSE.
12803 (expand_vec_perm_2perm_pblendv): Ditto.
12805 2023-03-16 Martin Liska <mliska@suse.cz>
12807 PR middle-end/106133
12808 * gcc.cc (driver_handle_option): Use x_main_input_basename
12809 if x_dump_base_name is null.
12810 * opts.cc (common_handle_option): Likewise.
12812 2023-03-16 Richard Biener <rguenther@suse.de>
12814 PR tree-optimization/109123
12815 * gimple-ssa-warn-access.cc (pass_waccess::warn_invalid_pointer):
12816 Do not emit -Wuse-after-free late.
12817 (pass_waccess::check_call): Always check call pointer uses.
12819 2023-03-16 Richard Biener <rguenther@suse.de>
12821 PR tree-optimization/109141
12822 * tree-dfa.h (renumber_gimple_stmt_uids_in_block): New.
12823 * tree-dfa.cc (renumber_gimple_stmt_uids_in_block): Split
12825 (renumber_gimple_stmt_uids): ... here and
12826 (renumber_gimple_stmt_uids_in_blocks): ... here.
12827 * gimple-ssa-warn-access.cc (pass_waccess::use_after_inval_p):
12828 Use renumber_gimple_stmt_uids_in_block to also assign UIDs
12830 (pass_waccess::check_pointer_uses): Process all PHIs.
12832 2023-03-15 David Malcolm <dmalcolm@redhat.com>
12835 * diagnostic-format-sarif.cc (class sarif_invocation): New.
12836 (class sarif_ice_notification): New.
12837 (sarif_builder::m_invocation_obj): New field.
12838 (sarif_invocation::add_notification_for_ice): New.
12839 (sarif_invocation::prepare_to_flush): New.
12840 (sarif_ice_notification::sarif_ice_notification): New.
12841 (sarif_builder::sarif_builder): Add m_invocation_obj.
12842 (sarif_builder::end_diagnostic): Special-case DK_ICE and
12844 (sarif_builder::flush_to_file): Call prepare_to_flush on
12845 m_invocation_obj. Pass the latter to make_top_level_object.
12846 (sarif_builder::make_result_object): Move creation of "locations"
12848 (sarif_builder::make_locations_arr): ...this new function.
12849 (sarif_builder::make_top_level_object): Add "invocation_obj" param
12850 and pass it to make_run_object.
12851 (sarif_builder::make_run_object): Add "invocation_obj" param and
12853 (sarif_ice_handler): New callback.
12854 (diagnostic_output_format_init_sarif): Wire up sarif_ice_handler.
12855 * diagnostic.cc (diagnostic_initialize): Initialize new field
12857 (diagnostic_action_after_output): If it is set, make one attempt
12858 to call ice_handler_cb.
12859 * diagnostic.h (diagnostic_context::ice_handler_cb): New field.
12861 2023-03-15 Uros Bizjak <ubizjak@gmail.com>
12863 * config/i386/i386-expand.cc (expand_vec_perm_blend):
12864 Handle 8-byte modes only with TARGET_MMX_WITH_SSE. Handle V2SFmode
12865 and fix V2HImode handling.
12866 (expand_vec_perm_1): Try to emit BLEND instruction
12867 before MOVSS/MOVSD.
12868 * config/i386/mmx.md (*mmx_blendps): New insn pattern.
12870 2023-03-15 Tobias Burnus <tobias@codesourcery.com>
12872 * omp-low.cc (omp_runtime_api_call): Add omp_in_explicit_task.
12874 2023-03-15 Richard Biener <rguenther@suse.de>
12876 * gimple-ssa-warn-access.cc (pass_waccess::check_pointer_uses):
12877 Do not diagnose clobbers.
12879 2023-03-15 Richard Biener <rguenther@suse.de>
12881 PR tree-optimization/109139
12882 * tree-ssa-live.cc (remove_unused_locals): Look at the
12883 base address for unused decls on the LHS of .DEFERRED_INIT.
12885 2023-03-15 Xi Ruoyao <xry111@xry111.site>
12888 * builtins.cc (inline_string_cmp): Force the character
12889 difference into "result" pseudo-register, instead of reassign
12890 the pseudo-register.
12892 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
12894 * config.gcc: Add thead.o to RISC-V extra_objs.
12895 * config/riscv/peephole.md: Add mempair peephole passes.
12896 * config/riscv/riscv-protos.h (riscv_split_64bit_move_p): New
12898 (th_mempair_operands_p): Likewise.
12899 (th_mempair_order_operands): Likewise.
12900 (th_mempair_prepare_save_restore_operands): Likewise.
12901 (th_mempair_save_restore_regs): Likewise.
12902 (th_mempair_output_move): Likewise.
12903 * config/riscv/riscv.cc (riscv_save_reg): Move code.
12904 (riscv_restore_reg): Move code.
12905 (riscv_for_each_saved_reg): Add code to emit mempair insns.
12906 * config/riscv/t-riscv: Add thead.cc.
12907 * config/riscv/thead.md (*th_mempair_load_<GPR:mode>2):
12909 (*th_mempair_store_<GPR:mode>2): Likewise.
12910 (*th_mempair_load_extendsidi2): Likewise.
12911 (*th_mempair_load_zero_extendsidi2): Likewise.
12912 * config/riscv/thead.cc: New file.
12914 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
12916 * config/riscv/constraints.md (TARGET_XTHEADFMV ? FP_REGS : NO_REGS)
12917 New constraint "th_f_fmv".
12918 (TARGET_XTHEADFMV ? GR_REGS : NO_REGS): New constraint
12920 * config/riscv/riscv.cc (riscv_split_doubleword_move):
12921 Add split code for XTheadFmv.
12922 (riscv_secondary_memory_needed): XTheadFmv does not need
12924 * config/riscv/riscv.md: Add new UNSPEC_XTHEADFMV and
12925 UNSPEC_XTHEADFMV_HW. Add support for XTheadFmv to
12926 movdf_hardfloat_rv32.
12927 * config/riscv/thead.md (th_fmv_hw_w_x): New INSN.
12928 (th_fmv_x_w): New INSN.
12929 (th_fmv_x_hw): New INSN.
12931 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
12933 * config/riscv/riscv.md (maddhisi4): New expand.
12934 (msubhisi4): New expand.
12935 * config/riscv/thead.md (*th_mula<mode>): New pattern.
12936 (*th_mulawsi): New pattern.
12937 (*th_mulawsi2): New pattern.
12938 (*th_maddhisi4): New pattern.
12939 (*th_sextw_maddhisi4): New pattern.
12940 (*th_muls<mode>): New pattern.
12941 (*th_mulswsi): New pattern.
12942 (*th_mulswsi2): New pattern.
12943 (*th_msubhisi4): New pattern.
12944 (*th_sextw_msubhisi4): New pattern.
12946 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
12948 * config/riscv/iterators.md (TARGET_64BIT): Add GPR2 iterator.
12949 * config/riscv/riscv-protos.h (riscv_expand_conditional_move):
12951 * config/riscv/riscv.cc (riscv_rtx_costs): Add costs for
12953 (riscv_expand_conditional_move): New function.
12954 (riscv_expand_conditional_move_onesided): New function.
12955 * config/riscv/riscv.md: Add support for XTheadCondMov.
12956 * config/riscv/thead.md (*th_cond_mov<GPR:mode><GPR2:mode>): Add
12957 support for XTheadCondMov.
12958 (*th_cond_gpr_mov<GPR:mode><GPR2:mode>): Likewise.
12960 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
12962 * config/riscv/bitmanip.md (clzdi2): New expand.
12963 (clzsi2): New expand.
12964 (ctz<mode>2): New expand.
12965 (popcount<mode>2): New expand.
12966 (<bitmanip_optab>si2): Rename INSN.
12967 (*<bitmanip_optab>si2): Hide INSN name.
12968 (<bitmanip_optab>di2): Rename INSN.
12969 (*<bitmanip_optab>di2): Hide INSN name.
12970 (rotrsi3): Remove INSN.
12971 (rotr<mode>3): Add expand.
12972 (*rotrsi3): New INSN.
12973 (rotrdi3): Rename INSN.
12974 (*rotrdi3): Hide INSN name.
12975 (rotrsi3_sext): Rename INSN.
12976 (*rotrsi3_sext): Hide INSN name.
12977 (bswap<mode>2): Remove INSN.
12978 (bswapdi2): Add expand.
12979 (bswapsi2): Add expand.
12980 (*bswap<mode>2): Hide INSN name.
12981 * config/riscv/riscv.cc (riscv_rtx_costs): Add costs for sign
12983 * config/riscv/riscv.md (extv<mode>): New expand.
12984 (extzv<mode>): New expand.
12985 * config/riscv/thead.md (*th_srri<mode>3): New INSN.
12986 (*th_ext<mode>): New INSN.
12987 (*th_extu<mode>): New INSN.
12988 (*th_clz<mode>2): New INSN.
12989 (*th_rev<mode>2): New INSN.
12991 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
12993 * config/riscv/riscv.cc (riscv_rtx_costs): Add xthead:tst cost.
12994 * config/riscv/thead.md (*th_tst<mode>3): New INSN.
12996 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
12998 * config/riscv/riscv.md: Include thead.md
12999 * config/riscv/thead.md: New file.
13001 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
13003 * config/riscv/riscv-cores.def (RISCV_CORE): Add "thead-c906".
13005 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
13007 * common/config/riscv/riscv-common.cc: Add xthead* extensions.
13008 * config/riscv/riscv-opts.h (MASK_XTHEADBA): New.
13009 (MASK_XTHEADBB): New.
13010 (MASK_XTHEADBS): New.
13011 (MASK_XTHEADCMO): New.
13012 (MASK_XTHEADCONDMOV): New.
13013 (MASK_XTHEADFMEMIDX): New.
13014 (MASK_XTHEADFMV): New.
13015 (MASK_XTHEADINT): New.
13016 (MASK_XTHEADMAC): New.
13017 (MASK_XTHEADMEMIDX): New.
13018 (MASK_XTHEADMEMPAIR): New.
13019 (MASK_XTHEADSYNC): New.
13020 (TARGET_XTHEADBA): New.
13021 (TARGET_XTHEADBB): New.
13022 (TARGET_XTHEADBS): New.
13023 (TARGET_XTHEADCMO): New.
13024 (TARGET_XTHEADCONDMOV): New.
13025 (TARGET_XTHEADFMEMIDX): New.
13026 (TARGET_XTHEADFMV): New.
13027 (TARGET_XTHEADINT): New.
13028 (TARGET_XTHEADMAC): New.
13029 (TARGET_XTHEADMEMIDX): New.
13030 (TARGET_XTHEADMEMPAIR): new.
13031 (TARGET_XTHEADSYNC): New.
13032 * config/riscv/riscv.opt: Add riscv_xthead_subext.
13034 2023-03-15 Hu, Lin1 <lin1.hu@intel.com>
13037 * config/i386/i386-builtin.def (__builtin_ia32_vaesdec_v16qi,
13038 __builtin_ia32_vaesdeclast_v16qi,__builtin_ia32_vaesenc_v16qi,
13039 __builtin_ia32_vaesenclast_v16qi): Require OPTION_MASK_ISA_AVX512VL.
13041 2023-03-14 Jakub Jelinek <jakub@redhat.com>
13044 * config/i386/i386-expand.cc (split_double_concat): Fix splitting
13045 when lo is equal to dhi and hi is a MEM which uses dlo register.
13047 2023-03-14 Martin Jambor <mjambor@suse.cz>
13050 * ipa-cp.cc (update_profiling_info): Drop counts of orig_node to
13051 global0 instead of zeroing when it does not have as many counts as
13054 2023-03-14 Martin Jambor <mjambor@suse.cz>
13057 * ipa-cp.cc (update_specialized_profile): Drop orig_node_count to
13058 ipa count, remove assert, lenient_count_portion_handling, dump
13059 also orig_node_count.
13061 2023-03-14 Uros Bizjak <ubizjak@gmail.com>
13063 * config/i386/i386-expand.cc (expand_vec_perm_movs):
13064 Handle V2SImode for TARGET_MMX_WITH_SSE.
13065 * config/i386/mmx.md (*mmx_movss_<mode>): Rename from *mmx_movss
13066 using V2FI mode iterator to handle both V2SI and V2SF modes.
13068 2023-03-14 Sam James <sam@gentoo.org>
13070 * config/riscv/genrvv-type-indexer.cc: Avoid calloc() poisoning on musl by
13071 including <sstream> earlier.
13072 * system.h: Add INCLUDE_SSTREAM.
13074 2023-03-14 Richard Biener <rguenther@suse.de>
13076 * tree-ssa-live.cc (remove_unused_locals): Do not treat
13077 the .DEFERRED_INIT of a variable as use, instead remove
13078 that if it is the only use.
13080 2023-03-14 Eric Botcazou <ebotcazou@adacore.com>
13082 PR rtl-optimization/107762
13083 * expr.cc (emit_group_store): Revert latest change.
13085 2023-03-14 Andre Vieira <andre.simoesdiasvieira@arm.com>
13087 PR tree-optimization/109005
13088 * tree-if-conv.cc (get_bitfield_rep): Replace BLKmode check with
13089 aggregate type check.
13091 2023-03-14 Jakub Jelinek <jakub@redhat.com>
13093 PR tree-optimization/109115
13094 * tree-vect-patterns.cc (vect_recog_divmod_pattern): Don't use
13095 r.upper_bound () on r.undefined_p () range.
13097 2023-03-14 Jan Hubicka <hubicka@ucw.cz>
13099 PR tree-optimization/106896
13100 * profile-count.cc (profile_count::to_sreal_scale): Synchronize
13101 implementatoin with probability_in; avoid some asserts.
13103 2023-03-13 Max Filippov <jcmvbkbc@gmail.com>
13105 * config/xtensa/linux.h (TARGET_ASM_FILE_END): New macro.
13107 2023-03-13 Sean Bright <sean@seanbright.com>
13109 * doc/invoke.texi (Warning Options): Remove errant 'See'
13112 2023-03-13 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
13114 * config/xtensa/xtensa.h (REG_OK_STRICT, REG_OK_FOR_INDEX_P,
13115 REG_OK_FOR_BASE_P): Remove.
13117 2023-03-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
13119 * config/riscv/vector-iterators.md (=vd,vr): Fine tune.
13120 (=vd,vd,vr,vr): Ditto.
13121 * config/riscv/vector.md: Ditto.
13123 2023-03-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
13125 * config/riscv/riscv-vector-builtins.cc
13126 (function_expander::use_compare_insn): Add operand predicate check.
13128 2023-03-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
13130 * config/riscv/vector.md: Fine tune RA constraints.
13132 2023-03-13 Tobias Burnus <tobias@codesourcery.com>
13134 * config/gcn/mkoffload.cc (main): Pass -save-temps on for the
13135 hsaco assemble/link.
13137 2023-03-13 Richard Biener <rguenther@suse.de>
13139 PR tree-optimization/109046
13140 * tree-ssa-forwprop.cc (pass_forwprop::execute): Combine
13141 piecewise complex loads.
13143 2023-03-12 Jakub Jelinek <jakub@redhat.com>
13145 * config/aarch64/aarch64.h (aarch64_bf16_type_node): Remove.
13146 (aarch64_bf16_ptr_type_node): Adjust comment.
13147 * config/aarch64/aarch64.cc (aarch64_gimplify_va_arg_expr): Use
13148 bfloat16_type_node rather than aarch64_bf16_type_node.
13149 (aarch64_libgcc_floating_mode_supported_p,
13150 aarch64_scalar_mode_supported_p): Also support BFmode.
13151 (aarch64_invalid_conversion, aarch64_invalid_unary_op): Remove.
13152 (aarch64_invalid_binary_op): Remove BFmode related rejections.
13153 (TARGET_INVALID_CONVERSION, TARGET_INVALID_UNARY_OP): Don't redefine.
13154 * config/aarch64/aarch64-builtins.cc (aarch64_bf16_type_node): Remove.
13155 (aarch64_int_or_fp_type): Use bfloat16_type_node rather than
13156 aarch64_bf16_type_node.
13157 (aarch64_init_simd_builtin_types): Likewise.
13158 (aarch64_init_bf16_types): Likewise. Don't create bfloat16_type_node,
13159 which is created in tree.cc already.
13160 * config/aarch64/aarch64-sve-builtins.def (svbfloat16_t): Likewise.
13162 2023-03-12 Roger Sayle <roger@nextmovesoftware.com>
13164 PR middle-end/109031
13165 * tree-chrec.cc (chrec_apply): When folding "{a, +, a} (x-1)",
13166 ensure that the type of x is as wide or wider than the type of a.
13168 2023-03-12 Tamar Christina <tamar.christina@arm.com>
13171 * config/aarch64/aarch64-simd.md (@aarch64_bitmask_udiv<mode>3): Remove.
13172 (*bitmask_shift_plus<mode>): New.
13173 * config/aarch64/aarch64-sve2.md (*bitmask_shift_plus<mode>): New.
13174 (@aarch64_bitmask_udiv<mode>3): Remove.
13175 * config/aarch64/aarch64.cc
13176 (aarch64_vectorize_can_special_div_by_constant,
13177 TARGET_VECTORIZE_CAN_SPECIAL_DIV_BY_CONST): Removed.
13178 (TARGET_VECTORIZE_PREFERRED_DIV_AS_SHIFTS_OVER_MULT,
13179 aarch64_vectorize_preferred_div_as_shifts_over_mult): New.
13181 2023-03-12 Tamar Christina <tamar.christina@arm.com>
13184 * target.def (preferred_div_as_shifts_over_mult): New.
13185 * doc/tm.texi.in: Document it.
13186 * doc/tm.texi: Regenerate.
13187 * targhooks.cc (default_preferred_div_as_shifts_over_mult): New.
13188 * targhooks.h (default_preferred_div_as_shifts_over_mult): New.
13189 * tree-vect-patterns.cc (vect_recog_divmod_pattern): Use it.
13191 2023-03-12 Tamar Christina <tamar.christina@arm.com>
13192 Richard Sandiford <richard.sandiford@arm.com>
13195 * tree-ssa-math-opts.cc (convert_mult_to_fma): Inhibit FMA in case not
13198 2023-03-12 Tamar Christina <tamar.christina@arm.com>
13199 Andrew MacLeod <amacleod@redhat.com>
13202 * gimple-range-op.h (gimple_range_op_handler): Add maybe_non_standard.
13203 * gimple-range-op.cc (gimple_range_op_handler::gimple_range_op_handler):
13205 (gimple_range_op_handler::maybe_non_standard): New.
13206 * range-op.cc (class operator_widen_plus_signed,
13207 operator_widen_plus_signed::wi_fold, class operator_widen_plus_unsigned,
13208 operator_widen_plus_unsigned::wi_fold, class operator_widen_mult_signed,
13209 operator_widen_mult_signed::wi_fold, class operator_widen_mult_unsigned,
13210 operator_widen_mult_unsigned::wi_fold,
13211 ptr_op_widen_mult_signed, ptr_op_widen_mult_unsigned,
13212 ptr_op_widen_plus_signed, ptr_op_widen_plus_unsigned): New.
13213 * range-op.h (ptr_op_widen_mult_signed, ptr_op_widen_mult_unsigned,
13214 ptr_op_widen_plus_signed, ptr_op_widen_plus_unsigned): New
13216 2023-03-12 Tamar Christina <tamar.christina@arm.com>
13219 * doc/tm.texi (TARGET_VECTORIZE_CAN_SPECIAL_DIV_BY_CONST): Remove.
13220 * doc/tm.texi.in: Likewise.
13221 * explow.cc (round_push, align_dynamic_address): Revert previous patch.
13222 * expmed.cc (expand_divmod): Likewise.
13223 * expmed.h (expand_divmod): Likewise.
13224 * expr.cc (force_operand, expand_expr_divmod): Likewise.
13225 * optabs.cc (expand_doubleword_mod, expand_doubleword_divmod): Likewise.
13226 * target.def (can_special_div_by_const): Remove.
13227 * target.h: Remove tree-core.h include
13228 * targhooks.cc (default_can_special_div_by_const): Remove.
13229 * targhooks.h (default_can_special_div_by_const): Remove.
13230 * tree-vect-generic.cc (expand_vector_operation): Remove hook.
13231 * tree-vect-patterns.cc (vect_recog_divmod_pattern): Remove hook.
13232 * tree-vect-stmts.cc (vectorizable_operation): Remove hook.
13234 2023-03-12 Sandra Loosemore <sandra@codesourcery.com>
13236 * doc/install.texi2html: Fix issue number typo in comment.
13238 2023-03-12 Gaius Mulley <gaiusmod2@gmail.com>
13240 * doc/gm2.texi (Elementary data types): Equivalence BOOLEAN with
13243 2023-03-12 Sandra Loosemore <sandra@codesourcery.com>
13245 * doc/invoke.texi (Optimize Options): Add markup to
13246 description of asan-kernel-mem-intrinsic-prefix, and clarify
13249 2023-03-11 Gerald Pfeifer <gerald@pfeifer.com>
13251 * doc/extend.texi (Named Address Spaces): Drop a redundant link
13254 2023-03-11 Jeff Law <jlaw@ventanamicro>
13257 * doc/extend.texi: Clarify Attribute Syntax a bit.
13259 2023-03-11 Sandra Loosemore <sandra@codesourcery.com>
13261 * doc/install.texi (Prerequisites): Suggest using newer versions
13263 (Final install): Clean up and modernize discussion of how to
13264 build or obtain the GCC manuals.
13265 * doc/install.texi2html: Update comment to point to the PR instead
13266 of "makeinfo 4.7 brokenness" (it's not specific to that version).
13268 2023-03-10 Jakub Jelinek <jakub@redhat.com>
13271 * optabs.cc (expand_fix): For conversions from BFmode to integral,
13272 use shifts to convert it to SFmode first and then convert SFmode
13275 2023-03-10 Andrew Pinski <apinski@marvell.com>
13277 * config/aarch64/aarch64.md: Add a new define_split
13280 2023-03-10 Richard Biener <rguenther@suse.de>
13282 * tree-ssa-structalias.cc (solve_graph): Immediately
13283 iterate self-cycles.
13285 2023-03-10 Jakub Jelinek <jakub@redhat.com>
13287 PR tree-optimization/109008
13288 * range-op-float.cc (float_widen_lhs_range): If not
13289 -frounding-math and not IBM double double format, extend lhs
13290 range just by 0.5ulp rather than 1ulp in each direction.
13292 2023-03-10 Jakub Jelinek <jakub@redhat.com>
13295 * config.gcc (x86_64-*-cygwin*): Don't add i386/t-cygwin-w64 into
13297 * config/i386/t-cygwin-w64: Remove.
13299 2023-03-10 Jakub Jelinek <jakub@redhat.com>
13302 * tree-core.h (tree_code_type, tree_code_length): For C++11 or
13303 C++14, don't declare as extern const arrays.
13304 (tree_code_type_tmpl, tree_code_length_tmpl): New types with
13305 static constexpr member arrays for C++11 or C++14.
13306 * tree.h (TREE_CODE_CLASS): For C++11 or C++14 use
13307 tree_code_type_tmpl <0>::tree_code_type instead of tree_code_type.
13308 (TREE_CODE_LENGTH): For C++11 or C++14 use
13309 tree_code_length_tmpl <0>::tree_code_length instead of
13311 * tree.cc (tree_code_type, tree_code_length): Remove.
13313 2023-03-10 Jakub Jelinek <jakub@redhat.com>
13316 * common.opt (fcanon-prefix-map): New option.
13317 * opts.cc: Include file-prefix-map.h.
13318 (flag_canon_prefix_map): New variable.
13319 (common_handle_option): Handle OPT_fcanon_prefix_map.
13320 (gen_command_line_string): Ignore OPT_fcanon_prefix_map.
13321 * file-prefix-map.h (flag_canon_prefix_map): Declare.
13322 * file-prefix-map.cc (struct file_prefix_map): Add canonicalize
13324 (add_prefix_map): Initialize canonicalize member from
13325 flag_canon_prefix_map, and if true canonicalize it using lrealpath.
13326 (remap_filename): Revert 2022-11-01 and 2022-11-07 changes,
13327 use lrealpath result only for map->canonicalize map entries.
13328 * lto-opts.cc (lto_write_options): Ignore OPT_fcanon_prefix_map.
13329 * opts-global.cc (handle_common_deferred_options): Clear
13330 flag_canon_prefix_map at the start and handle OPT_fcanon_prefix_map.
13331 * doc/invoke.texi (-fcanon-prefix-map): Document.
13332 (-ffile-prefix-map, -fdebug-prefix-map, -fprofile-prefix-map): Add
13333 see also for -fcanon-prefix-map.
13334 * doc/cppopts.texi (-fmacro-prefix-map): Likewise.
13336 2023-03-10 Jakub Jelinek <jakub@redhat.com>
13339 * cgraphunit.cc (check_global_declaration): Don't warn for unused
13340 variables which have OPT_Wunused_variable warning suppressed.
13342 2023-03-10 Jakub Jelinek <jakub@redhat.com>
13344 PR tree-optimization/109008
13345 * range-op-float.cc (float_widen_lhs_range): If lb is
13346 minimum representable finite number or ub is maximum
13347 representable finite number, instead of widening it to
13348 -inf or inf widen it to negative or positive 0x0.8p+(EMAX+1).
13349 Temporarily clear flag_finite_math_only when canonicalizing
13352 2023-03-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
13354 * config/riscv/riscv-builtins.cc (riscv_gimple_fold_builtin): New function.
13355 * config/riscv/riscv-protos.h (riscv_gimple_fold_builtin): Ditto.
13356 (gimple_fold_builtin): Ditto.
13357 * config/riscv/riscv-vector-builtins-bases.cc (class read_vl): New class.
13358 (class vleff): Ditto.
13360 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
13361 * config/riscv/riscv-vector-builtins-functions.def (read_vl): Ditto.
13363 * config/riscv/riscv-vector-builtins-shapes.cc (struct read_vl_def): Ditto.
13364 (struct fault_load_def): Ditto.
13366 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
13367 * config/riscv/riscv-vector-builtins.cc
13368 (rvv_arg_type_info::get_tree_type): Add size_ptr.
13369 (gimple_folder::gimple_folder): New class.
13370 (gimple_folder::fold): Ditto.
13371 (gimple_fold_builtin): New function.
13372 (get_read_vl_instance): Ditto.
13373 (get_read_vl_decl): Ditto.
13374 * config/riscv/riscv-vector-builtins.def (size_ptr): Add size_ptr.
13375 * config/riscv/riscv-vector-builtins.h (class gimple_folder): New class.
13376 (get_read_vl_instance): New function.
13377 (get_read_vl_decl): Ditto.
13378 * config/riscv/riscv-vsetvl.cc (fault_first_load_p): Ditto.
13379 (read_vl_insn_p): Ditto.
13380 (available_occurrence_p): Ditto.
13381 (backward_propagate_worthwhile_p): Ditto.
13382 (gen_vsetvl_pat): Adapt for vleff support.
13383 (get_forward_read_vl_insn): New function.
13384 (get_backward_fault_first_load_insn): Ditto.
13385 (source_equal_p): Adapt for vleff support.
13386 (first_ratio_invalid_for_second_sew_p): Remove.
13387 (first_ratio_invalid_for_second_lmul_p): Ditto.
13388 (first_lmul_less_than_second_lmul_p): Ditto.
13389 (first_ratio_less_than_second_ratio_p): Ditto.
13390 (support_relaxed_compatible_p): New function.
13391 (vector_insn_info::operator>): Remove.
13392 (vector_insn_info::operator>=): Refine.
13393 (vector_insn_info::parse_insn): Adapt for vleff support.
13394 (vector_insn_info::compatible_p): Ditto.
13395 (vector_insn_info::update_fault_first_load_avl): New function.
13396 (pass_vsetvl::transfer_after): Adapt for vleff support.
13397 (pass_vsetvl::demand_fusion): Ditto.
13398 (pass_vsetvl::cleanup_insns): Ditto.
13399 * config/riscv/riscv-vsetvl.def (DEF_INCOMPATIBLE_COND): Remove
13400 redundant condtions.
13401 * config/riscv/riscv-vsetvl.h (struct demands_cond): New function.
13402 * config/riscv/riscv.cc (TARGET_GIMPLE_FOLD_BUILTIN): New target hook.
13403 * config/riscv/riscv.md: Adapt for vleff support.
13404 * config/riscv/t-riscv: Ditto.
13405 * config/riscv/vector-iterators.md: New iterator.
13406 * config/riscv/vector.md (read_vlsi): New pattern.
13407 (read_vldi_zero_extend): Ditto.
13408 (@pred_fault_load<mode>): Ditto.
13410 2023-03-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
13412 * config/riscv/riscv-vector-builtins.cc
13413 (function_expander::use_ternop_insn): Use maybe_gen_insn instead.
13414 (function_expander::use_widen_ternop_insn): Ditto.
13415 * optabs.cc (maybe_gen_insn): Extend nops handling.
13417 2023-03-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
13419 * config/riscv/riscv-vector-builtins-bases.cc: Split indexed load
13420 patterns according to RVV ISA.
13421 * config/riscv/vector-iterators.md: New iterators.
13422 * config/riscv/vector.md
13423 (@pred_indexed_<order>load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Remove.
13424 (@pred_indexed_<order>load<mode>_same_eew): New pattern.
13425 (@pred_indexed_<order>load<mode>_x2_greater_eew): Ditto.
13426 (@pred_indexed_<order>load<mode>_x4_greater_eew): Ditto.
13427 (@pred_indexed_<order>load<mode>_x8_greater_eew): Ditto.
13428 (@pred_indexed_<order>load<mode>_x2_smaller_eew): Ditto.
13429 (@pred_indexed_<order>load<mode>_x4_smaller_eew): Ditto.
13430 (@pred_indexed_<order>load<mode>_x8_smaller_eew): Ditto.
13431 (@pred_indexed_<order>load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Remove.
13432 (@pred_indexed_<order>load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
13433 (@pred_indexed_<order>load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
13434 (@pred_indexed_<order>load<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
13435 (@pred_indexed_<order>load<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
13436 (@pred_indexed_<order>load<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
13438 2023-03-10 Michael Collison <collison@rivosinc.com>
13440 * tree-vect-loop-manip.cc (vect_do_peeling): Use
13441 result of constant_lower_bound instead of vf for the lower
13442 bound of the epilog loop trip count.
13444 2023-03-09 Tamar Christina <tamar.christina@arm.com>
13446 * passes.cc (emergency_dump_function): Finish graph generation.
13448 2023-03-09 Tamar Christina <tamar.christina@arm.com>
13450 * config/aarch64/aarch64.md (tbranch_<code><mode>3): Restrict to SHORT
13451 and bottom bit only.
13453 2023-03-09 Andrew Pinski <apinski@marvell.com>
13455 PR tree-optimization/108980
13456 * gimple-array-bounds.cc (array_bounds_checker::check_array_ref):
13457 Reorgnize the call to warning for not strict flexible arrays
13458 to be before the check of warned.
13460 2023-03-09 Jason Merrill <jason@redhat.com>
13462 * doc/extend.texi: Comment out __is_deducible docs.
13464 2023-03-09 Jason Merrill <jason@redhat.com>
13467 * doc/extend.texi (Type Traits):: Document __is_deducible.
13469 2023-03-09 Costas Argyris <costas.argyris@gmail.com>
13472 * config.host: add object for x86_64-*-mingw*.
13473 * config/i386/sym-mingw32.cc: dummy file to attach
13475 * config/i386/utf8-mingw32.rc: windres resource file.
13476 * config/i386/winnt-utf8.manifest: XML manifest to
13478 * config/i386/x-mingw32: reference to x-mingw32-utf8.
13479 * config/i386/x-mingw32-utf8: Makefile fragment to
13480 embed UTF-8 manifest.
13482 2023-03-09 Vladimir N. Makarov <vmakarov@redhat.com>
13484 * lra-constraints.cc (process_alt_operands): Use operand modes for
13485 clobbered regs instead of the biggest access mode.
13487 2023-03-09 Richard Biener <rguenther@suse.de>
13489 PR middle-end/108995
13490 * fold-const.cc (extract_muldiv_1): Avoid folding
13491 (CST * b) / CST2 when sanitizing overflow and we rely on
13492 overflow being undefined.
13494 2023-03-09 Jakub Jelinek <jakub@redhat.com>
13495 Richard Biener <rguenther@suse.de>
13497 PR tree-optimization/109008
13498 * range-op-float.cc (float_widen_lhs_range): New function.
13499 (foperator_plus::op1_range, foperator_minus::op1_range,
13500 foperator_minus::op2_range, foperator_mult::op1_range,
13501 foperator_div::op1_range, foperator_div::op2_range): Use it.
13503 2023-03-07 Jonathan Grant <jg@jguk.org>
13506 * doc/invoke.texi (Instrumentation Options): Clarify
13507 LeakSanitizer behavior.
13509 2023-03-07 Benson Muite <benson_muite@emailplus.org>
13511 * doc/install.texi (Prerequisites): Add link to gmplib.org.
13513 2023-03-07 Pan Li <pan2.li@intel.com>
13514 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
13518 * config/riscv/riscv-modes.def (ADJUST_PRECISION): Adjust VNx*BI
13520 * config/riscv/riscv.cc (riscv_v_adjust_precision): New.
13521 * config/riscv/riscv.h (riscv_v_adjust_precision): New.
13522 * genmodes.cc (adj_precision): New.
13523 (ADJUST_PRECISION): New.
13524 (emit_mode_adjustments): Handle ADJUST_PRECISION.
13526 2023-03-07 Hans-Peter Nilsson <hp@axis.com>
13528 * doc/sourcebuild.texi: Document check_effective_target_tail_call.
13530 2023-03-06 Paul-Antoine Arras <pa@codesourcery.com>
13532 * config/gcn/gcn-valu.md (<expander><mode>3_exec): Add patterns for
13533 {s|u}{max|min} in QI, HI and DI modes.
13534 (<expander><mode>3): Add pattern for {s|u}{max|min} in DI mode.
13535 (cond_<fexpander><mode>): Add pattern for cond_f{max|min}.
13536 (cond_<expander><mode>): Add pattern for cond_{s|u}{max|min}.
13537 * config/gcn/gcn.cc (gcn_spill_class): Allow the exec register to be
13540 2023-03-06 Richard Biener <rguenther@suse.de>
13542 PR tree-optimization/109025
13543 * tree-vect-loop.cc (vect_is_simple_reduction): Verify
13544 the inner LC PHI use is the inner loop PHI latch definition
13545 before classifying an outer PHI as double reduction.
13547 2023-03-06 Jan Hubicka <hubicka@ucw.cz>
13550 * config/i386/x86-tune.def (X86_TUNE_USE_SCATTER_2PARTS): Enable for
13552 (X86_TUNE_USE_SCATTER_4PARTS): Likewise.
13553 (X86_TUNE_USE_SCATTER): Likewise.
13555 2023-03-06 Xi Ruoyao <xry111@xry111.site>
13558 * config/loongarch/loongarch.h (FP_RETURN): Use
13559 TARGET_*_FLOAT_ABI instead of TARGET_*_FLOAT.
13560 (UNITS_PER_FP_ARG): Likewise.
13562 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
13564 * config/riscv/riscv-vsetvl.cc (reg_available_p): Fix bug.
13565 (pass_vsetvl::backward_demand_fusion): Ditto.
13567 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
13568 SiYu Wu <siyu@isrc.iscas.ac.cn>
13570 * config/riscv/crypto.md (riscv_sm3p0_<mode>): Add ZKSED's and ZKSH's
13572 (riscv_sm3p1_<mode>): New.
13573 (riscv_sm4ed_<mode>): New.
13574 (riscv_sm4ks_<mode>): New.
13575 * config/riscv/riscv-builtins.cc (AVAIL): Add ZKSED's and ZKSH's AVAIL.
13576 * config/riscv/riscv-scalar-crypto.def (RISCV_BUILTIN): Add ZKSED's and
13577 ZKSH's built-in functions.
13579 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
13580 SiYu Wu <siyu@isrc.iscas.ac.cn>
13582 * config/riscv/crypto.md (riscv_sha256sig0_<mode>): Add ZKNH's instructions.
13583 (riscv_sha256sig1_<mode>): New.
13584 (riscv_sha256sum0_<mode>): New.
13585 (riscv_sha256sum1_<mode>): New.
13586 (riscv_sha512sig0h): New.
13587 (riscv_sha512sig0l): New.
13588 (riscv_sha512sig1h): New.
13589 (riscv_sha512sig1l): New.
13590 (riscv_sha512sum0r): New.
13591 (riscv_sha512sum1r): New.
13592 (riscv_sha512sig0): New.
13593 (riscv_sha512sig1): New.
13594 (riscv_sha512sum0): New.
13595 (riscv_sha512sum1): New.
13596 * config/riscv/riscv-builtins.cc (AVAIL): And ZKNH's AVAIL.
13597 * config/riscv/riscv-scalar-crypto.def (RISCV_BUILTIN): And ZKNH's
13598 built-in functions.
13599 (DIRECT_BUILTIN): Add new.
13601 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
13602 SiYu Wu <siyu@isrc.iscas.ac.cn>
13604 * config/riscv/constraints.md (D03): Add constants of bs and rnum.
13606 * config/riscv/crypto.md (riscv_aes32dsi): Add ZKND's and ZKNE's instructions.
13607 (riscv_aes32dsmi): New.
13608 (riscv_aes64ds): New.
13609 (riscv_aes64dsm): New.
13610 (riscv_aes64im): New.
13611 (riscv_aes64ks1i): New.
13612 (riscv_aes64ks2): New.
13613 (riscv_aes32esi): New.
13614 (riscv_aes32esmi): New.
13615 (riscv_aes64es): New.
13616 (riscv_aes64esm): New.
13617 * config/riscv/riscv-builtins.cc (AVAIL): Add ZKND's and ZKNE's AVAIL.
13618 * config/riscv/riscv-scalar-crypto.def (DIRECT_BUILTIN): Add ZKND's and
13619 ZKNE's built-in functions.
13621 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
13622 SiYu Wu <siyu@isrc.iscas.ac.cn>
13624 * config/riscv/bitmanip.md: Add ZBKB's instructions.
13625 * config/riscv/riscv-builtins.cc (AVAIL): Add new.
13626 * config/riscv/riscv.md: Add new type for crypto instructions.
13627 * config/riscv/crypto.md: Add Scalar Cryptography extension's machine
13629 * config/riscv/riscv-scalar-crypto.def: Add Scalar Cryptography
13630 extension's built-in function file.
13632 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
13633 SiYu Wu <siyu@isrc.iscas.ac.cn>
13635 * config/riscv/riscv-builtins.cc (RISCV_FTYPE_NAME2): New.
13636 (RISCV_FTYPE_NAME3): New.
13637 (RISCV_ATYPE_QI): New.
13638 (RISCV_ATYPE_HI): New.
13639 (RISCV_FTYPE_ATYPES2): New.
13640 (RISCV_FTYPE_ATYPES3): New.
13641 * config/riscv/riscv-ftypes.def (2): New.
13644 2023-03-05 Vineet Gupta <vineetg@rivosinc.com>
13646 * config/riscv/riscv.cc (riscv_rtx_costs): Fixed IN_RANGE() to
13649 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
13650 kito-cheng <kito.cheng@sifive.com>
13652 * config/riscv/predicates.md (vector_any_register_operand): New predicate.
13653 * config/riscv/riscv-c.cc (riscv_check_builtin_call): New function.
13654 (riscv_register_pragmas): Add builtin function check call.
13655 * config/riscv/riscv-protos.h (RVV_VUNDEF): Adapt macro.
13656 (check_builtin_call): New function.
13657 * config/riscv/riscv-vector-builtins-bases.cc (class vundefined): New class.
13658 (class vreinterpret): Ditto.
13659 (class vlmul_ext): Ditto.
13660 (class vlmul_trunc): Ditto.
13661 (class vset): Ditto.
13662 (class vget): Ditto.
13664 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
13665 * config/riscv/riscv-vector-builtins-functions.def (vluxei8): Change name.
13681 (vundefined): Add new intrinsic.
13682 (vreinterpret): Ditto.
13683 (vlmul_ext): Ditto.
13684 (vlmul_trunc): Ditto.
13687 * config/riscv/riscv-vector-builtins-shapes.cc (struct return_mask_def): New class.
13688 (struct narrow_alu_def): Ditto.
13689 (struct reduc_alu_def): Ditto.
13690 (struct vundefined_def): Ditto.
13691 (struct misc_def): Ditto.
13692 (struct vset_def): Ditto.
13693 (struct vget_def): Ditto.
13695 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
13696 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_EEW8_INTERPRET_OPS): New def.
13697 (DEF_RVV_EEW16_INTERPRET_OPS): Ditto.
13698 (DEF_RVV_EEW32_INTERPRET_OPS): Ditto.
13699 (DEF_RVV_EEW64_INTERPRET_OPS): Ditto.
13700 (DEF_RVV_X2_VLMUL_EXT_OPS): Ditto.
13701 (DEF_RVV_X4_VLMUL_EXT_OPS): Ditto.
13702 (DEF_RVV_X8_VLMUL_EXT_OPS): Ditto.
13703 (DEF_RVV_X16_VLMUL_EXT_OPS): Ditto.
13704 (DEF_RVV_X32_VLMUL_EXT_OPS): Ditto.
13705 (DEF_RVV_X64_VLMUL_EXT_OPS): Ditto.
13706 (DEF_RVV_LMUL1_OPS): Ditto.
13707 (DEF_RVV_LMUL2_OPS): Ditto.
13708 (DEF_RVV_LMUL4_OPS): Ditto.
13709 (vint16mf4_t): Ditto.
13710 (vint16mf2_t): Ditto.
13711 (vint16m1_t): Ditto.
13712 (vint16m2_t): Ditto.
13713 (vint16m4_t): Ditto.
13714 (vint16m8_t): Ditto.
13715 (vint32mf2_t): Ditto.
13716 (vint32m1_t): Ditto.
13717 (vint32m2_t): Ditto.
13718 (vint32m4_t): Ditto.
13719 (vint32m8_t): Ditto.
13720 (vint64m1_t): Ditto.
13721 (vint64m2_t): Ditto.
13722 (vint64m4_t): Ditto.
13723 (vint64m8_t): Ditto.
13724 (vuint16mf4_t): Ditto.
13725 (vuint16mf2_t): Ditto.
13726 (vuint16m1_t): Ditto.
13727 (vuint16m2_t): Ditto.
13728 (vuint16m4_t): Ditto.
13729 (vuint16m8_t): Ditto.
13730 (vuint32mf2_t): Ditto.
13731 (vuint32m1_t): Ditto.
13732 (vuint32m2_t): Ditto.
13733 (vuint32m4_t): Ditto.
13734 (vuint32m8_t): Ditto.
13735 (vuint64m1_t): Ditto.
13736 (vuint64m2_t): Ditto.
13737 (vuint64m4_t): Ditto.
13738 (vuint64m8_t): Ditto.
13739 (vint8mf4_t): Ditto.
13740 (vint8mf2_t): Ditto.
13741 (vint8m1_t): Ditto.
13742 (vint8m2_t): Ditto.
13743 (vint8m4_t): Ditto.
13744 (vint8m8_t): Ditto.
13745 (vuint8mf4_t): Ditto.
13746 (vuint8mf2_t): Ditto.
13747 (vuint8m1_t): Ditto.
13748 (vuint8m2_t): Ditto.
13749 (vuint8m4_t): Ditto.
13750 (vuint8m8_t): Ditto.
13751 (vint8mf8_t): Ditto.
13752 (vuint8mf8_t): Ditto.
13753 (vfloat32mf2_t): Ditto.
13754 (vfloat32m1_t): Ditto.
13755 (vfloat32m2_t): Ditto.
13756 (vfloat32m4_t): Ditto.
13757 (vfloat64m1_t): Ditto.
13758 (vfloat64m2_t): Ditto.
13759 (vfloat64m4_t): Ditto.
13760 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TYPE): Ditto.
13761 (DEF_RVV_EEW8_INTERPRET_OPS): Ditto.
13762 (DEF_RVV_EEW16_INTERPRET_OPS): Ditto.
13763 (DEF_RVV_EEW32_INTERPRET_OPS): Ditto.
13764 (DEF_RVV_EEW64_INTERPRET_OPS): Ditto.
13765 (DEF_RVV_X2_VLMUL_EXT_OPS): Ditto.
13766 (DEF_RVV_X4_VLMUL_EXT_OPS): Ditto.
13767 (DEF_RVV_X8_VLMUL_EXT_OPS): Ditto.
13768 (DEF_RVV_X16_VLMUL_EXT_OPS): Ditto.
13769 (DEF_RVV_X32_VLMUL_EXT_OPS): Ditto.
13770 (DEF_RVV_X64_VLMUL_EXT_OPS): Ditto.
13771 (DEF_RVV_LMUL1_OPS): Ditto.
13772 (DEF_RVV_LMUL2_OPS): Ditto.
13773 (DEF_RVV_LMUL4_OPS): Ditto.
13774 (DEF_RVV_TYPE_INDEX): Ditto.
13775 (required_extensions_p): Adapt for new intrinsic support/
13776 (get_required_extensions): New function.
13777 (check_required_extensions): Ditto.
13778 (unsigned_base_type_p): Remove.
13779 (rvv_arg_type_info::get_scalar_ptr_type): New function.
13780 (get_mode_for_bitsize): Remove.
13781 (rvv_arg_type_info::get_scalar_const_ptr_type): New function.
13782 (rvv_arg_type_info::get_base_vector_type): Ditto.
13783 (rvv_arg_type_info::get_function_type_index): Ditto.
13784 (DEF_RVV_BASE_TYPE): New def.
13785 (function_builder::apply_predication): New class.
13786 (function_expander::mask_mode): Ditto.
13787 (function_checker::function_checker): Ditto.
13788 (function_checker::report_non_ice): Ditto.
13789 (function_checker::report_out_of_range): Ditto.
13790 (function_checker::require_immediate): Ditto.
13791 (function_checker::require_immediate_range): Ditto.
13792 (function_checker::check): Ditto.
13793 (check_builtin_call): Ditto.
13794 * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE): New def.
13795 (DEF_RVV_BASE_TYPE): Ditto.
13796 (DEF_RVV_TYPE_INDEX): Ditto.
13797 (vbool64_t): Ditto.
13798 (vbool32_t): Ditto.
13799 (vbool16_t): Ditto.
13804 (vuint8mf8_t): Ditto.
13805 (vuint8mf4_t): Ditto.
13806 (vuint8mf2_t): Ditto.
13807 (vuint8m1_t): Ditto.
13808 (vuint8m2_t): Ditto.
13809 (vint8m4_t): Ditto.
13810 (vuint8m4_t): Ditto.
13811 (vint8m8_t): Ditto.
13812 (vuint8m8_t): Ditto.
13813 (vint16mf4_t): Ditto.
13814 (vuint16mf2_t): Ditto.
13815 (vuint16m1_t): Ditto.
13816 (vuint16m2_t): Ditto.
13817 (vuint16m4_t): Ditto.
13818 (vuint16m8_t): Ditto.
13819 (vint32mf2_t): Ditto.
13820 (vuint32m1_t): Ditto.
13821 (vuint32m2_t): Ditto.
13822 (vuint32m4_t): Ditto.
13823 (vuint32m8_t): Ditto.
13824 (vuint64m1_t): Ditto.
13825 (vuint64m2_t): Ditto.
13826 (vuint64m4_t): Ditto.
13827 (vuint64m8_t): Ditto.
13828 (vfloat32mf2_t): Ditto.
13829 (vfloat32m1_t): Ditto.
13830 (vfloat32m2_t): Ditto.
13831 (vfloat32m4_t): Ditto.
13832 (vfloat32m8_t): Ditto.
13833 (vfloat64m1_t): Ditto.
13834 (vfloat64m4_t): Ditto.
13835 (vector): Move it def.
13838 (signed_vector): Ditto.
13839 (unsigned_vector): Ditto.
13840 (unsigned_scalar): Ditto.
13841 (vector_ptr): Ditto.
13842 (scalar_ptr): Ditto.
13843 (scalar_const_ptr): Ditto.
13847 (unsigned_long): Ditto.
13849 (eew8_index): Ditto.
13850 (eew16_index): Ditto.
13851 (eew32_index): Ditto.
13852 (eew64_index): Ditto.
13853 (shift_vector): Ditto.
13854 (double_trunc_vector): Ditto.
13855 (quad_trunc_vector): Ditto.
13856 (oct_trunc_vector): Ditto.
13857 (double_trunc_scalar): Ditto.
13858 (double_trunc_signed_vector): Ditto.
13859 (double_trunc_unsigned_vector): Ditto.
13860 (double_trunc_unsigned_scalar): Ditto.
13861 (double_trunc_float_vector): Ditto.
13862 (float_vector): Ditto.
13863 (lmul1_vector): Ditto.
13864 (widen_lmul1_vector): Ditto.
13865 (eew8_interpret): Ditto.
13866 (eew16_interpret): Ditto.
13867 (eew32_interpret): Ditto.
13868 (eew64_interpret): Ditto.
13869 (vlmul_ext_x2): Ditto.
13870 (vlmul_ext_x4): Ditto.
13871 (vlmul_ext_x8): Ditto.
13872 (vlmul_ext_x16): Ditto.
13873 (vlmul_ext_x32): Ditto.
13874 (vlmul_ext_x64): Ditto.
13875 * config/riscv/riscv-vector-builtins.h (DEF_RVV_BASE_TYPE): New def.
13876 (struct function_type_info): New function.
13877 (struct rvv_arg_type_info): Ditto.
13878 (class function_checker): New class.
13879 (rvv_arg_type_info::get_scalar_type): New function.
13880 (rvv_arg_type_info::get_vector_type): Ditto.
13881 (function_expander::ret_mode): New function.
13882 (function_checker::arg_mode): Ditto.
13883 (function_checker::ret_mode): Ditto.
13884 * config/riscv/t-riscv: Add generator.
13885 * config/riscv/vector-iterators.md: New iterators.
13886 * config/riscv/vector.md (vundefined<mode>): New pattern.
13887 (@vundefined<mode>): Ditto.
13888 (@vreinterpret<mode>): Ditto.
13889 (@vlmul_extx2<mode>): Ditto.
13890 (@vlmul_extx4<mode>): Ditto.
13891 (@vlmul_extx8<mode>): Ditto.
13892 (@vlmul_extx16<mode>): Ditto.
13893 (@vlmul_extx32<mode>): Ditto.
13894 (@vlmul_extx64<mode>): Ditto.
13895 (*vlmul_extx2<mode>): Ditto.
13896 (*vlmul_extx4<mode>): Ditto.
13897 (*vlmul_extx8<mode>): Ditto.
13898 (*vlmul_extx16<mode>): Ditto.
13899 (*vlmul_extx32<mode>): Ditto.
13900 (*vlmul_extx64<mode>): Ditto.
13901 * config/riscv/genrvv-type-indexer.cc: New file.
13903 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
13905 * config/riscv/riscv-protos.h (enum vlen_enum): New enum.
13906 (slide1_sew64_helper): New function.
13907 * config/riscv/riscv-v.cc (compute_vlmax): Ditto.
13908 (get_unknown_min_value): Ditto.
13909 (force_vector_length_operand): Ditto.
13910 (gen_no_side_effects_vsetvl_rtx): Ditto.
13911 (get_vl_x2_rtx): Ditto.
13912 (slide1_sew64_helper): Ditto.
13913 * config/riscv/riscv-vector-builtins-bases.cc (class slideop): New class.
13914 (class vrgather): Ditto.
13915 (class vrgatherei16): Ditto.
13916 (class vcompress): Ditto.
13918 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
13919 * config/riscv/riscv-vector-builtins-functions.def (vslideup): Ditto.
13920 (vslidedown): Ditto.
13921 (vslide1up): Ditto.
13922 (vslide1down): Ditto.
13923 (vfslide1up): Ditto.
13924 (vfslide1down): Ditto.
13926 (vrgatherei16): Ditto.
13927 (vcompress): Ditto.
13928 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_EI16_OPS): New macro.
13929 (vint8mf8_t): Ditto.
13930 (vint8mf4_t): Ditto.
13931 (vint8mf2_t): Ditto.
13932 (vint8m1_t): Ditto.
13933 (vint8m2_t): Ditto.
13934 (vint8m4_t): Ditto.
13935 (vint16mf4_t): Ditto.
13936 (vint16mf2_t): Ditto.
13937 (vint16m1_t): Ditto.
13938 (vint16m2_t): Ditto.
13939 (vint16m4_t): Ditto.
13940 (vint16m8_t): Ditto.
13941 (vint32mf2_t): Ditto.
13942 (vint32m1_t): Ditto.
13943 (vint32m2_t): Ditto.
13944 (vint32m4_t): Ditto.
13945 (vint32m8_t): Ditto.
13946 (vint64m1_t): Ditto.
13947 (vint64m2_t): Ditto.
13948 (vint64m4_t): Ditto.
13949 (vint64m8_t): Ditto.
13950 (vuint8mf8_t): Ditto.
13951 (vuint8mf4_t): Ditto.
13952 (vuint8mf2_t): Ditto.
13953 (vuint8m1_t): Ditto.
13954 (vuint8m2_t): Ditto.
13955 (vuint8m4_t): Ditto.
13956 (vuint16mf4_t): Ditto.
13957 (vuint16mf2_t): Ditto.
13958 (vuint16m1_t): Ditto.
13959 (vuint16m2_t): Ditto.
13960 (vuint16m4_t): Ditto.
13961 (vuint16m8_t): Ditto.
13962 (vuint32mf2_t): Ditto.
13963 (vuint32m1_t): Ditto.
13964 (vuint32m2_t): Ditto.
13965 (vuint32m4_t): Ditto.
13966 (vuint32m8_t): Ditto.
13967 (vuint64m1_t): Ditto.
13968 (vuint64m2_t): Ditto.
13969 (vuint64m4_t): Ditto.
13970 (vuint64m8_t): Ditto.
13971 (vfloat32mf2_t): Ditto.
13972 (vfloat32m1_t): Ditto.
13973 (vfloat32m2_t): Ditto.
13974 (vfloat32m4_t): Ditto.
13975 (vfloat32m8_t): Ditto.
13976 (vfloat64m1_t): Ditto.
13977 (vfloat64m2_t): Ditto.
13978 (vfloat64m4_t): Ditto.
13979 (vfloat64m8_t): Ditto.
13980 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_EI16_OPS): Ditto.
13981 * config/riscv/riscv.md: Adjust RVV instruction types.
13982 * config/riscv/vector-iterators.md (down): New iterator.
13983 (=vd,vr): New attribute.
13984 (UNSPEC_VSLIDE1UP): New unspec.
13985 * config/riscv/vector.md (@pred_slide<ud><mode>): New pattern.
13986 (*pred_slide<ud><mode>): Ditto.
13987 (*pred_slide<ud><mode>_extended): Ditto.
13988 (@pred_gather<mode>): Ditto.
13989 (@pred_gather<mode>_scalar): Ditto.
13990 (@pred_gatherei16<mode>): Ditto.
13991 (@pred_compress<mode>): Ditto.
13993 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
13995 * config/riscv/riscv-vector-builtins.cc: Remove void_type_node.
13997 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
13999 * config/riscv/constraints.md (Wb1): New constraint.
14000 * config/riscv/predicates.md
14001 (vector_least_significant_set_mask_operand): New predicate.
14002 (vector_broadcast_mask_operand): Ditto.
14003 * config/riscv/riscv-protos.h (enum vlmul_type): Adjust.
14004 (gen_scalar_move_mask): New function.
14005 * config/riscv/riscv-v.cc (gen_scalar_move_mask): Ditto.
14006 * config/riscv/riscv-vector-builtins-bases.cc (class vmv): New class.
14007 (class vmv_s): Ditto.
14009 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
14010 * config/riscv/riscv-vector-builtins-functions.def (vmv_x): Ditto.
14014 * config/riscv/riscv-vector-builtins-shapes.cc (struct scalar_move_def): Ditto.
14016 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
14017 * config/riscv/riscv-vector-builtins.cc (function_expander::mask_mode): Ditto.
14018 (function_expander::use_exact_insn): New function.
14019 (function_expander::use_contiguous_load_insn): New function.
14020 (function_expander::use_contiguous_store_insn): New function.
14021 (function_expander::use_ternop_insn): New function.
14022 (function_expander::use_widen_ternop_insn): New function.
14023 (function_expander::use_scalar_move_insn): New function.
14024 * config/riscv/riscv-vector-builtins.def (s): New operand suffix.
14025 * config/riscv/riscv-vector-builtins.h
14026 (function_expander::add_scalar_move_mask_operand): New class.
14027 * config/riscv/riscv-vsetvl.cc (ignore_vlmul_insn_p): New function.
14028 (scalar_move_insn_p): Ditto.
14029 (has_vsetvl_killed_avl_p): Ditto.
14030 (anticipatable_occurrence_p): Ditto.
14031 (insert_vsetvl): Ditto.
14032 (get_vl_vtype_info): Ditto.
14033 (calculate_sew): Ditto.
14034 (calculate_vlmul): Ditto.
14035 (incompatible_avl_p): Ditto.
14036 (different_sew_p): Ditto.
14037 (different_lmul_p): Ditto.
14038 (different_ratio_p): Ditto.
14039 (different_tail_policy_p): Ditto.
14040 (different_mask_policy_p): Ditto.
14041 (possible_zero_avl_p): Ditto.
14042 (first_ratio_invalid_for_second_sew_p): Ditto.
14043 (first_ratio_invalid_for_second_lmul_p): Ditto.
14044 (second_ratio_invalid_for_first_sew_p): Ditto.
14045 (second_ratio_invalid_for_first_lmul_p): Ditto.
14046 (second_sew_less_than_first_sew_p): Ditto.
14047 (first_sew_less_than_second_sew_p): Ditto.
14048 (compare_lmul): Ditto.
14049 (second_lmul_less_than_first_lmul_p): Ditto.
14050 (first_lmul_less_than_second_lmul_p): Ditto.
14051 (first_ratio_less_than_second_ratio_p): Ditto.
14052 (second_ratio_less_than_first_ratio_p): Ditto.
14053 (DEF_INCOMPATIBLE_COND): Ditto.
14054 (greatest_sew): Ditto.
14055 (first_sew): Ditto.
14056 (second_sew): Ditto.
14057 (first_vlmul): Ditto.
14058 (second_vlmul): Ditto.
14059 (first_ratio): Ditto.
14060 (second_ratio): Ditto.
14061 (vlmul_for_first_sew_second_ratio): Ditto.
14062 (ratio_for_second_sew_first_vlmul): Ditto.
14063 (DEF_SEW_LMUL_FUSE_RULE): Ditto.
14064 (always_unavailable): Ditto.
14065 (avl_unavailable_p): Ditto.
14066 (sew_unavailable_p): Ditto.
14067 (lmul_unavailable_p): Ditto.
14068 (ge_sew_unavailable_p): Ditto.
14069 (ge_sew_lmul_unavailable_p): Ditto.
14070 (ge_sew_ratio_unavailable_p): Ditto.
14071 (DEF_UNAVAILABLE_COND): Ditto.
14072 (same_sew_lmul_demand_p): Ditto.
14073 (propagate_avl_across_demands_p): Ditto.
14074 (reg_available_p): Ditto.
14075 (avl_info::has_non_zero_avl): Ditto.
14076 (vl_vtype_info::has_non_zero_avl): Ditto.
14077 (vector_insn_info::operator>=): Refactor.
14078 (vector_insn_info::parse_insn): Adjust for scalar move.
14079 (vector_insn_info::demand_vl_vtype): Remove.
14080 (vector_insn_info::compatible_p): New function.
14081 (vector_insn_info::compatible_avl_p): Ditto.
14082 (vector_insn_info::compatible_vtype_p): Ditto.
14083 (vector_insn_info::available_p): Ditto.
14084 (vector_insn_info::merge): Ditto.
14085 (vector_insn_info::fuse_avl): Ditto.
14086 (vector_insn_info::fuse_sew_lmul): Ditto.
14087 (vector_insn_info::fuse_tail_policy): Ditto.
14088 (vector_insn_info::fuse_mask_policy): Ditto.
14089 (vector_insn_info::dump): Ditto.
14090 (vector_infos_manager::release): Ditto.
14091 (pass_vsetvl::compute_local_backward_infos): Adjust for scalar move support.
14092 (pass_vsetvl::get_backward_fusion_type): Adjust for scalar move support.
14093 (pass_vsetvl::hard_empty_block_p): Ditto.
14094 (pass_vsetvl::backward_demand_fusion): Ditto.
14095 (pass_vsetvl::forward_demand_fusion): Ditto.
14096 (pass_vsetvl::refine_vsetvls): Ditto.
14097 (pass_vsetvl::cleanup_vsetvls): Ditto.
14098 (pass_vsetvl::commit_vsetvls): Ditto.
14099 (pass_vsetvl::propagate_avl): Ditto.
14100 * config/riscv/riscv-vsetvl.h (enum demand_status): New class.
14101 (struct demands_pair): Ditto.
14102 (struct demands_cond): Ditto.
14103 (struct demands_fuse_rule): Ditto.
14104 * config/riscv/vector-iterators.md: New iterator.
14105 * config/riscv/vector.md (@pred_broadcast<mode>): New pattern.
14106 (*pred_broadcast<mode>): Ditto.
14107 (*pred_broadcast<mode>_extended_scalar): Ditto.
14108 (@pred_extract_first<mode>): Ditto.
14109 (*pred_extract_first<mode>): Ditto.
14110 (@pred_extract_first_trunc<mode>): Ditto.
14111 * config/riscv/riscv-vsetvl.def: New file.
14113 2023-03-05 Lin Sinan <sinan.lin@linux.alibaba.com>
14115 * config/riscv/bitmanip.md: allow 0 constant in max/min
14118 2023-03-05 Lin Sinan <sinan.lin@linux.alibaba.com>
14120 * config/riscv/bitmanip.md: Fix wrong index in the check.
14122 2023-03-04 Jakub Jelinek <jakub@redhat.com>
14124 PR middle-end/109006
14125 * vec.cc (test_auto_alias): Adjust comment for removal of
14127 * read-rtl-function.cc (function_reader::parse_block): Likewise.
14128 * gdbhooks.py: Likewise.
14130 2023-03-04 Jakub Jelinek <jakub@redhat.com>
14132 PR testsuite/108973
14133 * selftest-diagnostic.cc
14134 (test_diagnostic_context::test_diagnostic_context): Set
14135 caret_max_width to 80.
14137 2023-03-03 Alexandre Oliva <oliva@adacore.com>
14139 * gimple-ssa-warn-access.cc
14140 (pass_waccess::check_dangling_stores): Skip non-stores.
14142 2023-03-03 Alexandre Oliva <oliva@adacore.com>
14144 * config/arm/vfp.md (*thumb2_movsi_vfp): Drop blank after tab
14145 after vmsr and vmrs, and lower the case of P0.
14147 2023-03-03 Jonathan Wakely <jwakely@redhat.com>
14149 PR middle-end/109006
14150 * gdbhooks.py (VecPrinter): Handle vec<T> as well as vec<T>*.
14152 2023-03-03 Jonathan Wakely <jwakely@redhat.com>
14154 PR middle-end/109006
14155 * gdbhooks.py (VecPrinter): Adjust for new vec layout.
14157 2023-03-03 Jakub Jelinek <jakub@redhat.com>
14160 * gimple-ssa-warn-access.cc (pass_waccess::maybe_check_access_sizes):
14161 Return immediately if OPT_Wnonnull or OPT_Wstringop_overflow_ is
14162 suppressed on stmt. For [static %E] warning, print access_nelts
14163 rather than access_size. Fix up comment wording.
14165 2023-03-03 Robin Dapp <rdapp@linux.ibm.com>
14167 * config/s390/driver-native.cc (s390_host_detect_local_cpu): Use
14168 arch14 instead of z16.
14170 2023-03-03 Anthony Green <green@moxielogic.com>
14172 * config/moxie/moxie.cc (TARGET_LRA_P): Remove.
14174 2023-03-03 Anthony Green <green@moxielogic.com>
14176 * config/moxie/constraints.md (A, B, W): Change
14177 define_constraint to define_memory_constraint.
14179 2023-03-03 Xi Ruoyao <xry111@xry111.site>
14181 * toplev.cc (process_options): Fix the spelling of
14182 "-fstack-clash-protection".
14184 2023-03-03 Richard Biener <rguenther@suse.de>
14186 PR tree-optimization/109002
14187 * tree-ssa-pre.cc (compute_partial_antic_aux): Properly
14188 PHI-translate ANTIC_IN.
14190 2023-03-03 Jakub Jelinek <jakub@redhat.com>
14192 PR tree-optimization/108988
14193 * gimple-fold.cc (gimple_fold_builtin_fputs): Fold len to
14194 size_type_node before passing it as argument to fwrite. Formatting
14197 2023-03-03 Richard Biener <rguenther@suse.de>
14200 * config/i386/i386.opt (--param x86-stv-max-visits): New param.
14201 * doc/invoke.texi (--param x86-stv-max-visits): Document it.
14202 * config/i386/i386-features.h (scalar_chain::max_visits): New.
14203 (scalar_chain::build): Add bitmap parameter, return boolean.
14204 (scalar_chain::add_insn): Likewise.
14205 (scalar_chain::analyze_register_chain): Likewise.
14206 * config/i386/i386-features.cc (scalar_chain::scalar_chain):
14207 Initialize max_visits.
14208 (scalar_chain::analyze_register_chain): When we exhaust
14209 max_visits, abort. Also abort when running into any
14211 (scalar_chain::add_insn): Propagate abort.
14212 (scalar_chain::build): Likewise. When aborting amend
14213 the set of disallowed insn with the insns set.
14214 (convert_scalars_to_vector): Adjust. Do not convert aborted
14217 2023-03-03 Richard Biener <rguenther@suse.de>
14220 * dwarf2out.cc (dwarf2out_late_global_decl): Do not
14221 generate a DIE for a function scope static.
14223 2023-03-03 Alexandre Oliva <oliva@adacore.com>
14225 * config/vx-common.h (WINT_TYPE): Alias to "wchar_t".
14227 2023-03-02 Jakub Jelinek <jakub@redhat.com>
14230 * target.h (emit_support_tinfos_callback): New typedef.
14231 * targhooks.h (default_emit_support_tinfos): Declare.
14232 * targhooks.cc (default_emit_support_tinfos): New function.
14233 * target.def (emit_support_tinfos): New target hook.
14234 * doc/tm.texi.in (emit_support_tinfos): Document it.
14235 * doc/tm.texi: Regenerated.
14236 * config/i386/i386.cc (ix86_emit_support_tinfos): New function.
14237 (TARGET_EMIT_SUPPORT_TINFOS): Redefine.
14239 2023-03-02 Vladimir N. Makarov <vmakarov@redhat.com>
14241 * ira-costs.cc: Include print-rtl.h.
14242 (record_reg_classes, scan_one_insn): Add code to print debug info.
14243 (record_operand_costs): Find and use smaller cost for hard reg
14246 2023-03-02 Kwok Cheung Yeung <kcy@codesourcery.com>
14247 Paul-Antoine Arras <pa@codesourcery.com>
14249 * builtins.cc (mathfn_built_in_explicit): New.
14250 * config/gcn/gcn.cc: Include case-cfn-macros.h.
14251 (mathfn_built_in_explicit): Add prototype.
14252 (gcn_vectorize_builtin_vectorized_function): New.
14253 (gcn_libc_has_function): New.
14254 (TARGET_LIBC_HAS_FUNCTION): Define.
14255 (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define.
14257 2023-03-02 Richard Sandiford <richard.sandiford@arm.com>
14259 PR tree-optimization/108979
14260 * tree-vect-stmts.cc (vectorizable_operation): Don't mask
14261 operations on invariants.
14263 2023-03-02 Robin Dapp <rdapp@linux.ibm.com>
14265 * config/s390/predicates.md (vll_bias_operand): Add -1 bias.
14266 * config/s390/s390.cc (s390_option_override_internal): Make
14267 partial vector usage the default from z13 on.
14268 * config/s390/vector.md (len_load_v16qi): Add.
14269 (len_store_v16qi): Add.
14271 2023-03-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
14273 * simplify-rtx.cc (simplify_context::simplify_subreg): Use byte instead
14274 of constant 0 offset.
14276 2023-03-02 Robert Suchanek <robert.suchanek@imgtec.com>
14278 * config/mips/mips.cc (mips_set_text_contents_type): Use HOST_WIDE_INT
14280 * config/mips/mips-protos.h (mips_set_text_contents_type): Likewise.
14282 2023-03-02 Junxian Zhu <zhujunxian@oss.cipunited.com>
14284 * config.gcc: add -with-{no-}msa build option.
14285 * config/mips/mips.h: Likewise.
14286 * doc/install.texi: Likewise.
14288 2023-03-02 Richard Sandiford <richard.sandiford@arm.com>
14290 PR tree-optimization/108603
14291 * explow.cc (convert_memory_address_addr_space_1): Only wrap
14292 the result of a recursive call in a CONST if no instructions
14295 2023-03-02 Richard Sandiford <richard.sandiford@arm.com>
14297 PR tree-optimization/108430
14298 * tree-vect-stmts.cc (vectorizable_condition): Fix handling
14299 of inverted condition.
14301 2023-03-02 Jakub Jelinek <jakub@redhat.com>
14304 * fold-const.cc (native_interpret_expr) <case REAL_CST>: Before memcmp
14305 comparison copy the bytes from ptr to a temporary buffer and clearing
14306 padding bits in there.
14308 2023-03-01 Tobias Burnus <tobias@codesourcery.com>
14310 PR middle-end/108545
14311 * gimplify.cc (struct tree_operand_hash_no_se): New.
14312 (omp_index_mapping_groups_1, omp_index_mapping_groups,
14313 omp_reindex_mapping_groups, omp_mapped_by_containing_struct,
14314 omp_tsort_mapping_groups_1, omp_tsort_mapping_groups,
14315 oacc_resolve_clause_dependencies, omp_build_struct_sibling_lists,
14316 gimplify_scan_omp_clauses): Use tree_operand_hash_no_se instead
14317 of tree_operand_hash.
14319 2023-03-01 LIU Hao <lh_mouse@126.com>
14322 * config/i386/host-mingw32.cc (mingw32_gt_pch_get_address):
14323 Remove the size limit `pch_VA_max_size`
14325 2023-03-01 Tobias Burnus <tobias@codesourcery.com>
14327 PR middle-end/108546
14328 * omp-low.cc (lower_omp_target): Remove optional handling
14329 on the receiver side, i.e. inside target (data), for
14332 2023-03-01 Jakub Jelinek <jakub@redhat.com>
14335 * cfgexpand.cc (expand_debug_expr): Handle WIDEN_{PLUS,MINUS}_EXPR
14336 and VEC_WIDEN_{PLUS,MINUS}_{HI,LO}_EXPR.
14338 2023-03-01 Richard Biener <rguenther@suse.de>
14340 PR tree-optimization/108970
14341 * tree-vect-loop-manip.cc (slpeel_can_duplicate_loop_p):
14342 Check we can copy the BBs.
14343 (slpeel_tree_duplicate_loop_to_edge_cfg): Avoid redundant
14345 (vect_do_peeling): Streamline error handling.
14347 2023-03-01 Richard Biener <rguenther@suse.de>
14349 PR tree-optimization/108950
14350 * tree-vect-patterns.cc (vect_recog_widen_sum_pattern):
14351 Check oprnd0 is defined in the loop.
14352 * tree-vect-loop.cc (vectorizable_reduction): Record all
14353 operands vector types, compute that of invariants and
14354 properly update their SLP nodes.
14356 2023-03-01 Kewen Lin <linkw@linux.ibm.com>
14359 * config/rs6000/rs6000.cc (rs6000_option_override_internal): Allow
14360 implicit powerpc64 setting to be unset if 64 bit is enabled implicitly.
14362 2023-02-28 Qing Zhao <qing.zhao@oracle.com>
14364 PR middle-end/107411
14365 PR middle-end/107411
14366 * gimplify.cc (gimple_add_init_for_auto_var): Use sprintf to replace
14368 * tree-ssa-uninit.cc (warn_uninit): Handle the case when the
14369 LHS varaible of a .DEFERRED_INIT call doesn't have a DECL_NAME.
14371 2023-02-28 Jakub Jelinek <jakub@redhat.com>
14373 PR sanitizer/108894
14374 * ubsan.cc (ubsan_expand_bounds_ifn): Emit index >= bound
14375 comparison rather than index > bound.
14376 * gimple-fold.cc (gimple_fold_call): Use tree_int_cst_lt
14377 rather than tree_int_cst_le for IFN_UBSAN_BOUND comparison.
14378 * doc/invoke.texi (-fsanitize=bounds): Document that whether
14379 flexible array member-like arrays are instrumented or not depends
14380 on -fstrict-flex-arrays* options of strict_flex_array attributes.
14381 (-fsanitize=bounds-strict): Document that flexible array members
14382 are not instrumented.
14384 2023-02-27 Uroš Bizjak <ubizjak@gmail.com>
14388 * config/i386/i386.md (fmodxf3): Enable for flag_finite_math_only only.
14389 (fmod<mode>3): Ditto.
14390 (fpremxf4_i387): Ditto.
14391 (reminderxf3): Ditto.
14392 (reminder<mode>3): Ditto.
14393 (fprem1xf4_i387): Ditto.
14395 2023-02-27 Roger Sayle <roger@nextmovesoftware.com>
14397 * simplify-rtx.cc (simplify_unary_operation_1) <case FFS>: Avoid
14398 generating FFS with mismatched operand and result modes, by using
14399 an explicit SIGN_EXTEND/ZERO_EXTEND.
14400 <case POPCOUNT>: Likewise, for POPCOUNT of ZERO_EXTEND.
14401 <case PARITY>: Likewise, for PARITY of {ZERO,SIGN}_EXTEND.
14403 2023-02-27 Patrick Palka <ppalka@redhat.com>
14405 * hash-table.h (gt_pch_nx(hash_table<D>)): Remove static.
14406 * lra-int.h (lra_change_class): Likewise.
14407 * recog.h (which_op_alt): Likewise.
14408 * sel-sched-ir.h (sel_bb_empty_or_nop_p): Declare inline
14411 2023-02-27 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
14413 * config/xtensa/xtensa-protos.h (xtensa_match_CLAMPS_imms_p):
14415 * config/xtensa/xtensa.cc (xtensa_match_CLAMPS_imms_p):
14417 * config/xtensa/xtensa.h (TARGET_CLAMPS): New macro definition.
14418 * config/xtensa/xtensa.md (*xtensa_clamps): New insn pattern.
14420 2023-02-27 Max Filippov <jcmvbkbc@gmail.com>
14422 * config/xtensa/xtensa-dynconfig.cc (xtensa_get_config_v2)
14423 (xtensa_get_config_v3): New functions.
14425 2023-02-27 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14427 * config/aarch64/aarch64-simd.md (aarch64_abs<mode>): Fix typo in comment.
14429 2023-02-27 Lulu Cheng <chenglulu@loongson.cn>
14431 * config/host-linux.cc (TRY_EMPTY_VM_SPACE): Modify the value of
14432 the macro to 0x1000000000.
14434 2023-02-25 Gaius Mulley <gaiusmod2@gmail.com>
14437 * doc/gm2.texi (-fm2-pathname): New option documented.
14438 (-fm2-pathnameI): New option documented.
14439 (-fm2-prefix=): New option documented.
14440 (-fruntime-modules=): Update default module list.
14442 2023-02-25 Max Filippov <jcmvbkbc@gmail.com>
14445 * config/xtensa/xtensa-protos.h
14446 (xtensa_prepare_expand_call): Rename to xtensa_expand_call.
14447 * config/xtensa/xtensa.cc (xtensa_prepare_expand_call): Rename
14448 to xtensa_expand_call.
14449 (xtensa_expand_call): Emit the call and add a clobber expression
14450 for the static chain to it in case of windowed ABI.
14451 * config/xtensa/xtensa.md (call, call_value, sibcall)
14452 (sibcall_value): Call xtensa_expand_call and complete expansion
14453 right after that call.
14455 2023-02-24 Richard Biener <rguenther@suse.de>
14457 * vec.h (vec<T, A, vl_embed>::m_vecdata): Remove.
14458 (vec<T, A, vl_embed>::m_vecpfx): Align as T to avoid
14459 changing alignment of vec<T, A, vl_embed> and simplifying
14461 (vec<T, A, vl_embed>::address): Compute as this + 1.
14462 (vec<T, A, vl_embed>::embedded_size): Use sizeof the
14463 vector instead of the offset of the m_vecdata member.
14464 (auto_vec<T, N>::m_data): Turn storage into
14465 uninitialized unsigned char.
14466 (auto_vec<T, N>::auto_vec): Allow allocation of one
14467 stack member. Initialize m_vec in a special way to
14468 avoid later stringop overflow diagnostics.
14469 * vec.cc (test_auto_alias): New.
14470 (vec_cc_tests): Call it.
14472 2023-02-24 Richard Biener <rguenther@suse.de>
14474 * vec.h (vec<T, A, vl_embed>::lower_bound): Adjust to
14475 take a const reference to the object, use address to
14477 (vec<T, A, vl_embed>::contains): Use address to access data.
14478 (vec<T, A, vl_embed>::operator[]): Use address instead of
14479 m_vecdata to access data.
14480 (vec<T, A, vl_embed>::iterate): Likewise.
14481 (vec<T, A, vl_embed>::copy): Likewise.
14482 (vec<T, A, vl_embed>::quick_push): Likewise.
14483 (vec<T, A, vl_embed>::pop): Likewise.
14484 (vec<T, A, vl_embed>::quick_insert): Likewise.
14485 (vec<T, A, vl_embed>::ordered_remove): Likewise.
14486 (vec<T, A, vl_embed>::unordered_remove): Likewise.
14487 (vec<T, A, vl_embed>::block_remove): Likewise.
14488 (vec<T, A, vl_heap>::address): Likewise.
14490 2023-02-24 Martin Liska <mliska@suse.cz>
14492 PR sanitizer/108834
14493 * asan.cc (asan_add_global): Use proper TU name for normal
14494 global variables (and aux_base_name for the artificial one).
14496 2023-02-24 Jakub Jelinek <jakub@redhat.com>
14498 * config/i386/i386-builtin.def: Update description of BDESC
14499 and BDESC_FIRST in file comment to include mask2.
14501 2023-02-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14503 * config/aarch64/aarch64-cores.def (FLAGS): Update comment.
14505 2023-02-24 Jakub Jelinek <jakub@redhat.com>
14507 PR middle-end/108854
14508 * cgraphclones.cc (duplicate_thunk_for_node): If no parameter
14509 changes are needed, copy at least DECL_ARGUMENTS PARM_DECL
14510 nodes and adjust their DECL_CONTEXT.
14512 2023-02-24 Jakub Jelinek <jakub@redhat.com>
14515 * config/i386/i386-builtin.def (__builtin_ia32_cvtne2ps2bf16_v16bf,
14516 __builtin_ia32_cvtne2ps2bf16_v16bf_mask,
14517 __builtin_ia32_cvtne2ps2bf16_v16bf_maskz,
14518 __builtin_ia32_cvtne2ps2bf16_v8bf,
14519 __builtin_ia32_cvtne2ps2bf16_v8bf_mask,
14520 __builtin_ia32_cvtne2ps2bf16_v8bf_maskz,
14521 __builtin_ia32_cvtneps2bf16_v8sf_mask,
14522 __builtin_ia32_cvtneps2bf16_v8sf_maskz,
14523 __builtin_ia32_cvtneps2bf16_v4sf_mask,
14524 __builtin_ia32_cvtneps2bf16_v4sf_maskz,
14525 __builtin_ia32_dpbf16ps_v8sf, __builtin_ia32_dpbf16ps_v8sf_mask,
14526 __builtin_ia32_dpbf16ps_v8sf_maskz, __builtin_ia32_dpbf16ps_v4sf,
14527 __builtin_ia32_dpbf16ps_v4sf_mask,
14528 __builtin_ia32_dpbf16ps_v4sf_maskz): Require also
14529 OPTION_MASK_ISA_AVX512VL.
14531 2023-02-24 Sebastian Huber <sebastian.huber@embedded-brains.de>
14533 * config/riscv/t-rtems: Keep only -mcmodel=medany 64-bit multilibs.
14534 Add non-compact 32-bit multilibs.
14536 2023-02-24 Junxian Zhu <zhujunxian@oss.cipunited.com>
14538 * config/mips/mips.md (*clo<mode>2): New pattern.
14540 2023-02-24 Prachi Godbole <prachi.godbole@imgtec.com>
14542 * config/mips/mips.h (machine_function): New variable
14543 use_hazard_barrier_return_p.
14544 * config/mips/mips.md (UNSPEC_JRHB): New unspec.
14545 (mips_hb_return_internal): New insn pattern.
14546 * config/mips/mips.cc (mips_attribute_table): Add attribute
14547 use_hazard_barrier_return.
14548 (mips_use_hazard_barrier_return_p): New static function.
14549 (mips_function_attr_inlinable_p): Likewise.
14550 (mips_compute_frame_info): Set use_hazard_barrier_return_p.
14551 Emit error for unsupported architecture choice.
14552 (mips_function_ok_for_sibcall, mips_can_use_return_insn):
14553 Return false for use_hazard_barrier_return.
14554 (mips_expand_epilogue): Emit hazard barrier return.
14555 * doc/extend.texi: Document use_hazard_barrier_return.
14557 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
14559 * config/xtensa/xtensa-dynconfig.cc (config.h, system.h)
14560 (coretypes.h, diagnostic.h, intl.h): Use "..." instead of <...>
14561 for the gcc-internal headers.
14563 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
14565 * config/xtensa/t-xtensa (xtensa-dynconfig.o): Use $(COMPILE)
14566 and $(POSTCOMPILE) instead of manual dependency listing.
14567 * config/xtensa/xtensa-dynconfig.c: Rename to ...
14568 * config/xtensa/xtensa-dynconfig.cc: ... this.
14570 2023-02-23 Arsen Arsenović <arsen@aarsen.me>
14572 * doc/cfg.texi: Reorder index entries around @items.
14573 * doc/cpp.texi: Ditto.
14574 * doc/cppenv.texi: Ditto.
14575 * doc/cppopts.texi: Ditto.
14576 * doc/generic.texi: Ditto.
14577 * doc/install.texi: Ditto.
14578 * doc/extend.texi: Ditto.
14579 * doc/invoke.texi: Ditto.
14580 * doc/md.texi: Ditto.
14581 * doc/rtl.texi: Ditto.
14582 * doc/tm.texi.in: Ditto.
14583 * doc/trouble.texi: Ditto.
14584 * doc/tm.texi: Regenerate.
14586 2023-02-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
14588 * config/xtensa/xtensa.md: New peephole2 pattern that eliminates
14589 the occurrence of general-purpose register used only once and for
14590 transferring intermediate value.
14592 2023-02-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
14594 * config/xtensa/xtensa.cc (machine_function): Add new member
14595 'eliminated_callee_saved_bmp'.
14596 (xtensa_can_eliminate_callee_saved_reg_p): New function to
14597 determine whether the register can be eliminated or not.
14598 (xtensa_expand_prologue): Add invoking the above function and
14599 elimination the use of callee-saved register by using its stack
14600 slot through the stack pointer (or the frame pointer if needed)
14602 (xtensa_expand_prologue): Modify to not emit register restoration
14603 insn from its stack slot if the register is already eliminated.
14605 2023-02-23 Jakub Jelinek <jakub@redhat.com>
14607 PR translation/108890
14608 * config/xtensa/xtensa-dynconfig.c (xtensa_load_config): Drop _()s
14609 around fatal_error format strings.
14611 2023-02-23 Richard Biener <rguenther@suse.de>
14613 * tree-ssa-structalias.cc (handle_lhs_call): Do not
14614 re-create rhsc, only truncate it.
14616 2023-02-23 Jakub Jelinek <jakub@redhat.com>
14618 PR middle-end/106258
14619 * ipa-prop.cc (try_make_edge_direct_virtual_call): Handle
14620 BUILT_IN_UNREACHABLE_TRAP like BUILT_IN_UNREACHABLE.
14622 2023-02-23 Richard Biener <rguenther@suse.de>
14624 * tree-if-conv.cc (tree_if_conversion): Properly manage
14625 memory of refs and the contained data references.
14627 2023-02-23 Richard Biener <rguenther@suse.de>
14629 PR tree-optimization/108888
14630 * tree-if-conv.cc (if_convertible_stmt_p): Set PLF_2 on
14631 calls to predicate.
14632 (predicate_statements): Only predicate calls with PLF_2.
14634 2023-02-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
14636 * config/xtensa/xtensa.md
14637 (zero_cost_loop_start, zero_cost_loop_end, loop_end):
14638 Add missing "SI:" to PLUS RTXes.
14640 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
14643 * config/xtensa/xtensa.cc (xtensa_expand_epilogue):
14644 Emit (use (reg:SI A0_REG)) at the end in the sibling call
14645 (i.e. the same place as (return) in the normal call).
14647 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
14650 2023-02-21 Max Filippov <jcmvbkbc@gmail.com>
14653 * config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use
14655 * config/xtensa/xtensa.md (sibcall, sibcall_internal)
14656 (sibcall_value, sibcall_value_internal): Add 'use' expression
14659 2023-02-23 Arsen Arsenović <arsen@aarsen.me>
14661 * doc/cppdiropts.texi: Reorder @opindex commands to precede
14662 @items they relate to.
14663 * doc/cppopts.texi: Ditto.
14664 * doc/cppwarnopts.texi: Ditto.
14665 * doc/invoke.texi: Ditto.
14666 * doc/lto.texi: Ditto.
14668 2023-02-22 Andrew Stubbs <ams@codesourcery.com>
14670 * internal-fn.cc (expand_MASK_CALL): New.
14671 * internal-fn.def (MASK_CALL): New.
14672 * internal-fn.h (expand_MASK_CALL): New prototype.
14673 * omp-simd-clone.cc (simd_clone_adjust_argument_types): Set vector_type
14674 for mask arguments also.
14675 * tree-if-conv.cc: Include cgraph.h.
14676 (if_convertible_stmt_p): Do if conversions for calls to SIMD calls.
14677 (predicate_statements): Convert functions to IFN_MASK_CALL.
14678 * tree-vect-loop.cc (vect_get_datarefs_in_loop): Recognise
14679 IFN_MASK_CALL as a SIMD function call.
14680 * tree-vect-stmts.cc (vectorizable_simd_clone_call): Handle
14681 IFN_MASK_CALL as an inbranch SIMD function call.
14682 Generate the mask vector arguments.
14684 2023-02-22 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
14686 * config/riscv/riscv-vector-builtins-bases.cc (class reducop): New class.
14687 (class widen_reducop): Ditto.
14688 (class freducop): Ditto.
14689 (class widen_freducop): Ditto.
14691 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
14692 * config/riscv/riscv-vector-builtins-functions.def (vredsum): Add reduction support.
14701 (vwredsumu): Ditto.
14702 (vfredusum): Ditto.
14703 (vfredosum): Ditto.
14706 (vfwredosum): Ditto.
14707 (vfwredusum): Ditto.
14708 * config/riscv/riscv-vector-builtins-shapes.cc (struct reduc_alu_def): Ditto.
14710 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
14711 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WI_OPS): New macro.
14712 (DEF_RVV_WU_OPS): Ditto.
14713 (DEF_RVV_WF_OPS): Ditto.
14714 (vint8mf8_t): Ditto.
14715 (vint8mf4_t): Ditto.
14716 (vint8mf2_t): Ditto.
14717 (vint8m1_t): Ditto.
14718 (vint8m2_t): Ditto.
14719 (vint8m4_t): Ditto.
14720 (vint8m8_t): Ditto.
14721 (vint16mf4_t): Ditto.
14722 (vint16mf2_t): Ditto.
14723 (vint16m1_t): Ditto.
14724 (vint16m2_t): Ditto.
14725 (vint16m4_t): Ditto.
14726 (vint16m8_t): Ditto.
14727 (vint32mf2_t): Ditto.
14728 (vint32m1_t): Ditto.
14729 (vint32m2_t): Ditto.
14730 (vint32m4_t): Ditto.
14731 (vint32m8_t): Ditto.
14732 (vuint8mf8_t): Ditto.
14733 (vuint8mf4_t): Ditto.
14734 (vuint8mf2_t): Ditto.
14735 (vuint8m1_t): Ditto.
14736 (vuint8m2_t): Ditto.
14737 (vuint8m4_t): Ditto.
14738 (vuint8m8_t): Ditto.
14739 (vuint16mf4_t): Ditto.
14740 (vuint16mf2_t): Ditto.
14741 (vuint16m1_t): Ditto.
14742 (vuint16m2_t): Ditto.
14743 (vuint16m4_t): Ditto.
14744 (vuint16m8_t): Ditto.
14745 (vuint32mf2_t): Ditto.
14746 (vuint32m1_t): Ditto.
14747 (vuint32m2_t): Ditto.
14748 (vuint32m4_t): Ditto.
14749 (vuint32m8_t): Ditto.
14750 (vfloat32mf2_t): Ditto.
14751 (vfloat32m1_t): Ditto.
14752 (vfloat32m2_t): Ditto.
14753 (vfloat32m4_t): Ditto.
14754 (vfloat32m8_t): Ditto.
14755 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WI_OPS): Ditto.
14756 (DEF_RVV_WU_OPS): Ditto.
14757 (DEF_RVV_WF_OPS): Ditto.
14758 (required_extensions_p): Add reduction support.
14759 (rvv_arg_type_info::get_base_vector_type): Ditto.
14760 (rvv_arg_type_info::get_tree_type): Ditto.
14761 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
14762 * config/riscv/riscv.md: Ditto.
14763 * config/riscv/vector-iterators.md (minu): Ditto.
14764 * config/riscv/vector.md (@pred_reduc_<reduc><mode><vlmul1>): New patern.
14765 (@pred_reduc_<reduc><mode><vlmul1_zve32>): Ditto.
14766 (@pred_widen_reduc_plus<v_su><mode><vwlmul1>): Ditto.
14767 (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve32>):Ditto.
14768 (@pred_reduc_plus<order><mode><vlmul1>): Ditto.
14769 (@pred_reduc_plus<order><mode><vlmul1_zve32>): Ditto.
14770 (@pred_widen_reduc_plus<order><mode><vwlmul1>): Ditto.
14772 2023-02-22 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
14774 * config/riscv/iterators.md: New iterator.
14775 * config/riscv/riscv-vector-builtins-bases.cc (class widen_binop): New class.
14776 (enum ternop_type): New enum.
14777 (class vmacc): New class.
14778 (class imac): Ditto.
14779 (class vnmsac): Ditto.
14780 (enum widen_ternop_type): New enum.
14781 (class vmadd): Ditto.
14782 (class vnmsub): Ditto.
14783 (class iwmac): Ditto.
14784 (class vwmacc): Ditto.
14785 (class vwmaccu): Ditto.
14786 (class vwmaccsu): Ditto.
14787 (class vwmaccus): Ditto.
14788 (class reverse_binop): Ditto.
14789 (class vfmacc): Ditto.
14790 (class vfnmsac): Ditto.
14791 (class vfmadd): Ditto.
14792 (class vfnmsub): Ditto.
14793 (class vfnmacc): Ditto.
14794 (class vfmsac): Ditto.
14795 (class vfnmadd): Ditto.
14796 (class vfmsub): Ditto.
14797 (class vfwmacc): Ditto.
14798 (class vfwnmacc): Ditto.
14799 (class vfwmsac): Ditto.
14800 (class vfwnmsac): Ditto.
14801 (class float_misc): Ditto.
14802 (class fcmp): Ditto.
14803 (class vfclass): Ditto.
14804 (class vfcvt_x): Ditto.
14805 (class vfcvt_rtz_x): Ditto.
14806 (class vfcvt_f): Ditto.
14807 (class vfwcvt_x): Ditto.
14808 (class vfwcvt_rtz_x): Ditto.
14809 (class vfwcvt_f): Ditto.
14810 (class vfncvt_x): Ditto.
14811 (class vfncvt_rtz_x): Ditto.
14812 (class vfncvt_f): Ditto.
14813 (class vfncvt_rod_f): Ditto.
14815 * config/riscv/riscv-vector-builtins-bases.h:
14816 * config/riscv/riscv-vector-builtins-functions.def (vzext): Ditto.
14860 (vfcvt_rtz_x): Ditto.
14861 (vfcvt_rtz_xu): Ditto.
14864 (vfwcvt_xu): Ditto.
14865 (vfwcvt_rtz_x): Ditto.
14866 (vfwcvt_rtz_xu): Ditto.
14869 (vfncvt_xu): Ditto.
14870 (vfncvt_rtz_x): Ditto.
14871 (vfncvt_rtz_xu): Ditto.
14873 (vfncvt_rod_f): Ditto.
14874 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
14875 (struct move_def): Ditto.
14876 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WEXTF_OPS): New macro.
14877 (DEF_RVV_CONVERT_I_OPS): Ditto.
14878 (DEF_RVV_CONVERT_U_OPS): Ditto.
14879 (DEF_RVV_WCONVERT_I_OPS): Ditto.
14880 (DEF_RVV_WCONVERT_U_OPS): Ditto.
14881 (DEF_RVV_WCONVERT_F_OPS): Ditto.
14882 (vfloat64m1_t): Ditto.
14883 (vfloat64m2_t): Ditto.
14884 (vfloat64m4_t): Ditto.
14885 (vfloat64m8_t): Ditto.
14886 (vint32mf2_t): Ditto.
14887 (vint32m1_t): Ditto.
14888 (vint32m2_t): Ditto.
14889 (vint32m4_t): Ditto.
14890 (vint32m8_t): Ditto.
14891 (vint64m1_t): Ditto.
14892 (vint64m2_t): Ditto.
14893 (vint64m4_t): Ditto.
14894 (vint64m8_t): Ditto.
14895 (vuint32mf2_t): Ditto.
14896 (vuint32m1_t): Ditto.
14897 (vuint32m2_t): Ditto.
14898 (vuint32m4_t): Ditto.
14899 (vuint32m8_t): Ditto.
14900 (vuint64m1_t): Ditto.
14901 (vuint64m2_t): Ditto.
14902 (vuint64m4_t): Ditto.
14903 (vuint64m8_t): Ditto.
14904 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_CONVERT_I_OPS): Ditto.
14905 (DEF_RVV_CONVERT_U_OPS): Ditto.
14906 (DEF_RVV_WCONVERT_I_OPS): Ditto.
14907 (DEF_RVV_WCONVERT_U_OPS): Ditto.
14908 (DEF_RVV_WCONVERT_F_OPS): Ditto.
14909 (DEF_RVV_F_OPS): Ditto.
14910 (DEF_RVV_WEXTF_OPS): Ditto.
14911 (required_extensions_p): Adjust for floating-point support.
14912 (check_required_extensions): Ditto.
14913 (unsigned_base_type_p): Ditto.
14914 (get_mode_for_bitsize): Ditto.
14915 (rvv_arg_type_info::get_base_vector_type): Ditto.
14916 (rvv_arg_type_info::get_tree_type): Ditto.
14917 * config/riscv/riscv-vector-builtins.def (v_f): New define.
14920 (xu_v): New define.
14922 (xu_w): New define.
14923 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): New enum.
14924 (function_expander::arg_mode): New function.
14925 * config/riscv/vector-iterators.md (sof): New iterator.
14931 (fixuns_trunc): Ditto.
14933 * config/riscv/vector.md (@pred_broadcast<mode>): New pattern.
14934 (@pred_<optab><mode>): Ditto.
14935 (@pred_<optab><mode>_scalar): Ditto.
14936 (@pred_<optab><mode>_reverse_scalar): Ditto.
14937 (@pred_<copysign><mode>): Ditto.
14938 (@pred_<copysign><mode>_scalar): Ditto.
14939 (@pred_mul_<optab><mode>): Ditto.
14940 (pred_mul_<optab><mode>_undef_merge): Ditto.
14941 (*pred_<madd_nmsub><mode>): Ditto.
14942 (*pred_<macc_nmsac><mode>): Ditto.
14943 (*pred_mul_<optab><mode>): Ditto.
14944 (@pred_mul_<optab><mode>_scalar): Ditto.
14945 (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
14946 (*pred_<madd_nmsub><mode>_scalar): Ditto.
14947 (*pred_<macc_nmsac><mode>_scalar): Ditto.
14948 (*pred_mul_<optab><mode>_scalar): Ditto.
14949 (@pred_neg_mul_<optab><mode>): Ditto.
14950 (pred_neg_mul_<optab><mode>_undef_merge): Ditto.
14951 (*pred_<nmadd_msub><mode>): Ditto.
14952 (*pred_<nmacc_msac><mode>): Ditto.
14953 (*pred_neg_mul_<optab><mode>): Ditto.
14954 (@pred_neg_mul_<optab><mode>_scalar): Ditto.
14955 (*pred_neg_mul_<optab><mode>_undef_merge_scalar): Ditto.
14956 (*pred_<nmadd_msub><mode>_scalar): Ditto.
14957 (*pred_<nmacc_msac><mode>_scalar): Ditto.
14958 (*pred_neg_mul_<optab><mode>_scalar): Ditto.
14959 (@pred_<misc_op><mode>): Ditto.
14960 (@pred_class<mode>): Ditto.
14961 (@pred_dual_widen_<optab><mode>): Ditto.
14962 (@pred_dual_widen_<optab><mode>_scalar): Ditto.
14963 (@pred_single_widen_<plus_minus:optab><mode>): Ditto.
14964 (@pred_single_widen_<plus_minus:optab><mode>_scalar): Ditto.
14965 (@pred_widen_mul_<optab><mode>): Ditto.
14966 (@pred_widen_mul_<optab><mode>_scalar): Ditto.
14967 (@pred_widen_neg_mul_<optab><mode>): Ditto.
14968 (@pred_widen_neg_mul_<optab><mode>_scalar): Ditto.
14969 (@pred_cmp<mode>): Ditto.
14970 (*pred_cmp<mode>): Ditto.
14971 (*pred_cmp<mode>_narrow): Ditto.
14972 (@pred_cmp<mode>_scalar): Ditto.
14973 (*pred_cmp<mode>_scalar): Ditto.
14974 (*pred_cmp<mode>_scalar_narrow): Ditto.
14975 (@pred_eqne<mode>_scalar): Ditto.
14976 (*pred_eqne<mode>_scalar): Ditto.
14977 (*pred_eqne<mode>_scalar_narrow): Ditto.
14978 (@pred_merge<mode>_scalar): Ditto.
14979 (@pred_fcvt_x<v_su>_f<mode>): Ditto.
14980 (@pred_<fix_cvt><mode>): Ditto.
14981 (@pred_<float_cvt><mode>): Ditto.
14982 (@pred_widen_fcvt_x<v_su>_f<mode>): Ditto.
14983 (@pred_widen_<fix_cvt><mode>): Ditto.
14984 (@pred_widen_<float_cvt><mode>): Ditto.
14985 (@pred_extend<mode>): Ditto.
14986 (@pred_narrow_fcvt_x<v_su>_f<mode>): Ditto.
14987 (@pred_narrow_<fix_cvt><mode>): Ditto.
14988 (@pred_narrow_<float_cvt><mode>): Ditto.
14989 (@pred_trunc<mode>): Ditto.
14990 (@pred_rod_trunc<mode>): Ditto.
14992 2023-02-22 Jakub Jelinek <jakub@redhat.com>
14994 PR middle-end/106258
14995 * cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee,
14996 cgraph_update_edges_for_call_stmt_node, cgraph_node::verify_node):
14997 Handle BUILT_IN_UNREACHABLE_TRAP like BUILT_IN_UNREACHABLE.
14998 * cgraphclones.cc (cgraph_node::create_clone): Likewise.
15000 2023-02-22 Thomas Schwinge <thomas@codesourcery.com>
15002 * common.opt (-Wcomplain-wrong-lang): New.
15003 * doc/invoke.texi (-Wno-complain-wrong-lang): Document it.
15004 * opts-common.cc (prune_options): Handle it.
15005 * opts-global.cc (complain_wrong_lang): Use it.
15007 2023-02-21 David Malcolm <dmalcolm@redhat.com>
15010 * doc/invoke.texi: Document -fno-analyzer-suppress-followups.
15012 2023-02-21 Max Filippov <jcmvbkbc@gmail.com>
15015 * config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use
15017 * config/xtensa/xtensa.md (sibcall, sibcall_internal)
15018 (sibcall_value, sibcall_value_internal): Add 'use' expression
15021 2023-02-21 Richard Biener <rguenther@suse.de>
15023 PR tree-optimization/108691
15024 * tree-ssa-dce.cc (eliminate_unnecessary_stmts): Remove
15025 assert about calls_setjmp not becoming true when it was false.
15027 2023-02-21 Richard Biener <rguenther@suse.de>
15029 PR tree-optimization/108793
15030 * tree-ssa-loop-niter.cc (number_of_iterations_until_wrap):
15031 Use convert operands to niter_type when computing num.
15033 2023-02-21 Richard Biener <rguenther@suse.de>
15036 2023-02-13 Richard Biener <rguenther@suse.de>
15038 PR tree-optimization/108691
15039 * tree-cfg.cc (notice_special_calls): When the CFG is built
15040 honor gimple_call_ctrl_altering_p.
15041 * cfgexpand.cc (expand_call_stmt): Clear cfun->calls_setjmp
15042 temporarily if the call is not control-altering.
15043 * calls.cc (emit_call_1): Do not add REG_SETJMP if
15044 cfun->calls_setjmp is not set. Do not alter cfun->calls_setjmp.
15046 2023-02-21 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
15048 * config/xtensa/xtensa.cc (xtensa_call_save_reg): Change to return
15049 true if register A0 (return address register) when -Og is specified.
15051 2023-02-20 Uroš Bizjak <ubizjak@gmail.com>
15053 * config/i386/predicates.md
15054 (general_x64constmem_operand): New predicate.
15055 * config/i386/i386.md (*cmpqi_ext<mode>_1):
15056 Use nonimm_x64constmem_operand.
15057 (*cmpqi_ext<mode>_3): Use general_x64constmem_operand.
15058 (*addqi_ext<mode>_1): Ditto.
15059 (*testqi_ext<mode>_1): Ditto.
15060 (*andqi_ext<mode>_1): Ditto.
15061 (*andqi_ext<mode>_1_cc): Ditto.
15062 (*<any_or:code>qi_ext<mode>_1): Ditto.
15063 (*xorqi_ext<mode>_1_cc): Ditto.
15065 2023-02-20 Jakub Jelinek <jakub2redhat.com>
15068 * config/rs6000/rs6000.md (umaddditi4): Swap gen_maddlddi4 with
15069 gen_umadddi4_highpart{,_le}.
15071 2023-02-20 Kito Cheng <kito.cheng@sifive.com>
15073 * config/riscv/riscv.md (prefetch): Use r instead of p for the
15075 (riscv_prefetchi_<mode>): Ditto.
15077 2023-02-20 Richard Biener <rguenther@suse.de>
15079 PR tree-optimization/108816
15080 * tree-vect-loop-manip.cc (vect_loop_versioning): Adjust
15081 versioning condition split prerequesite, assert required
15084 2023-02-20 Richard Biener <rguenther@suse.de>
15086 PR tree-optimization/108825
15087 * tree-ssa-loop-manip.cc (verify_loop_closed_ssa): For
15088 loop-local verfication only verify there's no pending SSA
15091 2023-02-20 Richard Biener <rguenther@suse.de>
15093 PR tree-optimization/108819
15094 * tree-ssa-loop-niter.cc (number_of_iterations_cltz): Check
15095 we have an SSA name as iv_2 as expected.
15097 2023-02-18 Jakub Jelinek <jakub@redhat.com>
15099 PR tree-optimization/108819
15100 * tree-ssa-reassoc.cc (update_ops): Fold new stmt in place.
15102 2023-02-18 Jakub Jelinek <jakub@redhat.com>
15105 * config/i386/i386-protos.h (ix86_replace_reg_with_reg): Declare.
15106 * config/i386/i386-expand.cc (ix86_replace_reg_with_reg): New
15108 * config/i386/i386.md: Replace replace_rtx calls in all peephole2s
15109 with ix86_replace_reg_with_reg.
15111 2023-02-18 Gerald Pfeifer <gerald@pfeifer.com>
15113 * doc/invoke.texi (AVR Options): Update link to AVR-LibC.
15115 2023-02-18 Xi Ruoyao <xry111@xry111.site>
15117 * config.gcc (triplet_abi): Set its value based on $with_abi,
15118 instead of $target.
15119 (la_canonical_triplet): Set it after $triplet_abi is set
15121 * config/loongarch/t-linux (MULTILIB_OSDIRNAMES): Make the
15122 multiarch tuple for lp64d "loongarch64-linux-gnu" (without
15125 2023-02-18 Andrew Pinski <apinski@marvell.com>
15127 * match.pd: Remove #if GIMPLE around the
15130 2023-02-18 Andrew Pinski <apinski@marvell.com>
15132 * value-query.h (get_range_query): Return the global ranges
15133 for a nullptr func.
15135 2023-02-17 Siddhesh Poyarekar <siddhesh@gotplt.org>
15137 * doc/invoke.texi (@item -Wall): Fix typo in
15140 2023-02-17 Uroš Bizjak <ubizjak@gmail.com>
15143 * config/i386/predicates.md
15144 (nonimm_x64constmem_operand): New predicate.
15145 * config/i386/i386.md (*addqi_ext<mode>_0): New insn pattern.
15146 (*subqi_ext<mode>_0): Ditto.
15147 (*andqi_ext<mode>_0): Ditto.
15148 (*<any_or:code>qi_ext<mode>_0): Ditto.
15150 2023-02-17 Uroš Bizjak <ubizjak@gmail.com>
15153 * simplify-rtx.cc (simplify_context::simplify_subreg): Use
15154 int_outermode instead of GET_MODE (tem) to prevent
15155 VOIDmode from entering simplify_gen_subreg.
15157 2023-02-17 Richard Biener <rguenther@suse.de>
15159 PR tree-optimization/108821
15160 * tree-ssa-loop-im.cc (sm_seq_valid_bb): We can also not
15161 move volatile accesses.
15163 2023-02-17 Richard Biener <rguenther@suse.de>
15165 * tree-ssa.cc (ssa_undefined_value_p): Assert we are not
15166 called on virtual operands.
15167 * tree-ssa-sccvn.cc (vn_phi_lookup): Guard
15168 ssa_undefined_value_p calls.
15169 (vn_phi_insert): Likewise.
15170 (set_ssa_val_to): Likewise.
15171 (visit_phi): Avoid extra work with equivalences for
15172 virtual operand PHIs.
15174 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15176 * config/riscv/riscv-vector-builtins-bases.cc (class mask_logic): New
15178 (class mask_nlogic): Ditto.
15179 (class mask_notlogic): Ditto.
15180 (class vmmv): Ditto.
15181 (class vmclr): Ditto.
15182 (class vmset): Ditto.
15183 (class vmnot): Ditto.
15184 (class vcpop): Ditto.
15185 (class vfirst): Ditto.
15186 (class mask_misc): Ditto.
15187 (class viota): Ditto.
15188 (class vid): Ditto.
15190 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
15191 * config/riscv/riscv-vector-builtins-functions.def (vmand): Ditto.
15210 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
15211 (struct mask_alu_def): Ditto.
15213 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
15214 * config/riscv/riscv-vector-builtins.cc: Ditto.
15215 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::cleanup_insns): Fix bug
15216 for dest it scalar RVV intrinsics.
15217 * config/riscv/vector-iterators.md (sof): New iterator.
15218 * config/riscv/vector.md (@pred_<optab>n<mode>): New pattern.
15219 (@pred_<optab>not<mode>): New pattern.
15220 (@pred_popcount<VB:mode><P:mode>): New pattern.
15221 (@pred_ffs<VB:mode><P:mode>): New pattern.
15222 (@pred_<misc_op><mode>): New pattern.
15223 (@pred_iota<mode>): New pattern.
15224 (@pred_series<mode>): New pattern.
15226 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15228 * config/riscv/riscv-vector-builtins-functions.def (vadc): Rename.
15232 * config/riscv/riscv-vector-builtins.cc: Ditto.
15234 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15235 kito-cheng <kito.cheng@sifive.com>
15237 * config/riscv/riscv-protos.h (sew64_scalar_helper): New function.
15238 * config/riscv/riscv-v.cc (has_vi_variant_p): Adjust.
15239 (sew64_scalar_helper): New function.
15240 * config/riscv/vector.md: Normalization.
15242 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15244 * config/riscv/riscv-vector-builtins-functions.def (vsetvlmax): Rearrange.
15306 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15308 * config/riscv/vector.md (@pred_<optab><mode>): Rearrange.
15309 (@pred_<optab><mode>_scalar): Ditto.
15310 (*pred_<optab><mode>_scalar): Ditto.
15311 (*pred_<optab><mode>_extended_scalar): Ditto.
15313 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15315 * config/riscv/riscv-protos.h (riscv_run_selftests): Remove 'extern'.
15316 (init_builtins): Ditto.
15317 (mangle_builtin_type): Ditto.
15318 (verify_type_context): Ditto.
15319 (handle_pragma_vector): Ditto.
15320 (builtin_decl): Ditto.
15321 (expand_builtin): Ditto.
15322 (const_vec_all_same_in_range_p): Ditto.
15323 (legitimize_move): Ditto.
15324 (emit_vlmax_op): Ditto.
15325 (emit_nonvlmax_op): Ditto.
15326 (get_vlmul): Ditto.
15327 (get_ratio): Ditto.
15330 (get_avl_type): Ditto.
15331 (calculate_ratio): Ditto.
15332 (enum vlmul_type): Ditto.
15334 (neg_simm5_p): Ditto.
15335 (has_vi_variant_p): Ditto.
15337 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15339 * config/riscv/riscv-protos.h (simm32_p): Remove.
15340 * config/riscv/riscv-v.cc (simm32_p): Ditto.
15341 * config/riscv/vector.md: Use immediate_operand
15342 instead of riscv_vector::simm32_p.
15344 2023-02-16 Gerald Pfeifer <gerald@pfeifer.com>
15346 * doc/invoke.texi (Optimize Options): Reword the explanation
15347 getting minimal, maximal and default values of a parameter.
15349 2023-02-16 Patrick Palka <ppalka@redhat.com>
15351 * addresses.h: Mechanically drop 'static' from 'static inline'
15352 functions via s/^static inline/inline/g.
15353 * asan.h: Likewise.
15354 * attribs.h: Likewise.
15355 * basic-block.h: Likewise.
15356 * bitmap.h: Likewise.
15357 * cfghooks.h: Likewise.
15358 * cfgloop.h: Likewise.
15359 * cgraph.h: Likewise.
15360 * cselib.h: Likewise.
15361 * data-streamer.h: Likewise.
15362 * debug.h: Likewise.
15364 * diagnostic.h: Likewise.
15365 * dominance.h: Likewise.
15366 * dumpfile.h: Likewise.
15367 * emit-rtl.h: Likewise.
15368 * except.h: Likewise.
15369 * expmed.h: Likewise.
15370 * expr.h: Likewise.
15371 * fixed-value.h: Likewise.
15372 * gengtype.h: Likewise.
15373 * gimple-expr.h: Likewise.
15374 * gimple-iterator.h: Likewise.
15375 * gimple-predict.h: Likewise.
15376 * gimple-range-fold.h: Likewise.
15377 * gimple-ssa.h: Likewise.
15378 * gimple.h: Likewise.
15379 * graphite.h: Likewise.
15380 * hard-reg-set.h: Likewise.
15381 * hash-map.h: Likewise.
15382 * hash-set.h: Likewise.
15383 * hash-table.h: Likewise.
15384 * hwint.h: Likewise.
15385 * input.h: Likewise.
15386 * insn-addr.h: Likewise.
15387 * internal-fn.h: Likewise.
15388 * ipa-fnsummary.h: Likewise.
15389 * ipa-icf-gimple.h: Likewise.
15390 * ipa-inline.h: Likewise.
15391 * ipa-modref.h: Likewise.
15392 * ipa-prop.h: Likewise.
15393 * ira-int.h: Likewise.
15395 * lra-int.h: Likewise.
15397 * lto-streamer.h: Likewise.
15398 * memmodel.h: Likewise.
15399 * omp-general.h: Likewise.
15400 * optabs-query.h: Likewise.
15401 * optabs.h: Likewise.
15402 * plugin.h: Likewise.
15403 * pretty-print.h: Likewise.
15404 * range.h: Likewise.
15405 * read-md.h: Likewise.
15406 * recog.h: Likewise.
15407 * regs.h: Likewise.
15408 * rtl-iter.h: Likewise.
15410 * sbitmap.h: Likewise.
15411 * sched-int.h: Likewise.
15412 * sel-sched-ir.h: Likewise.
15413 * sese.h: Likewise.
15414 * sparseset.h: Likewise.
15415 * ssa-iterators.h: Likewise.
15416 * system.h: Likewise.
15417 * target-globals.h: Likewise.
15418 * target.h: Likewise.
15419 * timevar.h: Likewise.
15420 * tree-chrec.h: Likewise.
15421 * tree-data-ref.h: Likewise.
15422 * tree-iterator.h: Likewise.
15423 * tree-outof-ssa.h: Likewise.
15424 * tree-phinodes.h: Likewise.
15425 * tree-scalar-evolution.h: Likewise.
15426 * tree-sra.h: Likewise.
15427 * tree-ssa-alias.h: Likewise.
15428 * tree-ssa-live.h: Likewise.
15429 * tree-ssa-loop-manip.h: Likewise.
15430 * tree-ssa-loop.h: Likewise.
15431 * tree-ssa-operands.h: Likewise.
15432 * tree-ssa-propagate.h: Likewise.
15433 * tree-ssa-sccvn.h: Likewise.
15434 * tree-ssa.h: Likewise.
15435 * tree-ssanames.h: Likewise.
15436 * tree-streamer.h: Likewise.
15437 * tree-switch-conversion.h: Likewise.
15438 * tree-vectorizer.h: Likewise.
15439 * tree.h: Likewise.
15440 * wide-int.h: Likewise.
15442 2023-02-16 Jakub Jelinek <jakub@redhat.com>
15444 PR tree-optimization/108657
15445 * tree-ssa-dse.cc (initialize_ao_ref_for_dse): If lhs of stmt
15446 exists and is not a SSA_NAME, call ao_ref_init even if the stmt
15447 is a call to internal or builtin function.
15449 2023-02-16 Jonathan Wakely <jwakely@redhat.com>
15451 * doc/invoke.texi (C++ Dialect Options): Suggest adding a
15452 using-declaration to unhide functions.
15454 2023-02-16 Jakub Jelinek <jakub@redhat.com>
15456 PR tree-optimization/108783
15457 * tree-ssa-reassoc.cc (eliminate_redundant_comparison): If lcode
15458 is equal to TREE_CODE (t), op1 to newop1 and op2 to newop2, set
15459 t to curr->op. Otherwise, punt if either newop1 or newop2 are
15460 SSA_NAME_OCCURS_IN_ABNORMAL_PHI SSA_NAMEs.
15462 2023-02-16 Richard Biener <rguenther@suse.de>
15464 PR tree-optimization/108791
15465 * tree-ssa-forwprop.cc (optimize_vector_load): Build
15466 the ADDR_EXPR of a TARGET_MEM_REF using a more meaningful
15469 2023-02-15 Eric Botcazou <ebotcazou@adacore.com>
15472 * config/i386/i386.cc (ix86_compute_frame_layout): Disable the
15473 effects of -fstack-clash-protection for TARGET_STACK_PROBE.
15474 (ix86_expand_prologue): Likewise.
15476 2023-02-15 Jan-Benedict Glaw <jbglaw@lug-owl.de>
15478 * config/bpf/bpf.cc (bpf_option_override): Fix doubled space.
15480 2023-02-15 Uroš Bizjak <ubizjak@gmail.com>
15482 * config/i386/i386.md (*cmpqi_ext<mode>_1): Use
15483 int248_register_operand predicate in zero_extract sub-RTX.
15484 (*cmpqi_ext<mode>_2): Ditto.
15485 (*cmpqi_ext<mode>_3): Ditto.
15486 (*cmpqi_ext<mode>_4): Ditto.
15487 (*extzvqi_mem_rex64): Ditto.
15489 (*insvqi_1_mem_rex64): Ditto.
15490 (@insv<mode>_1): Ditto.
15491 (*insvqi_1): Ditto.
15492 (*insvqi_2): Ditto.
15493 (*insvqi_3): Ditto.
15494 (*extendqi<SWI24:mode>_ext_1): Ditto.
15495 (*addqi_ext<mode>_1): Ditto.
15496 (*addqi_ext<mode>_2): Ditto.
15497 (*subqi_ext<mode>_2): Ditto.
15498 (*testqi_ext<mode>_1): Ditto.
15499 (*testqi_ext<mode>_2): Ditto.
15500 (*andqi_ext<mode>_1): Ditto.
15501 (*andqi_ext<mode>_1_cc): Ditto.
15502 (*andqi_ext<mode>_2): Ditto.
15503 (*<any_or:code>qi_ext<mode>_1): Ditto.
15504 (*<any_or:code>qi_ext<mode>_2): Ditto.
15505 (*xorqi_ext<mode>_1_cc): Ditto.
15506 (*negqi_ext<mode>_2): Ditto.
15507 (*ashlqi_ext<mode>_2): Ditto.
15508 (*<any_shiftrt:insn>qi_ext<mode>_2): Ditto.
15510 2023-02-15 Uroš Bizjak <ubizjak@gmail.com>
15512 * config/i386/predicates.md (int248_register_operand):
15513 Rename from extr_register_operand.
15514 * config/i386/i386.md (*extv<mode>): Update for renamed predicate.
15515 (*extzx<mode>): Ditto.
15516 (*ashl<dwi>3_doubleword_mask): Use int248_register_operand predicate.
15517 (*ashl<mode>3_mask): Ditto.
15518 (*<any_shiftrt:insn><mode>3_mask): Ditto.
15519 (*<any_shiftrt:insn><dwi>3_doubleword_mask): Ditto.
15520 (*<any_rotate:insn><mode>3_mask): Ditto.
15521 (*<btsc><mode>_mask): Ditto.
15522 (*btr<mode>_mask): Ditto.
15523 (*jcc_bt<mode>_mask_1): Ditto.
15525 2023-02-15 Richard Biener <rguenther@suse.de>
15527 PR middle-end/26854
15528 * df-core.cc (df_worklist_propagate_forward): Put later
15529 blocks on worklist and only earlier blocks on pending.
15530 (df_worklist_propagate_backward): Likewise.
15531 (df_worklist_dataflow_doublequeue): Change the iteration
15532 to process new blocks in the same iteration if that
15533 maintains the iteration order.
15535 2023-02-15 Marek Polacek <polacek@redhat.com>
15537 PR middle-end/106080
15538 * gimple-ssa-warn-access.cc (is_auto_decl): Remove. Use auto_var_p
15541 2023-02-15 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15543 * config/riscv/predicates.md: Refine codes.
15544 * config/riscv/riscv-protos.h (RVV_VUNDEF): New macro.
15545 * config/riscv/riscv-v.cc: Refine codes.
15546 * config/riscv/riscv-vector-builtins-bases.cc (enum ternop_type): New
15548 (class imac): New class.
15549 (enum widen_ternop_type): New enum.
15550 (class iwmac): New class.
15552 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
15553 * config/riscv/riscv-vector-builtins-functions.def (vmacc): Ditto.
15561 * config/riscv/riscv-vector-builtins.cc
15562 (function_builder::apply_predication): Adjust for multiply-add support.
15563 (function_expander::add_vundef_operand): Refine codes.
15564 (function_expander::use_ternop_insn): New function.
15565 (function_expander::use_widen_ternop_insn): Ditto.
15566 * config/riscv/riscv-vector-builtins.h: New function.
15567 * config/riscv/vector.md (@pred_mul_<optab><mode>): New pattern.
15568 (pred_mul_<optab><mode>_undef_merge): Ditto.
15569 (*pred_<madd_nmsub><mode>): Ditto.
15570 (*pred_<macc_nmsac><mode>): Ditto.
15571 (*pred_mul_<optab><mode>): Ditto.
15572 (@pred_mul_<optab><mode>_scalar): Ditto.
15573 (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
15574 (*pred_<madd_nmsub><mode>_scalar): Ditto.
15575 (*pred_<macc_nmsac><mode>_scalar): Ditto.
15576 (*pred_mul_<optab><mode>_scalar): Ditto.
15577 (*pred_mul_<optab><mode>_undef_merge_extended_scalar): Ditto.
15578 (*pred_<madd_nmsub><mode>_extended_scalar): Ditto.
15579 (*pred_<macc_nmsac><mode>_extended_scalar): Ditto.
15580 (*pred_mul_<optab><mode>_extended_scalar): Ditto.
15581 (@pred_widen_mul_plus<su><mode>): Ditto.
15582 (@pred_widen_mul_plus<su><mode>_scalar): Ditto.
15583 (@pred_widen_mul_plussu<mode>): Ditto.
15584 (@pred_widen_mul_plussu<mode>_scalar): Ditto.
15585 (@pred_widen_mul_plusus<mode>_scalar): Ditto.
15587 2023-02-15 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15589 * config/riscv/predicates.md (vector_mask_operand): Refine the codes.
15590 (vector_all_trues_mask_operand): New predicate.
15591 (vector_undef_operand): New predicate.
15592 (ltge_operator): New predicate.
15593 (comparison_except_ltge_operator): New predicate.
15594 (comparison_except_eqge_operator): New predicate.
15595 (ge_operator): New predicate.
15596 * config/riscv/riscv-v.cc (has_vi_variant_p): Add compare support.
15597 * config/riscv/riscv-vector-builtins-bases.cc (class icmp): New class.
15599 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
15600 * config/riscv/riscv-vector-builtins-functions.def (vmseq): Ditto.
15610 * config/riscv/riscv-vector-builtins-shapes.cc
15611 (struct return_mask_def): Adjust for compare support.
15612 * config/riscv/riscv-vector-builtins.cc
15613 (function_expander::use_compare_insn): New function.
15614 * config/riscv/riscv-vector-builtins.h
15615 (function_expander::add_integer_operand): Ditto.
15616 * config/riscv/riscv.cc (riscv_print_operand): Add compare support.
15617 * config/riscv/riscv.md: Add vector min/max attributes.
15618 * config/riscv/vector-iterators.md (xnor): New iterator.
15619 * config/riscv/vector.md (@pred_cmp<mode>): New pattern.
15620 (*pred_cmp<mode>): Ditto.
15621 (*pred_cmp<mode>_narrow): Ditto.
15622 (@pred_ltge<mode>): Ditto.
15623 (*pred_ltge<mode>): Ditto.
15624 (*pred_ltge<mode>_narrow): Ditto.
15625 (@pred_cmp<mode>_scalar): Ditto.
15626 (*pred_cmp<mode>_scalar): Ditto.
15627 (*pred_cmp<mode>_scalar_narrow): Ditto.
15628 (@pred_eqne<mode>_scalar): Ditto.
15629 (*pred_eqne<mode>_scalar): Ditto.
15630 (*pred_eqne<mode>_scalar_narrow): Ditto.
15631 (*pred_cmp<mode>_extended_scalar): Ditto.
15632 (*pred_cmp<mode>_extended_scalar_narrow): Ditto.
15633 (*pred_eqne<mode>_extended_scalar): Ditto.
15634 (*pred_eqne<mode>_extended_scalar_narrow): Ditto.
15635 (@pred_ge<mode>_scalar): Ditto.
15636 (@pred_<optab><mode>): Ditto.
15637 (@pred_n<optab><mode>): Ditto.
15638 (@pred_<optab>n<mode>): Ditto.
15639 (@pred_not<mode>): Ditto.
15641 2023-02-15 Martin Jambor <mjambor@suse.cz>
15644 * ipa-sra.cc (push_param_adjustments_for_index): Do not omit
15645 creation of non-scalar replacements even if IPA-CP knows their
15648 2023-02-15 Jakub Jelinek <jakub@redhat.com>
15652 * config/rs6000/rs6000.md (<u>maddditi4): Change into umaddditi4 only
15653 expander, change operand 3 to be TImode, emit maddlddi4 and
15654 umadddi4_highpart{,_le} with its low half and finally add the high
15655 half to the result.
15657 2023-02-15 Martin Liska <mliska@suse.cz>
15659 * doc/invoke.texi: Document --param=asan-kernel-mem-intrinsic-prefix.
15661 2023-02-15 Richard Biener <rguenther@suse.de>
15663 * sanopt.cc (sanitize_asan_mark_unpoison): Use bitmap
15664 for with_poison and alias worklist to it.
15665 (sanitize_asan_mark_poison): Likewise.
15667 2023-02-15 Richard Biener <rguenther@suse.de>
15670 * config/i386/i386-features.cc (scalar_chain::add_to_queue):
15671 Combine bitmap test and set.
15672 (scalar_chain::add_insn): Likewise.
15673 (scalar_chain::analyze_register_chain): Remove redundant
15674 attempt to add to queue and instead strengthen assert.
15675 Sink common attempts to mark the def dual-mode.
15676 (scalar_chain::add_to_queue): Remove redundant insn bitmap
15679 2023-02-15 Richard Biener <rguenther@suse.de>
15682 * config/i386/i386-features.cc (convert_scalars_to_vector):
15683 Switch candidates bitmaps to tree view before building the chains.
15685 2023-02-15 Hans-Peter Nilsson <hp@axis.com>
15687 * reload1.cc (gen_reload): Correct rtx parameter for fatal_insn
15688 "failure trying to reload" call.
15690 2023-02-15 Hans-Peter Nilsson <hp@axis.com>
15692 * gdbinit.in (phrs): New command.
15693 * sel-sched-dump.cc (debug_hard_reg_set): Remove debug-function.
15694 * ira-color.cc (debug_hard_reg_set): New, calling print_hard_reg_set.
15696 2023-02-14 David Faust <david.faust@oracle.com>
15699 * config/bpf/constraints.md (q): New memory constraint.
15700 * config/bpf/bpf.md (zero_extendhidi2): Use it here.
15701 (zero_extendqidi2): Likewise.
15702 (zero_extendsidi2): Likewise.
15703 (*mov<MM:mode>): Likewise.
15705 2023-02-14 Andrew Pinski <apinski@marvell.com>
15707 PR tree-optimization/108355
15708 PR tree-optimization/96921
15709 * match.pd: Add pattern for "1 - bool_val".
15711 2023-02-14 Richard Biener <rguenther@suse.de>
15713 * tree-ssa-sccvn.cc (vn_phi_compute_hash): Key skipping
15714 basic block index hashing on the availability of ->cclhs.
15715 (vn_phi_eq): Avoid re-doing sanity checks for CSE but
15716 rely on ->cclhs availability.
15717 (vn_phi_lookup): Set ->cclhs only when we are eventually
15718 going to CSE the PHI.
15719 (vn_phi_insert): Likewise.
15721 2023-02-14 Eric Botcazou <ebotcazou@adacore.com>
15723 * gimplify.cc (gimplify_save_expr): Add missing guard.
15725 2023-02-14 Richard Biener <rguenther@suse.de>
15727 PR tree-optimization/108782
15728 * tree-vect-loop.cc (vect_phi_first_order_recurrence_p):
15729 Make sure we're not vectorizing an inner loop.
15731 2023-02-14 Jakub Jelinek <jakub@redhat.com>
15733 PR sanitizer/108777
15734 * params.opt (-param=asan-kernel-mem-intrinsic-prefix=): New param.
15735 * asan.h (asan_memfn_rtl): Declare.
15736 * asan.cc (asan_memfn_rtls): New variable.
15737 (asan_memfn_rtl): New function.
15738 * builtins.cc (expand_builtin): If
15739 param_asan_kernel_mem_intrinsic_prefix and function is
15740 kernel-{,hw}address sanitized, emit calls to
15741 __{,hw}asan_{memcpy,memmove,memset} rather than
15742 {memcpy,memmove,memset}. Use sanitize_flags_p (SANITIZE_ADDRESS)
15743 instead of flag_sanitize & SANITIZE_ADDRESS to check if
15744 asan_intercepted_p functions shouldn't be expanded inline.
15746 2023-02-14 Richard Sandiford <richard.sandiford@arm.com>
15748 PR tree-optimization/96373
15749 * tree-vect-stmts.cc (vectorizable_operation): Predicate trapping
15750 operations on the loop mask. Reject partial vectors if this isn't
15753 2023-02-13 Richard Sandiford <richard.sandiford@arm.com>
15755 PR rtl-optimization/108681
15756 * lra-spills.cc (lra_final_code_change): Extend subreg replacement
15757 code to handle bare uses and clobbers.
15759 2023-02-13 Vladimir N. Makarov <vmakarov@redhat.com>
15761 * ira.cc (ira_update_equiv_info_by_shuffle_insn): Clear equiv
15762 caller_save_p flag when clearing defined_p flag.
15763 (setup_reg_equiv): Ditto.
15764 * lra-constraints.cc (lra_constraints): Ditto.
15766 2023-02-13 Uroš Bizjak <ubizjak@gmail.com>
15769 * config/i386/predicates.md (extr_register_operand):
15770 New special predicate.
15771 * config/i386/i386.md (*extv<mode>): Use extr_register_operand
15772 as operand 1 predicate.
15773 (*exzv<mode>): Ditto.
15774 (*extendqi<SWI24:mode>_ext_1): New insn pattern.
15776 2023-02-13 Richard Biener <rguenther@suse.de>
15778 PR tree-optimization/28614
15779 * tree-ssa-sccvn.cc (can_track_predicate_on_edge): Avoid
15780 walking all edges in most cases.
15781 (vn_nary_op_insert_pieces_predicated): Avoid repeated
15782 calls to can_track_predicate_on_edge unless checking is
15784 (process_bb): Instead call it once here for each edge
15785 we register possibly multiple predicates on.
15787 2023-02-13 Richard Biener <rguenther@suse.de>
15789 PR tree-optimization/108691
15790 * tree-cfg.cc (notice_special_calls): When the CFG is built
15791 honor gimple_call_ctrl_altering_p.
15792 * cfgexpand.cc (expand_call_stmt): Clear cfun->calls_setjmp
15793 temporarily if the call is not control-altering.
15794 * calls.cc (emit_call_1): Do not add REG_SETJMP if
15795 cfun->calls_setjmp is not set. Do not alter cfun->calls_setjmp.
15797 2023-02-13 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
15800 * config/s390/s390.cc (s390_bb_fallthru_entry_likely): Remove.
15801 (struct s390_sched_state): Initialise to zero.
15802 (s390_sched_variable_issue): For better debuggability also emit
15804 (s390_sched_init): Unconditionally reset scheduler state.
15806 2023-02-13 Richard Sandiford <richard.sandiford@arm.com>
15808 * ifcvt.h (noce_if_info::cond_inverted): New field.
15809 * ifcvt.cc (cond_move_convert_if_block): Swap the then and else
15810 values when cond_inverted is true.
15811 (noce_find_if_block): Allow the condition to be inverted when
15812 handling conditional moves.
15814 2023-02-13 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
15816 * config/s390/predicates.md (execute_operation): Use
15817 constrain_operands instead of extract_constrain_insn in order to
15818 determine wheter there exists a valid alternative.
15820 2023-02-13 Claudiu Zissulescu <claziss@gmail.com>
15822 * common/config/arc/arc-common.cc (arc_option_optimization_table):
15823 Remove millicode from list.
15825 2023-02-13 Martin Liska <mliska@suse.cz>
15827 * doc/invoke.texi: Document ira-simple-lra-insn-threshold.
15829 2023-02-13 Richard Biener <rguenther@suse.de>
15831 PR tree-optimization/106722
15832 * tree-ssa-dce.cc (mark_last_stmt_necessary): Return
15833 whether we marked a stmt.
15834 (mark_control_dependent_edges_necessary): When
15835 mark_last_stmt_necessary didn't mark any stmt make sure
15836 to mark its control dependent edges.
15837 (propagate_necessity): Likewise.
15839 2023-02-13 Kito Cheng <kito.cheng@sifive.com>
15841 * config/riscv/riscv.h (RISCV_DWARF_VLENB): New.
15842 (DWARF_FRAME_REGISTERS): New.
15843 (DWARF_REG_TO_UNWIND_COLUMN): New.
15845 2023-02-12 Gerald Pfeifer <gerald@pfeifer.com>
15847 * doc/sourcebuild.texi: Remove (broken) direct reference to
15848 "The GNU configure and build system".
15850 2023-02-12 Jin Ma <jinma@linux.alibaba.com>
15852 * config/riscv/riscv.cc (riscv_adjust_libcall_cfi_prologue): Change
15853 gen_add3_insn to gen_rtx_SET.
15854 (riscv_adjust_libcall_cfi_epilogue): Likewise.
15856 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15858 * config/riscv/riscv-vector-builtins-bases.cc (class sat_op): New class.
15859 (class vnclip): Ditto.
15861 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
15862 * config/riscv/riscv-vector-builtins-functions.def (vaadd): Ditto.
15871 * config/riscv/vector-iterators.md (su): Add instruction.
15874 * config/riscv/vector.md (@pred_<sat_op><mode>): New pattern.
15875 (@pred_<sat_op><mode>_scalar): Ditto.
15876 (*pred_<sat_op><mode>_scalar): Ditto.
15877 (*pred_<sat_op><mode>_extended_scalar): Ditto.
15878 (@pred_narrow_clip<v_su><mode>): Ditto.
15879 (@pred_narrow_clip<v_su><mode>_scalar): Ditto.
15881 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15883 * config/riscv/constraints.md (Wbr): Remove unused constraint.
15884 * config/riscv/predicates.md: Fix move operand predicate.
15885 * config/riscv/riscv-vector-builtins-bases.cc (class vnshift): New class.
15886 (class vncvt_x): Ditto.
15887 (class vmerge): Ditto.
15888 (class vmv_v): Ditto.
15890 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
15891 * config/riscv/riscv-vector-builtins-functions.def (vsra): Ditto.
15898 * config/riscv/riscv-vector-builtins-shapes.cc (struct narrow_alu_def): Ditto.
15899 (struct move_def): Ditto.
15901 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
15902 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WEXTI_OPS): New variable.
15903 (DEF_RVV_WEXTU_OPS): Ditto
15904 * config/riscv/riscv-vector-builtins.def (x_x_w): Fix type for suffix.
15909 * config/riscv/riscv.cc (riscv_print_operand): Refine ASM printting rule.
15910 * config/riscv/vector-iterators.md (nmsac):New iterator.
15911 (nmsub): New iterator.
15912 * config/riscv/vector.md (@pred_merge<mode>): New pattern.
15913 (@pred_merge<mode>_scalar): New pattern.
15914 (*pred_merge<mode>_scalar): New pattern.
15915 (*pred_merge<mode>_extended_scalar): New pattern.
15916 (@pred_narrow_<optab><mode>): New pattern.
15917 (@pred_narrow_<optab><mode>_scalar): New pattern.
15918 (@pred_trunc<mode>): New pattern.
15920 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15922 * config/riscv/riscv-vector-builtins-bases.cc (class vmadc): New class.
15923 (class vmsbc): Ditto.
15924 (BASE): Define new class.
15925 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
15926 * config/riscv/riscv-vector-builtins-functions.def (vmadc): New define.
15928 * config/riscv/riscv-vector-builtins-shapes.cc (struct return_mask_def):
15931 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
15932 * config/riscv/riscv-vector-builtins.cc
15933 (function_expander::use_exact_insn): Adjust for new support
15934 * config/riscv/riscv-vector-builtins.h
15935 (function_base::has_merge_operand_p): New function.
15936 * config/riscv/vector-iterators.md: New iterator.
15937 * config/riscv/vector.md (@pred_madc<mode>): New pattern.
15938 (@pred_msbc<mode>): Ditto.
15939 (@pred_madc<mode>_scalar): Ditto.
15940 (@pred_msbc<mode>_scalar): Ditto.
15941 (*pred_madc<mode>_scalar): Ditto.
15942 (*pred_madc<mode>_extended_scalar): Ditto.
15943 (*pred_msbc<mode>_scalar): Ditto.
15944 (*pred_msbc<mode>_extended_scalar): Ditto.
15945 (@pred_madc<mode>_overflow): Ditto.
15946 (@pred_msbc<mode>_overflow): Ditto.
15947 (@pred_madc<mode>_overflow_scalar): Ditto.
15948 (@pred_msbc<mode>_overflow_scalar): Ditto.
15949 (*pred_madc<mode>_overflow_scalar): Ditto.
15950 (*pred_madc<mode>_overflow_extended_scalar): Ditto.
15951 (*pred_msbc<mode>_overflow_scalar): Ditto.
15952 (*pred_msbc<mode>_overflow_extended_scalar): Ditto.
15954 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15956 * config/riscv/riscv-protos.h (simm5_p): Add vadc/vsbc support.
15957 * config/riscv/riscv-v.cc (simm32_p): Ditto.
15958 * config/riscv/riscv-vector-builtins-bases.cc (class vadc): New class.
15959 (class vsbc): Ditto.
15961 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
15962 * config/riscv/riscv-vector-builtins-functions.def (vadc): Ditto.
15964 * config/riscv/riscv-vector-builtins-shapes.cc
15965 (struct no_mask_policy_def): Ditto.
15967 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
15968 * config/riscv/riscv-vector-builtins.cc
15969 (rvv_arg_type_info::get_base_vector_type): Add vadc/vsbc support.
15970 (rvv_arg_type_info::get_tree_type): Ditto.
15971 (function_expander::use_exact_insn): Ditto.
15972 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
15973 (function_base::use_mask_predication_p): New function.
15974 * config/riscv/vector-iterators.md: New iterator.
15975 * config/riscv/vector.md (@pred_adc<mode>): New pattern.
15976 (@pred_sbc<mode>): Ditto.
15977 (@pred_adc<mode>_scalar): Ditto.
15978 (@pred_sbc<mode>_scalar): Ditto.
15979 (*pred_adc<mode>_scalar): Ditto.
15980 (*pred_adc<mode>_extended_scalar): Ditto.
15981 (*pred_sbc<mode>_scalar): Ditto.
15982 (*pred_sbc<mode>_extended_scalar): Ditto.
15984 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15986 * config/riscv/vector.md: use "zero" reg.
15988 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15990 * config/riscv/riscv-vector-builtins-bases.cc (class widen_binop): New
15992 (class vwmulsu): Ditto.
15993 (class vwcvt): Ditto.
15994 (BASE): Add integer widening support.
15995 * config/riscv/riscv-vector-builtins-bases.h: Ditto
15996 * config/riscv/riscv-vector-builtins-functions.def (vwadd): New class.
15997 (vwsub): New class.
15998 (vwmul): New class.
15999 (vwmulu): New class.
16000 (vwmulsu): New class.
16001 (vwaddu): New class.
16002 (vwsubu): New class.
16003 (vwcvt_x): New class.
16004 (vwcvtu_x): New class.
16005 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): New
16007 (struct widen_alu_def): New class.
16008 (SHAPE): New class.
16009 * config/riscv/riscv-vector-builtins-shapes.h: New class.
16010 * config/riscv/riscv-vector-builtins.cc
16011 (rvv_arg_type_info::get_base_vector_type): Add integer widening support.
16012 (rvv_arg_type_info::get_tree_type): Ditto.
16013 * config/riscv/riscv-vector-builtins.def (x_x_v): Change into "x_v"
16015 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Add integer
16017 * config/riscv/riscv-vsetvl.cc (change_insn): Fix reg_equal use bug.
16018 * config/riscv/riscv.h (X0_REGNUM): New constant.
16019 * config/riscv/vector-iterators.md: New iterators.
16020 * config/riscv/vector.md
16021 (@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>): New
16023 (@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>_scalar):
16025 (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>): Ditto.
16026 (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>_scalar):
16028 (@pred_widen_mulsu<mode>): Ditto.
16029 (@pred_widen_mulsu<mode>_scalar): Ditto.
16030 (@pred_<optab><mode>): Ditto.
16032 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16033 kito-cheng <kito.cheng@sifive.com>
16035 * common/config/riscv/riscv-common.cc: Add flag for 'V' extension.
16036 * config/riscv/riscv-vector-builtins-bases.cc (class vmulh): New class.
16038 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
16039 * config/riscv/riscv-vector-builtins-functions.def (vmulh): Add vmulh
16043 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_FULL_V_I_OPS):
16045 (DEF_RVV_FULL_V_U_OPS): Ditto.
16046 (vint8mf8_t): Ditto.
16047 (vint8mf4_t): Ditto.
16048 (vint8mf2_t): Ditto.
16049 (vint8m1_t): Ditto.
16050 (vint8m2_t): Ditto.
16051 (vint8m4_t): Ditto.
16052 (vint8m8_t): Ditto.
16053 (vint16mf4_t): Ditto.
16054 (vint16mf2_t): Ditto.
16055 (vint16m1_t): Ditto.
16056 (vint16m2_t): Ditto.
16057 (vint16m4_t): Ditto.
16058 (vint16m8_t): Ditto.
16059 (vint32mf2_t): Ditto.
16060 (vint32m1_t): Ditto.
16061 (vint32m2_t): Ditto.
16062 (vint32m4_t): Ditto.
16063 (vint32m8_t): Ditto.
16064 (vint64m1_t): Ditto.
16065 (vint64m2_t): Ditto.
16066 (vint64m4_t): Ditto.
16067 (vint64m8_t): Ditto.
16068 (vuint8mf8_t): Ditto.
16069 (vuint8mf4_t): Ditto.
16070 (vuint8mf2_t): Ditto.
16071 (vuint8m1_t): Ditto.
16072 (vuint8m2_t): Ditto.
16073 (vuint8m4_t): Ditto.
16074 (vuint8m8_t): Ditto.
16075 (vuint16mf4_t): Ditto.
16076 (vuint16mf2_t): Ditto.
16077 (vuint16m1_t): Ditto.
16078 (vuint16m2_t): Ditto.
16079 (vuint16m4_t): Ditto.
16080 (vuint16m8_t): Ditto.
16081 (vuint32mf2_t): Ditto.
16082 (vuint32m1_t): Ditto.
16083 (vuint32m2_t): Ditto.
16084 (vuint32m4_t): Ditto.
16085 (vuint32m8_t): Ditto.
16086 (vuint64m1_t): Ditto.
16087 (vuint64m2_t): Ditto.
16088 (vuint64m4_t): Ditto.
16089 (vuint64m8_t): Ditto.
16090 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_FULL_V_I_OPS): Ditto.
16091 (DEF_RVV_FULL_V_U_OPS): Ditto.
16092 (check_required_extensions): Add vmulh support.
16093 (rvv_arg_type_info::get_tree_type): Ditto.
16094 * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_FULL_V): Ditto.
16095 (enum rvv_base_type): Ditto.
16096 * config/riscv/riscv.opt: Add 'V' extension flag.
16097 * config/riscv/vector-iterators.md (su): New iterator.
16098 * config/riscv/vector.md (@pred_mulh<v_su><mode>): New pattern.
16099 (@pred_mulh<v_su><mode>_scalar): Ditto.
16100 (*pred_mulh<v_su><mode>_scalar): Ditto.
16101 (*pred_mulh<v_su><mode>_extended_scalar): Ditto.
16103 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16105 * config/riscv/iterators.md: Add sign_extend/zero_extend.
16106 * config/riscv/riscv-vector-builtins-bases.cc (class ext): New class.
16108 * config/riscv/riscv-vector-builtins-bases.h: Add vsext/vzext support.
16109 * config/riscv/riscv-vector-builtins-functions.def (vsext): New macro
16112 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Adjust
16113 for vsext/vzext support.
16114 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WEXTI_OPS): New
16116 (DEF_RVV_QEXTI_OPS): Ditto.
16117 (DEF_RVV_OEXTI_OPS): Ditto.
16118 (DEF_RVV_WEXTU_OPS): Ditto.
16119 (DEF_RVV_QEXTU_OPS): Ditto.
16120 (DEF_RVV_OEXTU_OPS): Ditto.
16121 (vint16mf4_t): Ditto.
16122 (vint16mf2_t): Ditto.
16123 (vint16m1_t): Ditto.
16124 (vint16m2_t): Ditto.
16125 (vint16m4_t): Ditto.
16126 (vint16m8_t): Ditto.
16127 (vint32mf2_t): Ditto.
16128 (vint32m1_t): Ditto.
16129 (vint32m2_t): Ditto.
16130 (vint32m4_t): Ditto.
16131 (vint32m8_t): Ditto.
16132 (vint64m1_t): Ditto.
16133 (vint64m2_t): Ditto.
16134 (vint64m4_t): Ditto.
16135 (vint64m8_t): Ditto.
16136 (vuint16mf4_t): Ditto.
16137 (vuint16mf2_t): Ditto.
16138 (vuint16m1_t): Ditto.
16139 (vuint16m2_t): Ditto.
16140 (vuint16m4_t): Ditto.
16141 (vuint16m8_t): Ditto.
16142 (vuint32mf2_t): Ditto.
16143 (vuint32m1_t): Ditto.
16144 (vuint32m2_t): Ditto.
16145 (vuint32m4_t): Ditto.
16146 (vuint32m8_t): Ditto.
16147 (vuint64m1_t): Ditto.
16148 (vuint64m2_t): Ditto.
16149 (vuint64m4_t): Ditto.
16150 (vuint64m8_t): Ditto.
16151 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WEXTI_OPS): Ditto.
16152 (DEF_RVV_QEXTI_OPS): Ditto.
16153 (DEF_RVV_OEXTI_OPS): Ditto.
16154 (DEF_RVV_WEXTU_OPS): Ditto.
16155 (DEF_RVV_QEXTU_OPS): Ditto.
16156 (DEF_RVV_OEXTU_OPS): Ditto.
16157 (rvv_arg_type_info::get_base_vector_type): Add sign_exted/zero_extend
16159 (rvv_arg_type_info::get_tree_type): Ditto.
16160 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
16161 * config/riscv/vector-iterators.md (z): New attribute.
16162 * config/riscv/vector.md (@pred_<optab><mode>_vf2): New pattern.
16163 (@pred_<optab><mode>_vf4): Ditto.
16164 (@pred_<optab><mode>_vf8): Ditto.
16166 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16168 * config/riscv/iterators.md: Add saturating Addition && Subtraction.
16169 * config/riscv/riscv-v.cc (has_vi_variant_p): Ditto.
16170 * config/riscv/riscv-vector-builtins-bases.cc (BASE): Ditto.
16171 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
16172 * config/riscv/riscv-vector-builtins-functions.def (vsadd): New def.
16176 * config/riscv/vector-iterators.md (sll.vi): Adjust for Saturating
16181 * config/riscv/vector.md (@pred_<optab><mode>): New pattern.
16182 (@pred_<optab><mode>_scalar): New pattern.
16183 (*pred_<optab><mode>_scalar): New pattern.
16184 (*pred_<optab><mode>_extended_scalar): New pattern.
16186 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16188 * config/riscv/iterators.md: Add neg and not.
16189 * config/riscv/riscv-vector-builtins-bases.cc (class unop): New class.
16191 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
16192 * config/riscv/riscv-vector-builtins-functions.def (vadd): Rename binop
16213 * config/riscv/riscv-vector-builtins-shapes.cc (struct binop_def): Ditto.
16214 (struct alu_def): Ditto.
16216 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
16217 * config/riscv/riscv-vector-builtins.cc: Support unary C/C/++.
16218 * config/riscv/vector-iterators.md: New iterator.
16219 * config/riscv/vector.md (@pred_<optab><mode>): New pattern
16221 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16223 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::compute_probabilities): Skip exit block.
16225 2023-02-11 Jakub Jelinek <jakub@redhat.com>
16228 * ipa-cp.cc (ipa_agg_value_from_jfunc): Return NULL_TREE also if
16229 item->offset bit position is too large to be representable as
16230 unsigned int byte position.
16232 2023-02-11 Gerald Pfeifer <gerald@pfeifer.com>
16234 * doc/extend.texi (Other Builtins): Adjust link to WG14 N965.
16236 2023-02-10 Vladimir N. Makarov <vmakarov@redhat.com>
16238 * ira.cc (update_equiv_regs): Set up ira_reg_equiv for
16239 valid_combine only when ira_use_lra_p is true.
16241 2023-02-10 Vladimir N. Makarov <vmakarov@redhat.com>
16243 * params.opt (ira-simple-lra-insn-threshold): Add new param.
16244 * ira.cc (ira): Use the param to switch on simple LRA.
16246 2023-02-10 Andrew MacLeod <amacleod@redhat.com>
16248 PR tree-optimization/108687
16249 * gimple-range-cache.cc (ranger_cache::range_on_edge): Revert
16250 back to RFD_NONE mode for calculations.
16251 (ranger_cache::propagate_cache): Call the internal edge range API
16252 with RFD_READ_ONLY instead of changing the external routine.
16254 2023-02-10 Andrew MacLeod <amacleod@redhat.com>
16256 PR tree-optimization/108520
16257 * gimple-range-infer.cc (check_assume_func): Invoke
16258 gimple_range_global directly instead using global_range_query.
16259 * value-query.cc (get_range_global): Add function context and
16260 avoid calling nonnull_arg_p if not cfun.
16261 (gimple_range_global): Add function context pointer.
16262 * value-query.h (imple_range_global): Add function context.
16264 2023-02-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16266 * config/riscv/constraints.md (Wdm): Adjust constraint.
16267 (Wbr): New constraint.
16268 * config/riscv/predicates.md (reg_or_int_operand): New predicate.
16269 * config/riscv/riscv-protos.h (emit_pred_op): Remove function.
16270 (emit_vlmax_op): New function.
16271 (emit_nonvlmax_op): Ditto.
16273 (neg_simm5_p): Ditto.
16274 (has_vi_variant_p): Ditto.
16275 * config/riscv/riscv-v.cc (emit_pred_op): Adjust function.
16276 (emit_vlmax_op): New function.
16277 (emit_nonvlmax_op): Ditto.
16278 (expand_const_vector): Adjust function.
16279 (legitimize_move): Ditto.
16280 (simm32_p): New function.
16282 (neg_simm5_p): Ditto.
16283 (has_vi_variant_p): Ditto.
16284 * config/riscv/riscv-vector-builtins-bases.cc (class vrsub): New class.
16286 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
16287 * config/riscv/riscv-vector-builtins-functions.def (vmin): Remove
16290 (vminu): Remove signed cases.
16292 (vdiv): Remove unsigned cases.
16294 (vdivu): Remove signed cases.
16298 (vrsub): New class.
16303 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_U_OPS): New macro.
16304 * config/riscv/riscv.h: change VL/VTYPE as fixed reg.
16305 * config/riscv/vector-iterators.md: New iterators.
16306 * config/riscv/vector.md (@pred_broadcast<mode>): Adjust pattern for vx
16308 (@pred_<optab><mode>_scalar): New pattern.
16309 (@pred_sub<mode>_reverse_scalar): Ditto.
16310 (*pred_<optab><mode>_scalar): Ditto.
16311 (*pred_<optab><mode>_extended_scalar): Ditto.
16312 (*pred_sub<mode>_reverse_scalar): Ditto.
16313 (*pred_sub<mode>_extended_reverse_scalar): Ditto.
16315 2023-02-10 Richard Biener <rguenther@suse.de>
16317 PR tree-optimization/108724
16318 * tree-vect-stmts.cc (vectorizable_operation): Avoid
16319 using word_mode vectors when vector lowering will
16320 decompose them to elementwise operations.
16322 2023-02-10 Jakub Jelinek <jakub@redhat.com>
16325 2023-02-09 Martin Liska <mliska@suse.cz>
16328 * doc/extend.texi: Document that the function
16329 does not work correctly for old VIA processors.
16331 2023-02-10 Andrew Pinski <apinski@marvell.com>
16332 Andrew Macleod <amacleod@redhat.com>
16334 PR tree-optimization/108684
16335 * tree-ssa-dce.cc (simple_dce_from_worklist):
16336 Check all ssa names and not just non-vdef ones
16337 before accepting the inline-asm.
16338 Call unlink_stmt_vdef on the statement before
16341 2023-02-09 Vladimir N. Makarov <vmakarov@redhat.com>
16343 * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
16344 * ira.cc (validate_equiv_mem): Check memref address variance.
16345 (no_equiv): Clear caller_save_p flag.
16346 (update_equiv_regs): Define caller save equivalence for
16348 (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
16349 * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
16350 call_save_p. Use caller save equivalence depending on the arg.
16351 (split_reg): Adjust the call.
16353 2023-02-09 Jakub Jelinek <jakub@redhat.com>
16356 * common/config/i386/cpuinfo.h (get_zhaoxin_cpu): Formatting fixes.
16357 (cpu_indicator_init): Call get_available_features for all CPUs with
16358 max_level >= 1, rather than just Intel, AMD or Zhaoxin. Formatting
16361 2023-02-09 Jakub Jelinek <jakub@redhat.com>
16363 PR tree-optimization/108688
16364 * match.pd (bit_field_ref [bit_insert]): Simplify BIT_FIELD_REF
16365 of BIT_INSERT_EXPR extracting exactly all inserted bits even
16366 when without mode precision. Formatting fixes.
16368 2023-02-09 Andrew Pinski <apinski@marvell.com>
16370 PR tree-optimization/108688
16371 * match.pd (bit_field_ref [bit_insert]): Avoid generating
16372 BIT_FIELD_REFs of non-mode-precision integral operands.
16374 2023-02-09 Martin Liska <mliska@suse.cz>
16377 * doc/extend.texi: Document that the function
16378 does not work correctly for old VIA processors.
16380 2023-02-09 Andreas Schwab <schwab@suse.de>
16382 * lto-wrapper.cc (merge_and_complain): Handle
16383 -funwind-tables and -fasynchronous-unwind-tables.
16384 (append_compiler_options): Likewise.
16386 2023-02-09 Richard Biener <rguenther@suse.de>
16388 PR tree-optimization/26854
16389 * tree-into-ssa.cc (update_ssa): Turn blocks_to_update to tree
16390 view around insert_updated_phi_nodes_for.
16391 * tree-ssa-alias.cc (maybe_skip_until): Allocate visited bitmap
16393 (walk_aliased_vdefs_1): Likewise.
16395 2023-02-08 Gerald Pfeifer <gerald@pfeifer.com>
16397 * doc/include/gpl_v3.texi: Change fsf.org to www.fsf.org.
16399 2023-02-08 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
16402 * config.gcc (tm_mlib_file): Define new variable.
16404 2023-02-08 Jakub Jelinek <jakub@redhat.com>
16406 PR tree-optimization/108692
16407 * tree-vect-patterns.cc (vect_widened_op_tree): If rhs_code is
16408 widened_code which is different from code, don't call
16409 vect_look_through_possible_promotion but instead just check op is
16410 SSA_NAME with integral type for which vect_is_simple_use is true
16411 and call set_op on this_unprom.
16413 2023-02-08 Andrea Corallo <andrea.corallo@arm.com>
16415 * config/aarch64/aarch64-protos.h (aarch_ra_sign_key): Remove
16417 * config/aarch64/aarch64.cc (aarch_ra_sign_key): Remove
16419 * config/aarch64/aarch64.opt (aarch64_ra_sign_key): Rename
16420 to 'aarch_ra_sign_key'.
16421 * config/arm/aarch-common.cc (aarch_ra_sign_key): Remove
16423 * config/arm/arm-protos.h (aarch_ra_sign_key): Likewise.
16424 * config/arm/arm.cc (enum aarch_key_type): Remove definition.
16425 * config/arm/arm.opt: Define.
16427 2023-02-08 Richard Sandiford <richard.sandiford@arm.com>
16429 PR tree-optimization/108316
16430 * tree-vect-stmts.cc (get_load_store_type): When using
16431 internal functions for gather/scatter, make sure that the type
16432 of the offset argument is consistent with the offset vector type.
16434 2023-02-08 Vladimir N. Makarov <vmakarov@redhat.com>
16437 2023-02-07 Vladimir N. Makarov <vmakarov@redhat.com>
16439 * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
16440 * ira.cc (validate_equiv_mem): Check memref address variance.
16441 (update_equiv_regs): Define caller save equivalence for
16443 (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
16444 * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
16445 call_save_p. Use caller save equivalence depending on the arg.
16446 (split_reg): Adjust the call.
16448 2023-02-08 Jakub Jelinek <jakub@redhat.com>
16450 * tree.def (SAD_EXPR): Remove outdated comment about missing
16453 2023-02-07 Marek Polacek <polacek@redhat.com>
16455 * doc/invoke.texi: Update -fchar8_t documentation.
16457 2023-02-07 Vladimir N. Makarov <vmakarov@redhat.com>
16459 * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
16460 * ira.cc (validate_equiv_mem): Check memref address variance.
16461 (update_equiv_regs): Define caller save equivalence for
16463 (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
16464 * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
16465 call_save_p. Use caller save equivalence depending on the arg.
16466 (split_reg): Adjust the call.
16468 2023-02-07 Richard Biener <rguenther@suse.de>
16470 PR tree-optimization/26854
16471 * gimple-fold.cc (has_use_on_stmt): Look at stmt operands
16472 instead of immediate uses.
16474 2023-02-07 Jakub Jelinek <jakub@redhat.com>
16476 PR tree-optimization/106923
16477 * ipa-split.cc (execute_split_functions): Don't split returns_twice
16480 2023-02-07 Jakub Jelinek <jakub@redhat.com>
16482 PR tree-optimization/106433
16483 * cgraph.cc (set_const_flag_1): Recurse on simd clones too.
16484 (cgraph_node::set_pure_flag): Call set_pure_flag_1 on simd clones too.
16486 2023-02-07 Jan Hubicka <jh@suse.cz>
16488 * config/i386/x86-tune.def (X86_TUNE_AVX256_OPTIMAL): Turn off
16491 2023-02-06 Andrew Stubbs <ams@codesourcery.com>
16493 * config/gcn/mkoffload.cc (gcn_stack_size): New global variable.
16494 (process_asm): Create a constructor for GCN_STACK_SIZE.
16495 (main): Parse the -mstack-size option.
16497 2023-02-06 Alex Coplan <alex.coplan@arm.com>
16500 * config/aarch64/aarch64-simd.md (aarch64_bfmlal<bt>_lane<q>v4sf):
16501 Use correct constraint for operand 3.
16503 2023-02-06 Martin Jambor <mjambor@suse.cz>
16505 * ipa-sra.cc (adjust_parameter_descriptions): Fix a typo in a dump.
16507 2023-02-06 Xi Ruoyao <xry111@xry111.site>
16509 * config/loongarch/loongarch.md (bytepick_w_ashift_amount):
16510 New define_int_iterator.
16511 (bytepick_d_ashift_amount): Likewise.
16512 (bytepick_imm): New define_int_attr.
16513 (bytepick_w_lshiftrt_amount): Likewise.
16514 (bytepick_d_lshiftrt_amount): Likewise.
16515 (bytepick_w_<bytepick_imm>): New define_insn template.
16516 (bytepick_w_<bytepick_imm>_extend): Likewise.
16517 (bytepick_d_<bytepick_imm>): Likewise.
16518 (bytepick_w): Remove unused define_insn.
16519 (bytepick_d): Likewise.
16520 (UNSPEC_BYTEPICK_W): Remove unused unspec.
16521 (UNSPEC_BYTEPICK_D): Likewise.
16522 * config/loongarch/predicates.md (const_0_to_3_operand):
16523 Remove unused define_predicate.
16524 (const_0_to_7_operand): Likewise.
16526 2023-02-06 Jakub Jelinek <jakub@redhat.com>
16528 PR tree-optimization/108655
16529 * ubsan.cc (sanitize_unreachable_fn): For -funreachable-traps
16530 or -fsanitize=unreachable -fsanitize-trap=unreachable return
16531 BUILT_IN_UNREACHABLE_TRAP decl rather than BUILT_IN_TRAP.
16533 2023-02-05 Gerald Pfeifer <gerald@pfeifer.com>
16535 * doc/install.texi (Specific): Remove PW32.
16537 2023-02-03 Jakub Jelinek <jakub@redhat.com>
16539 PR tree-optimization/108647
16540 * range-op.cc (operator_equal::op1_range,
16541 operator_not_equal::op1_range): Don't test op2 bound
16542 equality if op2.undefined_p (), instead set_varying.
16543 (operator_lt::op1_range, operator_le::op1_range,
16544 operator_gt::op1_range, operator_ge::op1_range): Return false if
16545 op2.undefined_p ().
16546 (operator_lt::op2_range, operator_le::op2_range,
16547 operator_gt::op2_range, operator_ge::op2_range): Return false if
16548 op1.undefined_p ().
16550 2023-02-03 Aldy Hernandez <aldyh@redhat.com>
16552 PR tree-optimization/108639
16553 * value-range.cc (irange::legacy_equal_p): Compare nonzero bits as
16555 (irange::operator==): Same.
16557 2023-02-03 Aldy Hernandez <aldyh@redhat.com>
16559 PR tree-optimization/108647
16560 * range-op-float.cc (foperator_lt::op1_range): Handle undefined ranges.
16561 (foperator_lt::op2_range): Same.
16562 (foperator_le::op1_range): Same.
16563 (foperator_le::op2_range): Same.
16564 (foperator_gt::op1_range): Same.
16565 (foperator_gt::op2_range): Same.
16566 (foperator_ge::op1_range): Same.
16567 (foperator_ge::op2_range): Same.
16568 (foperator_unordered_lt::op1_range): Same.
16569 (foperator_unordered_lt::op2_range): Same.
16570 (foperator_unordered_le::op1_range): Same.
16571 (foperator_unordered_le::op2_range): Same.
16572 (foperator_unordered_gt::op1_range): Same.
16573 (foperator_unordered_gt::op2_range): Same.
16574 (foperator_unordered_ge::op1_range): Same.
16575 (foperator_unordered_ge::op2_range): Same.
16577 2023-02-03 Andrew MacLeod <amacleod@redhat.com>
16579 PR tree-optimization/107570
16580 * tree-vrp.cc (remove_and_update_globals): Reset SCEV.
16582 2023-02-03 Gaius Mulley <gaiusmod2@gmail.com>
16584 * doc/gm2.texi (Internals): Remove from menu.
16585 (Using): Comment out ifnohtml conditional.
16586 (Documentation): Use gcc url.
16587 (License): Node simplified.
16588 (Copying): New node. Include gpl_v3_without_node.
16589 (Contributing): Node simplified.
16590 (Internals): Commented out.
16591 (Libraries): Node simplified.
16594 (Functions): Ditto.
16596 2023-02-03 Christophe Lyon <christophe.lyon@arm.com>
16598 * config/arm/mve.md (mve_vabavq_p_<supf><mode>): Add length
16600 (mve_vqshluq_m_n_s<mode>): Likewise.
16601 (mve_vshlq_m_<supf><mode>): Likewise.
16602 (mve_vsriq_m_n_<supf><mode>): Likewise.
16603 (mve_vsubq_m_<supf><mode>): Likewise.
16605 2023-02-03 Martin Jambor <mjambor@suse.cz>
16608 * ipa-sra.cc (push_param_adjustments_for_index): Remove a size check
16609 when comparing to an IPA-CP value.
16610 (dump_list_of_param_indices): New function.
16611 (adjust_parameter_descriptions): Check for mismatching IPA-CP values.
16612 Dump removed candidates using dump_list_of_param_indices.
16613 * ipa-param-manipulation.cc
16614 (ipa_param_body_adjustments::modify_expression): Add assert checking
16615 sizes of a VIEW_CONVERT_EXPR will match.
16616 (ipa_param_body_adjustments::modify_assignment): Likewise.
16618 2023-02-03 Monk Chiang <monk.chiang@sifive.com>
16620 * config/riscv/riscv.h: Remove VL_REGS, VTYPE_REGS class.
16621 * config/riscv/riscv.cc: Ditto.
16623 2023-02-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16625 * config/riscv/vector-iterators.md (sll.vi): Fix constraint bug.
16629 * config/riscv/vector.md: Ditto.
16631 2023-02-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16633 * config/riscv/predicates.md (pmode_reg_or_uimm5_operand): New predicate.
16634 * config/riscv/riscv-vector-builtins-bases.cc: New class.
16635 * config/riscv/riscv-vector-builtins-functions.def (vsll): Ditto.
16638 * config/riscv/riscv-vector-builtins.cc: Ditto.
16639 * config/riscv/vector.md (@pred_<optab><mode>_scalar): New pattern.
16641 2023-02-02 Iain Sandoe <iain@sandoe.co.uk>
16643 * toplev.cc (toplev::main): Only print the version information header
16644 from toplevel main().
16646 2023-02-02 Paul-Antoine Arras <pa@codesourcery.com>
16648 * config/gcn/gcn-valu.md (cond_<expander><mode>): Add
16649 cond_{ashl|ashr|lshr}
16651 2023-02-02 Richard Sandiford <richard.sandiford@arm.com>
16653 PR rtl-optimization/108086
16654 * rtl-ssa/insns.h (insn_info): Make m_num_defs a full unsigned int.
16655 Adjust size-related commentary accordingly.
16657 2023-02-02 Richard Sandiford <richard.sandiford@arm.com>
16659 PR rtl-optimization/108508
16660 * rtl-ssa/accesses.cc (function_info::split_clobber_group): When
16661 the splay tree search gives the first clobber in the second group,
16662 make sure that the root of the first clobber group is updated
16663 correctly. Enter the new clobber group into the definition splay
16666 2023-02-02 Jin Ma <jinma@linux.alibaba.com>
16668 * common/config/riscv/riscv-common.cc (riscv_compute_multilib):
16669 Fix finding best match score.
16671 2023-02-02 Jakub Jelinek <jakub@redhat.com>
16674 PR rtl-optimization/108463
16676 * cselib.cc (cselib_current_insn): Move declaration earlier.
16677 (cselib_hasher::equal): For debug only locs, temporarily override
16678 cselib_current_insn to their l->setting_insn for the
16679 rtx_equal_for_cselib_1 call, so that unsuccessful comparisons don't
16680 promote some debug locs.
16681 * sched-deps.cc (sched_analyze_2) <case MEM>: For MEMs in DEBUG_INSNs
16682 when using cselib call cselib_lookup_from_insn on the address but
16683 don't substitute it.
16685 2023-02-02 Richard Biener <rguenther@suse.de>
16687 PR middle-end/108625
16688 * genmatch.cc (expr::gen_transform): Also disallow resimplification
16689 from pushing to lseq with force_leaf.
16690 (dt_simplify::gen_1): Likewise.
16692 2023-02-02 Andrew Stubbs <ams@codesourcery.com>
16694 * config/gcn/gcn-run.cc: Include libgomp-gcn.h.
16695 (struct kernargs): Replace the common content with kernargs_abi.
16696 (struct heap): Delete.
16697 (main): Read GCN_STACK_SIZE envvar.
16698 Allocate space for the device stacks.
16699 Write the new kernargs fields.
16700 * config/gcn/gcn.cc (gcn_option_override): Remove stack_size_opt.
16701 (default_requested_args): Remove PRIVATE_SEGMENT_BUFFER_ARG and
16702 PRIVATE_SEGMENT_WAVE_OFFSET_ARG.
16703 (gcn_addr_space_convert): Mask the QUEUE_PTR_ARG content.
16704 (gcn_expand_prologue): Move the TARGET_PACKED_WORK_ITEMS to the top.
16705 Set up the stacks from the values in the kernargs, not private.
16706 (gcn_expand_builtin_1): Match the stack configuration in the prologue.
16707 (gcn_hsa_declare_function_name): Turn off the private segment.
16708 (gcn_conditional_register_usage): Ensure QUEUE_PTR is fixed.
16709 * config/gcn/gcn.h (FIXED_REGISTERS): Fix the QUEUE_PTR register.
16710 * config/gcn/gcn.opt (mstack-size): Change the description.
16712 2023-02-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
16715 * config/arm/arm.h (VALID_MVE_PRED_MODE): Add V2QI.
16716 * config/arm/arm.cc (thumb2_legitimate_address_p): Use HImode for
16717 addressing MVE predicate modes.
16718 (mve_bool_vec_to_const): Change to represent correct MVE predicate
16720 (arm_hard_regno_mode_ok): Use VALID_MVE_PRED_MODE instead of checking
16722 (arm_vector_mode_supported_p): Likewise.
16723 (arm_mode_to_pred_mode): Add V2QI.
16724 * config/arm/arm-builtins.cc (UNOP_PRED_UNONE_QUALIFIERS): New
16726 (UNOP_PRED_PRED_QUALIFIERS): New qualifier
16727 (BINOP_PRED_UNONE_PRED_QUALIFIERS): New qualifier.
16728 (v2qi_UP): New macro.
16729 (v4bi_UP): New macro.
16730 (v8bi_UP): New macro.
16731 (v16bi_UP): New macro.
16732 (arm_expand_builtin_args): Make it able to expand the new predicate
16734 * config/arm/arm-modes.def (V2QI): New mode.
16735 * config/arm/arm-simd-builtin-types.def (Pred1x16_t, Pred2x8_t
16736 Pred4x4_t): Remove unused predicate builtin types.
16737 * config/arm/arm_mve.h (__arm_vctp16q, __arm_vctp32q, __arm_vctp64q,
16738 __arm_vctp8q, __arm_vpnot, __arm_vctp8q_m, __arm_vctp64q_m,
16739 __arm_vctp32q_m, __arm_vctp16q_m): Use predicate modes.
16740 * config/arm/arm_mve_builtins.def (vctp16q, vctp32q, vctp64q, vctp8q,
16741 vpnot, vctp8q_m, vctp16q_m, vctp32q_m, vctp64q_m): Likewise.
16742 * config/arm/constraints.md (DB): Check for VALID_MVE_PRED_MODE instead
16743 of MODE_VECTOR_BOOL.
16744 * config/arm/iterators.md (MVE_7, MVE_7_HI): Add V2QI
16745 (MVE_VPRED): Likewise.
16746 (MVE_vpred): Add V2QI and map upper case predicate modes to lower case.
16747 (MVE_vctp): New mode attribute.
16751 * config/arm/mve.md (mve_vctp<mode1>qhi): Rename this...
16752 (mve_vctp<MVE_vctp>q<MVE_vpred>): ... to this. And use new mode
16754 (mve_vpnothi): Rename this...
16755 (mve_vpnotv16bi): ... to this.
16756 (mve_vctp<mode1>q_mhi): Rename this...
16757 (mve_vctp<MVE_vctp>q_m<MVE_vpred>):... to this.
16758 (mve_vldrdq_gather_base_z_<supf>v2di,
16759 mve_vldrdq_gather_offset_z_<supf>v2di,
16760 mve_vldrdq_gather_shifted_offset_z_<supf>v2di,
16761 mve_vstrdq_scatter_base_p_<supf>v2di,
16762 mve_vstrdq_scatter_offset_p_<supf>v2di,
16763 mve_vstrdq_scatter_offset_p_<supf>v2di_insn,
16764 mve_vstrdq_scatter_shifted_offset_p_<supf>v2di,
16765 mve_vstrdq_scatter_shifted_offset_p_<supf>v2di_insn,
16766 mve_vstrdq_scatter_base_wb_p_<supf>v2di,
16767 mve_vldrdq_gather_base_wb_z_<supf>v2di,
16768 mve_vldrdq_gather_base_nowb_z_<supf>v2di,
16769 mve_vldrdq_gather_base_wb_z_<supf>v2di_insn): Use V2QI insead of HI for
16771 * config/arm/unspecs.md (VCTP8Q, VCTP16Q, VCTP32Q, VCTP64Q): Replace
16773 (VCTP): ... with this.
16774 (VCTP8Q_M, VCTP16Q_M, VCTP32Q_M, VCTP64Q_M): Replace these...
16775 (VCTP_M): ... with this.
16776 * config/arm/vfp.md (*thumb2_movhi_vfp, *thumb2_movhi_fp16): Use
16777 VALID_MVE_PRED_MODE instead of checking for MODE_VECTOR_BOOL class.
16779 2023-02-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
16782 * config/arm/arm.cc (arm_hard_regno_mode_ok): Use new MACRO.
16783 (arm_modes_tieable_p): Make MVE predicate modes tieable.
16784 * config/arm/arm.h (VALID_MVE_PRED_MODE): New define.
16785 * simplify-rtx.cc (simplify_context::simplify_subreg): Teach
16786 simplify_subreg to simplify subregs where the outermode is not scalar.
16788 2023-02-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
16791 * config/arm/arm-builtins.cc (arm_simd_builtin_type): Rewrite to use
16792 new qualifiers parameter and use unsigned short type for MVE predicate.
16793 (arm_init_builtin): Call arm_simd_builtin_type with qualifiers
16795 (arm_init_crypto_builtins): Likewise.
16797 2023-02-02 Jakub Jelinek <jakub@redhat.com>
16800 * builtins.def (BUILT_IN_UNREACHABLE_TRAP): New builtin.
16801 * internal-fn.def (TRAP): Remove.
16802 * internal-fn.cc (expand_TRAP): Remove.
16803 * tree.cc (build_common_builtin_nodes): Define
16804 BUILT_IN_UNREACHABLE_TRAP if not yet defined.
16805 (builtin_decl_unreachable): Use BUILT_IN_UNREACHABLE_TRAP
16806 instead of BUILT_IN_TRAP.
16807 * gimple.cc (gimple_build_builtin_unreachable): Remove
16808 emitting internal function for BUILT_IN_TRAP.
16809 * asan.cc (maybe_instrument_call): Handle BUILT_IN_UNREACHABLE_TRAP.
16810 * cgraph.cc (cgraph_edge::verify_corresponds_to_fndecl): Handle
16811 BUILT_IN_UNREACHABLE_TRAP instead of BUILT_IN_TRAP.
16812 * ipa-devirt.cc (possible_polymorphic_call_target_p): Handle
16813 BUILT_IN_UNREACHABLE_TRAP.
16814 * builtins.cc (expand_builtin, is_inexpensive_builtin): Likewise.
16815 * tree-cfg.cc (verify_gimple_call,
16816 pass_warn_function_return::execute): Likewise.
16817 * attribs.cc (decl_attributes): Don't report exclusions on
16818 BUILT_IN_UNREACHABLE_TRAP either.
16820 2023-02-02 liuhongt <hongtao.liu@intel.com>
16822 PR tree-optimization/108601
16823 * tree-vectorizer.h (vect_can_peel_nonlinear_iv_p): Removed.
16824 * tree-vect-loop.cc
16825 (vectorizable_nonlinear_induction): Remove
16826 vect_can_peel_nonlinear_iv_p.
16827 (vect_can_peel_nonlinear_iv_p): Don't peel
16828 nonlinear iv(mult or shift) for epilog when vf is not
16829 constant and moved the defination to ..
16830 * tree-vect-loop-manip.cc (vect_can_peel_nonlinear_iv_p):
16833 2023-02-02 Jakub Jelinek <jakub@redhat.com>
16835 PR middle-end/108435
16836 * tree-nested.cc (convert_nonlocal_omp_clauses)
16837 <case OMP_CLAUSE_LASTPRIVATE>: If info->new_local_var_chain and *seq
16838 is not a GIMPLE_BIND, wrap the sequence into a new GIMPLE_BIND
16839 before calling declare_vars.
16840 (convert_nonlocal_omp_clauses) <case OMP_CLAUSE_LINEAR>: Merge
16841 with the OMP_CLAUSE_LASTPRIVATE handling except for whether
16842 seq is initialized to &OMP_CLAUSE_LASTPRIVATE_GIMPLE_SEQ (clause)
16843 or &OMP_CLAUSE_LINEAR_GIMPLE_SEQ (clause).
16845 2023-02-01 Tamar Christina <tamar.christina@arm.com>
16847 * common/config/aarch64/aarch64-common.cc
16848 (struct aarch64_option_extension): Add native_detect and document struct
16850 (all_extensions): Set new field native_detect.
16851 * config/aarch64/aarch64.cc (struct aarch64_option_extension): Delete
16854 2023-02-01 Martin Liska <mliska@suse.cz>
16856 * ipa-devirt.cc (odr_types_equivalent_p): Respect *warned
16859 2023-02-01 Andrew MacLeod <amacleod@redhat.com>
16861 PR tree-optimization/108356
16862 * gimple-range-cache.cc (ranger_cache::range_on_edge): Always
16863 do a search of the DOM tree for a range.
16865 2023-02-01 Martin Liska <mliska@suse.cz>
16868 * cgraphunit.cc (walk_polymorphic_call_targets): Insert
16869 ony non-null values.
16870 * ipa.cc (walk_polymorphic_call_targets): Likewise.
16872 2023-02-01 Martin Liska <mliska@suse.cz>
16875 * gcc.cc (LINK_COMPRESS_DEBUG_SPEC): Report error only for
16878 2023-02-01 Jakub Jelinek <jakub@redhat.com>
16881 * ree.cc (combine_reaching_defs): Don't return false for paradoxical
16882 subregs in DEBUG_INSNs.
16884 2023-02-01 Richard Sandiford <richard.sandiford@arm.com>
16886 * compare-elim.cc (find_flags_uses_in_insn): Guard use of SET_SRC.
16888 2023-02-01 Andreas Krebbel <krebbel@linux.ibm.com>
16890 * config/s390/s390.cc (s390_restore_gpr_p): New function.
16891 (s390_preserve_gpr_arg_in_range_p): New function.
16892 (s390_preserve_gpr_arg_p): New function.
16893 (s390_preserve_fpr_arg_p): New function.
16894 (s390_register_info_stdarg_fpr): Rename to ...
16895 (s390_register_info_arg_fpr): ... this. Add -mpreserve-args handling.
16896 (s390_register_info_stdarg_gpr): Rename to ...
16897 (s390_register_info_arg_gpr): ... this. Add -mpreserve-args handling.
16898 (s390_register_info): Use the renamed functions above.
16899 (s390_optimize_register_info): Likewise.
16900 (save_fpr): Generate CFI for -mpreserve-args.
16901 (save_gprs): Generate CFI for -mpreserve-args. Drop return value.
16902 (s390_emit_prologue): Adjust to changed calling convention of save_gprs.
16903 (s390_optimize_prologue): Likewise.
16904 * config/s390/s390.opt: New option -mpreserve-args
16906 2023-02-01 Andreas Krebbel <krebbel@linux.ibm.com>
16908 * config/s390/s390.cc (save_gprs): Use gen_frame_mem.
16909 (restore_gprs): Likewise.
16910 (s390_emit_stack_tie): Make the stack_tie to be dependent on the
16911 frame pointer if a frame-pointer is used.
16912 (s390_emit_prologue): Emit stack_tie when frame-pointer is needed.
16913 * config/s390/s390.md (stack_tie): Add a register operand and
16915 (@stack_tie<mode>): ... this.
16917 2023-02-01 Andreas Krebbel <krebbel@linux.ibm.com>
16919 * dwarf2cfi.cc (dwarf2out_frame_debug_cfa_restore): Add
16920 EMIT_CFI parameter.
16921 (dwarf2out_frame_debug): Add case for REG_CFA_NORESTORE.
16922 * reg-notes.def (REG_CFA_NOTE): New reg note definition.
16924 2023-02-01 Richard Biener <rguenther@suse.de>
16926 PR middle-end/108500
16927 * dominance.cc (assign_dfs_numbers): Replace recursive DFS
16928 with tree traversal algorithm.
16930 2023-02-01 Jason Merrill <jason@redhat.com>
16932 * doc/invoke.texi: Document -Wno-changes-meaning.
16934 2023-02-01 David Malcolm <dmalcolm@redhat.com>
16936 * doc/invoke.texi (Static Analyzer Options): Add notes about
16937 limitations of -fanalyzer.
16939 2023-01-31 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16941 * config/riscv/constraints.md (vj): New.
16943 * config/riscv/iterators.md: Add more opcode.
16944 * config/riscv/predicates.md (vector_arith_operand): New.
16945 (vector_neg_arith_operand): New.
16946 (vector_shift_operand): New.
16947 * config/riscv/riscv-vector-builtins-bases.cc (class binop): New.
16948 * config/riscv/riscv-vector-builtins-bases.h: (vadd): New.
16965 * config/riscv/riscv-vector-builtins-functions.def (vadd): New.
16982 * config/riscv/riscv-vector-builtins-shapes.cc (struct binop_def): New.
16983 * config/riscv/riscv-vector-builtins-shapes.h (binop): New.
16984 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_I_OPS): New.
16985 (DEF_RVV_U_OPS): New.
16986 (rvv_arg_type_info::get_base_vector_type): Handle
16987 RVV_BASE_shift_vector.
16988 (rvv_arg_type_info::get_tree_type): Ditto.
16989 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Add
16990 RVV_BASE_shift_vector.
16991 * config/riscv/riscv.cc (riscv_print_operand): Handle 'V'.
16992 * config/riscv/vector-iterators.md: Handle more opcode.
16993 * config/riscv/vector.md (@pred_<optab><mode>): New.
16995 2023-01-31 Philipp Tomsich <philipp.tomsich@vrull.eu>
16998 * config/aarch64/aarch64.cc (aarch_macro_fusion_pair_p): Check
17001 2023-01-31 Richard Sandiford <richard.sandiford@arm.com>
17003 PR tree-optimization/108608
17004 * tree-vect-loop.cc (vect_transform_reduction): Handle single
17005 def-use cycles that involve function calls rather than tree codes.
17007 2023-01-31 Andrew MacLeod <amacleod@redhat.com>
17009 PR tree-optimization/108385
17010 * gimple-range-gori.cc (gori_compute::compute_operand_range):
17011 Allow VARYING computations to continue if there is a relation.
17012 * range-op.cc (pointer_plus_operator::op2_range): New.
17014 2023-01-31 Andrew MacLeod <amacleod@redhat.com>
17016 PR tree-optimization/108359
17017 * range-op.cc (range_operator::wi_fold_in_parts_equiv): New.
17018 (range_operator::fold_range): If op1 is equivalent to op2 then
17019 invoke new fold_in_parts_equiv to operate on sub-components.
17020 * range-op.h (wi_fold_in_parts_equiv): New prototype.
17022 2023-01-31 Andrew MacLeod <amacleod@redhat.com>
17024 * gimple-range-gori.cc (gori_compute::compute_operand_range): Do
17025 not abort calculations if there is a valid relation available.
17026 (gori_compute::refine_using_relation): Pass correct relation trio.
17027 (gori_compute::compute_operand1_range): Create trio and use it.
17028 (gori_compute::compute_operand2_range): Ditto.
17029 * range-op.cc (operator_plus::op1_range): Use correct trio member.
17030 (operator_minus::op1_range): Use correct trio member.
17031 * value-relation.cc (value_relation::create_trio): New.
17032 * value-relation.h (value_relation::create_trio): New prototype.
17034 2023-01-31 Jakub Jelinek <jakub@redhat.com>
17037 * config/i386/i386-expand.cc
17038 (ix86_convert_const_wide_int_to_broadcast): Return nullptr if
17039 CONST_WIDE_INT_NUNITS (op) times HOST_BITS_PER_WIDE_INT isn't
17040 equal to bitsize of mode.
17042 2023-01-31 Jakub Jelinek <jakub@redhat.com>
17044 PR rtl-optimization/108596
17045 * bb-reorder.cc (fix_up_fall_thru_edges): Handle the case where cur_bb
17046 ends with asm goto and has a crossing fallthrough edge to the same bb
17047 that contains at least one of its labels by restoring EDGE_CROSSING
17048 flag even on possible edge from cur_bb to new_bb successor.
17050 2023-01-31 Jakub Jelinek <jakub@redhat.com>
17053 * config/i386/avx512erintrin.h (_mm512_exp2a23_round_pd,
17054 _mm512_exp2a23_round_ps, _mm512_rcp28_round_pd, _mm512_rcp28_round_ps,
17055 _mm512_rsqrt28_round_pd, _mm512_rsqrt28_round_ps): Use
17056 _mm512_undefined_pd () or _mm512_undefined_ps () instead of using
17057 uninitialized automatic variable __W.
17059 2023-01-31 Gerald Pfeifer <gerald@pfeifer.com>
17061 * doc/include/fdl.texi: Change fsf.org to www.fsf.org.
17063 2023-01-30 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17065 * config/riscv/riscv-protos.h (get_vector_mode): New function.
17066 * config/riscv/riscv-v.cc (get_vector_mode): Ditto.
17067 * config/riscv/riscv-vector-builtins-bases.cc (enum lst_type): New enum.
17068 (class loadstore): Adjust for indexed loads/stores support.
17070 * config/riscv/riscv-vector-builtins-bases.h: New function declare.
17071 * config/riscv/riscv-vector-builtins-functions.def (vluxei8): Ditto.
17087 * config/riscv/riscv-vector-builtins-shapes.cc
17088 (struct indexed_loadstore_def): New class.
17090 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
17091 * config/riscv/riscv-vector-builtins.cc (required_extensions_p): Adjust
17092 for indexed loads/stores support.
17093 (check_required_extensions): Ditto.
17094 (rvv_arg_type_info::get_base_vector_type): New function.
17095 (rvv_arg_type_info::get_tree_type): Ditto.
17096 (function_builder::add_unique_function): Adjust for indexed loads/stores
17098 (function_expander::use_exact_insn): New function.
17099 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Adjust for
17100 indexed loads/stores support.
17101 (struct rvv_arg_type_info): Ditto.
17102 (function_expander::index_mode): New function.
17103 (function_base::apply_tail_policy_p): Ditto.
17104 (function_base::apply_mask_policy_p): Ditto.
17105 * config/riscv/vector-iterators.md (unspec): New unspec.
17106 * config/riscv/vector.md (unspec): Ditto.
17107 (@pred_indexed_<order>load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): New
17109 (@pred_indexed_<order>store<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Ditto.
17110 (@pred_indexed_<order>load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
17111 (@pred_indexed_<order>store<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
17112 (@pred_indexed_<order>load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
17113 (@pred_indexed_<order>store<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
17114 (@pred_indexed_<order>load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
17115 (@pred_indexed_<order>store<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
17116 (@pred_indexed_<order>load<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
17117 (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
17118 (@pred_indexed_<order>load<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
17119 (@pred_indexed_<order>store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
17120 (@pred_indexed_<order>load<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
17121 (@pred_indexed_<order>store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
17123 2023-01-30 Flavio Cruz <flaviocruz@gmail.com>
17125 * config.gcc: Recognize x86_64-*-gnu* targets and include
17127 * config/i386/gnu64.h: Define configuration for new target
17128 including ld.so location.
17130 2023-01-30 Philipp Tomsich <philipp.tomsich@vrull.eu>
17132 * config/aarch64/aarch64-cores.def (AARCH64_CORE): Update
17133 ampere1a to include SM4.
17135 2023-01-30 Andrew Pinski <apinski@marvell.com>
17137 PR tree-optimization/108582
17138 * tree-ssa-phiopt.cc (match_simplify_replacement): Add check
17139 for middlebb to have no phi nodes.
17141 2023-01-30 Richard Biener <rguenther@suse.de>
17143 PR tree-optimization/108574
17144 * tree-ssa-sccvn.cc (visit_phi): Instead of swapping
17145 sameval and def, ignore the equivalence if there's the
17146 danger of oscillating between two values.
17148 2023-01-30 Andreas Schwab <schwab@suse.de>
17150 * common/config/riscv/riscv-common.cc
17151 (riscv_option_optimization_table)
17152 [TARGET_DEFAULT_ASYNC_UNWIND_TABLES]: Enable
17153 -fasynchronous-unwind-tables and -funwind-tables.
17154 * config.gcc (riscv*-*-linux*): Define
17155 TARGET_DEFAULT_ASYNC_UNWIND_TABLES.
17157 2023-01-30 YunQiang Su <yunqiang.su@cipunited.com>
17159 * Makefile.in (CROSS_SYSTEM_HEADER_DIR): set according the
17160 value of includedir.
17162 2023-01-30 Richard Biener <rguenther@suse.de>
17165 * cgraph.cc (possibly_call_in_translation_unit_p): Relax
17168 2023-01-30 liuhongt <hongtao.liu@intel.com>
17170 * config/i386/i386.opt: Change AVX512FP16 to AVX512-FP16.
17171 * doc/invoke.texi: Ditto.
17173 2023-01-29 Jan Hubicka <hubicka@ucw.cz>
17175 * ipa-utils.cc: Include calls.h, cfgloop.h and cfganal.h
17176 (stmt_may_terminate_function_p): If assuming return or EH
17177 volatile asm is safe.
17178 (find_always_executed_bbs): Fix handling of terminating BBS and
17179 infinite loops; add debug output.
17180 * tree-ssa-alias.cc (stmt_kills_ref_p): Fix debug output
17182 2023-01-28 Philipp Tomsich <philipp.tomsich@vrull.eu>
17184 * config/aarch64/aarch64.cc (aarch64_uxt_size): fix an
17185 off-by-one in checking the permissible shift-amount.
17187 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
17189 * doc/extend.texi (Named Address Spaces): Update link to the
17192 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
17194 * doc/standards.texi (Standards): Fix markup.
17196 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
17198 * doc/standards.texi (Standards): Update link to Objective-C book.
17200 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
17202 * doc/invoke.texi (Instrumentation Options): Update reference to
17205 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
17207 * doc/standards.texi: Update Go1 link.
17209 2023-01-28 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17211 * config/riscv/predicates.md (pmode_reg_or_0_operand): New predicate.
17212 * config/riscv/riscv-vector-builtins-bases.cc (class loadstore):
17215 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
17216 * config/riscv/riscv-vector-builtins-functions.def (vlse): New class.
17218 * config/riscv/riscv-vector-builtins.cc
17219 (function_expander::use_contiguous_load_insn): Support vlse/vsse.
17220 * config/riscv/vector.md (@pred_strided_load<mode>): New md pattern.
17221 (@pred_strided_store<mode>): Ditto.
17223 2023-01-28 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17225 * config/riscv/vector.md (tail_policy_op_idx): Remove.
17226 (mask_policy_op_idx): Remove.
17227 (avl_type_op_idx): Remove.
17229 2023-01-27 Richard Sandiford <richard.sandiford@arm.com>
17231 PR tree-optimization/96373
17232 * tree.h (sign_mask_for): Declare.
17233 * tree.cc (sign_mask_for): New function.
17234 (signed_or_unsigned_type_for): For vector types, try to use the
17235 related_int_vector_mode.
17236 * genmatch.cc (commutative_op): Handle conditional internal functions.
17237 * match.pd: Fold an IFN_COND_MUL+copysign into an IFN_COND_XOR+and.
17239 2023-01-27 Richard Sandiford <richard.sandiford@arm.com>
17241 * tree-vectorizer.cc (vector_costs::compare_inside_loop_cost):
17242 Use the likely minimum VF when bounding the denominators to
17243 the estimated number of iterations.
17245 2023-01-27 Richard Biener <rguenther@suse.de>
17248 * doc/invoke.texi (-shared): Clarify effect on -ffast-math
17249 and -Ofast FP environment side-effects.
17251 2023-01-27 Richard Biener <rguenther@suse.de>
17254 * config/mips/gnu-user.h (GNU_USER_TARGET_MATHFILE_SPEC):
17255 Don't add crtfastmath.o for -shared.
17257 2023-01-27 Richard Biener <rguenther@suse.de>
17260 * config/ia64/linux.h (ENDFILE_SPEC): Don't add crtfastmath.o
17263 2023-01-27 Richard Biener <rguenther@suse.de>
17266 * config/alpha/linux.h (ENDFILE_SPEC): Don't add
17267 crtfastmath.o for -shared.
17269 2023-01-27 Andrew MacLeod <amacleod@redhat.com>
17271 PR tree-optimization/108306
17272 * range-op.cc (operator_lshift::fold_range): Return [0, 0] not
17273 varying for shifts that are always out of void range.
17274 (operator_rshift::fold_range): Return [0, 0] not
17275 varying for shifts that are always out of void range.
17277 2023-01-27 Andrew MacLeod <amacleod@redhat.com>
17279 PR tree-optimization/108447
17280 * gimple-range-fold.cc (old_using_range::relation_fold_and_or):
17281 Do not attempt to fold HONOR_NAN types.
17283 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17285 * config/riscv/riscv-vector-builtins-shapes.cc (struct loadstore_def):
17286 Remove _m suffix for "vop_m" C++ overloaded API name.
17288 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17290 * config/riscv/riscv-vector-builtins-bases.cc (BASE): Add vlm/vsm support.
17291 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
17292 * config/riscv/riscv-vector-builtins-functions.def (vlm): New define.
17294 * config/riscv/riscv-vector-builtins-shapes.cc (struct loadstore_def): Add vlm/vsm support.
17295 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_B_OPS): Ditto.
17296 (vbool64_t): Ditto.
17297 (vbool32_t): Ditto.
17298 (vbool16_t): Ditto.
17303 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_B_OPS): Ditto.
17304 (rvv_arg_type_info::get_tree_type): Ditto.
17305 (function_expander::use_contiguous_load_insn): Ditto.
17306 * config/riscv/vector.md (@pred_store<mode>): Ditto.
17308 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17310 * config/riscv/riscv-vsetvl.cc (vsetvl_insn_p): Add condition to avoid ICE.
17311 (vsetvl_discard_result_insn_p): New function.
17312 (reg_killed_by_bb_p): rename to find_reg_killed_by.
17313 (find_reg_killed_by): New name.
17314 (get_vl): allow it to be called by more functions.
17315 (has_vsetvl_killed_avl_p): Add condition.
17316 (get_avl): allow it to be called by more functions.
17317 (insn_should_be_added_p): New function.
17318 (get_all_nonphi_defs): Refine function.
17319 (get_all_sets): Ditto.
17320 (get_same_bb_set): New function.
17321 (any_insn_in_bb_p): Ditto.
17322 (any_set_in_bb_p): Ditto.
17323 (get_vl_vtype_info): Add VLMAX forward optimization.
17324 (source_equal_p): Fix issues.
17325 (extract_single_source): Refine.
17326 (avl_info::multiple_source_equal_p): New function.
17327 (avl_info::operator==): Adjust for final version.
17328 (vl_vtype_info::operator==): Ditto.
17329 (vl_vtype_info::same_avl_p): Ditto.
17330 (vector_insn_info::parse_insn): Ditto.
17331 (vector_insn_info::available_p): New function.
17332 (vector_insn_info::merge): Adjust for final version.
17333 (vector_insn_info::dump): Add hard_empty.
17334 (pass_vsetvl::hard_empty_block_p): New function.
17335 (pass_vsetvl::backward_demand_fusion): Adjust for final version.
17336 (pass_vsetvl::forward_demand_fusion): Ditto.
17337 (pass_vsetvl::demand_fusion): Ditto.
17338 (pass_vsetvl::cleanup_illegal_dirty_blocks): New function.
17339 (pass_vsetvl::compute_local_properties): Adjust for final version.
17340 (pass_vsetvl::can_refine_vsetvl_p): Ditto.
17341 (pass_vsetvl::refine_vsetvls): Ditto.
17342 (pass_vsetvl::commit_vsetvls): Ditto.
17343 (pass_vsetvl::propagate_avl): New function.
17344 (pass_vsetvl::lazy_vsetvl): Adjust for new version.
17345 * config/riscv/riscv-vsetvl.h (enum def_type): New enum.
17347 2023-01-27 Jakub Jelinek <jakub@redhat.com>
17350 * doc/extend.texi: Fix up return type of __builtin_va_arg_pack_len
17351 from size_t to int.
17353 2023-01-27 Jakub Jelinek <jakub@redhat.com>
17356 * cgraph.cc (cgraph_edge::verify_corresponds_to_fndecl): Allow
17357 redirection of calls to __builtin_trap in addition to redirection
17358 to __builtin_unreachable.
17360 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17362 * config/riscv/riscv-vsetvl.cc (before_p): Fix bug.
17364 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17366 * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): Refine function args.
17367 (emit_vsetvl_insn): Ditto.
17369 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17371 * config/riscv/vector.md: Fix constraints.
17373 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17375 * config/riscv/vector-iterators.md: Add TARGET_MIN_VLEN > 32 predicates.
17377 2023-01-27 Patrick Palka <ppalka@redhat.com>
17378 Jakub Jelinek <jakub@redhat.com>
17380 * tree-core.h (tree_code_type, tree_code_length): For
17381 C++17 and later, add inline keyword, otherwise don't define
17382 the arrays, but declare extern arrays.
17383 * tree.cc (tree_code_type, tree_code_length): Define these
17384 arrays for C++14 and older.
17386 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17388 * config/riscv/riscv-vsetvl.h: Change it into public.
17390 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17392 * config/riscv/riscv-passes.def (INSERT_PASS_BEFORE): Reorder VSETVL
17395 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17397 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::execute): Always call split_all_insns.
17399 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17401 * config/riscv/vector.md: Fix incorrect attributes.
17403 2023-01-27 Richard Biener <rguenther@suse.de>
17406 * config/loongarch/gnu-user.h (GNU_USER_TARGET_MATHFILE_SPEC):
17407 Don't add crtfastmath.o for -shared.
17409 2023-01-27 Alexandre Oliva <oliva@gnu.org>
17411 * doc/options.texi (option, RejectNegative): Mention that
17412 -g-started options are also implicitly negatable.
17414 2023-01-26 Kito Cheng <kito.cheng@sifive.com>
17416 * config/riscv/riscv-vector-builtins.cc (register_builtin_types):
17417 Use get_typenode_from_name to get fixed-width integer type
17419 * config/riscv/riscv-vector-builtins.def: Update define with
17420 fixed-width integer type nodes.
17422 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17424 * config/riscv/riscv-vsetvl.cc (same_bb_and_before_p): Remove it.
17425 (real_insn_and_same_bb_p): New function.
17426 (same_bb_and_after_or_equal_p): Remove it.
17427 (before_p): New function.
17428 (reg_killed_by_bb_p): Ditto.
17429 (has_vsetvl_killed_avl_p): Ditto.
17430 (get_vl): Move location so that we can call it.
17431 (anticipatable_occurrence_p): Fix issue of AVL=REG support.
17432 (available_occurrence_p): Ditto.
17433 (dominate_probability_p): Remove it.
17434 (can_backward_propagate_p): Remove it.
17435 (get_all_nonphi_defs): New function.
17436 (get_all_predecessors): Ditto.
17437 (any_insn_in_bb_p): Ditto.
17438 (insert_vsetvl): Adjust AVL REG.
17439 (source_equal_p): New function.
17440 (extract_single_source): Ditto.
17441 (avl_info::single_source_equal_p): Ditto.
17442 (avl_info::operator==): Adjust for AVL=REG.
17443 (vl_vtype_info::same_avl_p): Ditto.
17444 (vector_insn_info::set_demand_info): Remove it.
17445 (vector_insn_info::compatible_p): Adjust for AVL=REG.
17446 (vector_insn_info::compatible_avl_p): New function.
17447 (vector_insn_info::merge): Adjust AVL=REG.
17448 (vector_insn_info::dump): Ditto.
17449 (pass_vsetvl::merge_successors): Remove it.
17450 (enum fusion_type): New enum.
17451 (pass_vsetvl::get_backward_fusion_type): New function.
17452 (pass_vsetvl::backward_demand_fusion): Adjust for AVL=REG.
17453 (pass_vsetvl::forward_demand_fusion): Ditto.
17454 (pass_vsetvl::demand_fusion): Ditto.
17455 (pass_vsetvl::prune_expressions): Ditto.
17456 (pass_vsetvl::compute_local_properties): Ditto.
17457 (pass_vsetvl::cleanup_vsetvls): Ditto.
17458 (pass_vsetvl::commit_vsetvls): Ditto.
17459 (pass_vsetvl::init): Ditto.
17460 * config/riscv/riscv-vsetvl.h (enum fusion_type): New enum.
17461 (enum merge_type): New enum.
17463 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17465 * config/riscv/riscv-vsetvl.cc
17466 (vector_infos_manager::vector_infos_manager): Add probability.
17467 (vector_infos_manager::dump): Ditto.
17468 (pass_vsetvl::compute_probabilities): Ditto.
17469 * config/riscv/riscv-vsetvl.h (struct vector_block_info): Ditto.
17471 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17473 * config/riscv/riscv-vsetvl.cc (vector_insn_info::operator==): Remove dirty_pat.
17474 (vector_insn_info::merge): Ditto.
17475 (vector_insn_info::dump): Ditto.
17476 (pass_vsetvl::merge_successors): Ditto.
17477 (pass_vsetvl::backward_demand_fusion): Ditto.
17478 (pass_vsetvl::forward_demand_fusion): Ditto.
17479 (pass_vsetvl::commit_vsetvls): Ditto.
17480 * config/riscv/riscv-vsetvl.h: Ditto.
17482 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17484 * config/riscv/riscv-vsetvl.cc (add_label_notes): Rename insn to
17487 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17489 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::backward_demand_fusion): Refine codes.
17491 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17493 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::forward_demand_fusion):
17494 Add pre-check for redundant flow.
17496 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17498 * config/riscv/riscv-vsetvl.cc (vector_infos_manager::create_bitmap_vectors): New function.
17499 (vector_infos_manager::free_bitmap_vectors): Ditto.
17500 (pass_vsetvl::pre_vsetvl): Adjust codes.
17501 * config/riscv/riscv-vsetvl.h: New function declaration.
17503 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17505 * config/riscv/riscv-vsetvl.cc (can_backward_propagate_p): Fix for null iter_bb.
17506 (vector_insn_info::set_demand_info): New function.
17507 (pass_vsetvl::emit_local_forward_vsetvls): Adjust for refinement of Phase 3.
17508 (pass_vsetvl::merge_successors): Ditto.
17509 (pass_vsetvl::compute_global_backward_infos): Ditto.
17510 (pass_vsetvl::backward_demand_fusion): Ditto.
17511 (pass_vsetvl::forward_demand_fusion): Ditto.
17512 (pass_vsetvl::demand_fusion): New function.
17513 (pass_vsetvl::lazy_vsetvl): Adjust for refinement of phase 3.
17514 * config/riscv/riscv-vsetvl.h: New function declaration.
17516 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17518 * config/riscv/riscv-vsetvl.cc (vector_insn_info::operator>=): Fix available condition.
17520 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17522 * config/riscv/riscv-vsetvl.cc (change_vsetvl_insn): New function.
17523 (pass_vsetvl::compute_global_backward_infos): Simplify codes.
17525 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17527 * config/riscv/riscv-vsetvl.cc (loop_basic_block_p): Adjust function.
17528 (backward_propagate_worthwhile_p): Fix non-worthwhile.
17530 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17532 * config/riscv/riscv-vsetvl.cc (change_insn): Adjust in_group in validate_change.
17534 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17536 * config/riscv/riscv-vsetvl.cc (vector_infos_manager::all_same_avl_p): New function.
17537 (pass_vsetvl::can_refine_vsetvl_p): Add AVL check.
17538 (pass_vsetvl::commit_vsetvls): Ditto.
17539 * config/riscv/riscv-vsetvl.h: New function declaration.
17541 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17543 * config/riscv/vector.md:
17545 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17547 * config/riscv/riscv-vector-builtins-bases.cc (class loadstore): use
17548 pred_store for vse.
17549 * config/riscv/riscv-vector-builtins.cc
17550 (function_expander::add_mem_operand): Refine function.
17551 (function_expander::use_contiguous_load_insn): Adjust new
17553 (function_expander::use_contiguous_store_insn): Ditto.
17554 * config/riscv/riscv-vector-builtins.h: Refine function.
17555 * config/riscv/vector.md (@pred_store<mode>): New pattern.
17557 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17559 * config/riscv/riscv-vector-builtins.cc: Change to scalar pointer.
17561 2023-01-26 Marek Polacek <polacek@redhat.com>
17563 PR middle-end/108543
17564 * opts.cc (parse_sanitizer_options): Don't always clear SANITIZE_ADDRESS
17565 if it was previously set.
17567 2023-01-26 Jakub Jelinek <jakub@redhat.com>
17569 PR tree-optimization/108540
17570 * range-op-float.cc (foperator_equal::fold_range): If both op1 and op2
17571 are singletons, use range_true even if op1 != op2
17572 when one range is [-0.0, -0.0] and another [0.0, 0.0]. Similarly,
17573 even if intersection of the ranges is empty and one has
17574 zero low bound and another zero high bound, use range_true_and_false
17575 rather than range_false.
17576 (foperator_not_equal::fold_range): If both op1 and op2
17577 are singletons, use range_false even if op1 != op2
17578 when one range is [-0.0, -0.0] and another [0.0, 0.0]. Similarly,
17579 even if intersection of the ranges is empty and one has
17580 zero low bound and another zero high bound, use range_true_and_false
17581 rather than range_true.
17583 2023-01-26 Jakub Jelinek <jakub@redhat.com>
17585 * value-relation.cc (kind_string): Add const.
17586 (rr_negate_table, rr_swap_table, rr_intersect_table,
17587 rr_union_table, rr_transitive_table): Add static const, change
17588 element type from relation_kind to unsigned char.
17589 (relation_negate, relation_swap, relation_intersect, relation_union,
17590 relation_transitive): Cast rr_*_table element to relation_kind.
17591 (relation_to_code): Add static const.
17592 (relation_tests): Assert VREL_LAST is smaller than UCHAR_MAX.
17594 2023-01-26 Richard Biener <rguenther@suse.de>
17596 PR tree-optimization/108547
17597 * gimple-predicate-analysis.cc (value_sat_pred_p):
17600 2023-01-26 Siddhesh Poyarekar <siddhesh@gotplt.org>
17602 PR tree-optimization/108522
17603 * tree-object-size.cc (compute_object_offset): Make EXPR
17604 argument non-const. Call component_ref_field_offset.
17606 2023-01-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
17608 * config/aarch64/aarch64-option-extensions.def (cssc): Specify
17609 FEATURE_STRING field.
17611 2023-01-26 Gerald Pfeifer <gerald@pfeifer.com>
17613 * doc/sourcebuild.texi: Refer to projects as GCC and GDB.
17615 2023-01-25 Iain Sandoe <iain@sandoe.co.uk>
17619 * gcc.cc: Provide default specs for Modula-2 so that when the
17620 language is not built-in better diagnostics are emitted for
17621 attempts to use .mod or .m2i file extensions.
17623 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
17625 * config/arm/mve.md (mve_vqnegq_s<mode>): Fix spacing.
17627 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
17629 * config/arm/mve.md (mve_vqabsq_s<mode>): Fix spacing.
17631 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
17633 * config/arm/mve.md (mve_vnegq_f<mode>, mve_vnegq_s<mode>):
17636 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
17638 * config/arm/mve.md (@mve_vclzq_s<mode>): Fix spacing.
17640 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
17642 * config/arm/mve.md (mve_vclsq_s<mode>): Fix spacing.
17644 2023-01-25 Richard Biener <rguenther@suse.de>
17646 PR tree-optimization/108523
17647 * tree-ssa-sccvn.cc (visit_phi): Avoid using the exclusive
17648 backedge value for the result when using predication to
17651 2023-01-25 Richard Biener <rguenther@suse.de>
17653 * doc/lto.texi (Command line options): Reword and update reference
17654 to removed lto_read_all_file_options.
17656 2023-01-25 Richard Sandiford <richard.sandiford@arm.com>
17658 * config/aarch64/aarch64.md (umax<mode>3): Separate the CNT and CSSC
17661 2023-01-25 Gerald Pfeifer <gerald@pfeifer.com>
17663 * doc/contrib.texi: Add Jose E. Marchesi.
17665 2023-01-25 Jakub Jelinek <jakub@redhat.com>
17667 PR tree-optimization/108498
17668 * gimple-ssa-store-merging.cc (class store_operand_info):
17669 End coment with full stop rather than comma.
17670 (split_group): Likewise.
17671 (merged_store_group::apply_stores): Clear string_concatenation if
17672 start or end aren't on a byte boundary.
17674 2023-01-25 Siddhesh Poyarekar <siddhesh@gotplt.org>
17675 Jakub Jelinek <jakub@redhat.com>
17677 PR tree-optimization/108522
17678 * tree-object-size.cc (compute_object_offset): Use
17679 TREE_OPERAND(ref, 2) for COMPONENT_REF when available.
17681 2023-01-24 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
17683 * config/xtensa/xtensa.md:
17684 Fix exit from loops detecting references before overwriting in the
17687 2023-01-24 Vladimir N. Makarov <vmakarov@redhat.com>
17689 * lra-constraints.cc (get_hard_regno): Remove final_p arg. Always
17690 do elimination but only for hard register.
17691 (operands_match_p, uses_hard_regs_p, process_alt_operands): Adjust
17692 calls of get_hard_regno.
17694 2023-01-24 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
17696 * config/s390/s390-d.cc (s390_d_target_versions): Fix detection
17699 2023-01-24 Andre Vieira <andre.simoesdiasvieira@arm.com>
17702 * config/arm/mve.md (mve_vstrbq_p_<supf><mode>, mve_vstrhq_p_fv8hf,
17703 mve_vstrhq_p_<supf><mode>, mve_vstrwq_p_<supf>v4si): Add memory operand
17706 2023-01-24 Xianmiao Qu <cooper.qu@linux.alibaba.com>
17708 * config.gcc(csky-*-linux*): Define CSKY_ENABLE_MULTILIB
17709 and only include 'csky/t-csky-linux' when enable multilib.
17710 * config/csky/csky-linux-elf.h(SYSROOT_SUFFIX_SPEC): Don't
17711 define it when disable multilib.
17713 2023-01-24 Richard Biener <rguenther@suse.de>
17715 PR tree-optimization/108500
17716 * dominance.h (calculate_dominance_info): Add parameter
17717 to indicate fast-query compute, defaulted to true.
17718 * dominance.cc (calculate_dominance_info): Honor
17719 fast-query compute parameter.
17720 * tree-cfgcleanup.cc (cleanup_tree_cfg_noloop): Do
17721 not compute the dominator fast-query DFS numbers.
17723 2023-01-24 Eric Biggers <ebiggers@google.com>
17726 * optc-save-gen.awk: Fix copy-and-paste error.
17728 2023-01-24 Jakub Jelinek <jakub@redhat.com>
17731 * cgraphbuild.cc: Include gimplify.h.
17732 (record_reference): Replace VAR_DECLs with DECL_HAS_VALUE_EXPR_P with
17733 their corresponding DECL_VALUE_EXPR expressions after unsharing.
17735 2023-01-24 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
17738 * config.gcc (tm_file): Move the variable out of loop.
17740 2023-01-24 Lulu Cheng <chenglulu@loongson.cn>
17741 Yang Yujie <yangyujie@loongson.cn>
17744 * config/loongarch/loongarch.cc (loongarch_classify_address):
17745 Add precessint for CONST_INT.
17746 (loongarch_print_operand_reloc): Operand modifier 'c' is supported.
17747 (loongarch_print_operand): Increase the processing of '%c'.
17748 * doc/extend.texi: Adds documents for LoongArch operand modifiers.
17749 And port the public operand modifiers information to this document.
17751 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
17753 * doc/invoke.texi (-mbranch-protection): Update documentation.
17755 2023-01-23 Richard Biener <rguenther@suse.de>
17758 * config/sparc/freebsd.h (ENDFILE_SPEC): Don't add crtfastmath.o
17760 * config/sparc/linux.h (ENDFILE_SPEC): Likewise.
17761 * config/sparc/linux64.h (ENDFILE_SPEC): Likewise.
17762 * config/sparc/sp-elf.h (ENDFILE_SPEC): Likewise.
17763 * config/sparc/sp64-elf.h (ENDFILE_SPEC): Likewise.
17765 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
17767 * config/arm/aout.h (ra_auth_code): Add entry in enum.
17768 * config/arm/arm.cc (emit_multi_reg_push): Add RA_AUTH_CODE register
17769 to dwarf frame expression.
17770 (arm_emit_multi_reg_pop): Restore RA_AUTH_CODE register.
17771 (arm_expand_prologue): Update frame related information and reg notes
17772 for pac/pacbit insn.
17773 (arm_regno_class): Check for pac pseudo reigster.
17774 (arm_dbx_register_number): Assign ra_auth_code register number in dwarf.
17775 (arm_init_machine_status): Set pacspval_needed to zero.
17776 (arm_debugger_regno): Check for PAC register.
17777 (arm_unwind_emit_sequence): Print .save directive with ra_auth_code
17779 (arm_unwind_emit_set): Add entry for IP_REGNUM in switch case.
17780 (arm_unwind_emit): Update REG_CFA_REGISTER case._
17781 * config/arm/arm.h (FIRST_PSEUDO_REGISTER): Modify.
17782 (DWARF_PAC_REGNUM): Define.
17783 (IS_PAC_REGNUM): Likewise.
17784 (enum reg_class): Add PAC_REG entry.
17785 (machine_function): Add pacbti_needed state to structure.
17786 * config/arm/arm.md (RA_AUTH_CODE): Define.
17788 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
17790 * config.gcc ($tm_file): Update variable.
17791 * config/arm/arm-mlib.h: Create new header file.
17792 * config/arm/t-rmprofile (MULTI_ARCH_DIRS_RM): Rename mbranch-protection
17793 multilib arch directory.
17794 (MULTILIB_REUSE): Add multilib reuse rules.
17795 (MULTILIB_MATCHES): Add multilib match rules.
17797 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
17799 * config/arm/arm-cpus.in (cortex-m85): Define new CPU.
17800 * config/arm/arm-tables.opt: Regenerate.
17801 * config/arm/arm-tune.md: Likewise.
17802 * doc/invoke.texi (Arm Options): Document -mcpu=cortex-m85.
17803 * (-mfix-cmse-cve-2021-35465): Likewise.
17805 2023-01-23 Richard Biener <rguenther@suse.de>
17807 PR tree-optimization/108482
17808 * tree-vect-generic.cc (expand_vector_operations): Fold remaining
17809 .LOOP_DIST_ALIAS calls.
17811 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
17813 * config.gcc (arm*-*-*): Add 'aarch-bti-insert.o' object.
17814 * config/arm/arm-protos.h: Update.
17815 * config/arm/aarch-common-protos.h: Declare
17816 'aarch_bti_arch_check'.
17817 * config/arm/arm.cc (aarch_bti_enabled) Update.
17818 (aarch_bti_j_insn_p, aarch_pac_insn_p, aarch_gen_bti_c)
17819 (aarch_gen_bti_j, aarch_bti_arch_check): New functions.
17820 * config/arm/arm.md (bti_nop): New insn.
17821 * config/arm/t-arm (PASSES_EXTRA): Add 'arm-passes.def'.
17822 (aarch-bti-insert.o): New target.
17823 * config/arm/unspecs.md (VUNSPEC_BTI_NOP): New unspec.
17824 * config/arm/aarch-bti-insert.cc (rest_of_insert_bti): Verify arch
17826 (gate): Make use of 'aarch_bti_arch_check'.
17827 * config/arm/arm-passes.def: New file.
17828 * config/aarch64/aarch64.cc (aarch_bti_arch_check): New function.
17830 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
17832 * config.gcc (aarch64*-*-*): Rename 'aarch64-bti-insert.o' into
17833 'aarch-bti-insert.o'.
17834 * config/aarch64/aarch64-protos.h: Remove 'aarch64_bti_enabled'
17836 * config/aarch64/aarch64.cc (aarch_bti_enabled): Rename.
17837 (aarch_bti_j_insn_p, aarch_pac_insn_p): New functions.
17838 (aarch64_output_mi_thunk)
17839 (aarch64_print_patchable_function_entry)
17840 (aarch64_file_end_indicate_exec_stack): Update renamed function
17841 calls to renamed functions.
17842 * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Likewise.
17843 * config/aarch64/t-aarch64 (aarch-bti-insert.o): Update
17845 * config/aarch64/aarch64-bti-insert.cc: Delete.
17846 * config/arm/aarch-bti-insert.cc: New file including and
17847 generalizing code from aarch64-bti-insert.cc.
17848 * config/arm/aarch-common-protos.h: Update.
17850 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
17852 * config/arm/arm.h (arm_arch8m_main): Declare it.
17853 * config/arm/arm-protos.h (arm_current_function_pac_enabled_p):
17855 * config/arm/arm.cc (arm_arch8m_main): Define it.
17856 (arm_option_reconfigure_globals): Set arm_arch8m_main.
17857 (arm_compute_frame_layout, arm_expand_prologue)
17858 (thumb2_expand_return, arm_expand_epilogue)
17859 (arm_conditional_register_usage): Update for pac codegen.
17860 (arm_current_function_pac_enabled_p): New function.
17861 (aarch_bti_enabled) New function.
17862 (use_return_insn): Return zero when pac is enabled.
17863 * config/arm/arm.md (pac_ip_lr_sp, pacbti_ip_lr_sp, aut_ip_lr_sp):
17865 * config/arm/unspecs.md (UNSPEC_PAC_NOP)
17866 (VUNSPEC_PACBTI_NOP, VUNSPEC_AUT_NOP): Add unspecs.
17868 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
17870 * config/arm/t-rmprofile: Add multilib rules for march +pacbti and
17871 mbranch-protection.
17873 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
17874 Tejas Belagod <tbelagod@arm.com>
17876 * config/arm/arm.cc (arm_file_start): Emit EABI attributes for
17877 Tag_PAC_extension, Tag_BTI_extension, TAG_BTI_use, TAG_PACRET_use.
17879 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
17880 Tejas Belagod <tbelagod@arm.com>
17881 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
17883 * ginclude/unwind-arm-common.h (_Unwind_VRS_RegClass): Introduce
17884 new pseudo register class _UVRSC_PAC.
17886 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
17887 Tejas Belagod <tbelagod@arm.com>
17889 * config/arm/arm-c.cc (arm_cpu_builtins): Define
17890 __ARM_FEATURE_BTI_DEFAULT, __ARM_FEATURE_PAC_DEFAULT,
17891 __ARM_FEATURE_PAUTH and __ARM_FEATURE_BTI.
17893 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
17894 Tejas Belagod <tbelagod@arm.com>
17896 * doc/sourcebuild.texi: Document arm_pacbti_hw.
17898 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
17899 Tejas Belagod <tbelagod@arm.com>
17900 Richard Earnshaw <Richard.Earnshaw@arm.com>
17902 * config/arm/arm.cc (arm_configure_build_target): Parse and validate
17903 -mbranch-protection option and initialize appropriate data structures.
17904 * config/arm/arm.opt (-mbranch-protection): New option.
17905 * doc/invoke.texi (Arm Options): Document it.
17907 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
17908 Tejas Belagod <tbelagod@arm.com>
17910 * config/arm/arm.h (TARGET_HAVE_PACBTI): New macro.
17911 * config/arm/arm-cpus.in (pacbti): New feature.
17912 * doc/invoke.texi (Arm Options): Document it.
17914 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
17915 Tejas Belagod <tbelagod@arm.com>
17917 * common/config/aarch64/aarch64-common.cc: Include aarch-common.h.
17918 (all_architectures): Fix comment.
17919 (aarch64_parse_extension): Rename return type, enum value names.
17920 * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Rename
17921 factored out aarch_ra_sign_scope and aarch_ra_sign_key variables.
17922 Also rename corresponding enum values.
17923 * config/aarch64/aarch64-opts.h (aarch64_function_type): Factor
17924 out aarch64_function_type and move it to common code as
17925 aarch_function_type in aarch-common.h.
17926 * config/aarch64/aarch64-protos.h: Include common types header,
17927 move out types aarch64_parse_opt_result and aarch64_key_type to
17929 * config/aarch64/aarch64.cc: Move mbranch-protection parsing types
17930 and functions out into aarch-common.h and aarch-common.cc. Fix up
17931 all the name changes resulting from the move.
17932 * config/aarch64/aarch64.md: Fix up aarch64_ra_sign_key type name change
17934 * config/aarch64/aarch64.opt: Include aarch-common.h to import
17935 type move. Fix up name changes from factoring out common code and
17937 * config/arm/aarch-common-protos.h: Export factored out routines to both
17939 * config/arm/aarch-common.cc: Include newly factored out types.
17940 Move all mbranch-protection code and data structures from
17942 * config/arm/aarch-common.h: New header that declares types shared
17943 between aarch32 and aarch64 backends.
17944 * config/arm/arm-protos.h: Declare types and variables that are
17945 made common to aarch64 and aarch32 backends - aarch_ra_sign_key,
17946 aarch_ra_sign_scope and aarch_enable_bti.
17947 * config/arm/arm.opt (config/arm/aarch-common.h): Include header.
17948 (aarch_ra_sign_scope, aarch_enable_bti): Declare variable.
17949 * config/arm/arm.cc: Add missing includes.
17951 2023-01-23 Tobias Burnus <tobias@codesourcery.com>
17953 * doc/install.texi (amdgcn, nvptx): Require newlib 4.3.0.
17955 2023-01-23 Richard Biener <rguenther@suse.de>
17957 PR tree-optimization/108449
17958 * cgraphunit.cc (check_global_declaration): Do not turn
17959 undefined statics into externs.
17961 2023-01-22 Dimitar Dimitrov <dimitar@dinux.eu>
17963 * config/pru/pru.h (CLZ_DEFINED_VALUE_AT_ZERO): Fix value for QI
17964 and HI input modes.
17965 * config/pru/pru.md (clz): Fix generated code for QI and HI
17968 2023-01-22 Cupertino Miranda <cupertino.miranda@oracle.com>
17970 * config/v850/v850.cc (v850_select_section): Put const volatile
17971 objects into read-only sections.
17973 2023-01-20 Tejas Belagod <tejas.belagod@arm.com>
17975 * config/aarch64/arm_neon.h (vmull_p64, vmull_high_p64, vaeseq_u8,
17976 vaesdq_u8, vaesmcq_u8, vaesimcq_u8): Gate under "nothing+aes".
17977 (vsha1*_u32, vsha256*_u32): Gate under "nothing+sha2".
17979 2023-01-20 Jakub Jelinek <jakub@redhat.com>
17981 PR tree-optimization/108457
17982 * tree-ssa-loop-niter.cc (build_cltz_expr): Use
17983 SCALAR_INT_TYPE_MODE (utype) directly as C[LT]Z_DEFINED_VALUE_AT_ZERO
17984 argument instead of a temporary. Formatting fixes.
17986 2023-01-19 Jakub Jelinek <jakub@redhat.com>
17988 PR tree-optimization/108447
17989 * value-relation.cc (rr_union_table): Fix VREL_UNDEFINED row order.
17990 (relation_tests): Add self-tests for relation_{intersect,union}
17992 * selftest.h (relation_tests): Declare.
17993 * function-tests.cc (test_ranges): Call it.
17995 2023-01-19 H.J. Lu <hjl.tools@gmail.com>
17998 * config/i386/i386-expand.cc (ix86_expand_builtin): Check
17999 invalid third argument to __builtin_ia32_prefetch.
18001 2023-01-19 Jakub Jelinek <jakub@redhat.com>
18003 PR middle-end/108459
18004 * omp-expand.cc (expand_omp_for_init_counts): Use fold_build1 rather
18005 than fold_unary for NEGATE_EXPR.
18007 2023-01-19 Christophe Lyon <christophe.lyon@arm.com>
18010 * config/aarch64/aarch64.cc (aarch64_layout_arg): Improve
18011 comment. Move assert about alignment a bit later.
18013 2023-01-19 Jakub Jelinek <jakub@redhat.com>
18015 PR tree-optimization/108440
18016 * tree-ssa-forwprop.cc: Include gimple-range.h.
18017 (simplify_rotate): For the forms with T2 wider than T and shift counts of
18018 Y and B - Y add & (B - 1) masking for the rotate count if Y could be equal
18019 to B. For the forms with T2 wider than T and shift counts of
18020 Y and (-Y) & (B - 1), don't punt if range could be [B, B2], but only if
18021 range doesn't guarantee Y < B or Y = N * B. If range doesn't guarantee
18022 Y < B, also add & (B - 1) masking for the rotate count. Use lazily created
18023 pass specific ranger instead of get_global_range_query.
18024 (pass_forwprop::execute): Disable that ranger at the end of pass if it has
18027 2023-01-19 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
18029 * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set<mode>): Use
18030 exact_log2 (INTVAL (operands[2])) >= 0 as condition for gating
18032 (aarch64_simd_vec_copy_lane<mode>): Likewise.
18033 (aarch64_simd_vec_copy_lane_<vswap_width_name><mode>): Likewise.
18035 2023-01-19 Alexandre Oliva <oliva@adacore.com>
18038 * sched-deps.cc (sched_analyze_2): Skip cselib address lookup
18039 within debug insns.
18041 2023-01-18 Martin Jambor <mjambor@suse.cz>
18044 * cgraph.cc (cgraph_node::remove): Check whether nodes up the
18045 lcone_of chain also do not need the body.
18047 2023-01-18 Richard Biener <rguenther@suse.de>
18050 2022-12-16 Richard Biener <rguenther@suse.de>
18052 PR middle-end/108086
18053 * tree-inline.cc (remap_ssa_name): Do not unshare the
18054 result from the decl_map.
18056 2023-01-18 Murray Steele <murray.steele@arm.com>
18059 * config/arm/arm_mve.h (__arm_vst1q_p_u8): Use prefixed intrinsic
18061 (__arm_vst1q_p_s8): Likewise.
18062 (__arm_vld1q_z_u8): Likewise.
18063 (__arm_vld1q_z_s8): Likewise.
18064 (__arm_vst1q_p_u16): Likewise.
18065 (__arm_vst1q_p_s16): Likewise.
18066 (__arm_vld1q_z_u16): Likewise.
18067 (__arm_vld1q_z_s16): Likewise.
18068 (__arm_vst1q_p_u32): Likewise.
18069 (__arm_vst1q_p_s32): Likewise.
18070 (__arm_vld1q_z_u32): Likewise.
18071 (__arm_vld1q_z_s32): Likewise.
18072 (__arm_vld1q_z_f16): Likewise.
18073 (__arm_vst1q_p_f16): Likewise.
18074 (__arm_vld1q_z_f32): Likewise.
18075 (__arm_vst1q_p_f32): Likewise.
18077 2023-01-18 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
18079 * config/xtensa/xtensa.md (xorsi3_internal):
18080 Rename from the original of "xorsi3".
18081 (xorsi3): New expansion pattern that emits addition rather than
18082 bitwise-XOR when the second source is a constant of -2147483648
18085 2023-01-18 Kewen Lin <linkw@linux.ibm.com>
18086 Andrew Pinski <apinski@marvell.com>
18089 * config/rs6000/rs6000-overload.def (VEC_VSUBCUQ): Fix typo
18090 vec_vsubcuqP with vec_vsubcuq.
18092 2023-01-18 Kewen Lin <linkw@linux.ibm.com>
18095 * config/rs6000/rs6000.cc (rs6000_opaque_type_invalid_use_p): Add the
18096 support for invalid uses of MMA opaque type in function arguments.
18098 2023-01-18 liuhongt <hongtao.liu@intel.com>
18101 * config/i386/cygwin.h (ENDFILE_SPEC): Link crtfastmath.o
18102 whenever -mdaz-ftz is specified. Don't link crtfastmath.o when
18103 -share or -mno-daz-ftz is specified.
18104 * config/i386/darwin.h (ENDFILE_SPEC): Ditto.
18105 * config/i386/mingw32.h (ENDFILE_SPEC): Ditto.
18107 2023-01-17 Jose E. Marchesi <jose.marchesi@oracle.com>
18109 * config/bpf/bpf.cc (bpf_option_override): Disable
18112 2023-01-17 Jakub Jelinek <jakub@redhat.com>
18114 PR tree-optimization/106523
18115 * tree-ssa-forwprop.cc (simplify_rotate): For the
18116 patterns with (-Y) & (B - 1) in one operand's shift
18117 count and Y in another, if T2 has wider precision than T,
18118 punt if Y could have a value in [B, B2 - 1] range.
18120 2023-01-16 H.J. Lu <hjl.tools@gmail.com>
18123 * config/i386/i386.cc (x86_output_mi_thunk): Disable
18124 -mforce-indirect-call for PIC in 32-bit mode.
18126 2023-01-16 Jan Hubicka <hubicka@ucw.cz>
18129 * ipa-modref.cc (modref_access_analysis::analyze): Use
18130 find_always_executed_bbs.
18131 * ipa-sra.cc (process_scan_results): Likewise.
18132 * ipa-utils.cc (stmt_may_terminate_function_p): New function.
18133 (find_always_executed_bbs): New function.
18134 * ipa-utils.h (stmt_may_terminate_function_p): Declare.
18135 (find_always_executed_bbs): Declare.
18137 2023-01-16 Jan Hubicka <jh@suse.cz>
18139 * config/i386/i386.cc (ix86_vectorize_builtin_scatter): Guard scatter
18140 by TARGET_USE_SCATTER.
18141 * config/i386/i386.h (TARGET_USE_SCATTER_2PARTS,
18142 TARGET_USE_SCATTER_4PARTS, TARGET_USE_SCATTER): New macros.
18143 * config/i386/x86-tune.def (TARGET_USE_SCATTER_2PARTS,
18144 TARGET_USE_SCATTER_4PARTS, TARGET_USE_SCATTER): New tunes.
18145 (X86_TUNE_AVOID_256FMA_CHAINS, X86_TUNE_AVOID_512FMA_CHAINS): Disable
18146 for znver4. (X86_TUNE_USE_GATHER): Disable for zen4.
18148 2023-01-16 Richard Biener <rguenther@suse.de>
18151 * config/sol2.h (ENDFILE_SPEC): Don't add crtfastmath.o for -shared.
18153 2023-01-16 Stam Markianos-Wright <stam.markianos-wright@arm.com>
18157 * config/arm/arm_mve.h (__ARM_mve_coerce2): Split types.
18158 (__ARM_mve_coerce3): Likewise.
18160 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
18162 * tree-ssa-loop-niter.cc (build_popcount_expr): Add IFN support.
18164 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
18166 * tree-ssa-loop-niter.cc (number_of_iterations_cltz): New.
18167 (number_of_iterations_bitcount): Add call to the above.
18168 (number_of_iterations_exit_assumptions): Add EQ_EXPR case for
18169 c[lt]z idiom recognition.
18171 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
18173 * doc/sourcebuild.texi: Add missing target attributes.
18175 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
18177 PR tree-optimization/94793
18178 * tree-scalar-evolution.cc (expression_expensive_p): Add checks
18180 * tree-ssa-loop-niter.cc (build_cltz_expr): New.
18181 (number_of_iterations_cltz_complement): New.
18182 (number_of_iterations_bitcount): Add call to the above.
18184 2023-01-16 Jonathan Wakely <jwakely@redhat.com>
18186 * doc/extend.texi (Common Function Attributes): Fix grammar.
18188 2023-01-16 Jakub Jelinek <jakub@redhat.com>
18191 * config/riscv/riscv-vsetvl.h: Add space in between Copyright and (C).
18192 * config/riscv/riscv-vsetvl.cc: Likewise.
18194 2023-01-16 Jakub Jelinek <jakub@redhat.com>
18197 * config/i386/xmmintrin.h (_mm_undefined_ps): Temporarily
18198 disable -Winit-self using pragma GCC diagnostic ignored.
18199 * config/i386/emmintrin.h (_mm_undefined_pd, _mm_undefined_si128):
18201 * config/i386/avxintrin.h (_mm256_undefined_pd, _mm256_undefined_ps,
18202 _mm256_undefined_si256): Likewise.
18203 * config/i386/avx512fintrin.h (_mm512_undefined_pd,
18204 _mm512_undefined_ps, _mm512_undefined_epi32): Likewise.
18205 * config/i386/avx512fp16intrin.h (_mm_undefined_ph,
18206 _mm256_undefined_ph, _mm512_undefined_ph): Likewise.
18208 2023-01-16 Kewen Lin <linkw@linux.ibm.com>
18211 * config/rs6000/rs6000.cc (rs6000_opaque_type_invalid_use_p): Add the
18212 support for invalid uses in inline asm, factor out the checking and
18213 erroring to lambda function check_and_error_invalid_use.
18215 2023-01-15 Aldy Hernandez <aldyh@redhat.com>
18217 PR tree-optimization/107608
18218 * range-op-float.cc (range_operator_float::fold_range): Avoid
18219 folding into INF when flag_trapping_math.
18220 * value-range.h (frange::known_isinf): Return false for possible NANs.
18222 2023-01-15 Xianmiao Qu <cooper.qu@linux.alibaba.com>
18224 * config.gcc (csky-*-*): Support --with-float=softfp.
18226 2023-01-14 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
18228 * config/xtensa/xtensa-protos.h (order_regs_for_local_alloc):
18229 Rename to xtensa_adjust_reg_alloc_order.
18230 * config/xtensa/xtensa.cc (xtensa_adjust_reg_alloc_order):
18231 Ditto. And also remove code to reorder register numbers for
18232 leaf functions, rename the tables, and adjust the allocation
18233 order for the call0 ABI to use register A0 more.
18234 (xtensa_leaf_regs): Remove.
18235 * config/xtensa/xtensa.h (REG_ALLOC_ORDER): Cosmetics.
18236 (order_regs_for_local_alloc): Rename as the above.
18237 (LEAF_REGISTERS, LEAF_REG_REMAP, leaf_function): Remove.
18239 2023-01-14 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
18241 * config/aarch64/aarch64-sve.md (aarch64_vec_duplicate_vq<mode>_le):
18242 Change to define_insn_and_split to fold ldr+dup to ld1rq.
18243 * config/aarch64/predicates.md (aarch64_sve_dup_ld1rq_operand): New.
18245 2023-01-14 Alexandre Oliva <oliva@adacore.com>
18247 * hash-table.h (is_deleted): Precheck !is_empty.
18248 (mark_deleted): Postcheck !is_empty.
18249 (copy constructor): Test is_empty before is_deleted.
18251 2023-01-14 Alexandre Oliva <oliva@adacore.com>
18254 * config/arm/arm.md (movmisaligndi): Prefer aligned SImode
18257 2023-01-13 Eric Botcazou <ebotcazou@adacore.com>
18259 PR rtl-optimization/108274
18260 * function.cc (thread_prologue_and_epilogue_insns): Also update the
18261 DF information for calls in a few more cases.
18263 2023-01-13 John David Anglin <danglin@gcc.gnu.org>
18265 * config/pa/pa-linux.h (TARGET_SYNC_LIBCALL): Delete define.
18266 * config/pa/pa.cc (pa_init_libfuncs): Use MAX_SYNC_LIBFUNC_SIZE
18268 * config/pa/pa.h (TARGET_SYNC_LIBCALLS): Use flag_sync_libcalls.
18269 (MAX_SYNC_LIBFUNC_SIZE): Define.
18270 (TARGET_CPU_CPP_BUILTINS): Define __SOFTFP__ when soft float is
18272 * config/pa/pa.md (atomic_storeqi): Emit __atomic_exchange_1
18273 libcall when sync libcalls are disabled.
18274 (atomic_storehi, atomic_storesi, atomic_storedi): Likewise.
18275 (atomic_loaddi): Emit __atomic_load_8 libcall when sync libcalls
18276 are disabled on 32-bit target.
18277 * config/pa/pa.opt (matomic-libcalls): New option.
18278 * doc/invoke.texi (HPPA Options): Update.
18280 2023-01-13 Alexander Monakov <amonakov@ispras.ru>
18282 PR rtl-optimization/108117
18283 PR rtl-optimization/108132
18284 * sched-deps.cc (deps_analyze_insn): Do not schedule across
18285 calls before reload.
18287 2023-01-13 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
18289 * common/config/arm/arm-common.cc (arm_canon_arch_option_1): Ignore cde
18290 options for -mlibarch.
18291 * config/arm/arm-cpus.in (begin cpu cortex-m55): Add cde options.
18292 * doc/invoke.texi (CDE): Document options for Cortex-M55 CPU.
18294 2023-01-13 Qing Zhao <qing.zhao@oracle.com>
18296 * attribs.cc (strict_flex_array_level_of): Move this function to ...
18297 * attribs.h (strict_flex_array_level_of): Remove the declaration.
18298 * gimple-array-bounds.cc (array_bounds_checker::check_array_ref):
18299 replace the referece to strict_flex_array_level_of with
18300 DECL_NOT_FLEXARRAY.
18301 * tree.cc (component_ref_size): Likewise.
18303 2023-01-13 Richard Biener <rguenther@suse.de>
18306 * config/arm/linux-eabi.h (ENDFILE_SPEC): Don't add
18307 crtfastmath.o for -shared.
18308 * config/arm/unknown-elf.h (STARTFILE_SPEC): Likewise.
18310 2023-01-13 Richard Biener <rguenther@suse.de>
18313 * config/aarch64/aarch64-elf-raw.h (ENDFILE_SPEC): Don't add
18314 crtfastmath.o for -shared.
18315 * config/aarch64/aarch64-freebsd.h (GNU_USER_TARGET_MATHFILE_SPEC):
18317 * config/aarch64/aarch64-linux.h (GNU_USER_TARGET_MATHFILE_SPEC):
18320 2023-01-13 Richard Sandiford <richard.sandiford@arm.com>
18322 * config/aarch64/aarch64.cc (aarch64_dwarf_frame_reg_mode): New
18324 (TARGET_DWARF_FRAME_REG_MODE): Define.
18326 2023-01-13 Richard Biener <rguenther@suse.de>
18329 * config/aarch64/aarch64.cc (aarch64_gimple_fold_builtin): Don't
18330 update EH info on the fly.
18332 2023-01-13 Richard Biener <rguenther@suse.de>
18334 PR tree-optimization/108387
18335 * tree-ssa-sccvn.cc (visit_nary_op): Check for SSA_NAME
18336 value before inserting expression into the tables.
18338 2023-01-12 Andrew Pinski <apinski@marvell.com>
18339 Roger Sayle <roger@nextmovesoftware.com>
18341 PR tree-optimization/92342
18342 * match.pd ((m1 CMP m2) * d -> (m1 CMP m2) ? d : 0):
18343 Use tcc_comparison and :c for the multiply.
18344 (b & -(a CMP c) -> (a CMP c)?b:0): New pattern.
18346 2023-01-12 Christophe Lyon <christophe.lyon@arm.com>
18347 Richard Sandiford <richard.sandiford@arm.com>
18350 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment):
18351 Check DECL_PACKED for bitfield.
18352 (aarch64_layout_arg): Warn when parameter passing ABI changes.
18353 (aarch64_function_arg_boundary): Do not warn here.
18354 (aarch64_gimplify_va_arg_expr): Warn when parameter passing ABI
18357 2023-01-12 Christophe Lyon <christophe.lyon@arm.com>
18358 Richard Sandiford <richard.sandiford@arm.com>
18360 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Fix
18362 (aarch64_layout_arg): Factorize warning conditions.
18363 (aarch64_function_arg_boundary): Fix typo.
18364 * function.cc (currently_expanding_function_start): New variable.
18365 (expand_function_start): Handle
18366 currently_expanding_function_start.
18367 * function.h (currently_expanding_function_start): Declare.
18369 2023-01-12 Richard Biener <rguenther@suse.de>
18371 PR tree-optimization/99412
18372 * tree-ssa-reassoc.cc (is_phi_for_stmt): Remove.
18373 (swap_ops_for_binary_stmt): Remove reduction handling.
18374 (rewrite_expr_tree_parallel): Adjust.
18375 (reassociate_bb): Likewise.
18376 * tree-parloops.cc (build_new_reduction): Handle MINUS_EXPR.
18378 2023-01-12 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
18380 * config/xtensa/xtensa.md (ctzsi2, ffssi2):
18381 Rearrange the emitting codes.
18383 2023-01-12 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
18385 * config/xtensa/xtensa.md (*btrue):
18386 Correct value of the attribute "length" that depends on
18387 TARGET_DENSITY and operands, and add '?' character to the register
18388 constraint of the compared operand.
18390 2023-01-12 Alexandre Oliva <oliva@adacore.com>
18392 * hash-table.h (expand): Check elements and deleted counts.
18393 (verify): Likewise.
18395 2023-01-11 Roger Sayle <roger@nextmovesoftware.com>
18397 PR tree-optimization/71343
18398 * tree-ssa-sccvn.cc (visit_nary_op) <case LSHIFT_EXPR>: Make
18399 the value number of the expression X << C the same as the value
18400 number for the multiplication X * (1<<C).
18402 2023-01-11 David Faust <david.faust@oracle.com>
18405 * config/bpf/bpf.cc (bpf_print_operand): Correct handling for
18406 floating point modes.
18408 2023-01-11 Eric Botcazou <ebotcazou@adacore.com>
18410 PR tree-optimization/108199
18411 * tree-sra.cc (sra_modify_expr): Deal with reverse storage order
18412 for bit-field references.
18414 2023-01-11 Kewen Lin <linkw@linux.ibm.com>
18416 * config/rs6000/rs6000.cc (rs6000_option_override_internal): Make
18417 OPTION_MASK_P10_FUSION implicit setting honour Power10 tuning setting.
18418 * config/rs6000/rs6000-cpus.def (ISA_3_1_MASKS_SERVER): Remove
18419 OPTION_MASK_P10_FUSION.
18421 2023-01-11 Richard Biener <rguenther@suse.de>
18423 PR tree-optimization/107767
18424 * tree-cfgcleanup.cc (phi_alternatives_equal): Export.
18425 * tree-cfgcleanup.h (phi_alternatives_equal): Declare.
18426 * tree-switch-conversion.cc (switch_conversion::collect):
18427 Count unique non-default targets accounting for later
18428 merging opportunities.
18430 2023-01-11 Martin Liska <mliska@suse.cz>
18432 PR middle-end/107976
18433 * params.opt: Limit JT params.
18434 * stmt.cc (emit_case_dispatch_table): Use auto_vec.
18436 2023-01-11 Richard Biener <rguenther@suse.de>
18438 PR tree-optimization/108352
18439 * tree-ssa-threadbackward.cc
18440 (back_threader_profitability::profitable_path_p): Adjust
18441 heuristic that allows non-multi-way branch threads creating
18443 * doc/invoke.texi (--param fsm-scale-path-blocks): Remove.
18444 (--param fsm-scale-path-stmts): Adjust.
18445 * params.opt (--param=fsm-scale-path-blocks=): Remove.
18446 (-param=fsm-scale-path-stmts=): Adjust description.
18448 2023-01-11 Richard Biener <rguenther@suse.de>
18450 PR tree-optimization/108353
18451 * tree-ssa-propagate.cc (cfg_blocks_back, ssa_edge_worklist_back):
18453 (add_ssa_edge): Simplify.
18454 (add_control_edge): Likewise.
18455 (ssa_prop_init): Likewise.
18456 (ssa_prop_fini): Likewise.
18457 (ssa_propagation_engine::ssa_propagate): Likewise.
18459 2023-01-11 Andreas Krebbel <krebbel@linux.ibm.com>
18461 * config/s390/s390.md (*not<mode>): New pattern.
18463 2023-01-11 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
18465 * config/xtensa/xtensa.cc (xtensa_insn_cost):
18466 Let insn cost for size be obtained by applying COSTS_N_INSNS()
18467 to instruction length and then dividing by 3.
18469 2023-01-10 Richard Biener <rguenther@suse.de>
18471 PR tree-optimization/106293
18472 * tree-ssa-dse.cc (dse_classify_store): Use a worklist to
18473 process degenerate PHI defs.
18475 2023-01-10 Roger Sayle <roger@nextmovesoftware.com>
18477 PR rtl-optimization/106421
18478 * cprop.cc (bypass_block): Check that DEST is local to this
18479 function (non-NULL) before calling find_edge.
18481 2023-01-10 Martin Jambor <mjambor@suse.cz>
18484 * ipa-param-manipulation.h (ipa_param_body_adjustments): New members
18485 sort_replacements, lookup_first_base_replacement and
18486 m_sorted_replacements_p.
18487 * ipa-param-manipulation.cc: Define INCLUDE_ALGORITHM.
18488 (ipa_param_body_adjustments::register_replacement): Set
18489 m_sorted_replacements_p to false.
18490 (compare_param_body_replacement): New function.
18491 (ipa_param_body_adjustments::sort_replacements): Likewise.
18492 (ipa_param_body_adjustments::common_initialization): Call
18494 (ipa_param_body_adjustments::ipa_param_body_adjustments): Initialize
18495 m_sorted_replacements_p.
18496 (ipa_param_body_adjustments::lookup_replacement_1): Rework to use
18498 (ipa_param_body_adjustments::lookup_first_base_replacement): New
18500 (ipa_param_body_adjustments::modify_call_stmt): Use
18501 lookup_first_base_replacement.
18502 * omp-simd-clone.cc (ipa_simd_modify_function_body): Call
18503 adjustments->sort_replacements.
18505 2023-01-10 Richard Biener <rguenther@suse.de>
18507 PR tree-optimization/108314
18508 * tree-vect-stmts.cc (vectorizable_condition): Do not
18509 perform BIT_NOT_EXPR optimization for EXTRACT_LAST_REDUCTION.
18511 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
18513 * config/csky/csky-linux-elf.h (SYSROOT_SUFFIX_SPEC): New.
18515 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
18517 * config/csky/csky.h (MULTILIB_DEFAULTS): Fix float abi option.
18519 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
18521 * config/csky/csky.cc (csky_cpu_cpp_builtins): Add builtin
18522 defines for soft float abi.
18524 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
18526 * config/csky/csky.md (smart_bseti): Change condition to CSKY_ISA_FEATURE (E1).
18527 (smart_bclri): Likewise.
18528 (fast_bseti): Change condition to CSKY_ISA_FEATURE (E2).
18529 (fast_bclri): Likewise.
18530 (fast_cmpnesi_i): Likewise.
18531 (*fast_cmpltsi_i): Likewise.
18532 (*fast_cmpgeusi_i): Likewise.
18534 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
18536 * config/csky/csky_insn_fpuv3.md (l<frm_pattern><fixsuop><mode>si2): Test
18537 flag_fp_int_builtin_inexact || !flag_trapping_math.
18538 (<frm_pattern><mode>2): Likewise.
18540 2023-01-10 Andreas Krebbel <krebbel@linux.ibm.com>
18542 * config/s390/s390.cc (s390_register_info): Check call_used_regs
18543 instead of hard-coding the register numbers for call saved
18545 (s390_optimize_register_info): Likewise.
18547 2023-01-09 Eric Botcazou <ebotcazou@adacore.com>
18549 * doc/gm2.texi (Overview): Fix @node markers.
18550 (Using): Likewise. Remove subsections that were moved to Overview
18551 from the menu and move others around.
18553 2023-01-09 Richard Biener <rguenther@suse.de>
18555 PR middle-end/108209
18556 * genmatch.cc (commutative_op): Fix return value for
18557 user-id with non-commutative first replacement.
18559 2023-01-09 Jakub Jelinek <jakub@redhat.com>
18562 * calls.cc (expand_call): For calls with
18563 TYPE_NO_NAMED_ARGS_STDARG_P (funtype) use zero for n_named_args.
18566 2023-01-09 Richard Biener <rguenther@suse.de>
18568 PR middle-end/69482
18569 * cfgexpand.cc (discover_nonconstant_array_refs_r): Volatile
18570 qualified accesses also force objects to memory.
18572 2023-01-09 Martin Liska <mliska@suse.cz>
18575 * lto-cgraph.cc (compute_ltrans_boundary): Do not insert
18576 NULL (deleleted value) to a hash_set.
18578 2023-01-08 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
18580 * config/xtensa/xtensa.md (*splice_bits):
18581 New insn_and_split pattern.
18583 2023-01-07 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
18585 * config/xtensa/xtensa.cc
18586 (xtensa_split_imm_two_addends, xtensa_emit_add_imm):
18587 New helper functions.
18588 (xtensa_set_return_address, xtensa_output_mi_thunk):
18589 Change to use the helper function.
18590 (xtensa_emit_adjust_stack_ptr): Ditto.
18591 And also change to try reusing the content of scratch register
18592 A9 if the register is not modified in the function body.
18594 2023-01-07 LIU Hao <lh_mouse@126.com>
18596 PR middle-end/108300
18597 * config/xtensa/xtensa-dynconfig.c: Define `WIN32_LEAN_AND_MEAN`
18598 before <windows.h>.
18599 * diagnostic-color.cc: Likewise.
18600 * plugin.cc: Likewise.
18601 * prefix.cc: Likewise.
18603 2023-01-06 Joseph Myers <joseph@codesourcery.com>
18605 * doc/extend.texi (__builtin_tgmath): Do not restate standard rule
18606 for handling real integer types.
18608 2023-01-06 Tamar Christina <tamar.christina@arm.com>
18611 2022-12-12 Tamar Christina <tamar.christina@arm.com>
18613 * config/aarch64/aarch64-simd.md (*aarch64_simd_movv2hf): New.
18614 (mov<mode>, movmisalign<mode>, aarch64_dup_lane<mode>,
18615 aarch64_store_lane0<mode>, aarch64_simd_vec_set<mode>,
18616 @aarch64_simd_vec_copy_lane<mode>, vec_set<mode>,
18617 reduc_<optab>_scal_<mode>, reduc_<fmaxmin>_scal_<mode>,
18618 aarch64_reduc_<optab>_internal<mode>, aarch64_get_lane<mode>,
18619 vec_init<mode><Vel>, vec_extract<mode><Vel>): Support V2HF.
18620 (aarch64_simd_dupv2hf): New.
18621 * config/aarch64/aarch64.cc (aarch64_classify_vector_mode):
18623 * config/aarch64/iterators.md (VHSDF_P): New.
18624 (V2F, VMOVE, nunits, Vtype, Vmtype, Vetype, stype, VEL,
18625 Vel, q, vp): Add V2HF.
18626 * config/arm/types.md (neon_fp_reduc_add_h): New.
18628 2023-01-06 Martin Liska <mliska@suse.cz>
18630 PR middle-end/107966
18631 * doc/options.texi: Fix Var documentation in internal manual.
18633 2023-01-05 Roger Sayle <roger@nextmovesoftware.com>
18636 2023-01-03 Roger Sayle <roger@nextmovesoftware.com>
18638 * config/i386/i386-expand.cc (ix86_expand_int_movcc): Rewrite
18639 RTL expansion to allow condition (mask) to be shared/reused,
18640 by avoiding overwriting pseudos and adding REG_EQUAL notes.
18642 2023-01-05 Iain Sandoe <iain@sandoe.co.uk>
18644 * common.opt: Add -static-libgm2.
18645 * config/darwin.h (LINK_SPEC): Handle static-libgm2.
18646 * doc/gm2.texi: Document static-libgm2.
18647 * gcc.cc (driver_handle_option): Allow static-libgm2.
18649 2023-01-05 Tejas Joshi <TejasSanjay.Joshi@amd.com>
18651 * common/config/i386/i386-common.cc (processor_alias_table):
18652 Use CPU_ZNVER4 for znver4.
18653 * config/i386/i386.md: Add znver4.md.
18654 * config/i386/znver4.md: New.
18656 2023-01-04 Jakub Jelinek <jakub@redhat.com>
18658 PR tree-optimization/108253
18659 * tree-vrp.cc (maybe_set_nonzero_bits): Handle var with pointer
18662 2023-01-04 Jakub Jelinek <jakub@redhat.com>
18664 PR middle-end/108237
18665 * generic-match-head.cc: Include tree-pass.h.
18666 (canonicalize_math_p, optimize_vectors_before_lowering_p): Define
18667 to false if cfun and cfun->curr_properties has PROP_gimple_opt_math
18668 resp. PROP_gimple_lvec property set.
18670 2023-01-04 Jakub Jelinek <jakub@redhat.com>
18672 PR sanitizer/108256
18673 * convert.cc (do_narrow): Punt for MULT_EXPR if original
18674 type doesn't wrap around and -fsanitize=signed-integer-overflow
18676 * fold-const.cc (fold_unary_loc) <CASE_CONVERT>: Likewise.
18678 2023-01-04 Hu, Lin1 <lin1.hu@intel.com>
18680 * common/config/i386/cpuinfo.h (get_intel_cpu): Handle Emeraldrapids.
18681 * common/config/i386/i386-common.cc: Add Emeraldrapids.
18683 2023-01-04 Hu, Lin1 <lin1.hu@intel.com>
18685 * common/config/i386/cpuinfo.h (get_intel_cpu): Remove case 0xb5
18688 2023-01-03 Sandra Loosemore <sandra@codesourcery.com>
18690 * cgraph.h (struct cgraph_node): Add gc_candidate bit, modify
18691 default constructor to initialize it.
18692 * cgraphunit.cc (expand_all_functions): Save gc_candidate functions
18693 for last and iterate to handle recursive calls. Delete leftover
18694 candidates at the end.
18695 * omp-simd-clone.cc (simd_clone_create): Set gc_candidate bit
18697 * tree-vect-stmts.cc (vectorizable_simd_clone_call): Clear
18698 gc_candidate bit when a clone is used.
18700 2023-01-03 Florian Weimer <fweimer@redhat.com>
18703 2023-01-02 Florian Weimer <fweimer@redhat.com>
18705 * dwarf2cfi.cc (init_return_column_size): Remove.
18706 (init_one_dwarf_reg_size): Adjust.
18707 (generate_dwarf_reg_sizes): New function. Extracted
18708 from expand_builtin_init_dwarf_reg_sizes.
18709 (expand_builtin_init_dwarf_reg_sizes): Call
18710 generate_dwarf_reg_sizes.
18711 * target.def (init_dwarf_reg_sizes_extra): Adjust
18713 * config/msp430/msp430.cc
18714 (msp430_init_dwarf_reg_sizes_extra): Adjust.
18715 * config/rs6000/rs6000.cc
18716 (rs6000_init_dwarf_reg_sizes_extra): Likewise.
18717 * doc/tm.texi: Update.
18719 2023-01-03 Florian Weimer <fweimer@redhat.com>
18722 2023-01-02 Florian Weimer <fweimer@redhat.com>
18724 * debug.h (dwarf_reg_sizes_constant): Declare.
18725 * dwarf2cfi.cc (dwarf_reg_sizes_constant): New function.
18727 2023-01-03 Siddhesh Poyarekar <siddhesh@gotplt.org>
18729 PR tree-optimization/105043
18730 * doc/extend.texi (Object Size Checking): Split out into two
18731 subsections and mention _FORTIFY_SOURCE.
18733 2023-01-03 Roger Sayle <roger@nextmovesoftware.com>
18735 * config/i386/i386-expand.cc (ix86_expand_int_movcc): Rewrite
18736 RTL expansion to allow condition (mask) to be shared/reused,
18737 by avoiding overwriting pseudos and adding REG_EQUAL notes.
18739 2023-01-03 Roger Sayle <roger@nextmovesoftware.com>
18742 * config/i386/i386-features.cc
18743 (general_scalar_chain::compute_convert_gain) <case PLUS>: Consider
18744 the gain/cost of converting a MEM operand.
18746 2023-01-03 Jakub Jelinek <jakub@redhat.com>
18748 PR middle-end/108264
18749 * expr.cc (store_expr): For stores into SUBREG_PROMOTED_* targets
18750 from source which doesn't have scalar integral mode first convert
18753 2023-01-03 Jakub Jelinek <jakub@redhat.com>
18755 PR rtl-optimization/108263
18756 * cfgrtl.cc (fixup_reorder_chain): Avoid trying to redirect
18759 2023-01-02 Alexander Monakov <amonakov@ispras.ru>
18762 * config/i386/lujiazui.md (lujiazui_div): New automaton.
18763 (lua_div): New unit.
18764 (lua_idiv_qi): Correct unit in the reservation.
18765 (lua_idiv_qi_load): Ditto.
18766 (lua_idiv_hi): Ditto.
18767 (lua_idiv_hi_load): Ditto.
18768 (lua_idiv_si): Ditto.
18769 (lua_idiv_si_load): Ditto.
18770 (lua_idiv_di): Ditto.
18771 (lua_idiv_di_load): Ditto.
18772 (lua_fdiv_SF): Ditto.
18773 (lua_fdiv_SF_load): Ditto.
18774 (lua_fdiv_DF): Ditto.
18775 (lua_fdiv_DF_load): Ditto.
18776 (lua_fdiv_XF): Ditto.
18777 (lua_fdiv_XF_load): Ditto.
18778 (lua_ssediv_SF): Ditto.
18779 (lua_ssediv_load_SF): Ditto.
18780 (lua_ssediv_V4SF): Ditto.
18781 (lua_ssediv_load_V4SF): Ditto.
18782 (lua_ssediv_V8SF): Ditto.
18783 (lua_ssediv_load_V8SF): Ditto.
18784 (lua_ssediv_SD): Ditto.
18785 (lua_ssediv_load_SD): Ditto.
18786 (lua_ssediv_V2DF): Ditto.
18787 (lua_ssediv_load_V2DF): Ditto.
18788 (lua_ssediv_V4DF): Ditto.
18789 (lua_ssediv_load_V4DF): Ditto.
18791 2023-01-02 Florian Weimer <fweimer@redhat.com>
18793 * debug.h (dwarf_reg_sizes_constant): Declare.
18794 * dwarf2cfi.cc (dwarf_reg_sizes_constant): New function.
18796 2023-01-02 Florian Weimer <fweimer@redhat.com>
18798 * dwarf2cfi.cc (init_return_column_size): Remove.
18799 (init_one_dwarf_reg_size): Adjust.
18800 (generate_dwarf_reg_sizes): New function. Extracted
18801 from expand_builtin_init_dwarf_reg_sizes.
18802 (expand_builtin_init_dwarf_reg_sizes): Call
18803 generate_dwarf_reg_sizes.
18804 * target.def (init_dwarf_reg_sizes_extra): Adjust
18806 * config/msp430/msp430.cc
18807 (msp430_init_dwarf_reg_sizes_extra): Adjust.
18808 * config/rs6000/rs6000.cc
18809 (rs6000_init_dwarf_reg_sizes_extra): Likewise.
18810 * doc/tm.texi: Update.
18812 2023-01-02 Jakub Jelinek <jakub@redhat.com>
18814 * gcc.cc (process_command): Update copyright notice dates.
18815 * gcov-dump.cc (print_version): Ditto.
18816 * gcov.cc (print_version): Ditto.
18817 * gcov-tool.cc (print_version): Ditto.
18818 * gengtype.cc (create_file): Ditto.
18819 * doc/cpp.texi: Bump @copying's copyright year.
18820 * doc/cppinternals.texi: Ditto.
18821 * doc/gcc.texi: Ditto.
18822 * doc/gccint.texi: Ditto.
18823 * doc/gcov.texi: Ditto.
18824 * doc/install.texi: Ditto.
18825 * doc/invoke.texi: Ditto.
18827 2023-01-01 Roger Sayle <roger@nextmovesoftware.com>
18828 Uroš Bizjak <ubizjak@gmail.com>
18830 * config/i386/i386.md (extendditi2): New define_insn.
18831 (define_split): Use DWIH mode iterator to treat new extendditi2
18832 identically to existing extendsidi2_1.
18833 (define_peephole2): Likewise.
18834 (define_peephole2): Likewise.
18835 (define_Split): Likewise.
18838 Copyright (C) 2023 Free Software Foundation, Inc.
18840 Copying and distribution of this file, with or without modification,
18841 are permitted in any medium without royalty provided the copyright
18842 notice and this notice are preserved.