c++: trait patch tweak
[official-gcc.git] / gcc / ChangeLog
blob68754648cbbe8c275c057feeced4f8c2ede0d6c6
1 2023-12-09  Jakub Jelinek  <jakub@redhat.com>
3         PR tree-optimization/112887
4         * tree-ssa-phiopt.cc (hoist_adjacent_loads): Change type of
5         param_align, param_align_bits, offset1, offset2, size2 and align1
6         variables from int or unsigned int to unsigned HOST_WIDE_INT.
8 2023-12-09  Costas Argyris  <costas.argyris@gmail.com>
9             Jakub Jelinek  <jakub@redhat.com>
11         PR driver/93019
12         * gcc.cc (driver::finalize): Call XDELETEVEC on mdswitches before
13         clearing it.
15 2023-12-09  Jakub Jelinek  <jakub@redhat.com>
17         * attribs.h (any_nonignored_attribute_p): Declare.
18         * attribs.cc (any_nonignored_attribute_p): New function.
20 2023-12-09  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
22         PR target/112932
23         * config/riscv/vector.md (movmisalign<mode>): Fix VLSmode bugs.
25 2023-12-09  Alexandre Oliva  <oliva@adacore.com>
27         * tree-emutls.cc: Include diagnostic-core.h.
28         (pass_ipa_lower_emutls::gate): Skip if errors were seen.
30 2023-12-08  Vladimir N. Makarov  <vmakarov@redhat.com>
32         PR rtl-optimization/112875
33         * lra-eliminations.cc (lra_eliminate_regs_1): Change an assert.
34         Add ASM_OPERANDS case.
36 2023-12-08  Robin Dapp  <rdapp@ventanamicro.com>
38         PR target/112109
39         * config/riscv/riscv-protos.h (expand_strcmp): Declare.
40         * config/riscv/riscv-string.cc (riscv_expand_strcmp): Add
41         strategy handling and delegation to scalar and vector expanders.
42         (expand_strcmp): Vectorized implementation.
43         * config/riscv/riscv.md: Add TARGET_VECTOR to strcmp and strncmp
44         expander.
46 2023-12-08  Robin Dapp  <rdapp@ventanamicro.com>
48         PR target/112109
49         * config/riscv/riscv-protos.h (expand_rawmemchr): Add strlen
50         parameter.
51         * config/riscv/riscv-string.cc (riscv_expand_strlen): Call
52         rawmemchr.
53         (expand_rawmemchr): Add strlen handling.
54         * config/riscv/riscv.md: Add TARGET_VECTOR to strlen expander.
56 2023-12-08  Richard Sandiford  <richard.sandiford@arm.com>
58         * config/aarch64/aarch64-early-ra.cc (allocno_info::chain_next):
59         Put into an enum with...
60         (allocno_info::last_def_point): ...new member variable.
61         (allocno_info::m_current_bb_point): New member variable.
62         (likely_operand_match_p): Switch based on get_constraint_type,
63         rather than based on rtx code.  Handle relaxed and special memory
64         constraints.
65         (early_ra::record_copy): Allow the source of an equivalence to be
66         assigned to more than once.
67         (early_ra::record_allocno_use): Invalidate any previous equivalence.
68         Initialize last_def_point.
69         (early_ra::record_allocno_def): Set last_def_point.
70         (early_ra::valid_equivalence_p): New function, split out from...
71         (early_ra::record_copy): ...here.  Use last_def_point to handle
72         source registers that have a later definition.
73         (make_pass_aarch64_early_ra): Fix comment.
75 2023-12-08  Richard Earnshaw  <rearnsha@arm.com>
77         Revert:
78         2023-12-07  Ezra Sitorus  <ezra.sitorus@arm.com>
80         * config/arm/arm_neon.h
81         (vld1q_u8_x2, vld1q_u16_x2, vld1q_u32_x2, vld1q_u64_x2): New.
82         (vld1q_s8_x2, vld1q_s16_x2, vld1q_s32_x2, vld1q_s64_x2): New.
83         (vld1q_f16_x2, vld1q_f32_x2): New.
84         (vld1q_p8_x2, vld1q_p16_x2, vld1q_p64_x2): New.
85         (vld1q_bf16_x2): New.
86         * config/arm/arm_neon_builtins.def (vld1_x2): New entries.
87         * config/arm/neon.md (vld1_x2<mode>): New.
89 2023-12-08  Richard Earnshaw  <rearnsha@arm.com>
91         Revert:
92         2023-12-07  Ezra Sitorus  <ezra.sitorus@arm.com>
94         * config/arm/arm_neon.h
95         (vld1q_u8_x3, vld1q_u16_x3, vld1q_u32_x3, vld1q_u64_x3): New.
96         (vld1q_s8_x3, vld1q_s16_x3, vld1q_s32_x3, vld1q_s64_x3): New.
97         (vld1q_f16_x3, vld1q_f32_x3): New.
98         (vld1q_p8_x3, vld1q_p16_x3, vld1q_p64_x3): New.
99         (vld1q_bf16_x3): New.
100         * config/arm/arm_neon_builtins.def (vld1_x3): New entries.
101         * config/arm/neon.md (vld1_x3<mode>): New.
103 2023-12-08  Richard Earnshaw  <rearnsha@arm.com>
105         Revert:
106         2023-12-07  Ezra Sitorus  <ezra.sitorus@arm.com>
108         * config/arm/arm_neon.h
109         (vld1q_u8_x4, vld1q_u16_x4, vld1q_u32_x4, vld1q_u64_x4): New.
110         (vld1q_s8_x4, vld1q_s16_x4, vld1q_s32_x4, vld1q_s64_x4): New.
111         (vld1q_f16_x4, vld1q_f32_x4): New.
112         (vld1q_p8_x4, vld1q_p16_x4, vld1q_p64_x4): New.
113         (vld1q_bf16_x4): New.
114         * config/arm/arm_neon_builtins.def (vld1_x4): New entries.
115         * config/arm/neon.md (vld1_x4<mode>): New.
117 2023-12-08  Richard Earnshaw  <rearnsha@arm.com>
119         Revert:
120         2023-12-07  Ezra Sitorus  <ezra.sitorus@arm.com>
122         * config/arm/arm_neon.h
123         (vst1_u8_x2, vst1_u16_x2, vst1_u32_x2, vst1_u64_x2): New.
124         (vst1_s8_x2, vst1_s16_x2, vst1_s32_x2, vst1_s64_x2): New.
125         (vst1_f16_x2, vst1_f32_x2): New.
126         (vst1_p8_x2, vst1_p16_x2, vst1_p64_x2): New.
127         (vst1_bf16_x2): New.
128         * config/arm/arm_neon_builtins.def (vst1_x2): New entries.
129         * config/arm/neon.md (vst1_x2<mode>): New.
131 2023-12-08  Richard Earnshaw  <rearnsha@arm.com>
133         Revert:
134         2023-12-07  Ezra Sitorus  <ezra.sitorus@arm.com>
136         * config/arm/arm_neon.h
137         (vst1_u8_x3, vst1_u16_x3, vst1_u32_x3, vst1_u64_x3): New.
138         (vst1_s8_x3, vst1_s16_x3, vst1_s32_x3, vst1_s64_x3): New.
139         (vst1_f16_x3, vst1_f32_x3): New.
140         (vst1_p8_x3, vst1_p16_x3, vst1_p64_x3): New.
141         (vst1_bf16_x3): New.
142         * config/arm/arm_neon_builtins.def (vst1_x3): New entries.
143         * config/arm/neon.md (vst1_x3<mode>): New.
145 2023-12-08  Richard Earnshaw  <rearnsha@arm.com>
147         Revert:
148         2023-12-07  Ezra Sitorus  <ezra.sitorus@arm.com>
150         * config/arm/arm_neon.h
151         (vst1_u8_x4, vst1_u16_x4, vst1_u32_x4, vst1_u64_x4): New.
152         (vst1_s8_x4, vst1_s16_x4, vst1_s32_x4, vst1_s64_x4): New.
153         (vst1_f16_x4, vst1_f32_x4): New.
154         (vst1_p8_x4, vst1_p16_x4, vst1_p64_x4): New.
155         (vst1_bf16_x4): New.
156         * config/arm/arm_neon_builtins.def (vst1_x4): New entries.
157         * config/arm/neon.md (vst1_x4<mode>): New.
159 2023-12-08  Richard Earnshaw  <rearnsha@arm.com>
161         Revert:
162         2023-12-07  Ezra Sitorus  <ezra.sitorus@arm.com>
164         * config/arm/arm_neon.h
165         (vst1q_u8_x2, vst1q_u16_x2, vst1q_u32_x2, vst1q_u64_x2): New.
166         (vst1q_s8_x2, vst1q_s16_x2, vst1q_s32_x2, vst1q_s64_x2): New.
167         (vst1q_f16_x2, vst1q_f32_x2): New.
168         (vst1q_p8_x2, vst1q_p16_x2, vst1q_p64_x2): New.
169         (vst1q_bf16_x2): New.
170         * config/arm/arm_neon_builtins.def (vst1q_x2): New entries.
171         * config/arm/neon.md
172         (neon_vst1<VMEMX2_q>_x2<VDQX:mode>): Updated from
173         neon_vst1_x2<mode>.
174         * config/arm/iterators.md (VMEMX2): New mode iterator.
175         (VMEMX2_q): New mode attribute.
177 2023-12-08  Richard Earnshaw  <rearnsha@arm.com>
179         Revert:
180         2023-12-07  Ezra Sitorus  <ezra.sitorus@arm.com>
182         * config/arm/arm_neon.h
183         (vst1q_u8_x3, vst1q_u16_x3, vst1q_u32_x3, vst1q_u64_x3): New.
184         (vst1q_s8_x3, vst1q_s16_x3, vst1q_s32_x3, vst1q_s64_x3): New.
185         (vst1q_f16_x3, vst1q_f32_x3): New.
186         (vst1q_p8_x3, vst1q_p16_x3, vst1q_p64_x3): New.
187         (vst1q_bf16_x3): New.
188         * config/arm/arm_neon_builtins.def (vst1q_x3): New entries.
189         * config/arm/neon.md (neon_vst1q_x3<mode>): New.
191 2023-12-08  Richard Earnshaw  <rearnsha@arm.com>
193         Revert:
194         2023-12-07  Ezra Sitorus  <ezra.sitorus@arm.com>
196         * config/arm/arm_neon.h
197         (vst1q_u8_x4, vst1q_u16_x4, vst1q_u32_x4, vst1q_u64_x4): New.
198         (vst1q_s8_x4, vst1q_s16_x4, vst1q_s32_x4, vst1q_s64_x4): New.
199         (vst1q_f16_x4, vst1q_f32_x4): New.
200         (vst1q_p8_x4, vst1q_p16_x4, vst1q_p64_x4): New.
201         (vst1q_bf16_x4): New.
202         * config/arm/arm_neon_builtins.def (vst1q_x4): New entries.
203         * config/arm/neon.md (neon_vst1q_x4<mode>): New.
205 2023-12-08  Richard Earnshaw  <rearnsha@arm.com>
207         Revert:
208         2023-12-07  Ezra Sitorus  <ezra.sitorus@arm.com>
210         * config/arm/arm_neon.h
211         (vld1_u8_x2, vld1_u16_x2, vld1_u32_x2, vld1_u64_x2): New
212         (vld1_s8_x2, vld1_s16_x2, vld1_s32_x2, vld1_s64_x2): New.
213         (vld1_f16_x2, vld1_f32_x2): New.
214         (vld1_p8_x2, vld1_p16_x2, vld1_p64_x2): New.
215         (vld1_bf16_x2): New.
216         (vld1q_types_x2): Updated to use vld1q_x2 from
217         arm_neon_builtins.def
218         * config/arm/arm_neon_builtins.def
219         (vld1_x2): Updated entries.
220         (vld1q_x2): New entries, but comes from the old vld1_x2
221         * config/arm/neon.md
222         (neon_vld1<VMEMX2_q>_x2<VDQX:mode>): Updated
223         from neon_vld1_x2<mode>.
225 2023-12-08  Richard Earnshaw  <rearnsha@arm.com>
227         Revert:
228         2023-12-07  Ezra Sitorus  <ezra.sitorus@arm.com>
230         * config/arm/arm_neon.h
231         (vld1_u8_x3, vld1_u16_x3, vld1_u32_x3, vld1_u64_x3): New
232         (vld1_s8_x3, vld1_s16_x3, vld1_s32_x3, vld1_s64_x3): New.
233         (vld1_f16_x3, vld1_f32_x3): New.
234         (vld1_p8_x3, vld1_p16_x3, vld1_p64_x3): New.
235         (vld1_bf16_x3): New.
236         (vld1q_types_x3): Updated to use vld1q_x3 from
237         arm_neon_builtins.def
238         * config/arm/arm_neon_builtins.def
239         (vld1_x3): Updated entries.
240         (vld1q_x3): New entries, but comes from the old vld1_x2
241         * config/arm/neon.md (neon_vld1q_x3<mode>): Updated from
242         neon_vld1_x3<mode>.
244 2023-12-08  Richard Earnshaw  <rearnsha@arm.com>
246         Revert:
247         2023-12-07  Ezra Sitorus  <ezra.sitorus@arm.com>
249         * config/arm/arm_neon.h
250         (vld1_u8_x4, vld1_u16_x4, vld1_u32_x4, vld1_u64_x4): New
251         (vld1_s8_x4, vld1_s16_x4, vld1_s32_x4, vld1_s64_x4): New.
252         (vld1_f16_x4, vld1_f32_x4): New.
253         (vld1_p8_x4, vld1_p16_x4, vld1_p64_x4): New.
254         (vld1_bf16_x4): New.
255         (vld1q_types_x4): Updated to use vld1q_x4
256         from arm_neon_builtins.def
257         * config/arm/arm_neon_builtins.def
258         (vld1_x4): Updated entries.
259         (vld1q_x4): New entries, but comes from the old vld1_x2
260         * config/arm/neon.md (neon_vld1q_x4<mode>):
261         Updated from neon_vld1_x4<mode>.
263 2023-12-08  Tobias Burnus  <tobias@codesourcery.com>
265         * builtin-types.def (BT_FN_PTR_PTR_SIZE_PTRMODE_PTRMODE): New.
266         * omp-builtins.def (BUILT_IN_GOMP_REALLOC): New.
267         * builtins.cc (builtin_fnspec): Handle it.
268         * gimple-ssa-warn-access.cc (fndecl_alloc_p,
269         matching_alloc_calls_p): Likewise.
270         * gimple.cc (nonfreeing_call_p): Likewise.
271         * predict.cc (expr_expected_value_1): Likewise.
272         * tree-ssa-ccp.cc (evaluate_stmt): Likewise.
273         * tree.cc (fndecl_dealloc_argno): Likewise.
275 2023-12-08  Richard Biener  <rguenther@suse.de>
277         PR tree-optimization/112909
278         * tree-ssa-uninit.cc (find_uninit_use): Look through a
279         single level of SSA name copies with single use.
281 2023-12-08  Jiahao Xu  <xujiahao@loongson.cn>
283         * config/loongarch/loongarch.cc (loongarch_try_expand_lsx_vshuf_const): Use
284         simplify_gen_subreg instead of gen_rtx_SUBREG.
285         (loongarch_expand_vec_perm_const_2): Ditto.
286         (loongarch_expand_vec_cond_expr): Ditto.
288 2023-12-08  Jiahao Xu  <xujiahao@loongson.cn>
290         * config/loongarch/loongarch.cc (loongarch_vector_costs::determine_suggested_unroll_factor):
291         If m_has_recip is true, uf return 1.
292         (loongarch_vector_costs::add_stmt_cost): Detect the use of approximate instruction sequence.
294 2023-12-08  Jiahao Xu  <xujiahao@loongson.cn>
296         * config/loongarch/genopts/loongarch.opt.in (recip_mask): New variable.
297         (-mrecip, -mrecip): New options.
298         * config/loongarch/lasx.md (div<mode>3): New expander.
299         (*div<mode>3): Rename.
300         (sqrt<mode>2): New expander.
301         (*sqrt<mode>2): Rename.
302         (rsqrt<mode>2): New expander.
303         * config/loongarch/loongarch-protos.h (loongarch_emit_swrsqrtsf): New prototype.
304         (loongarch_emit_swdivsf): Ditto.
305         * config/loongarch/loongarch.cc (loongarch_option_override_internal): Set
306         recip_mask for -mrecip and -mrecip= options.
307         (loongarch_emit_swrsqrtsf): New function.
308         (loongarch_emit_swdivsf): Ditto.
309         * config/loongarch/loongarch.h (RECIP_MASK_NONE, RECIP_MASK_DIV, RECIP_MASK_SQRT
310         RECIP_MASK_RSQRT, RECIP_MASK_VEC_DIV, RECIP_MASK_VEC_SQRT, RECIP_MASK_VEC_RSQRT
311         RECIP_MASK_ALL): New bitmasks.
312         (TARGET_RECIP_DIV, TARGET_RECIP_SQRT, TARGET_RECIP_RSQRT, TARGET_RECIP_VEC_DIV
313         TARGET_RECIP_VEC_SQRT, TARGET_RECIP_VEC_RSQRT): New tests.
314         * config/loongarch/loongarch.md (sqrt<mode>2): New expander.
315         (*sqrt<mode>2): Rename.
316         (rsqrt<mode>2): New expander.
317         * config/loongarch/loongarch.opt (recip_mask): New variable.
318         (-mrecip, -mrecip): New options.
319         * config/loongarch/lsx.md (div<mode>3): New expander.
320         (*div<mode>3): Rename.
321         (sqrt<mode>2): New expander.
322         (*sqrt<mode>2): Rename.
323         (rsqrt<mode>2): New expander.
324         * config/loongarch/predicates.md (reg_or_vecotr_1_operand): New predicate.
325         * doc/invoke.texi (LoongArch Options): Document new options.
327 2023-12-08  Jiahao Xu  <xujiahao@loongson.cn>
329         * config/loongarch/lasx.md (lasx_xvfrecip_<flasxfmt>): Renamed to ..
330         (recip<mode>3): .. this.
331         * config/loongarch/loongarch-builtins.cc (CODE_FOR_lsx_vfrecip_d): Redefine
332         to new pattern name.
333         (CODE_FOR_lsx_vfrecip_s): Ditto.
334         (CODE_FOR_lasx_xvfrecip_d): Ditto.
335         (CODE_FOR_lasx_xvfrecip_s): Ditto.
336         (loongarch_expand_builtin_direct): For the vector recip instructions, construct a
337         temporary parameter const1_vector.
338         * config/loongarch/lsx.md (lsx_vfrecip_<flsxfmt>): Renamed to ..
339         (recip<mode>3): .. this.
340         * config/loongarch/predicates.md (const_vector_1_operand): New predicate.
342 2023-12-08  Jiahao Xu  <xujiahao@loongson.cn>
344         * config/loongarch/lasx.md (lasx_xvfrsqrt_<flasxfmt>): Renamed to ..
345         (rsqrt<mode>2): .. this.
346         * config/loongarch/loongarch-builtins.cc
347         (CODE_FOR_lsx_vfrsqrt_d): Redefine to standard pattern name.
348         (CODE_FOR_lsx_vfrsqrt_s): Ditto.
349         (CODE_FOR_lasx_xvfrsqrt_d): Ditto.
350         (CODE_FOR_lasx_xvfrsqrt_s): Ditto.
351         * config/loongarch/loongarch.cc (use_rsqrt_p): New function.
352         (loongarch_optab_supported_p): Ditto.
353         (TARGET_OPTAB_SUPPORTED_P): New hook.
354         * config/loongarch/loongarch.md (*rsqrt<mode>a): Remove.
355         (*rsqrt<mode>2): New insn pattern.
356         (*rsqrt<mode>b): Remove.
357         * config/loongarch/lsx.md (lsx_vfrsqrt_<flsxfmt>): Renamed to ..
358         (rsqrt<mode>2): .. this.
360 2023-12-08  Jiahao Xu  <xujiahao@loongson.cn>
362         * config/loongarch/genopts/isa-evolution.in (fecipe): Add.
363         * config/loongarch/larchintrin.h (__frecipe_s): New intrinsic.
364         (__frecipe_d): Ditto.
365         (__frsqrte_s): Ditto.
366         (__frsqrte_d): Ditto.
367         * config/loongarch/lasx.md (lasx_xvfrecipe_<flasxfmt>): New insn pattern.
368         (lasx_xvfrsqrte_<flasxfmt>): Ditto.
369         * config/loongarch/lasxintrin.h (__lasx_xvfrecipe_s): New intrinsic.
370         (__lasx_xvfrecipe_d): Ditto.
371         (__lasx_xvfrsqrte_s): Ditto.
372         (__lasx_xvfrsqrte_d): Ditto.
373         * config/loongarch/loongarch-builtins.cc (AVAIL_ALL): Add predicates.
374         (LSX_EXT_BUILTIN): New macro.
375         (LASX_EXT_BUILTIN): Ditto.
376         * config/loongarch/loongarch-cpucfg-map.h: Regenerate.
377         * config/loongarch/loongarch-c.cc: Add builtin macro "__loongarch_frecipe".
378         * config/loongarch/loongarch-def.cc: Regenerate.
379         * config/loongarch/loongarch-str.h (OPTSTR_FRECIPE): Regenerate.
380         * config/loongarch/loongarch.cc (loongarch_asm_code_end): Dump status for TARGET_FRECIPE.
381         * config/loongarch/loongarch.md (loongarch_frecipe_<fmt>): New insn pattern.
382         (loongarch_frsqrte_<fmt>): Ditto.
383         * config/loongarch/loongarch.opt: Regenerate.
384         * config/loongarch/lsx.md (lsx_vfrecipe_<flsxfmt>): New insn pattern.
385         (lsx_vfrsqrte_<flsxfmt>): Ditto.
386         * config/loongarch/lsxintrin.h (__lsx_vfrecipe_s): New intrinsic.
387         (__lsx_vfrecipe_d): Ditto.
388         (__lsx_vfrsqrte_s): Ditto.
389         (__lsx_vfrsqrte_d): Ditto.
390         * doc/extend.texi: Add documentation for LoongArch new builtins and intrinsics.
392 2023-12-08  Richard Biener  <rguenther@suse.de>
394         * tree-outof-ssa.cc (rewrite_out_of_ssa): Dump GIMPLE once only,
395         after final IL adjustments.
397 2023-12-08  Pan Li  <pan2.li@intel.com>
399         * config/riscv/vector-iterators.md: Replace RVVM2SI to RVVM2SF
400         for mode attr V_F2DI_CONVERT_BRIDGE.
402 2023-12-08  Jiahao Xu  <xujiahao@loongson.cn>
404         * config/loongarch/lasx.md (xorsign<mode>3): New expander.
405         * config/loongarch/loongarch.cc (loongarch_can_change_mode_class): Allow
406         conversion between LSX vector mode and scalar fp mode.
407         * config/loongarch/loongarch.md (@xorsign<mode>3): New expander.
408         * config/loongarch/lsx.md (@xorsign<mode>3): Ditto.
410 2023-12-08  Jakub Jelinek  <jakub@redhat.com>
412         PR tree-optimization/112902
413         * gimple-lower-bitint.cc (gimple_lower_bitint): For a narrowing
414         or same precision cast don't set SSA_NAME_VERSION in m_names only
415         if use_stmt is mergeable_op or fall through into the check that
416         use is a store or rhs1 is not mergeable or other reasons prevent
417         merging.
419 2023-12-08  Jakub Jelinek  <jakub@redhat.com>
421         PR tree-optimization/112901
422         * vr-values.cc
423         (simplify_using_ranges::simplify_float_conversion_using_ranges):
424         Return false if rhs1 has BITINT_TYPE type with BLKmode TYPE_MODE.
426 2023-12-08  Jakub Jelinek  <jakub@redhat.com>
428         PR middle-end/112411
429         * haifa-sched.cc (extend_h_i_d): Use 3U instead of 3 in
430         3 * get_max_uid () / 2 calculation.
432 2023-12-08  Lulu Cheng  <chenglulu@loongson.cn>
434         * config/loongarch/genopts/loongarch-strings: Delete STR_ISA_BASE_LA64V110.
435         * config/loongarch/genopts/loongarch.opt.in: Likewise.
436         * config/loongarch/loongarch-cpu.cc (ISA_BASE_LA64V110_FEATURES): Delete macro.
437         (fill_native_cpu_config): Define a new variable hw_isa_evolution record the
438         extended instruction set support read from cpucfg.
439         * config/loongarch/loongarch-def.cc: Set evolution at initialization.
440         * config/loongarch/loongarch-def.h (ISA_BASE_LA64V100): Delete.
441         (ISA_BASE_LA64V110): Likewise.
442         (N_ISA_BASE_TYPES): Likewise.
443         (defined): Likewise.
444         * config/loongarch/loongarch-opts.cc: Likewise.
445         * config/loongarch/loongarch-opts.h (TARGET_64BIT): Likewise.
446         (ISA_BASE_IS_LA64V110): Likewise.
447         * config/loongarch/loongarch-str.h (STR_ISA_BASE_LA64V110): Likewise.
448         * config/loongarch/loongarch.opt: Regenerate.
450 2023-12-08  Xi Ruoyao  <xry111@xry111.site>
452         * config/loongarch/loongarch-def.h: Remove extern "C".
453         (loongarch_isa_base_strings): Declare as loongarch_def_array
454         instead of plain array.
455         (loongarch_isa_ext_strings): Likewise.
456         (loongarch_abi_base_strings): Likewise.
457         (loongarch_abi_ext_strings): Likewise.
458         (loongarch_cmodel_strings): Likewise.
459         (loongarch_cpu_strings): Likewise.
460         (loongarch_cpu_default_isa): Likewise.
461         (loongarch_cpu_issue_rate): Likewise.
462         (loongarch_cpu_multipass_dfa_lookahead): Likewise.
463         (loongarch_cpu_cache): Likewise.
464         (loongarch_cpu_align): Likewise.
465         (loongarch_cpu_rtx_cost_data): Likewise.
466         (loongarch_isa): Add a constructor and field setter functions.
467         * config/loongarch/loongarch-opts.h (loongarch-defs.h): Do not
468         include for target libraries.
469         * config/loongarch/loongarch-opts.cc: Comment code that doesn't
470         run and causes compilation errors.
471         * config/loongarch/loongarch-tune.h (LOONGARCH_TUNE_H): Likewise.
472         (struct loongarch_rtx_cost_data): Likewise.
473         (struct loongarch_cache): Likewise.
474         (struct loongarch_align): Likewise.
475         * config/loongarch/t-loongarch: Compile loongarch-def.cc with the
476         C++ compiler.
477         * config/loongarch/loongarch-def-array.h: New file for a
478         std:array like data structure with position setter function.
479         * config/loongarch/loongarch-def.c: Rename to ...
480         * config/loongarch/loongarch-def.cc: ... here.
481         (loongarch_cpu_strings): Define as loongarch_def_array instead
482         of plain array.
483         (loongarch_cpu_default_isa): Likewise.
484         (loongarch_cpu_cache): Likewise.
485         (loongarch_cpu_align): Likewise.
486         (loongarch_cpu_rtx_cost_data): Likewise.
487         (loongarch_cpu_issue_rate): Likewise.
488         (loongarch_cpu_multipass_dfa_lookahead): Likewise.
489         (loongarch_isa_base_strings): Likewise.
490         (loongarch_isa_ext_strings): Likewise.
491         (loongarch_abi_base_strings): Likewise.
492         (loongarch_abi_ext_strings): Likewise.
493         (loongarch_cmodel_strings): Likewise.
494         (abi_minimal_isa): Likewise.
495         (loongarch_rtx_cost_optimize_size): Use field setter functions
496         instead of designated initializers.
497         (loongarch_rtx_cost_data): Implement default constructor.
499 2023-12-08  Jakub Jelinek  <jakub@redhat.com>
501         PR middle-end/112411
502         * params.opt (-param=min-nondebug-insn-uid=): Add
503         IntegerRange(0, 1073741824).
504         * lra.cc (check_and_expand_insn_recog_data): Use 3U rather than 3
505         in * 3 / 2 computation and if the result is smaller or equal to
506         index, use index + 1.
508 2023-12-08  Haochen Jiang  <haochen.jiang@intel.com>
510         * config/i386/driver-i386.cc (host_detect_local_cpu):
511         Do not append "-mno-" for Xeon Phi ISAs.
512         * config/i386/i386-options.cc (ix86_option_override_internal):
513         Emit a warning for KNL/KNM targets.
514         * config/i386/i386.opt: Emit a warning for Xeon Phi ISAs.
516 2023-12-08  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
518         * config/riscv/riscv-vector-costs.cc (costs::better_main_loop_than_p):
519         Remove redundant check.
521 2023-12-08  Hao Liu  <hliu@os.amperecomputing.com>
523         PR tree-optimization/112774
524         * tree-pretty-print.cc: if nonwrapping flag is set, chrec will be
525         printed with additional <nw> info.
526         * tree-scalar-evolution.cc: add record_nonwrapping_chrec and
527         nonwrapping_chrec_p to set and check the new flag respectively.
528         * tree-scalar-evolution.h: Likewise.
529         * tree-ssa-loop-niter.cc (idx_infer_loop_bounds,
530         infer_loop_bounds_from_pointer_arith, infer_loop_bounds_from_signedness,
531         scev_probably_wraps_p): call record_nonwrapping_chrec before
532         record_nonwrapping_iv, call nonwrapping_chrec_p to check the flag is
533         set and return false from scev_probably_wraps_p.
534         * tree-vect-loop.cc (vect_analyze_loop): call
535         free_numbers_of_iterations_estimates explicitly.
536         * tree-core.h: document the nothrow_flag usage in CHREC_NOWRAP
537         * tree.h: add CHREC_NOWRAP(NODE), base.nothrow_flag is used to
538         represent the nonwrapping info.
540 2023-12-08  Fei Gao  <gaofei@eswincomputing.com>
542         * ifcvt.cc (noce_try_cond_zero_arith): New function.
543         (noce_emit_czero, get_base_reg): Likewise.
544         (noce_cond_zero_binary_op_supported): Likewise.
545         (noce_bbs_ok_for_cond_zero_arith): Likewise.
546         (noce_process_if_block): Use noce_try_cond_zero_arith.
547         Co-authored-by: Xiao Zeng<zengxiao@eswincomputing.com>
549 2023-12-07  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
551         * config/riscv/riscv-protos.h (expand_vec_series): Adapt function.
552         * config/riscv/riscv-v.cc (rvv_builder::double_steps_npatterns_p): New function.
553         (expand_vec_series): Adapt function.
554         (expand_const_vector): Support new interleave vector with different step.
556 2023-12-07  Richard Sandiford  <richard.sandiford@arm.com>
558         PR rtl-optimization/106694
559         PR rtl-optimization/109078
560         PR rtl-optimization/109391
561         * config.gcc: Add aarch64-early-ra.o for AArch64 targets.
562         * config/aarch64/t-aarch64 (aarch64-early-ra.o): New rule.
563         * config/aarch64/aarch64-opts.h (aarch64_early_ra_scope): New enum.
564         * config/aarch64/aarch64.opt (mearly_ra): New option.
565         * doc/invoke.texi: Document it.
566         * common/config/aarch64/aarch64-common.cc
567         (aarch_option_optimization_table): Use -mearly-ra=strided by
568         default for -O2 and above.
569         * config/aarch64/aarch64-passes.def (pass_aarch64_early_ra): New pass.
570         * config/aarch64/aarch64-protos.h (aarch64_strided_registers_p)
571         (make_pass_aarch64_early_ra): Declare.
572         * config/aarch64/aarch64-sme.md (@aarch64_sme_lut<LUTI_BITS><mode>):
573         Add a stride_type attribute.
574         (@aarch64_sme_lut<LUTI_BITS><mode>_strided2): New pattern.
575         (@aarch64_sme_lut<LUTI_BITS><mode>_strided4): Likewise.
576         * config/aarch64/aarch64-sve-builtins-base.cc (svld1_impl::expand)
577         (svldnt1_impl::expand, svst1_impl::expand, svstn1_impl::expand): Handle
578         new way of defining multi-register loads and stores.
579         * config/aarch64/aarch64-sve.md (@aarch64_ld1<SVE_FULLx24:mode>)
580         (@aarch64_ldnt1<SVE_FULLx24:mode>, @aarch64_st1<SVE_FULLx24:mode>)
581         (@aarch64_stnt1<SVE_FULLx24:mode>): Delete.
582         * config/aarch64/aarch64-sve2.md (@aarch64_<LD1_COUNT:optab><mode>)
583         (@aarch64_<LD1_COUNT:optab><mode>_strided2): New patterns.
584         (@aarch64_<LD1_COUNT:optab><mode>_strided4): Likewise.
585         (@aarch64_<ST1_COUNT:optab><mode>): Likewise.
586         (@aarch64_<ST1_COUNT:optab><mode>_strided2): Likewise.
587         (@aarch64_<ST1_COUNT:optab><mode>_strided4): Likewise.
588         * config/aarch64/aarch64.cc (aarch64_strided_registers_p): New
589         function.
590         * config/aarch64/aarch64.md (UNSPEC_LD1_SVE_COUNT): Delete.
591         (UNSPEC_ST1_SVE_COUNT, UNSPEC_LDNT1_SVE_COUNT): Likewise.
592         (UNSPEC_STNT1_SVE_COUNT): Likewise.
593         (stride_type): New attribute.
594         * config/aarch64/constraints.md (Uwd, Uwt): New constraints.
595         * config/aarch64/iterators.md (UNSPEC_LD1_COUNT, UNSPEC_LDNT1_COUNT)
596         (UNSPEC_ST1_COUNT, UNSPEC_STNT1_COUNT): New unspecs.
597         (optab): Handle them.
598         (LD1_COUNT, ST1_COUNT): New iterators.
599         * config/aarch64/aarch64-early-ra.cc: New file.
601 2023-12-07  Ezra Sitorus  <ezra.sitorus@arm.com>
603         * config/arm/arm_neon.h
604         (vld1_u8_x4, vld1_u16_x4, vld1_u32_x4, vld1_u64_x4): New
605         (vld1_s8_x4, vld1_s16_x4, vld1_s32_x4, vld1_s64_x4): New.
606         (vld1_f16_x4, vld1_f32_x4): New.
607         (vld1_p8_x4, vld1_p16_x4, vld1_p64_x4): New.
608         (vld1_bf16_x4): New.
609         (vld1q_types_x4): Updated to use vld1q_x4
610         from arm_neon_builtins.def
611         * config/arm/arm_neon_builtins.def
612         (vld1_x4): Updated entries.
613         (vld1q_x4): New entries, but comes from the old vld1_x2
614         * config/arm/neon.md (neon_vld1q_x4<mode>):
615         Updated from neon_vld1_x4<mode>.
617 2023-12-07  Ezra Sitorus  <ezra.sitorus@arm.com>
619         * config/arm/arm_neon.h
620         (vld1_u8_x3, vld1_u16_x3, vld1_u32_x3, vld1_u64_x3): New
621         (vld1_s8_x3, vld1_s16_x3, vld1_s32_x3, vld1_s64_x3): New.
622         (vld1_f16_x3, vld1_f32_x3): New.
623         (vld1_p8_x3, vld1_p16_x3, vld1_p64_x3): New.
624         (vld1_bf16_x3): New.
625         (vld1q_types_x3): Updated to use vld1q_x3 from
626         arm_neon_builtins.def
627         * config/arm/arm_neon_builtins.def
628         (vld1_x3): Updated entries.
629         (vld1q_x3): New entries, but comes from the old vld1_x2
630         * config/arm/neon.md (neon_vld1q_x3<mode>): Updated from
631         neon_vld1_x3<mode>.
633 2023-12-07  Ezra Sitorus  <ezra.sitorus@arm.com>
635         * config/arm/arm_neon.h
636         (vld1_u8_x2, vld1_u16_x2, vld1_u32_x2, vld1_u64_x2): New
637         (vld1_s8_x2, vld1_s16_x2, vld1_s32_x2, vld1_s64_x2): New.
638         (vld1_f16_x2, vld1_f32_x2): New.
639         (vld1_p8_x2, vld1_p16_x2, vld1_p64_x2): New.
640         (vld1_bf16_x2): New.
641         (vld1q_types_x2): Updated to use vld1q_x2 from
642         arm_neon_builtins.def
643         * config/arm/arm_neon_builtins.def
644         (vld1_x2): Updated entries.
645         (vld1q_x2): New entries, but comes from the old vld1_x2
646         * config/arm/neon.md
647         (neon_vld1<VMEMX2_q>_x2<VDQX:mode>): Updated
648         from neon_vld1_x2<mode>.
650 2023-12-07  Ezra Sitorus  <ezra.sitorus@arm.com>
652         * config/arm/arm_neon.h
653         (vst1q_u8_x4, vst1q_u16_x4, vst1q_u32_x4, vst1q_u64_x4): New.
654         (vst1q_s8_x4, vst1q_s16_x4, vst1q_s32_x4, vst1q_s64_x4): New.
655         (vst1q_f16_x4, vst1q_f32_x4): New.
656         (vst1q_p8_x4, vst1q_p16_x4, vst1q_p64_x4): New.
657         (vst1q_bf16_x4): New.
658         * config/arm/arm_neon_builtins.def (vst1q_x4): New entries.
659         * config/arm/neon.md (neon_vst1q_x4<mode>): New.
661 2023-12-07  Ezra Sitorus  <ezra.sitorus@arm.com>
663         * config/arm/arm_neon.h
664         (vst1q_u8_x3, vst1q_u16_x3, vst1q_u32_x3, vst1q_u64_x3): New.
665         (vst1q_s8_x3, vst1q_s16_x3, vst1q_s32_x3, vst1q_s64_x3): New.
666         (vst1q_f16_x3, vst1q_f32_x3): New.
667         (vst1q_p8_x3, vst1q_p16_x3, vst1q_p64_x3): New.
668         (vst1q_bf16_x3): New.
669         * config/arm/arm_neon_builtins.def (vst1q_x3): New entries.
670         * config/arm/neon.md (neon_vst1q_x3<mode>): New.
672 2023-12-07  Ezra Sitorus  <ezra.sitorus@arm.com>
674         * config/arm/arm_neon.h
675         (vst1q_u8_x2, vst1q_u16_x2, vst1q_u32_x2, vst1q_u64_x2): New.
676         (vst1q_s8_x2, vst1q_s16_x2, vst1q_s32_x2, vst1q_s64_x2): New.
677         (vst1q_f16_x2, vst1q_f32_x2): New.
678         (vst1q_p8_x2, vst1q_p16_x2, vst1q_p64_x2): New.
679         (vst1q_bf16_x2): New.
680         * config/arm/arm_neon_builtins.def (vst1q_x2): New entries.
681         * config/arm/neon.md
682         (neon_vst1<VMEMX2_q>_x2<VDQX:mode>): Updated from
683         neon_vst1_x2<mode>.
684         * config/arm/iterators.md (VMEMX2): New mode iterator.
685         (VMEMX2_q): New mode attribute.
687 2023-12-07  Ezra Sitorus  <ezra.sitorus@arm.com>
689         * config/arm/arm_neon.h
690         (vst1_u8_x4, vst1_u16_x4, vst1_u32_x4, vst1_u64_x4): New.
691         (vst1_s8_x4, vst1_s16_x4, vst1_s32_x4, vst1_s64_x4): New.
692         (vst1_f16_x4, vst1_f32_x4): New.
693         (vst1_p8_x4, vst1_p16_x4, vst1_p64_x4): New.
694         (vst1_bf16_x4): New.
695         * config/arm/arm_neon_builtins.def (vst1_x4): New entries.
696         * config/arm/neon.md (vst1_x4<mode>): New.
698 2023-12-07  Ezra Sitorus  <ezra.sitorus@arm.com>
700         * config/arm/arm_neon.h
701         (vst1_u8_x3, vst1_u16_x3, vst1_u32_x3, vst1_u64_x3): New.
702         (vst1_s8_x3, vst1_s16_x3, vst1_s32_x3, vst1_s64_x3): New.
703         (vst1_f16_x3, vst1_f32_x3): New.
704         (vst1_p8_x3, vst1_p16_x3, vst1_p64_x3): New.
705         (vst1_bf16_x3): New.
706         * config/arm/arm_neon_builtins.def (vst1_x3): New entries.
707         * config/arm/neon.md (vst1_x3<mode>): New.
709 2023-12-07  Ezra Sitorus  <ezra.sitorus@arm.com>
711         * config/arm/arm_neon.h
712         (vst1_u8_x2, vst1_u16_x2, vst1_u32_x2, vst1_u64_x2): New.
713         (vst1_s8_x2, vst1_s16_x2, vst1_s32_x2, vst1_s64_x2): New.
714         (vst1_f16_x2, vst1_f32_x2): New.
715         (vst1_p8_x2, vst1_p16_x2, vst1_p64_x2): New.
716         (vst1_bf16_x2): New.
717         * config/arm/arm_neon_builtins.def (vst1_x2): New entries.
718         * config/arm/neon.md (vst1_x2<mode>): New.
720 2023-12-07  Ezra Sitorus  <ezra.sitorus@arm.com>
722         * config/arm/arm_neon.h
723         (vld1q_u8_x4, vld1q_u16_x4, vld1q_u32_x4, vld1q_u64_x4): New.
724         (vld1q_s8_x4, vld1q_s16_x4, vld1q_s32_x4, vld1q_s64_x4): New.
725         (vld1q_f16_x4, vld1q_f32_x4): New.
726         (vld1q_p8_x4, vld1q_p16_x4, vld1q_p64_x4): New.
727         (vld1q_bf16_x4): New.
728         * config/arm/arm_neon_builtins.def (vld1_x4): New entries.
729         * config/arm/neon.md (vld1_x4<mode>): New.
731 2023-12-07  Ezra Sitorus  <ezra.sitorus@arm.com>
733         * config/arm/arm_neon.h
734         (vld1q_u8_x3, vld1q_u16_x3, vld1q_u32_x3, vld1q_u64_x3): New.
735         (vld1q_s8_x3, vld1q_s16_x3, vld1q_s32_x3, vld1q_s64_x3): New.
736         (vld1q_f16_x3, vld1q_f32_x3): New.
737         (vld1q_p8_x3, vld1q_p16_x3, vld1q_p64_x3): New.
738         (vld1q_bf16_x3): New.
739         * config/arm/arm_neon_builtins.def (vld1_x3): New entries.
740         * config/arm/neon.md (vld1_x3<mode>): New.
742 2023-12-07  Ezra Sitorus  <ezra.sitorus@arm.com>
744         * config/arm/arm_neon.h
745         (vld1q_u8_x2, vld1q_u16_x2, vld1q_u32_x2, vld1q_u64_x2): New.
746         (vld1q_s8_x2, vld1q_s16_x2, vld1q_s32_x2, vld1q_s64_x2): New.
747         (vld1q_f16_x2, vld1q_f32_x2): New.
748         (vld1q_p8_x2, vld1q_p16_x2, vld1q_p64_x2): New.
749         (vld1q_bf16_x2): New.
750         * config/arm/arm_neon_builtins.def (vld1_x2): New entries.
751         * config/arm/neon.md (vld1_x2<mode>): New.
753 2023-12-07  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
755         * config/s390/vecintrin.h (vec_step): Expand vec_step to
756         __builtin_s390_vec_step.
758 2023-12-07  Alexandre Oliva  <oliva@adacore.com>
760         * target.def (have_strub_support_for): New hook.
761         * doc/tm.texi.in: Document it.
762         * doc/tm.texi: Rebuild.
763         * ipa-strub.cc: Include target.h.
764         (strub_target_support_p): New.
765         (can_strub_p): Call it.  Test for no flag_split_stack.
766         (pass_ipa_strub::adjust_at_calls_call): Check for target
767         support.
768         * config/nvptx/nvptx.cc (TARGET_HAVE_STRUB_SUPPORT_FOR):
769         Disable.
770         * doc/sourcebuild.texi (strub): Document new effective
771         target.
773 2023-12-07  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
775         * config/riscv/riscv-avlprop.cc (simplify_replace_avl): New function.
776         (simplify_replace_vlmax_avl): Fix bug.
777         * config/riscv/t-riscv: Add a new include file.
779 2023-12-07  Christoph Müllner  <christoph.muellner@vrull.eu>
781         * config/riscv/thead.cc (th_memidx_classify_address_index):
782         Require TARGET_XTHEADMEMIDX for FP modes.
783         * config/riscv/thead.md: Require TARGET_XTHEADMEMIDX for all
784         XTheadFMemIdx pattern.
786 2023-12-07  Jakub Jelinek  <jakub@redhat.com>
788         PR middle-end/112881
789         * expr.cc (count_type_elements): Handle BITINT_TYPE like INTEGER_TYPE.
791 2023-12-07  Jakub Jelinek  <jakub@redhat.com>
793         PR tree-optimization/112880
794         * tree-ssa-dce.cc (maybe_optimize_arith_overflow): Use
795         unsigned_type_for instead of conditionally calling
796         build_nonstandard_integer_type.
798 2023-12-07  Victor Do Nascimento  <victor.donascimento@arm.com>
800         * config/aarch64/arm_neon.h (vldap1_lane_u64): New.
801         (vldap1q_lane_u64): Likewise.
802         (vldap1_lane_s64): Likewise.
803         (vldap1q_lane_s64): Likewise.
804         (vldap1_lane_f64): Likewise.
805         (vldap1q_lane_f64): Likewise.
806         (vldap1_lane_p64): Likewise.
807         (vldap1q_lane_p64): Likewise.
808         (vstl1_lane_u64): Likewise.
809         (vstl1q_lane_u64): Likewise.
810         (vstl1_lane_s64): Likewise.
811         (vstl1q_lane_s64): Likewise.
812         (vstl1_lane_f64): Likewise.
813         (vstl1q_lane_f64): Likewise.
814         (vstl1_lane_p64): Likewise.
815         (vstl1q_lane_p64): Likewise.
817 2023-12-07  Victor Do Nascimento  <victor.donascimento@arm.com>
819         * config/aarch64/aarch64-simd-builtins.def
820         (vec_ldap1_lane): New.
821         (vec_stl1_lane): Likewise.
822         * config/aarch64/aarch64-simd.md
823         (aarch64_vec_stl1_lanes<mode>_lane<Vel>): New.
824         (aarch64_vec_stl1_lane<mode>): Likewise.
825         (aarch64_vec_ldap1_lanes<mode>_lane<Vel>): Likewise.
826         (aarch64_vec_ldap1_lane<mode>): Likewise.
827         * config/aarch64/aarch64.md (UNSPEC_LDAP1_LANE): New.
828         (UNSPEC_STL1_LANE): Likewise.
830 2023-12-07  Victor Do Nascimento  <victor.donascimento@arm.com>
832         * config/aarch64/iterators.md (V12DIF): New.
833         (V12DUP): Likewise.
834         (VEL): Add support for all V12DIF-associated modes.
835         (Vetype): Add support for V1DI and V1DF.
836         (Vel): Likewise.
838 2023-12-07  Victor Do Nascimento  <victor.donascimento@arm.com>
840         * config/aarch64/aarch64-option-extensions.def (rcpc3): New.
841         * config/aarch64/aarch64.h (AARCH64_ISA_RCPC3): Likewise.
842         (TARGET_RCPC3): Likewise.
843         * doc/invoke.texi (rcpc3): Document feature in AArch64 Options.
845 2023-12-07  Hongyu Wang  <hongyu.wang@intel.com>
847         * config/i386/i386-expand.cc (ix86_split_ashl_ndd): New
848         function to split NDD form lshift.
849         (ix86_split_rshift_ndd): Likewise for l/ashiftrt.
850         * config/i386/i386-protos.h (ix86_split_ashl_ndd): New
851         prototype.
852         (ix86_split_rshift_ndd): Likewise.
853         * config/i386/i386.md (ashl<mode>3_doubleword): Add NDD
854         alternative, call ndd split function when operands[0]
855         not equal to operands[1].
856         (define_split for doubleword lshift): Likewise.
857         (define_peephole for doubleword lshift): Likewise.
858         (<insn><mode>3_doubleword): Likewise for l/ashiftrt.
859         (define_split for doubleword l/ashiftrt): Likewise.
860         (define_peephole for doubleword l/ashiftrt): Likewise.
862 2023-12-07  Hongyu Wang  <hongyu.wang@intel.com>
864         * config/i386/i386.md (*mov<mode>cc_noc): Extend with new constraints
865         to support NDD.
866         (*movsicc_noc_zext): Likewise.
867         (*movsicc_noc_zext_1): Likewise.
868         (*movqicc_noc): Likewise.
870 2023-12-07  Hongyu Wang  <hongyu.wang@intel.com>
872         * config/i386/i386.md (x86_64_shld_ndd): New define_insn.
873         (x86_64_shld_ndd_1): Likewise.
874         (*x86_64_shld_ndd_2): Likewise.
875         (x86_shld_ndd): Likewise.
876         (x86_shld_ndd_1): Likewise.
877         (*x86_shld_ndd_2): Likewise.
878         (x86_64_shrd_ndd): Likewise.
879         (x86_64_shrd_ndd_1): Likewise.
880         (*x86_64_shrd_ndd_2): Likewise.
881         (x86_shrd_ndd): Likewise.
882         (x86_shrd_ndd_1): Likewise.
883         (*x86_shrd_ndd_2): Likewise.
884         (*x86_64_shld_shrd_1_nozext): Adjust codegen under TARGET_APX_NDD.
885         (*x86_shld_shrd_1_nozext): Likewise.
886         (*x86_64_shrd_shld_1_nozext): Likewise.
887         (*x86_shrd_shld_1_nozext): Likewise.
889 2023-12-07  Hongyu Wang  <hongyu.wang@intel.com>
891         * config/i386/i386.md (*<insn><mode>3_1): Extend with a new
892         alternative to support NDD for SI/DI rotate, and adjust output
893         template.
894         (*<insn>si3_1_zext): Likewise.
895         (*<insn><mode>3_1): Likewise for QI/HI modes.
896         (rcrsi2): Likewise, and use nonimmediate_operand for operands[1]
897         to accept memory input for NDD alternative.
898         (rcrdi2): Likewise.
900 2023-12-07  Hongyu Wang  <hongyu.wang@intel.com>
902         * config/i386/i386.md (ashr<mode>3_cvt): Extend with new
903         alternatives to support NDD, and adjust output templates.
904         (*ashr<mode>3_1): Likewise for SI/DI mode.
905         (*lshr<mode>3_1): Likewise.
906         (*<insn>si3_1_zext): Likewise.
907         (*ashr<mode>3_1): Likewise for QI/HI mode.
908         (*lshrqi3_1): Likewise.
909         (*lshrhi3_1): Likewise.
910         (<insn><mode>3_cmp): Likewise.
911         (*<insn><mode>3_cconly): Likewise.
912         (*ashrsi3_cvt_zext): Likewise, and use nonimmediate_operand for
913         operands[1] to accept memory input for NDD alternative.
914         (*highpartdisi2): Likewise.
915         (*<insn>si3_cmp_zext): Likewise.
916         (<insn><mode>3_carry): Likewise.
918 2023-12-07  Hongyu Wang  <hongyu.wang@intel.com>
920         * config/i386/i386.md (*ashl<mode>3_1): Extend with new
921         alternatives to support NDD, limit the new alternative to
922         generate sal only, and adjust output template for NDD.
923         (*ashlsi3_1_zext): Likewise.
924         (*ashlhi3_1): Likewise.
925         (*ashlqi3_1): Likewise.
926         (*ashl<mode>3_cmp): Likewise.
927         (*ashlsi3_cmp_zext): Likewise, and use nonimmediate_operand for
928         operands[1] to accept memory input for NDD alternative.
929         (*ashl<mode>3_cconly): Likewise.
930         (*ashl<dwi>3_doubleword_highpart): Adjust codegen for NDD.
932 2023-12-07  Kong Lingling  <lingling.kong@intel.com>
934         * config/i386/i386.md (<code><mode>3): Add new alternative for NDD
935         and adjust output templates.
936         (*<code><mode>_1): Likewise.
937         (*<code>qi_1): Likewise.
938         (*notxor<mode>_1): Likewise.
939         (*<code>si_1_zext): Likewise.
940         (*notxorqi_1): Likewise.
941         (*<code><mode>_2): Likewise.
942         (*<code>si_2_zext): Likewise.
943         (*<code>si_2_zext_imm): Likewise.
944         (*<code>si_1_zext_imm): Likewise, and use nonimmediate_operand for
945         operands[1] to accept memory input for NDD alternative.
946         (*one_cmplsi2_2_zext): Likewise.
947         (define_split for *one_cmplsi2_2_zext): Use nonimmediate_operand for
948         operands[3].
949         (*<code><dwi>3_doubleword): Add NDD constraints, adopt '&' to NDD dest
950         and emit move for optimized case if operands[0] != operands[1] or
951         operands[4] != operands[5].
952         (define_split for QI highpart OR/XOR): Prohibit splitter to split NDD
953         form OR/XOR insn to <any_logic:code>qi_ext<mode>_3.
954         (define_split for QI strict_lowpart optimization): Prohibit splitter to
955         split NDD form AND insn to *<code><mode>3_1_slp.
957 2023-12-07  Kong Lingling  <lingling.kong@intel.com>
959         * config/i386/i386.md (and<mode>3): Add NDD alternatives and adjust
960         output template.
961         (*anddi_1): Likewise.
962         (*and<mode>_1): Likewise.
963         (*andqi_1): Likewise.
964         (*andsi_1_zext): Likewise.
965         (*anddi_2): Likewise.
966         (*andsi_2_zext): Likewise.
967         (*andqi_2_maybe_si): Likewise.
968         (*and<mode>_2): Likewise.
969         (*and<dwi>3_doubleword): Add NDD alternative, adopt '&' to NDD dest and
970         emit move for optimized case if operands[0] not equal to operands[1].
971         (define_split for QI highpart AND): Prohibit splitter to split NDD
972         form AND insn to <any_logic:code>qi_ext<mode>_3.
973         (define_split for QI strict_lowpart optimization): Prohibit splitter to
974         split NDD form AND insn to *<code><mode>3_1_slp.
975         (define_split for zero_extend and optimization): Prohibit splitter to
976         split NDD form AND insn to zero_extend insn.
978 2023-12-07  Kong Lingling  <lingling.kong@intel.com>
980         * config/i386/i386.md (one_cmpl<mode>2): Add new constraints for NDD
981         and adjust output template.
982         (*one_cmpl<mode>2_1): Likewise.
983         (*one_cmplqi2_1): Likewise.
984         (*one_cmpl<dwi>2_doubleword): Likewise, and adopt '&' to NDD dest.
985         (*one_cmpl<mode>2_2): Likewise.
986         (*one_cmplsi2_1_zext): Likewise, and use nonimmediate_operand for
987         operands[1] to accept memory input for NDD alternative.
989 2023-12-07  Kong Lingling  <lingling.kong@intel.com>
991         * config/i386/i386-expand.cc (ix86_expand_unary_operator): Add use_ndd
992         parameter and adjust for NDD.
993         * config/i386/i386-protos.h: Add use_ndd parameter for
994         ix86_unary_operator_ok and ix86_expand_unary_operator.
995         * config/i386/i386.cc (ix86_unary_operator_ok): Add use_ndd parameter
996         and adjust for NDD.
997         * config/i386/i386.md (neg<mode>2): Add new constraint for NDD and
998         adjust output template.
999         (*neg<mode>_1): Likewise.
1000         (*neg<dwi>2_doubleword): Likewise and adopt '&' to NDD dest.
1001         (*neg<mode>_2): Likewise.
1002         (*neg<mode>_ccc_1): Likewise.
1003         (*neg<mode>_ccc_2): Likewise.
1004         (*negsi_1_zext): Likewise, and use nonimmediate_operand for operands[1]
1005         to accept memory input for NDD alternatives.
1006         (*negsi_2_zext): Likewise.
1008 2023-12-07  Kong Lingling  <lingling.kong@intel.com>
1010         * config/i386/i386.md (*sub<dwi>3_doubleword): Add new alternative for
1011         NDD, adopt '&' modifier to NDD dest and emit move when operands[0] not
1012         equal to operands[1].
1013         (*sub<dwi>3_doubleword_zext): Likewise.
1014         (*subv<dwi>4_doubleword): Likewise.
1015         (*subv<dwi>4_doubleword_1): Likewise.
1016         (*subv<mode>4_overflow_1): Add NDD alternatives and adjust output
1017         templates.
1018         (*subv<mode>4_overflow_2): Likewise.
1019         (@sub<mode>3_carry): Likewise.
1020         (*addsi3_carry_zext_0r): Likewise, and use nonimmediate_operand for
1021         operands[1] to accept memory input for NDD alternative.
1022         (*subsi3_carry_zext): Likewise.
1023         (subborrow<mode>): Parse TARGET_APX_NDD to ix86_binary_operator_ok.
1024         (subborrow<mode>_0): Likewise.
1025         (*sub<mode>3_eq): Likewise.
1026         (*sub<mode>3_ne): Likewise.
1027         (*sub<mode>3_eq_1): Likewise.
1029 2023-12-07  Kong Lingling  <lingling.kong@intel.com>
1031         * config/i386/i386-expand.cc (ix86_fixup_binary_operands_no_copy):
1032         Add use_ndd parameter and parse it.
1033         * config/i386/i386-protos.h (ix86_fixup_binary_operands_no_copy):
1034         Change define.
1035         * config/i386/i386.md (sub<mode>3): Add new alternatives for NDD
1036         and adjust output templates.
1037         (*sub<mode>_1): Likewise.
1038         (*sub<mode>_2): Likewise.
1039         (subv<mode>4): Likewise.
1040         (*subv<mode>4): Likewise.
1041         (subv<mode>4_1): Likewise.
1042         (usubv<mode>4): Likewise.
1043         (*sub<mode>_3): Likewise.
1044         (*subsi_1_zext): Likewise, and use nonimmediate_operand for operands[1]
1045         to accept memory input for NDD alternatives.
1046         (*subsi_2_zext): Likewise.
1047         (*subsi_3_zext): Likewise.
1049 2023-12-07  Kong Lingling  <lingling.kong@intel.com>
1051         * config/i386/i386.md (*add<dwi>3_doubleword): Add ndd alternatives,
1052         adopt '&' to ndd dest and move operands[1] to operands[0] when they are
1053         not equal.
1054         (*add<dwi>3_doubleword_cc_overflow_1): Likewise.
1055         (*addv<dwi>4_doubleword): Likewise.
1056         (*addv<dwi>4_doubleword_1): Likewise.
1057         (*add<dwi>3_doubleword_zext): Likewise.
1058         (addv<mode>4_overflow_1): Add ndd alternatives.
1059         (*addv<mode>4_overflow_2): Likewise.
1060         (@add<mode>3_carry): Likewise.
1061         (*add<mode>3_carry_0): Likewise.
1062         (*addsi3_carry_zext): Likewise.
1063         (addcarry<mode>): Likewise.
1064         (addcarry<mode>_0): Likewise.
1065         (*addcarry<mode>_1): Likewise.
1066         (*add<mode>3_eq): Likewise.
1067         (*add<mode>3_ne): Likewise.
1068         (*addsi3_carry_zext_0): Likewise, and use nonimmediate_operand for
1069         operands[1] to accept memory input for NDD alternative.
1071 2023-12-07  Hongyu Wang  <hongyu.wang@intel.com>
1073         * config/i386/constraints.md (je): New constraint.
1074         * config/i386/i386-protos.h (x86_poff_operand_p): New function to
1075         check any *POFF constant in operand.
1076         * config/i386/i386.cc (x86_poff_operand_p): New prototype.
1077         * config/i386/i386.md (*add<mode>_1): Split out je alternative for add.
1079 2023-12-07  Kong Lingling  <lingling.kong@intel.com>
1081         * config/i386/i386.md: (addsi_1_zext): Add new alternatives for
1082         NDD and adjust output templates.
1083         (*add<mode>_2): Likewise.
1084         (*addsi_2_zext): Likewise.
1085         (*add<mode>_3): Likewise.
1086         (*addsi_3_zext): Likewise.
1087         (*adddi_4): Likewise.
1088         (*add<mode>_4): Likewise.
1089         (*add<mode>_5): Likewise.
1090         (*addv<mode>4): Likewise.
1091         (*addv<mode>4_1): Likewise.
1092         (*add<mode>3_cconly_overflow_1): Likewise.
1093         (*add<mode>3_cc_overflow_1): Likewise.
1094         (*addsi3_zext_cc_overflow_1): Likewise.
1095         (*add<mode>3_cconly_overflow_2): Likewise.
1096         (*add<mode>3_cc_overflow_2): Likewise.
1097         (*addsi3_zext_cc_overflow_2): Likewise.
1099 2023-12-07  Kong Lingling  <lingling.kong@intel.com>
1101         * config/i386/i386-expand.cc (ix86_fixup_binary_operands): Add
1102         new use_ndd flag to check whether ndd can be used for this binop
1103         and adjust operand emit.
1104         (ix86_binary_operator_ok): Likewise.
1105         (ix86_expand_binary_operator): Likewise, and void postreload
1106         expand generate lea pattern when use_ndd is explicit parsed.
1107         * config/i386/i386-options.cc (ix86_option_override_internal):
1108         Prohibit apx subfeatures when not in 64bit mode.
1109         * config/i386/i386-protos.h (ix86_binary_operator_ok):
1110         Add use_ndd flag.
1111         (ix86_fixup_binary_operand): Likewise.
1112         (ix86_expand_binary_operand): Likewise.
1113         * config/i386/i386.md (*add<mode>_1): Extend with new alternatives
1114         to support NDD, and adjust output template.
1115         (*addhi_1): Likewise.
1116         (*addqi_1): Likewise.
1118 2023-12-07  David Malcolm  <dmalcolm@redhat.com>
1120         PR analyzer/103546
1121         PR analyzer/112850
1122         * doc/invoke.texi: Add -Wanalyzer-symbol-too-complex.
1124 2023-12-06  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1126         * config/riscv/riscv-vsetvl.cc (extract_single_source): new function.
1127         (pre_vsetvl::compute_lcm_local_properties): Fix ICE.
1129 2023-12-06  Victor Do Nascimento  <victor.donascimento@arm.com>
1131         * config/aarch64/aarch64-builtins.cc (AARCH64_RSR128): New
1132         `enum aarch64_builtins' value.
1133         (AARCH64_WSR128): Likewise.
1134         (aarch64_init_rwsr_builtins): Init `__builtin_aarch64_rsr128'
1135         and `__builtin_aarch64_wsr128' builtins.
1136         (aarch64_expand_rwsr_builtin): Extend function to handle
1137         `__builtin_aarch64_{rsr|wsr}128'.
1138         * config/aarch64/aarch64-protos.h (aarch64_retrieve_sysreg):
1139         Update function signature.
1140         * config/aarch64/aarch64.cc (F_REG_128): New.
1141         (aarch64_retrieve_sysreg): Add 128-bit register mode check.
1142         * config/aarch64/aarch64.md (UNSPEC_SYSREG_RTI): New.
1143         (UNSPEC_SYSREG_WTI): Likewise.
1144         (aarch64_read_sysregti): Likewise.
1145         (aarch64_write_sysregti): Likewise.
1146         * config/aarch64/arm_acle.h (__arm_rsr128): New.
1147         (__arm_wsr128): Likewise.
1149 2023-12-06  Victor Do Nascimento  <victor.donascimento@arm.com>
1151         * config/aarch64/aarch64-sys-regs.def: Copy from Binutils.
1153 2023-12-06  Victor Do Nascimento  <victor.donascimento@arm.com>
1155         * config/aarch64/aarch64-option-extensions.def (gcs): New.
1156         * config/aarch64/aarch64.h (AARCH64_ISA_GCS): New.
1157         (TARGET_THE):  Likewise.
1158         * doc/invoke.texi (AArch64 Options): Describe GCS.
1160 2023-12-06  Victor Do Nascimento  <victor.donascimento@arm.com>
1162         * config/aarch64/aarch64-c.cc (__ARM_FEATURE_SYSREG128): New.
1163         * config/aarch64/aarch64-arches.def (armv8.9-a): New.
1164         (armv9.4-a): Likewise.
1165         * config/aarch64/aarch64-option-extensions.def (d128): Likewise.
1166         (the): Likewise.
1167         * config/aarch64/aarch64.h (AARCH64_ISA_V9_4A): Likewise.
1168         (AARCH64_ISA_V8_9A): Likewise.
1169         (TARGET_ARMV9_4): Likewise.
1170         (AARCH64_ISA_D128): Likewise.
1171         (AARCH64_ISA_THE): Likewise.
1172         (TARGET_D128): Likewise.
1173         * doc/invoke.texi (AArch64 Options): Document new -march flags
1174         and extensions.
1176 2023-12-06  Eric Gallager  <egallager@gcc.gnu.org>
1178         * Makefile.in: Remove qmtest-related targets.
1180 2023-12-06  David Malcolm  <dmalcolm@redhat.com>
1182         * common.opt (fdiagnostics-json-formatting): New.
1183         * diagnostic-format-json.cc: Add "formatted" boolean
1184         to json_output_format and subclasses, and to the
1185         diagnostic_output_format_init_json_* functions.  Use it when
1186         printing JSON.
1187         * diagnostic-format-sarif.cc: Likewise for sarif_builder,
1188         sarif_output_format, and the various
1189         diagnostic_output_format_init_sarif_* functions.
1190         * diagnostic.cc (diagnostic_output_format_init): Add
1191         "json_formatting" boolean and pass on to the various cases.
1192         * diagnostic.h (diagnostic_output_format_init): Add
1193         "json_formatted" param.
1194         (diagnostic_output_format_init_json_stderr): Add "formatted" param
1195         (diagnostic_output_format_init_json_file): Likewise.
1196         (diagnostic_output_format_init_sarif_stderr): Likewise.
1197         (diagnostic_output_format_init_sarif_file): Likewise.
1198         (diagnostic_output_format_init_sarif_stream): Likewise.
1199         * doc/invoke.texi (-fdiagnostics-format=json): Remove discussion
1200         about JSON output needing formatting.
1201         (-fno-diagnostics-json-formatting): Add.
1202         * gcc.cc (driver_handle_option): Use
1203         opts->x_flag_diagnostics_json_formatting.
1204         * gcov.cc (generate_results): Pass "false" for new formatting
1205         option when printing json.
1206         * json.cc (value::dump): Add new "formatted" param.
1207         (object::print): Likewise, using it to add whitespace to format
1208         the JSON output.
1209         (array::print): Likewise.
1210         (float_number::print): Add new "formatted" param.
1211         (integer_number::print): Likewise.
1212         (string::print): Likewise.
1213         (literal::print): Likewise.
1214         (selftest::assert_print_eq): Add "formatted" param.
1215         (ASSERT_PRINT_EQ): Add "FORMATTED" param.
1216         (selftest::test_writing_objects): Test both formatted and
1217         unformatted printing.
1218         (selftest::test_writing_arrays): Likewise.
1219         (selftest::test_writing_float_numbers): Update for new param of
1220         ASSERT_PRINT_EQ.
1221         (selftest::test_writing_integer_numbers): Likewise.
1222         (selftest::test_writing_strings): Likewise.
1223         (selftest::test_writing_literals): Likewise.
1224         (selftest::test_formatting): New.
1225         (selftest::json_cc_tests): Call it.
1226         * json.h (value::print): Add "formatted" param.
1227         (value::dump): Likewise.
1228         (object::print): Likewise.
1229         (array::print): Likewise.
1230         (float_number::print): Likewise.
1231         (integer_number::print): Likewise.
1232         (string::print): Likewise.
1233         (literal::print): Likewise.
1234         * optinfo-emit-json.cc (optrecord_json_writer::write): Pass
1235         "false" for new formatting option when printing json.
1236         (selftest::test_building_json_from_dump_calls): Likewise.
1237         * opts.cc (common_handle_option): Use
1238         opts->x_flag_diagnostics_json_formatting.
1240 2023-12-06  David Malcolm  <dmalcolm@redhat.com>
1242         * diagnostic-format-json.cc (on_begin_diagnostic): Convert param
1243         to const reference.
1244         (on_end_diagnostic): Likewise.
1245         (json_output_format::on_end_diagnostic): Likewise.
1246         * diagnostic-format-sarif.cc
1247         (sarif_invocation::add_notification_for_ice): Likewise.
1248         (sarif_result::on_nested_diagnostic): Likewise.
1249         (sarif_ice_notification::sarif_ice_notification): Likewise.
1250         (sarif_builder::end_diagnostic): Likewise.
1251         (sarif_builder::make_result_object): Likewise.
1252         (make_reporting_descriptor_object_for_warning): Likewise.
1253         (sarif_builder::make_locations_arr): Likewise.
1254         (sarif_output_format::on_begin_diagnostic): Likewise.
1255         (sarif_output_format::on_end_diagnostic): Likewise.
1256         * diagnostic.cc (default_diagnostic_starter): Make diagnostic_info
1257         param const.
1258         (default_diagnostic_finalizer): Likewise.
1259         (diagnostic_context::report_diagnostic): Pass diagnostic by
1260         reference to on_{begin,end}_diagnostic.
1261         (diagnostic_text_output_format::on_begin_diagnostic): Convert
1262         param to const reference.
1263         (diagnostic_text_output_format::on_end_diagnostic): Likewise.
1264         * diagnostic.h (diagnostic_starter_fn): Make diagnostic_info param
1265         const.
1266         (diagnostic_finalizer_fn): Likeewise.
1267         (diagnostic_output_format::on_begin_diagnostic): Convert param to
1268         const reference.
1269         (diagnostic_output_format::on_end_diagnostic): Likewise.
1270         (diagnostic_text_output_format::on_begin_diagnostic): Likewise.
1271         (diagnostic_text_output_format::on_end_diagnostic): Likewise.
1272         (default_diagnostic_starter): Make diagnostic_info param const.
1273         (default_diagnostic_finalizer): Likewise.
1274         * langhooks-def.h (lhd_print_error_function): Make diagnostic_info
1275         param const.
1276         * langhooks.cc (lhd_print_error_function): Likewise.
1277         * langhooks.h (lang_hooks::print_error_function): Likewise.
1278         * tree-diagnostic.cc (diagnostic_report_current_function):
1279         Likewise.
1280         (default_tree_diagnostic_starter): Likewise.
1281         (virt_loc_aware_diagnostic_finalizer): Likewise.
1282         * tree-diagnostic.h (diagnostic_report_current_function):
1283         Likewise.
1284         (virt_loc_aware_diagnostic_finalizer): Likewise.
1286 2023-12-06  Andrew Stubbs  <ams@codesourcery.com>
1288         * config/gcn/gcn-builtins.def (DISPATCH_PTR): New built-in.
1289         * config/gcn/gcn.cc (gcn_init_machine_status): Disable global
1290         addressing.
1291         (gcn_expand_builtin_1): Implement GCN_BUILTIN_DISPATCH_PTR.
1293 2023-12-06  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1295         PR target/112855
1296         * config/riscv/riscv-vsetvl.cc
1297         (pre_vsetvl::compute_lcm_local_properties): Fix transparant LCM data.
1298         (pre_vsetvl::earliest_fuse_vsetvl_info): Disable earliest fusion for unrelated edge.
1300 2023-12-06  Marek Polacek  <polacek@redhat.com>
1302         PR target/112762
1303         * config/linux.h: Redefine TARGET_FORTIFY_SOURCE_DEFAULT_LEVEL for
1304         glibc only.
1306 2023-12-06  Victor Do Nascimento  <victor.donascimento@arm.com>
1308         * config/aarch64/aarch64.cc
1309         (aarch64_test_sysreg_encoding_clashes): New.
1310         (aarch64_run_selftests): add call to
1311         aarch64_test_sysreg_encoding_clashes selftest.
1313 2023-12-06  Victor Do Nascimento  <victor.donascimento@arm.com>
1315         * config/aarch64/aarch64-builtins.cc (aarch64_general_check_builtin_call):
1316         New.
1317         * config/aarch64/aarch64-c.cc (aarch64_check_builtin_call):
1318         Add `aarch64_general_check_builtin_call' call.
1319         * config/aarch64/aarch64-protos.h (aarch64_general_check_builtin_call):
1320         New.
1322 2023-12-06  Victor Do Nascimento  <victor.donascimento@arm.com>
1324         * config/aarch64/aarch64-builtins.cc (enum aarch64_builtins):
1325         Add enums for new builtins.
1326         (aarch64_init_rwsr_builtins): New.
1327         (aarch64_general_init_builtins): Call aarch64_init_rwsr_builtins.
1328         (aarch64_expand_rwsr_builtin):  New.
1329         (aarch64_general_expand_builtin): Call aarch64_general_expand_builtin.
1330         * config/aarch64/aarch64.md (read_sysregdi): New insn_and_split.
1331         (write_sysregdi): Likewise.
1332         * config/aarch64/arm_acle.h (__arm_rsr): New.
1333         (__arm_rsrp): Likewise.
1334         (__arm_rsr64): Likewise.
1335         (__arm_rsrf): Likewise.
1336         (__arm_rsrf64): Likewise.
1337         (__arm_wsr): Likewise.
1338         (__arm_wsrp): Likewise.
1339         (__arm_wsr64): Likewise.
1340         (__arm_wsrf): Likewise.
1341         (__arm_wsrf64): Likewise.
1343 2023-12-06  Victor Do Nascimento  <victor.donascimento@arm.com>
1345         * config/aarch64/aarch64-protos.h (aarch64_valid_sysreg_name_p): New.
1346         (aarch64_retrieve_sysreg): Likewise.
1347         * config/aarch64/aarch64.cc (is_implem_def_reg): Likewise.
1348         (aarch64_valid_sysreg_name_p): Likewise.
1349         (aarch64_retrieve_sysreg): Likewise.
1350         (aarch64_register_sysreg): Likewise.
1351         (aarch64_init_sysregs): Likewise.
1352         (aarch64_lookup_sysreg_map): Likewise.
1353         * config/aarch64/predicates.md (aarch64_sysreg_string): New.
1355 2023-12-06  Victor Do Nascimento  <victor.donascimento@arm.com>
1357         * config/aarch64/aarch64.cc (sysreg_t): New.
1358         (aarch64_sysregs): Likewise.
1359         (AARCH64_FEATURE): Likewise.
1360         (AARCH64_FEATURES): Likewise.
1361         (AARCH64_NO_FEATURES): Likewise.
1362         * config/aarch64/aarch64.h (AARCH64_ISA_V8A): Add missing
1363         ISA flag.
1364         (AARCH64_ISA_V8_1A): Likewise.
1365         (AARCH64_ISA_V8_7A): Likewise.
1366         (AARCH64_ISA_V8_8A): Likewise.
1367         (AARCH64_NO_FEATURES): Likewise.
1368         (AARCH64_FL_RAS): New ISA flag alias.
1369         (AARCH64_FL_LOR): Likewise.
1370         (AARCH64_FL_PAN): Likewise.
1371         (AARCH64_FL_AMU): Likewise.
1372         (AARCH64_FL_SCXTNUM): Likewise.
1373         (AARCH64_FL_ID_PFR2): Likewise.
1374         (F_DEPRECATED): New.
1375         (F_REG_READ): Likewise.
1376         (F_REG_WRITE): Likewise.
1377         (F_ARCHEXT): Likewise.
1378         (F_REG_ALIAS): Likewise.
1380 2023-12-06  Victor Do Nascimento  <victor.donascimento@arm.com>
1382         * config/aarch64/aarch64-sys-regs.def: New.
1384 2023-12-06  Robin Dapp  <rdapp@ventanamicro.com>
1386         PR target/112854
1387         PR target/112872
1388         * config/riscv/autovec.md (vec_init<mode>qi): New expander.
1390 2023-12-06  Jakub Jelinek  <jakub@redhat.com>
1392         PR rtl-optimization/112760
1393         * config/i386/i386-passes.def (pass_insert_vzeroupper): Insert
1394         after pass_postreload_cse rather than pass_reload.
1395         * config/i386/i386-features.cc (rest_of_handle_insert_vzeroupper):
1396         Adjust comment for it.
1398 2023-12-06  Jakub Jelinek  <jakub@redhat.com>
1400         PR tree-optimization/112809
1401         * gimple-lower-bitint.cc (bitint_large_huge::lower_mergeable_stmt): For
1402         separate_ext in kind == bitint_prec_huge mode if rem == 0, create for
1403         i == cnt - 1 the loop rather than using size_int (end).
1405 2023-12-06  Jakub Jelinek  <jakub@redhat.com>
1407         * gcc.cc (driver_handle_option): Add /* FALLTHROUGH */ comment
1408         between OPT_pie and OPT_r cases.
1410 2023-12-06  Tobias Burnus  <tobias@codesourcery.com>
1412         * tsystem.h (calloc, realloc): Declare when inhibit_libc.
1414 2023-12-06  Richard Biener  <rguenther@suse.de>
1416         PR tree-optimization/112843
1417         * tree-ssa-operands.cc (update_stmt_operands): Do not call
1418         update_stmt from ranger.
1419         * value-query.h (range_query::update_stmt): Remove.
1420         * gimple-range.h (gimple_ranger::update_stmt): Likewise.
1421         * gimple-range.cc (gimple_ranger::update_stmt): Likewise.
1423 2023-12-06  xuli  <xuli1@eswincomputing.com>
1425         * config/riscv/riscv.md: Remove.
1427 2023-12-06  Alexandre Oliva  <oliva@adacore.com>
1429         * Makefile.in (OBJS): Add ipa-strub.o.
1430         (GTFILES): Add ipa-strub.cc.
1431         * builtins.def (BUILT_IN_STACK_ADDRESS): New.
1432         (BUILT_IN___STRUB_ENTER): New.
1433         (BUILT_IN___STRUB_UPDATE): New.
1434         (BUILT_IN___STRUB_LEAVE): New.
1435         * builtins.cc: Include ipa-strub.h.
1436         (STACK_STOPS, STACK_UNSIGNED): Define.
1437         (expand_builtin_stack_address): New.
1438         (expand_builtin_strub_enter): New.
1439         (expand_builtin_strub_update): New.
1440         (expand_builtin_strub_leave): New.
1441         (expand_builtin): Call them.
1442         * common.opt (fstrub=*): New options.
1443         * doc/extend.texi (strub): New type attribute.
1444         (__builtin_stack_address): New function.
1445         (Stack Scrubbing): New section.
1446         * doc/invoke.texi (-fstrub=*): New options.
1447         (-fdump-ipa-*): New passes.
1448         * gengtype-lex.l: Ignore multi-line pp-directives.
1449         * ipa-inline.cc: Include ipa-strub.h.
1450         (can_inline_edge_p): Test strub_inlinable_to_p.
1451         * ipa-split.cc: Include ipa-strub.h.
1452         (execute_split_functions): Test strub_splittable_p.
1453         * ipa-strub.cc, ipa-strub.h: New.
1454         * passes.def: Add strub_mode and strub passes.
1455         * tree-cfg.cc (gimple_verify_flow_info): Note on debug stmts.
1456         * tree-pass.h (make_pass_ipa_strub_mode): Declare.
1457         (make_pass_ipa_strub): Declare.
1458         (make_pass_ipa_function_and_variable_visibility): Fix
1459         formatting.
1460         * tree-ssa-ccp.cc (optimize_stack_restore): Keep restores
1461         before strub leave.
1462         * attribs.cc: Include ipa-strub.h.
1463         (decl_attributes): Support applying attributes to function
1464         type, rather than pointer type, at handler's request.
1465         (comp_type_attributes): Combine strub_comptypes and target
1466         comp_type results.
1467         * doc/tm.texi.in (TARGET_STRUB_USE_DYNAMIC_ARRAY): New.
1468         (TARGET_STRUB_MAY_USE_MEMSET): New.
1469         * doc/tm.texi: Rebuilt.
1470         * cgraph.h (symtab_node::reset): Add preserve_comdat_group
1471         param, with a default.
1472         * cgraphunit.cc (symtab_node::reset): Use it.
1474 2023-12-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1476         PR target/112851
1477         PR target/112852
1478         * config/riscv/riscv-v.cc (vls_mode_valid_p): Block VLSmodes according
1479         TARGET_MAX_LMUL and BITS_PER_RISCV_VECTOR.
1481 2023-12-05  David Faust  <david.faust@oracle.com>
1483         PR debug/112849
1484         * btfout.cc (btf_collect_datasec): Avoid incorrectly creating an
1485         entry in a BTF_KIND_DATASEC record for extern variable decls without
1486         a known section.
1488 2023-12-05  Jakub Jelinek  <jakub@redhat.com>
1490         PR target/112606
1491         * config/rs6000/rs6000.md (copysign<mode>3): Change predicate
1492         of the last argument from gpc_reg_operand to any_operand.  If
1493         operands[2] is CONST_DOUBLE, emit abs or neg abs depending on
1494         its sign, otherwise if it doesn't satisfy gpc_reg_operand,
1495         force it to REG using copy_to_mode_reg.
1497 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
1499         * attribs.cc (handle_ignored_attributes_option): Add extra
1500         braces to work around PR 16333 in older compilers.
1501         * config/aarch64/aarch64.cc (aarch64_gnu_attribute_table): Likewise.
1502         (aarch64_arm_attribute_table): Likewise.
1503         * config/arm/arm.cc (arm_gnu_attribute_table): Likewise.
1504         * config/i386/i386-options.cc (ix86_gnu_attribute_table): Likewise.
1505         * config/ia64/ia64.cc (ia64_gnu_attribute_table): Likewise.
1506         * config/rs6000/rs6000.cc (rs6000_gnu_attribute_table): Likewise.
1507         * target-def.h (TARGET_GNU_ATTRIBUTES): Likewise.
1508         * genhooks.cc (emit_init_macros): Likewise, when emitting the
1509         instantiation of TARGET_ATTRIBUTE_TABLE.
1510         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Likewise, when
1511         instantiating LANG_HOOKS_ATTRIBUTE_TABLE.
1512         (LANG_HOOKS_ATTRIBUTE_TABLE): Define to be empty by default.
1513         * target.def (attribute_table): Likewise.
1515 2023-12-05  Richard Biener  <rguenther@suse.de>
1517         PR middle-end/112860
1518         * passes.cc (should_skip_pass_p): Do not skip ISEL.
1520 2023-12-05  Richard Biener  <rguenther@suse.de>
1522         PR sanitizer/111736
1523         * asan.cc (asan_protect_global): Do not protect globals
1524         in non-generic address-space.
1526 2023-12-05  Richard Biener  <rguenther@suse.de>
1528         PR ipa/92606
1529         * ipa-icf.cc (sem_variable::equals_wpa): Compare address-spaces.
1531 2023-12-05  Richard Biener  <rguenther@suse.de>
1533         PR middle-end/112830
1534         * gimplify.cc (gimplify_modify_expr): Avoid turning aggregate
1535         copy of non-generic address-spaces to memcpy.
1536         (gimplify_modify_expr_to_memcpy): Assert we are dealing with
1537         a copy inside the generic address-space.
1538         (gimplify_modify_expr_to_memset): Likewise.
1539         * tree-cfg.cc (verify_gimple_assign_single): Allow
1540         WITH_SIZE_EXPR as part of the RHS of an assignment.
1541         * builtins.cc (get_memory_address): Assert we are dealing
1542         with the generic address-space.
1543         * tree-ssa-dce.cc (ref_may_be_aliased): Handle WITH_SIZE_EXPR.
1545 2023-12-05  Richard Biener  <rguenther@suse.de>
1547         PR tree-optimization/109689
1548         PR tree-optimization/112856
1549         * cfgloopmanip.h (unloop_loops): Adjust API.
1550         * tree-ssa-loop-ivcanon.cc (unloop_loops): Take edges_to_remove
1551         as parameter.
1552         (canonicalize_induction_variables): Adjust.
1553         (tree_unroll_loops_completely): Likewise.
1554         * tree-ssa-loop-ch.cc (ch_base::copy_headers): Rewrite into
1555         LC SSA if we unlooped some loops and we are in LC SSA.
1557 2023-12-05  Jakub Jelinek  <jakub@redhat.com>
1559         PR target/112845
1560         * config/i386/i386.md (movabsq $(i32 << shift), r64 peephole2): FAIL
1561         if the new immediate is ix86_endbr_immediate_operand.
1563 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
1565         * config/aarch64/aarch64.h (TARGET_STREAMING_SME2): New macro.
1566         (P_ALIASES): Likewise.
1567         (REGISTER_NAMES): Add pn aliases of the predicate registers.
1568         (W8_W11_REGNUM_P): New macro.
1569         (W8_W11_REGS): New register class.
1570         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly.
1571         * config/aarch64/aarch64.cc (aarch64_print_operand): Add support
1572         for %K, which prints a predicate as a counter.  Handle tuples of
1573         predicates.
1574         (aarch64_regno_regclass): Handle W8_W11_REGS.
1575         (aarch64_class_max_nregs): Likewise.
1576         * config/aarch64/constraints.md (Uci, Uw2, Uw4): New constraints.
1577         (x, y): Move further up file.
1578         (Uph): Redefine as the high predicate registers, renaming the old
1579         constraint to...
1580         (Uih): ...this.
1581         * config/aarch64/predicates.md (const_0_to_7_operand): New predicate.
1582         (const_0_to_4_step_4_operand, const_0_to_6_step_2_operand): Likewise.
1583         (const_0_to_12_step_4_operand, const_0_to_14_step_2_operand): Likewise.
1584         (aarch64_simd_shift_imm_qi): Use const_0_to_7_operand.
1585         * config/aarch64/iterators.md (VNx16SI_ONLY, VNx8SI_ONLY)
1586         (VNx8DI_ONLY, SVE_FULL_BHSIx2, SVE_FULL_HF, SVE_FULL_SIx2_SDIx4)
1587         (SVE_FULL_BHS, SVE_FULLx24, SVE_DIx24, SVE_BHSx24, SVE_Ix24)
1588         (SVE_Fx24, SVE_SFx24, SME_ZA_BIx24, SME_ZA_BHIx124, SME_ZA_BHIx24)
1589         (SME_ZA_HFx124, SME_ZA_HFx24, SME_ZA_HIx124, SME_ZA_HIx24)
1590         (SME_ZA_SDIx24, SME_ZA_SDFx24): New mode iterators.
1591         (UNSPEC_REVD, UNSPEC_CNTP_C, UNSPEC_PEXT, UNSPEC_PEXTx2): New unspecs.
1592         (UNSPEC_PSEL, UNSPEC_PTRUE_C, UNSPEC_SQRSHR, UNSPEC_SQRSHRN)
1593         (UNSPEC_SQRSHRU, UNSPEC_SQRSHRUN, UNSPEC_UQRSHR, UNSPEC_UQRSHRN)
1594         (UNSPEC_UZP, UNSPEC_UZPQ, UNSPEC_ZIP, UNSPEC_ZIPQ, UNSPEC_BFMLSLB)
1595         (UNSPEC_BFMLSLT, UNSPEC_FCVTN, UNSPEC_FDOT, UNSPEC_SQCVT): Likewise.
1596         (UNSPEC_SQCVTN, UNSPEC_SQCVTU, UNSPEC_SQCVTUN, UNSPEC_UQCVT): Likewise.
1597         (UNSPEC_SME_ADD, UNSPEC_SME_ADD_WRITE, UNSPEC_SME_BMOPA): Likewise.
1598         (UNSPEC_SME_BMOPS, UNSPEC_SME_FADD, UNSPEC_SME_FDOT, UNSPEC_SME_FVDOT)
1599         (UNSPEC_SME_FMLA, UNSPEC_SME_FMLS, UNSPEC_SME_FSUB, UNSPEC_SME_READ)
1600         (UNSPEC_SME_SDOT, UNSPEC_SME_SVDOT, UNSPEC_SME_SMLA, UNSPEC_SME_SMLS)
1601         (UNSPEC_SME_SUB, UNSPEC_SME_SUB_WRITE, UNSPEC_SME_SUDOT): Likewise.
1602         (UNSPEC_SME_SUVDOT, UNSPEC_SME_UDOT, UNSPEC_SME_UVDOT): Likewise.
1603         (UNSPEC_SME_UMLA, UNSPEC_SME_UMLS, UNSPEC_SME_USDOT): Likewise.
1604         (UNSPEC_SME_USVDOT, UNSPEC_SME_WRITE): Likewise.
1605         (Vetype, VNARROW, V2XWIDE, Ventype, V_INT_EQUIV, v_int_equiv)
1606         (VSINGLE, vsingle, b): Add tuple modes.
1607         (v2xwide, za32_offset_range, za64_offset_range, za32_long)
1608         (za32_last_offset, vg_modifier, z_suffix, aligned_operand)
1609         (aligned_fpr): New mode attributes.
1610         (SVE_INT_BINARY_MULTI, SVE_INT_BINARY_SINGLE, SVE_INT_BINARY_MULTI)
1611         (SVE_FP_BINARY_MULTI): New int iterators.
1612         (SVE_BFLOAT_TERNARY_LONG): Add UNSPEC_BFMLSLB and UNSPEC_BFMLSLT.
1613         (SVE_BFLOAT_TERNARY_LONG_LANE): Likewise.
1614         (SVE_WHILE_ORDER, SVE2_INT_SHIFT_IMM_NARROWxN, SVE_QCVTxN)
1615         (SVE2_SFx24_UNARY, SVE2_x24_PERMUTE, SVE2_x24_PERMUTEQ)
1616         (UNSPEC_REVD_ONLY, SME2_INT_MOP, SME2_BMOP, SME_BINARY_SLICE_SDI)
1617         (SME_BINARY_SLICE_SDF, SME_BINARY_WRITE_SLICE_SDI, SME_INT_DOTPROD)
1618         (SME_INT_DOTPROD_LANE, SME_FP_DOTPROD, SME_FP_DOTPROD_LANE)
1619         (SME_INT_TERNARY_SLICE, SME_FP_TERNARY_SLICE, BHSD_BITS)
1620         (LUTI_BITS): New int iterators.
1621         (optab, sve_int_op): Handle the new unspecs.
1622         (sme_int_op, has_16bit_form): New int attributes.
1623         (bits_etype): Handle 64.
1624         * config/aarch64/aarch64.md (UNSPEC_LD1_SVE_COUNT): New unspec.
1625         (UNSPEC_ST1_SVE_COUNT, UNSPEC_LDNT1_SVE_COUNT): Likewise.
1626         (UNSPEC_STNT1_SVE_COUNT): Likewise.
1627         * config/aarch64/atomics.md (cas_short_expected_imm): Use Uhi
1628         rather than Uph for HImode immediates.
1629         * config/aarch64/aarch64-sve.md (@aarch64_ld1<SVE_FULLx24:mode>)
1630         (@aarch64_ldnt1<SVE_FULLx24:mode>, @aarch64_st1<SVE_FULLx24:mode>)
1631         (@aarch64_stnt1<SVE_FULLx24:mode>): New patterns.
1632         (@aarch64_<sur>dot_prod_lane<vsi2qi>): Extend to...
1633         (@aarch64_<sur>dot_prod_lane<SVE_FULL_SDI:mode><SVE_FULL_BHI:mode>)
1634         (@aarch64_<sur>dot_prod_lane<VNx4SI_ONLY:mode><VNx16QI_ONLY:mode>):
1635         ...these new patterns.
1636         (SVE_WHILE_B, SVE_WHILE_B_X2, SVE_WHILE_C): New constants.  Add
1637         SVE_WHILE_B to existing while patterns.
1638         * config/aarch64/aarch64-sve2.md (@aarch64_sve_ptrue_c<BHSD_BITS>)
1639         (@aarch64_sve_pext<BHSD_BITS>, @aarch64_sve_pext<BHSD_BITS>x2)
1640         (@aarch64_sve_psel<BHSD_BITS>, *aarch64_sve_psel<BHSD_BITS>_plus)
1641         (@aarch64_sve_cntp_c<BHSD_BITS>, <frint_pattern><mode>2)
1642         (<optab><mode>3, *<optab><mode>3, @aarch64_sve_single_<optab><mode>)
1643         (@aarch64_sve_<sve_int_op><mode>): New patterns.
1644         (@aarch64_sve_single_<sve_int_op><mode>, @aarch64_sve_<su>clamp<mode>)
1645         (*aarch64_sve_<su>clamp<mode>_x, @aarch64_sve_<su>clamp_single<mode>)
1646         (@aarch64_sve_fclamp<mode>, *aarch64_sve_fclamp<mode>_x)
1647         (@aarch64_sve_fclamp_single<mode>, <optab><mode><v2xwide>2)
1648         (@aarch64_sve_<sur>dotvnx4sivnx8hi): New patterns.
1649         (@aarch64_sve_<maxmin_uns_op><mode>): Likewise.
1650         (*aarch64_sve_<maxmin_uns_op><mode>): Likewise.
1651         (@aarch64_sve_single_<maxmin_uns_op><mode>): Likewise.
1652         (aarch64_sve_fdotvnx4sfvnx8hf): Likewise.
1653         (aarch64_fdot_prod_lanevnx4sfvnx8hf): Likewise.
1654         (@aarch64_sve_<optab><VNx16QI_ONLY:mode><VNx16SI_ONLY:mode>): Likewise.
1655         (@aarch64_sve_<optab><VNx8HI_ONLY:mode><VNx8SI_ONLY:mode>): Likewise.
1656         (@aarch64_sve_<optab><VNx8HI_ONLY:mode><VNx8DI_ONLY:mode>): Likewise.
1657         (truncvnx8sf<mode>2, @aarch64_sve_cvtn<mode>): Likewise.
1658         (<optab><v_int_equiv><mode>2, <optab><mode><v_int_equiv>2): Likewise.
1659         (@aarch64_sve_sel<mode>): Likewise.
1660         (@aarch64_sve_while<while_optab_cmp>_b<BHSD_BITS>_x2): Likewise.
1661         (@aarch64_sve_while<while_optab_cmp>_c<BHSD_BITS>): Likewise.
1662         (@aarch64_pred_<optab><mode>, @cond_<optab><mode>): Likewise.
1663         (@aarch64_sve_<optab><mode>): Likewise.
1664         * config/aarch64/aarch64-sme.md (@aarch64_sme_<optab><mode><mode>)
1665         (*aarch64_sme_<optab><mode><mode>_plus, @aarch64_sme_read<mode>)
1666         (*aarch64_sme_read<mode>_plus, @aarch64_sme_write<mode>): New patterns.
1667         (*aarch64_sme_write<mode>_plus aarch64_sme_zero_zt0): Likewise.
1668         (@aarch64_sme_<optab><mode>, *aarch64_sme_<optab><mode>_plus)
1669         (@aarch64_sme_single_<optab><mode>): Likewise.
1670         (*aarch64_sme_single_<optab><mode>_plus): Likewise.
1671         (@aarch64_sme_<optab><SME_ZA_SDI:mode><SME_ZA_BHIx24:mode>)
1672         (*aarch64_sme_<optab><SME_ZA_SDI:mode><SME_ZA_BHIx24:mode>_plus)
1673         (@aarch64_sme_single_<optab><SME_ZA_SDI:mode><SME_ZA_BHIx24:mode>)
1674         (*aarch64_sme_single_<optab><SME_ZA_SDI:mode><SME_ZA_BHIx24:mode>_plus)
1675         (@aarch64_sme_single_sudot<VNx4SI_ONLY:mode><SME_ZA_BIx24:mode>)
1676         (*aarch64_sme_single_sudot<VNx4SI_ONLY:mode><SME_ZA_BIx24:mode>_plus)
1677         (@aarch64_sme_lane_<optab><SME_ZA_SDI:mode><SME_ZA_BHIx24:mode>)
1678         (*aarch64_sme_lane_<optab><SME_ZA_SDI:mode><SME_ZA_BHIx24:mode>_plus)
1679         (@aarch64_sme_<optab><VNx4SI_ONLY:mode><SVE_FULL_BHI:mode>)
1680         (*aarch64_sme_<optab><VNx4SI_ONLY:mode><SVE_FULL_BHI:mode>_plus)
1681         (@aarch64_sme_<optab><VNx4SI_ONLY:mode><SME_ZA_BHIx24:mode>)
1682         (*aarch64_sme_<optab><VNx4SI_ONLY:mode><SME_ZA_BHIx24:mode>_plus)
1683         (@aarch64_sme_single_<optab><VNx4SI_ONLY:mode><SME_ZA_BHIx24:mode>)
1684         (*aarch64_sme_single_<optab><VNx4SI_ONLY:mode><SME_ZA_BHIx24:mode>_plus)
1685         (@aarch64_sme_lane_<optab><VNx4SI_ONLY:mode><SME_ZA_BHIx124:mode>)
1686         (*aarch64_sme_lane_<optab><VNx4SI_ONLY:mode><SME_ZA_BHIx124:mode>)
1687         (@aarch64_sme_<optab><VNx2DI_ONLY:mode><VNx8HI_ONLY:mode>)
1688         (*aarch64_sme_<optab><VNx2DI_ONLY:mode><VNx8HI_ONLY:mode>_plus)
1689         (@aarch64_sme_<optab><VNx2DI_ONLY:mode><SME_ZA_HIx24:mode>)
1690         (*aarch64_sme_<optab><VNx2DI_ONLY:mode><SME_ZA_HIx24:mode>_plus)
1691         (@aarch64_sme_single_<optab><VNx2DI_ONLY:mode><SME_ZA_HIx24:mode>)
1692         (*aarch64_sme_single_<optab><VNx2DI_ONLY:mode><SME_ZA_HIx24:mode>_plus)
1693         (@aarch64_sme_lane_<optab><VNx2DI_ONLY:mode><SME_ZA_HIx124:mode>)
1694         (*aarch64_sme_lane_<optab><VNx2DI_ONLY:mode><SME_ZA_HIx124:mode>)
1695         (@aarch64_sme_<optab><VNx4SI_ONLY:mode><VNx8HI_ONLY:mode>)
1696         (@aarch64_sme_<optab><VNx4SI_ONLY:mode><VNx4SI_ONLY:mode>)
1697         (@aarch64_sme_<optab><VNx4SI_ONLY:mode><SME_ZA_HFx24:mode>)
1698         (*aarch64_sme_<optab><VNx4SI_ONLY:mode><SME_ZA_HFx24:mode>_plus)
1699         (@aarch64_sme_single_<optab><VNx4SI_ONLY:mode><SME_ZA_HFx24:mode>)
1700         (*aarch64_sme_single_<optab><VNx4SI_ONLY:mode><SME_ZA_HFx24:mode>_plus)
1701         (@aarch64_sme_lane_<optab><VNx4SI_ONLY:mode><SME_ZA_HFx24:mode>)
1702         (*aarch64_sme_lane_<optab><VNx4SI_ONLY:mode><SME_ZA_HFx24:mode>_plus)
1703         (@aarch64_sme_<optab><SME_ZA_SDF_I:mode><SME_ZA_SDFx24:mode>)
1704         (*aarch64_sme_<optab><SME_ZA_SDF_I:mode><SME_ZA_SDFx24:mode>_plus)
1705         (@aarch64_sme_single_<optab><SME_ZA_SDF_I:mode><SME_ZA_SDFx24:mode>)
1706         (*aarch64_sme_single_<optab><SME_ZA_SDF_I:mode><SME_ZA_SDFx24:mode>_plus)
1707         (@aarch64_sme_lane_<optab><SME_ZA_SDF_I:mode><SME_ZA_SDFx24:mode>)
1708         (*aarch64_sme_lane_<optab><SME_ZA_SDF_I:mode><SME_ZA_SDFx24:mode>)
1709         (@aarch64_sme_<optab><VNx4SI_ONLY:mode><SVE_FULL_HF:mode>)
1710         (*aarch64_sme_<optab><VNx4SI_ONLY:mode><SVE_FULL_HF:mode>_plus)
1711         (@aarch64_sme_lane_<optab><VNx4SI_ONLY:mode><SME_ZA_HFx124:mode>)
1712         (*aarch64_sme_lane_<optab><VNx4SI_ONLY:mode><SME_ZA_HFx124:mode>)
1713         (@aarch64_sme_lut<LUTI_BITS><mode>): Likewise.
1714         (UNSPEC_SME_LUTI): New unspec.
1715         * config/aarch64/aarch64-sve-builtins.def (single): New mode suffix.
1716         (c8, c16, c32, c64): New type suffixes.
1717         (vg1x2, vg1x4, vg2, vg2x1, vg2x2, vg2x4, vg4, vg4x1, vg4x2)
1718         (vg4x4): New group suffixes.
1719         * config/aarch64/aarch64-sve-builtins.h (CP_READ_ZT0)
1720         (CP_WRITE_ZT0): New constants.
1721         (get_svbool_t): Delete.
1722         (function_resolver::report_mismatched_num_vectors): New member
1723         function.
1724         (function_resolver::resolve_conversion): Likewise.
1725         (function_resolver::infer_predicate_type): Likewise.
1726         (function_resolver::infer_64bit_scalar_integer_pair): Likewise.
1727         (function_resolver::require_matching_predicate_type): Likewise.
1728         (function_resolver::require_nonscalar_type): Likewise.
1729         (function_resolver::finish_opt_single_resolution): Likewise.
1730         (function_resolver::require_derived_vector_type): Add an
1731         expected_num_vectors parameter.
1732         (function_expander::map_to_rtx_codes): Add an extra parameter
1733         for unconditional FP unspecs.
1734         (function_instance::gp_type_index): New member function.
1735         (function_instance::gp_type): Likewise.
1736         (function_instance::gp_mode): Handle multi-vector operations.
1737         * config/aarch64/aarch64-sve-builtins.cc (TYPES_all_count)
1738         (TYPES_all_pred_count, TYPES_c, TYPES_bhs_data, TYPES_bhs_widen)
1739         (TYPES_hs_data, TYPES_cvt_h_s_float, TYPES_cvt_s_s, TYPES_qcvt_x2)
1740         (TYPES_qcvt_x4, TYPES_qrshr_x2, TYPES_qrshru_x2, TYPES_qrshr_x4)
1741         (TYPES_qrshru_x4, TYPES_while_x, TYPES_while_x_c, TYPES_s_narrow_fsu)
1742         (TYPES_za_s_b_signed, TYPES_za_s_b_unsigned, TYPES_za_s_b_integer)
1743         (TYPES_za_s_h_integer, TYPES_za_s_h_data, TYPES_za_s_unsigned)
1744         (TYPES_za_s_float, TYPES_za_s_data, TYPES_za_d_h_integer): New type
1745         macros.
1746         (groups_x2, groups_x12, groups_x4, groups_x24, groups_x124)
1747         (groups_vg1x2, groups_vg1x4, groups_vg1x24, groups_vg2, groups_vg4)
1748         (groups_vg24): New group arrays.
1749         (function_instance::reads_global_state_p): Handle CP_READ_ZT0.
1750         (function_instance::modifies_global_state_p): Handle CP_WRITE_ZT0.
1751         (add_shared_state_attribute): Handle zt0 state.
1752         (function_builder::add_overloaded_functions): Skip MODE_single
1753         for non-tuple groups.
1754         (function_resolver::report_mismatched_num_vectors): New function.
1755         (function_resolver::resolve_to): Add a fallback error message for
1756         the general two-type case.
1757         (function_resolver::resolve_conversion): New function.
1758         (function_resolver::infer_predicate_type): Likewise.
1759         (function_resolver::infer_64bit_scalar_integer_pair): Likewise.
1760         (function_resolver::require_matching_predicate_type): Likewise.
1761         (function_resolver::require_matching_vector_type): Specifically
1762         diagnose mismatched vector counts.
1763         (function_resolver::require_derived_vector_type): Add an
1764         expected_num_vectors parameter.  Extend to handle cases where
1765         tuples are expected.
1766         (function_resolver::require_nonscalar_type): New function.
1767         (function_resolver::check_gp_argument): Use gp_type_index rather
1768         than hard-coding VECTOR_TYPE_svbool_t.
1769         (function_resolver::finish_opt_single_resolution): New function.
1770         (function_checker::require_immediate_either_or): Remove hard-coded
1771         constants.
1772         (function_expander::direct_optab_handler): New function.
1773         (function_expander::use_pred_x_insn): Only add a strictness flag
1774         is the insn has an operand for it.
1775         (function_expander::map_to_rtx_codes): Take an unconditional
1776         FP unspec as an extra parameter.  Handle tuples and MODE_single.
1777         (function_expander::map_to_unspecs): Handle tuples and MODE_single.
1778         * config/aarch64/aarch64-sve-builtins-functions.h (read_zt0)
1779         (write_zt0): New typedefs.
1780         (full_width_access::memory_vector): Use the function's
1781         vectors_per_tuple.
1782         (rtx_code_function_base): Add an optional unconditional FP unspec.
1783         (rtx_code_function::expand): Update accordingly.
1784         (rtx_code_function_rotated::expand): Likewise.
1785         (unspec_based_function_exact_insn::expand): Use tuple_mode instead
1786         of vector_mode.
1787         (unspec_based_uncond_function): New typedef.
1788         (cond_or_uncond_unspec_function): New class.
1789         (sme_1mode_function::expand): Handle single forms.
1790         (sme_2mode_function_t): Likewise, adding a template parameter for them.
1791         (sme_2mode_function): Update accordingly.
1792         (sme_2mode_lane_function): New typedef.
1793         (multireg_permute): New class.
1794         (class integer_conversion): Likewise.
1795         (while_comparison::expand): Handle svcount_t and svboolx2_t results.
1796         * config/aarch64/aarch64-sve-builtins-shapes.h
1797         (binary_int_opt_single_n, binary_opt_single_n, binary_single)
1798         (binary_za_slice_lane, binary_za_slice_int_opt_single)
1799         (binary_za_slice_opt_single, binary_za_slice_uint_opt_single)
1800         (binaryx, clamp, compare_scalar_count, count_pred_c)
1801         (dot_za_slice_int_lane, dot_za_slice_lane, dot_za_slice_uint_lane)
1802         (extract_pred, inherent_zt, ldr_zt, read_za, read_za_slice)
1803         (select_pred, shift_right_imm_narrowxn, storexn, str_zt)
1804         (unary_convertxn, unary_za_slice, unaryxn, write_za)
1805         (write_za_slice): Declare.
1806         * config/aarch64/aarch64-sve-builtins-shapes.cc
1807         (za_group_is_pure_overload): New function.
1808         (apply_predication): Use the function's gp_type for the predicate,
1809         instead of hard-coding the use of svbool_t.
1810         (parse_element_type): Add support for "c" (svcount_t).
1811         (parse_type): Add support for "c0" and "c1" (conversion destination
1812         and source types).
1813         (binary_za_slice_lane_base): New class.
1814         (binary_za_slice_opt_single_base): Likewise.
1815         (load_contiguous_base::resolve): Pass the group suffix to r.resolve.
1816         (luti_lane_zt_base): New class.
1817         (binary_int_opt_single_n, binary_opt_single_n, binary_single)
1818         (binary_za_slice_lane, binary_za_slice_int_opt_single)
1819         (binary_za_slice_opt_single, binary_za_slice_uint_opt_single)
1820         (binaryx, clamp): New shapes.
1821         (compare_scalar_def::build): Allow the return type to be a tuple.
1822         (compare_scalar_def::expand): Pass the group suffix to r.resolve.
1823         (compare_scalar_count, count_pred_c, dot_za_slice_int_lane)
1824         (dot_za_slice_lane, dot_za_slice_uint_lane, extract_pred, inherent_zt)
1825         (ldr_zt, read_za, read_za_slice, select_pred, shift_right_imm_narrowxn)
1826         (storexn, str_zt): New shapes.
1827         (ternary_qq_lane_def, ternary_qq_opt_n_def): Replace with...
1828         (ternary_qq_or_011_lane_def, ternary_qq_opt_n_or_011_def): ...these
1829         new classes.  Allow a second suffix that specifies the type of the
1830         second vector argument, and that is used to derive the third.
1831         (unary_def::build): Extend to handle tuple types.
1832         (unary_convert_def::build): Use the new c0 and c1 format specifiers.
1833         (unary_convertxn, unary_za_slice, unaryxn, write_za): New shapes.
1834         (write_za_slice): Likewise.
1835         * config/aarch64/aarch64-sve-builtins-base.cc (svbic_impl::expand)
1836         (svext_bhw_impl::expand): Update call to map_to_rtx_costs.
1837         (svcntp_impl::expand): Handle svcount_t variants.
1838         (svcvt_impl::expand): Handle unpredicated conversions separately,
1839         dealing with tuples.
1840         (svdot_impl::expand): Handle 2-way dot products.
1841         (svdotprod_lane_impl::expand): Likewise.
1842         (svld1_impl::fold): Punt on tuple loads.
1843         (svld1_impl::expand): Handle tuple loads.
1844         (svldnt1_impl::expand): Likewise.
1845         (svpfalse_impl::fold): Punt on svcount_t forms.
1846         (svptrue_impl::fold): Likewise.
1847         (svptrue_impl::expand): Handle svcount_t forms.
1848         (svrint_impl): New class.
1849         (svsel_impl::fold): Punt on tuple forms.
1850         (svsel_impl::expand): Handle tuple forms.
1851         (svst1_impl::fold): Punt on tuple loads.
1852         (svst1_impl::expand): Handle tuple loads.
1853         (svstnt1_impl::expand): Likewise.
1854         (svwhilelx_impl::fold): Punt on tuple forms.
1855         (svdot_lane): Use UNSPEC_FDOT.
1856         (svmax, svmaxnm, svmin, svminmm): Add unconditional FP unspecs.
1857         (rinta, rinti, rintm, rintn, rintp, rintx, rintz): Use svrint_impl.
1858         * config/aarch64/aarch64-sve-builtins-base.def (svcreate2, svget2)
1859         (svset2, svundef2): Add _b variants.
1860         (svcvt): Use unary_convertxn.
1861         (svdot): Use ternary_qq_opt_n_or_011.
1862         (svdot_lane): Use ternary_qq_or_011_lane.
1863         (svmax, svmaxnm, svmin, svminnm): Use binary_opt_single_n.
1864         (svpfalse): Add a form that returns svcount_t results.
1865         (svrinta, svrintm, svrintn, svrintp): Use unaryxn.
1866         (svsel): Use binaryxn.
1867         (svst1, svstnt1): Use storexn.
1868         * config/aarch64/aarch64-sve-builtins-sme.h
1869         (svadd_za, svadd_write_za, svbmopa_za, svbmops_za, svdot_za)
1870         (svdot_lane_za, svldr_zt, svluti2_lane_zt, svluti4_lane_zt)
1871         (svmla_za, svmla_lane_za, svmls_za, svmls_lane_za, svread_za)
1872         (svstr_zt, svsub_za, svsub_write_za, svsudot_za, svsudot_lane_za)
1873         (svsuvdot_lane_za, svusdot_za, svusdot_lane_za, svusvdot_lane_za)
1874         (svvdot_lane_za, svwrite_za, svzero_zt): Declare.
1875         * config/aarch64/aarch64-sve-builtins-sme.cc (load_store_za_base):
1876         Rename to...
1877         (load_store_za_zt0_base): ...this and extend to tuples.
1878         (load_za_base, store_za_base): Update accordingly.
1879         (expand_ldr_str_zt0): New function.
1880         (svldr_zt_impl, svluti_lane_zt_impl, svread_za_impl, svstr_zt_impl)
1881         (svsudot_za_impl, svwrite_za_impl, svzero_zt_impl): New classes.
1882         (svadd_za, svadd_write_za, svbmopa_za, svbmops_za, svdot_za)
1883         (svdot_lane_za, svldr_zt, svluti2_lane_zt, svluti4_lane_zt)
1884         (svmla_za, svmla_lane_za, svmls_za, svmls_lane_za, svread_za)
1885         (svstr_zt, svsub_za, svsub_write_za, svsudot_za, svsudot_lane_za)
1886         (svsuvdot_lane_za, svusdot_za, svusdot_lane_za, svusvdot_lane_za)
1887         (svvdot_lane_za, svwrite_za, svzero_zt): New functions.
1888         * config/aarch64/aarch64-sve-builtins-sme.def: Add SME2 intrinsics.
1889         * config/aarch64/aarch64-sve-builtins-sve2.h
1890         (svbfmlslb, svbfmlslb_lane, svbfmlslt, svbfmlslt_lane, svclamp)
1891         (svcvtn, svpext, svpsel, svqcvt, svqcvtn, svqrshr, svqrshrn)
1892         (svqrshru, svqrshrun, svrevd, svunpk, svuzp, svuzpq, svzip)
1893         (svzipq): Declare.
1894         * config/aarch64/aarch64-sve-builtins-sve2.cc (svclamp_impl)
1895         (svcvtn_impl, svpext_impl, svpsel_impl): New classes.
1896         (svqrshl_impl::fold): Update for change to svrshl shape.
1897         (svrshl_impl::fold): Punt on tuple forms.
1898         (svsqadd_impl::expand): Update call to map_to_rtx_codes.
1899         (svunpk_impl): New class.
1900         (svbfmlslb, svbfmlslb_lane, svbfmlslt, svbfmlslt_lane, svclamp)
1901         (svcvtn, svpext, svpsel, svqcvt, svqcvtn, svqrshr, svqrshrn)
1902         (svqrshru, svqrshrun, svrevd, svunpk, svuzp, svuzpq, svzip)
1903         (svzipq): New functions.
1904         * config/aarch64/aarch64-sve-builtins-sve2.def: Add SME2 intrinsics.
1905         * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Define
1906         or undefine __ARM_FEATURE_SME2.
1908 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
1910         * config/aarch64/aarch64.md (ZT0_REGNUM): New constant.
1911         (LAST_FAKE_REGNUM): Bump to include it.
1912         * config/aarch64/aarch64.h (FIXED_REGISTERS): Add an entry for ZT0.
1913         (CALL_REALLY_USED_REGISTERS, REGISTER_NAMES): Likewise.
1914         (REG_CLASS_CONTENTS): Likewise.
1915         (machine_function): Add zt0_save_buffer.
1916         (CUMULATIVE_ARGS): Add shared_zt0_flags;
1917         * config/aarch64/aarch64.cc (aarch64_check_state_string): Handle zt0.
1918         (aarch64_fntype_pstate_za, aarch64_fndecl_pstate_za): Likewise.
1919         (aarch64_function_arg): Add the shared ZT0 flags as an extra
1920         limb of the parallel.
1921         (aarch64_init_cumulative_args): Initialize shared_zt0_flags.
1922         (aarch64_extra_live_on_entry): Handle ZT0_REGNUM.
1923         (aarch64_epilogue_uses): Likewise.
1924         (aarch64_get_zt0_save_buffer, aarch64_save_zt0): New functions.
1925         (aarch64_restore_zt0): Likewise.
1926         (aarch64_start_call_args): Reject calls to functions that share
1927         ZT0 from functions that have no ZT0 state.  Save ZT0 around shared-ZA
1928         calls that do not share ZT0.
1929         (aarch64_expand_call): Handle ZT0.  Reject calls to functions that
1930         share ZT0 but not ZA from functions with ZA state.
1931         (aarch64_end_call_args): Restore ZT0 after calls to shared-ZA functions
1932         that do not share ZT0.
1933         (aarch64_set_current_function): Require +sme2 for functions that
1934         have ZT0 state.
1935         (aarch64_function_attribute_inlinable_p): Don't allow functions to
1936         be inlined if they have local zt0 state.
1937         (AARCH64_IPA_CLOBBERS_ZT0): New constant.
1938         (aarch64_update_ipa_fn_target_info): Record asms that clobber ZT0.
1939         (aarch64_can_inline_p): Don't inline callees that clobber ZT0
1940         into functions that have ZT0 state.
1941         (aarch64_comp_type_attributes): Check for compatible ZT0 sharing.
1942         (aarch64_optimize_mode_switching): Use mode switching if the
1943         function has ZT0 state.
1944         (aarch64_mode_emit_local_sme_state): Save and restore ZT0 around
1945         calls to private-ZA functions.
1946         (aarch64_mode_needed_local_sme_state): Require ZA to be active
1947         for instructions that access ZT0.
1948         (aarch64_mode_entry): Mark ZA as dead on entry if the function
1949         only shares state other than "za" itself.
1950         (aarch64_mode_exit): Likewise mark ZA as dead on return.
1951         (aarch64_md_asm_adjust): Extend handling of ZA clobbers to ZT0.
1952         * config/aarch64/aarch64-c.cc (aarch64_define_unconditional_macros):
1953         Define __ARM_STATE_ZT0.
1954         * config/aarch64/aarch64-sme.md (UNSPECV_ASM_UPDATE_ZT0): New unspecv.
1955         (aarch64_asm_update_zt0): New insn.
1956         (UNSPEC_RESTORE_ZT0): New unspec.
1957         (aarch64_sme_ldr_zt0, aarch64_restore_zt0): New insns.
1958         (aarch64_sme_str_zt0): Likewise.
1960 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
1962         * config/aarch64/aarch64-modes.def (VNx32BI): New mode.
1963         * config/aarch64/aarch64-protos.h (aarch64_split_double_move): Declare.
1964         * config/aarch64/aarch64-sve-builtins.cc
1965         (register_tuple_type): Handle tuples of predicates.
1966         (handle_arm_sve_h): Define svboolx2_t as a pair of two svbool_ts.
1967         * config/aarch64/aarch64-sve.md (movvnx32bi): New insn.
1968         * config/aarch64/aarch64.cc
1969         (pure_scalable_type_info::piece::get_rtx): Use VNx32BI for pairs
1970         of predicates.
1971         (pure_scalable_type_info::add_piece): Don't try to form pairs of
1972         predicates.
1973         (VEC_STRUCT): Generalize comment.
1974         (aarch64_classify_vector_mode): Handle VNx32BI.
1975         (aarch64_array_mode): Likewise.  Return BLKmode for arrays of
1976         predicates that have no associated mode, rather than allowing
1977         an integer mode to be chosen.
1978         (aarch64_hard_regno_nregs): Handle VNx32BI.
1979         (aarch64_hard_regno_mode_ok): Likewise.
1980         (aarch64_split_double_move): New function, split out from...
1981         (aarch64_split_128bit_move): ...here.
1982         (aarch64_ptrue_reg): Tighten assert to aarch64_sve_pred_mode_p.
1983         (aarch64_pfalse_reg): Likewise.
1984         (aarch64_sve_same_pred_for_ptest_p): Likewise.
1985         (aarch64_sme_mode_switch_regs::add_reg): Handle VNx32BI.
1986         (aarch64_expand_mov_immediate): Restrict handling of boolean vector
1987         constants to single-predicate modes.
1988         (aarch64_classify_address): Handle VNx32BI, ensuring that both halves
1989         can be addressed.
1990         (aarch64_class_max_nregs): Handle VNx32BI.
1991         (aarch64_member_type_forces_blk): Don't for BLKmode for svboolx2_t.
1992         (aarch64_simd_valid_immediate): Allow all-zeros and all-ones for
1993         VNx32BI.
1994         (aarch64_mov_operand_p): Restrict predicate constant canonicalization
1995         to single-predicate modes.
1996         (aarch64_evpc_ext): Generalize exclusion to all predicate modes.
1997         (aarch64_evpc_rev_local, aarch64_evpc_dup): Likewise.
1998         * config/aarch64/constraints.md (PR_REGS): New predicate.
2000 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
2002         * config/aarch64/aarch64-sve-builtins-base.cc
2003         (svreinterpret_impl::fold): Handle reinterprets between svbool_t
2004         and svcount_t.
2005         (svreinterpret_impl::expand): Likewise.
2006         * config/aarch64/aarch64-sve-builtins-base.def (svreinterpret): Add
2007         b<->c forms.
2008         * config/aarch64/aarch64-sve-builtins.cc (TYPES_reinterpret_b): New
2009         type suffix list.
2010         (wrap_type_in_struct, register_type_decl): New functions, split out
2011         from...
2012         (register_tuple_type): ...here.
2013         (register_builtin_types): Handle svcount_t.
2014         (handle_arm_sve_h): Don't create tuples of svcount_t.
2015         * config/aarch64/aarch64-sve-builtins.def (svcount_t): New type.
2016         (c): New type suffix.
2017         * config/aarch64/aarch64-sve-builtins.h (TYPE_count): New type class.
2019 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
2021         * doc/invoke.texi: Document +sme2.
2022         * doc/sourcebuild.texi: Document aarch64_sme2.
2023         * config/aarch64/aarch64-option-extensions.def (AARCH64_OPT_EXTENSION):
2024         Add sme2.
2025         * config/aarch64/aarch64.h (AARCH64_ISA_SME2, TARGET_SME2): New macros.
2027 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
2029         * config/aarch64/aarch64.cc (aarch64_function_ok_for_sibcall):
2030         Enforce PSTATE.SM and PSTATE.ZA restrictions.
2031         (aarch64_expand_epilogue): Save and restore the arguments
2032         to a sibcall around any change to PSTATE.SM.
2034 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
2036         * config/aarch64/aarch64.cc: Include symbol-summary.h, ipa-prop.h,
2037         and ipa-fnsummary.h
2038         (aarch64_function_attribute_inlinable_p): New function.
2039         (AARCH64_IPA_SM_FIXED, AARCH64_IPA_CLOBBERS_ZA): New constants.
2040         (aarch64_need_ipa_fn_target_info): New function.
2041         (aarch64_update_ipa_fn_target_info): Likewise.
2042         (aarch64_can_inline_p): Restrict the previous ISA flag checks
2043         to non-modal features.  Prevent callees that require a particular
2044         PSTATE.SM state from being inlined into callers that can't guarantee
2045         that state.  Also prevent callees that have ZA state from being
2046         inlined into callers that don't.  Finally, prevent callees that
2047         clobber ZA from being inlined into callers that have ZA state.
2048         (TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P): Define.
2049         (TARGET_NEED_IPA_FN_TARGET_INFO): Likewise.
2050         (TARGET_UPDATE_IPA_FN_TARGET_INFO): Likewise.
2052 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
2054         * config/aarch64/aarch64.cc: Include except.h
2055         (aarch64_sme_mode_switch_regs::add_call_preserved_reg): New function.
2056         (aarch64_sme_mode_switch_regs::add_call_preserved_regs): Likewise.
2057         (aarch64_need_old_pstate_sm): Return true if the function has
2058         a nonlocal-goto or exception receiver.
2059         (aarch64_switch_pstate_sm_for_landing_pad): New function.
2060         (aarch64_switch_pstate_sm_for_jump): Likewise.
2061         (pass_switch_pstate_sm::gate): Enable the pass for all
2062         streaming and streaming-compatible functions.
2063         (pass_switch_pstate_sm::execute): Handle non-local gotos and their
2064         receivers.  Handle exception handler entry points.
2066 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
2068         * config/aarch64/aarch64.cc (aarch64_arm_attribute_table): Add
2069         arm::locally_streaming.
2070         (aarch64_fndecl_is_locally_streaming): New function.
2071         (aarch64_fndecl_sm_state): Handle locally-streaming functions.
2072         (aarch64_cfun_enables_pstate_sm): New function.
2073         (aarch64_add_offset): Add an argument that specifies whether
2074         the streaming vector length should be used instead of the
2075         prevailing one.
2076         (aarch64_split_add_offset, aarch64_add_sp, aarch64_sub_sp): Likewise.
2077         (aarch64_allocate_and_probe_stack_space): Likewise.
2078         (aarch64_expand_mov_immediate): Update calls accordingly.
2079         (aarch64_need_old_pstate_sm): Return true for locally-streaming
2080         streaming-compatible functions.
2081         (aarch64_layout_frame): Force all call-preserved Z and P registers
2082         to be saved and restored if the function switches PSTATE.SM in the
2083         prologue.
2084         (aarch64_get_separate_components): Disable shrink-wrapping of
2085         such Z and P saves and restores.
2086         (aarch64_use_late_prologue_epilogue): New function.
2087         (aarch64_expand_prologue): Measure SVE lengths in the streaming
2088         vector length for locally-streaming functions, then emit code
2089         to enable streaming mode.
2090         (aarch64_expand_epilogue): Likewise in reverse.
2091         (TARGET_USE_LATE_PROLOGUE_EPILOGUE): Define.
2092         * config/aarch64/aarch64-c.cc (aarch64_define_unconditional_macros):
2093         Define __arm_locally_streaming.
2095 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
2097         * doc/invoke.texi: Document +sme-i16i64 and +sme-f64f64.
2098         * config.gcc (aarch64*-*-*): Add arm_sme.h to the list of headers
2099         to install and aarch64-sve-builtins-sme.o to the list of objects
2100         to build.
2101         * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Define
2102         or undefine TARGET_SME, TARGET_SME_I16I64 and TARGET_SME_F64F64.
2103         (aarch64_pragma_aarch64): Handle arm_sme.h.
2104         * config/aarch64/aarch64-option-extensions.def (sme-i16i64)
2105         (sme-f64f64): New extensions.
2106         * config/aarch64/aarch64-protos.h (aarch64_sme_vq_immediate)
2107         (aarch64_addsvl_addspl_immediate_p, aarch64_output_addsvl_addspl)
2108         (aarch64_output_sme_zero_za): Declare.
2109         (aarch64_output_move_struct): Delete.
2110         (aarch64_sme_ldr_vnum_offset): Declare.
2111         (aarch64_sve::handle_arm_sme_h): Likewise.
2112         * config/aarch64/aarch64.h (AARCH64_ISA_SM_ON): New macro.
2113         (AARCH64_ISA_SME_I16I64, AARCH64_ISA_SME_F64F64): Likewise.
2114         (TARGET_STREAMING, TARGET_STREAMING_SME): Likewise.
2115         (TARGET_SME_I16I64, TARGET_SME_F64F64): Likewise.
2116         * config/aarch64/aarch64.cc (aarch64_sve_rdvl_factor_p): Rename to...
2117         (aarch64_sve_rdvl_addvl_factor_p): ...this.
2118         (aarch64_sve_rdvl_immediate_p): Update accordingly.
2119         (aarch64_rdsvl_immediate_p, aarch64_add_offset): Likewise.
2120         (aarch64_sme_vq_immediate): Likewise.  Make public.
2121         (aarch64_sve_addpl_factor_p): New function.
2122         (aarch64_sve_addvl_addpl_immediate_p): Use
2123         aarch64_sve_rdvl_addvl_factor_p and aarch64_sve_addpl_factor_p.
2124         (aarch64_addsvl_addspl_immediate_p): New function.
2125         (aarch64_output_addsvl_addspl): Likewise.
2126         (aarch64_cannot_force_const_mem): Return true for RDSVL immediates.
2127         (aarch64_classify_index): Handle .Q scaling for VNx1TImode.
2128         (aarch64_classify_address): Likewise for vnum offsets.
2129         (aarch64_output_sme_zero_za): New function.
2130         (aarch64_sme_ldr_vnum_offset_p): Likewise.
2131         * config/aarch64/predicates.md (aarch64_addsvl_addspl_immediate):
2132         New predicate.
2133         (aarch64_pluslong_operand): Include it for SME.
2134         * config/aarch64/constraints.md (Ucj, Uav): New constraints.
2135         * config/aarch64/iterators.md (VNx1TI_ONLY): New mode iterator.
2136         (SME_ZA_I, SME_ZA_SDI, SME_ZA_SDF_I, SME_MOP_BHI): Likewise.
2137         (SME_MOP_HSDF): Likewise.
2138         (UNSPEC_SME_ADDHA, UNSPEC_SME_ADDVA, UNSPEC_SME_FMOPA)
2139         (UNSPEC_SME_FMOPS, UNSPEC_SME_LD1_HOR, UNSPEC_SME_LD1_VER)
2140         (UNSPEC_SME_READ_HOR, UNSPEC_SME_READ_VER, UNSPEC_SME_SMOPA)
2141         (UNSPEC_SME_SMOPS, UNSPEC_SME_ST1_HOR, UNSPEC_SME_ST1_VER)
2142         (UNSPEC_SME_SUMOPA, UNSPEC_SME_SUMOPS, UNSPEC_SME_UMOPA)
2143         (UNSPEC_SME_UMOPS, UNSPEC_SME_USMOPA, UNSPEC_SME_USMOPS)
2144         (UNSPEC_SME_WRITE_HOR, UNSPEC_SME_WRITE_VER): New unspecs.
2145         (elem_bits): Handle x2 and x4 structure modes, plus VNx1TI.
2146         (Vetype, Vesize, VPRED): Handle VNx1TI.
2147         (b): New mode attribute.
2148         (SME_LD1, SME_READ, SME_ST1, SME_WRITE, SME_BINARY_SDI, SME_INT_MOP)
2149         (SME_FP_MOP): New int iterators.
2150         (optab): Handle SME unspecs.
2151         (hv): New int attribute.
2152         * config/aarch64/aarch64.md (*add<mode>3_aarch64): Handle ADDSVL
2153         and ADDSPL.
2154         * config/aarch64/aarch64-sme.md (UNSPEC_SME_LDR): New unspec.
2155         (@aarch64_sme_<optab><mode>, @aarch64_sme_<optab><mode>_plus)
2156         (aarch64_sme_ldr0, @aarch64_sme_ldrn<mode>): New patterns.
2157         (UNSPEC_SME_STR): New unspec.
2158         (@aarch64_sme_<optab><mode>, @aarch64_sme_<optab><mode>_plus)
2159         (aarch64_sme_str0, @aarch64_sme_strn<mode>): New patterns.
2160         (@aarch64_sme_<optab><v_int_container><mode>): Likewise.
2161         (*aarch64_sme_<optab><v_int_container><mode>_plus): Likewise.
2162         (@aarch64_sme_<optab><VNx1TI_ONLY:mode><SVE_FULL:mode>): Likewise.
2163         (@aarch64_sme_<optab><v_int_container><mode>): Likewise.
2164         (*aarch64_sme_<optab><v_int_container><mode>_plus): Likewise.
2165         (@aarch64_sme_<optab><VNx1TI_ONLY:mode><SVE_FULL:mode>): Likewise.
2166         (UNSPEC_SME_ZERO): New unspec.
2167         (aarch64_sme_zero): New pattern.
2168         (@aarch64_sme_<SME_BINARY_SDI:optab><mode>): Likewise.
2169         (@aarch64_sme_<SME_INT_MOP:optab><mode>): Likewise.
2170         (@aarch64_sme_<SME_FP_MOP:optab><mode>): Likewise.
2171         * config/aarch64/aarch64-sve-builtins.def: Add ZA type suffixes.
2172         Include aarch64-sve-builtins-sme.def.
2173         (DEF_SME_ZA_FUNCTION): New macro.
2174         * config/aarch64/aarch64-sve-builtins.h (CP_READ_ZA): New call
2175         property.
2176         (CP_WRITE_ZA): Likewise.
2177         (PRED_za_m): New predication type.
2178         (type_suffix_index): Handle DEF_SME_ZA_SUFFIX.
2179         (type_suffix_info): Add vector_p and za_p fields.
2180         (function_instance::num_za_tiles): New member function.
2181         (function_builder::get_attributes): Add an aarch64_feature_flags
2182         argument.
2183         (function_expander::get_contiguous_base): Take a base argument
2184         number, a vnum argument number, and an argument that indicates
2185         whether the vnum parameter is a factor of the SME vector length
2186         or the prevailing vector length.
2187         (function_expander::add_integer_operand): Take a poly_int64.
2188         (sve_switcher::sve_switcher): Take a base set of flags.
2189         (sme_switcher): New class.
2190         (scalar_types): Add a null entry for NUM_VECTOR_TYPES.
2191         * config/aarch64/aarch64-sve-builtins.cc: Include
2192         aarch64-sve-builtins-sme.h.
2193         (pred_suffixes): Add an entry for PRED_za_m.
2194         (type_suffixes): Initialize vector_p and za_p.  Handle ZA suffixes.
2195         (TYPES_all_za, TYPES_d_za, TYPES_za_bhsd_data, TYPES_za_all_data)
2196         (TYPES_za_s_integer, TYPES_za_d_integer, TYPES_mop_base)
2197         (TYPES_mop_base_signed, TYPES_mop_base_unsigned, TYPES_mop_i16i64)
2198         (TYPES_mop_i16i64_signed, TYPES_mop_i16i64_unsigned, TYPES_za): New
2199         type suffix macros.
2200         (preds_m, preds_za_m): New predication lists.
2201         (function_groups): Handle DEF_SME_ZA_FUNCTION.
2202         (scalar_types): Add an entry for NUM_VECTOR_TYPES.
2203         (find_type_suffix_for_scalar_type): Check positively for vectors
2204         rather than negatively for predicates.
2205         (check_required_extensions): Handle PSTATE.SM and PSTATE.ZA
2206         requirements.
2207         (report_out_of_range): Handle the case where the minimum and
2208         maximum are the same.
2209         (function_instance::reads_global_state_p): Return true for functions
2210         that read ZA.
2211         (function_instance::modifies_global_state_p): Return true for functions
2212         that write to ZA.
2213         (sve_switcher::sve_switcher): Add a base flags argument.
2214         (function_builder::get_name): Handle "__arm_" prefixes.
2215         (add_attribute): Add an overload that takes a namespaces.
2216         (add_shared_state_attribute): New function.
2217         (function_builder::get_attributes): Take the required feature flags
2218         as argument.  Add streaming and ZA attributes where appropriate.
2219         (function_builder::add_unique_function): Update calls accordingly.
2220         (function_resolver::check_gp_argument): Assert that the predication
2221         isn't ZA _m predication.
2222         (function_checker::function_checker): Don't bias the argument
2223         number for ZA _m predication.
2224         (function_expander::get_contiguous_base): Add arguments that
2225         specify the base argument number, the vnum argument number,
2226         and an argument that indicates whether the vnum parameter is
2227         a factor of the SME vector length or the prevailing vector length.
2228         Handle the SME case.
2229         (function_expander::add_input_operand): Handle pmode_register_operand.
2230         (function_expander::add_integer_operand): Take a poly_int64.
2231         (init_builtins): Call handle_arm_sme_h for LTO.
2232         (handle_arm_sve_h): Skip SME intrinsics.
2233         (handle_arm_sme_h): New function.
2234         * config/aarch64/aarch64-sve-builtins-functions.h
2235         (read_write_za, write_za): New classes.
2236         (unspec_based_sme_function, za_arith_function): New using aliases.
2237         (quiet_za_arith_function): Likewise.
2238         * config/aarch64/aarch64-sve-builtins-shapes.h
2239         (binary_za_int_m, binary_za_m, binary_za_uint_m, bool_inherent)
2240         (inherent_za, inherent_mask_za, ldr_za, load_za, read_za_m, store_za)
2241         (str_za, unary_za_m, write_za_m): Declare.
2242         * config/aarch64/aarch64-sve-builtins-shapes.cc (apply_predication):
2243         Expect za_m functions to have an existing governing predicate.
2244         (binary_za_m_base, binary_za_int_m_def, binary_za_m_def): New classes.
2245         (binary_za_uint_m_def, bool_inherent_def, inherent_za_def): Likewise.
2246         (inherent_mask_za_def, ldr_za_def, load_za_def, read_za_m_def)
2247         (store_za_def, str_za_def, unary_za_m_def, write_za_m_def): Likewise.
2248         * config/aarch64/arm_sme.h: New file.
2249         * config/aarch64/aarch64-sve-builtins-sme.h: Likewise.
2250         * config/aarch64/aarch64-sve-builtins-sme.cc: Likewise.
2251         * config/aarch64/aarch64-sve-builtins-sme.def: Likewise.
2252         * config/aarch64/t-aarch64 (aarch64-sve-builtins.o): Depend on
2253         aarch64-sve-builtins-sme.def and aarch64-sve-builtins-sme.h.
2254         (aarch64-sve-builtins-sme.o): New rule.
2256 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
2258         * config/aarch64/aarch64-sve-builtins.h
2259         (function_shape::has_merge_argument_p): New member function.
2260         * config/aarch64/aarch64-sve-builtins.cc:
2261         (function_resolver::check_gp_argument): Use it.
2262         (function_expander::get_fallback_value): Likewise.
2263         * config/aarch64/aarch64-sve-builtins-shapes.cc
2264         (apply_predication): Likewise.
2265         (unary_convert_narrowt_def::has_merge_argument_p): New function.
2267 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
2269         * config/aarch64/aarch64-sve-builtins-functions.h
2270         (unspec_based_function_base): Allow type suffix 1 to determine
2271         the mode of the operation.
2272         (unspec_based_function): Update accordingly.
2273         (unspec_based_fused_function): Likewise.
2274         (unspec_based_fused_lane_function): Likewise.
2276 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
2278         * config/aarch64/aarch64-modes.def: Add VNx1TI.
2280 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
2282         * config/aarch64/aarch64.h (W12_W15_REGNUM_P): New macro.
2283         (W12_W15_REGS): New register class.
2284         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Add entries for it.
2285         * config/aarch64/aarch64.cc (aarch64_regno_regclass)
2286         (aarch64_class_max_nregs, aarch64_register_move_cost): Handle
2287         W12_W15_REGS.
2289 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
2291         * config/aarch64/aarch64-isa-modes.def (ZA_ON): New ISA mode.
2292         * config/aarch64/aarch64-protos.h (aarch64_rdsvl_immediate_p)
2293         (aarch64_output_rdsvl, aarch64_optimize_mode_switching)
2294         (aarch64_restore_za): Declare.
2295         * config/aarch64/constraints.md (UsR): New constraint.
2296         * config/aarch64/aarch64.md (LOWERING_REGNUM, TPIDR_BLOCK_REGNUM)
2297         (SME_STATE_REGNUM, TPIDR2_SETUP_REGNUM, ZA_FREE_REGNUM)
2298         (ZA_SAVED_REGNUM, ZA_REGNUM, FIRST_FAKE_REGNUM): New constants.
2299         (LAST_FAKE_REGNUM): Likewise.
2300         (UNSPEC_SAVE_NZCV, UNSPEC_RESTORE_NZCV, UNSPEC_SME_VQ): New unspecs.
2301         (arches): Add sme.
2302         (arch_enabled): Handle it.
2303         (*cb<optab><mode>1): Rename to...
2304         (aarch64_cb<optab><mode>1): ...this.
2305         (*movsi_aarch64): Add an alternative for RDSVL.
2306         (*movdi_aarch64): Likewise.
2307         (aarch64_save_nzcv, aarch64_restore_nzcv): New insns.
2308         * config/aarch64/aarch64-sme.md (UNSPEC_SMSTOP_ZA)
2309         (UNSPEC_INITIAL_ZERO_ZA, UNSPEC_TPIDR2_SAVE, UNSPEC_TPIDR2_RESTORE)
2310         (UNSPEC_READ_TPIDR2, UNSPEC_WRITE_TPIDR2, UNSPEC_SETUP_LOCAL_TPIDR2)
2311         (UNSPEC_RESTORE_ZA, UNSPEC_START_PRIVATE_ZA_CALL): New unspecs.
2312         (UNSPEC_END_PRIVATE_ZA_CALL, UNSPEC_COMMIT_LAZY_SAVE): Likewise.
2313         (UNSPECV_ASM_UPDATE_ZA): New unspecv.
2314         (aarch64_tpidr2_save, aarch64_smstart_za, aarch64_smstop_za)
2315         (aarch64_initial_zero_za, aarch64_setup_local_tpidr2)
2316         (aarch64_clear_tpidr2, aarch64_write_tpidr2, aarch64_read_tpidr2)
2317         (aarch64_tpidr2_restore, aarch64_restore_za, aarch64_asm_update_za)
2318         (aarch64_start_private_za_call, aarch64_end_private_za_call)
2319         (aarch64_commit_lazy_save): New patterns.
2320         * config/aarch64/aarch64.h (AARCH64_ISA_ZA_ON, TARGET_ZA): New macros.
2321         (FIXED_REGISTERS, REGISTER_NAMES): Add the new fake ZA registers.
2322         (CALL_USED_REGISTERS): Replace with...
2323         (CALL_REALLY_USED_REGISTERS): ...this and add the fake ZA registers.
2324         (FIRST_PSEUDO_REGISTER): Bump to include the fake ZA registers.
2325         (FAKE_REGS): New register class.
2326         (REG_CLASS_NAMES): Update accordingly.
2327         (REG_CLASS_CONTENTS): Likewise.
2328         (machine_function::tpidr2_block): New member variable.
2329         (machine_function::tpidr2_block_ptr): Likewise.
2330         (machine_function::za_save_buffer): Likewise.
2331         (machine_function::next_asm_update_za_id): Likewise.
2332         (CUMULATIVE_ARGS::shared_za_flags): Likewise.
2333         (aarch64_mode_entity, aarch64_local_sme_state): New enums.
2334         (aarch64_tristate_mode): Likewise.
2335         (OPTIMIZE_MODE_SWITCHING, NUM_MODES_FOR_MODE_SWITCHING): Define.
2336         * config/aarch64/aarch64.cc (AARCH64_STATE_SHARED, AARCH64_STATE_IN)
2337         (AARCH64_STATE_OUT): New constants.
2338         (aarch64_attribute_shared_state_flags): New function.
2339         (aarch64_lookup_shared_state_flags, aarch64_fndecl_has_new_state)
2340         (aarch64_check_state_string, cmp_string_csts): Likewise.
2341         (aarch64_merge_string_arguments, aarch64_check_arm_new_against_type)
2342         (handle_arm_new, handle_arm_shared): Likewise.
2343         (handle_arm_new_za_attribute): New
2344         (aarch64_arm_attribute_table): Add new, preserves, in, out, and inout.
2345         (aarch64_hard_regno_nregs): Handle FAKE_REGS.
2346         (aarch64_hard_regno_mode_ok): Likewise.
2347         (aarch64_fntype_shared_flags, aarch64_fntype_pstate_za): New functions.
2348         (aarch64_fntype_isa_mode): Include aarch64_fntype_pstate_za.
2349         (aarch64_fndecl_has_state, aarch64_fndecl_pstate_za): New functions.
2350         (aarch64_fndecl_isa_mode): Include aarch64_fndecl_pstate_za.
2351         (aarch64_cfun_incoming_pstate_za, aarch64_cfun_shared_flags)
2352         (aarch64_cfun_has_new_state, aarch64_cfun_has_state): New functions.
2353         (aarch64_sme_vq_immediate, aarch64_sme_vq_unspec_p): Likewise.
2354         (aarch64_rdsvl_immediate_p, aarch64_output_rdsvl): Likewise.
2355         (aarch64_expand_mov_immediate): Handle RDSVL immediates.
2356         (aarch64_function_arg): Add the ZA sharing flags as a third limb
2357         of the PARALLEL.
2358         (aarch64_init_cumulative_args): Record the ZA sharing flags.
2359         (aarch64_extra_live_on_entry): New function.  Handle the new
2360         ZA-related fake registers.
2361         (aarch64_epilogue_uses): Handle the new ZA-related fake registers.
2362         (aarch64_cannot_force_const_mem): Handle UNSPEC_SME_VQ constants.
2363         (aarch64_get_tpidr2_block, aarch64_get_tpidr2_ptr): New functions.
2364         (aarch64_init_tpidr2_block, aarch64_restore_za): Likewise.
2365         (aarch64_layout_frame): Check whether the current function creates
2366         new ZA state.  Record that it clobbers LR if so.
2367         (aarch64_expand_prologue): Handle functions that create new ZA state.
2368         (aarch64_expand_epilogue): Likewise.
2369         (aarch64_create_tpidr2_block): New function.
2370         (aarch64_restore_za): Likewise.
2371         (aarch64_start_call_args): Disallow calls to shared-ZA functions
2372         from functions that have no ZA state.  Emit a marker instruction
2373         before calls to private-ZA functions from functions that have
2374         SME state.
2375         (aarch64_expand_call): Add return registers for state that is
2376         managed via attributes.  Record the use and clobber information
2377         for the ZA registers.
2378         (aarch64_end_call_args): New function.
2379         (aarch64_regno_regclass): Handle FAKE_REGS.
2380         (aarch64_class_max_nregs): Likewise.
2381         (aarch64_override_options_internal): Require TARGET_SME for
2382         functions that have ZA state.
2383         (aarch64_conditional_register_usage): Handle FAKE_REGS.
2384         (aarch64_mov_operand_p): Handle RDSVL immediates.
2385         (aarch64_comp_type_attributes): Check that the ZA sharing flags
2386         are equal.
2387         (aarch64_merge_decl_attributes): New function.
2388         (aarch64_optimize_mode_switching, aarch64_mode_emit_za_save_buffer)
2389         (aarch64_mode_emit_local_sme_state, aarch64_mode_emit):  Likewise.
2390         (aarch64_insn_references_sme_state_p): Likewise.
2391         (aarch64_mode_needed_local_sme_state): Likewise.
2392         (aarch64_mode_needed_za_save_buffer, aarch64_mode_needed): Likewise.
2393         (aarch64_mode_after_local_sme_state, aarch64_mode_after): Likewise.
2394         (aarch64_local_sme_confluence, aarch64_mode_confluence): Likewise.
2395         (aarch64_one_shot_backprop, aarch64_local_sme_backprop): Likewise.
2396         (aarch64_mode_backprop, aarch64_mode_entry): Likewise.
2397         (aarch64_mode_exit, aarch64_mode_eh_handler): Likewise.
2398         (aarch64_mode_priority, aarch64_md_asm_adjust): Likewise.
2399         (TARGET_END_CALL_ARGS, TARGET_MERGE_DECL_ATTRIBUTES): Define.
2400         (TARGET_MODE_EMIT, TARGET_MODE_NEEDED, TARGET_MODE_AFTER): Likewise.
2401         (TARGET_MODE_CONFLUENCE, TARGET_MODE_BACKPROP): Likewise.
2402         (TARGET_MODE_ENTRY, TARGET_MODE_EXIT): Likewise.
2403         (TARGET_MODE_EH_HANDLER, TARGET_MODE_PRIORITY): Likewise.
2404         (TARGET_EXTRA_LIVE_ON_ENTRY): Likewise.
2405         (TARGET_MD_ASM_ADJUST): Use aarch64_md_asm_adjust.
2406         * config/aarch64/aarch64-c.cc (aarch64_define_unconditional_macros):
2407         Define __arm_new, __arm_preserves,__arm_in, __arm_out, and __arm_inout.
2409 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
2411         * config/aarch64/aarch64-passes.def
2412         (pass_late_thread_prologue_and_epilogue): New pass.
2413         * config/aarch64/aarch64-sme.md: New file.
2414         * config/aarch64/aarch64.md: Include it.
2415         (*tb<optab><mode>1): Rename to...
2416         (@aarch64_tb<optab><mode>): ...this.
2417         (call, call_value, sibcall, sibcall_value): Don't require operand 2
2418         to be a CONST_INT.
2419         * config/aarch64/aarch64-protos.h (aarch64_emit_call_insn): Return
2420         the insn.
2421         (make_pass_switch_sm_state): Declare.
2422         * config/aarch64/aarch64.h (TARGET_STREAMING_COMPATIBLE): New macro.
2423         (CALL_USED_REGISTER): Mark VG as call-preserved.
2424         (aarch64_frame::old_svcr_offset): New member variable.
2425         (machine_function::call_switches_sm_state): Likewise.
2426         (CUMULATIVE_ARGS::num_sme_mode_switch_args): Likewise.
2427         (CUMULATIVE_ARGS::sme_mode_switch_args): Likewise.
2428         * config/aarch64/aarch64.cc: Include tree-pass.h and cfgbuild.h.
2429         (aarch64_cfun_incoming_pstate_sm): New function.
2430         (aarch64_call_switches_pstate_sm): Likewise.
2431         (aarch64_reg_save_mode): Return DImode for VG_REGNUM.
2432         (aarch64_callee_isa_mode): New function.
2433         (aarch64_insn_callee_isa_mode): Likewise.
2434         (aarch64_guard_switch_pstate_sm): Likewise.
2435         (aarch64_switch_pstate_sm): Likewise.
2436         (aarch64_sme_mode_switch_regs): New class.
2437         (aarch64_record_sme_mode_switch_args): New function.
2438         (aarch64_finish_sme_mode_switch_args): Likewise.
2439         (aarch64_function_arg): Handle the end marker by returning a
2440         PARALLEL that contains the ABI cookie that we used previously
2441         alongside the result of aarch64_finish_sme_mode_switch_args.
2442         (aarch64_init_cumulative_args): Initialize num_sme_mode_switch_args.
2443         (aarch64_function_arg_advance): If a call would switch SM state,
2444         record all argument registers that would need to be saved around
2445         the mode switch.
2446         (aarch64_need_old_pstate_sm): New function.
2447         (aarch64_layout_frame): Decide whether the frame needs to store the
2448         incoming value of PSTATE.SM and allocate a save slot for it if so.
2449         If a function switches SME state, arrange to save the old value
2450         of the DWARF VG register.  Handle the case where this is the only
2451         register save slot above the FP.
2452         (aarch64_save_callee_saves): Handles saves of the DWARF VG register.
2453         (aarch64_get_separate_components): Prevent such saves from being
2454         shrink-wrapped.
2455         (aarch64_old_svcr_mem): New function.
2456         (aarch64_read_old_svcr): Likewise.
2457         (aarch64_guard_switch_pstate_sm): Likewise.
2458         (aarch64_expand_prologue): Handle saves of the DWARF VG register.
2459         Initialize any SVCR save slot.
2460         (aarch64_expand_call): Allow the cookie to be PARALLEL that contains
2461         both the UNSPEC_CALLEE_ABI value and a list of registers that need
2462         to be preserved across a change to PSTATE.SM.  If the call does
2463         involve such a change to PSTATE.SM, record the registers that
2464         would be clobbered by this process.  Also emit an instruction
2465         to mark the temporary change in VG.  Update call_switches_pstate_sm.
2466         (aarch64_emit_call_insn): Return the emitted instruction.
2467         (aarch64_frame_pointer_required): New function.
2468         (aarch64_conditional_register_usage): Prevent VG_REGNUM from being
2469         treated as a register operand.
2470         (aarch64_switch_pstate_sm_for_call): New function.
2471         (pass_data_switch_pstate_sm): New pass variable.
2472         (pass_switch_pstate_sm): New pass class.
2473         (make_pass_switch_pstate_sm): New function.
2474         (TARGET_FRAME_POINTER_REQUIRED): Define.
2475         * config/aarch64/t-aarch64 (s-check-sve-md): Add aarch64-sme.md.
2477 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
2479         * config/aarch64/aarch64.h (TARGET_NON_STREAMING): New macro.
2480         (TARGET_SVE2_AES, TARGET_SVE2_BITPERM): Use it.
2481         (TARGET_SVE2_SHA3, TARGET_SVE2_SM4): Likewise.
2482         * config/aarch64/aarch64-sve-builtins-base.def: Separate out
2483         the functions that require PSTATE.SM to be 0 and guard them
2484         with AARCH64_FL_SM_OFF.
2485         * config/aarch64/aarch64-sve-builtins-sve2.def: Likewise.
2486         * config/aarch64/aarch64-sve-builtins.cc (check_required_extensions):
2487         Enforce AARCH64_FL_SM_OFF requirements.
2488         * config/aarch64/aarch64-sve.md (aarch64_wrffr): Require
2489         TARGET_NON_STREAMING
2490         (aarch64_rdffr, aarch64_rdffr_z, *aarch64_rdffr_z_ptest): Likewise.
2491         (*aarch64_rdffr_ptest, *aarch64_rdffr_z_cc, *aarch64_rdffr_cc)
2492         (@aarch64_ld<fn>f1<mode>): Likewise.
2493         (@aarch64_ld<fn>f1_<ANY_EXTEND:optab><SVE_HSDI:mode><SVE_PARTIAL_I:mode>)
2494         (gather_load<mode><v_int_container>): Likewise
2495         (mask_gather_load<mode><v_int_container>): Likewise.
2496         (mask_gather_load<mode><v_int_container>): Likewise.
2497         (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise.
2498         (*mask_gather_load<mode><v_int_container>_sxtw): Likewise.
2499         (*mask_gather_load<mode><v_int_container>_uxtw): Likewise.
2500         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>)
2501         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
2502         <SVE_2BHSI:mode>): Likewise.
2503         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
2504         <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked)
2505         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
2506         <SVE_2BHSI:mode>_sxtw): Likewise.
2507         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
2508         <SVE_2BHSI:mode>_uxtw): Likewise.
2509         (@aarch64_ldff1_gather<mode>, @aarch64_ldff1_gather<mode>): Likewise.
2510         (*aarch64_ldff1_gather<mode>_sxtw): Likewise.
2511         (*aarch64_ldff1_gather<mode>_uxtw): Likewise.
2512         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode>
2513         <VNx4_NARROW:mode>): Likewise.
2514         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
2515         <VNx2_NARROW:mode>): Likewise.
2516         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
2517         <VNx2_NARROW:mode>_sxtw): Likewise.
2518         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
2519         <VNx2_NARROW:mode>_uxtw): Likewise.
2520         (@aarch64_sve_gather_prefetch<SVE_FULL_I:mode><VNx4SI_ONLY:mode>)
2521         (@aarch64_sve_gather_prefetch<SVE_FULL_I:mode><VNx2DI_ONLY:mode>)
2522         (*aarch64_sve_gather_prefetch<SVE_FULL_I:mode><VNx2DI_ONLY:mode>_sxtw)
2523         (*aarch64_sve_gather_prefetch<SVE_FULL_I:mode><VNx2DI_ONLY:mode>_uxtw)
2524         (scatter_store<mode><v_int_container>): Likewise.
2525         (mask_scatter_store<mode><v_int_container>): Likewise.
2526         (*mask_scatter_store<mode><v_int_container>_<su>xtw_unpacked)
2527         (*mask_scatter_store<mode><v_int_container>_sxtw): Likewise.
2528         (*mask_scatter_store<mode><v_int_container>_uxtw): Likewise.
2529         (@aarch64_scatter_store_trunc<VNx4_NARROW:mode><VNx4_WIDE:mode>)
2530         (@aarch64_scatter_store_trunc<VNx2_NARROW:mode><VNx2_WIDE:mode>)
2531         (*aarch64_scatter_store_trunc<VNx2_NARROW:mode><VNx2_WIDE:mode>_sxtw)
2532         (*aarch64_scatter_store_trunc<VNx2_NARROW:mode><VNx2_WIDE:mode>_uxtw)
2533         (@aarch64_sve_ld1ro<mode>, @aarch64_adr<mode>): Likewise.
2534         (*aarch64_adr_sxtw, *aarch64_adr_uxtw_unspec): Likewise.
2535         (*aarch64_adr_uxtw_and, @aarch64_adr<mode>_shift): Likewise.
2536         (*aarch64_adr<mode>_shift, *aarch64_adr_shift_sxtw): Likewise.
2537         (*aarch64_adr_shift_uxtw, @aarch64_sve_add_<optab><vsi2qi>): Likewise.
2538         (@aarch64_sve_<sve_fp_op><mode>, fold_left_plus_<mode>): Likewise.
2539         (mask_fold_left_plus_<mode>, @aarch64_sve_compact<mode>): Likewise.
2540         * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>)
2541         (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode>
2542         <SVE_PARTIAL_I:mode>): Likewise.
2543         (@aarch64_sve2_histcnt<mode>, @aarch64_sve2_histseg<mode>): Likewise.
2544         (@aarch64_pred_<SVE2_MATCH:sve_int_op><mode>): Likewise.
2545         (*aarch64_pred_<SVE2_MATCH:sve_int_op><mode>_cc): Likewise.
2546         (*aarch64_pred_<SVE2_MATCH:sve_int_op><mode>_ptest): Likewise.
2547         * config/aarch64/iterators.md (SVE_FP_UNARY_INT): Make FEXPA
2548         depend on TARGET_NON_STREAMING.
2549         (SVE_BFLOAT_TERNARY_LONG): Likewise BFMMLA.
2551 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
2553         * config/aarch64/aarch64.h (TARGET_BASE_SIMD): New macro.
2554         (TARGET_SIMD): Require PSTATE.SM to be 0.
2555         (AARCH64_ISA_SM_OFF): New macro.
2556         * config/aarch64/aarch64.cc (aarch64_array_mode_supported_p):
2557         Allow Advanced SIMD structure modes for TARGET_BASE_SIMD.
2558         (aarch64_print_operand): Support '%Z'.
2559         (aarch64_secondary_reload): Expect SVE moves to be used for
2560         Advanced SIMD modes if SVE is enabled and non-streaming
2561         Advanced SIMD isn't.
2562         (aarch64_register_move_cost): Likewise.
2563         (aarch64_simd_container_mode): Extend Advanced SIMD mode
2564         handling to TARGET_BASE_SIMD.
2565         (aarch64_expand_cpymem): Expand commentary.
2566         * config/aarch64/aarch64.md (arches): Add base_simd and nobase_simd.
2567         (arch_enabled): Handle it.
2568         (*mov<mode>_aarch64): Extend UMOV alternative to TARGET_BASE_SIMD.
2569         (*movti_aarch64): Use an SVE move instruction if non-streaming
2570         SIMD isn't available.
2571         (*mov<TFD:mode>_aarch64): Likewise.
2572         (load_pair_dw_tftf): Extend to TARGET_BASE_SIMD.
2573         (store_pair_dw_tftf): Likewise.
2574         (loadwb_pair<TX:mode>_<P:mode>): Likewise.
2575         (storewb_pair<TX:mode>_<P:mode>): Likewise.
2576         * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<VDMOV:mode>):
2577         Allow UMOV in streaming mode.
2578         (*aarch64_simd_mov<VQMOV:mode>): Use an SVE move instruction
2579         if non-streaming SIMD isn't available.
2580         (aarch64_store_lane0<mode>): Depend on TARGET_FLOAT rather than
2581         TARGET_SIMD.
2582         (aarch64_simd_mov_from_<mode>low): Likewise.  Use fmov if
2583         Advanced SIMD is completely disabled.
2584         (aarch64_simd_mov_from_<mode>high): Use SVE EXT instructions if
2585         non-streaming SIMD isn't available.
2587 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
2589         * doc/invoke.texi: Document SME.
2590         * doc/sourcebuild.texi: Document aarch64_sve.
2591         * config/aarch64/aarch64-option-extensions.def (sme): Define.
2592         * config/aarch64/aarch64.h (AARCH64_ISA_SME): New macro.
2593         (TARGET_SME): Likewise.
2594         * config/aarch64/aarch64.cc (aarch64_override_options_internal):
2595         Ensure that SME is present when compiling streaming code.
2597 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
2599         * config/aarch64/aarch64-isa-modes.def: New file.
2600         * config/aarch64/aarch64.h: Include it in the feature enumerations.
2601         (AARCH64_FL_SM_STATE, AARCH64_FL_ISA_MODES): New constants.
2602         (AARCH64_FL_DEFAULT_ISA_MODE): Likewise.
2603         (AARCH64_ISA_MODE): New macro.
2604         (CUMULATIVE_ARGS): Add an isa_mode field.
2605         * config/aarch64/aarch64-protos.h (aarch64_gen_callee_cookie): Declare.
2606         (aarch64_tlsdesc_abi_id): Return an arm_pcs.
2607         * config/aarch64/aarch64.cc (attr_streaming_exclusions)
2608         (aarch64_gnu_attributes, aarch64_gnu_attribute_table)
2609         (aarch64_arm_attributes, aarch64_arm_attribute_table): New tables.
2610         (aarch64_attribute_table): Redefine to include the gnu and arm
2611         attributes.
2612         (aarch64_fntype_pstate_sm, aarch64_fntype_isa_mode): New functions.
2613         (aarch64_fndecl_pstate_sm, aarch64_fndecl_isa_mode): Likewise.
2614         (aarch64_gen_callee_cookie, aarch64_callee_abi): Likewise.
2615         (aarch64_insn_callee_cookie, aarch64_insn_callee_abi): Use them.
2616         (aarch64_function_arg, aarch64_output_mi_thunk): Likewise.
2617         (aarch64_init_cumulative_args): Initialize the isa_mode field.
2618         (aarch64_output_mi_thunk): Use aarch64_gen_callee_cookie to get
2619         the ABI cookie.
2620         (aarch64_override_options): Add the ISA mode to the feature set.
2621         (aarch64_temporary_target::copy_from_fndecl): Likewise.
2622         (aarch64_fndecl_options, aarch64_handle_attr_arch): Likewise.
2623         (aarch64_set_current_function): Maintain the correct ISA mode.
2624         (aarch64_tlsdesc_abi_id): Return an arm_pcs.
2625         (aarch64_comp_type_attributes): Handle arm::streaming and
2626         arm::streaming_compatible.
2627         * config/aarch64/aarch64-c.cc (aarch64_define_unconditional_macros):
2628         Define __arm_streaming and __arm_streaming_compatible.
2629         * config/aarch64/aarch64.md (tlsdesc_small_<mode>): Use
2630         aarch64_gen_callee_cookie to get the ABI cookie.
2631         * config/aarch64/t-aarch64 (TM_H): Add all feature-related .def files.
2633 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
2635         * config/aarch64/aarch64-sve-builtins-base.cc
2636         (svreinterpret_impl::fold): Punt on tuple forms.
2637         (svreinterpret_impl::expand): Use tuple_mode instead of vector_mode.
2638         * config/aarch64/aarch64-sve-builtins-base.def (svreinterpret):
2639         Extend to x1234 groups.
2640         * config/aarch64/aarch64-sve-builtins-functions.h
2641         (multi_vector_function::vectors_per_tuple): If the function has
2642         a group suffix, get the number of vectors from there.
2643         * config/aarch64/aarch64-sve-builtins-shapes.h (reinterpret): Declare.
2644         * config/aarch64/aarch64-sve-builtins-shapes.cc (reinterpret_def)
2645         (reinterpret): New function shape.
2646         * config/aarch64/aarch64-sve-builtins.cc (function_groups): Handle
2647         DEF_SVE_FUNCTION_GS.
2648         * config/aarch64/aarch64-sve-builtins.def (DEF_SVE_FUNCTION_GS): New
2649         macro.
2650         (DEF_SVE_FUNCTION): Forward to DEF_SVE_FUNCTION_GS by default.
2651         * config/aarch64/aarch64-sve-builtins.h
2652         (function_instance::tuple_mode): New member function.
2653         (function_base::vectors_per_tuple): Take the function instance
2654         as argument and get the number from the group suffix.
2655         (function_instance::vectors_per_tuple): Update accordingly.
2656         * config/aarch64/iterators.md (SVE_FULLx2, SVE_FULLx3, SVE_FULLx4)
2657         (SVE_ALL_STRUCT): New mode iterators.
2658         (SVE_STRUCT): Redefine in terms of SVE_FULL*.
2659         * config/aarch64/aarch64-sve.md (@aarch64_sve_reinterpret<mode>)
2660         (*aarch64_sve_reinterpret<mode>): Extend to SVE structure modes.
2662 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
2664         * config/aarch64/aarch64-sve-builtins.cc
2665         (function_resolver::require_derived_vector_type): Add a specific
2666         error message for the case in which the caller wants a single
2667         vector whose element type matches a previous tuyple argument.
2669 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
2671         * config/aarch64/aarch64-sve-builtins.h
2672         (function_resolver::lookup_form): Add an overload that takes
2673         an sve_type rather than type and group suffixes.
2674         (function_resolver::resolve_to): Likewise.
2675         (function_resolver::infer_vector_or_tuple_type): Return an sve_type.
2676         (function_resolver::infer_tuple_type): Likewise.
2677         (function_resolver::require_matching_vector_type): Take an sve_type
2678         rather than a type_suffix_index.
2679         (function_resolver::require_derived_vector_type): Likewise.
2680         * config/aarch64/aarch64-sve-builtins.cc (num_vectors_to_group):
2681         New function.
2682         (function_resolver::lookup_form): Add an overload that takes
2683         an sve_type rather than type and group suffixes.
2684         (function_resolver::resolve_to): Likewise.
2685         (function_resolver::infer_vector_or_tuple_type): Return an sve_type.
2686         (function_resolver::infer_tuple_type): Likewise.
2687         (function_resolver::infer_vector_type): Update accordingly.
2688         (function_resolver::require_matching_vector_type): Take an sve_type
2689         rather than a type_suffix_index.
2690         (function_resolver::require_derived_vector_type): Likewise.
2691         * config/aarch64/aarch64-sve-builtins-shapes.cc (get_def::resolve)
2692         (set_def::resolve, store_def::resolve, tbl_tuple_def::resolve): Update
2693         calls accordingly.
2695 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
2697         * config/aarch64/aarch64-sve-builtins.h
2698         (function_resolver::require_matching_vector_type): Add a parameter
2699         that specifies the number of the earlier argument that is being
2700         matched against.
2701         * config/aarch64/aarch64-sve-builtins.cc
2702         (function_resolver::require_matching_vector_type): Likewise.
2703         (require_derived_vector_type): Update calls accordingly.
2704         (function_resolver::resolve_unary): Likewise.
2705         (function_resolver::resolve_uniform): Likewise.
2706         (function_resolver::resolve_uniform_opt_n): Likewise.
2707         * config/aarch64/aarch64-sve-builtins-shapes.cc
2708         (binary_long_lane_def::resolve): Likewise.
2709         (clast_def::resolve, ternary_uint_def::resolve): Likewise.
2711 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
2713         * config/aarch64/aarch64-sve-builtins.h
2714         (function_resolver::infer_sve_type): New member function.
2715         (function_resolver::report_incorrect_num_vectors): Likewise.
2716         * config/aarch64/aarch64-sve-builtins.cc
2717         (function_resolver::infer_sve_type): New function,.
2718         (function_resolver::report_incorrect_num_vectors): New function,
2719         split out from...
2720         (function_resolver::infer_vector_or_tuple_type): ...here.  Use
2721         infer_sve_type.
2723 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
2725         * config/aarch64/aarch64-sve-builtins.h (sve_type): New struct.
2726         (sve_type::operator==): New function.
2727         (function_resolver::get_vector_type): Delete.
2728         (function_resolver::report_no_such_form): Take an sve_type rather
2729         than a type_suffix_index.
2730         * config/aarch64/aarch64-sve-builtins.cc (get_vector_type): New
2731         function.
2732         (function_resolver::get_vector_type): Delete.
2733         (function_resolver::report_no_such_form): Take an sve_type rather
2734         than a type_suffix_index.
2735         (find_sve_type): New function, split out from...
2736         (function_resolver::infer_vector_or_tuple_type): ...here.
2738 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
2740         * config/aarch64/aarch64-sve-builtins-shapes.cc (build_one): Take
2741         a group suffix index parameter.
2742         (build_32_64, build_all): Update accordingly.  Iterate over all
2743         group suffixes.
2744         * config/aarch64/aarch64-sve-builtins-sve2.cc (svqrshl_impl::fold)
2745         (svqshl_impl::fold, svrshl_impl::fold): Update function_instance
2746         constructors.
2747         * config/aarch64/aarch64-sve-builtins.cc (group_suffixes): New array.
2748         (groups_none): New constant.
2749         (function_groups): Initialize the groups field.
2750         (function_instance::hash): Hash the group index.
2751         (function_builder::get_name): Add the group suffix.
2752         (function_builder::add_overloaded_functions): Iterate over all
2753         group suffixes.
2754         (function_resolver::lookup_form): Take a group suffix parameter.
2755         (function_resolver::resolve_to): Likewise.
2756         * config/aarch64/aarch64-sve-builtins.def (DEF_SVE_GROUP_SUFFIX): New
2757         macro.
2758         (x2, x3, x4): New group suffixes.
2759         * config/aarch64/aarch64-sve-builtins.h (group_suffix_index): New enum.
2760         (group_suffix_info): New structure.
2761         (function_group_info::groups): New member variable.
2762         (function_instance::group_suffix_id): Likewise.
2763         (group_suffixes): New array.
2764         (function_instance::operator==): Compare the group suffixes.
2765         (function_instance::group_suffix): New function.
2767 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
2769         * config/aarch64/aarch64-sve-builtins.cc (function_groups): Remove
2770         implied requirement on SVE.
2771         * config/aarch64/aarch64-sve-builtins-base.def: Explicitly require SVE.
2772         * config/aarch64/aarch64-sve-builtins-sve2.def: Likewise.
2774 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
2776         * config/aarch64/aarch64-protos.h (aarch64_sve_rdvl_immediate_p)
2777         (aarch64_output_sve_rdvl): Declare.
2778         * config/aarch64/aarch64.cc (aarch64_sve_cnt_factor_p): New
2779         function, split out from...
2780         (aarch64_sve_cnt_immediate_p): ...here.
2781         (aarch64_sve_rdvl_factor_p): New function.
2782         (aarch64_sve_rdvl_immediate_p): Likewise.
2783         (aarch64_output_sve_rdvl): Likewise.
2784         (aarch64_offset_temporaries): Rewrite the SVE handling to use RDVL
2785         for some cases.
2786         (aarch64_expand_mov_immediate): Handle RDVL immediates.
2787         (aarch64_mov_operand_p): Likewise.
2788         * config/aarch64/constraints.md (Usr): New constraint.
2789         * config/aarch64/aarch64.md (*mov<SHORT:mode>_aarch64): Add an RDVL
2790         alternative.
2791         (*movsi_aarch64, *movdi_aarch64): Likewise.
2793 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
2795         * config/aarch64/aarch64-sve-builtins.h:
2796         (function_checker::require_immediate_lane_index): Add an argument
2797         for the index of the indexed vector argument.
2798         * config/aarch64/aarch64-sve-builtins.cc
2799         (function_checker::require_immediate_lane_index): Likewise.
2800         * config/aarch64/aarch64-sve-builtins-shapes.cc
2801         (ternary_bfloat_lane_base::check): Update accordingly.
2802         (ternary_qq_lane_base::check): Likewise.
2803         (binary_lane_def::check): Likewise.
2804         (binary_long_lane_def::check): Likewise.
2805         (ternary_lane_def::check): Likewise.
2806         (ternary_lane_rotate_def::check): Likewise.
2807         (ternary_long_lane_def::check): Likewise.
2808         (ternary_qq_lane_rotate_def::check): Likewise.
2810 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
2812         * target.def (md_asm_adjust): Add a uses parameter.
2813         * doc/tm.texi: Regenerate.
2814         * cfgexpand.cc (expand_asm_loc): Update call to md_asm_adjust.
2815         Handle any USEs created by the target.
2816         (expand_asm_stmt): Likewise.
2817         * recog.cc (asm_noperands): Handle asms with USEs.
2818         (decode_asm_operands): Likewise.
2819         * config/arm/aarch-common-protos.h (arm_md_asm_adjust): Add uses
2820         parameter.
2821         * config/arm/aarch-common.cc (arm_md_asm_adjust): Likewise.
2822         * config/arm/arm.cc (thumb1_md_asm_adjust): Likewise.
2823         * config/avr/avr.cc (avr_md_asm_adjust): Likewise.
2824         * config/cris/cris.cc (cris_md_asm_adjust): Likewise.
2825         * config/i386/i386.cc (ix86_md_asm_adjust): Likewise.
2826         * config/mn10300/mn10300.cc (mn10300_md_asm_adjust): Likewise.
2827         * config/nds32/nds32.cc (nds32_md_asm_adjust): Likewise.
2828         * config/pdp11/pdp11.cc (pdp11_md_asm_adjust): Likewise.
2829         * config/rs6000/rs6000.cc (rs6000_md_asm_adjust): Likewise.
2830         * config/s390/s390.cc (s390_md_asm_adjust): Likewise.
2831         * config/vax/vax.cc (vax_md_asm_adjust): Likewise.
2832         * config/visium/visium.cc (visium_md_asm_adjust): Likewise.
2834 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
2836         * doc/tm.texi.in: Add TARGET_START_CALL_ARGS.
2837         * doc/tm.texi: Regenerate.
2838         * target.def (start_call_args): New hook.
2839         (call_args, end_call_args): Add a parameter for the cumulative
2840         argument information.
2841         * hooks.h (hook_void_rtx_tree): Delete.
2842         * hooks.cc (hook_void_rtx_tree): Likewise.
2843         * targhooks.h (hook_void_CUMULATIVE_ARGS): Declare.
2844         (hook_void_CUMULATIVE_ARGS_rtx_tree): Likewise.
2845         * targhooks.cc (hook_void_CUMULATIVE_ARGS): New function.
2846         (hook_void_CUMULATIVE_ARGS_rtx_tree): Likewise.
2847         * calls.cc (expand_call): Call start_call_args before computing
2848         and storing stack parameters.  Pass the cumulative argument
2849         information to call_args and end_call_args.
2850         (emit_library_call_value_1): Likewise.
2851         * config/nvptx/nvptx.cc (nvptx_call_args): Add a cumulative
2852         argument parameter.
2853         (nvptx_end_call_args): Likewise.
2855 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
2857         * doc/tm.texi.in: Add TARGET_EMIT_EPILOGUE_FOR_SIBCALL.
2858         * doc/tm.texi: Regenerate.
2859         * target.def (emit_epilogue_for_sibcall): New hook.
2860         * calls.cc (can_implement_as_sibling_call_p): Use it.
2861         * function.cc (thread_prologue_and_epilogue_insns): Likewise.
2862         (reposition_prologue_and_epilogue_notes): Likewise.
2863         * config/aarch64/aarch64-protos.h (aarch64_expand_epilogue): Take
2864         an rtx_call_insn * rather than a bool.
2865         * config/aarch64/aarch64.cc (aarch64_expand_epilogue): Likewise.
2866         (TARGET_EMIT_EPILOGUE_FOR_SIBCALL): Define.
2867         * config/aarch64/aarch64.md (epilogue): Update call.
2868         (sibcall_epilogue): Delete.
2870 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
2872         * target.def (use_late_prologue_epilogue): New hook.
2873         * doc/tm.texi.in: Add TARGET_USE_LATE_PROLOGUE_EPILOGUE.
2874         * doc/tm.texi: Regenerate.
2875         * passes.def (pass_late_thread_prologue_and_epilogue): New pass.
2876         * tree-pass.h (make_pass_late_thread_prologue_and_epilogue): Declare.
2877         * function.cc (pass_thread_prologue_and_epilogue::gate): New function.
2878         (pass_data_late_thread_prologue_and_epilogue): New pass variable.
2879         (pass_late_thread_prologue_and_epilogue): New pass class.
2880         (make_pass_late_thread_prologue_and_epilogue): New function.
2882 2023-12-05  Kito Cheng  <kito.cheng@sifive.com>
2884         * common/config/riscv/riscv-common.cc
2885         (riscv_subset_list::check_conflict_ext): Check zcd conflicts
2886         with zcmt and zcmp.
2888 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
2890         PR rtl-optimization/112278
2891         * lra-int.h (lra_update_biggest_mode): New function.
2892         * lra-coalesce.cc (merge_pseudos): Use it.
2893         * lra-lives.cc (process_bb_lives): Likewise.
2894         * lra.cc (new_insn_reg): Likewise.
2896 2023-12-05  Jakub Jelinek  <jakub@redhat.com>
2898         PR tree-optimization/112843
2899         * gimple-lower-bitint.cc (gimple_lower_bitint): Change lhs of stmt
2900         to lhs2 before building and inserting lhs = (cast) lhs2; assignment.
2901         Adjust stmt operands before adjusting lhs.
2903 2023-12-05  xuli  <xuli1@eswincomputing.com>
2905         * config/riscv/riscv-v.cc (sew64_scalar_helper): Bugfix.
2907 2023-12-05  Jakub Jelinek  <jakub@redhat.com>
2909         PR target/112816
2910         * config/i386/sse.md ((eq (eq (lshiftrt x elt_bits-1) 0) 0)): New
2911         splitter to turn psrld $31; pcmpeq; pcmpeq into psrad $31.
2913 2023-12-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2915         * config/riscv/autovec.md: Add blocker.
2916         * config/riscv/riscv-protos.h (gather_scatter_valid_offset_p): New function.
2917         * config/riscv/riscv-v.cc (gather_scatter_valid_offset_p): Ditto.
2919 2023-12-05  Richard Biener  <rguenther@suse.de>
2921         PR tree-optimization/112827
2922         PR tree-optimization/112848
2923         * tree-scalar-evolution.cc (final_value_replacement_loop):
2924         Compute the insert location for each insert.
2926 2023-12-05  liuhongt  <hongtao.liu@intel.com>
2928         * config/i386/i386.cc (ix86_vector_costs::add_stmt_cost):
2929         Count sse_reg/gpr_regs for components not loaded from memory.
2930         (ix86_vector_costs:ix86_vector_costs): New constructor.
2931         (ix86_vector_costs::m_num_gpr_needed[3]): New private memeber.
2932         (ix86_vector_costs::m_num_sse_needed[3]): Ditto.
2933         (ix86_vector_costs::finish_cost): Estimate overall register
2934         pressure cost.
2935         (ix86_vector_costs::ix86_vect_estimate_reg_pressure): New
2936         function.
2938 2023-12-05  liuhongt  <hongtao.liu@intel.com>
2940         * config/i386/sse.md (udot_prodv64qi): New expander.
2941         (udot_prod<mode>): Emulates with VEC_UNPACKU_EXPR +
2942         DOT_PROD (short, int).
2944 2023-12-05  Marek Polacek  <polacek@redhat.com>
2946         PR c++/107687
2947         PR c++/110997
2948         * doc/invoke.texi: Document -fno-immediate-escalation.
2950 2023-12-04  Andrew Pinski  <quic_apinski@quicinc.com>
2952         * match.pd (zero_one_valued_p): For convert
2953         make sure type is not a signed 1-bit integer.
2955 2023-12-04  Jeff Law  <jlaw@ventanamicro.com>
2957         * config/microblaze/microblaze.md (movhi): Use %i for half-word
2958         loads to properly select between lhu/lhui.
2960 2023-12-04  Robin Dapp  <rdapp@ventanamicro.com>
2962         * config/riscv/riscv-string.cc (expand_rawmemchr): Increment
2963         source address by vl * element_size.
2965 2023-12-04  Robin Dapp  <rdapp@ventanamicro.com>
2967         * config/riscv/riscv-opts.h (enum riscv_stringop_strategy_enum):
2968         Rename...
2969         (enum stringop_strategy_enum): ... to this.
2970         * config/riscv/riscv-string.cc (riscv_expand_block_move): New
2971         wrapper expander handling the strategies and delegation.
2972         (riscv_expand_block_move_scalar): Rename function and make
2973         static.
2974         (expand_block_move): Remove strategy handling.
2975         * config/riscv/riscv.md: Call expander wrapper.
2976         * config/riscv/riscv.opt: Rename.
2978 2023-12-04  Richard Biener  <rguenther@suse.de>
2980         PR middle-end/112785
2981         * function.h (get_new_clique): New inline function handling
2982         last_clique overflow.
2983         * cfgrtl.cc (duplicate_insn_chain): Use it.
2984         * tree-cfg.cc (gimple_duplicate_bb): Likewise.
2985         * tree-inline.cc (remap_dependence_clique): Likewise.
2987 2023-12-04  Christoph Müllner  <christoph.muellner@vrull.eu>
2989         PR target/112650
2990         * doc/invoke.texi: Document riscv-strcmp-inline-limit.
2992 2023-12-04  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2994         PR target/112431
2995         * config/riscv/vector.md: Fix incorrect overlap in v0.
2997 2023-12-04  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2999         PR target/112431
3000         * config/riscv/vector.md: Add highest-number overlap support.
3002 2023-12-04  Richard Biener  <rguenther@suse.de>
3004         PR tree-optimization/112818
3005         * tree-vect-stmts.cc (vectorizable_bswap): Check input and
3006         output vector types have the same size.
3008 2023-12-04  Richard Biener  <rguenther@suse.de>
3010         PR tree-optimization/112827
3011         * tree-scalar-evolution.cc (final_value_replacement_loop):
3012         Do not release SSA name but keep a dead initialization around.
3014 2023-12-04  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
3016         PR target/112431
3017         * config/riscv/vector.md: Remove earlyclobber from widen reduction.
3019 2023-12-04  Indu Bhagat  <indu.bhagat@oracle.com>
3021         PR debug/112656
3022         * btfout.cc (btf_asm_type): Fixup ctti_name for all
3023         BTF types of kind BTF_KIND_FUNC_PROTO.
3025 2023-12-04  Indu Bhagat  <indu.bhagat@oracle.com>
3027         PR debug/112768
3028         * btfout.cc (get_btf_type_name): New definition.
3029         (btf_collect_datasec): Update dtd_name to the original type name
3030         string.
3031         (btf_asm_type_ref): Use the new get_btf_type_name function
3032         instead.
3033         (btf_asm_type): Likewise.
3034         (btf_asm_func_type): Likewise.
3036 2023-12-04  Jakub Jelinek  <jakub@redhat.com>
3038         PR target/112837
3039         * config/i386/i386.cc (ix86_elim_entry_set_got): Before checking
3040         for UNSPEC_SET_GOT check that SET_SRC is UNSPEC.  Use SET_SRC and
3041         SET_DEST macros instead of XEXP, rename vec variable to set.
3043 2023-12-04  Jakub Jelinek  <jakub@redhat.com>
3045         PR target/112816
3046         * config/i386/sse.md (signbit<mode>2): Force operands[1] into a REG.
3048 2023-12-04  Feng Wang  <wangfeng@eswincomputing.com>
3050         * common/config/riscv/riscv-common.cc: Add zvkb ISA info.
3051         * config/riscv/riscv.opt: Add Mask(ZVKB)
3053 2023-12-04  Fei Gao  <gaofei@eswincomputing.com>
3054             Xiao Zeng <zengxiao@eswincomputing.com>
3056         * config/riscv/riscv.md (*mov<GPR:mode><X:mode>cc):move to sfb.md
3057         * config/riscv/sfb.md: New file.
3059 2023-12-04  Kito Cheng  <kito.cheng@sifive.com>
3061         * config/riscv/riscv-cores.def: Add sifive-x280.
3062         * doc/invoke.texi (RISC-V Options): Add sifive-x280
3064 2023-12-04  Kito Cheng  <kito.cheng@sifive.com>
3066         * common/config/riscv/riscv-common.cc (riscv_implied_predicator_t): New.
3067         (riscv_implied_info_t::riscv_implied_info_t): New.
3068         (riscv_implied_info_t::match): New.
3069         (riscv_implied_info): New entry for zcf.
3070         (riscv_subset_list::handle_implied_ext): Use
3071         riscv_implied_info_t::match.
3072         (riscv_subset_list::check_implied_ext): Ditto.
3073         (riscv_subset_list::handle_combine_ext): Ditto.
3074         (riscv_subset_list::parse): Move zcf implication handling to
3075         riscv_implied_infos.
3077 2023-12-04  Kito Cheng  <kito.cheng@sifive.com>
3079         * common/config/riscv/riscv-common.cc
3080         (riscv_subset_list::check_conflict_ext): New.
3081         (riscv_subset_list::parse): Move checking conflict ext. to
3082         check_conflict_ext.
3083         * config/riscv/riscv-subset.h:
3084         Add riscv_subset_list::check_conflict_ext.
3086 2023-12-04  Hu, Lin1  <lin1.hu@intel.com>
3088         * common/config/i386/cpuinfo.h (get_available_features): Move USER_MSR
3089         to the correct location.
3091 2023-12-04  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
3093         * config/riscv/riscv.md: Rostify the constraints.
3095 2023-12-04  chenxiaolong  <chenxiaolong@loongson.cn>
3097         * doc/extend.texi: Add information about the intrinsic function of the vector
3098         instruction.
3100 2023-12-03  Jakub Jelinek  <jakub@redhat.com>
3102         PR middle-end/112807
3103         * gimple-lower-bitint.cc (bitint_large_huge::lower_addsub_overflow):
3104         When choosing type0 and type1 types, if prec3 has small/middle bitint
3105         kind, use maximum of type0 and type1's precision instead of prec3.
3107 2023-12-03  Jeff Law  <jlaw@ventanamicro.com>
3109         * config/frv/frv.h (TRANSFER_FROM_TRAMPOLINE): Add prototype for exit.
3111 2023-12-02  Richard Sandiford  <richard.sandiford@arm.com>
3113         * attribs.cc (comp_type_attributes): Pass the full TREE_PURPOSE
3114         to lookup_attribute_spec, rather than just the name.
3115         (remove_attributes_matching): Likewise.
3117 2023-12-02  Richard Sandiford  <richard.sandiford@arm.com>
3119         * attribs.cc (find_same_attribute): New function.
3120         (decl_attributes, comp_type_attributes): Use it when looking
3121         up one list's attributes in another list.
3123 2023-12-02  Richard Sandiford  <richard.sandiford@arm.com>
3125         * Makefile.in (GTFILES): Add attribs.cc.
3126         * attribs.cc (gnu_namespace_cache): New variable.
3127         (get_gnu_namespace): New function.
3128         (lookup_attribute_spec): Use it instead of get_identifier ("gnu").
3129         (get_attribute_namespace, attribs_cc_tests): Likewise.
3131 2023-12-02  Richard Sandiford  <richard.sandiford@arm.com>
3133         * attribs.h (scoped_attribute_specs): New structure.
3134         (register_scoped_attributes): Take a reference to a
3135         scoped_attribute_specs instead of separate namespace and array
3136         parameters.
3137         * plugin.h (register_scoped_attributes): Likewise.
3138         * attribs.cc (register_scoped_attributes): Likewise.
3139         (attribute_tables): Change into an array of scoped_attribute_specs
3140         pointers.  Reduce to 1 element for frontends and 1 element for targets.
3141         (empty_attribute_table): Delete.
3142         (check_attribute_tables): Update for changes to attribute_tables.
3143         Use a hash_set to identify duplicates.
3144         (handle_ignored_attributes_option): Update for above changes.
3145         (init_attributes): Likewise.
3146         (excl_pair): Delete.
3147         (test_attribute_exclusions): Update for above changes.  Don't
3148         enforce symmetry for standard attributes in the top-level namespace.
3149         * langhooks-def.h (LANG_HOOKS_COMMON_ATTRIBUTE_TABLE): Delete.
3150         (LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE): Likewise.
3151         (LANG_HOOKS_INITIALIZER): Update accordingly.
3152         (LANG_HOOKS_ATTRIBUTE_TABLE): Define to an empty constructor.
3153         * langhooks.h (lang_hooks::common_attribute_table): Delete.
3154         (lang_hooks::format_attribute_table): Likewise.
3155         (lang_hooks::attribute_table): Redefine to an array of
3156         scoped_attribute_specs pointers.
3157         * target-def.h (TARGET_GNU_ATTRIBUTES): New macro.
3158         * target.def (attribute_spec): Redefine to return an array of
3159         scoped_attribute_specs pointers.
3160         * tree-inline.cc (function_attribute_inlinable_p): Update accordingly.
3161         * doc/tm.texi: Regenerate.
3162         * config/aarch64/aarch64.cc (aarch64_attribute_table): Define using
3163         TARGET_GNU_ATTRIBUTES.
3164         * config/alpha/alpha.cc (vms_attribute_table): Likewise.
3165         * config/avr/avr.cc (avr_attribute_table): Likewise.
3166         * config/bfin/bfin.cc (bfin_attribute_table): Likewise.
3167         * config/bpf/bpf.cc (bpf_attribute_table): Likewise.
3168         * config/csky/csky.cc (csky_attribute_table): Likewise.
3169         * config/epiphany/epiphany.cc (epiphany_attribute_table): Likewise.
3170         * config/gcn/gcn.cc (gcn_attribute_table): Likewise.
3171         * config/h8300/h8300.cc (h8300_attribute_table): Likewise.
3172         * config/loongarch/loongarch.cc (loongarch_attribute_table): Likewise.
3173         * config/m32c/m32c.cc (m32c_attribute_table): Likewise.
3174         * config/m32r/m32r.cc (m32r_attribute_table): Likewise.
3175         * config/m68k/m68k.cc (m68k_attribute_table): Likewise.
3176         * config/mcore/mcore.cc (mcore_attribute_table): Likewise.
3177         * config/microblaze/microblaze.cc (microblaze_attribute_table):
3178         Likewise.
3179         * config/mips/mips.cc (mips_attribute_table): Likewise.
3180         * config/msp430/msp430.cc (msp430_attribute_table): Likewise.
3181         * config/nds32/nds32.cc (nds32_attribute_table): Likewise.
3182         * config/nvptx/nvptx.cc (nvptx_attribute_table): Likewise.
3183         * config/riscv/riscv.cc (riscv_attribute_table): Likewise.
3184         * config/rl78/rl78.cc (rl78_attribute_table): Likewise.
3185         * config/rx/rx.cc (rx_attribute_table): Likewise.
3186         * config/s390/s390.cc (s390_attribute_table): Likewise.
3187         * config/sh/sh.cc (sh_attribute_table): Likewise.
3188         * config/sparc/sparc.cc (sparc_attribute_table): Likewise.
3189         * config/stormy16/stormy16.cc (xstormy16_attribute_table): Likewise.
3190         * config/v850/v850.cc (v850_attribute_table): Likewise.
3191         * config/visium/visium.cc (visium_attribute_table): Likewise.
3192         * config/arc/arc.cc (arc_attribute_table): Likewise.  Move further
3193         down file.
3194         * config/arm/arm.cc (arm_attribute_table): Update for above changes,
3195         using...
3196         (arm_gnu_attributes, arm_gnu_attribute_table): ...these new globals.
3197         * config/i386/i386-options.h (ix86_attribute_table): Delete.
3198         (ix86_gnu_attribute_table): Declare.
3199         * config/i386/i386-options.cc (ix86_attribute_table): Replace with...
3200         (ix86_gnu_attributes, ix86_gnu_attribute_table): ...these two globals.
3201         * config/i386/i386.cc (ix86_attribute_table): Define as an array of
3202         scoped_attribute_specs pointers.
3203         * config/ia64/ia64.cc (ia64_attribute_table): Update for above changes,
3204         using...
3205         (ia64_gnu_attributes, ia64_gnu_attribute_table): ...these new globals.
3206         * config/rs6000/rs6000.cc (rs6000_attribute_table): Update for above
3207         changes, using...
3208         (rs6000_gnu_attributes, rs6000_gnu_attribute_table): ...these new
3209         globals.
3211 2023-12-02  Roger Sayle  <roger@nextmovesoftware.com>
3213         * config/riscv/riscv-vsetvl.cc (csetvl_info::parse_insn): Rename
3214         local variable from demand_flags to dflags, to avoid conflicting
3215         with (enumeration) type of the same name.
3217 2023-12-02  Li Wei  <liwei@loongson.cn>
3219         * config/loongarch/loongarch.cc (loongarch_is_odd_extraction):
3220         Supplementary function prototype.
3221         (loongarch_is_even_extraction): Adjust.
3222         (loongarch_try_expand_lsx_vshuf_const): Adjust.
3223         (loongarch_is_extraction_permutation): Adjust.
3224         (loongarch_expand_vec_perm_const_2): Adjust.
3226 2023-12-02  Li Wei  <liwei@loongson.cn>
3228         * config/loongarch/loongarch.md (v2di): Used to simplify the
3229         following templates.
3230         (popcount<mode>2): New.
3232 2023-12-02  Li Wei  <liwei@loongson.cn>
3234         * config/loongarch/loongarch.h (CTZ_DEFINED_VALUE_AT_ZERO): Add
3235         description.
3236         (CLZ_DEFINED_VALUE_AT_ZERO): Remove duplicate definition.
3238 2023-12-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
3240         PR target/112801
3241         * config/riscv/vector.md: Add !TARGET_64BIT.
3243 2023-12-02  Pan Li  <pan2.li@intel.com>
3245         PR target/112743
3246         * config/riscv/riscv.cc (riscv_legitimize_move): Take the
3247         exist (U *mode) and handle DFmode like DImode when EEW is
3248         32bits for ZVE32F.
3250 2023-12-01  Andrew MacLeod  <amacleod@redhat.com>
3252         * gimple-range-fold.h (range_compatible_p): Relocate.
3253         * value-range.h (range_compatible_p): Here.
3254         * range-op-mixed.h (operand_equal::operand_check_p): Call
3255         range_compatible_p rather than comparing precision.
3256         (operand_not_equal::operand_check_p): Ditto.
3257         (operand_not_lt::operand_check_p): Ditto.
3258         (operand_not_le::operand_check_p): Ditto.
3259         (operand_not_gt::operand_check_p): Ditto.
3260         (operand_not_ge::operand_check_p): Ditto.
3261         (operand_plus::operand_check_p): Ditto.
3262         (operand_abs::operand_check_p): Ditto.
3263         (operand_minus::operand_check_p): Ditto.
3264         (operand_negate::operand_check_p): Ditto.
3265         (operand_mult::operand_check_p): Ditto.
3266         (operand_bitwise_not::operand_check_p): Ditto.
3267         (operand_bitwise_xor::operand_check_p): Ditto.
3268         (operand_bitwise_and::operand_check_p): Ditto.
3269         (operand_bitwise_or::operand_check_p): Ditto.
3270         (operand_min::operand_check_p): Ditto.
3271         (operand_max::operand_check_p): Ditto.
3272         * range-op.cc (operand_lshift::operand_check_p): Ditto.
3273         (operand_rshift::operand_check_p): Ditto.
3274         (operand_logical_and::operand_check_p): Ditto.
3275         (operand_logical_or::operand_check_p): Ditto.
3276         (operand_logical_not::operand_check_p): Ditto.
3278 2023-12-01  Vladimir N. Makarov  <vmakarov@redhat.com>
3280         PR target/112445
3281         * lra.h (lra): Add one more arg.
3282         * lra-int.h (lra_verbose, lra_dump_insns): New externals.
3283         (lra_dump_insns_if_possible): Ditto.
3284         * lra.cc (lra_dump_insns): Dump all insns.
3285         (lra_dump_insns_if_possible):  Dump all insns for lra_verbose >= 7.
3286         (lra_verbose): New global.
3287         (lra): Add new arg.  Setup lra_verbose from its value.
3288         * lra-assigns.cc (lra_split_hard_reg_for): Dump insns if rtl
3289         was changed.
3290         * lra-remat.cc (lra_remat): Dump insns if rtl was changed.
3291         * lra-constraints.cc (lra_inheritance): Dump insns.
3292         (lra_constraints, lra_undo_inheritance): Dump insns if rtl
3293         was changed.
3294         (remove_inheritance_pseudos): Use restore reg if it is set up.
3295         * ira.cc: (lra): Pass internal_flag_ira_verbose.
3297 2023-12-01  Jakub Jelinek  <jakub@redhat.com>
3299         * doc/extend.texi (__builtin_addc, __builtin_addcl, __builtin_addcll,
3300         __builtin_subc, __builtin_subcl, __builtin_subcll,
3301         __builtin_stdc_bit_width, __builtin_stdc_count_ones,
3302         __builtin_stdc_count_zeros, __builtin_stdc_first_leading_one,
3303         __builtin_stdc_first_leading_zero, __builtin_stdc_first_trailing_one,
3304         __builtin_stdc_first_trailing_zero, __builtin_stdc_has_single_bit,
3305         __builtin_stdc_leading_ones, __builtin_stdc_leading_zeros,
3306         __builtin_stdc_trailing_ones, __builtin_stdc_trailing_zeros,
3307         __builtin_nvptx_brev, __builtin_nvptx_brevll, __builtin_darn,
3308         __builtin_darn_raw, __builtin_ia32_vec_ext_v2di,
3309         __builtin_ia32_crc32qi, __builtin_ia32_crc32hi,
3310         __builtin_ia32_crc32si, __builtin_ia32_crc32di): Put {}s around
3311         return type with spaces in it.
3312         (__builtin_rx_mvfachi, __builtin_rx_mvfacmi): Remove superfluous
3313         whitespace.
3315 2023-12-01  David Malcolm  <dmalcolm@redhat.com>
3317         * diagnostic-core.h (emit_diagnostic_valist): New overload decl.
3318         * diagnostic-format-sarif.cc (sarif_builder::make_result_object):
3319         When we have metadata, call its maybe_add_sarif_properties vfunc.
3320         * diagnostic-metadata.h (class sarif_object): Forward decl.
3321         (diagnostic_metadata::~diagnostic_metadata): New.
3322         (diagnostic_metadata::maybe_add_sarif_properties): New vfunc.
3323         * diagnostic.cc (emit_diagnostic_valist): New overload.
3325 2023-12-01  David Malcolm  <dmalcolm@redhat.com>
3327         PR analyzer/103533
3328         * doc/extend.texi: Remove stray reference to
3329         -fanalyzer-checker=taint.
3331 2023-12-01  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
3333         PR target/112431
3334         * config/riscv/vector.md: Support highpart overlap for vx/vf.
3336 2023-12-01  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
3338         PR target/112431
3339         * config/riscv/vector.md: Support highpart overlap for indexed load.
3341 2023-12-01  Richard Biener  <rguenther@suse.de>
3343         * tree-vectorizer.h (vect_get_vec_defs): Re-order arguments.
3344         * tree-vect-stmts.cc (vect_get_vec_defs): Likewise.
3345         (vectorizable_condition): Update caller.
3346         (vectorizable_comparison_1): Likewise.
3347         (vectorizable_conversion): Specify the vector type to be
3348         used for invariant/external defs.
3349         * tree-vect-loop.cc (vect_transform_reduction): Update caller.
3351 2023-12-01  Jakub Jelinek  <jakub@redhat.com>
3353         PR middle-end/112770
3354         * gimple-lower-bitint.cc (gimple_lower_bitint): When adjusting
3355         lhs of middle _BitInt setter which ends bb, insert cast on
3356         the fallthru edge rather than after stmt.
3358 2023-12-01  Jakub Jelinek  <jakub@redhat.com>
3360         PR middle-end/112771
3361         * gimple-lower-bitint.cc (bitint_large_huge::handle_operand_addr):
3362         Use mp = 1 if it is zero.
3364 2023-12-01  Jose E. Marchesi  <jose.marchesi@oracle.com>
3366         * config/bpf/bpf.cc (bpf_asm_named_section): New function.
3367         (TARGET_ASM_NAMED_SECTION): Set to bpf_asm_named_section.
3369 2023-12-01  Di Zhao  <dizhao@os.amperecomputing.com>
3371         * config/aarch64/aarch64-tuning-flags.def
3372         (AARCH64_EXTRA_TUNING_OPTION): New tuning option to avoid
3373         cross-loop FMA.
3374         * config/aarch64/aarch64.cc
3375         (aarch64_override_options_internal): Set
3376         param_avoid_fma_max_bits according to tuning option.
3377         * config/aarch64/tuning_models/ampere1.h (ampere1_tunings):
3378         Modify tunings related with FMA.
3379         * config/aarch64/tuning_models/ampere1a.h (ampere1a_tunings):
3380         Likewise.
3381         * config/aarch64/tuning_models/ampere1b.h (ampere1b_tunings):
3382         Likewise.
3384 2023-12-01  Richard Sandiford  <richard.sandiford@arm.com>
3386         * config/aarch64/aarch64-sve-builtins.h
3387         (function_expander::result_mode): New member function.
3388         * config/aarch64/aarch64-sve-builtins-base.cc
3389         (svld234_impl::expand): Use it.
3390         * config/aarch64/aarch64-sve-builtins.cc
3391         (function_expander::get_reg_target): Likewise.
3393 2023-12-01  Jakub Jelinek  <jakub@redhat.com>
3395         * gimple-lower-bitint.cc (range_to_prec): Don't return -1 for
3396         signed types.
3397         (bitint_large_huge::lower_addsub_overflow): Fix up computation of
3398         prec2.
3399         (bitint_large_huge::lower_mul_overflow): Likewise.
3401 2023-12-01  Jakub Jelinek  <jakub@redhat.com>
3403         * gimple-lower-bitint.cc (bitint_large_huge::finish_arith_overflow):
3404         When replacing use_stmt which is gsi_stmt (m_gsi), update m_gsi to
3405         the new statement.
3407 2023-12-01  Jakub Jelinek  <jakub@redhat.com>
3409         PR middle-end/112750
3410         * gimple-lower-bitint.cc (bitint_large_huge::lower_addsub_overflow):
3411         Use NE_EXPR rather than EQ_EXPR for g2 if !single_comparison and
3412         adjust probabilities.
3414 2023-12-01  Xi Ruoyao  <xry111@xry111.site>
3416         * doc/install.texi: Deem srcdir == objdir broken, but objdir
3417         as a subdirectory of srcdir fine.
3419 2023-12-01  Juergen Christ  <jchrist@linux.ibm.com>
3421         PR target/112753
3422         * config/s390/s390.cc (s390_md_asm_adjust): Return after dealing
3423         with the outputs, if no further processing of long doubles is
3424         required.
3426 2023-12-01  Jakub Jelinek  <jakub@redhat.com>
3428         PR target/112725
3429         * config/s390/s390.cc (s390_invalid_arg_for_unprototyped_fn): Return
3430         NULL for __builtin_classify_type calls with vector arguments.
3432 2023-12-01  Florian Weimer  <fweimer@redhat.com>
3434         * doc/invoke.texi (Warning Options): Document
3435         -Wdeclaration-missing-parameter-type.
3437 2023-12-01  Florian Weimer  <fweimer@redhat.com>
3439         * doc/invoke.texi (Warning Options): Document changes.
3441 2023-12-01  Florian Weimer  <fweimer@redhat.com>
3443         * doc/invoke.texi (Warning Options): Document that
3444         -Wreturn-mismatch is a permerror in C99 and later.
3446 2023-12-01  Florian Weimer  <fweimer@redhat.com>
3448         PR c/91093
3449         PR c/96284
3450         * doc/invoke.texi (Warning Options): Document changes.
3452 2023-12-01  Florian Weimer  <fweimer@redhat.com>
3454         * doc/invoke.texi (Warning Options): Document changes.
3456 2023-12-01  Florian Weimer  <fweimer@redhat.com>
3458         * doc/invoke.texi (Warning Options): Document changes.
3460 2023-12-01  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
3462         PR target/112776
3463         * config/riscv/riscv-vsetvl.cc (pre_vsetvl::pre_global_vsetvl_info): Fix ratio.
3465 2023-11-30  Wilco Dijkstra  <wilco.dijkstra@arm.com>
3467         PR target/111404
3468         * config/aarch64/aarch64.cc (aarch64_split_compare_and_swap):
3469         For 128-bit store the loaded value and loop if needed.
3471 2023-11-30  Wilco Dijkstra  <wilco.dijkstra@arm.com>
3473         PR target/103100
3474         * config/aarch64/aarch64.md (cpymemdi): Remove pattern condition.
3475         (setmemdi): Likewise.
3476         * config/aarch64/aarch64.cc (aarch64_expand_cpymem): Support
3477         strict-align.  Cleanup condition for using MOPS.
3478         (aarch64_expand_setmem): Likewise.
3480 2023-11-30  Richard Biener  <rguenther@suse.de>
3482         PR tree-optimization/112767
3483         * tree-scalar-evolution.cc (final_value_replacement_loop):
3484         Propagate constants to immediate uses immediately.
3486 2023-11-30  Richard Biener  <rguenther@suse.de>
3488         PR tree-optimization/112766
3489         * gimple-predicate-analysis.cc (find_var_cmp_const):
3490         Support continuing the iteration and report every candidate.
3491         (uninit_analysis::overlap): Iterate over all flag var
3492         candidates.
3494 2023-11-30  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
3496         PR target/112431
3497         * config/riscv/vector.md: Add widening overlap of vf2/vf4.
3499 2023-11-30  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
3501         PR target/112431
3502         * config/riscv/vector.md: Remove earlyclobber for wx/wf instructions.
3504 2023-11-30  Jakub Jelinek  <jakub@redhat.com>
3506         PR middle-end/112733
3507         * wide-int.cc (wi::mul_internal): Don't allocate twice as much
3508         space for u, v and r as needed.
3509         (divmod_internal_2): Change return type from void to int, for n == 1
3510         return 1, otherwise before writing b_dividend into b_remainder set
3511         n to MIN (n, m) and at the end return it.
3512         (wi::divmod_internal): Don't allocate 4 times as much space for
3513         b_quotient, b_remainder, b_dividend and b_divisor.  Set n to
3514         result of divmod_internal_2.
3515         (wide_int_cc_tests): Add test for unsigned widest_int
3516         wi::multiple_of_p of 1 and -128.
3518 2023-11-30  liuhongt  <hongtao.liu@intel.com>
3520         * config/i386/sse.md (sdot_prodv64qi): New expander.
3521         (sseunpackmodelower): New mode attr.
3522         (sdot_prod<mode>): Emulate sdot_prodv*qi with sodt_prov*hi
3523         when TARGET_VNNIINT8 is not available.
3525 2023-11-30  liuhongt  <hongtao.liu@intel.com>
3527         * config/i386/sse.md: (reduc_plus_scal_<mode>): Use
3528         vec_extract_lo instead of subreg.
3529         (reduc_<code>_scal_<mode>): Ditto.
3530         (reduc_<code>_scal_<mode>): Ditto.
3531         (reduc_<code>_scal_<mode>): Ditto.
3532         (reduc_<code>_scal_<mode>): Ditto.
3534 2023-11-30  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
3536         PR target/112431
3537         * config/riscv/vector.md: Add widenning overlap.
3539 2023-11-30  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
3541         * config/riscv/constraints.md (TARGET_VECTOR ? V_REGS : NO_REGS): Fix constraint.
3542         * config/riscv/riscv.md (no,W21,W42,W84,W41,W81,W82): Rename vconstraint into group_overlap.
3543         (no,yes): Ditto.
3544         (none,W21,W42,W84,W43,W86,W87): Ditto.
3545         * config/riscv/vector.md: Ditto.
3547 2023-11-30  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
3549         * config/riscv/vector.md: Support highpart overlap for vext.vf2
3551 2023-11-29  Philipp Tomsich  <philipp.tomsich@vrull.eu>
3553         * config/aarch64/aarch64-cores.def (AARCH64_CORE): Add ampere-1b
3554         * config/aarch64/aarch64-cost-tables.h: Add ampere1b_extra_costs
3555         * config/aarch64/aarch64-tune.md: Regenerate
3556         * config/aarch64/aarch64.cc: Include ampere1b tuning model
3557         * doc/invoke.texi: Document -mcpu=ampere1b
3558         * config/aarch64/tuning_models/ampere1b.h: New file.
3560 2023-11-29  David Faust  <david.faust@oracle.com>
3562         * config/bpf/bpf.h (ASM_COMMENT_START): Change from ';' to '#'.
3564 2023-11-29  Jakub Jelinek  <jakub@redhat.com>
3566         PR target/112725
3567         * config/rs6000/rs6000.cc (invalid_arg_for_unprototyped_fn): Return
3568         NULL for __builtin_classify_type calls with vector arguments.
3570 2023-11-29  Andrew MacLeod  <amacleod@redhat.com>
3572         PR tree-optimization/111922
3573         * ipa-cp.cc (ipa_vr_operation_and_type_effects): Check the
3574         operands are valid before calling fold_range.
3576 2023-11-29  Andrew MacLeod  <amacleod@redhat.com>
3578         * range-op-mixed.h (operator_equal::operand_check_p): New.
3579         (operator_not_equal::operand_check_p): New.
3580         (operator_lt::operand_check_p): New.
3581         (operator_le::operand_check_p): New.
3582         (operator_gt::operand_check_p): New.
3583         (operator_ge::operand_check_p): New.
3584         (operator_plus::operand_check_p): New.
3585         (operator_abs::operand_check_p): New.
3586         (operator_minus::operand_check_p): New.
3587         (operator_negate::operand_check_p): New.
3588         (operator_mult::operand_check_p): New.
3589         (operator_bitwise_not::operand_check_p): New.
3590         (operator_bitwise_xor::operand_check_p): New.
3591         (operator_bitwise_and::operand_check_p): New.
3592         (operator_bitwise_or::operand_check_p): New.
3593         (operator_min::operand_check_p): New.
3594         (operator_max::operand_check_p): New.
3595         * range-op.cc (range_op_handler::fold_range): Check operand
3596         parameter types.
3597         (range_op_handler::op1_range): Ditto.
3598         (range_op_handler::op2_range): Ditto.
3599         (range_op_handler::operand_check_p): New.
3600         (range_operator::operand_check_p): New.
3601         (operator_lshift::operand_check_p): New.
3602         (operator_rshift::operand_check_p): New.
3603         (operator_logical_and::operand_check_p): New.
3604         (operator_logical_or::operand_check_p): New.
3605         (operator_logical_not::operand_check_p): New.
3606         * range-op.h (range_operator::operand_check_p): New.
3607         (range_op_handler::operand_check_p): New.
3609 2023-11-29  Martin Jambor  <mjambor@suse.cz>
3611         PR tree-optimization/112711
3612         PR tree-optimization/112721
3613         * tree-sra.cc (build_access_from_call_arg): New parameter
3614         CAN_BE_RETURNED, disqualify any candidate passed by reference if it is
3615         true.  Adjust leading comment.
3616         (scan_function): Pass appropriate value to CAN_BE_RETURNED of
3617         build_access_from_call_arg.
3619 2023-11-29  Thomas Schwinge  <thomas@codesourcery.com>
3621         * doc/sourcebuild.texi (Final Actions): Document
3622         'only_for_offload_target' wrapper.
3624 2023-11-29  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
3626         PR testsuite/112729
3627         * doc/sourcebuild.texi (Effective-Target Keywords, Environment
3628         attributes): Document cfi.
3630 2023-11-29  Richard Biener  <rguenther@suse.de>
3632         PR middle-end/110237
3633         * internal-fn.cc (expand_partial_load_optab_fn): Clear
3634         MEM_EXPR and MEM_OFFSET.
3635         (expand_partial_store_optab_fn): Likewise.
3637 2023-11-29  Jakub Jelinek  <jakub@redhat.com>
3639         PR middle-end/112733
3640         * fold-const.cc (multiple_of_p): Pass SIGNED rather than
3641         UNSIGNED for wi::multiple_of_p on widest_int arguments.
3643 2023-11-29  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
3644             kito-cheng  <kito.cheng@sifive.com>
3645             kito-cheng  <kito.cheng@gmail.com>
3647         PR target/112431
3648         * config/riscv/constraints.md (TARGET_VECTOR ? V_REGS : NO_REGS): New register filters.
3649         * config/riscv/riscv.md (no,W21,W42,W84,W41,W81,W82): Ditto.
3650         (no,yes): Ditto.
3651         * config/riscv/vector.md: Support highpart register overlap for vwcvt.
3653 2023-11-29  xuli  <xuli1@eswincomputing.com>
3655         * config/riscv/riscv.cc (riscv_option_override): Eliminate warning.
3657 2023-11-29  Jakub Jelinek  <jakub@redhat.com>
3659         PR bootstrap/111601
3660         * fold-mem-offsets.cc (get_uses): Ignore DEBUG_INSN uses.  Otherwise,
3661         punt if use is in a different basic block from INSN or appears before
3662         INSN in the same basic block.  Formatting fixes.
3663         (get_single_def_in_bb): Formatting fixes.
3664         (fold_offsets_1, pass_fold_mem_offsets::execute): Comment formatting
3665         fixes.
3667 2023-11-29  Xi Ruoyao  <xry111@xry111.site>
3669         * config/loongarch/simd.md (LSX_SCALAR_FRINT): New int iterator.
3670         (VLSX_FOR_FMODE): New mode attribute.
3671         (<simd_for_scalar_frint_pattern><mode>2): New expander,
3672         expanding to vreplvei.{w/d} + frint{rp/rz/rm/rne}.{s.d}.
3674 2023-11-29  Xi Ruoyao  <xry111@xry111.site>
3676         * config/loongarch/loongarch.md (lrint_allow_inexact): Remove.
3677         (<lrint_pattern><ANYF:mode><ANYFI:mode>2): Check if <LRINT>
3678         == UNSPEC_FTINT instead of <lrint_allow_inexact>.
3680 2023-11-29  Xi Ruoyao  <xry111@xry111.site>
3682         * config/loongarch/lsx.md (bitimm): Move to ...
3683         (UNSPEC_LSX_VROTR): Remove.
3684         (lsx_vrotr_<lsxfmt>): Remove.
3685         (lsx_vrotri_<lsxfmt>): Remove.
3686         * config/loongarch/lasx.md (UNSPEC_LASX_XVROTR): Remove.
3687         (lsx_vrotr_<lsxfmt>): Remove.
3688         (lsx_vrotri_<lsxfmt>): Remove.
3689         * config/loongarch/simd.md (bitimm): ... here.  Expand it to
3690         cover LASX modes.
3691         (vrotr<mode>3): New define_insn.
3692         (vrotri<mode>3): New define_insn.
3693         * config/loongarch/loongarch-builtins.cc:
3694         (CODE_FOR_lsx_vrotr_b): Use standard pattern name.
3695         (CODE_FOR_lsx_vrotr_h): Likewise.
3696         (CODE_FOR_lsx_vrotr_w): Likewise.
3697         (CODE_FOR_lsx_vrotr_d): Likewise.
3698         (CODE_FOR_lasx_xvrotr_b): Likewise.
3699         (CODE_FOR_lasx_xvrotr_h): Likewise.
3700         (CODE_FOR_lasx_xvrotr_w): Likewise.
3701         (CODE_FOR_lasx_xvrotr_d): Likewise.
3702         (CODE_FOR_lsx_vrotri_b): Define to standard pattern name.
3703         (CODE_FOR_lsx_vrotri_h): Likewise.
3704         (CODE_FOR_lsx_vrotri_w): Likewise.
3705         (CODE_FOR_lsx_vrotri_d): Likewise.
3706         (CODE_FOR_lasx_xvrotri_b): Likewise.
3707         (CODE_FOR_lasx_xvrotri_h): Likewise.
3708         (CODE_FOR_lasx_xvrotri_w): Likewise.
3709         (CODE_FOR_lasx_xvrotri_d): Likewise.
3711 2023-11-29  Xi Ruoyao  <xry111@xry111.site>
3713         * config/loongarch/simd.md (muh): New code attribute mapping
3714         any_extend to smul_highpart or umul_highpart.
3715         (<su>mul<mode>3_highpart): New define_insn.
3716         * config/loongarch/lsx.md (UNSPEC_LSX_VMUH_S): Remove.
3717         (UNSPEC_LSX_VMUH_U): Remove.
3718         (lsx_vmuh_s_<lsxfmt>): Remove.
3719         (lsx_vmuh_u_<lsxfmt>): Remove.
3720         * config/loongarch/lasx.md (UNSPEC_LASX_XVMUH_S): Remove.
3721         (UNSPEC_LASX_XVMUH_U): Remove.
3722         (lasx_xvmuh_s_<lasxfmt>): Remove.
3723         (lasx_xvmuh_u_<lasxfmt>): Remove.
3724         * config/loongarch/loongarch-builtins.cc (CODE_FOR_lsx_vmuh_b):
3725         Redefine to standard pattern name.
3726         (CODE_FOR_lsx_vmuh_h): Likewise.
3727         (CODE_FOR_lsx_vmuh_w): Likewise.
3728         (CODE_FOR_lsx_vmuh_d): Likewise.
3729         (CODE_FOR_lsx_vmuh_bu): Likewise.
3730         (CODE_FOR_lsx_vmuh_hu): Likewise.
3731         (CODE_FOR_lsx_vmuh_wu): Likewise.
3732         (CODE_FOR_lsx_vmuh_du): Likewise.
3733         (CODE_FOR_lasx_xvmuh_b): Likewise.
3734         (CODE_FOR_lasx_xvmuh_h): Likewise.
3735         (CODE_FOR_lasx_xvmuh_w): Likewise.
3736         (CODE_FOR_lasx_xvmuh_d): Likewise.
3737         (CODE_FOR_lasx_xvmuh_bu): Likewise.
3738         (CODE_FOR_lasx_xvmuh_hu): Likewise.
3739         (CODE_FOR_lasx_xvmuh_wu): Likewise.
3740         (CODE_FOR_lasx_xvmuh_du): Likewise.
3742 2023-11-29  Xi Ruoyao  <xry111@xry111.site>
3744         PR target/112578
3745         * config/loongarch/lsx.md (UNSPEC_LSX_VFTINT_S,
3746         UNSPEC_LSX_VFTINTRNE, UNSPEC_LSX_VFTINTRP,
3747         UNSPEC_LSX_VFTINTRM, UNSPEC_LSX_VFRINTRNE_S,
3748         UNSPEC_LSX_VFRINTRNE_D, UNSPEC_LSX_VFRINTRZ_S,
3749         UNSPEC_LSX_VFRINTRZ_D, UNSPEC_LSX_VFRINTRP_S,
3750         UNSPEC_LSX_VFRINTRP_D, UNSPEC_LSX_VFRINTRM_S,
3751         UNSPEC_LSX_VFRINTRM_D): Remove.
3752         (ILSX, FLSX): Move into ...
3753         (VIMODE): Move into ...
3754         (FRINT_S, FRINT_D): Remove.
3755         (frint_pattern_s, frint_pattern_d, frint_suffix): Remove.
3756         (lsx_vfrint_<flsxfmt>, lsx_vftint_s_<ilsxfmt>_<flsxfmt>,
3757         lsx_vftintrne_w_s, lsx_vftintrne_l_d, lsx_vftintrp_w_s,
3758         lsx_vftintrp_l_d, lsx_vftintrm_w_s, lsx_vftintrm_l_d,
3759         lsx_vfrintrne_s, lsx_vfrintrne_d, lsx_vfrintrz_s,
3760         lsx_vfrintrz_d, lsx_vfrintrp_s, lsx_vfrintrp_d,
3761         lsx_vfrintrm_s, lsx_vfrintrm_d,
3762         <FRINT_S:frint_pattern_s>v4sf2,
3763         <FRINT_D:frint_pattern_d>v2df2, round<mode>2,
3764         fix_trunc<mode>2): Remove.
3765         * config/loongarch/lasx.md: Likewise.
3766         * config/loongarch/simd.md: New file.
3767         (ILSX, ILASX, FLSX, FLASX, VIMODE): ... here.
3768         (IVEC, FVEC): New mode iterators.
3769         (VIMODE): ... here.  Extend it to work for all LSX/LASX vector
3770         modes.
3771         (x, wu, simd_isa, WVEC, vimode, simdfmt, simdifmt_for_f,
3772         elebits): New mode attributes.
3773         (UNSPEC_SIMD_FRINTRP, UNSPEC_SIMD_FRINTRZ, UNSPEC_SIMD_FRINT,
3774         UNSPEC_SIMD_FRINTRM, UNSPEC_SIMD_FRINTRNE): New unspecs.
3775         (SIMD_FRINT): New int iterator.
3776         (simd_frint_rounding, simd_frint_pattern): New int attributes.
3777         (<simd_isa>_<x>vfrint<simd_frint_rounding>_<simdfmt>): New
3778         define_insn template for frint instructions.
3779         (<simd_isa>_<x>vftint<simd_frint_rounding>_<simdifmt_for_f>_<simdfmt>):
3780         Likewise, but for ftint instructions.
3781         (<simd_frint_pattern><mode>2): New define_expand with
3782         flag_fp_int_builtin_inexact checked.
3783         (l<simd_frint_pattern><mode><vimode>2): Likewise.
3784         (ftrunc<mode>2): New define_expand.  It does not require
3785         flag_fp_int_builtin_inexact.
3786         (fix_trunc<mode><vimode>2): New define_insn_and_split.  It does
3787         not require flag_fp_int_builtin_inexact.
3788         (include): Add lsx.md and lasx.md.
3789         * config/loongarch/loongarch.md (include): Include simd.md,
3790         instead of including lsx.md and lasx.md directly.
3791         * config/loongarch/loongarch-builtins.cc
3792         (CODE_FOR_lsx_vftint_w_s, CODE_FOR_lsx_vftint_l_d,
3793         CODE_FOR_lasx_xvftint_w_s, CODE_FOR_lasx_xvftint_l_d):
3794         Remove.
3796 2023-11-29  Alexandre Oliva  <oliva@adacore.com>
3798         * doc/extend.texi (hardbool): New type attribute.
3799         * doc/invoke.texi (-ftrivial-auto-var-init): Document
3800         representation vs values.
3802 2023-11-29  Alexandre Oliva  <oliva@adacore.com>
3804         * expr.cc (emit_block_move_hints): Take ctz of len.  Obey
3805         -finline-stringops.  Use oriented or sized loop.
3806         (emit_block_move): Take ctz of len, and pass it on.
3807         (emit_block_move_via_sized_loop): New.
3808         (emit_block_move_via_oriented_loop): New.
3809         (emit_block_move_via_loop): Take incr.  Move an incr-sized
3810         block per iteration.
3811         (emit_block_cmp_via_cmpmem): Take ctz of len.  Obey
3812         -finline-stringops.
3813         (emit_block_cmp_via_loop): New.
3814         * expr.h (emit_block_move): Add ctz of len defaulting to zero.
3815         (emit_block_move_hints): Likewise.
3816         (emit_block_cmp_hints): Likewise.
3817         * builtins.cc (expand_builtin_memory_copy_args): Pass ctz of
3818         len to emit_block_move_hints.
3819         (try_store_by_multiple_pieces): Support starting with a loop.
3820         (expand_builtin_memcmp): Pass ctz of len to
3821         emit_block_cmp_hints.
3822         (expand_builtin): Allow inline expansion of memset, memcpy,
3823         memmove and memcmp if requested.
3824         * common.opt (finline-stringops): New.
3825         (ilsop_fn): New enum.
3826         * flag-types.h (enum ilsop_fn): New.
3827         * doc/invoke.texi (-finline-stringops): Add.
3829 2023-11-29  Pan Li  <pan2.li@intel.com>
3831         PR target/112743
3832         * config/riscv/riscv-string.cc (expand_block_move): Add
3833         precondition check for exact_div.
3835 2023-11-28  Roger Sayle  <roger@nextmovesoftware.com>
3837         * config/arc/arc.md: Make output template whitespace consistent.
3839 2023-11-28  Jose E. Marchesi  <jose.marchesi@oracle.com>
3841         * varasm.cc (assemble_external_libcall): Refer in assert only ifdef
3842         ASM_OUTPUT_EXTERNAL.
3844 2023-11-28  Andrew Pinski  <quic_apinski@quicinc.com>
3846         PR tree-optimization/112738
3847         * match.pd (`(nop_convert)-(convert)a`): Reject
3848         when the outer type is boolean.
3850 2023-11-28  Richard Biener  <rguenther@suse.de>
3852         PR middle-end/112732
3853         * tree.cc (build_opaque_vector_type): Reset TYPE_ALIAS_SET
3854         of the newly built type.
3856 2023-11-28  Uros Bizjak  <ubizjak@gmail.com>
3858         PR target/112494
3859         * config/i386/i386.md (cmpstrnqi_1): Set FLAGS_REG to its previous
3860         value when operand 2 equals zero.
3861         (*cmpstrnqi_1): Ditto.
3862         (*cmpstrnqi_1 peephole2): Ditto.
3864 2023-11-28  Cupertino Miranda  <cupertino.miranda@oracle.com>
3866         Revert:
3867         2023-11-28  Cupertino Miranda  <cupertino.miranda@oracle.com>
3869         * config/bpf/bpf.cc (bpf_output_call): Report error in case the
3870         function call is for a builtin.
3871         (bpf_external_libcall): Added target hook to detect and report
3872         error when other external calls that are not builtins.
3874 2023-11-28  Jose E. Marchesi  <jose.marchesi@oracle.com>
3876         PR target/109253
3877         * varasm.cc (pending_libcall_symbols): New variable.
3878         (process_pending_assemble_externals): Process
3879         pending_libcall_symbols.
3880         (assemble_external_libcall): Defer emitting external libcall
3881         symbols to process_pending_assemble_externals.
3883 2023-11-28  Cupertino Miranda  <cupertino.miranda@oracle.com>
3885         * btfout.cc (btf_calc_num_vbytes): Fixed logic for enum64.
3886         (btf_asm_enum_const): Corrected logic for enum64 and smaller
3887         than 4 bytes values.
3889 2023-11-28  Cupertino Miranda  <cupertino.miranda@oracle.com>
3891         * config/bpf/bpf.cc (bpf_output_call): Report error in case the
3892         function call is for a builtin.
3893         (bpf_external_libcall): Added target hook to detect and report
3894         error when other external calls that are not builtins.
3896 2023-11-28  Cupertino Miranda  <cupertino.miranda@oracle.com>
3898         * config/bpf/bpf.cc (bpf_use_by_pieces_infrastructure_p): Added
3899         function to bypass default behaviour.
3900         * config/bpf/bpf.h (COMPARE_MAX_PIECES): Defined to 1024 bytes.
3902 2023-11-28  Cupertino Miranda  <cupertino.miranda@oracle.com>
3904         * config/bpf/core-builtins.cc (core_mark_as_access_index):
3905         Corrected check.
3907 2023-11-28  Cupertino Miranda  <cupertino.miranda@oracle.com>
3909         * config/bpf/core-builtins.cc
3910         (bpf_resolve_overloaded_core_builtin): Removed call.
3911         (execute_lower_bpf_core): Added all to remove_parser_plugin.
3913 2023-11-28  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
3915         PR target/112694
3916         * config/riscv/riscv-v.cc (expand_vec_perm_const): Disallow poly size (1, 1) VLA SLP.
3918 2023-11-28  Jakub Jelinek  <jakub@redhat.com>
3920         PR tree-optimization/112719
3921         * match.pd (parity(X)^parity(Y) -> parity(X^Y)): Handle case of
3922         mismatched types.
3923         * gimple-match-exports.cc (build_call_internal): Add special-case for
3924         bit query ifns on large/huge BITINT_TYPE before bitint lowering.
3926 2023-11-28  Jakub Jelinek  <jakub@redhat.com>
3928         PR tree-optimization/112719
3929         * match.pd (popcount (X) + popcount (Y) -> POPCOUNT (X | Y)): Deal
3930         with argument types with different precisions.
3932 2023-11-28  David Malcolm  <dmalcolm@redhat.com>
3934         PR analyzer/109077
3935         * Makefile.in (PLUGIN_HEADERS): Add analyzer headers.
3936         (install-plugin): Keep the directory structure for files in
3937         "analyzer".
3939 2023-11-28  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
3941         PR target/112713
3942         * config/riscv/riscv-vsetvl.cc (pre_vsetvl::compute_lcm_local_properties): Fix regression.
3944 2023-11-28  David Malcolm  <dmalcolm@redhat.com>
3946         * diagnostic-show-locus.cc (layout::maybe_add_location_range):
3947         Don't print annotation lines for ranges when there's no column
3948         info.
3949         (selftest::test_one_liner_no_column): New.
3950         (selftest::test_diagnostic_show_locus_one_liner): Call it.
3952 2023-11-28  David Malcolm  <dmalcolm@redhat.com>
3954         * diagnostic.cc (diagnostic_get_location_text): Convert to...
3955         (diagnostic_context::get_location_text): ...this, and convert
3956         return type from char * to label_text.
3957         (diagnostic_build_prefix): Update for above change.
3958         (default_diagnostic_start_span_fn): Likewise.
3959         (selftest::assert_location_text): Likewise.
3960         * diagnostic.h (diagnostic_context::get_location_text): New decl.
3962 2023-11-27  Andrew Pinski  <quic_apinski@quicinc.com>
3964         * config/aarch64/aarch64.cc (aarch64_if_then_else_costs):
3965         Handle csinv/csinc case of 1/-1.
3967 2023-11-27  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
3968             Richard Sandiford  <richard.sandiford@arm.com>
3970         PR middle-end/111754
3971         * fold-const.cc (fold_vec_perm_cst): Set result's encoding to sel's
3972         encoding, and set res_nelts_per_pattern to 2 if sel contains stepped
3973         sequence but input vectors do not.
3974         (test_nunits_min_2): New test Case 8.
3975         (test_nunits_min_4): New tests Case 8 and Case 9.
3977 2023-11-27  Szabolcs Nagy  <szabolcs.nagy@arm.com>
3979         * config/aarch64/aarch64.cc (aarch64_needs_frame_chain): Do not
3980         force frame chain for eh_return.
3982 2023-11-27  Szabolcs Nagy  <szabolcs.nagy@arm.com>
3984         * config/aarch64/aarch64-protos.h (aarch64_eh_return_handler_rtx):
3985         Remove.
3986         * config/aarch64/aarch64.cc (aarch64_return_address_signing_enabled):
3987         Sign return address even in functions with eh_return.
3988         (aarch64_expand_epilogue): Conditionally return with br or ret.
3989         (aarch64_eh_return_handler_rtx): Remove.
3990         * config/aarch64/aarch64.h (EH_RETURN_TAKEN_RTX): Define.
3991         (EH_RETURN_STACKADJ_RTX): Change to R5.
3992         (EH_RETURN_HANDLER_RTX): Change to R6.
3993         * df-scan.cc: Handle EH_RETURN_TAKEN_RTX.
3994         * doc/tm.texi: Regenerate.
3995         * doc/tm.texi.in: Document EH_RETURN_TAKEN_RTX.
3996         * except.cc (expand_eh_return): Handle EH_RETURN_TAKEN_RTX.
3998 2023-11-27  Thomas Schwinge  <thomas@codesourcery.com>
4000         * config.gcc <amdgcn-*-amdhsa> (extra_gcc_objs): Don't set.
4001         * config/gcn/driver-gcn.cc: Remove.
4002         * config/gcn/gcn-hsa.h (ASM_SPEC, EXTRA_SPEC_FUNCTIONS): Remove
4003         'last_arg' spec function.
4004         * config/gcn/t-gcn-hsa (driver-gcn.o): Remove.
4006 2023-11-27  Thomas Schwinge  <thomas@codesourcery.com>
4008         PR target/112669
4009         * config/gcn/gcn.opt (march=, mtune=): Tag as 'Negative' of
4010         themselves.
4012 2023-11-27  Samuel Thibault  <samuel.thibault@gnu.org>
4014         * config/i386/gnu.h: Use PIE_SPEC, add static-pie case.
4015         * config/i386/gnu64.h: Use PIE_SPEC, add static-pie case.
4017 2023-11-27  Samuel Thibault  <samuel.thibault@gnu.org>
4019         * config/i386/t-gnu64: New file.
4020         * config.gcc [x86_64-*-gnu*]: Add i386/t-gnu64 to
4021         tmake_file.
4023 2023-11-27  Richard Sandiford  <richard.sandiford@arm.com>
4025         PR target/106326
4026         * config/aarch64/aarch64-sve-builtins.h (is_ptrue): Declare.
4027         * config/aarch64/aarch64-sve-builtins.cc (is_ptrue): New function.
4028         (gimple_folder::redirect_pred_x): Likewise.
4029         (gimple_folder::fold): Use it.
4031 2023-11-27  Richard Sandiford  <richard.sandiford@arm.com>
4033         * config/aarch64/aarch64-sve-builtins.h (vector_cst_all_same): Declare.
4034         * config/aarch64/aarch64-sve-builtins.cc (vector_cst_all_same): New
4035         function, a generalized replacement of...
4036         * config/aarch64/aarch64-sve-builtins-base.cc
4037         (svlast_impl::vect_all_same): ...this.
4038         (svlast_impl::fold): Update accordingly.
4040 2023-11-27  Richard Biener  <rguenther@suse.de>
4042         PR tree-optimization/112653
4043         * gimple-ssa.h (gimple_df): Add escaped_return solution.
4044         * tree-ssa.cc (init_tree_ssa): Reset it.
4045         (delete_tree_ssa): Likewise.
4046         * tree-ssa-structalias.cc (escaped_return_id): New.
4047         (find_func_aliases): Handle non-IPA return stmts by
4048         adding to ESCAPED_RETURN.
4049         (set_uids_in_ptset): Adjust HEAP escaping to also cover
4050         escapes through return.
4051         (init_base_vars): Initialize ESCAPED_RETURN.
4052         (compute_points_to_sets): Replace ESCAPED post-processing
4053         with recording the ESCAPED_RETURN solution.
4054         * tree-ssa-alias.cc (ref_may_alias_global_p_1): Check
4055         the ESCAPED_RETUNR solution.
4056         (dump_alias_info): Dump it.
4057         * cfgexpand.cc (update_alias_info_with_stack_vars): Update it.
4058         * ipa-icf.cc (sem_item_optimizer::fixup_points_to_sets):
4059         Likewise.
4060         * tree-inline.cc (expand_call_inline): Reset it.
4061         * tree-parloops.cc (parallelize_loops): Likewise.
4062         * tree-sra.cc (maybe_add_sra_candidate): Check it.
4064 2023-11-27  Richard Biener  <rguenther@suse.de>
4065             Richard Sandiford  <richard.sandiford@arm.com>
4067         PR tree-optimization/112661
4068         * tree-vect-slp.cc (vect_get_and_check_slp_defs): Defer duplicate-and-
4069         interleave test to...
4070         (vect_build_slp_tree_2): ...here, once we have all the operands.
4071         Skip the test for uniform vectors.
4072         (vect_create_constant_vectors): Detect uniform vectors.  Avoid
4073         redundant conversions in that case.  Use gimple_build_vector_from_val
4074         to build the vector.
4076 2023-11-27  Richard Sandiford  <richard.sandiford@arm.com>
4078         * attribs.cc (excl_hash_traits): Delete.
4079         (test_attribute_exclusions): Use pair_hash and nofree_string_hash
4080         instead.
4082 2023-11-27  Andrew Stubbs  <ams@codesourcery.com>
4084         * config/gcn/gcn.cc (gcn_vectorize_vec_perm_const): Disallow TImode.
4086 2023-11-27  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
4088         * config/s390/s390-builtin-types.def (BT_FN_UV8HI_UV8HI_UINT):
4089         Add missing builtin type.
4091 2023-11-27  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
4093         * config/s390/s390-builtin-types.def: Remove types.
4094         * config/s390/s390-builtins.def (O_U64): Remove 64-bit literal support.
4095         Don't restrict s390_vec_rli and s390_verll[bhfg] to immediates.
4096         * config/s390/s390.cc (s390_const_operand_ok): Remove 64-bit
4097         literal support.
4099 2023-11-27  Alex Coplan  <alex.coplan@arm.com>
4100             Iain Sandoe  <iain@sandoe.co.uk>
4102         PR c++/60512
4103         * doc/cpp.texi: Document __has_{feature,extension}.
4105 2023-11-27  Richard Biener  <rguenther@suse.de>
4107         PR tree-optimization/112706
4108         * match.pd (ptr + o ==/!=/- ptr + o'): New patterns.
4110 2023-11-27  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
4112         * config/s390/s390-builtin-types.def: Add/remove types.
4113         * config/s390/s390-builtins.def
4114         (s390_vclfnhs,s390_vclfnls,s390_vcrnfs,s390_vcfn,s390_vcnf):
4115         Replace type V8HI with UV8HI.
4117 2023-11-27  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
4119         * config/s390/s390-builtins.def
4120         (s390_vcefb,s390_vcdgb,s390_vcelfb,s390_vcdlgb,s390_vcfeb,s390_vcgdb,
4121         s390_vclfeb,s390_vclgdb): Remove flags for non-existing operands
4122         2 and 3.
4124 2023-11-27  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
4126         * config/s390/s390.md (*cmphi_ccu): For immediate operand 1 make
4127         use of constraint n instead of D and chop of high bits in the
4128         output template.
4130 2023-11-27  Jakub Jelinek  <jakub@redhat.com>
4132         PR target/112300
4133         * config.gcc (mips*-sde-elf*): Append to tm_defines rather than
4134         overwriting them.
4136 2023-11-27  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4138         * config/riscv/autovec.md
4139         (mask_len_gather_load<RATIO1:mode><RATIO1:mode>):
4140         Remove gather_scatter_valid_offset_mode_p.
4141         (mask_len_gather_load<mode><mode>): Ditto.
4142         (mask_len_scatter_store<RATIO1:mode><RATIO1:mode>): Ditto.
4143         (mask_len_scatter_store<mode><mode>): Ditto.
4144         * config/riscv/predicates.md (const_1_or_8_operand): New predicate.
4145         (vector_gs_scale_operand_64): Remove.
4146         * config/riscv/riscv-protos.h (gather_scatter_valid_offset_mode_p): Remove.
4147         * config/riscv/riscv-v.cc (expand_gather_scatter): Refine code.
4148         (gather_scatter_valid_offset_mode_p): Remove.
4149         * config/riscv/vector-iterators.md: Fix iterator bugs.
4151 2023-11-27  Tsukasa OI  <research_trasio@irq.a4lg.com>
4153         * common/config/riscv/riscv-common.cc
4154         (riscv_ext_version_table): Set version to ratified 2.0.
4155         (riscv_subset_list::parse_std_ext): Allow RV64E.
4156         * config.gcc: Parse base ISA 'rv64e' and ABI 'lp64e'.
4157         * config/riscv/arch-canonicalize: Parse base ISA 'rv64e'.
4158         * config/riscv/riscv-c.cc (riscv_cpu_cpp_builtins):
4159         Define different macro per XLEN.  Add handling for ABI_LP64E.
4160         * config/riscv/riscv-d.cc (riscv_d_handle_target_float_abi):
4161         Add handling for ABI_LP64E.
4162         * config/riscv/riscv-opts.h (enum riscv_abi_type): Add ABI_LP64E.
4163         * config/riscv/riscv.cc (riscv_option_override): Enhance error
4164         handling to support RV64E and LP64E.
4165         (riscv_conditional_register_usage): Change "RV32E" in a comment
4166         to "RV32E/RV64E".
4167         * config/riscv/riscv.h
4168         (UNITS_PER_FP_ARG): Add handling for ABI_LP64E.
4169         (STACK_BOUNDARY): Ditto.
4170         (ABI_STACK_BOUNDARY): Ditto.
4171         (MAX_ARGS_IN_REGISTERS): Ditto.
4172         (ABI_SPEC): Add support for "lp64e".
4173         * config/riscv/riscv.opt: Parse -mabi=lp64e as ABI_LP64E.
4174         * doc/invoke.texi: Add documentation of the LP64E ABI.
4176 2023-11-27  Jose E. Marchesi  <jose.marchesi@oracle.com>
4178         * config/bpf/bpf-helpers.h: Remove.
4179         * config.gcc: Adapt accordingly.
4181 2023-11-27  Guo Jie  <guojie@loongson.cn>
4183         * config/loongarch/loongarch.cc (loongarch_split_plus_constant):
4184         avoid left shift of negative value -0x8000.
4186 2023-11-27  Guo Jie  <guojie@loongson.cn>
4188         * config/loongarch/loongarch.cc
4189         (enum loongarch_load_imm_method): Add new method.
4190         (loongarch_build_integer): Add relevant implementations for
4191         new method.
4192         (loongarch_move_integer): Ditto.
4194 2023-11-26  Alexander Monakov  <amonakov@ispras.ru>
4196         * sort.cc: Use 'sorting networks' in comments.
4198 2023-11-26  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4200         PR target/112599
4201         * config/riscv/riscv-avlprop.cc (avl_can_be_propagated_p): Add slidedown.
4202         (vlmax_ta_p): Ditto.
4203         (pass_avlprop::get_vlmax_ta_preferred_avl): Ditto.
4205 2023-11-26  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4207         * config/riscv/riscv-avlprop.cc (alv_can_be_propagated_p): Fix typo.
4208         (avl_can_be_propagated_p): Ditto.
4209         (vlmax_ta_p): Ditto.
4211 2023-11-25  Gerald Pfeifer  <gerald@pfeifer.com>
4213         PR other/69374
4214         * doc/install.texi (Downloading the source): Sort the list of
4215         front ends and add D, Go, and Modula-2.
4217 2023-11-25  Gerald Pfeifer  <gerald@pfeifer.com>
4219         PR target/69374
4220         * doc/install.texi (Specific) <*-*-freebsd*>: Remove older
4221         contents referencing GCC 4.x.
4223 2023-11-25  Gerald Pfeifer  <gerald@pfeifer.com>
4225         * doc/standards.texi (Standards): Update ISO C++ reference.
4227 2023-11-25  Jakub Jelinek  <jakub@redhat.com>
4229         PR target/111408
4230         * config/i386/i386.md (*jcc_bt<mode>_mask,
4231         *jcc_bt<SWI48:mode>_mask_1): Add (const_int 0) as expected
4232         second operand of bt_comparison_operator.
4234 2023-11-25  Andrew Pinski  <pinskia@gmail.com>
4235             Jakub Jelinek  <jakub@redhat.com>
4237         PR target/109977
4238         * config/aarch64/aarch64-simd.md (aarch64_simd_stp<mode>): Use <vwcore>
4239         rather than %<vw> for alternative with r constraint on input operand.
4241 2023-11-24  Tobias Burnus  <tobias@codesourcery.com>
4243         * doc/install.texi (amdgcn-*-amdhsa): Fix URL to ROCm;
4244         change 'in the future' to 'in LLVM 18'.
4246 2023-11-24  John David Anglin  <danglin@gcc.gnu.org>
4248         * config/pa/pa.cc (pa_emit_move_sequence): Use INT14_OK_STRICT
4249         in a couple of places.
4251 2023-11-24  Martin Jambor  <mjambor@suse.cz>
4253         PR middle-end/109849
4254         * tree-sra.cc (passed_by_ref_in_call): New.
4255         (sra_initialize): Allocate passed_by_ref_in_call.
4256         (sra_deinitialize): Free passed_by_ref_in_call.
4257         (create_access): Add decl pool candidates only if they are not
4258         already candidates.
4259         (build_access_from_expr_1): Bail out on ADDR_EXPRs.
4260         (build_access_from_call_arg): New function.
4261         (asm_visit_addr): Rename to scan_visit_addr, change the
4262         disqualification dump message.
4263         (scan_function): Check taken addresses for all non-call statements,
4264         including phi nodes.  Process all call arguments, including the static
4265         chain, build_access_from_call_arg.
4266         (maybe_add_sra_candidate): Relax need_to_live_in_memory check to allow
4267         non-escaped local variables.
4268         (sort_and_splice_var_accesses): Disallow smaller-than-precision
4269         replacements for aggregates passed by reference to functions.
4270         (sra_modify_expr): Use a separate stmt iterator for adding satements
4271         before the processed statement and after it.
4272         (enum out_edge_check): New type.
4273         (abnormal_edge_after_stmt_p): New function.
4274         (sra_modify_call_arg): New function.
4275         (sra_modify_assign): Adjust calls to sra_modify_expr.
4276         (sra_modify_function_body): Likewise, use sra_modify_call_arg to
4277         process call arguments, including the static chain.
4279 2023-11-24  Uros Bizjak  <ubizjak@gmail.com>
4281         PR target/112686
4282         * config/i386/i386.cc (ix86_expand_split_stack_prologue): Load
4283         function address to a register for ix86_cmodel == CM_LARGE.
4285 2023-11-24  Tobias Burnus  <tobias@codesourcery.com>
4287         * doc/invoke.texi (-Wopenmp): Add.
4288         * gimplify.cc (gimplify_omp_for): Add OPT_Wopenmp to warning_at.
4289         * omp-expand.cc (expand_omp_ordered_sink): Likewise.
4290         * omp-general.cc (omp_check_context_selector): Likewise.
4291         * omp-low.cc (scan_omp_for, check_omp_nesting_restrictions,
4292         lower_omp_ordered_clauses): Likewise.
4293         * omp-simd-clone.cc (simd_clone_clauses_extract): Likewise.
4295 2023-11-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4297         PR target/112694
4298         * config/riscv/riscv-v.cc (preferred_simd_mode): Allow poly_int (1,1) vectors.
4300 2023-11-24  Alexander Monakov  <amonakov@ispras.ru>
4302         * config.in: Regenerate.
4303         * configure: Regenerate.
4304         * configure.ac: Delete manual checks for old Valgrind headers.
4305         * system.h (VALGRIND_MAKE_MEM_NOACCESS): Delete.
4306         (VALGRIND_MAKE_MEM_DEFINED): Delete.
4307         (VALGRIND_MAKE_MEM_UNDEFINED): Delete.
4308         (VALGRIND_MALLOCLIKE_BLOCK): Delete.
4309         (VALGRIND_FREELIKE_BLOCK): Delete.
4311 2023-11-24  Jakub Jelinek  <jakub@redhat.com>
4313         PR target/112681
4314         * config/i386/i386-expand.cc (ix86_expand_branch): Use
4315         ix86_expand_vector_logical_operator to expand vector XOR rather than
4316         gen_rtx_SET on gen_rtx_XOR.
4318 2023-11-24  Alex Coplan  <alex.coplan@arm.com>
4320         * rtl-ssa/access-utils.h (filter_accesses): New.
4321         (remove_regno_access): New.
4322         (check_remove_regno_access): New.
4323         * rtl-ssa/accesses.cc (rtl_ssa::remove_note_accesses_base): Use
4324         new filter_accesses helper.
4326 2023-11-24  Alex Coplan  <alex.coplan@arm.com>
4328         * rtl-ssa/accesses.cc (function_info::create_set): New.
4329         * rtl-ssa/accesses.h (access_info::is_temporary): New.
4330         * rtl-ssa/changes.cc (move_insn): Handle new (temporary) insns.
4331         (function_info::finalize_new_accesses): Handle new/temporary
4332         user-created accesses.
4333         (function_info::apply_changes_to_insn): Ensure m_is_temp flag
4334         on new insns gets cleared.
4335         (function_info::change_insns): Handle new/temporary insns.
4336         (function_info::create_insn): New.
4337         * rtl-ssa/changes.h (class insn_change): Make function_info a
4338         friend class.
4339         * rtl-ssa/functions.h (function_info): Declare new entry points:
4340         create_set, create_insn.  Declare new change_alloc helper.
4341         * rtl-ssa/insns.cc (insn_info::print_full): Identify temporary insns in
4342         dump.
4343         * rtl-ssa/insns.h (insn_info): Add new m_is_temp flag and accompanying
4344         is_temporary accessor.
4345         * rtl-ssa/internals.inl (insn_info::insn_info): Initialize m_is_temp to
4346         false.
4347         * rtl-ssa/member-fns.inl (function_info::change_alloc): New.
4348         * rtl-ssa/movement.h (restrict_movement_for_defs_ignoring): Add
4349         handling for temporary defs.
4351 2023-11-24  Jakub Jelinek  <jakub@redhat.com>
4353         PR tree-optimization/112673
4354         * match.pd (bit_field_ref (vce @0) -> bit_field_ref @0): Only simplify
4355         if either @0 doesn't have scalar integral type or if it has mode
4356         precision.
4358 2023-11-24  Jakub Jelinek  <jakub@redhat.com>
4360         PR middle-end/112679
4361         * gimple-lower-bitint.cc (gimple_lower_bitint): Also stop first loop on
4362         floating point SSA_NAME set in FLOAT_EXPR assignment from BITINT_TYPE
4363         INTEGER_CST.  Set has_large_huge for those if that BITINT_TYPE is large
4364         or huge.  Set kind to such FLOAT_EXPR assignment rhs1 BITINT_TYPE's kind.
4366 2023-11-24  Richard Biener  <rguenther@suse.de>
4368         PR tree-optimization/112677
4369         * tree-vect-loop.cc (vectorizable_reduction): Use alloca
4370         to allocate vectype_op.
4372 2023-11-24  Haochen Gui  <guihaoc@gcc.gnu.org>
4374         * expr.cc (by_pieces_ninsns): Include by pieces compare when
4375         do the adjustment for overlap operations.  Replace mov_optab
4376         checks with gcc assertion.
4378 2023-11-24  Jakub Jelinek  <jakub@redhat.com>
4380         PR middle-end/112668
4381         * gimple-iterator.h (gsi_end, gsi_end_bb): New inline functions.
4382         * gimple-lower-bitint.cc (bitint_large_huge::handle_cast): After
4383         temporarily adding statements after m_init_gsi, update m_init_gsi
4384         such that later additions after it will be after the added statements.
4385         (bitint_large_huge::handle_load): Likewise.  When splitting
4386         gsi_bb (m_init_gsi) basic block, update m_preheader_bb if needed
4387         and update saved m_gsi as well if needed.
4388         (bitint_large_huge::lower_mergeable_stmt,
4389         bitint_large_huge::lower_comparison_stmt,
4390         bitint_large_huge::lower_mul_overflow,
4391         bitint_large_huge::lower_bit_query): Use gsi_end_bb.
4393 2023-11-24  Jakub Jelinek  <jakub@redhat.com>
4395         PR c++/112619
4396         * tree.cc (try_catch_may_fallthru): If second operand of
4397         TRY_CATCH_EXPR is not a STATEMENT_LIST, handle it as if it was a
4398         STATEMENT_LIST containing a single statement.
4400 2023-11-24  Richard Biener  <rguenther@suse.de>
4402         PR tree-optimization/112344
4403         * tree-chrec.cc (chrec_apply): Only use an unsigned add
4404         when the overall increment doesn't fit the signed type.
4406 2023-11-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4408         PR target/112599
4409         * config/riscv/riscv-v.cc (shuffle_extract_and_slide1up_patterns): New function.
4410         (expand_vec_perm_const_1): Add new optimization.
4412 2023-11-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4414         * config/riscv/riscv-v.cc (shuffle_bswap_pattern): Disable for NUNIT < 4.
4416 2023-11-24  Haochen Jiang  <haochen.jiang@intel.com>
4418         PR target/112643
4419         * config/i386/driver-i386.cc (check_avx10_avx512_features):
4420         Renamed to ...
4421         (check_avx512_features): this and remove avx10 check.
4422         (host_detect_local_cpu): Never append -mno-avx10.1-{256,512} to
4423         avoid emitting warnings when building GCC with native arch.
4424         * config/i386/i386-builtin.def (BDESC): Add missing AVX512VL for
4425         128/256 bit builtin for AVX512VP2INTERSECT.
4426         * config/i386/i386-options.cc (ix86_option_override_internal):
4427         Also check whether the AVX512 flags is set when trying to reset.
4428         * config/i386/i386.h
4429         (PTA_SKYLAKE_AVX512): Add missing PTA_EVEX512.
4430         (PTA_ZNVER4): Ditto.
4432 2023-11-23  Georg-Johann Lay  <avr@gjlay.de>
4434         PR target/86776
4435         * config/avr/avr.cc (TARGET_HAVE_SPECULATION_SAFE_VALUE): Define
4436         to speculation_safe_value_not_needed.
4438 2023-11-23  Marek Polacek  <polacek@redhat.com>
4440         * common.opt (Whardened, fhardened): New options.
4441         * config.in: Regenerate.
4442         * config/bpf/bpf.cc: Include "opts.h".
4443         (bpf_option_override): If flag_stack_protector_set_by_fhardened_p, do
4444         not inform that -fstack-protector does not work.
4445         * config/i386/i386-options.cc (ix86_option_override_internal): When
4446         -fhardened, maybe enable -fcf-protection=full.
4447         * config/linux-protos.h (linux_fortify_source_default_level): Declare.
4448         * config/linux.cc (linux_fortify_source_default_level): New.
4449         * config/linux.h (TARGET_FORTIFY_SOURCE_DEFAULT_LEVEL): Redefine.
4450         * configure: Regenerate.
4451         * configure.ac: Check if the linker supports '-z now' and '-z relro'.
4452         Check if -fhardened is supported on $target_os.
4453         * doc/invoke.texi: Document -fhardened and -Whardened.
4454         * doc/tm.texi: Regenerate.
4455         * doc/tm.texi.in (TARGET_FORTIFY_SOURCE_DEFAULT_LEVEL): Add.
4456         * gcc.cc (driver_handle_option): Remember if any link options or -static
4457         were specified on the command line.
4458         (process_command): When -fhardened, maybe enable -pie and
4459         -Wl,-z,relro,-z,now.
4460         * opts.cc (flag_stack_protector_set_by_fhardened_p): New global.
4461         (finish_options): When -fhardened, enable
4462         -ftrivial-auto-var-init=zero and -fstack-protector-strong.
4463         (print_help_hardened): New.
4464         (print_help): Call it.
4465         * opts.h (flag_stack_protector_set_by_fhardened_p): Declare.
4466         * target.def (fortify_source_default_level): New target hook.
4467         * targhooks.cc (default_fortify_source_default_level): New.
4468         * targhooks.h (default_fortify_source_default_level): Declare.
4469         * toplev.cc (process_options): When -fhardened, enable
4470         -fstack-clash-protection.  If flag_stack_protector_set_by_fhardened_p,
4471         do not warn that -fstack-protector not supported for this target.
4472         Don't enable -fhardened when !HAVE_FHARDENED_SUPPORT.
4474 2023-11-23  Christophe Lyon  <christophe.lyon@linaro.org>
4476         * config/arm/arm-mve-builtins-functions.h
4477         (full_width_access::memory_vector_mode): Add default clause.
4479 2023-11-23  Uros Bizjak  <ubizjak@gmail.com>
4481         PR target/112672
4482         * config/i386/i386.md (parityhi2):
4483         Use temporary register in the call to gen_parityhi2_cmp.
4485 2023-11-23  Uros Bizjak  <ubizjak@gmail.com>
4487         PR target/89316
4488         * config/i386/i386.cc (ix86_expand_split_stack_prologue): Obtain
4489         scratch regno when flag_force_indirect_call is set.  On 64-bit
4490         targets, call __morestack_large_model when  flag_force_indirect_call
4491         is set and on 32-bit targets with -fpic, manually expand PIC sequence
4492         to call __morestack.  Move the function address to an indirect
4493         call scratch register.
4495 2023-11-23  Sebastian Huber  <sebastian.huber@embedded-brains.de>
4497         PR tree-optimization/112678
4498         * tree-profile.cc (tree_profiling): Do not use atomic operations
4499         for -fprofile-update=single.
4501 2023-11-23  Juergen Christ  <jchrist@linux.ibm.com>
4503         * config/s390/s390-c.cc (s390_cpu_cpp_builtins): Define
4504         __GCC_ASM_FLAG_OUTPUTS__.
4505         * config/s390/s390.cc (s390_canonicalize_comparison): More
4506         UNSPEC_CC_TO_INT cases.
4507         (s390_md_asm_adjust): Implement flags output.
4508         * config/s390/s390.md (ccstore4): Allow mask operands.
4509         * doc/extend.texi: Document flags output.
4511 2023-11-23  Juergen Christ  <jchrist@linux.ibm.com>
4513         * config/s390/s390.md: Split TImode loads.
4515 2023-11-23  Juergen Christ  <jchrist@linux.ibm.com>
4517         * config/s390/vector.md: (*vec_extract) Fix.
4519 2023-11-23  Di Zhao  <dizhao@os.amperecomputing.com>
4521         * tree-ssa-reassoc.cc (get_reassociation_width): check
4522         for loop dependent FMAs.
4523         (reassociate_bb): For 3 ops, refine the condition to call
4524         swap_ops_for_binary_stmt.
4526 2023-11-23  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4528         * config/riscv/riscv-protos.h (emit_vec_extract): New function.
4529         * config/riscv/riscv-v.cc (emit_vec_extract): Ditto.
4530         * config/riscv/riscv.cc (riscv_legitimize_move): Refine codes.
4532 2023-11-23  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4534         PR target/112599
4535         PR target/112670
4536         * config/riscv/riscv-avlprop.cc (alv_can_be_propagated_p): New function.
4537         (vlmax_ta_p): Disable vrgather AVL propagation.
4539 2023-11-23  Jakub Jelinek  <jakub@redhat.com>
4541         PR middle-end/112336
4542         * expr.cc (EXTEND_BITINT): Don't call reduce_to_bit_field_precision
4543         if modifier is EXPAND_INITIALIZER.
4545 2023-11-23  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4547         * config/riscv/riscv-v.cc (emit_vlmax_gather_insn): Refine codes.
4548         (emit_vlmax_masked_gather_mu_insn): Ditto.
4549         (modulo_sel_indices): Ditto.
4550         (expand_vec_perm): Ditto.
4551         (shuffle_generic_patterns): Ditto.
4553 2023-11-23  Jakub Jelinek  <jakub@redhat.com>
4555         * doc/extend.texi (__builtin_stdc_bit_ceil, __builtin_stdc_bit_floor,
4556         __builtin_stdc_bit_width, __builtin_stdc_count_ones,
4557         __builtin_stdc_count_zeros, __builtin_stdc_first_leading_one,
4558         __builtin_stdc_first_leading_zero, __builtin_stdc_first_trailing_one,
4559         __builtin_stdc_first_trailing_zero, __builtin_stdc_has_single_bit,
4560         __builtin_stdc_leading_ones, __builtin_stdc_leading_zeros,
4561         __builtin_stdc_trailing_ones, __builtin_stdc_trailing_zeros): Document.
4563 2023-11-23  Richard Biener  <rguenther@suse.de>
4565         PR middle-end/32667
4566         * doc/md.texi (cpymem): Document that exact overlap of source
4567         and destination needs to work.
4568         * doc/standards.texi (ffreestanding): Mention memcpy is required
4569         to handle the exact overlap case.
4571 2023-11-23  Jakub Jelinek  <jakub@redhat.com>
4573         PR c++/110348
4574         * doc/invoke.texi (-Wno-c++26-extensions): Document.
4576 2023-11-23  Manolis Tsamis  <manolis.tsamis@vrull.eu>
4578         * ifcvt.cc (noce_convert_multiple_sets_1): Remove old code.
4580 2023-11-23  Pan Li  <pan2.li@intel.com>
4582         PR target/111720
4583         * dse.cc (get_stored_val): Allow vector mode if read size is
4584         less than or equal to stored size.
4586 2023-11-23  Costas Argyris  <costas.argyris@gmail.com>
4588         * configure.ac: Handle new --enable-win32-utf8-manifest
4589         option.
4590         * config.host: allow win32 utf8 manifest to be disabled
4591         by user.
4592         * configure: Regenerate.
4594 2023-11-22  John David Anglin  <danglin@gcc.gnu.org>
4596         PR target/112592
4597         * config/pa/pa.h (MAX_FIXED_MODE_SIZE): Define.
4599 2023-11-22  John David Anglin  <danglin@gcc.gnu.org>
4601         PR target/112617
4602         * config/pa/predicates.md (integer_store_memory_operand): Return
4603         true for REG+D addresses when reload_in_progress is true.
4605 2023-11-22  Richard Biener  <rguenther@suse.de>
4607         PR tree-optimization/112344
4608         * tree-chrec.cc (chrec_apply): Perform the overall increment
4609         calculation and increment in an unsigned type.
4611 2023-11-22  Andrew Stubbs  <ams@codesourcery.com>
4613         * config/gcn/gcn-valu.md (*mov<mode>_4reg): Disparage AVGPR use when a
4614         reload is required.
4616 2023-11-22  Vladimir N. Makarov  <vmakarov@redhat.com>
4618         PR rtl-optimization/112610
4619         * ira-costs.cc: (find_costs_and_classes): Remove arg.
4620         Use ira_dump_file for printing.
4621         (print_allocno_costs, print_pseudo_costs): Ditto.
4622         (ira_costs): Adjust call of find_costs_and_classes.
4623         (ira_set_pseudo_classes): Set up and restore ira_dump_file.
4625 2023-11-22  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4627         PR target/112598
4628         * config/riscv/riscv-v.cc (shuffle_compress_patterns): Fix vcompress bug.
4630 2023-11-22  Tamar Christina  <tamar.christina@arm.com>
4632         * config/aarch64/aarch64-simd.md
4633         (aarch64_uaddw<mode>_<PERM_EXTEND:perm_hilo>_zip,
4634         aarch64_usubw<mode>_<PERM_EXTEND:perm_hilo>_zip): Split into...
4635         (aarch64_uaddw<mode>_lo_zip, aarch64_uaddw<mode>_hi_zip,
4636         "aarch64_usubw<mode>_lo_zip, "aarch64_usubw<mode>_hi_zip): ... This.
4637         * config/aarch64/iterators.md (PERM_EXTEND, perm_index): Remove.
4638         (perm_hilo): Remove UNSPEC_ZIP1, UNSPEC_ZIP2.
4640 2023-11-22  Christophe Lyon  <christophe.lyon@linaro.org>
4642         * config/arm/arm-mve-builtins.cc
4643         (function_resolver::infer_pointer_type): Remove spurious line.
4645 2023-11-22  Xi Ruoyao  <xry111@xry111.site>
4647         * config/loongarch/lsx.md (vec_perm<mode:LSX>): Make the
4648         selector VIMODE.
4649         * config/loongarch/loongarch.cc (loongarch_expand_vec_perm):
4650         Use the mode of the selector (instead of the shuffled vector)
4651         for truncating it.  Operate on subregs in the selector mode if
4652         the shuffled vector has a different mode (i. e. it's a
4653         floating-point vector).
4655 2023-11-22  Hongyu Wang  <hongyu.wang@intel.com>
4657         * config/i386/i386.md (push2_di): Adjust operand order for AT&T
4658         syntax.
4659         (pop2_di): Likewise.
4660         (push2p_di): Likewise.
4661         (pop2p_di): Likewise.
4663 2023-11-22  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4665         PR target/112598
4666         * config/riscv/riscv-v.cc (emit_vlmax_gather_insn): Adapt the priority.
4667         (shuffle_generic_patterns): Fix permutation indice bug.
4668         * config/riscv/vector-iterators.md: Fix VEI16 bug.
4670 2023-11-22  liuhongt  <hongtao.liu@intel.com>
4672         * config/i386/sse.md (cbranch<mode>4): Extend to Vector
4673         HI/QImode.
4675 2023-11-22  Maciej W. Rozycki  <macro@embecosm.com>
4677         PR target/111815
4678         * config/vax/vax.cc (index_term_p): Only accept the index scaler
4679         as the RHS operand to ASHIFT.
4681 2023-11-22  Maciej W. Rozycki  <macro@embecosm.com>
4683         * config/riscv/predicates.md (order_operator): Remove predicate.
4684         * config/riscv/riscv.cc (riscv_rtx_costs): Update accordingly.
4685         * config/riscv/riscv.md (*branch<mode>, *mov<GPR:mode><X:mode>cc)
4686         (cstore<mode>4): Likewise.
4688 2023-11-22  Maciej W. Rozycki  <macro@embecosm.com>
4690         * config/riscv/riscv-protos.h (riscv_expand_float_scc): Add
4691         `invert_ptr' parameter.
4692         * config/riscv/riscv.cc (riscv_emit_float_compare): Add NE
4693         inversion handling.
4694         (riscv_expand_float_scc): Pass `invert_ptr' through to
4695         `riscv_emit_float_compare'.
4696         (riscv_expand_conditional_move): Pass `&invert' to
4697         `riscv_expand_float_scc'.
4698         * config/riscv/riscv.md (add<mode>cc): Likewise.
4700 2023-11-22  Maciej W. Rozycki  <macro@embecosm.com>
4702         * config/riscv/riscv.cc (riscv_emit_float_compare) <NE>: Handle
4703         separately.
4704         <EQ, LE, LT, GE, GT>: Return operands supplied as is.
4705         (riscv_emit_binary): Call `riscv_emit_binary' directly rather
4706         than going through a temporary register for word-mode targets.
4707         (riscv_expand_conditional_branch): Canonicalize the comparison
4708         if not against constant zero.
4710 2023-11-22  Maciej W. Rozycki  <macro@embecosm.com>
4712         * config/riscv/predicates.md (ne_operator): New predicate.
4713         * config/riscv/riscv.cc (riscv_insn_cost): Handle branches on a
4714         floating-point condition.
4715         * config/riscv/riscv.md (@cbranch<mode>4): Rename expander to...
4716         (@cbranch<ANYF:mode>4): ... this.  Only expand the RTX via
4717         `riscv_expand_conditional_branch' for `!signed_order_operator'
4718         operators, otherwise let it through.
4719         (*cbranch<ANYF:mode>4, *cbranch<ANYF:mode>4): New insns and
4720         splitters.
4722 2023-11-22  Maciej W. Rozycki  <macro@embecosm.com>
4724         * config/riscv/riscv.cc (riscv_expand_conditional_move): Don't
4725         bail out in floating-point conditions.
4727 2023-11-22  Maciej W. Rozycki  <macro@embecosm.com>
4729         * config/riscv/riscv.cc (riscv_expand_float_scc): Suppress the
4730         use of SUBREG if the conditional-set target is word-mode.
4732 2023-11-22  Maciej W. Rozycki  <macro@embecosm.com>
4734         * config/riscv/riscv.md (add<mode>cc): New expander.
4736 2023-11-22  Maciej W. Rozycki  <macro@embecosm.com>
4738         * config/riscv/predicates.md (movcc_operand): New predicate.
4739         * config/riscv/riscv.cc (riscv_expand_conditional_move): Handle
4740         generic targets.
4741         * config/riscv/riscv.md (mov<mode>cc): Likewise.
4742         * config/riscv/riscv.opt (mmovcc): New option.
4743         * doc/invoke.texi (Option Summary): Document it.
4745 2023-11-22  Maciej W. Rozycki  <macro@embecosm.com>
4747         * config/riscv/riscv-protos.h (riscv_emit_unary): New prototype.
4748         * config/riscv/riscv.cc (riscv_emit_unary): New function.
4750 2023-11-22  Maciej W. Rozycki  <macro@embecosm.com>
4752         * config/riscv/riscv.cc (riscv_expand_conditional_move): Unify
4753         conditional-move handling across all the relevant targets.
4755 2023-11-22  Maciej W. Rozycki  <macro@embecosm.com>
4757         * config/riscv/riscv.cc (riscv_expand_conditional_move): Also
4758         accept constants for T-Head data input operands.
4760 2023-11-22  Maciej W. Rozycki  <macro@embecosm.com>
4762         * config/riscv/riscv.cc (riscv_expand_conditional_move): Also
4763         accept constants for T-Head comparison operands.
4765 2023-11-22  Maciej W. Rozycki  <macro@embecosm.com>
4767         * config/riscv/riscv.cc (riscv_expand_conditional_move): Remove
4768         the check for operand 1 being constant 0 in the Ventana/Zicond
4769         case for equality comparisons.
4771 2023-11-22  Maciej W. Rozycki  <macro@embecosm.com>
4773         * config/riscv/riscv.cc (riscv_expand_conditional_move): Also
4774         invert the condition for GEU and LEU.
4776 2023-11-22  Maciej W. Rozycki  <macro@embecosm.com>
4778         * config/riscv/riscv.cc (riscv_insn_cost): New function.
4779         (riscv_max_noce_ifcvt_seq_cost): Likewise.
4780         (riscv_noce_conversion_profitable_p): Likewise.
4781         (TARGET_INSN_COST): New macro.
4782         (TARGET_MAX_NOCE_IFCVT_SEQ_COST): New macro.
4783         (TARGET_NOCE_CONVERSION_PROFITABLE_P): New macro.
4785 2023-11-22  Maciej W. Rozycki  <macro@embecosm.com>
4787         * config/riscv/riscv.cc (riscv_expand_conditional_move): Remove
4788         extraneous variable for EQ vs NE operation selection.
4790 2023-11-22  Maciej W. Rozycki  <macro@embecosm.com>
4792         * config/riscv/riscv.cc (riscv_expand_conditional_move): Use
4793         `nullptr' rather than 0 to initialize a pointer.
4795 2023-11-22  Maciej W. Rozycki  <macro@embecosm.com>
4797         * config/riscv/riscv.cc (riscv_expand_conditional_move): Use
4798         `mode0' and `mode1' for `GET_MODE (op0)' and `GET_MODE (op1)'.
4800 2023-11-22  Maciej W. Rozycki  <macro@embecosm.com>
4802         * config/riscv/riscv.cc (riscv_expand_conditional_move): Use
4803         `mode' for `GET_MODE (dest)' throughout.
4805 2023-11-22  Maciej W. Rozycki  <macro@embecosm.com>
4807         * config/riscv/riscv.cc (riscv_emit_int_compare): Bail out if
4808         NEED_EQ_NE_P but the comparison is neither EQ nor NE.
4810 2023-11-22  Maciej W. Rozycki  <macro@embecosm.com>
4812         * config/riscv/riscv.md (mov<mode>cc): Move comment on SFB
4813         patterns over to...
4814         (*mov<GPR:mode><X:mode>cc): ... here.
4816 2023-11-21  Robin Dapp  <rdapp@ventanamicro.com>
4818         PR middle-end/112406
4819         * tree-vect-loop.cc (vectorize_fold_left_reduction): Allow
4820         reduction index != 1.
4821         (vect_transform_reduction): Handle reduction index != 1.
4823 2023-11-21  Richard Sandiford  <richard.sandiford@arm.com>
4825         * common.md (aligned_register_operand): New predicate.
4827 2023-11-21  Richard Sandiford  <richard.sandiford@arm.com>
4829         * ira-int.h (ira_allocno): Add a register_filters field.
4830         (ALLOCNO_REGISTER_FILTERS): New macro.
4831         (ALLOCNO_SET_REGISTER_FILTERS): Likewise.
4832         * ira-build.cc (ira_create_allocno): Initialize register_filters.
4833         (create_cap_allocno): Propagate register_filters.
4834         (propagate_allocno_info): Likewise.
4835         (propagate_some_info_from_allocno): Likewise.
4836         * ira-lives.cc (process_register_constraint_filters): New function.
4837         (process_bb_node_lives): Use it to record register filter
4838         information.
4839         * ira-color.cc (assign_hard_reg): Check register filters.
4840         (improve_allocation, fast_allocation): Likewise.
4842 2023-11-21  Richard Sandiford  <richard.sandiford@arm.com>
4844         * lra-constraints.cc (process_alt_operands): Check register filters.
4846 2023-11-21  Richard Sandiford  <richard.sandiford@arm.com>
4848         * recog.h (operand_alternative): Add a register_filters field.
4849         (alternative_register_filters): New function.
4850         * recog.cc (preprocess_constraints): Calculate the filters field.
4851         (constrain_operands): Check register filters.
4853 2023-11-21  Richard Sandiford  <richard.sandiford@arm.com>
4855         * rtl.def (DEFINE_REGISTER_CONSTRAINT): Add an optional filter
4856         operand.
4857         * doc/md.texi (define_register_constraint): Document it.
4858         * doc/tm.texi.in: Reference it in discussion about aligned registers.
4859         * doc/tm.texi: Regenerate.
4860         * gensupport.h (register_filters, get_register_filter_id): Declare.
4861         * gensupport.cc (register_filter_map, register_filters): New variables.
4862         (get_register_filter_id): New function.
4863         (process_define_register_constraint): Likewise.
4864         (process_rtx): Pass define_register_constraints to
4865         process_define_register_constraint.
4866         * genconfig.cc (main): Emit a definition of NUM_REGISTER_FILTERS.
4867         * genpreds.cc (constraint_data): Add a filter field.
4868         (add_constraint): Update accordingly.
4869         (process_define_register_constraint): Pass the filter operand.
4870         (write_init_reg_class_start_regs): New function.
4871         (write_get_register_filter): Likewise.
4872         (write_get_register_filter_id): Likewise.
4873         (write_tm_preds_h): Write a definition of target_constraints,
4874         plus helpers to test its contents.  Write the get_register_filter*
4875         functions.
4876         (write_insn_preds_c): Write init_reg_class_start_regs.
4877         * reginfo.cc (init_reg_class_start_regs): Declare.
4878         (init_reg_sets): Call it.
4879         * target-globals.h (this_target_constraints): Declare.
4880         (target_globals): Add a constraints field.
4881         (restore_target_globals): Update accordingly.
4882         * target-globals.cc: Include tm_p.h.
4883         (default_target_globals): Initialize the constraints field.
4884         (save_target_globals): Handle the constraints field.
4885         (target_globals::~target_globals): Likewise.
4887 2023-11-21  Richard Biener  <rguenther@suse.de>
4889         PR tree-optimization/112623
4890         * tree-ssa-forwprop.cc (simplify_vector_constructor):
4891         Check the source mode of the insn for vector pack/unpacks.
4893 2023-11-21  Richard Biener  <rguenther@suse.de>
4895         * tree-vect-loop.cc (vect_analyze_loop_2): Move check
4896         of VF against max_vf until VF is final.
4898 2023-11-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4900         PR target/112598
4901         * config/riscv/riscv.cc (riscv_const_insns): Disallow DI CONST_VECTOR on RV32.
4903 2023-11-21  Tamar Christina  <tamar.christina@arm.com>
4905         * config/aarch64/aarch64.cc (aarch64_override_options): Rework warnings.
4907 2023-11-21  Tamar Christina  <tamar.christina@arm.com>
4909         PR target/111370
4910         * config/aarch64/aarch64-arches.def (armv9-a, armv9.1-a, armv9.2-a,
4911         armv9.3-a): Update to generic-armv9-a.
4912         * config/aarch64/aarch64-cores.def (generic-armv9-a): New.
4913         * config/aarch64/aarch64-tune.md: Regenerate.
4914         * config/aarch64/aarch64.cc: Include generic_armv9_a.h.
4915         * config/aarch64/tuning_models/generic_armv9_a.h: New file.
4917 2023-11-21  Tamar Christina  <tamar.christina@arm.com>
4919         PR target/111370
4920         * config/aarch64/aarch64-arches.def (armv8-9, armv8-a, armv8.1-a,
4921         armv8.2-a, armv8.3-a, armv8.4-a, armv8.5-a, armv8.6-a, armv8.7-a,
4922         armv8.8-a): Update to generic_armv8_a.
4923         * config/aarch64/aarch64-cores.def (generic-armv8-a): New.
4924         * config/aarch64/aarch64-tune.md: Regenerate.
4925         * config/aarch64/aarch64.cc: Include generic_armv8_a.h
4926         * config/aarch64/aarch64.h (TARGET_CPU_DEFAULT): Change to
4927         TARGET_CPU_generic_armv8_a.
4928         * config/aarch64/tuning_models/generic_armv8_a.h: New file.
4930 2023-11-21  Tamar Christina  <tamar.christina@arm.com>
4932         PR target/111370
4933         * config/aarch64/aarch64-cores.def: Add generic.
4934         * config/aarch64/aarch64-opts.h (enum aarch64_proc): Remove generic.
4935         * config/aarch64/aarch64-tune.md: Regenerate
4936         * config/aarch64/aarch64.cc (all_cores): Remove generic
4937         * config/aarch64/aarch64.h (enum target_cpus): Remove
4938         TARGET_CPU_generic.
4940 2023-11-21  Tamar Christina  <tamar.christina@arm.com>
4942         PR target/111370
4943         * config/aarch64/aarch64.cc (generic_addrcost_table,
4944         exynosm1_addrcost_table,
4945         xgene1_addrcost_table,
4946         thunderx2t99_addrcost_table,
4947         thunderx3t110_addrcost_table,
4948         tsv110_addrcost_table,
4949         qdf24xx_addrcost_table,
4950         a64fx_addrcost_table,
4951         neoversev1_addrcost_table,
4952         neoversen2_addrcost_table,
4953         neoversev2_addrcost_table,
4954         generic_regmove_cost,
4955         cortexa57_regmove_cost,
4956         cortexa53_regmove_cost,
4957         exynosm1_regmove_cost,
4958         thunderx_regmove_cost,
4959         xgene1_regmove_cost,
4960         qdf24xx_regmove_cost,
4961         thunderx2t99_regmove_cost,
4962         thunderx3t110_regmove_cost,
4963         tsv110_regmove_cost,
4964         a64fx_regmove_cost,
4965         neoversen2_regmove_cost,
4966         neoversev1_regmove_cost,
4967         neoversev2_regmove_cost,
4968         generic_vector_cost,
4969         a64fx_vector_cost,
4970         qdf24xx_vector_cost,
4971         thunderx_vector_cost,
4972         tsv110_vector_cost,
4973         cortexa57_vector_cost,
4974         exynosm1_vector_cost,
4975         xgene1_vector_cost,
4976         thunderx2t99_vector_cost,
4977         thunderx3t110_vector_cost,
4978         ampere1_vector_cost,
4979         generic_branch_cost,
4980         generic_tunings,
4981         cortexa35_tunings,
4982         cortexa53_tunings,
4983         cortexa57_tunings,
4984         cortexa72_tunings,
4985         cortexa73_tunings,
4986         exynosm1_tunings,
4987         thunderxt88_tunings,
4988         thunderx_tunings,
4989         tsv110_tunings,
4990         xgene1_tunings,
4991         emag_tunings,
4992         qdf24xx_tunings,
4993         saphira_tunings,
4994         thunderx2t99_tunings,
4995         thunderx3t110_tunings,
4996         neoversen1_tunings,
4997         ampere1_tunings,
4998         ampere1a_tunings,
4999         neoversev1_vector_cost,
5000         neoversev1_tunings,
5001         neoverse512tvb_vector_cost,
5002         neoverse512tvb_tunings,
5003         neoversen2_vector_cost,
5004         neoversen2_tunings,
5005         neoversev2_vector_cost,
5006         neoversev2_tunings
5007         a64fx_tunings): Split into own files.
5008         * config/aarch64/tuning_models/a64fx.h: New file.
5009         * config/aarch64/tuning_models/ampere1.h: New file.
5010         * config/aarch64/tuning_models/ampere1a.h: New file.
5011         * config/aarch64/tuning_models/cortexa35.h: New file.
5012         * config/aarch64/tuning_models/cortexa53.h: New file.
5013         * config/aarch64/tuning_models/cortexa57.h: New file.
5014         * config/aarch64/tuning_models/cortexa72.h: New file.
5015         * config/aarch64/tuning_models/cortexa73.h: New file.
5016         * config/aarch64/tuning_models/emag.h: New file.
5017         * config/aarch64/tuning_models/exynosm1.h: New file.
5018         * config/aarch64/tuning_models/generic.h: New file.
5019         * config/aarch64/tuning_models/neoverse512tvb.h: New file.
5020         * config/aarch64/tuning_models/neoversen1.h: New file.
5021         * config/aarch64/tuning_models/neoversen2.h: New file.
5022         * config/aarch64/tuning_models/neoversev1.h: New file.
5023         * config/aarch64/tuning_models/neoversev2.h: New file.
5024         * config/aarch64/tuning_models/qdf24xx.h: New file.
5025         * config/aarch64/tuning_models/saphira.h: New file.
5026         * config/aarch64/tuning_models/thunderx.h: New file.
5027         * config/aarch64/tuning_models/thunderx2t99.h: New file.
5028         * config/aarch64/tuning_models/thunderx3t110.h: New file.
5029         * config/aarch64/tuning_models/thunderxt88.h: New file.
5030         * config/aarch64/tuning_models/tsv110.h: New file.
5031         * config/aarch64/tuning_models/xgene1.h: New file.
5033 2023-11-21  Tamar Christina  <tamar.christina@arm.com>
5035         * config/aarch64/aarch64-simd.md (vec_unpack<su>_lo_<mode,
5036         vec_unpack<su>_lo_<mode): Split into...
5037         (vec_unpacku_lo_<mode, vec_unpacks_lo_<mode,
5038         vec_unpacku_lo_<mode, vec_unpacks_lo_<mode): ...These.
5039         (aarch64_usubw<mode>_<PERM_EXTEND:perm_hilo>_zip): New.
5040         (aarch64_uaddw<mode>_<PERM_EXTEND:perm_hilo>_zip): New.
5041         * config/aarch64/iterators.md (PERM_EXTEND, perm_index): New.
5042         (perm_hilo): Add UNSPEC_ZIP1, UNSPEC_ZIP2.
5044 2023-11-21  Tamar Christina  <tamar.christina@arm.com>
5046         * config/aarch64/aarch64.cc (aarch64_adjust_stmt_cost): Guard mla.
5047         (aarch64_vector_costs::count_ops): Likewise.
5049 2023-11-21  Sebastian Huber  <sebastian.huber@embedded-brains.de>
5051         PR middle-end/112634
5052         * tree-profile.cc (gen_assign_counter_update): Cast the unsigned result type of
5053         __atomic_add_fetch() to the signed counter type.
5054         (gen_counter_update): Fix formatting.
5056 2023-11-21  Jakub Jelinek  <jakub@redhat.com>
5058         * tree-profile.cc (gen_counter_update, tree_profiling): Formatting
5059         fixes.
5061 2023-11-21  Jakub Jelinek  <jakub@redhat.com>
5063         PR middle-end/112639
5064         * builtins.cc (fold_builtin_bit_query): If arg0 has side-effects, arg1
5065         is specified but cleared, call save_expr on arg0.
5067 2023-11-21  Hongyu Wang  <hongyu.wang@intel.com>
5069         * config/i386/i386-expand.h (gen_push): Add default bool
5070         parameter.
5071         (gen_pop): Likewise.
5072         * config/i386/i386-opts.h (enum apx_features): Add apx_ppx, add
5073         it to apx_all.
5074         * config/i386/i386.cc (ix86_emit_restore_reg_using_pop): Add
5075         ppx_p parameter for function declaration.
5076         (gen_push2): Add ppx_p parameter, emit push2p if ppx_p is true.
5077         (gen_push): Likewise.
5078         (ix86_emit_restore_reg_using_pop2): Likewise for pop2p.
5079         (ix86_emit_save_regs): Emit pushp/push2p under TARGET_APX_PPX.
5080         (ix86_emit_restore_reg_using_pop): Add ppx_p, emit popp insn
5081         and adjust cfi when ppx_p is ture.
5082         (ix86_emit_restore_reg_using_pop2): Add ppx_p and parse to its
5083         callee.
5084         (ix86_emit_restore_regs_using_pop2): Likewise.
5085         (ix86_expand_epilogue): Parse TARGET_APX_PPX to
5086         ix86_emit_restore_reg_using_pop.
5087         * config/i386/i386.h (TARGET_APX_PPX): New.
5088         * config/i386/i386.md (UNSPEC_APX_PPX): New unspec.
5089         (pushp_di): New define_insn.
5090         (popp_di): Likewise.
5091         (push2p_di): Likewise.
5092         (pop2p_di): Likewise.
5093         * config/i386/i386.opt: Add apx_ppx enum.
5095 2023-11-21  Richard Biener  <rguenther@suse.de>
5097         PR tree-optimization/111970
5098         * tree-vect-stmts.cc (vectorizable_load): Fix offset calculation
5099         for SLP gather load.
5100         (vectorizable_store): Likewise for SLP scatter store.
5102 2023-11-21  Xi Ruoyao  <xry111@xry111.site>
5104         * config/loongarch/loongarch-def.h (stdint.h): Guard with #if to
5105         exclude it for target libraries.
5106         (loongarch_isa_base_features): Likewise.
5107         (loongarch_isa): Likewise.
5108         (loongarch_abi): Likewise.
5109         (loongarch_target): Likewise.
5110         (loongarch_cpu_default_isa): Likewise.
5112 2023-11-21  liuhongt  <hongtao.liu@intel.com>
5114         PR target/112325
5115         * config/i386/i386-expand.cc (emit_reduc_half): Hanlde
5116         V8QImode.
5117         * config/i386/mmx.md (reduc_<code>_scal_<mode>): New expander.
5118         (reduc_<code>_scal_v4qi): Ditto.
5120 2023-11-20  Marc Poulhiès  <dkm@kataplop.net>
5122         * config/nvptx/nvptx.h (struct machine_function): Fix typo in variadic.
5123         * config/nvptx/nvptx.cc (nvptx_function_arg_advance): Adjust to use fixed name.
5124         (nvptx_declare_function_name): Likewise.
5125         (nvptx_call_args): Likewise.
5126         (nvptx_expand_call): Likewise.
5128 2023-11-20  Sebastian Huber  <sebastian.huber@embedded-brains.de>
5130         * tree-profile.cc (gen_counter_update): Use unshare_expr() for the
5131         counter expression in the second gimple_build_assign().
5133 2023-11-20  Jan Hubicka  <jh@suse.cz>
5135         * cgraph.cc (add_detected_attribute_1): New function.
5136         (cgraph_node::add_detected_attribute): Likewise.
5137         * cgraph.h (cgraph_node::add_detected_attribute): Declare.
5138         * common.opt: Add -Wsuggest-attribute=returns_nonnull.
5139         * doc/invoke.texi: Document new flag.
5140         * gimple-range-fold.cc (fold_using_range::range_of_call):
5141         Use known reutrn value ranges.
5142         * ipa-prop.cc (struct ipa_return_value_summary): New type.
5143         (class ipa_return_value_sum_t): New type.
5144         (ipa_return_value_sum): New summary.
5145         (ipa_record_return_value_range): New function.
5146         (ipa_return_value_range): New function.
5147         * ipa-prop.h (ipa_return_value_range): Declare.
5148         (ipa_record_return_value_range): Declare.
5149         * ipa-pure-const.cc (warn_function_returns_nonnull): New funcion.
5150         * ipa-utils.h (warn_function_returns_nonnull): Declare.
5151         * symbol-summary.h: Fix comment.
5152         * tree-vrp.cc (execute_ranger_vrp): Record return values.
5154 2023-11-20  Richard Biener  <rguenther@suse.de>
5156         PR tree-optimization/112618
5157         * tree-vect-loop.cc (vect_transform_loop_stmt): For not
5158         relevant and unused .MASK_CALL make sure we remove the
5159         scalar stmt.
5161 2023-11-20  Richard Biener  <rguenther@suse.de>
5163         PR tree-optimization/112281
5164         * tree-loop-distribution.cc
5165         (loop_distribution::pg_add_dependence_edges): For = in the
5166         innermost common loop record a partition conflict.
5168 2023-11-20  Richard Biener  <rguenther@suse.de>
5170         PR middle-end/112622
5171         * convert.cc (convert_to_real_1): Use element_precision
5172         where a vector type might appear.  Provide specific
5173         diagnostic for unexpected vector argument.
5175 2023-11-20  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5177         PR target/112597
5178         * config/riscv/vector-iterators.md: Remove VDEMOTE and VMDEMOTE.
5179         * config/riscv/vector.md: Fix slide1 intermediate mode bug.
5181 2023-11-20  Robin Dapp  <rdapp@ventanamicro.com>
5183         * config/riscv/riscv-v.cc (gather_scatter_valid_offset_mode_p):
5184         Add check for XLEN == 32.
5185         * config/riscv/vector-iterators.md: Change VLS part of the
5186         demote iterator to 2x elements modes
5187         * config/riscv/vector.md: Adjust iterators and insn conditions.
5189 2023-11-20  Christophe Lyon  <christophe.lyon@linaro.org>
5191         * config/arm/arm-mve-builtins-base.cc (vld1_impl, vld1q)
5192         (vst1_impl, vst1q): New.
5193         * config/arm/arm-mve-builtins-base.def (vld1q, vst1q): New.
5194         * config/arm/arm-mve-builtins-base.h (vld1q, vst1q): New.
5195         * config/arm/arm_mve.h
5196         (vld1q): Delete.
5197         (vst1q): Delete.
5198         (vld1q_s8): Delete.
5199         (vld1q_s32): Delete.
5200         (vld1q_s16): Delete.
5201         (vld1q_u8): Delete.
5202         (vld1q_u32): Delete.
5203         (vld1q_u16): Delete.
5204         (vld1q_f32): Delete.
5205         (vld1q_f16): Delete.
5206         (vst1q_f32): Delete.
5207         (vst1q_f16): Delete.
5208         (vst1q_s8): Delete.
5209         (vst1q_s32): Delete.
5210         (vst1q_s16): Delete.
5211         (vst1q_u8): Delete.
5212         (vst1q_u32): Delete.
5213         (vst1q_u16): Delete.
5214         (__arm_vld1q_s8): Delete.
5215         (__arm_vld1q_s32): Delete.
5216         (__arm_vld1q_s16): Delete.
5217         (__arm_vld1q_u8): Delete.
5218         (__arm_vld1q_u32): Delete.
5219         (__arm_vld1q_u16): Delete.
5220         (__arm_vst1q_s8): Delete.
5221         (__arm_vst1q_s32): Delete.
5222         (__arm_vst1q_s16): Delete.
5223         (__arm_vst1q_u8): Delete.
5224         (__arm_vst1q_u32): Delete.
5225         (__arm_vst1q_u16): Delete.
5226         (__arm_vld1q_f32): Delete.
5227         (__arm_vld1q_f16): Delete.
5228         (__arm_vst1q_f32): Delete.
5229         (__arm_vst1q_f16): Delete.
5230         (__arm_vld1q): Delete.
5231         (__arm_vst1q): Delete.
5232         * config/arm/mve.md (mve_vld1q_f<mode>): Rename into ...
5233         (@mve_vld1q_f<mode>): ... this.
5234         (mve_vld1q_<supf><mode>): Rename into ...
5235         (@mve_vld1q_<supf><mode>) ... this.
5236         (mve_vst1q_f<mode>): Rename into ...
5237         (@mve_vst1q_f<mode>): ... this.
5238         (mve_vst1q_<supf><mode>): Rename into ...
5239         (@mve_vst1q_<supf><mode>) ... this.
5241 2023-11-20  Christophe Lyon  <christophe.lyon@linaro.org>
5243         * config/arm/arm-mve-builtins-shapes.cc (load, store): New.
5244         * config/arm/arm-mve-builtins-shapes.h (load, store): New.
5246 2023-11-20  Christophe Lyon  <christophe.lyon@linaro.org>
5248         * config/arm/arm-mve-builtins-functions.h (multi_vector_function)
5249         (full_width_access): New classes.
5250         * config/arm/arm-mve-builtins.cc
5251         (find_type_suffix_for_scalar_type, infer_pointer_type)
5252         (require_pointer_type, get_contiguous_base, add_mem_operand)
5253         (add_fixed_operand, use_contiguous_load_insn)
5254         (use_contiguous_store_insn): New.
5255         * config/arm/arm-mve-builtins.h (memory_vector_mode)
5256         (infer_pointer_type, require_pointer_type, get_contiguous_base)
5257         (add_mem_operand)
5258         (add_fixed_operand, use_contiguous_load_insn)
5259         (use_contiguous_store_insn): New.
5261 2023-11-20  Christophe Lyon  <christophe.lyon@linaro.org>
5263         * config/arm/arm-mve-builtins-shapes.cc (build_const_pointer):
5264         New.
5265         (parse_type): Add support for '_', 'al' and 'as'.
5266         * config/arm/arm-mve-builtins.h (function_instance): Add
5267         memory_scalar_type.
5268         (function_base): Likewise.
5270 2023-11-20  Christophe Lyon  <christophe.lyon@linaro.org>
5272         * config/arm/arm-builtins.cc (arm_init_simd_builtin_types): Fix
5273         initialization of arm_simd_types[].eltype.
5274         * config/arm/arm-mve-builtins.def (DEF_MVE_TYPE): Fix scalar
5275         types.
5277 2023-11-20  Jakub Jelinek  <jakub@redhat.com>
5279         * typeclass.h (enum type_class): Add vector_type_class.
5280         * builtins.cc (type_to_class): Return vector_type_class for
5281         VECTOR_TYPE.
5282         * doc/extend.texi (__builtin_classify_type): Mention bit-precise
5283         integer types and vector types.
5285 2023-11-20  Robin Dapp  <rdapp@ventanamicro.com>
5287         PR middle-end/112406
5288         * tree-vect-patterns.cc (vect_recog_mask_conversion_pattern):
5289         Convert masks for conditional operations as well.
5291 2023-11-20  Jakub Jelinek  <jakub@redhat.com>
5293         PR tree-optimization/90693
5294         * tree-ssa-math-opts.cc (match_single_bit_test): Mark POPCOUNT with
5295         result only used in equality comparison against 1 with direct optab
5296         support as .POPCOUNT call with 2 arguments.
5297         * internal-fn.h (expand_POPCOUNT): Declare.
5298         * internal-fn.def (DEF_INTERNAL_INT_EXT_FN): New macro, document it,
5299         undefine at the end.
5300         (POPCOUNT): Use it instead of DEF_INTERNAL_INT_FN.
5301         * internal-fn.cc (DEF_INTERNAL_INT_EXT_FN): Define to nothing before
5302         inclusion to define expanders.
5303         (expand_POPCOUNT): New function.
5305 2023-11-20  Jakub Jelinek  <jakub@redhat.com>
5307         PR tree-optimization/90693
5308         * tree-ssa-math-opts.cc (match_single_bit_test): New function.
5309         (math_opts_dom_walker::after_dom_children): Call it for EQ_EXPR
5310         and NE_EXPR assignments and GIMPLE_CONDs.
5312 2023-11-20  Jakub Jelinek  <jakub@redhat.com>
5314         * internal-fn.def: Document missing DEF_INTERNAL* macros and make sure
5315         they are all undefined at the end.
5316         * internal-fn.cc (lookup_hilo_internal_fn, lookup_evenodd_internal_fn,
5317         widening_fn_p, get_len_internal_fn): Don't undef DEF_INTERNAL_*FN
5318         macros after inclusion of internal-fn.def.
5320 2023-11-20  Haochen Jiang  <haochen.jiang@intel.com>
5322         * common/config/i386/cpuinfo.h (get_available_features):
5323         Add avx10_set and version and detect avx10.1.
5324         (cpu_indicator_init): Handle avx10.1-512.
5325         * common/config/i386/i386-common.cc
5326         (OPTION_MASK_ISA2_AVX10_1_256_SET): New.
5327         (OPTION_MASK_ISA2_AVX10_1_256_SET): Ditto.
5328         (OPTION_MASK_ISA2_AVX10_1_512_UNSET): Ditto.
5329         (OPTION_MASK_ISA2_AVX10_1_512_UNSET): Ditto.
5330         (OPTION_MASK_ISA2_AVX2_UNSET): Modify for AVX10.1.
5331         (ix86_handle_option): Handle -mavx10.1-256 and -mavx10.1-512.
5332         Add indicator for explicit no-avx512 and no-avx10.1 options.
5333         * common/config/i386/i386-cpuinfo.h (enum processor_features):
5334         Add FEATURE_AVX10_1_256 and FEATURE_AVX10_1_512.
5335         * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
5336         AVX10_1_256 and AVX10_1_512.
5337         * config/i386/cpuid.h (bit_AVX10): New.
5338         (bit_AVX10_256): Ditto.
5339         (bit_AVX10_512): Ditto.
5340         * config/i386/driver-i386.cc (check_avx10_avx512_features): New.
5341         (host_detect_local_cpu): Do not append "-mno-" options under
5342         specific scenarios to avoid emitting a warning.
5343         * config/i386/i386-isa.def
5344         (EVEX512): Add DEF_PTA(EVEX512).
5345         (AVX10_1_256): Add DEF_PTA(AVX10_1_256).
5346         (AVX10_1_512): Add DEF_PTA(AVX10_1_512).
5347         * config/i386/i386-options.cc (isa2_opts): Add -mavx10.1-256 and
5348         -mavx10.1-512.
5349         (ix86_function_specific_save): Save explicit no indicator.
5350         (ix86_function_specific_restore): Restore explicit no indicator.
5351         (ix86_valid_target_attribute_inner_p): Handle avx10.1, avx10.1-256 and
5352         avx10.1-512.
5353         (ix86_valid_target_attribute_tree): Handle avx512 function
5354         attributes with avx10.1 command line option.
5355         (ix86_option_override_internal): Handle AVX10.1 options.
5356         * config/i386/i386.h: Add PTA_EVEX512 for AVX512 target
5357         machines.
5358         * config/i386/i386.opt: Add variable ix86_no_avx512_explicit and
5359         ix86_no_avx10_1_explicit, option -mavx10.1, -mavx10.1-256 and
5360         -mavx10.1-512.
5361         * doc/extend.texi: Document avx10.1, avx10.1-256 and avx10.1-512.
5362         * doc/invoke.texi: Document -mavx10.1, -mavx10.1-256 and -mavx10.1-512.
5363         * doc/sourcebuild.texi: Document target avx10.1, avx10.1-256
5364         and avx10.1-512.
5366 2023-11-20  liuhongt  <hongtao.liu@intel.com>
5368         PR target/112325
5369         * config/i386/sse.md (reduc_<code>_scal_<mode>): New expander.
5370         (REDUC_ANY_LOGIC_MODE): New iterator.
5371         (REDUC_PLUS_MODE): Extend to VxHI/SI/DImode.
5372         (REDUC_SSE_PLUS_MODE): Ditto.
5374 2023-11-20  xuli  <xuli1@eswincomputing.com>
5376         PR target/112537
5377         * config/riscv/riscv-opts.h (enum riscv_stringop_strategy_enum): Strategy enum.
5378         * config/riscv/riscv-string.cc (riscv_expand_block_move): Disabled based on options.
5379         (expand_block_move): Ditto.
5380         * config/riscv/riscv.opt: Add -mmemcpy-strategy=.
5382 2023-11-20  Lulu Cheng  <chenglulu@loongson.cn>
5384         * config/loongarch/gnu-user.h (MUSL_ABI_SPEC): Modify suffix.
5386 2023-11-19  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5388         * config/riscv/riscv-v.cc (emit_vlmax_insn_lra): Optimize constant AVL.
5390 2023-11-19  Philipp Tomsich  <philipp.tomsich@vrull.eu>
5392         * config/riscv/riscv-protos.h (extract_base_offset_in_addr): Prototype.
5393         * config/riscv/riscv.cc (riscv_fusion_pairs): New enum.
5394         (riscv_tune_param): Add fusible_ops field.
5395         (riscv_tune_param_rocket_tune_info): Initialize new field.
5396         (riscv_tune_param_sifive_7_tune_info): Likewise.
5397         (thead_c906_tune_info): Likewise.
5398         (generic_oo_tune_info): Likewise.
5399         (optimize_size_tune_info): Likewise.
5400         (riscv_macro_fusion_p): New function.
5401         (riscv_fusion_enabled_p): Likewise.
5402         (riscv_macro_fusion_pair_p): Likewise.
5403         (TARGET_SCHED_MACRO_FUSION_P): Define.
5404         (TARGET_SCHED_MACRO_FUSION_PAIR_P): Likewise.
5405         (extract_base_offset_in_addr): Moved into riscv.cc from...
5406         * config/riscv/thead.cc: Here.
5407         Co-authored-by: Raphael Zinsly <rzinsly@ventanamicro.com>
5408         Co-authored-by: Jeff Law <jlaw@ventanamicro.com>
5410 2023-11-19  Jeff Law  <jlaw@ventanamicro.com>
5412         * config/c6x/c6x.md (mvilc): Add mode to UNSPEC source.
5413         * config/mips/mips.md (rdhwr_synci_step_<mode>): Likewise.
5414         * config/riscv/riscv.md (riscv_frcsr, riscv_frflags): Likewise.
5415         * config/s390/s390.md (@split_stack_call<mode>): Likewise.
5416         (@split_stack_cond_call<mode>): Likewise.
5417         * config/sh/sh.md (sp_switch_1): Likewise.
5419 2023-11-19  David Malcolm  <dmalcolm@redhat.com>
5421         * diagnostic.h: Include "rich-location.h".
5422         * edit-context.h (class fixit_hint): New forward decl.
5423         * gcc-rich-location.h: Include "rich-location.h".
5424         * genmatch.cc: Likewise.
5425         * pretty-print.h: Likewise.
5427 2023-11-19  David Malcolm  <dmalcolm@redhat.com>
5429         * Makefile.in (CPPLIB_H): Add libcpp/include/rich-location.h.
5430         * coretypes.h (class rich_location): New forward decl.
5432 2023-11-19  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5434         * config/riscv/riscv-v.cc (expand_tuple_move): Fix bug.
5436 2023-11-19  David Malcolm  <dmalcolm@redhat.com>
5438         PR analyzer/107573
5439         * doc/invoke.texi: Add -Wanalyzer-undefined-behavior-strtok.
5441 2023-11-18  Xi Ruoyao  <xry111@xry111.site>
5443         * config/loongarch/predicates.md (const_call_insn_operand):
5444         Remove buggy "HAVE_AS_SUPPORT_CALL36" conditions.  Change "1" to
5445         "true" to make the coding style consistent.
5447 2023-11-18  Xi Ruoyao  <xry111@xry111.site>
5449         * config/loongarch/genopts/isa-evolution.in: (lam-bh, lamcas):
5450         Add.
5451         * config/loongarch/loongarch-str.h: Regenerate.
5452         * config/loongarch/loongarch.opt: Regenerate.
5453         * config/loongarch/loongarch-cpucfg-map.h: Regenerate.
5454         * config/loongarch/loongarch-cpu.cc
5455         (ISA_BASE_LA64V110_FEATURES): Include OPTION_MASK_ISA_LAM_BH
5456         and OPTION_MASK_ISA_LAMCAS.
5457         * config/loongarch/sync.md (atomic_add<mode:SHORT>): Use
5458         TARGET_LAM_BH instead of ISA_BASE_IS_LA64V110.  Remove empty
5459         lines from assembly output.
5460         (atomic_exchange<mode>_short): Likewise.
5461         (atomic_exchange<mode:SHORT>): Likewise.
5462         (atomic_fetch_add<mode>_short): Likewise.
5463         (atomic_fetch_add<mode:SHORT>): Likewise.
5464         (atomic_cas_value_strong<mode>_amcas): Use TARGET_LAMCAS instead
5465         of ISA_BASE_IS_LA64V110.
5466         (atomic_compare_and_swap<mode>): Likewise.
5467         (atomic_compare_and_swap<mode:GPR>): Likewise.
5468         (atomic_compare_and_swap<mode:SHORT>): Likewise.
5469         * config/loongarch/loongarch.cc (loongarch_asm_code_end): Dump
5470         status if -mlam-bh and -mlamcas if -fverbose-asm.
5472 2023-11-18  Xi Ruoyao  <xry111@xry111.site>
5474         * config/loongarch/loongarch.cc (loongarch_print_operand): Don't
5475         print dbar 0x700 if TARGET_LD_SEQ_SA.
5476         * config/loongarch/sync.md (atomic_load<mode>): Likewise.
5478 2023-11-18  Xi Ruoyao  <xry111@xry111.site>
5480         * config/loongarch/loongarch.md (DIV): New mode iterator.
5481         (<optab:ANY_DIV><mode:GPR>3): Don't expand if TARGET_DIV32.
5482         (<optab:ANY_DIV>di3_fake): Disable if TARGET_DIV32.
5483         (*<optab:ANY_DIV><mode:GPR>3): Allow SImode if TARGET_DIV32.
5484         (<optab:ANY_DIV>si3_extended): New insn if TARGET_DIV32.
5486 2023-11-18  Xi Ruoyao  <xry111@xry111.site>
5488         * config/loongarch/loongarch-def.h:
5489         (loongarch_isa_base_features): Declare.  Define it in ...
5490         * config/loongarch/loongarch-cpu.cc
5491         (loongarch_isa_base_features): ... here.
5492         (fill_native_cpu_config): If we know the base ISA of the CPU
5493         model from PRID, use it instead of la64 (v1.0).  Check if all
5494         expected features of this base ISA is available, emit a warning
5495         if not.
5496         * config/loongarch/loongarch-opts.cc (config_target_isa): Enable
5497         the features implied by the base ISA if not -march=native.
5499 2023-11-18  Xi Ruoyao  <xry111@xry111.site>
5501         * config/loongarch/genopts/isa-evolution.in: New data file.
5502         * config/loongarch/genopts/genstr.sh: Translate info in
5503         isa-evolution.in when generating loongarch-str.h, loongarch.opt,
5504         and loongarch-cpucfg-map.h.
5505         * config/loongarch/genopts/loongarch.opt.in (isa_evolution):
5506         New variable.
5507         * config/loongarch/t-loongarch: (loongarch-cpucfg-map.h): New
5508         rule.
5509         (loongarch-str.h): Depend on isa-evolution.in.
5510         (loongarch.opt): Depend on isa-evolution.in.
5511         (loongarch-cpu.o): Depend on loongarch-cpucfg-map.h.
5512         * config/loongarch/loongarch-str.h: Regenerate.
5513         * config/loongarch/loongarch-def.h (loongarch_isa):  Add field
5514         for evolution features.  Add helper function to enable features
5515         in this field.
5516         Probe native CPU capability and save the corresponding options
5517         into preset.
5518         * config/loongarch/loongarch-cpu.cc (fill_native_cpu_config):
5519         Probe native CPU capability and save the corresponding options
5520         into preset.
5521         (cache_cpucfg): Simplify with C++11-style for loop.
5522         (cpucfg_useful_idx, N_CPUCFG_WORDS): Move to ...
5523         * config/loongarch/loongarch.cc
5524         (loongarch_option_override_internal): Enable the ISA evolution
5525         feature options implied by -march and not explicitly disabled.
5526         (loongarch_asm_code_end): New function, print ISA information as
5527         comments in the assembly if -fverbose-asm.  It makes easier to
5528         debug things like -march=native.
5529         (TARGET_ASM_CODE_END): Define.
5530         * config/loongarch/loongarch.opt: Regenerate.
5531         * config/loongarch/loongarch-cpucfg-map.h: Generate.
5532         (cpucfg_useful_idx, N_CPUCFG_WORDS) ... here.
5534 2023-11-18  Xi Ruoyao  <xry111@xry111.site>
5536         * config/loongarch/genopts/loongarch-strings:
5537         (STR_ISA_BASE_LA64V110): Add.
5538         * config/loongarch/genopts/loongarch.opt.in:
5539         (ISA_BASE_LA64V110): Add.
5540         * config/loongarch/loongarch-def.c
5541         (loongarch_isa_base_strings): Initialize [ISA_BASE_LA64V110]
5542         to STR_ISA_BASE_LA64V110.
5543         * config/loongarch/loongarch.opt: Regenerate.
5544         * config/loongarch/loongarch-str.h: Regenerate.
5546 2023-11-18  Sebastian Huber  <sebastian.huber@embedded-brains.de>
5548         * doc/invoke.texi (-fprofile-update): Clarify default method.  Document
5549         the atomic method behaviour.
5550         * tree-profile.cc (enum counter_update_method): New.
5551         (counter_update): Likewise.
5552         (gen_counter_update): Use counter_update_method.  Split the
5553         atomic counter update in two 32-bit atomic operations if
5554         necessary.
5555         (tree_profiling): Select counter_update_method.
5557 2023-11-18  Sebastian Huber  <sebastian.huber@embedded-brains.de>
5559         * tree-profile.cc (gen_assign_counter_update): New.
5560         (gen_counter_update): Likewise.
5561         (gimple_gen_edge_profiler): Use gen_counter_update().
5562         (gimple_gen_time_profiler): Likewise.
5564 2023-11-18  Sebastian Huber  <sebastian.huber@embedded-brains.de>
5566         * config/rtems.h (TARGET_HAVE_LIBATOMIC): Define.
5567         * doc/tm.texi: Regenerate.
5568         * doc/tm.texi.in (TARGET_HAVE_LIBATOMIC): Add.
5569         * target.def (have_libatomic): New.
5571 2023-11-18  Sebastian Huber  <sebastian.huber@embedded-brains.de>
5573         Revert:
5574         2023-11-18  Sebastian Huber  <sebastian.huber@embedded-brains.de>
5576         * config/sparc/rtemself.h (SPARC_GCOV_TYPE_SIZE): Define.
5577         * config/sparc/sparc.c (sparc_gcov_type_size): New.
5578         (TARGET_GCOV_TYPE_SIZE): Redefine if SPARC_GCOV_TYPE_SIZE is defined.
5579         * coverage.c (get_gcov_type): Use targetm.gcov_type_size().
5580         * doc/tm.texi (TARGET_GCOV_TYPE_SIZE): Add hook under "Misc".
5581         * doc/tm.texi.in: Regenerate.
5582         * target.def (gcov_type_size): New target hook.
5583         * targhooks.c (default_gcov_type_size): New.
5584         * targhooks.h (default_gcov_type_size): Declare.
5585         * tree-profile.c (gimple_gen_edge_profiler): Use precision of
5586         gcov_type_node.
5587         (gimple_gen_time_profiler): Likewise.
5589 2023-11-18  Kito Cheng  <kito.cheng@sifive.com>
5591         * config/riscv/riscv-target-attr.cc
5592         (riscv_target_attr_parser::parse_arch): Use char[] for
5593         std::unique_ptr to prevent mismatched new delete issue.
5594         (riscv_process_one_target_attr): Ditto.
5595         (riscv_process_target_attr): Ditto.
5597 2023-11-18  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5599         * config/riscv/vector-iterators.md: Refactor iterators.
5601 2023-11-18  Lulu Cheng  <chenglulu@loongson.cn>
5603         * config/loongarch/sync.md (atomic_load<mode>): New template.
5605 2023-11-18  Lulu Cheng  <chenglulu@loongson.cn>
5607         * config/loongarch/loongarch-def.h: Add comments.
5608         * config/loongarch/loongarch-opts.h (ISA_BASE_IS_LA64V110): Define macro.
5609         * config/loongarch/loongarch.cc (loongarch_memmodel_needs_rel_acq_fence):
5610         Remove redundant code implementations.
5611         * config/loongarch/sync.md (d): Added QI, HI support.
5612         (atomic_add<mode>): New template.
5613         (atomic_exchange<mode>_short): Likewise.
5614         (atomic_cas_value_strong<mode>_amcas): Likewise..
5615         (atomic_fetch_add<mode>_short): Likewise.
5617 2023-11-18  Lulu Cheng  <chenglulu@loongson.cn>
5619         * config.gcc: Support LA664.
5620         * config/loongarch/genopts/loongarch-strings: Likewise.
5621         * config/loongarch/genopts/loongarch.opt.in: Likewise.
5622         * config/loongarch/loongarch-cpu.cc (fill_native_cpu_config): Likewise.
5623         * config/loongarch/loongarch-def.c: Likewise.
5624         * config/loongarch/loongarch-def.h (N_ISA_BASE_TYPES): Likewise.
5625         (ISA_BASE_LA64V110): Define macro.
5626         (N_ARCH_TYPES): Update value.
5627         (N_TUNE_TYPES): Update value.
5628         (CPU_LA664): New macro.
5629         * config/loongarch/loongarch-opts.cc (isa_default_abi): Likewise.
5630         (isa_base_compat_p): Likewise.
5631         * config/loongarch/loongarch-opts.h (TARGET_64BIT): This parameter is enabled
5632         when la_target.isa.base is equal to ISA_BASE_LA64V100 or ISA_BASE_LA64V110.
5633         (TARGET_uARCH_LA664): Define macro.
5634         * config/loongarch/loongarch-str.h (STR_CPU_LA664): Likewise.
5635         * config/loongarch/loongarch.cc (loongarch_cpu_sched_reassociation_width):
5636         Add LA664 support.
5637         * config/loongarch/loongarch.opt: Regenerate.
5639 2023-11-18  Lulu Cheng  <chenglulu@loongson.cn>
5640             Xi Ruoyao  <xry111@xry111.site>
5642         * config.in: Regenerate.
5643         * config/loongarch/loongarch-opts.h (HAVE_AS_SUPPORT_CALL36): Define macro.
5644         * config/loongarch/loongarch.cc (loongarch_legitimize_call_address):
5645         If binutils supports call36, the function call is not split over expand.
5646         * config/loongarch/loongarch.md: Add call36 generation code.
5647         * config/loongarch/predicates.md: Likewise.
5648         * configure: Regenerate.
5649         * configure.ac: Check whether binutils supports call36.
5651 2023-11-18  David Malcolm  <dmalcolm@redhat.com>
5653         PR analyzer/106147
5654         * Makefile.in (ANALYZER_OBJS): Add analyzer/infinite-loop.o.
5655         * doc/invoke.texi: Add -fdump-analyzer-infinite-loop and
5656         -Wanalyzer-infinite-loop.  Add missing CWE link for
5657         -Wanalyzer-infinite-recursion.
5658         * timevar.def (TV_ANALYZER_INFINITE_LOOPS): New.
5660 2023-11-17  Robin Dapp  <rdapp@ventanamicro.com>
5662         PR middle-end/112406
5663         PR middle-end/112552
5664         * tree-vect-loop.cc (vect_transform_reduction): Pass truth
5665         vectype for mask operand.
5667 2023-11-17  Jakub Jelinek  <jakub@redhat.com>
5669         PR c++/107571
5670         * gimplify.cc (expand_FALLTHROUGH_r): Use wi->removed_stmt after
5671         gsi_remove, change the way of passing fallthrough stmt at the end
5672         of sequence to expand_FALLTHROUGH.  Diagnose IFN_FALLTHROUGH
5673         with GF_CALL_NOTHROW flag.
5674         (expand_FALLTHROUGH): Change loc into array of 2 location_t elts,
5675         don't test wi.callback_result, instead check whether first
5676         elt is not UNKNOWN_LOCATION and in that case pedwarn with the
5677         second location.
5678         * gimple-walk.cc (walk_gimple_seq_mod): Clear wi->removed_stmt
5679         after the flag has been used.
5680         * internal-fn.def (FALLTHROUGH): Mention in comment the special
5681         meaning of the TREE_NOTHROW/GF_CALL_NOTHROW flag on the calls.
5683 2023-11-17  Jakub Jelinek  <jakub@redhat.com>
5685         PR tree-optimization/112566
5686         PR tree-optimization/83171
5687         * match.pd (ctz(ext(X)) -> ctz(X), popcount(zext(X)) -> popcount(X),
5688         parity(ext(X)) -> parity(X), ffs(ext(X)) -> ffs(X)): New
5689         simplifications.
5690         ( __builtin_ffs (X) == 0 -> X == 0): Use FFS rather than
5691         BUILT_IN_FFS BUILT_IN_FFSL BUILT_IN_FFSLL BUILT_IN_FFSIMAX.
5693 2023-11-17  Jakub Jelinek  <jakub@redhat.com>
5695         PR tree-optimization/112374
5696         * tree-vect-loop.cc (check_reduction_path): Perform the cond_fn_p
5697         special case only if op_use_stmt == use_stmt, use as_a rather than
5698         dyn_cast in that case.
5700 2023-11-17  Richard Biener  <rguenther@suse.de>
5702         Revert:
5703         2023-11-14  Richard Biener  <rguenther@suse.de>
5705         PR tree-optimization/112281
5706         * tree-loop-distribution.cc (pg_add_dependence_edges):
5707         Preserve stmt order when the innermost loop has exact
5708         overlap.
5710 2023-11-17  Georg-Johann Lay  <avr@gjlay.de>
5712         PR target/53372
5713         * config/avr/avr.cc (avr_asm_named_section) [AVR_SECTION_PROGMEM]:
5714         Only return some .progmem*.data section if the user did not
5715         specify a section attribute.
5716         (avr_section_type_flags) [avr_progmem_p]: Unset SECTION_NOTYPE
5717         in returned section flags.
5719 2023-11-17  Xi Ruoyao  <xry111@xry111.site>
5721         * config/loongarch/lsx.md (copysign<mode>3): Allow operand[2] to
5722         be an reg_or_vector_same_val_operand.  If it's a const vector
5723         with same negative elements, expand the copysign with a bitset
5724         instruction.  Otherwise, force it into an register.
5725         * config/loongarch/lasx.md (copysign<mode>3): Likewise.
5727 2023-11-17  Haochen Gui  <guihaoc@gcc.gnu.org>
5729         PR target/111449
5730         * config/rs6000/vsx.md (*vsx_le_mem_to_mem_mov_ti): New.
5732 2023-11-17  Haochen Gui  <guihaoc@gcc.gnu.org>
5734         PR target/111449
5735         * config/rs6000/altivec.md (cbranchv16qi4): New expand pattern.
5736         * config/rs6000/rs6000.cc (rs6000_generate_compare): Generate
5737         insn sequence for V16QImode equality compare.
5738         * config/rs6000/rs6000.h (MOVE_MAX_PIECES): Define.
5739         (STORE_MAX_PIECES): Define.
5741 2023-11-17  Li Wei  <liwei@loongson.cn>
5743         * config/loongarch/loongarch.h (CLZ_DEFINED_VALUE_AT_ZERO):
5744         Implement.
5745         (CTZ_DEFINED_VALUE_AT_ZERO): Same.
5747 2023-11-17  Richard Biener  <rguenther@suse.de>
5749         * dwarf2out.cc (add_AT_die_ref): Assert we do not add
5750         a self-ref DW_AT_abstract_origin or DW_AT_specification.
5752 2023-11-17  Jiahao Xu  <xujiahao@loongson.cn>
5754         * config/loongarch/loongarch.cc
5755         (loongarch_builtin_vectorization_cost): Adjust.
5757 2023-11-16  Andrew Pinski  <pinskia@gmail.com>
5759         PR rtl-optimization/112483
5760         * simplify-rtx.cc (simplify_binary_operation_1) <case COPYSIGN>:
5761         Call simplify_unary_operation for NEG instead of
5762         simplify_gen_unary.
5764 2023-11-16  Edwin Lu  <ewlu@rivosinc.com>
5766         PR target/111557
5767         * config/riscv/riscv-c.cc (riscv_cpu_cpp_builtins): update macro name
5769 2023-11-16  Uros Bizjak  <ubizjak@gmail.com>
5771         PR target/78904
5772         * config/i386/i386.md (*addqi_ext2<mode>_0):
5773         New define_insn_and_split pattern.
5774         (*subqi_ext2<mode>_0): Ditto.
5775         (*<code>qi_ext2<mode>_0): Ditto.
5777 2023-11-16  John David Anglin  <danglin@gcc.gnu.org>
5779         PR rtl-optimization/112415
5780         * config/pa/pa.cc (pa_legitimate_address_p): Allow 14-bit
5781         displacements before reload.  Simplify logic flow.  Revise
5782         comments.
5783         * config/pa/pa.h (TARGET_ELF64): New define.
5784         (INT14_OK_STRICT): Update define and comment.
5785         * config/pa/pa64-linux.h (TARGET_ELF64): Define.
5786         * config/pa/predicates.md (base14_operand): Don't check
5787         alignment of short displacements.
5788         (integer_store_memory_operand): Don't return true when
5789         reload_in_progress is true.  Remove INT_5_BITS check.
5790         (floating_point_store_memory_operand): Don't return true when
5791         reload_in_progress is true.  Use INT14_OK_STRICT to check
5792         whether long displacements are always okay.
5794 2023-11-16  Uros Bizjak  <ubizjak@gmail.com>
5796         PR target/112567
5797         * config/i386/i386.md (*<any_logic:code>qi_ext<mode>_1_slp):
5798         Fix generation of invalid RTX in split pattern.
5800 2023-11-16  David Malcolm  <dmalcolm@redhat.com>
5802         * diagnostic.cc (diagnostic_context::set_option_hooks): Add
5803         "lang_mask" param.
5804         * diagnostic.h (diagnostic_context::option_enabled_p): Update for
5805         move of m_lang_mask.
5806         (diagnostic_context::set_option_hooks): Add "lang_mask" param.
5807         (diagnostic_context::get_lang_mask): New.
5808         (diagnostic_context::m_lang_mask): Move into m_option_callbacks,
5809         thus making private.
5810         * lto-wrapper.cc (main): Update for new lang_mask param of
5811         set_option_hooks.
5812         * toplev.cc (init_asm_output): Use get_lang_mask.
5813         (general_init): Move initialization of global_dc's lang_mask to
5814         new lang_mask param of set_option_hooks.
5816 2023-11-16  Tamar Christina  <tamar.christina@arm.com>
5818         PR tree-optimization/111878
5819         * tree-vect-loop-manip.cc (find_loop_location): Skip edges check if
5820         latch incorrect.
5822 2023-11-16  Kito Cheng  <kito.cheng@sifive.com>
5824         * config.gcc (riscv): Add riscv-target-attr.o.
5825         * config/riscv/riscv-protos.h (riscv_declare_function_size) New.
5826         (riscv_option_valid_attribute_p): New.
5827         (riscv_override_options_internal): New.
5828         (struct riscv_tune_info): New.
5829         (riscv_parse_tune): New.
5830         * config/riscv/riscv-target-attr.cc
5831         (class riscv_target_attr_parser): New.
5832         (struct riscv_attribute_info): New.
5833         (riscv_attributes): New.
5834         (riscv_target_attr_parser::parse_arch): New.
5835         (riscv_target_attr_parser::handle_arch): New.
5836         (riscv_target_attr_parser::handle_cpu): New.
5837         (riscv_target_attr_parser::handle_tune): New.
5838         (riscv_target_attr_parser::update_settings): New.
5839         (riscv_process_one_target_attr): New.
5840         (num_occurences_in_str): New.
5841         (riscv_process_target_attr): New.
5842         (riscv_option_valid_attribute_p): New.
5843         * config/riscv/riscv.cc: Include target-globals.h and
5844         riscv-subset.h.
5845         (struct riscv_tune_info): Move to riscv-protos.h.
5846         (get_tune_str): New.
5847         (riscv_parse_tune): New parameter null_p.
5848         (riscv_declare_function_size): New.
5849         (riscv_option_override): Build target_option_default_node and
5850         target_option_current_node.
5851         (riscv_save_restore_target_globals): New.
5852         (riscv_option_restore): New.
5853         (riscv_previous_fndecl): New.
5854         (riscv_set_current_function): Apply the target attribute.
5855         (TARGET_OPTION_RESTORE): Define.
5856         (TARGET_OPTION_VALID_ATTRIBUTE_P): Ditto.
5857         * config/riscv/riscv.h (SWITCHABLE_TARGET): Define to 1.
5858         (ASM_DECLARE_FUNCTION_SIZE) Define.
5859         * config/riscv/riscv.opt (mtune=): Add Save attribute.
5860         (mcpu=): Ditto.
5861         (mcmodel=): Ditto.
5862         * config/riscv/t-riscv: Add build rule for riscv-target-attr.o
5863         * doc/extend.texi: Add doc for target attribute.
5865 2023-11-16  Kito Cheng  <kito.cheng@sifive.com>
5867         PR target/112478
5868         * config/riscv/riscv.cc (riscv_save_return_addr_reg_p): Check ra
5869         is ever lived.
5871 2023-11-16  liuhongt  <hongtao.liu@intel.com>
5873         PR target/112532
5874         * config/i386/mmx.md (*vec_dup<mode>): Extend for V4HI and
5875         V2HI.
5877 2023-11-16  Jakub Jelinek  <jakub@redhat.com>
5879         PR target/112526
5880         * config/i386/i386.md
5881         (mov imm,%rax; mov %rdi,%rdx; mulx %rax -> mov imm,%rdx; mulx %rdi):
5882         Verify in define_peephole2 that operands[2] dies or is overwritten
5883         at the end of multiplication.
5885 2023-11-16  Jakub Jelinek  <jakub@redhat.com>
5887         PR tree-optimization/112536
5888         * tree-vect-slp.cc (arg0_map): New variable.
5889         (vect_get_operand_map): For IFN_CLZ or IFN_CTZ, return arg0_map.
5891 2023-11-16  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5893         PR middle-end/112554
5894         * tree-vect-loop.cc (vect_determine_partial_vectors_and_peeling):
5895         Clear SELECT_VL_P for non-partial vectorization.
5897 2023-11-16  Hongyu Wang  <hongyu.wang@intel.com>
5899         * config/i386/sse.md (vec_extract_hi_<mode>): Add noavx512vl
5900         alternative with attr addr gpr16 and "jm" constraint.
5901         (vec_extract_hi_<mode>): Likewise for SF vector modes.
5902         (@vec_extract_hi_<mode>): Likewise.
5903         (*vec_extractv2ti): Likewise.
5904         (vec_set_hi_<mode><mask_name>): Likewise.
5905         * config/i386/mmx.md (@sse4_1_insertps_<mode>): Correct gpr16 attr for
5906         each alternative.
5908 2023-11-15  Uros Bizjak  <ubizjak@gmail.com>
5910         PR target/78904
5911         * config/i386/i386.md (*movstrictqi_ext<mode>_1): New insn pattern.
5912         (*addqi_ext<mode>_2_slp): New define_insn_and_split pattern.
5913         (*subqi_ext<mode>_2_slp): Ditto.
5914         (*<any_logic:code>qi_ext<mode>_2_slp): Ditto.
5916 2023-11-15  Patrick O'Neill  <patrick@rivosinc.com>
5918         * common/config/riscv/riscv-common.cc
5919         (riscv_subset_list::parse_std_ext): Emit an error and skip to
5920         the next extension when a non-canonical ordering is detected.
5922 2023-11-15  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
5924         * gcc-rich-location.cc (maybe_range_label_for_tree_type_mismatch::get_text):
5925         Revert using the macro CAN_HAVE_LOCATION_P.
5927 2023-11-15  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5929         PR target/112447
5930         * config/riscv/riscv-vsetvl.cc (pre_vsetvl::emit_vsetvl): Insert
5931         local vsetvl info before LCM suggested one.
5932         Tested-by: Patrick O'Neill <patrick@rivosinc.com> # pre-commit-CI #679
5933         Co-developed-by: Vineet Gupta <vineetg@rivosinc.com>
5935 2023-11-15  Vineet Gupta  <vineetg@rivosinc.com>
5937         * config/riscv/riscv.cc (riscv_sign_extend_if_not_subreg_prom): New.
5938         * (riscv_extend_comparands): Call New function on operands.
5940 2023-11-15  Uros Bizjak  <ubizjak@gmail.com>
5942         * config/i386/i386.md (*addqi_ext<mode>_1_slp):
5943         Add "&& " before "reload_completed" in split condition.
5944         (*subqi_ext<mode>_1_slp): Ditto.
5945         (*<any_logic:code>qi_ext<mode>_1_slp): Ditto.
5947 2023-11-15  Uros Bizjak  <ubizjak@gmail.com>
5949         PR target/112540
5950         * config/i386/i386.md (*addqi_ext<mode>_1_slp):
5951         Correct operand numbers in split pattern.  Replace !Q constraint
5952         of operand 1 with !qm.  Add insn constrain.
5953         (*subqi_ext<mode>_1_slp): Ditto.
5954         (*<any_logic:code>qi_ext<mode>_1_slp): Ditto.
5956 2023-11-15  Thomas Schwinge  <thomas@codesourcery.com>
5958         * doc/extend.texi (Nvidia PTX Built-in Functions): Fix
5959         copy'n'paste-o in '__builtin_nvptx_brev' description.
5961 2023-11-15  Roger Sayle  <roger@nextmovesoftware.com>
5962             Thomas Schwinge  <thomas@codesourcery.com>
5964         * config/nvptx/nvptx.md (UNSPEC_BITREV): Delete.
5965         (bitrev<mode>2): Represent using bitreverse.
5967 2023-11-15  Andrew Stubbs  <ams@codesourcery.com>
5968             Andrew Jenner   <andrew@codesourcery.com>
5970         * config/gcn/constraints.md: Add "a" AVGPR constraint.
5971         * config/gcn/gcn-valu.md (*mov<mode>): Add AVGPR alternatives.
5972         (*mov<mode>_4reg): Likewise.
5973         (@mov<mode>_sgprbase): Likewise.
5974         (gather<mode>_insn_1offset<exec>): Likewise.
5975         (gather<mode>_insn_1offset_ds<exec>): Likewise.
5976         (gather<mode>_insn_2offsets<exec>): Likewise.
5977         (scatter<mode>_expr<exec_scatter>): Likewise.
5978         (scatter<mode>_insn_1offset_ds<exec_scatter>): Likewise.
5979         (scatter<mode>_insn_2offsets<exec_scatter>): Likewise.
5980         * config/gcn/gcn.cc (MAX_NORMAL_AVGPR_COUNT): Define.
5981         (gcn_class_max_nregs): Handle AVGPR_REGS and ALL_VGPR_REGS.
5982         (gcn_hard_regno_mode_ok): Likewise.
5983         (gcn_regno_reg_class): Likewise.
5984         (gcn_spill_class): Allow spilling to AVGPRs on TARGET_CDNA1_PLUS.
5985         (gcn_sgpr_move_p): Handle AVGPRs.
5986         (gcn_secondary_reload): Reload AVGPRs via VGPRs.
5987         (gcn_conditional_register_usage): Handle AVGPRs.
5988         (gcn_vgpr_equivalent_register_operand): New function.
5989         (gcn_valid_move_p): Check for validity of AVGPR moves.
5990         (gcn_compute_frame_offsets): Handle AVGPRs.
5991         (gcn_memory_move_cost): Likewise.
5992         (gcn_register_move_cost): Likewise.
5993         (gcn_vmem_insn_p): Handle TYPE_VOP3P_MAI.
5994         (gcn_md_reorg): Handle AVGPRs.
5995         (gcn_hsa_declare_function_name): Likewise.
5996         (print_reg): Likewise.
5997         (gcn_dwarf_register_number): Likewise.
5998         * config/gcn/gcn.h (FIRST_AVGPR_REG): Define.
5999         (AVGPR_REGNO): Define.
6000         (LAST_AVGPR_REG): Define.
6001         (SOFT_ARG_REG): Update.
6002         (FRAME_POINTER_REGNUM): Update.
6003         (DWARF_LINK_REGISTER): Update.
6004         (FIRST_PSEUDO_REGISTER): Update.
6005         (AVGPR_REGNO_P): Define.
6006         (enum reg_class): Add AVGPR_REGS and ALL_VGPR_REGS.
6007         (REG_CLASS_CONTENTS): Add new register classes and add entries for
6008         AVGPRs to all classes.
6009         (REGISTER_NAMES): Add AVGPRs.
6010         * config/gcn/gcn.md (FIRST_AVGPR_REG, LAST_AVGPR_REG): Define.
6011         (AP_REGNUM, FP_REGNUM): Update.
6012         (define_attr "type"): Add vop3p_mai.
6013         (define_attr "unit"): Handle vop3p_mai.
6014         (define_attr "gcn_version"): Add "cdna2".
6015         (define_attr "enabled"): Handle cdna2.
6016         (*mov<mode>_insn): Add AVGPR alternatives.
6017         (*movti_insn): Likewise.
6018         * config/gcn/mkoffload.cc (isa_has_combined_avgprs): New.
6019         (process_asm): Process avgpr_count.
6020         * config/gcn/predicates.md (gcn_avgpr_register_operand): New.
6021         (gcn_avgpr_hard_register_operand): New.
6022         * doc/md.texi: Document the "a" constraint.
6024 2023-11-15  Andrew Stubbs  <ams@codesourcery.com>
6026         * config/gcn/gcn-valu.md (mov<mode>_sgprbase): Add @ modifier.
6027         (reload_in<mode>): Delete.
6028         (reload_out<mode>): Delete.
6029         * config/gcn/gcn.cc (CODE_FOR): Delete.
6030         (get_code_for_##PREFIX##vN##SUFFIX): Delete.
6031         (CODE_FOR_OP): Delete.
6032         (get_code_for_##PREFIX): Delete.
6033         (gcn_secondary_reload): Replace "get_code_for" with "code_for".
6035 2023-11-15  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
6037         * config/s390/t-s390: Generate s390-gen-builtins.h without
6038         linemarkers.
6040 2023-11-15  Richard Biener  <rguenther@suse.de>
6042         PR tree-optimization/112282
6043         * tree-if-conv.cc (ifcvt_hoist_invariants): Only hoist from
6044         the loop header.
6046 2023-11-15  Richard Biener  <rguenther@suse.de>
6048         * tree-vect-slp.cc (vect_slp_region): Also clear visited flag when
6049         we skipped an instance due to -fdbg-cnt.
6051 2023-11-15  Xi Ruoyao  <xry111@xry111.site>
6053         * config/loongarch/loongarch.cc
6054         (loongarch_memmodel_needs_release_fence): Remove.
6055         (loongarch_cas_failure_memorder_needs_acquire): New static
6056         function.
6057         (loongarch_print_operand): Redefine 'G' for the barrier on CAS
6058         failure.
6059         * config/loongarch/sync.md (atomic_cas_value_strong<mode>):
6060         Remove the redundant barrier before the LL instruction, and
6061         emit an acquire barrier on failure if needed by
6062         failure_memorder.
6063         (atomic_cas_value_cmp_and_7_<mode>): Likewise.
6064         (atomic_cas_value_add_7_<mode>): Remove the unnecessary barrier
6065         before the LL instruction.
6066         (atomic_cas_value_sub_7_<mode>): Likewise.
6067         (atomic_cas_value_and_7_<mode>): Likewise.
6068         (atomic_cas_value_xor_7_<mode>): Likewise.
6069         (atomic_cas_value_or_7_<mode>): Likewise.
6070         (atomic_cas_value_nand_7_<mode>): Likewise.
6071         (atomic_cas_value_exchange_7_<mode>): Likewise.
6073 2023-11-15  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6075         * config/riscv/riscv-v.cc (expand_vector_init_trailing_same_elem): New function.
6076         (expand_vec_init): Add trailing optimization.
6078 2023-11-15  Pan Li  <pan2.li@intel.com>
6080         * config/riscv/riscv-v.cc (rvv_builder::get_merge_scalar_mask):
6081         Add inner_mode mask arg for mask int mode.
6082         (get_repeating_sequence_dup_machine_mode): Add mask_bit_mode arg
6083         to get the good enough vector int mode on precision.
6084         (expand_vector_init_merge_repeating_sequence): Pass required args
6085         to above func.
6087 2023-11-15  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6089         PR target/112535
6090         * config/riscv/riscv.cc (riscv_legitimate_address_p): Disallow RVV modes base address.
6092 2023-11-15  David Malcolm  <dmalcolm@redhat.com>
6094         * json.cc (selftest::assert_print_eq): Add "loc" param and use
6095         ASSERT_STREQ_AT.
6096         (ASSERT_PRINT_EQ): New macro.
6097         (selftest::test_writing_objects): Use ASSERT_PRINT_EQ to capture
6098         source location of assertion.
6099         (selftest::test_writing_arrays): Likewise.
6100         (selftest::test_writing_float_numbers): Likewise.
6101         (selftest::test_writing_integer_numbers): Likewise.
6102         (selftest::test_writing_strings): Likewise.
6103         (selftest::test_writing_literals): Likewise.
6105 2023-11-14  David Malcolm  <dmalcolm@redhat.com>
6107         PR analyzer/103533
6108         * doc/invoke.texi (Static Analyzer Options): Add the six
6109         -Wanalyzer-tainted-* warnings.  Update documentation of each
6110         warning to reflect removed requirement to use
6111         -fanalyzer-checker=taint.  Remove discussion of
6112         -fanalyzer-checker=taint.
6114 2023-11-14  David Malcolm  <dmalcolm@redhat.com>
6116         * diagnostic-format-json.cc
6117         (json_output_format::on_end_diagnostic): Update calls to m_context
6118         callbacks to use member functions; tighten up scopes.
6119         * diagnostic-format-sarif.cc (sarif_builder::make_result_object):
6120         Likewise.
6121         (sarif_builder::make_reporting_descriptor_object_for_warning):
6122         Likewise.
6123         * diagnostic.cc (diagnostic_context::initialize): Update for
6124         callbacks being moved into m_option_callbacks and being renamed.
6125         (diagnostic_context::set_option_hooks): New.
6126         (diagnostic_option_classifier::classify_diagnostic): Update call
6127         to global_dc->m_option_enabled to use option_enabled_p.
6128         (diagnostic_context::print_option_information): Update calls to
6129         m_context callbacks to use member functions; tighten up scopes.
6130         (diagnostic_context::diagnostic_enabled): Likewise.
6131         * diagnostic.h (diagnostic_option_enabled_cb): New typedef.
6132         (diagnostic_make_option_name_cb): New typedef.
6133         (diagnostic_make_option_url_cb): New typedef.
6134         (diagnostic_context::option_enabled_p): New.
6135         (diagnostic_context::make_option_name): New.
6136         (diagnostic_context::make_option_url): New.
6137         (diagnostic_context::set_option_hooks): New decl.
6138         (diagnostic_context::m_option_enabled): Rename to
6139         m_option_enabled_cb and move within m_option_callbacks, using
6140         typedef.
6141         (diagnostic_context::m_option_state): Move within
6142         m_option_callbacks.
6143         (diagnostic_context::m_option_name): Rename to
6144         m_make_option_name_cb and move within m_option_callbacks, using
6145         typedef.
6146         (diagnostic_context::m_get_option_url): Likewise, renaming to
6147         m_make_option_url_cb.
6148         * lto-wrapper.cc (print_lto_docs_link): Update call to m_context
6149         callback to use member function.
6150         (main): Use diagnostic_context::set_option_hooks.
6151         * opts-diagnostic.h (option_name): Make context param const.
6152         (get_option_url): Likewise.
6153         * opts.cc (option_name): Likewise.
6154         (get_option_url): Likewise.
6155         * toplev.cc (general_init): Use
6156         diagnostic_context::set_option_hooks.
6158 2023-11-14  David Malcolm  <dmalcolm@redhat.com>
6160         * selftest-diagnostic.cc
6161         (test_diagnostic_context::test_diagnostic_context): Use
6162         diagnostic_start_span.
6163         * tree-diagnostic-path.cc (struct event_range): Likewise.
6165 2023-11-14  David Malcolm  <dmalcolm@redhat.com>
6167         * diagnostic-show-locus.cc (diagnostic_context::show_locus):
6168         Update for renaming of text callbacks fields.
6169         * diagnostic.cc (diagnostic_context::initialize): Likewise.
6170         * diagnostic.h (class diagnostic_context): Add "friend" for
6171         accessors to m_text_callbacks.
6172         (diagnostic_context::m_text_callbacks): Make private, and add an
6173         "m_" prefix to field names.
6174         (diagnostic_starter): Convert from macro to inline function.
6175         (diagnostic_start_span): New.
6176         (diagnostic_finalizer): Convert from macro to inline function.
6178 2023-11-14  David Malcolm  <dmalcolm@redhat.com>
6180         * diagnostic.h (diagnostic_ready_p): Convert from macro to inline
6181         function.
6183 2023-11-14  Uros Bizjak  <ubizjak@gmail.com>
6185         PR target/78904
6186         * config/i386/i386.md (*addqi_ext<mode>_1_slp):
6187         New define_insn_and_split pattern.
6188         (*subqi_ext<mode>_1_slp): Ditto.
6189         (*<any_logic:code>qi_ext<mode>_1_slp): Ditto.
6191 2023-11-14  Andrew Stubbs  <ams@codesourcery.com>
6193         PR target/112481
6194         * expr.cc (store_constructor): Use OPTAB_WIDEN for mask adjustment.
6196 2023-11-14  David Malcolm  <dmalcolm@redhat.com>
6198         * diagnostic-format-sarif.cc (sarif_builder::get_sarif_column):
6199         Use m_context's file_cache.
6200         (sarif_builder::maybe_make_artifact_content_object): Likewise.
6201         (sarif_builder::get_source_lines): Likewise.
6202         * diagnostic-show-locus.cc
6203         (exploc_with_display_col::exploc_with_display_col): Add file_cache
6204         param.
6205         (layout::m_file_cache): New field.
6206         (make_range): Add file_cache param.
6207         (selftest::test_layout_range_for_single_point): Create and use a
6208         temporary file_cache.
6209         (selftest::test_layout_range_for_single_line): Likewise.
6210         (selftest::test_layout_range_for_multiple_lines): Likewise.
6211         (layout::layout): Initialize m_file_cache from the context and use it.
6212         (layout::maybe_add_location_range): Use m_file_cache.
6213         (layout::calculate_x_offset_display): Likewise.
6214         (get_affected_range): Add file_cache param.
6215         (get_printed_columns): Likewise.
6216         (line_corrections::line_corrections): Likewwise.
6217         (line_corrections::m_file_cache): New field.
6218         (source_line::source_line): Add file_cache param.
6219         (line_corrections::add_hint): Use m_file_cache.
6220         (layout::print_trailing_fixits): Likewise.
6221         (layout::print_line): Likewise.
6222         (selftest::test_layout_x_offset_display_utf8): Create and use a
6223         temporary file_cache.
6224         (selftest::test_layout_x_offset_display_tab): Likewise.
6225         (selftest::test_diagnostic_show_locus_one_liner_utf8): Likewise.
6226         (selftest::test_add_location_if_nearby): Pass global_dc's
6227         file_cache to temp_source_file ctor.
6228         (selftest::test_overlapped_fixit_printing): Create and use a
6229         temporary file_cache.
6230         (selftest::test_overlapped_fixit_printing_utf8): Likewise.
6231         (selftest::test_overlapped_fixit_printing_2): Use dc's file_cache.
6232         * diagnostic.cc (diagnostic_context::initialize): Always create a
6233         file_cache.
6234         (diagnostic_context::initialize_input_context): Assume
6235         m_file_cache has already been created.
6236         (diagnostic_context::create_edit_context): Pass m_file_cache to
6237         edit_context.
6238         (convert_column_unit): Add file_cache param.
6239         (diagnostic_context::converted_column): Use context's file_cache.
6240         (print_parseable_fixits): Add file_cache param.
6241         (diagnostic_context::report_diagnostic): Use context's file_cache.
6242         (selftest::test_print_parseable_fixits_none): Create and use a
6243         temporary file_cache.
6244         (selftest::test_print_parseable_fixits_insert): Likewise.
6245         (selftest::test_print_parseable_fixits_remove): Likewise.
6246         (selftest::test_print_parseable_fixits_replace): Likewise.
6247         (selftest::test_print_parseable_fixits_bytes_vs_display_columns):
6248         Likewise.
6249         * diagnostic.h (diagnostic_context::file_cache_init): Delete.
6250         (diagnostic_context::get_file_cache): Convert return type from
6251         pointer to reference.
6252         * edit-context.cc (edited_file::get_file_cache): New.
6253         (edited_file::m_edit_context): New.
6254         (edit_context::edit_context): Add file_cache param.
6255         (edit_context::get_or_insert_file): Pass this to edited_file's
6256         ctor.
6257         (edited_file::edited_file): Add edit_context param.
6258         (edited_file::print_content): Use get_file_cache.
6259         (edited_file::print_diff_hunk): Likewise.
6260         (edited_file::print_run_of_changed_lines): Likewise.
6261         (edited_file::get_or_insert_line): Likewise.
6262         (edited_file::get_num_lines): Likewise.
6263         (edited_line::edited_line): Pass in file_cache and use it.
6264         (selftest::test_get_content): Create and use a
6265         temporary file_cache.
6266         (selftest::test_applying_fixits_insert_before): Likewise.
6267         (selftest::test_applying_fixits_insert_after): Likewise.
6268         (selftest::test_applying_fixits_insert_after_at_line_end):
6269         Likewise.
6270         (selftest::test_applying_fixits_insert_after_failure): Likewise.
6271         (selftest::test_applying_fixits_insert_containing_newline):
6272         Likewise.
6273         (selftest::test_applying_fixits_growing_replace): Likewise.
6274         (selftest::test_applying_fixits_shrinking_replace): Likewise.
6275         (selftest::test_applying_fixits_replace_containing_newline):
6276         Likewise.
6277         (selftest::test_applying_fixits_remove): Likewise.
6278         (selftest::test_applying_fixits_multiple): Likewise.
6279         (selftest::test_applying_fixits_multiple_lines): Likewise.
6280         (selftest::test_applying_fixits_modernize_named_init): Likewise.
6281         (selftest::test_applying_fixits_modernize_named_init): Likewise.
6282         (selftest::test_applying_fixits_unreadable_file): Likewise.
6283         (selftest::test_applying_fixits_line_out_of_range): Likewise.
6284         (selftest::test_applying_fixits_column_validation): Likewise.
6285         (selftest::test_applying_fixits_column_validation): Likewise.
6286         (selftest::test_applying_fixits_column_validation): Likewise.
6287         (selftest::test_applying_fixits_column_validation): Likewise.
6288         * edit-context.h (edit_context::edit_context): Add file_cache
6289         param.
6290         (edit_context::get_file_cache): New.
6291         (edit_context::m_file_cache): New.
6292         * final.cc: Include "diagnostic.h".
6293         (asm_show_source): Use global_dc's file_cache.
6294         * gcc-rich-location.cc (blank_line_before_p): Add file_cache
6295         param.
6296         (use_new_line): Likewise.
6297         (gcc_rich_location::add_fixit_insert_formatted): Use global dc's
6298         file_cache.
6299         * input.cc (diagnostic_file_cache_init): Delete.
6300         (diagnostic_context::file_cache_init): Delete.
6301         (diagnostics_file_cache_forcibly_evict_file): Delete.
6302         (file_cache::missing_trailing_newline_p): New.
6303         (file_cache::evicted_cache_tab_entry): Don't call
6304         diagnostic_file_cache_init.
6305         (location_get_source_line): Delete.
6306         (get_source_text_between): Add file_cache param.
6307         (get_source_file_content): Delete.
6308         (location_missing_trailing_newline): Delete.
6309         (location_compute_display_column): Add file_cache param.
6310         (dump_location_info): Create and use temporary file_cache.
6311         (get_substring_ranges_for_loc): Add file_cache param.
6312         (get_location_within_string): Likewise.
6313         (get_source_range_for_char): Likewise.
6314         (get_num_source_ranges_for_substring): Likewise.
6315         (selftest::test_reading_source_line): Create and use temporary
6316         file_cache.
6317         (selftest::lexer_test::m_file_cache): New field.
6318         (selftest::assert_char_at_range): Use test.m_file_cache.
6319         (selftest::assert_num_substring_ranges): Likewise.
6320         (selftest::assert_has_no_substring_ranges): Likewise.
6321         (selftest::test_lexer_string_locations_concatenation_2): Likewise.
6322         * input.h (class file_cache): New forward decl.
6323         (location_compute_display_column): Add file_cache param.
6324         (location_get_source_line): Delete.
6325         (get_source_text_between): Add file_cache param.
6326         (get_source_file_content): Delete.
6327         (location_missing_trailing_newline): Delete.
6328         (file_cache::missing_trailing_newline_p): New decl.
6329         (diagnostics_file_cache_forcibly_evict_file): Delete.
6330         * selftest.cc (named_temp_file::named_temp_file): Add file_cache
6331         param.
6332         (named_temp_file::~named_temp_file): Optionally evict the file
6333         from the given file_cache.
6334         (temp_source_file::temp_source_file): Add file_cache param.
6335         * selftest.h (class file_cache): New forward decl.
6336         (named_temp_file::named_temp_file): Add file_cache param.
6337         (named_temp_file::m_file_cache): New field.
6338         (temp_source_file::temp_source_file): Add file_cache param.
6339         * substring-locations.h (get_location_within_string): Add
6340         file_cache param.
6342 2023-11-14  David Malcolm  <dmalcolm@redhat.com>
6344         * diagnostic-format-json.cc: Use type-specific "set_*" functions
6345         of json::object to avoid naked new of json value subclasses.
6346         * diagnostic-format-sarif.cc: Likewise.
6347         * gcov.cc: Likewise.
6348         * json.cc (object::set_string): New.
6349         (object::set_integer): New.
6350         (object::set_float): New.
6351         (object::set_bool): New.
6352         (selftest::test_writing_objects): Use object::set_string.
6353         * json.h (object::set_string): New decl.
6354         (object::set_integer): New decl.
6355         (object::set_float): New decl.
6356         (object::set_bool): New decl.
6357         * optinfo-emit-json.cc: Use type-specific "set_*" functions of
6358         json::object to avoid naked new of json value subclasses.
6359         * timevar.cc: Likewise.
6360         * tree-diagnostic-path.cc: Likewise.
6362 2023-11-14  Andrew MacLeod  <amacleod@redhat.com>
6364         PR tree-optimization/112509
6365         * tree-vrp.cc (find_case_label_range): Create range from case labels.
6367 2023-11-14  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
6369         * config/s390/s390-builtin-types.def: Add/remove types.
6370         * config/s390/s390-builtins.def (s390_vec_scatter_element_flt):
6371         The type for the offset should be UV4SI instead of V4SF.
6373 2023-11-14  Saurabh Jha  <saurabh.jha@arm.com>
6375         PR target/112337
6376         * config/arm/arm.cc (mve_vector_mem_operand): Add a REG_P check for INC
6377         and DEC operations.
6379 2023-11-14  Richard Biener  <rguenther@suse.de>
6381         PR tree-optimization/111233
6382         PR tree-optimization/111652
6383         PR tree-optimization/111727
6384         PR tree-optimization/111838
6385         PR tree-optimization/112113
6386         * tree-ssa-loop-split.cc (patch_loop_exit): Get the new
6387         guard code instead of the old guard stmt.
6388         (split_loop): Adjust.
6390 2023-11-14  Richard Biener  <rguenther@suse.de>
6392         * tree-loop-distribution.cc (loop_distribution::data_dep_in_cycle_p):
6393         Consider all loops in the nest when looking for
6394         lambda_vector_zerop.
6396 2023-11-14  Richard Biener  <rguenther@suse.de>
6398         PR tree-optimization/112281
6399         * tree-loop-distribution.cc (pg_add_dependence_edges):
6400         Preserve stmt order when the innermost loop has exact
6401         overlap.
6403 2023-11-14  Jakub Jelinek  <jakub@redhat.com>
6405         PR target/112523
6406         PR ada/112514
6407         * config/i386/i386.md (<insn><dwi>3_doubleword_lowpart): Move
6408         operands[1] aka low part of input rather than operands[3] aka high
6409         part of input to output if not the same register.
6411 2023-11-14  Andreas Krebbel  <krebbel@linux.ibm.com>
6413         * config.gcc: Add s390-gen-builtins.h to target_gtfiles.
6414         * config/s390/s390-builtins.h (s390_builtin_types)
6415         (s390_builtin_fn_types, s390_builtin_decls): Add GTY marker.
6416         * config/s390/t-s390 (EXTRA_GTYPE_DEPS): Add s390-gen-builtins.h.
6417         Add build rule for s390-gen-builtins.h.
6419 2023-11-14  Andreas Krebbel  <krebbel@linux.ibm.com>
6421         * config/s390/s390-c.cc (s390_fn_types_compatible): Add a check
6422         for error_mark_node.
6424 2023-11-14  Jakub Jelinek  <jakub@redhat.com>
6426         PR c/111309
6427         * builtins.def (BUILT_IN_CLZG, BUILT_IN_CTZG, BUILT_IN_CLRSBG,
6428         BUILT_IN_FFSG, BUILT_IN_PARITYG, BUILT_IN_POPCOUNTG): New
6429         builtins.
6430         * builtins.cc (fold_builtin_bit_query): New function.
6431         (fold_builtin_1): Use it for
6432         BUILT_IN_{CLZ,CTZ,CLRSB,FFS,PARITY,POPCOUNT}G.
6433         (fold_builtin_2): Use it for BUILT_IN_{CLZ,CTZ}G.
6434         * fold-const-call.cc: Fix comment typo on tm.h inclusion.
6435         (fold_const_call_ss): Handle
6436         CFN_BUILT_IN_{CLZ,CTZ,CLRSB,FFS,PARITY,POPCOUNT}G.
6437         (fold_const_call_sss): New function.
6438         (fold_const_call_1): Call it for 2 argument functions returning
6439         scalar when passed 2 INTEGER_CSTs.
6440         * genmatch.cc (cmp_operand): For function calls also compare
6441         number of arguments.
6442         (fns_cmp): New function.
6443         (dt_node::gen_kids): Sort fns and generic_fns.
6444         (dt_node::gen_kids_1): Handle fns with the same id but different
6445         number of arguments.
6446         * match.pd (CLZ simplifications): Drop checks for defined behavior
6447         at zero.  Add variant of simplifications for IFN_CLZ with 2 arguments.
6448         (CTZ simplifications): Drop checks for defined behavior at zero,
6449         don't optimize precisions above MAX_FIXED_MODE_SIZE.  Add variant of
6450         simplifications for IFN_CTZ with 2 arguments.
6451         (a != 0 ? CLZ(a) : CST -> .CLZ(a)): Use TREE_TYPE (@3) instead of
6452         type, add BITINT_TYPE handling, create 2 argument IFN_CLZ rather than
6453         one argument.  Add variant for matching CLZ with 2 arguments.
6454         (a != 0 ? CTZ(a) : CST -> .CTZ(a)): Similarly.
6455         * gimple-lower-bitint.cc (bitint_large_huge::lower_bit_query): New
6456         method.
6457         (bitint_large_huge::lower_call): Use it for IFN_{CLZ,CTZ,CLRSB,FFS}
6458         and IFN_{PARITY,POPCOUNT} calls.
6459         * gimple-range-op.cc (cfn_clz::fold_range): Don't check
6460         CLZ_DEFINED_VALUE_AT_ZERO for m_gimple_call_internal_p, instead
6461         assume defined value at zero if the call has 2 arguments and use
6462         second argument value for that case.
6463         (cfn_ctz::fold_range): Similarly.
6464         (gimple_range_op_handler::maybe_builtin_call): Use op_cfn_clz_internal
6465         or op_cfn_ctz_internal only if internal fn call has 2 arguments and
6466         set m_op2 in that case.
6467         * tree-vect-patterns.cc (vect_recog_ctz_ffs_pattern,
6468         vect_recog_popcount_clz_ctz_ffs_pattern): For value defined at zero
6469         use second argument of calls if present, otherwise assume UB at zero,
6470         create 2 argument .CLZ/.CTZ calls if needed.
6471         * tree-vect-stmts.cc (vectorizable_call): Handle 2 argument .CLZ/.CTZ
6472         calls.
6473         * tree-ssa-loop-niter.cc (build_cltz_expr): Create 2 argument
6474         .CLZ/.CTZ calls if needed.
6475         * tree-ssa-forwprop.cc (simplify_count_trailing_zeroes): Create 2
6476         argument .CTZ calls if needed.
6477         * tree-ssa-phiopt.cc (cond_removal_in_builtin_zero_pattern): Handle
6478         2 argument .CLZ/.CTZ calls, handle BITINT_TYPE, create 2 argument
6479         .CLZ/.CTZ calls.
6480         * doc/extend.texi (__builtin_clzg, __builtin_ctzg, __builtin_clrsbg,
6481         __builtin_ffsg, __builtin_parityg, __builtin_popcountg): Document.
6483 2023-11-14  Xi Ruoyao  <xry111@xry111.site>
6485         PR target/112330
6486         * config/loongarch/genopts/loongarch.opt.in: Add
6487         -m[no]-pass-relax-to-as.  Change the default of -m[no]-relax to
6488         account conditional branch relaxation support status.
6489         * config/loongarch/loongarch.opt: Regenerate.
6490         * configure.ac (gcc_cv_as_loongarch_cond_branch_relax): Check if
6491         the assembler supports conditional branch relaxation.
6492         * configure: Regenerate.
6493         * config.in: Regenerate.  Note that there are some unrelated
6494         changes introduced by r14-5424 (which does not contain a
6495         config.in regeneration).
6496         * config/loongarch/loongarch-opts.h
6497         (HAVE_AS_COND_BRANCH_RELAXATION): Define to 0 if not defined.
6498         * config/loongarch/loongarch-driver.h (ASM_MRELAX_DEFAULT):
6499         Define.
6500         (ASM_MRELAX_SPEC): Define.
6501         (ASM_SPEC): Use ASM_MRELAX_SPEC instead of "%{mno-relax}".
6502         * config/loongarch/loongarch.cc: Take the setting of
6503         -m[no-]relax into account when determining the default of
6504         -mexplicit-relocs=.
6505         * doc/invoke.texi: Document -m[no-]relax and
6506         -m[no-]pass-mrelax-to-as for LoongArch.  Update the default
6507         value of -mexplicit-relocs=.
6509 2023-11-14  liuhongt  <hongtao.liu@intel.com>
6511         PR tree-optimization/112496
6512         * tree-vect-loop.cc (vectorizable_nonlinear_induction): Return
6513         false when !tree_nop_conversion_p (TREE_TYPE (vectype),
6514         TREE_TYPE (init_expr)).
6516 2023-11-14  Xi Ruoyao  <xry111@xry111.site>
6518         * config/loongarch/sync.md (mem_thread_fence): Remove redundant
6519         check.
6520         (mem_thread_fence_1): Emit finer-grained DBAR hints for
6521         different memory models, instead of 0.
6523 2023-11-14  Jakub Jelinek  <jakub@redhat.com>
6525         PR middle-end/112511
6526         * tree.cc (type_contains_placeholder_1): Handle BITINT_TYPE like
6527         INTEGER_TYPE.
6529 2023-11-14  Jakub Jelinek  <jakub@redhat.com>
6530             Hu, Lin1  <lin1.hu@intel.com>
6532         PR target/112435
6533         * config/i386/sse.md (avx512vl_shuf_<shuffletype>32x4_1<mask_name>,
6534         <mask_codefor>avx512dq_shuf_<shuffletype>64x2_1<mask_name>): Add
6535         alternative with just x instead of v constraints and xjm instead of
6536         vm and use vblendps as optimization only with that alternative.
6538 2023-11-14  liuhongt  <hongtao.liu@intel.com>
6540         PR tree-optimization/105735
6541         PR tree-optimization/111972
6542         * tree-scalar-evolution.cc
6543         (analyze_and_compute_bitop_with_inv_effect): Handle bitop with
6544         INTEGER_CST.
6546 2023-11-13  Arsen Arsenović  <arsen@aarsen.me>
6548         * configure: Regenerate.
6549         * aclocal.m4: Regenerate.
6550         * Makefile.in (LIBDEPS): Remove (potential) ./ prefix from
6551         LIBINTL_DEP.
6552         * doc/install.texi: Document new (notable) flags added by the
6553         optional gettext tree and by AM_GNU_GETTEXT.  Document libintl/libc
6554         with gettext dependency.
6556 2023-11-13  Uros Bizjak  <ubizjak@gmail.com>
6558         * config/i386/i386-expand.h (gen_pushfl): New prototype.
6559         (gen_popfl): Ditto.
6560         * config/i386/i386-expand.cc (ix86_expand_builtin)
6561         [case IX86_BUILTIN_READ_FLAGS]: Use gen_pushfl.
6562         [case IX86_BUILTIN_WRITE_FLAGS]: Use gen_popfl.
6563         * config/i386/i386.cc (gen_pushfl): New function.
6564         (gen_popfl): Ditto.
6565         * config/i386/i386.md (unspec): Add UNSPEC_PUSHFL and UNSPEC_POPFL.
6566         (@pushfl<mode>2): Rename from *pushfl<mode>2.
6567         Rewrite as unspec using UNSPEC_PUSHFL.
6568         (@popfl<mode>1): Rename from *popfl<mode>1.
6569         Rewrite as unspec using UNSPEC_POPFL.
6571 2023-11-13  Uros Bizjak  <ubizjak@gmail.com>
6573         PR target/112494
6574         * config/i386/i386.cc (ix86_cc_mode) [default]: Return CCmode.
6576 2023-11-13  Robin Dapp  <rdapp@ventanamicro.com>
6578         * config/riscv/riscv-vsetvl.cc (source_equal_p): Use pointer
6579         equality for REG_EQUAL.
6581 2023-11-13  Richard Biener  <rguenther@suse.de>
6583         PR tree-optimization/112495
6584         * tree-data-ref.cc (runtime_alias_check_p): Reject checks
6585         between different address spaces.
6587 2023-11-13  Richard Biener  <rguenther@suse.de>
6589         PR middle-end/112487
6590         * tree-inline.cc (setup_one_parameter): When the parameter
6591         is unused only insert a debug bind when there's not a gross
6592         mismatch in value and declared parameter type.  Do not assert
6593         there effectively isn't.
6595 2023-11-13  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6597         * config/riscv/riscv-v.cc
6598         (rvv_builder::combine_sequence_use_merge_profitable_p): New function.
6599         (expand_vector_init_merge_combine_sequence): Ditto.
6600         (expand_vec_init): Adapt for new optimization.
6602 2023-11-13  liuhongt  <hongtao.liu@intel.com>
6604         * config/i386/i386-expand.cc
6605         (ix86_expand_vector_init_duplicate): Handle V4HF/V4BF and
6606         V2HF/V2BF.
6607         (ix86_expand_vector_init_one_nonzero): Ditto.
6608         (ix86_expand_vector_init_one_var): Ditto.
6609         (ix86_expand_vector_init_general): Ditto.
6610         (ix86_expand_vector_set_var): Ditto.
6611         (ix86_expand_vector_set): Ditto.
6612         (ix86_expand_vector_extract): Ditto.
6613         * config/i386/mmx.md
6614         (mmxdoublevecmode): Extend to V4HF/V4BF/V2HF/V2BF.
6615         (*mmx_pinsrw): Extend to V4FI_64, add a new alternative (&x,
6616         x, x), add a new define_split after the pattern.
6617         (*mmx_pextrw<mode>): New define_insn.
6618         (mmx_pshufw_1): Rename to ..
6619         (mmx_pshufw<mode>_1): .. this, extend to V4FI_64.
6620         (*mmx_pblendw64): Extend to V4FI_64.
6621         (*vec_dup<mode>): New define_insn.
6622         (vec_setv4hi): Rename to ..
6623         (vec_set<mode>): .. this, and extend to V4FI_64
6624         (vec_extractv4hihi): Rename to ..
6625         (vec_extract<mode><mmxscalarmodelower>): .. this, and extend
6626         to V4FI_64.
6627         (vec_init<mode><mmxscalarmodelower>): New define_insn.
6628         (*pinsrw): Extend to V2FI_32, add a new alternative (&x,
6629         x, x), and add a new define_split after it.
6630         (*pextrw<mode>): New define_insn.
6631         (vec_setv2hi): Rename to ..
6632         (vec_set<mode>): .. this, extend to V2FI_32.
6633         (vec_extractv2hihi): Rename to ..
6634         (vec_extract<mode><mmxscalarmodelower>): .. this, extend to
6635         V2FI_32.
6636         (*punpckwd): Extend to V2FI_32.
6637         (*pshufw_1): Rename to ..
6638         (*pshufw<mode>_1): .. this, extend to V2FI_32.
6639         (vec_initv2hihi): Rename to ..
6640         (vec_init<mode><mmxscalarmodelower>): .. this, and extend to
6641         V2FI_32.
6642         (*vec_dup<mode>): New define_insn.
6643         * config/i386/sse.md (*vec_extract<mode>): Refine constraint
6644         from v to Yw.
6646 2023-11-13  Roger Sayle  <roger@nextmovesoftware.com>
6648         * config/arc/arc.md (UNSPEC_ARC_CC_NEZ): New UNSPEC that
6649         represents the carry flag being set if the operand is non-zero.
6650         (adc_f): New define_insn representing adc with updated flags.
6651         (ashrdi3): New define_expand that only handles shifts by 1.
6652         (ashrdi3_cnt1): New pre-reload define_insn_and_split.
6653         (lshrdi3): New define_expand that only handles shifts by 1.
6654         (lshrdi3_cnt1): New pre-reload define_insn_and_split.
6655         (rrcsi2): New define_insn for rrc (SImode rotate right through carry).
6656         (rrcsi2_carry): Likewise for rrc.f, as above but updating flags.
6657         (rotldi3): New define_expand that only handles rotates by 1.
6658         (rotldi3_cnt1): New pre-reload define_insn_and_split.
6659         (rotrdi3): New define_expand that only handles rotates by 1.
6660         (rotrdi3_cnt1): New pre-reload define_insn_and_split.
6661         (lshrsi3_cnt1_carry): New define_insn for lsr.f.
6662         (ashrsi3_cnt1_carry): New define_insn for asr.f.
6663         (btst_0_carry): New define_insn for asr.f without result.
6665 2023-11-13  Roger Sayle  <roger@nextmovesoftware.com>
6667         * config/arc/arc.cc (TARGET_FOLD_BUILTIN): Define to
6668         arc_fold_builtin.
6669         (arc_fold_builtin): New function.  Convert ARC_BUILTIN_SWAP
6670         into a rotate.  Evaluate ARC_BUILTIN_NORM and
6671         ARC_BUILTIN_NORMW of constant arguments.
6672         * config/arc/arc.md (UNSPEC_ARC_SWAP): Delete.
6673         (normw): Make output template/assembler whitespace consistent.
6674         (swap): Remove define_insn, only use of SWAP UNSPEC.
6675         * config/arc/builtins.def: Tweak indentation.
6676         (SWAP): Expand using rotlsi2_cnt16 instead of using swap.
6678 2023-11-13  Roger Sayle  <roger@nextmovesoftware.com>
6680         * config/i386/i386.md (<insn><dwi>3_doubleword_lowpart): New
6681         define_insn_and_split to optimize register usage of doubleword
6682         right shifts followed by truncation.
6684 2023-11-13  Jakub Jelinek  <jakub@redhat.com>
6686         * config/i386/constraints.md: Remove j constraint letter from list of
6687         unused letters.
6689 2023-11-13  Xi Ruoyao  <xry111@xry111.site>
6691         PR rtl-optimization/112483
6692         * simplify-rtx.cc (simplify_binary_operation_1) <case COPYSIGN>:
6693         Fix the simplification of (fcopysign x, NEGATIVE_CONST).
6695 2023-11-13  Jakub Jelinek  <jakub@redhat.com>
6697         PR tree-optimization/111967
6698         * gimple-range-cache.cc (block_range_cache::set_bb_range): Grow
6699         m_ssa_ranges to num_ssa_names rather than num_ssa_names + 1.
6700         (block_range_cache::dump): Iterate from 1 rather than 0.  Don't use
6701         ssa_name (x) unless m_ssa_ranges[x] is non-NULL.  Iterate to
6702         m_ssa_ranges.length () rather than num_ssa_names.
6704 2023-11-13  Xi Ruoyao  <xry111@xry111.site>
6706         * config/loongarch/loongarch.md (LD_AT_LEAST_32_BIT): New mode
6707         iterator.
6708         (ST_ANY): New mode iterator.
6709         (define_peephole2): Use LD_AT_LEAST_32_BIT instead of GPR and
6710         ST_ANY instead of QHWD for applicable patterns.
6712 2023-11-13  Xi Ruoyao  <xry111@xry111.site>
6714         PR target/112476
6715         * config/loongarch/loongarch.cc
6716         (loongarch_expand_vec_cond_mask_expr): Call simplify_gen_subreg
6717         instead of gen_rtx_SUBREG.
6719 2023-11-13  Pan Li  <pan2.li@intel.com>
6721         * config/riscv/autovec.md: Add bridge mode to lrint and lround
6722         pattern.
6723         * config/riscv/riscv-protos.h (expand_vec_lrint): Add new arg
6724         bridge machine mode.
6725         (expand_vec_lround): Ditto.
6726         * config/riscv/riscv-v.cc (emit_vec_widden_cvt_f_f): New helper
6727         func impl to emit vfwcvt.f.f.
6728         (emit_vec_rounding_to_integer): Handle the HF to DI rounding
6729         with the bridge mode.
6730         (expand_vec_lrint): Reorder the args.
6731         (expand_vec_lround): Ditto.
6732         (expand_vec_lceil): Ditto.
6733         (expand_vec_lfloor): Ditto.
6734         * config/riscv/vector-iterators.md: Add vector HFmode and bridge
6735         mode for converting to DI.
6737 2023-11-12  Jeff Law  <jlaw@ventanamicro.com>
6739         Revert:
6740         2023-11-11  Jin Ma  <jinma@linux.alibaba.com>
6742         * haifa-sched.cc (use_or_clobber_starts_range_p): New.
6743         (prune_ready_list): USE or CLOBBER should delay execution
6744         if it starts a new live range.
6746 2023-11-12  Uros Bizjak  <ubizjak@gmail.com>
6748         * config/i386/i386.md (*stack_protect_set_4s_<mode>_di):
6749         Remove alternative 0.
6751 2023-11-11  Eric Botcazou  <ebotcazou@adacore.com>
6753         * ipa-cp.cc (print_ipcp_constant_value): Move to...
6754         (values_equal_for_ipcp_p): Deal with VAR_DECLs from the
6755         constant pool.
6756         * ipa-prop.cc (ipa_print_constant_value): ...here.  Likewise.
6757         (ipa_print_node_jump_functions_for_edge): Call the function
6758         ipa_print_constant_value to print IPA_JF_CONST elements.
6760 2023-11-11  Jin Ma  <jinma@linux.alibaba.com>
6762         * haifa-sched.cc (use_or_clobber_starts_range_p): New.
6763         (prune_ready_list): USE or CLOBBER should delay execution
6764         if it starts a new live range.
6766 2023-11-11  Jakub Jelinek  <jakub@redhat.com>
6768         PR middle-end/112430
6769         * tree-ssa-math-opts.cc (match_uaddc_usubc): Remove temp_stmts in the
6770         order they were pushed rather than in reverse order.  Call
6771         release_defs after gsi_remove.
6773 2023-11-11  Richard Sandiford  <richard.sandiford@arm.com>
6775         * target.def (mode_switching.backprop): New hook.
6776         * doc/tm.texi.in (TARGET_MODE_BACKPROP): New @hook.
6777         * doc/tm.texi: Regenerate.
6778         * mode-switching.cc (struct bb_info): Add single_succ.
6779         (confluence_info): Add transp field.
6780         (single_succ_confluence_n, single_succ_transfer): New functions.
6781         (backprop_confluence_n, backprop_transfer): Likewise.
6782         (optimize_mode_switching): Use them.  Push mode transitions onto
6783         a block's incoming edges, if the backprop hook requires it.
6785 2023-11-11  Richard Sandiford  <richard.sandiford@arm.com>
6787         * target.def (mode_switching.confluence): New hook.
6788         * doc/tm.texi (TARGET_MODE_CONFLUENCE): New @hook.
6789         * doc/tm.texi.in: Regenerate.
6790         * mode-switching.cc (confluence_info): New variable.
6791         (mode_confluence, forward_confluence_n, forward_transfer): New
6792         functions.
6793         (optimize_mode_switching): Use them to calculate mode_in when
6794         TARGET_MODE_CONFLUENCE is defined.
6796 2023-11-11  Richard Sandiford  <richard.sandiford@arm.com>
6798         * mode-switching.cc (commit_mode_sets): Use 1-based edge aux values.
6800 2023-11-11  Richard Sandiford  <richard.sandiford@arm.com>
6802         * target.def (mode_switching.after): Add a regs_live parameter.
6803         * doc/tm.texi: Regenerate.
6804         * config/epiphany/epiphany-protos.h (epiphany_mode_after): Update
6805         accordingly.
6806         * config/epiphany/epiphany.cc (epiphany_mode_needed): Likewise.
6807         (epiphany_mode_after): Likewise.
6808         * config/i386/i386.cc (ix86_mode_after): Likewise.
6809         * config/riscv/riscv.cc (riscv_mode_after): Likewise.
6810         * config/sh/sh.cc (sh_mode_after): Likewise.
6811         * mode-switching.cc (optimize_mode_switching): Likewise.
6813 2023-11-11  Richard Sandiford  <richard.sandiford@arm.com>
6815         * target.def (mode_switching.needed): Add a regs_live parameter.
6816         * doc/tm.texi: Regenerate.
6817         * config/epiphany/epiphany-protos.h (epiphany_mode_needed): Update
6818         accordingly.
6819         * config/epiphany/epiphany.cc (epiphany_mode_needed): Likewise.
6820         * config/epiphany/mode-switch-use.cc (insert_uses): Likewise.
6821         * config/i386/i386.cc (ix86_mode_needed): Likewise.
6822         * config/riscv/riscv.cc (riscv_mode_needed): Likewise.
6823         * config/sh/sh.cc (sh_mode_needed): Likewise.
6824         * mode-switching.cc (optimize_mode_switching): Likewise.
6825         (create_pre_exit): Likewise, using the DF simulate functions
6826         to calculate the required information.
6828 2023-11-11  Richard Sandiford  <richard.sandiford@arm.com>
6830         * target.def (mode_switching.eh_handler): New hook.
6831         * doc/tm.texi.in (TARGET_MODE_EH_HANDLER): New @hook.
6832         * doc/tm.texi: Regenerate.
6833         * mode-switching.cc (optimize_mode_switching): Use eh_handler
6834         to get the mode on entry to an exception handler.
6836 2023-11-11  Richard Sandiford  <richard.sandiford@arm.com>
6838         * mode-switching.cc (optimize_mode_switching): Mark the exit
6839         block as nontransparent if it requires a specific mode.
6840         Handle the entry and exit mode as sibling rather than nested
6841         concepts.  Remove outdated comment.
6843 2023-11-11  Richard Sandiford  <richard.sandiford@arm.com>
6845         * mode-switching.cc (optimize_mode_switching): Initially
6846         compute transparency in a bit-per-block bitmap.
6848 2023-11-11  Richard Sandiford  <richard.sandiford@arm.com>
6850         * mode-switching.cc (seginfo): Add a prev_mode field.
6851         (new_seginfo): Take and initialize the prev_mode.
6852         (optimize_mode_switching): Update calls accordingly.
6853         Use the recorded modes during the emit phase, rather than
6854         computing one on the fly.
6856 2023-11-11  Richard Sandiford  <richard.sandiford@arm.com>
6858         * mode-switching.cc (add_seginfo): Replace head pointer with
6859         a pointer to the tail pointer.
6860         (optimize_mode_switching): Update calls accordingly.
6862 2023-11-11  Richard Sandiford  <richard.sandiford@arm.com>
6864         * mode-switching.cc (optimize_mode_switching): Call
6865         df_note_add_problem.
6867 2023-11-11  Richard Sandiford  <richard.sandiford@arm.com>
6869         * target.def: Tweak documentation of mode-switching hooks.
6870         * doc/tm.texi.in (OPTIMIZE_MODE_SWITCHING): Tweak documentation.
6871         (NUM_MODES_FOR_MODE_SWITCHING): Likewise.
6872         * doc/tm.texi: Regenerate.
6874 2023-11-11  Martin Uecker  <uecker@tugraz.at>
6876         PR c/110815
6877         PR c/112428
6878         * gimple-ssa-warn-access.cc (pass_waccess::maybe_check_access_sizes):
6879         remove warning for parameters declared with `static`.
6881 2023-11-11  Joern Rennecke  <joern.rennecke@embecosm.com>
6883         * doc/sourcebuild.texi (Scan the assembly output): Document change.
6885 2023-11-10  Mao  <sray@live.com>
6887         PR middle-end/110983
6888         * doc/invoke.texi (Option Summary): Add -fpatchable-function-entry.
6890 2023-11-10  Maciej W. Rozycki  <macro@embecosm.com>
6892         * config/riscv/riscv.md (length): Fix indentation for branch and
6893         jump length calculation expressions.
6895 2023-11-10  Eric Botcazou  <ebotcazou@adacore.com>
6897         * fold-const.cc (operand_compare::operand_equal_p) <CONSTRUCTOR>:
6898         Deal with nonempty constant CONSTRUCTORs.
6899         (operand_compare::hash_operand) <CONSTRUCTOR>: Hash DECL_FIELD_OFFSET
6900         and DECL_FIELD_BIT_OFFSET for FIELD_DECLs.
6902 2023-11-10  Vladimir N. Makarov  <vmakarov@redhat.com>
6904         PR target/112337
6905         * ira-costs.cc: (validate_autoinc_and_mem_addr_p): New function.
6906         (equiv_can_be_consumed_p): Use it.
6908 2023-11-10  Richard Sandiford  <richard.sandiford@arm.com>
6910         * read-rtl.cc (md_reader::read_mapping): Allow iterators to
6911         include other iterators.
6912         * doc/md.texi: Document the change.
6913         * config/aarch64/iterators.md (DREG2, VQ2, TX2, DX2, SX2): Include
6914         the iterator that is being duplicated, rather than reproducing it.
6915         (VSTRUCT_D): Redefine using VSTRUCT_[234]D.
6916         (VSTRUCT_Q): Likewise VSTRUCT_[234]Q.
6917         (VSTRUCT_2QD, VSTRUCT_3QD, VSTRUCT_4QD, VSTRUCT_QD): Redefine using
6918         the individual D and Q iterators.
6920 2023-11-10  Uros Bizjak  <ubizjak@gmail.com>
6922         * config/i386/i386.md (stack_protect_set_1 peephole2):
6923         Explicitly check operand 2 for word_mode.
6924         (stack_protect_set_1 peephole2 #2): Ditto.
6925         (stack_protect_set_2 peephole2): Ditto.
6926         (stack_protect_set_3 peephole2): Ditto.
6927         (*stack_protect_set_4z_<mode>_di): New insn patter.
6928         (*stack_protect_set_4s_<mode>_di): Ditto.
6929         (stack_protect_set_4 peephole2): New peephole2 pattern to
6930         substitute stack protector scratch register clear with unrelated
6931         register initialization involving zero/sign-extend instruction.
6933 2023-11-10  Uros Bizjak  <ubizjak@gmail.com>
6935         * config/i386/i386.md (shift): Use SAL insted of SLL
6936         for ashift insn mnemonic.
6938 2023-11-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6940         PR tree-optimization/112438
6941         * tree-vect-loop.cc (vectorizable_induction): Bugfix when
6942         LOOP_VINFO_USING_SELECT_VL_P.
6944 2023-11-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6946         * config/riscv/riscv-protos.h (enum insn_type): New enum.
6947         * config/riscv/riscv-v.cc
6948         (rvv_builder::combine_sequence_use_slideup_profitable_p): New function.
6949         (expand_vector_init_slideup_combine_sequence): Ditto.
6950         (expand_vec_init): Add slideup combine optimization.
6952 2023-11-10  Robin Dapp  <rdapp@ventanamicro.com>
6954         PR tree-optimization/112464
6955         * tree-vect-loop.cc (vectorize_fold_left_reduction): Use
6956         vect_orig_stmt on scalar_dest_def_info.
6958 2023-11-10  Jin Ma  <jinma@linux.alibaba.com>
6960         * config/riscv/riscv.cc (riscv_for_each_saved_reg): Place the interrupt
6961         operation before the XTheadMemPair.
6963 2023-11-10  Richard Biener  <rguenther@suse.de>
6965         PR tree-optimization/110221
6966         * tree-vect-slp.cc (vect_schedule_slp_node): When loop
6967         masking / len is applied make sure to not schedule
6968         intenal defs outside of the loop.
6970 2023-11-10  Andrew Stubbs  <ams@codesourcery.com>
6972         * expr.cc (store_constructor): Add "and" operation to uniform mask
6973         generation.
6975 2023-11-10  Andrew Stubbs  <ams@codesourcery.com>
6977         PR target/112308
6978         * config/gcn/gcn-valu.md (add<mode>3<exec_clobber>): Fix B constraint
6979         and switch to the new format.
6980         (add<mode>3_dup<exec_clobber>): Likewise.
6981         (add<mode>3_vcc<exec_vcc>): Likewise.
6982         (add<mode>3_vcc_dup<exec_vcc>): Likewise.
6983         (add<mode>3_vcc_zext_dup): Likewise.
6984         (add<mode>3_vcc_zext_dup_exec): Likewise.
6985         (add<mode>3_vcc_zext_dup2): Likewise.
6986         (add<mode>3_vcc_zext_dup2_exec): Likewise.
6988 2023-11-10  Richard Biener  <rguenther@suse.de>
6990         PR middle-end/112469
6991         * match.pd (cond ? op a : b -> .COND_op (cond, a, b)): Add
6992         missing view_converts.
6994 2023-11-10  Andrew Stubbs  <ams@codesourcery.com>
6996         * config/gcn/gcn.cc (gcn_expand_reduc_scalar): Add clobber to DImode
6997         min/max instructions.
6999 2023-11-10  Chenghui Pan  <panchenghui@loongson.cn>
7001         * config/loongarch/lsx.md: Fix instruction name typo in
7002         lsx_vreplgr2vr_<lsxfmt_f> template.
7004 2023-11-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7006         * config/riscv/autovec.md (vec_init<mode><vel>): Split patterns.
7008 2023-11-10  Pan Li  <pan2.li@intel.com>
7010         Revert:
7011         2023-11-10  Pan Li  <pan2.li@intel.com>
7012         * config/riscv/riscv-v.cc (expand_vector_init_trailing_same_elem):
7013         New fun impl to expand the insn when trailing same elements.
7014         (expand_vec_init): Try trailing same elements when vec_init.
7016 2023-11-10  Pan Li  <pan2.li@intel.com>
7018         * config/riscv/riscv-v.cc (expand_vector_init_trailing_same_elem):
7019         New fun impl to expand the insn when trailing same elements.
7020         (expand_vec_init): Try trailing same elements when vec_init.
7022 2023-11-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7024         * config/riscv/autovec-opt.md (*cond_copysign<mode>): Remove.
7025         * config/riscv/autovec.md (cond_copysign<mode>): New pattern.
7027 2023-11-10  Pan Li  <pan2.li@intel.com>
7029         PR target/112432
7030         * internal-fn.def (LRINT): Add FLOATN support.
7031         (LROUND): Ditto.
7032         (LLRINT): Ditto.
7033         (LLROUND): Ditto.
7035 2023-11-10  Jeff Law  <jlaw@ventanamicro.com>
7037         * config/h8300/combiner.md (single bit sign_extract): Avoid recently
7038         added patterns for H8/SX.
7039         (single bit zero_extract): New patterns.
7041 2023-11-10  liuhongt  <hongtao.liu@intel.com>
7043         PR target/112443
7044         * config/i386/sse.md (*avx2_pcmp<mode>3_4): Fix swap condition
7045         from LT to GT since there's not in the pattern.
7046         (*avx2_pcmp<mode>3_5): Ditto.
7048 2023-11-10  Jose E. Marchesi  <jose.marchesi@oracle.com>
7050         * config/bpf/bpf.cc (bpf_print_register): Accept modifier code 'W'
7051         to force emitting register names using the wN form.
7052         * config/bpf/bpf.md (*mulsidi3_zeroextend): Force operands to
7053         always use wN written form in pseudo-C assembly syntax.
7055 2023-11-09  David Malcolm  <dmalcolm@redhat.com>
7057         * diagnostic-show-locus.cc (layout::m_line_table): New field.
7058         (compatible_locations_p): Convert to...
7059         (layout::compatible_locations_p): ...this, replacing uses of
7060         line_table global with m_line_table.
7061         (layout::layout): Convert "richloc" param from a pointer to a
7062         const reference.  Initialize m_line_table member.
7063         (layout::maybe_add_location_range):  Replace uses of line_table
7064         global with m_line_table.  Pass the latter to
7065         linemap_client_expand_location_to_spelling_point.
7066         (layout::print_leading_fixits): Pass m_line_table to
7067         affects_line_p.
7068         (layout::print_trailing_fixits): Likewise.
7069         (gcc_rich_location::add_location_if_nearby): Update for change
7070         to layout ctor params.
7071         (diagnostic_show_locus): Convert to...
7072         (diagnostic_context::maybe_show_locus): ...this, converting
7073         richloc param from a pointer to a const reference.  Make "loc"
7074         const.  Split out printing part of function to...
7075         (diagnostic_context::show_locus): ...this.
7076         (selftest::test_offset_impl): Update for change to layout ctor
7077         params.
7078         (selftest::test_layout_x_offset_display_utf8): Likewise.
7079         (selftest::test_layout_x_offset_display_tab): Likewise.
7080         (selftest::test_tab_expansion): Likewise.
7081         * diagnostic.h (diagnostic_context::maybe_show_locus): New decl.
7082         (diagnostic_context::show_locus): New decl.
7083         (diagnostic_show_locus): Convert from a decl to an inline function.
7084         * gdbinit.in (break-on-diagnostic): Update from a breakpoint
7085         on diagnostic_show_locus to one on
7086         diagnostic_context::maybe_show_locus.
7087         * genmatch.cc (linemap_client_expand_location_to_spelling_point):
7088         Add "set" param and use it in place of line_table global.
7089         * input.cc (expand_location_1): Likewise.
7090         (expand_location): Update for new param of expand_location_1.
7091         (expand_location_to_spelling_point): Likewise.
7092         (linemap_client_expand_location_to_spelling_point): Add "set"
7093         param and use it in place of line_table global.
7094         * tree-diagnostic-path.cc (event_range::print): Pass line_table
7095         for new param of linemap_client_expand_location_to_spelling_point.
7097 2023-11-09  Uros Bizjak  <ubizjak@gmail.com>
7099         * config/i386/i386.md (@stack_protect_set_1_<PTR:mode>_<W:mode>):
7100         Use W mode iterator instead of SWI48.  Output MOV instead of XOR
7101         for TARGET_USE_MOV0.
7102         (stack_protect_set_1 peephole2): Use integer modes with
7103         mode size <= word mode size for operand 3.
7104         (stack_protect_set_1 peephole2 #2): New peephole2 pattern to
7105         substitute stack protector scratch register clear with unrelated
7106         register initialization, originally in front of stack
7107         protector sequence.
7108         (*stack_protect_set_3_<PTR:mode>_<SWI48:mode>): New insn pattern.
7109         (stack_protect_set_1 peephole2): New peephole2 pattern to
7110         substitute stack protector scratch register clear with unrelated
7111         register initialization involving LEA instruction.
7113 2023-11-09  Vladimir N. Makarov  <vmakarov@redhat.com>
7115         PR rtl-optimization/110215
7116         * ira-lives.cc: (add_conflict_from_region_landing_pads): New
7117         function.
7118         (process_bb_node_lives): Use it.
7120 2023-11-09  Alexandre Oliva  <oliva@adacore.com>
7122         * config/i386/i386.cc (symbolic_base_address_p,
7123         base_address_p): New, factored out from...
7124         (extract_base_offset_in_addr): ... here and extended to
7125         recognize REG+GOTOFF, as in gcc.target/i386/sse2-load-multi.c
7126         and sse2-store-multi.c with PIE enabled by default.
7128 2023-11-09  Tamar Christina  <tamar.christina@arm.com>
7130         PR tree-optimization/109154
7131         * config/aarch64/aarch64-sve.md (cond_copysign<mode>): New.
7133 2023-11-09  Tamar Christina  <tamar.christina@arm.com>
7135         PR tree-optimization/109154
7136         * config/aarch64/aarch64.md (copysign<GPF:mode>3): Handle
7137         copysign (x, -1).
7138         * config/aarch64/aarch64-simd.md (copysign<mode>3): Likewise.
7139         * config/aarch64/aarch64-sve.md (copysign<mode>3): Likewise.
7141 2023-11-09  Tamar Christina  <tamar.christina@arm.com>
7143         PR tree-optimization/109154
7144         * config/aarch64/aarch64.md (<optab><mode>3): Add SVE split case.
7145         * config/aarch64/aarch64-simd.md (ior<mode>3<vczle><vczbe>): Likewise.
7146         * config/aarch64/predicates.md(aarch64_orr_imm_sve_advsimd): New.
7148 2023-11-09  Tamar Christina  <tamar.christina@arm.com>
7150         PR tree-optimization/109154
7151         * config/aarch64/aarch64.md (*mov<mode>_aarch64, *movsi_aarch64,
7152         *movdi_aarch64): Add new w -> Z case.
7153         * config/aarch64/iterators.md (Vbtype): Add QI and HI.
7155 2023-11-09  Tamar Christina  <tamar.christina@arm.com>
7157         PR tree-optimization/109154
7158         * config/aarch64/aarch64-protos.h (aarch64_simd_special_constant_p,
7159         aarch64_maybe_generate_simd_constant): New.
7160         * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<VQMOV:mode>,
7161         *aarch64_simd_mov<VDMOV:mode>): Add new coden for special constants.
7162         * config/aarch64/aarch64.cc (aarch64_extract_vec_duplicate_wide_int):
7163         Take optional mode.
7164         (aarch64_simd_special_constant_p,
7165         aarch64_maybe_generate_simd_constant): New.
7166         * config/aarch64/aarch64.md (*movdi_aarch64): Add new codegen for
7167         special constants.
7168         * config/aarch64/constraints.md (Dx): new.
7170 2023-11-09  Tamar Christina  <tamar.christina@arm.com>
7172         PR tree-optimization/109154
7173         * internal-fn.def (COPYSIGN): New.
7174         * match.pd (UNCOND_BINARY, COND_BINARY): Map IFN_COPYSIGN to
7175         IFN_COND_COPYSIGN.
7176         * optabs.def (cond_copysign_optab, cond_len_copysign_optab): New.
7178 2023-11-09  Tamar Christina  <tamar.christina@arm.com>
7180         PR tree-optimization/109154
7181         * match.pd: Add new neg+abs rule, remove inverse copysign rule.
7183 2023-11-09  Tamar Christina  <tamar.christina@arm.com>
7185         PR tree-optimization/109154
7186         * match.pd: expand existing copysign optimizations.
7188 2023-11-09  Tatsuyuki Ishi  <ishitatsuyuki@gmail.com>
7190         PR driver/111605
7191         * collect2.cc (main): Do not prepend target triple to
7192         -fuse-ld=lld,mold.
7194 2023-11-09  Richard Biener  <rguenther@suse.de>
7196         PR tree-optimization/111133
7197         * tree-vect-stmts.cc (vect_build_scatter_store_calls):
7198         Remove and refactor to ...
7199         (vect_build_one_scatter_store_call): ... this new function.
7200         (vectorizable_store): Use vect_check_scalar_mask to record
7201         the SLP node for the mask operand.  Code generate scatters
7202         with builtin decls from the main scatter vectorization
7203         path and prepare that for SLP.
7204         * tree-vect-slp.cc (vect_get_operand_map): Do not look
7205         at the VDEF to decide between scatter or gather since that
7206         doesn't work for patterns.  Use the LHS being an SSA_NAME
7207         or not instead.
7209 2023-11-09  Pan Li  <pan2.li@intel.com>
7211         * config/riscv/riscv.cc (riscv_frm_emit_after_bb_end): Only
7212         perform once emit when at least one succ edge is abnormal.
7214 2023-11-09  Richard Biener  <rguenther@suse.de>
7216         * tree-vect-loop.cc (vect_verify_full_masking_avx512):
7217         Check we have integer mode masks as required by
7218         vect_get_loop_mask.
7220 2023-11-09  Richard Biener  <rguenther@suse.de>
7222         PR tree-optimization/112444
7223         * tree-ssa-sccvn.cc (visit_phi): Avoid using not visited
7224         defs as undefined vals.
7226 2023-11-09  YunQiang Su  <yunqiang.su@cipunited.com>
7228         * config/mips/mips.cc(mips_option_override): Set mips_abs to
7229         2008, if mips_abs is default and mips_nan is 2008.
7231 2023-11-09  Florian Weimer  <fweimer@redhat.com>
7233         * doc/invoke.texi (Warning Options): Document
7234         -Wreturn-mismatch.  Update -Wreturn-type documentation.
7236 2023-11-09  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
7238         * config/s390/s390.md: Remove UNSPEC_VEC_ELTSWAP.
7239         * config/s390/vector.md (eltswapv16qi): New expander.
7240         (*eltswapv16qi): New insn and splitter.
7241         (eltswapv8hi): New insn and splitter.
7242         (eltswap<mode>): New insn and splitter for modes V_HW_4 as well
7243         as V_HW_2.
7244         * config/s390/vx-builtins.md (eltswap<mode>): Remove.
7245         (*eltswapv16qi): Remove.
7246         (*eltswap<mode>): Remove.
7247         (*eltswap<mode>_emu): Remove.
7249 2023-11-09  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
7251         * config/s390/s390.cc (expand_perm_with_rot): Remove.
7252         (expand_perm_reverse_elements): New.
7253         (expand_perm_with_vster): Remove.
7254         (expand_perm_with_vstbrq): Remove.
7255         (vectorize_vec_perm_const_1): Replace removed functions with new
7256         one.
7258 2023-11-09  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
7260         * config/s390/s390.cc (expand_perm_with_merge): Deal with cases
7261         where vmr{l,h} are still applicable if the operands are swapped.
7262         (expand_perm_with_vpdi): Likewise for vpdi.
7264 2023-11-09  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
7266         * config/s390/s390.md (VX_CONV_INT): Remove iterator.
7267         (gf): Add float mappings.
7268         (TOINT, toint): New attribute.
7269         (*fixuns_trunc<VX_CONV_BFP:mode><VX_CONV_INT:mode>2_z13):
7270         Remove.
7271         (*fixuns_trunc<mode><toint>2_z13): Add.
7272         (*fix_trunc<VX_CONV_BFP:mode><VX_CONV_INT:mode>2_bfp_z13):
7273         Remove.
7274         (*fix_trunc<mode><toint>2_bfp_z13): Add.
7275         (*floatuns<VX_CONV_INT:mode><VX_CONV_BFP:mode>2_z13): Remove.
7276         (*floatuns<toint><mode>2_z13): Add.
7277         * config/s390/vector.md (VX_VEC_CONV_INT): Remove iterator.
7278         (float<VX_VEC_CONV_INT:mode><VX_VEC_CONV_BFP:mode>2): Remove.
7279         (float<tointvec><mode>2): Add.
7280         (floatuns<VX_VEC_CONV_INT:mode><VX_VEC_CONV_BFP:mode>2): Remove.
7281         (floatuns<tointvec><mode>2): Add.
7282         (fix_trunc<VX_VEC_CONV_BFP:mode><VX_VEC_CONV_INT:mode>2):
7283         Remove.
7284         (fix_trunc<mode><tointvec>2): Add.
7285         (fixuns_trunc<VX_VEC_CONV_BFP:mode><VX_VEC_CONV_INT:mode>2):
7286         Remove.
7287         (fixuns_trunc<VX_VEC_CONV_BFP:mode><tointvec>2): Add.
7289 2023-11-09  Jakub Jelinek  <jakub@redhat.com>
7291         PR c/112339
7292         * attribs.cc (attribute_ignored_p): Only return true for
7293         attr_namespace_ignored_p if as is NULL.
7294         (decl_attributes): Never add ignored attributes.
7296 2023-11-09  Jin Ma  <jinma@linux.alibaba.com>
7298         * config/riscv/bitmanip.md: Avoid the conflict between
7299         zbb and xtheadmemidx in patterns.
7301 2023-11-09  Richard Biener  <rguenther@suse.de>
7303         * tree-vect-stmts.cc (vectorizable_simd_clone_call): Record
7304         to the correct simd_clone_info.
7306 2023-11-09  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7308         * config/riscv/riscv-vector-costs.cc (costs::preferred_new_lmul_p): Fix ICE.
7310 2023-11-09  Alexandre Oliva  <oliva@adacore.com>
7312         * tree-cfg.cc (assign_discriminators): Handle debug stmts.
7314 2023-11-08  Uros Bizjak  <ubizjak@gmail.com>
7316         PR target/82524
7317         * config/i386/i386.md (*add<mode>_1_slp):
7318         Split insn only for unmatched operand 0.
7319         (*sub<mode>_1_slp): Ditto.
7320         (*<any_logic:code><mode>_1_slp): Merge pattern from "*and<mode>_1_slp"
7321         and "*<any_logic:code><mode>_1_slp" using any_logic code iterator.
7322         Split insn only for unmatched operand 0.
7323         (*neg<mode>1_slp): Split insn only for unmatched operand 0.
7324         (*one_cmpl<mode>_1_slp): Ditto.
7325         (*ashl<mode>3_1_slp): Ditto.
7326         (*<any_shiftrt:insn><mode>_1_slp): Ditto.
7327         (*<any_rotate:insn><mode>_1_slp): Ditto.
7328         (*addqi_ext<mode>_1): Redefine as define_insn_and_split.  Add
7329         alternative 1 and split insn after reload for unmatched operand 0.
7330         (*<plusminus:insn>qi_ext<mode>_2): Merge pattern from
7331         "*addqi_ext<mode>_2" and "*subqi_ext<mode>_2" using plusminus code
7332         iterator. Redefine as define_insn_and_split.  Add alternative 1
7333         and split insn after reload for unmatched operand 0.
7334         (*subqi_ext<mode>_1): Redefine as define_insn_and_split.  Add
7335         alternative 1 and split insn after reload for unmatched operand 0.
7336         (*<any_logic:code>qi_ext<mode>_0): Merge pattern from
7337         "*andqi_ext<mode>_0" and and "*<any_logic:code>qi_ext<mode>_0" using
7338         any_logic code iterator.
7339         (*<any_logic:code>qi_ext<mode>_1): Merge pattern from
7340         "*andqi_ext<mode>_1" and "*<any_logic:code>qi_ext<mode>_1" using
7341         any_logic code iterator. Redefine as define_insn_and_split.  Add
7342         alternative 1 and split insn after reload for unmatched operand 0.
7343         (*<any_logic:code>qi_ext<mode>_1_cc): Merge pattern from
7344         "*andqi_ext<mode>_1_cc" and "*xorqi_ext<mode>_1_cc" using any_logic
7345         code iterator. Redefine as define_insn_and_split.  Add alternative 1
7346         and split insn after reload for unmatched operand 0.
7347         (*<any_logic:code>qi_ext<mode>_2): Merge pattern from
7348         "*andqi_ext<mode>_2" and "*<any_or:code>qi_ext<mode>_2" using
7349         any_logic code iterator. Redefine as define_insn_and_split.  Add
7350         alternative 1 and split insn after reload for unmatched operand 0.
7351         (*<any_logic:code>qi_ext<mode>_3): Redefine as define_insn_and_split.
7352         Add alternative 1 and split insn after reload for unmatched operand 0.
7353         (*negqi_ext<mode>_1): Rename from "*negqi_ext<mode>_2".  Add
7354         alternative 1 and split insn after reload for unmatched operand 0.
7355         (*one_cmplqi_ext<mode>_1): Ditto.
7356         (*ashlqi_ext<mode>_1): Ditto.
7357         (*<any_shiftrt:insn>qi_ext<mode>_1): Ditto.
7359 2023-11-08  Richard Biener  <rguenther@suse.de>
7361         * tree-vect-stmts.cc (vectorizable_load): Adjust offset
7362         vector gathering for SLP of emulated gathers.
7364 2023-11-08  Richard Biener  <rguenther@suse.de>
7366         * tree-vectorizer.h (vect_slp_child_index_for_operand):
7367         Add gatherscatter_p argument.
7368         * tree-vect-slp.cc (vect_slp_child_index_for_operand): Likewise.
7369         Pass it on.
7370         * tree-vect-stmts.cc (vect_check_store_rhs): Turn the rhs
7371         argument into an output, also output the SLP node associated
7372         with it.
7373         (vectorizable_simd_clone_call): Adjust.
7374         (vectorizable_store): Likewise.
7375         (vectorizable_load): Likewise.
7377 2023-11-08  Richard Biener  <rguenther@suse.de>
7379         * tree-vect-stmts.cc (vectorizable_load): Use the correct
7380         vectorized mask operand.
7382 2023-11-08  Lehua Ding  <lehua.ding@rivai.ai>
7384         * config/riscv/vector.md (*vsetvldi_no_side_effects_si_extend):
7385         New combine pattern.
7387 2023-11-08  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7389         * config/riscv/riscv-vsetvl.cc: Fix ICE.
7391 2023-11-08  xuli  <xuli1@eswincomputing.com>
7393         * config/riscv/riscv-c.cc (riscv_check_builtin_call): Eliminate warning.
7395 2023-11-08  Hongyu Wang  <hongyu.wang@intel.com>
7397         PR target/112394
7398         * config/i386/constraints.md (jc): New constraint that prohibits
7399         EGPR on -mno-avx.
7400         * config/i386/i386.md (*movdi_internal): Change r constraint
7401         corresponds to Yd.
7402         (*movti_internal): Likewise.
7404 2023-11-08  Florian Weimer  <fweimer@redhat.com>
7406         * doc/invoke.texi (Warning Options): Mention C diagnostics
7407         for -fpermissive.
7409 2023-11-08  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7411         PR target/112092
7412         * config/riscv/riscv-vector-builtins-bases.cc: Normalize the vsetvls.
7414 2023-11-08  Haochen Jiang  <haochen.jiang@intel.com>
7416         PR target/111907
7417         * config/i386/i386.md (avx_noavx512vl): New definition for isa
7418         attribute.
7419         * config/i386/sse.md (*andnot<mode>3): Change isa attribute from
7420         avx_noavx512f to avx_noavx512vl.
7422 2023-11-07  Pan Li  <pan2.li@intel.com>
7424         * config/riscv/autovec.md: Remove the size check of lfloor.
7425         * config/riscv/riscv-v.cc (expand_vec_lfloor): Leverage
7426         emit_vec_rounding_to_integer for floor.
7428 2023-11-07  Robin Dapp  <rdapp@ventanamicro.com>
7430         PR tree-optimization/112361
7431         PR target/112359
7432         PR middle-end/112406
7433         * tree-if-conv.cc (convert_scalar_cond_reduction): Remember if
7434         loop was versioned and only then create COND_OPs.
7435         (predicate_scalar_phi): Do not create COND_OP when not
7436         vectorizing.
7437         * tree-vect-loop.cc (vect_expand_fold_left): Re-create
7438         VEC_COND_EXPR.
7439         (vectorize_fold_left_reduction): Pass mask to
7440         vect_expand_fold_left.
7442 2023-11-07  Uros Bizjak  <ubizjak@gmail.com>
7444         * config/i386/predicates.md ("flags_reg_operand"):
7445         Make predicate special to avoid automatic mode checks.
7447 2023-11-07  Martin Jambor  <mjambor@suse.cz>
7449         * configure: Regenerate.
7451 2023-11-07  Kwok Cheung Yeung  <kcy@codesourcery.com>
7453         * lto-cgraph.cc (enum LTO_symtab_tags): Add tag for indirect
7454         functions.
7455         (output_offload_tables): Write indirect functions.
7456         (input_offload_tables): read indirect functions.
7457         * lto-section-names.h (OFFLOAD_IND_FUNC_TABLE_SECTION_NAME): New.
7458         * omp-builtins.def (BUILT_IN_GOMP_TARGET_MAP_INDIRECT_PTR): New.
7459         * omp-offload.cc (offload_ind_funcs): New.
7460         (omp_discover_implicit_declare_target): Add functions marked with
7461         'omp declare target indirect' to indirect functions list.
7462         (omp_finish_file): Add indirect functions to section for offload
7463         indirect functions.
7464         (execute_omp_device_lower): Redirect indirect calls on target by
7465         passing function pointer to BUILT_IN_GOMP_TARGET_MAP_INDIRECT_PTR.
7466         (pass_omp_device_lower::gate): Run pass_omp_device_lower if
7467         indirect functions are present on an accelerator device.
7468         * omp-offload.h (offload_ind_funcs): New.
7469         * tree-core.h (omp_clause_code): Add OMP_CLAUSE_INDIRECT.
7470         * tree.cc (omp_clause_num_ops): Add entry for OMP_CLAUSE_INDIRECT.
7471         (omp_clause_code_name): Likewise.
7472         * tree.h (OMP_CLAUSE_INDIRECT_EXPR): New.
7473         * config/gcn/mkoffload.cc (process_asm): Process offload_ind_funcs
7474         section.  Count number of indirect functions.
7475         (process_obj): Emit number of indirect functions.
7476         * config/nvptx/mkoffload.cc (ind_func_ids, ind_funcs_tail): New.
7477         (process): Emit offload_ind_func_table in PTX code.  Emit indirect
7478         function names and count in image.
7479         * config/nvptx/nvptx.cc (nvptx_record_offload_symbol): Mark
7480         indirect functions in PTX code with IND_FUNC_MAP.
7482 2023-11-07  Tobias Burnus  <tobias@codesourcery.com>
7484         * doc/invoke.texi (-fopenmp, -fopenmp-simd): Adjust wording for
7485         attribute syntax supported also in C.
7487 2023-11-07  Richard Sandiford  <richard.sandiford@arm.com>
7489         * config/aarch64/aarch64.cc (aarch64_print_operand): Add a %Z
7490         modifier for SVE registers.
7492 2023-11-07  Joseph Myers  <joseph@codesourcery.com>
7494         * builtins.def (DEF_C2X_BUILTIN): Rename to DEF_C23_BUILTIN and
7495         use flag_isoc23 and function_c23_misc.
7496         * config/rl78/rl78.cc (rl78_option_override): Compare
7497         lang_hooks.name with "GNU C23" not "GNU C2X".
7498         * coretypes.h (function_c2x_misc): Rename to function_c23_misc.
7499         * doc/cpp.texi (@code{__has_attribute}): Refer to C23 instead of
7500         C2x.
7501         * doc/extend.texi: Likewise.
7502         * doc/invoke.texi: Likewise.
7503         * dwarf2out.cc (highest_c_language, gen_compile_unit_die): Compare
7504         against and return "GNU C23" language string instead of "GNU C2X".
7505         * ginclude/float.h: Refer to C23 instead of C2X in comments.
7506         * ginclude/stdint-gcc.h: Likewise.
7507         * glimits.h: Likewise.
7508         * tree.h: Likewise.
7510 2023-11-07  Alexandre Oliva  <oliva@adacore.com>
7512         * doc/sourcebuild.texi (opt_mstrict_align): New target.
7514 2023-11-07  Lehua Ding  <lehua.ding@rivai.ai>
7516         * config/riscv/autovec-opt.md (*cond_len_<optab><v_double_trunc><mode>):
7517         New combine pattern.
7518         (*cond_len_<optab><v_quad_trunc><mode>): Ditto.
7519         (*cond_len_<optab><v_oct_trunc><mode>): Ditto.
7520         (*cond_len_extend<v_double_trunc><mode>): Ditto.
7521         (*cond_len_widen_reduc_plus_scal_<mode>): Ditto.
7523 2023-11-07  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7525         PR target/112399
7526         * config/riscv/riscv-avlprop.cc
7527         (pass_avlprop::get_vlmax_ta_preferred_avl): Enhance AVL propagation.
7528         * config/riscv/t-riscv: Add new include.
7530 2023-11-07  Pan Li  <pan2.li@intel.com>
7532         * config/riscv/autovec.md: Remove the size check of lceil.l
7533         * config/riscv/riscv-v.cc (expand_vec_lceil):  Leverage
7534         emit_vec_rounding_to_integer for ceil.
7536 2023-11-06  John David Anglin  <danglin@gcc.gnu.org>
7538         * config/pa/pa.cc (pa_asm_trampoline_template): Fix typo.
7540 2023-11-06  John David Anglin  <danglin@gcc.gnu.org>
7542         * config/pa/pa-linux.h (NEED_INDICATE_EXEC_STACK): Define to 1.
7544 2023-11-06  David Malcolm  <dmalcolm@redhat.com>
7546         * diagnostic-show-locus.cc (class colorizer): Take just a
7547         pretty_printer rather than a diagnostic_context.
7548         (layout::layout): Make context param a const reference,
7549         and pretty_printer param non-optional.
7550         (layout::m_context): Drop field.
7551         (layout::m_options): New field.
7552         (layout::m_colorize_source_p): Drop field.
7553         (layout::m_show_labels_p): Drop field.
7554         (layout::m_show_line_numbers_p): Drop field.
7555         (layout::print_gap_in_line_numbering): Use m_options.
7556         (layout::calculate_line_spans): Likewise.
7557         (layout::calculate_linenum_width): Likewise.
7558         (layout::calculate_x_offset_display): Likewise.
7559         (layout::print_source_line): Likewise.
7560         (layout::start_annotation_line): Likewise.
7561         (layout::print_annotation_line): Likewise.
7562         (layout::print_line): Likewise.
7563         (gcc_rich_location::add_location_if_nearby): Update for changes to
7564         layout ctor.
7565         (diagnostic_show_locus): Likewise.
7566         (selftest::test_offset_impl): Likewise.
7567         (selftest::test_layout_x_offset_display_utf8): Likewise.
7568         (selftest::test_layout_x_offset_display_tab): Likewise.
7569         (selftest::test_tab_expansion): Likewise.
7570         * diagnostic.h (diagnostic_context::m_source_printing): Move
7571         declaration of struct outside diagnostic_context as...
7572         (struct diagnostic_source_printing_options)... this.
7574 2023-11-06  David Malcolm  <dmalcolm@redhat.com>
7576         * diagnostic.cc (diagnostic_context::push_diagnostics): Convert
7577         to...
7578         (diagnostic_option_classifier::push): ...this.
7579         (diagnostic_context::pop_diagnostics): Convert to...
7580         (diagnostic_option_classifier::pop): ...this.
7581         (diagnostic_context::initialize): Move code to...
7582         (diagnostic_option_classifier::init): ...this new function.
7583         (diagnostic_context::finish): Move code to...
7584         (diagnostic_option_classifier::fini): ...this new function.
7585         (diagnostic_context::classify_diagnostic): Convert to...
7586         (diagnostic_option_classifier::classify_diagnostic): ...this.
7587         (diagnostic_context::update_effective_level_from_pragmas): Convert
7588         to...
7589         (diagnostic_option_classifier::update_effective_level_from_pragmas):
7590         ...this.
7591         (diagnostic_context::diagnostic_enabled): Update for refactoring.
7592         * diagnostic.h (struct diagnostic_classification_change_t): Move into...
7593         (class diagnostic_option_classifier): ...this new class.
7594         (diagnostic_context::option_unspecified_p): Update for move of
7595         fields into m_option_classifier.
7596         (diagnostic_context::classify_diagnostic): Likewise.
7597         (diagnostic_context::push_diagnostics): Likewise.
7598         (diagnostic_context::pop_diagnostics): Likewise.
7599         (diagnostic_context::update_effective_level_from_pragmas): Delete.
7600         (diagnostic_context::m_classify_diagnostic): Move into class
7601         diagnostic_option_classifier.
7602         (diagnostic_context::m_option_classifier): Likewise.
7603         (diagnostic_context::m_classification_history): Likewise.
7604         (diagnostic_context::m_n_classification_history): Likewise.
7605         (diagnostic_context::m_push_list): Likewise.
7606         (diagnostic_context::m_n_push): Likewise.
7607         (diagnostic_context::m_option_classifier): New.
7609 2023-11-06  David Malcolm  <dmalcolm@redhat.com>
7611         * diagnostic.cc (diagnostic_context::set_urlifier): New.
7612         * diagnostic.h (diagnostic_context::set_urlifier): New decl.
7613         (diagnostic_context::m_urlifier): Make private.
7614         * gcc.cc (driver::global_initializations): Use set_urlifier rather
7615         than directly setting field.
7616         * toplev.cc (general_init): Likewise.
7618 2023-11-06  David Malcolm  <dmalcolm@redhat.com>
7620         * diagnostic.cc (diagnostic_context::check_max_errors): Replace
7621         uses of diagnostic_kind_count with simple field acesss.
7622         (diagnostic_context::report_diagnostic): Likewise.
7623         (diagnostic_text_output_format::~diagnostic_text_output_format):
7624         Replace use of diagnostic_kind_count with
7625         diagnostic_context::diagnostic_count.
7626         * diagnostic.h (diagnostic_kind_count): Delete.
7627         (errorcount): Replace use of diagnostic_kind_count with
7628         diagnostic_context::diagnostic_count.
7629         (warningcount): Likewise.
7630         (werrorcount): Likewise.
7631         (sorrycount): Likewise.
7633 2023-11-06  Christophe Lyon  <christophe.lyon@linaro.org>
7635         * doc/sourcebuild.texi (Other attributes): Document thread_fence
7636         effective-target.
7638 2023-11-06  Uros Bizjak  <ubizjak@gmail.com>
7640         * config/i386/constraints.md (Bc): Remove constraint.
7641         (Bn): Rewrite to use x86_extended_reg_mentioned_p predicate.
7642         * config/i386/i386.cc (ix86_memory_address_reg_class):
7643         Do not limit processing to TARGET_APX_EGPR.  Exit early for
7644         NULL insn.  Do not check recog_data.insn before calling
7645         extract_insn_cached.
7646         (ix86_insn_base_reg_class): Handle ADDR_GPR8.
7647         (ix86_regno_ok_for_insn_base_p): Ditto.
7648         (ix86_insn_index_reg_class): Ditto.
7649         * config/i386/i386.md (*cmpqi_ext<mode>_1_mem_rex64):
7650         Remove insn pattern and corresponding peephole2 pattern.
7651         (*cmpi_ext<mode>_1): Remove (m,Q) alternative.
7652         Change (QBc,Q) alternative to (QBn,Q).  Add "addr" attribute.
7653         (*cmpqi_ext<mode>_3_mem_rex64): Remove insn pattern
7654         and corresponding peephole2 pattern.
7655         (*cmpi_ext<mode>_3): Remove (Q,m) alternative.
7656         Change (Q,QnBc) alternative to (Q,QnBn).  Add "addr" attribute.
7657         (*extzvqi_mem_rex64): Remove insn pattern and
7658         corresponding peephole2 pattern.
7659         (*extzvqi): Remove (Q,m) alternative.  Change (Q,QnBc)
7660         alternative to (Q,QnBn).  Add "addr" attribute.
7661         (*insvqi_1_mem_rex64): Remove insn pattern and
7662         corresponding peephole2 pattern.
7663         (*insvqi_1): Remove (Q,m) alternative.  Change (Q,QnBc)
7664         alternative to (Q,QnBn).  Add "addr" attribute.
7665         (@insv<mode>_1): Ditto.
7666         (*addqi_ext<mode>_0): Remove (m,0,Q) alternative.  Change (QBc,0,Q)
7667         alternative to (QBn,0,Q).  Add "addr" attribute.
7668         (*subqi_ext<mode>_0): Ditto.
7669         (*andqi_ext<mode>_0): Ditto.
7670         (*<any_or:code>qi_ext<mode>_0): Ditto.
7671         (*addqi_ext<mode>_1): Remove (Q,0,m) alternative.  Change (Q,0,QnBc)
7672         alternative to (Q,0,QnBn).  Add "addr" attribute.
7673         (*andqi_ext<mode>_1): Ditto.
7674         (*andqi_ext<mode>_1_cc): Ditto.
7675         (*<any_or:code>qi_ext<mode>_1): Ditto.
7676         (*xorqi_ext<mode>_1_cc): Ditto.
7677         * config/i386/predicates.md (nonimm_x64constmem_operand):
7678         Remove predicate.
7679         (general_x64constmem_operand): Ditto.
7680         (norex_memory_operand): Ditto.
7682 2023-11-06  Joseph Myers  <joseph@codesourcery.com>
7684         PR c/107954
7685         * doc/cpp.texi (__STDC_VERSION__): Refer to -std=c23 and
7686         -std=gnu23 instead of -std=c2x and -std=gnu2x.
7687         * doc/extend.texi (Attribute Syntax): Refer to C23 and -std=c23
7688         instead of C2x and -std=c2x.
7689         * doc/invoke.texi (-Wc11-c23-compat, -std=c23, -std=gnu23)
7690         (-std=iso9899:2024): Document, with -Wc11-c2x-compat, -std=c2x and
7691         -std=gnu2x as deprecated aliases.  Update descriptions of C23.
7692         * doc/standards.texi (Standards): Describe C23 with C2X as an old
7693         name.
7695 2023-11-06  Thomas Schwinge  <thomas@codesourcery.com>
7697         * config/nvptx/nvptx.h (MAKE_DECL_ONE_ONLY): Define.
7699 2023-11-06  Richard Biener  <rguenther@suse.de>
7701         PR tree-optimization/112405
7702         * tree-vect-stmts.cc (vectorizable_simd_clone_call):
7703         Properly handle invariant and/or loop mask passing.
7705 2023-11-06  Pan Li  <pan2.li@intel.com>
7707         * config/riscv/autovec.md: Remove the size check of lround.
7708         * config/riscv/riscv-v.cc (expand_vec_lround): Leverage
7709         emit_vec_rounding_to_integer for round.
7711 2023-11-06  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7713         * config/riscv/predicates.md: Adapt predicate.
7714         * config/riscv/riscv-protos.h (can_be_broadcasted_p): New function.
7715         * config/riscv/riscv-v.cc (can_be_broadcasted_p): Ditto.
7716         * config/riscv/vector.md (vec_duplicate<mode>): New pattern.
7717         (*vec_duplicate<mode>): Adapt vec_duplicate insn pattern.
7719 2023-11-06  Richard Biener  <rguenther@suse.de>
7721         PR tree-optimization/111950
7722         * tree-vect-loop-manip.cc (slpeel_duplicate_current_defs_from_edges):
7723         Remove.
7724         (find_guard_arg): Likewise.
7725         (slpeel_update_phi_nodes_for_guard2): Likewise.
7726         (slpeel_tree_duplicate_loop_to_edge_cfg): Remove calls to
7727         slpeel_duplicate_current_defs_from_edges, do not elide
7728         LC-PHIs for invariant values.
7729         (vect_do_peeling): Materialize PHI arguments for the edge
7730         around the epilog from the PHI defs of the main loop exit.
7732 2023-11-06  Richard Biener  <rguenther@suse.de>
7734         PR tree-optimization/112404
7735         * tree-vectorizer.h (get_mask_type_for_scalar_type): Declare
7736         overload with SLP node argument.
7737         * tree-vect-stmts.cc (get_mask_type_for_scalar_type): Implement it.
7738         (vect_check_scalar_mask): Use it.
7739         * tree-vect-slp.cc (vect_gather_slp_loads): Properly identify
7740         loads also for nodes with children, like .MASK_LOAD.
7741         * tree-vect-loop.cc (vect_analyze_loop_2): Look at the
7742         representative for load nodes and check whether it is a grouped
7743         access before looking for load-lanes support.
7745 2023-11-06  Robin Dapp  <rdapp@ventanamicro.com>
7747         PR tree-optimization/111760
7748         * config/riscv/autovec.md (vcond_mask_len_<mode><vm>): Add
7749         expander.
7750         * config/riscv/riscv-protos.h (enum insn_type): Add.
7751         * config/riscv/riscv-v.cc (needs_fp_rounding): Add !pred_mov.
7752         * doc/md.texi: Add vcond_mask_len.
7753         * gimple-match-exports.cc (maybe_resimplify_conditional_op):
7754         Create VCOND_MASK_LEN when length masking.
7755         * gimple-match.h (gimple_match_op::gimple_match_op): Always
7756         initialize len and bias.
7757         * internal-fn.cc (vec_cond_mask_len_direct): Add.
7758         (direct_vec_cond_mask_len_optab_supported_p): Add.
7759         (internal_fn_len_index): Add VCOND_MASK_LEN.
7760         (internal_fn_mask_index): Ditto.
7761         * internal-fn.def (VCOND_MASK_LEN): New internal function.
7762         * match.pd: Combine unconditional unary, binary and ternary
7763         operations into the respective COND_LEN operations.
7764         * optabs.def (OPTAB_D): Add vcond_mask_len optab.
7766 2023-11-06  Richard Sandiford  <richard.sandiford@arm.com>
7768         * explow.cc (align_dynamic_address): Do nothing if the required
7769         alignment is a byte.
7771 2023-11-06  Richard Sandiford  <richard.sandiford@arm.com>
7773         * function.h (get_stack_dynamic_offset): Declare.
7774         * function.cc (get_stack_dynamic_offset): New function,
7775         split out from...
7776         (get_stack_dynamic_offset): ...here.
7777         * explow.cc (allocate_dynamic_stack_space): Handle calls made
7778         after virtual registers have been instantiated.
7780 2023-11-06  liuhongt  <hongtao.liu@intel.com>
7782         PR target/112393
7783         * config/i386/i386-expand.cc (ix86_expand_vec_perm_vpermt2):
7784         Avoid generating RTL code when d->testing_p.
7786 2023-11-06  Richard Biener  <rguenther@suse.de>
7788         PR tree-optimization/112369
7789         * tree.cc (strip_float_extensions): Use element_precision.
7791 2023-11-06  Richard Biener  <rguenther@suse.de>
7793         PR middle-end/112296
7794         * doc/extend.texi (__builtin_constant_p): Clarify that
7795         side-effects are discarded.
7797 2023-11-06  Kewen Lin  <linkw@linux.ibm.com>
7799         PR target/111828
7800         * config.in: Regenerate.
7801         * config/rs6000/rs6000.cc (rs6000_update_ipa_fn_target_info): Guard
7802         inline asm handling under !HAVE_AS_POWER10_HTM.
7803         * configure: Regenerate.
7804         * configure.ac: Detect assembler support for HTM insns at power10.
7806 2023-11-06  xuli  <xuli1@eswincomputing.com>
7807             Pan Li  <pan2.li@intel.com>
7809         * config/riscv/riscv-c.cc (riscv_resolve_overloaded_builtin): New function for the hook.
7810         (riscv_register_pragmas): Register the hook.
7811         * config/riscv/riscv-protos.h (resolve_overloaded_builtin): New decl.
7812         * config/riscv/riscv-vector-builtins-bases.cc: New function impl.
7813         * config/riscv/riscv-vector-builtins-shapes.cc (build_one): Register overloaded function.
7814         * config/riscv/riscv-vector-builtins.cc (struct non_overloaded_registered_function_hasher):
7815         New hash table.
7816         (function_builder::add_function): Add overloaded arg.
7817         (function_builder::add_unique_function): Map overloaded function to non-overloaded function.
7818         (function_builder::add_overloaded_function): New API impl.
7819         (registered_function::overloaded_hash): Calculate hash value.
7820         (has_vxrm_or_frm_p): New function impl.
7821         (non_overloaded_registered_function_hasher::hash): Ditto.
7822         (non_overloaded_registered_function_hasher::equal): Ditto.
7823         (handle_pragma_vector): Allocate space for hash table.
7824         (resolve_overloaded_builtin): New function impl.
7825         * config/riscv/riscv-vector-builtins.h (function_base::may_require_frm_p): Ditto.
7826         (function_base::may_require_vxrm_p): Ditto.
7828 2023-11-06  Haochen Jiang  <haochen.jiang@intel.com>
7830         PR target/111889
7831         * config/i386/avx512bf16intrin.h: Push no-evex512 target.
7832         * config/i386/avx512bf16vlintrin.h: Ditto.
7833         * config/i386/avx512bitalgvlintrin.h: Ditto.
7834         * config/i386/avx512bwintrin.h: Ditto.
7835         * config/i386/avx512dqintrin.h: Ditto.
7836         * config/i386/avx512fintrin.h: Ditto.
7837         * config/i386/avx512fp16intrin.h: Ditto.
7838         * config/i386/avx512fp16vlintrin.h: Ditto.
7839         * config/i386/avx512ifmavlintrin.h: Ditto.
7840         * config/i386/avx512vbmi2vlintrin.h: Ditto.
7841         * config/i386/avx512vbmivlintrin.h: Ditto.
7842         * config/i386/avx512vlbwintrin.h: Ditto.
7843         * config/i386/avx512vldqintrin.h: Ditto.
7844         * config/i386/avx512vlintrin.h: Ditto.
7845         * config/i386/avx512vnnivlintrin.h: Ditto.
7846         * config/i386/avx512vp2intersectvlintrin.h: Ditto.
7847         * config/i386/avx512vpopcntdqvlintrin.h: Ditto.
7849 2023-11-06  Haochen Jiang  <haochen.jiang@intel.com>
7851         * config/i386/avx512bf16vlintrin.h
7852         (_mm_avx512_castsi128_ps): New.
7853         (_mm256_avx512_castsi256_ps): Ditto.
7854         (_mm_avx512_slli_epi32): Ditto.
7855         (_mm256_avx512_slli_epi32): Ditto.
7856         (_mm_avx512_cvtepi16_epi32): Ditto.
7857         (_mm256_avx512_cvtepi16_epi32): Ditto.
7858         (__attribute__): Change intrin call.
7859         * config/i386/avx512bwintrin.h
7860         (_mm_avx512_set_epi32): New.
7861         (_mm_avx512_set_epi16): Ditto.
7862         (_mm_avx512_set_epi8): Ditto.
7863         (__attribute__): Change intrin call.
7864         * config/i386/avx512fp16intrin.h: Ditto.
7865         * config/i386/avx512fp16vlintrin.h
7866         (_mm_avx512_set1_ps): New.
7867         (_mm256_avx512_set1_ps): Ditto.
7868         (_mm_avx512_and_si128): Ditto.
7869         (_mm256_avx512_and_si256): Ditto.
7870         (__attribute__): Change intrin call.
7871         * config/i386/avx512vlbwintrin.h
7872         (_mm_avx512_set1_epi32): New.
7873         (_mm_avx512_set1_epi16): Ditto.
7874         (_mm_avx512_set1_epi8): Ditto.
7875         (_mm256_avx512_set_epi16): Ditto.
7876         (_mm256_avx512_set_epi8): Ditto.
7877         (_mm256_avx512_set1_epi16): Ditto.
7878         (_mm256_avx512_set1_epi32): Ditto.
7879         (_mm256_avx512_set1_epi8): Ditto.
7880         (_mm_avx512_max_epi16): Ditto.
7881         (_mm_avx512_min_epi16): Ditto.
7882         (_mm_avx512_max_epu16): Ditto.
7883         (_mm_avx512_min_epu16): Ditto.
7884         (_mm_avx512_max_epi8): Ditto.
7885         (_mm_avx512_min_epi8): Ditto.
7886         (_mm_avx512_max_epu8): Ditto.
7887         (_mm_avx512_min_epu8): Ditto.
7888         (_mm256_avx512_max_epi16): Ditto.
7889         (_mm256_avx512_min_epi16): Ditto.
7890         (_mm256_avx512_max_epu16): Ditto.
7891         (_mm256_avx512_min_epu16): Ditto.
7892         (_mm256_avx512_insertf128_ps): Ditto.
7893         (_mm256_avx512_extractf128_pd): Ditto.
7894         (_mm256_avx512_extracti128_si256): Ditto.
7895         (_MM256_AVX512_REDUCE_OPERATOR_BASIC_EPI16): Ditto.
7896         (_MM256_AVX512_REDUCE_OPERATOR_MAX_MIN_EP16): Ditto.
7897         (_MM256_AVX512_REDUCE_OPERATOR_BASIC_EPI8): Ditto.
7898         (_MM256_AVX512_REDUCE_OPERATOR_MAX_MIN_EP8): Ditto.
7899         (__attribute__): Change intrin call.
7901 2023-11-06  Haochen Jiang  <haochen.jiang@intel.com>
7903         * config/i386/avx512bf16vlintrin.h: Change intrin call.
7904         * config/i386/avx512fintrin.h
7905         (_mm_avx512_undefined_ps): New.
7906         (_mm_avx512_undefined_pd): Ditto.
7907         (__attribute__): Change intrin call.
7908         * config/i386/avx512vbmivlintrin.h: Ditto.
7909         * config/i386/avx512vlbwintrin.h: Ditto.
7910         * config/i386/avx512vldqintrin.h: Ditto.
7911         * config/i386/avx512vlintrin.h
7912         (_mm_avx512_undefined_si128): New.
7913         (_mm256_avx512_undefined_ps): Ditto.
7914         (_mm256_avx512_undefined_pd): Ditto.
7915         (_mm256_avx512_undefined_si256): Ditto.
7916         (__attribute__): Change intrin call.
7918 2023-11-06  Haochen Jiang  <haochen.jiang@intel.com>
7920         * config/i386/avx512bitalgvlintrin.h: Change intrin call.
7921         * config/i386/avx512dqintrin.h: Ditto.
7922         * config/i386/avx512fintrin.h:
7923         (_mm_avx512_setzero_ps): New.
7924         (_mm_avx512_setzero_pd): Ditto.
7925         (__attribute__): Change intrin call.
7926         * config/i386/avx512fp16intrin.h: Ditto.
7927         * config/i386/avx512fp16vlintrin.h: Ditto.
7928         * config/i386/avx512vbmi2vlintrin.h: Ditto.
7929         * config/i386/avx512vbmivlintrin.h: Ditto.
7930         * config/i386/avx512vlbwintrin.h: Ditto.
7931         * config/i386/avx512vldqintrin.h: Ditto.
7932         * config/i386/avx512vlintrin.h
7933         (_mm_avx512_setzero_si128): New.
7934         (_mm256_avx512_setzero_pd): Ditto.
7935         (_mm256_avx512_setzero_ps): Ditto.
7936         (_mm256_avx512_setzero_si256): Ditto.
7937         (__attribute__): Change intrin call.
7938         * config/i386/avx512vpopcntdqvlintrin.h: Ditto.
7939         * config/i386/gfniintrin.h: Ditto.
7941 2023-11-05  Uros Bizjak  <ubizjak@gmail.com>
7943         * config/i386/i386.h (enum reg_class): Add LEGACY_INDEX_REGS.
7944         Rename LEGACY_REGS to LEGACY_GENERAL_REGS.
7945         (REG_CLASS_NAMES): Ditto.
7946         (REG_CLASS_CONTENTS): Ditto.
7947         * config/i386/constraints.md ("R"): Update for rename.
7949 2023-11-05  Richard Sandiford  <richard.sandiford@arm.com>
7951         * mode-switching.cc: Remove unused forward references.
7952         (seginfo): Remove bbnum.
7953         (new_seginfo): Remove associated argument.
7954         (optimize_mode_switching): Update calls accordingly.
7956 2023-11-05  Richard Sandiford  <richard.sandiford@arm.com>
7958         * read-rtl.cc (read_rtx_operand): Avoid spinning endlessly for
7959         invalid [...] operands.
7961 2023-11-05  Richard Sandiford  <richard.sandiford@arm.com>
7963         PR target/112105
7964         * config/aarch64/aarch64.cc (aarch64_modes_compatible_p): New
7965         function, with the core logic extracted from...
7966         (aarch64_can_change_mode_class): ...here.  Extend the previous rules
7967         to allow changes between partial SVE modes and other modes if
7968         the other mode is no bigger than an element, and if no other rule
7969         prevents it.  Use the aarch64_modes_tieable_p handling of
7970         partial Advanced SIMD structure modes.
7971         (aarch64_modes_tieable_p): Use aarch64_modes_compatible_p.
7972         Allow all vector mode ties that it allows.
7974 2023-11-05  Pan Li  <pan2.li@intel.com>
7976         * config/riscv/autovec.md: Remove the size check of lrint.
7977         * config/riscv/riscv-v.cc (emit_vec_narrow_cvt_x_f): New help
7978         emit func impl.
7979         (emit_vec_widden_cvt_x_f): New help emit func impl.
7980         (emit_vec_rounding_to_integer): New func impl to emit the
7981         rounding from FP to integer.
7982         (expand_vec_lrint): Leverage emit_vec_rounding_to_integer.
7983         * config/riscv/vector.md: Take V_VLSF for vfncvt.
7985 2023-11-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7987         * config/riscv/vector.md: Fix bug.
7989 2023-11-04  Sergei Trofimovich  <siarheit@google.com>
7991         PR bootstrap/112379
7992         * gcc-urlifier.cc (get_url_suffix_for_quoted_text): Mark as
7993         ATTRIBUTE_UNUSED.
7995 2023-11-04  Pan Li  <pan2.li@intel.com>
7997         * config/riscv/vector-iterators.md: Remove HF modes.
7999 2023-11-04  David Malcolm  <dmalcolm@redhat.com>
8001         * diagnostic.cc: Include "pretty-print-urlifier.h".
8002         (diagnostic_context::initialize): Initialize m_urlifier.
8003         (diagnostic_context::finish): Clean up m_urlifier
8004         (diagnostic_report::diagnostic): m_urlifier to pp_format.
8005         * diagnostic.h (diagnostic_context::m_urlifier): New field.
8006         * gcc-urlifier.cc: New file.
8007         * gcc-urlifier.def: New file.
8008         * gcc-urlifier.h: New file.
8009         * gcc.cc: Include "gcc-urlifier.h".
8010         (driver::global_initializations): Initialize global_dc->m_urlifier.
8011         * pretty-print-urlifier.h: New file.
8012         * pretty-print.cc: Include "pretty-print-urlifier.h".
8013         (obstack_append_string): New.
8014         (urlify_quoted_string): New.
8015         (pp_format): Add "urlifier" param and use it to implement optional
8016         urlification of quoted text strings.
8017         (pp_output_formatted_text): Make buffer a const pointer.
8018         (selftest::pp_printf_with_urlifier): New.
8019         (selftest::test_urlification): New.
8020         (selftest::pretty_print_cc_tests): Call it.
8021         * pretty-print.h (class urlifier): New forward declaration.
8022         (pp_format): Add optional urlifier param.
8023         * selftest-run-tests.cc (selftest::run_tests): Call
8024         selftest::gcc_urlifier_cc_tests .
8025         * selftest.h (selftest::gcc_urlifier_cc_tests): New decl.
8026         * toplev.cc: Include "gcc-urlifier.h".
8027         (general_init): Initialize global_dc->m_urlifier.
8029 2023-11-04  David Malcolm  <dmalcolm@redhat.com>
8031         * Makefile.in (GCC_OBJS): Add gcc-urlifier.o.
8032         (OBJS): Likewise.
8034 2023-11-04  David Malcolm  <dmalcolm@redhat.com>
8036         * common.opt (fdiagnostics-text-art-charset=): Remove refererence
8037         to diagnostic-text-art.h.
8038         * coretypes.h (struct diagnostic_context): Replace forward decl
8039         with...
8040         (class diagnostic_context): ...this.
8041         * diagnostic-format-json.cc: Update for changes to
8042         diagnostic_context.
8043         * diagnostic-format-sarif.cc: Likewise.
8044         * diagnostic-show-locus.cc: Likewise.
8045         * diagnostic-text-art.h: Deleted file, moving content...
8046         (enum diagnostic_text_art_charset): ...to diagnostic.h,
8047         (DIAGNOSTICS_TEXT_ART_CHARSET_DEFAULT): ...deleting,
8048         (diagnostics_text_art_charset_init): ...deleting in favor of
8049         diagnostic_context::set_text_art_charset.
8050         * diagnostic.cc: Remove include of "diagnostic-text-art.h".
8051         (pedantic_warning_kind): Update for field renaming.
8052         (permissive_error_kind): Likewise.
8053         (permissive_error_option): Likewise.
8054         (diagnostic_initialize): Convert to...
8055         (diagnostic_context::initialize): ...this, updating for field
8056         renamings.
8057         (diagnostic_color_init): Convert to...
8058         (diagnostic_context::color_init): ...this.
8059         (diagnostic_urls_init): Convert to...
8060         (diagnostic_context::urls_init): ...this.
8061         (diagnostic_initialize_input_context): Convert to...
8062         (diagnostic_context::initialize_input_context): ...this.
8063         (diagnostic_finish): Convert to...
8064         (diagnostic_context::finish): ...this, updating for field
8065         renamings.
8066         (diagnostic_context::set_output_format): New.
8067         (diagnostic_context::set_client_data_hooks): New.
8068         (diagnostic_context::create_edit_context): New.
8069         (diagnostic_converted_column): Convert to...
8070         (diagnostic_context::converted_column): ...this.
8071         (diagnostic_get_location_text): Update for field renaming.
8072         (diagnostic_check_max_errors): Convert to...
8073         (diagnostic_context::check_max_errors): ...this, updating for
8074         field renamings.
8075         (diagnostic_action_after_output): Convert to...
8076         (diagnostic_context::action_after_output): ...this, updating for
8077         field renamings.
8078         (last_module_changed_p): Delete.
8079         (set_last_module): Delete.
8080         (includes_seen): Convert to...
8081         (diagnostic_context::includes_seen_p): ...this, updating for field
8082         renamings.
8083         (diagnostic_report_current_module): Convert to...
8084         (diagnostic_context::report_current_module): ...this, updating for
8085         field renamings, and replacing uses of last_module_changed_p and
8086         set_last_module to simple field accesses.
8087         (diagnostic_show_any_path): Convert to...
8088         (diagnostic_context::show_any_path): ...this.
8089         (diagnostic_classify_diagnostic): Convert to...
8090         (diagnostic_context::classify_diagnostic): ...this, updating for
8091         field renamings.
8092         (diagnostic_push_diagnostics): Convert to...
8093         (diagnostic_context::push_diagnostics): ...this, updating for field
8094         renamings.
8095         (diagnostic_pop_diagnostics): Convert to...
8096         (diagnostic_context::pop_diagnostics): ...this, updating for field
8097         renamings.
8098         (get_any_inlining_info): Convert to...
8099         (diagnostic_context::get_any_inlining_info): ...this, updating for
8100         field renamings.
8101         (update_effective_level_from_pragmas): Convert to...
8102         (diagnostic_context::update_effective_level_from_pragmas):
8103         ...this, updating for field renamings.
8104         (print_any_cwe): Convert to...
8105         (diagnostic_context::print_any_cwe): ...this.
8106         (print_any_rules): Convert to...
8107         (diagnostic_context::print_any_rules): ...this.
8108         (print_option_information): Convert to...
8109         (diagnostic_context::print_option_information): ...this, updating
8110         for field renamings.
8111         (diagnostic_enabled): Convert to...
8112         (diagnostic_context::diagnostic_enabled): ...this, updating for
8113         field renamings.
8114         (warning_enabled_at): Convert to...
8115         (diagnostic_context::warning_enabled_at): ...this.
8116         (diagnostic_report_diagnostic): Convert to...
8117         (diagnostic_context::report_diagnostic): ...this, updating for
8118         field renamings and conversions to member functions.
8119         (diagnostic_append_note): Update for field renaming.
8120         (diagnostic_impl): Use diagnostic_context::report_diagnostic
8121         directly.
8122         (diagnostic_n_impl): Likewise.
8123         (diagnostic_emit_diagram): Convert to...
8124         (diagnostic_context::emit_diagram): ...this, updating for field
8125         renamings.
8126         (error_recursion): Convert to...
8127         (diagnostic_context::error_recursion): ...this.
8128         (diagnostic_text_output_format::~diagnostic_text_output_format):
8129         Use accessor.
8130         (diagnostics_text_art_charset_init): Convert to...
8131         (diagnostic_context::set_text_art_charset): ...this.
8132         (assert_location_text): Update for field renamings.
8133         * diagnostic.h (enum diagnostic_text_art_charset): Move here from
8134         diagnostic-text-art.h.
8135         (struct diagnostic_context): Convert to...
8136         (class diagnostic_context): ...this.
8137         (diagnostic_context::ice_handler_callback_t): New typedef.
8138         (diagnostic_context::set_locations_callback_t): New typedef.
8139         (diagnostic_context::initialize): New decl.
8140         (diagnostic_context::color_init): New decl.
8141         (diagnostic_context::urls_init): New decl.
8142         (diagnostic_context::file_cache_init): New decl.
8143         (diagnostic_context::finish): New decl.
8144         (diagnostic_context::set_set_locations_callback): New.
8145         (diagnostic_context::initialize_input_context): New decl.
8146         (diagnostic_context::warning_enabled_at): New decl.
8147         (diagnostic_context::option_unspecified_p): New.
8148         (diagnostic_context::report_diagnostic): New decl.
8149         (diagnostic_context::report_current_module): New decl.
8150         (diagnostic_context::check_max_errors): New decl.
8151         (diagnostic_context::action_after_output): New decl.
8152         (diagnostic_context::classify_diagnostic): New decl.
8153         (diagnostic_context::push_diagnostics): New decl.
8154         (diagnostic_context::pop_diagnostics): New decl.
8155         (diagnostic_context::emit_diagram): New decl.
8156         (diagnostic_context::set_output_format): New decl.
8157         (diagnostic_context::set_text_art_charset): New decl.
8158         (diagnostic_context::set_client_data_hooks): New decl.
8159         (diagnostic_context::create_edit_context): New decl.
8160         (diagnostic_context::set_warning_as_error_requested): New.
8161         (diagnostic_context::set_report_bug): New.
8162         (diagnostic_context::set_extra_output_kind): New.
8163         (diagnostic_context::set_show_cwe): New.
8164         (diagnostic_context::set_show_rules): New.
8165         (diagnostic_context::set_path_format): New.
8166         (diagnostic_context::set_show_path_depths): New.
8167         (diagnostic_context::set_show_option_requested): New.
8168         (diagnostic_context::set_max_errors): New.
8169         (diagnostic_context::set_escape_format): New.
8170         (diagnostic_context::set_ice_handler_callback): New.
8171         (diagnostic_context::warning_as_error_requested_p): New.
8172         (diagnostic_context::show_path_depths_p): New.
8173         (diagnostic_context::get_path_format): New.
8174         (diagnostic_context::get_escape_format): New.
8175         (diagnostic_context::get_file_cache): New.
8176         (diagnostic_context::get_edit_context): New.
8177         (diagnostic_context::get_client_data_hooks): New.
8178         (diagnostic_context::get_diagram_theme): New.
8179         (diagnostic_context::converted_column): New decl.
8180         (diagnostic_context::diagnostic_count): New.
8181         (diagnostic_context::includes_seen_p): New decl.
8182         (diagnostic_context::print_any_cwe): New decl.
8183         (diagnostic_context::print_any_rules): New decl.
8184         (diagnostic_context::print_option_information): New decl.
8185         (diagnostic_context::show_any_path): New decl.
8186         (diagnostic_context::error_recursion): New decl.
8187         (diagnostic_context::diagnostic_enabled): New decl.
8188         (diagnostic_context::get_any_inlining_info): New decl.
8189         (diagnostic_context::update_effective_level_from_pragmas): New
8190         decl.
8191         (diagnostic_context::m_file_cache): Make private.
8192         (diagnostic_context::diagnostic_count): Rename to...
8193         (diagnostic_context::m_diagnostic_count): ...this and make
8194         private.
8195         (diagnostic_context::warning_as_error_requested): Rename to...
8196         (diagnostic_context::m_warning_as_error_requested): ...this and
8197         make private.
8198         (diagnostic_context::n_opts): Rename to...
8199         (diagnostic_context::m_n_opts): ...this and make private.
8200         (diagnostic_context::classify_diagnostic): Rename to...
8201         (diagnostic_context::m_classify_diagnostic): ...this and make
8202         private.
8203         (diagnostic_context::classification_history): Rename to...
8204         (diagnostic_context::m_classification_history): ...this and make
8205         private.
8206         (diagnostic_context::n_classification_history): Rename to...
8207         (diagnostic_context::m_n_classification_history): ...this and make
8208         private.
8209         (diagnostic_context::push_list): Rename to...
8210         (diagnostic_context::m_push_list): ...this and make private.
8211         (diagnostic_context::n_push): Rename to...
8212         (diagnostic_context::m_n_push): ...this and make private.
8213         (diagnostic_context::show_cwe): Rename to...
8214         (diagnostic_context::m_show_cwe): ...this and make private.
8215         (diagnostic_context::show_rules): Rename to...
8216         (diagnostic_context::m_show_rules): ...this and make private.
8217         (diagnostic_context::path_format): Rename to...
8218         (diagnostic_context::m_path_format): ...this and make private.
8219         (diagnostic_context::show_path_depths): Rename to...
8220         (diagnostic_context::m_show_path_depths): ...this and make
8221         private.
8222         (diagnostic_context::show_option_requested): Rename to...
8223         (diagnostic_context::m_show_option_requested): ...this and make
8224         private.
8225         (diagnostic_context::abort_on_error): Rename to...
8226         (diagnostic_context::m_abort_on_error): ...this.
8227         (diagnostic_context::show_column): Rename to...
8228         (diagnostic_context::m_show_column): ...this.
8229         (diagnostic_context::pedantic_errors): Rename to...
8230         (diagnostic_context::m_pedantic_errors): ...this.
8231         (diagnostic_context::permissive): Rename to...
8232         (diagnostic_context::m_permissive): ...this.
8233         (diagnostic_context::opt_permissive): Rename to...
8234         (diagnostic_context::m_opt_permissive): ...this.
8235         (diagnostic_context::fatal_errors): Rename to...
8236         (diagnostic_context::m_fatal_errors): ...this.
8237         (diagnostic_context::dc_inhibit_warnings): Rename to...
8238         (diagnostic_context::m_inhibit_warnings): ...this.
8239         (diagnostic_context::dc_warn_system_headers): Rename to...
8240         (diagnostic_context::m_warn_system_headers): ...this.
8241         (diagnostic_context::max_errors): Rename to...
8242         (diagnostic_context::m_max_errors): ...this and make private.
8243         (diagnostic_context::internal_error): Rename to...
8244         (diagnostic_context::m_internal_error): ...this.
8245         (diagnostic_context::option_enabled): Rename to...
8246         (diagnostic_context::m_option_enabled): ...this.
8247         (diagnostic_context::option_state): Rename to...
8248         (diagnostic_context::m_option_state): ...this.
8249         (diagnostic_context::option_name): Rename to...
8250         (diagnostic_context::m_option_name): ...this.
8251         (diagnostic_context::get_option_url): Rename to...
8252         (diagnostic_context::m_get_option_url): ...this.
8253         (diagnostic_context::print_path): Rename to...
8254         (diagnostic_context::m_print_path): ...this.
8255         (diagnostic_context::make_json_for_path): Rename to...
8256         (diagnostic_context::m_make_json_for_path): ...this.
8257         (diagnostic_context::x_data): Rename to...
8258         (diagnostic_context::m_client_aux_data): ...this.
8259         (diagnostic_context::last_location): Rename to...
8260         (diagnostic_context::m_last_location): ...this.
8261         (diagnostic_context::last_module): Rename to...
8262         (diagnostic_context::m_last_module): ...this and make private.
8263         (diagnostic_context::lock): Rename to...
8264         (diagnostic_context::m_lock): ...this and make private.
8265         (diagnostic_context::lang_mask): Rename to...
8266         (diagnostic_context::m_lang_mask): ...this.
8267         (diagnostic_context::inhibit_notes_p): Rename to...
8268         (diagnostic_context::m_inhibit_notes_p): ...this.
8269         (diagnostic_context::report_bug): Rename to...
8270         (diagnostic_context::m_report_bug): ...this and make private.
8271         (diagnostic_context::extra_output_kind): Rename to...
8272         (diagnostic_context::m_extra_output_kind): ...this and make
8273         private.
8274         (diagnostic_context::column_unit): Rename to...
8275         (diagnostic_context::m_column_unit): ...this and make private.
8276         (diagnostic_context::column_origin): Rename to...
8277         (diagnostic_context::m_column_origin): ...this and make private.
8278         (diagnostic_context::tabstop): Rename to...
8279         (diagnostic_context::m_tabstop): ...this and make private.
8280         (diagnostic_context::escape_format): Rename to...
8281         (diagnostic_context::m_escape_format): ...this and make private.
8282         (diagnostic_context::edit_context_ptr): Rename to...
8283         (diagnostic_context::m_edit_context_ptr): ...this and make
8284         private.
8285         (diagnostic_context::set_locations_cb): Rename to...
8286         (diagnostic_context::m_set_locations_cb): ...this and make
8287         private.
8288         (diagnostic_context::ice_handler_cb): Rename to...
8289         (diagnostic_context::m_ice_handler_cb): ...this and make private.
8290         (diagnostic_context::includes_seen): Rename to...
8291         (diagnostic_context::m_includes_seen): ...this and make private.
8292         (diagnostic_inhibit_notes): Update for field renaming.
8293         (diagnostic_context_auxiliary_data): Likewise.
8294         (diagnostic_abort_on_error): Convert from macro to inline function
8295         and update for field renaming.
8296         (diagnostic_kind_count): Convert from macro to inline function and
8297         use diagnostic_count accessor.
8298         (diagnostic_report_warnings_p): Update for field renaming.
8299         (diagnostic_initialize): Convert decl to inline function calling
8300         into diagnostic_context.
8301         (diagnostic_color_init): Likewise.
8302         (diagnostic_urls_init): Likewise.
8303         (diagnostic_urls_init): Likewise.
8304         (diagnostic_finish): Likewise.
8305         (diagnostic_report_current_module): Likewise.
8306         (diagnostic_show_any_path): Delete decl.
8307         (diagnostic_initialize_input_context): Convert decl to inline
8308         function calling into diagnostic_context.
8309         (diagnostic_classify_diagnostic): Likewise.
8310         (diagnostic_push_diagnostics): Likewise.
8311         (diagnostic_pop_diagnostics): Likewise.
8312         (diagnostic_report_diagnostic): Likewise.
8313         (diagnostic_action_after_output): Likewise.
8314         (diagnostic_check_max_errors): Likewise.
8315         (diagnostic_file_cache_fini): Delete decl.
8316         (diagnostic_converted_column): Delete decl.
8317         (warning_enabled_at): Convert decl to inline function calling into
8318         diagnostic_context.
8319         (option_unspecified_p): New.
8320         (diagnostic_emit_diagram): Delete decl.
8321         * gcc.cc: Remove include of "diagnostic-text-art.h".
8322         Update for changes to diagnostic_context.
8323         * input.cc (diagnostic_file_cache_init): Move implementation
8324         to...
8325         (diagnostic_context::file_cache_init): ...this new member
8326         function.
8327         (diagnostic_file_cache_fini): Delete.
8328         (diagnostics_file_cache_forcibly_evict_file): Update for
8329         m_file_cache becoming private.
8330         (location_get_source_line): Likewise.
8331         (get_source_file_content): Likewise.
8332         (location_missing_trailing_newline): Likewise.
8333         * input.h (diagnostics_file_cache_fini): Delete.
8334         * langhooks.cc: Update for changes to diagnostic_context.
8335         * lto-wrapper.cc: Likewise.
8336         * opts.cc: Remove include of "diagnostic-text-art.h".
8337         Update for changes to diagnostic_context.
8338         * selftest-diagnostic.cc: Update for changes to
8339         diagnostic_context.
8340         * toplev.cc: Likewise.
8341         * tree-diagnostic-path.cc: Likewise.
8342         * tree-diagnostic.cc: Likewise.
8344 2023-11-03  Martin Uecker  <uecker@tugraz.at>
8346         PR c/98541
8347         * gimple-ssa-warn-access.cc
8348         (pass_waccess::maybe_check_access_sizes): For VLA bounds
8349         in parameters, only warn about null pointers with 'static'.
8351 2023-11-03  Andre Vieira  <andre.simoesdiasvieira@arm.com>
8353         * tree-vect-stmts.cc (vectorizable_simd_clone_call): Allow unmasked
8354         calls to use masked simdclones.
8356 2023-11-03  David Malcolm  <dmalcolm@redhat.com>
8358         * diagnostic.cc (diagnostic_initialize): Update for consolidation
8359         of group-based fields.
8360         (diagnostic_report_diagnostic): Likewise.
8361         (diagnostic_context::begin_group): New, based on body of
8362         auto_diagnostic_group's ctor.
8363         (diagnostic_context::end_group): New, based on body of
8364         auto_diagnostic_group's dtor.
8365         (auto_diagnostic_group::auto_diagnostic_group): Convert to a call
8366         to begin_group.
8367         (auto_diagnostic_group::~auto_diagnostic_group): Convert to a call
8368         to end_group.
8369         * diagnostic.h (diagnostic_context::begin_group): New decl.
8370         (diagnostic_context::end_group): New decl.
8371         (diagnostic_context::diagnostic_group_nesting_depth): Rename to...
8372         (diagnostic_context::m_diagnostic_groups.m_nesting_depth):
8373         ...this.
8374         (diagnostic_context::diagnostic_group_emission_count): Rename
8375         to...
8376         (diagnostic_context::m_diagnostic_groups::m_emission_count):
8377         ...this.
8379 2023-11-03  Andrew MacLeod  <amacleod@redhat.com>
8381         PR tree-optimization/111766
8382         * range-op.cc (operator_equal::fold_range): Check constants
8383         against the bitmask.
8384         (operator_not_equal::fold_range): Ditto.
8385         * value-range.h (irange_bitmask::member_p): New.
8387 2023-11-03  Andrew MacLeod  <amacleod@redhat.com>
8389         * value-range.cc (irange_bitmask::adjust_range): New.
8390         (irange::intersect_bitmask): Call adjust_range.
8391         * value-range.h (irange_bitmask::adjust_range): New prototype.
8393 2023-11-03  Uros Bizjak  <ubizjak@gmail.com>
8395         * config/i386/i386.cc (ix86_memory_address_use_extended_reg_class_p):
8396         Rename to ...
8397         (ix86_memory_address_reg_class): ... this.  Generalize address
8398         register class handling to allow multiple address register classes.
8399         Return maximal class for unrecognized instructions.  Improve comments.
8400         (ix86_insn_base_reg_class): Rewrite to handle
8401         multiple address register classes.
8402         (ix86_regno_ok_for_insn_base_p): Ditto.
8403         (ix86_insn_index_reg_class): Ditto.
8404         * config/i386/i386.md: Rename "gpr32" attribute to "addr"
8405         and substitute its values with "0" -> "gpr16", "1" -> "*".
8406         (addr): New attribute to limit allowed address register set.
8407         (gpr32): Remove.
8408         * config/i386/mmx.md: Rename "gpr32" attribute to "addr"
8409         and substitute its values with "0" -> "gpr16", "1" -> "*".
8410         * config/i386/sse.md: Ditto.
8412 2023-11-03  Richard Biener  <rguenther@suse.de>
8414         * tree-vect-loop.cc (vectorizable_live_operation): Simplify
8415         LC PHI replacement.
8417 2023-11-03  Roger Sayle  <roger@nextmovesoftware.com>
8419         * config/arc/arc.md (addsi3): Fix GNU-style code formatting.
8420         (adddi3): Change define_expand to generate a *adddi3.
8421         (*adddi3): New define_insn_and_split to lower DImode additions
8422         during the split1 pass (after combine and before reload).
8423         (ashldi3): New define_expand to (only) generate *ashldi3_cnt1
8424         for DImode left shifts by a single bit.
8425         (*ashldi3_cnt1): New define_insn_and_split to lower DImode
8426         left shifts by one bit to an *adddi3.
8428 2023-11-03  Richard Sandiford  <richard.sandiford@arm.com>
8430         * config/aarch64/aarch64.md (*cmov_uxtw_insn_insv): Remove
8431         can_create_pseudo_p condition.
8433 2023-11-03  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8435         * tree-vect-slp.cc (vect_get_and_check_slp_defs): Support SLP for dummy mask -1.
8436         * tree-vect-stmts.cc (vectorizable_load): Ditto.
8438 2023-11-03  Richard Biener  <rguenther@suse.de>
8440         PR tree-optimization/112366
8441         * tree-vect-loop.cc (vectorizable_live_operation): Remove
8442         assert.
8444 2023-11-03  Richard Biener  <rguenther@suse.de>
8446         PR tree-optimization/112310
8447         * tree-ssa-pre.cc (do_hoist_insertion): Keep the union
8448         of expressions, validate dependences are contained within
8449         the hoistable set before hoisting.
8451 2023-11-03  Pan Li  <pan2.li@intel.com>
8453         * config/riscv/autovec.md (lrint<mode><v_i_l_ll_convert>2): Remove.
8454         (lround<mode><v_i_l_ll_convert>2): Ditto.
8455         (lceil<mode><v_i_l_ll_convert>2): Ditto.
8456         (lfloor<mode><v_i_l_ll_convert>2): Ditto.
8457         (lrint<mode><v_f2si_convert>2): New pattern for cvt from
8458         FP to SI.
8459         (lround<mode><v_f2si_convert>2): Ditto.
8460         (lceil<mode><v_f2si_convert>2): Ditto.
8461         (lfloor<mode><v_f2si_convert>2): Ditto.
8462         (lrint<mode><v_f2di_convert>2): New pattern for cvt from
8463         FP to DI.
8464         (lround<mode><v_f2di_convert>2): Ditto.
8465         (lceil<mode><v_f2di_convert>2): Ditto.
8466         (lfloor<mode><v_f2di_convert>2): Ditto.
8467         * config/riscv/vector-iterators.md: Renew iterators for both
8468         the SI and DI.
8470 2023-11-03  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8472         PR target/112326
8473         * config/riscv/riscv-avlprop.cc (get_insn_vtype_mode): New function.
8474         (simplify_replace_vlmax_avl): Ditto.
8475         (pass_avlprop::execute): Add immediate AVL simplification.
8476         * config/riscv/riscv-protos.h (imm_avl_p): Rename.
8477         * config/riscv/riscv-v.cc (const_vlmax_p): Ditto.
8478         (imm_avl_p): Ditto.
8479         (emit_vlmax_insn): Adapt for new interface name.
8480         * config/riscv/vector.md (mode_idx): New attribute.
8482 2023-11-03  Pan Li  <pan2.li@intel.com>
8484         Revert:
8485         2023-11-02  Pan Li  <pan2.li@intel.com>
8487         * config/riscv/autovec.md (lrint<mode><v_i_l_ll_convert>2): Remove.
8488         (lround<mode><v_i_l_ll_convert>2): Ditto.
8489         (lceil<mode><v_i_l_ll_convert>2): Ditto.
8490         (lfloor<mode><v_i_l_ll_convert>2): Ditto.
8491         (lrint<mode><v_f2si_convert>2): New pattern for cvt from
8492         FP to SI.
8493         (lround<mode><v_f2si_convert>2): Ditto.
8494         (lceil<mode><v_f2si_convert>2): Ditto.
8495         (lfloor<mode><v_f2si_convert>2): Ditto.
8496         (lrint<mode><v_f2di_convert>2): New pattern for cvt from
8497         FP to DI.
8498         (lround<mode><v_f2di_convert>2): Ditto.
8499         (lceil<mode><v_f2di_convert>2): Ditto.
8500         (lfloor<mode><v_f2di_convert>2): Ditto.
8501         * config/riscv/vector-iterators.md: Renew iterators for both
8502         the SI and DI.
8504 2023-11-02  Edwin Lu  <ewlu@rivosinc.com>
8506         * config/riscv/riscv.cc (riscv_sched_variable_issue): add disabled assert
8508 2023-11-02  Jeff Law  <jlaw@ventanamicro.com>
8510         * config/h8300/combiner.md: Add new patterns for single bit
8511         sign extractions.
8513 2023-11-02  Pan Li  <pan2.li@intel.com>
8515         * config/riscv/autovec.md (lrint<mode><v_i_l_ll_convert>2): Remove.
8516         (lround<mode><v_i_l_ll_convert>2): Ditto.
8517         (lceil<mode><v_i_l_ll_convert>2): Ditto.
8518         (lfloor<mode><v_i_l_ll_convert>2): Ditto.
8519         (lrint<mode><v_f2si_convert>2): New pattern for cvt from
8520         FP to SI.
8521         (lround<mode><v_f2si_convert>2): Ditto.
8522         (lceil<mode><v_f2si_convert>2): Ditto.
8523         (lfloor<mode><v_f2si_convert>2): Ditto.
8524         (lrint<mode><v_f2di_convert>2): New pattern for cvt from
8525         FP to DI.
8526         (lround<mode><v_f2di_convert>2): Ditto.
8527         (lceil<mode><v_f2di_convert>2): Ditto.
8528         (lfloor<mode><v_f2di_convert>2): Ditto.
8529         * config/riscv/vector-iterators.md: Renew iterators for both
8530         the SI and DI.
8532 2023-11-02  Sam James  <sam@gentoo.org>
8534         * doc/passes.texi (Dead code elimination): Explicitly say 'lifetime'
8535         as this has become the standard term for what we're doing here.
8537 2023-11-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8539         * config/riscv/riscv-avlprop.cc
8540         (pass_avlprop::get_vlmax_ta_preferred_avl): Don't allow
8541         non-real insn AVL propation.
8543 2023-11-02  Robin Dapp  <rdapp@ventanamicro.com>
8545         PR middle-end/111401
8546         * internal-fn.cc (internal_fn_else_index): New function.
8547         * internal-fn.h (internal_fn_else_index): Define.
8548         * tree-if-conv.cc (convert_scalar_cond_reduction): Emit COND_OP
8549         if supported.
8550         (predicate_scalar_phi): Add whitespace.
8551         * tree-vect-loop.cc (fold_left_reduction_fn): Add IFN_COND_OP.
8552         (neutral_op_for_reduction): Return -0 for PLUS.
8553         (check_reduction_path): Don't count else operand in COND_OP.
8554         (vect_is_simple_reduction): Ditto.
8555         (vect_create_epilog_for_reduction): Fix whitespace.
8556         (vectorize_fold_left_reduction): Add COND_OP handling.
8557         (vectorizable_reduction): Don't count else operand in COND_OP.
8558         (vect_transform_reduction): Add COND_OP handling.
8559         * tree-vectorizer.h (neutral_op_for_reduction): Add default
8560         parameter.
8562 2023-11-02  Richard Biener  <rguenther@suse.de>
8564         PR tree-optimization/112320
8565         * gimple-fold.h (rewrite_to_defined_overflow): New overload
8566         for in-place operation.
8567         * gimple-fold.cc (rewrite_to_defined_overflow): Add stmt
8568         iterator argument to worker, define separate API for
8569         in-place and not in-place operation.
8570         * tree-if-conv.cc (predicate_statements): Simplify.
8571         * tree-scalar-evolution.cc (final_value_replacement_loop):
8572         Likewise.
8573         * tree-ssa-ifcombine.cc (pass_tree_ifcombine::execute): Adjust.
8574         * tree-ssa-reassoc.cc (update_range_test): Likewise.
8576 2023-11-02  Uros Bizjak  <ubizjak@gmail.com>
8578         * config/i386/i386.md: Move stack protector patterns
8579         above mov $0,%reg -> xor %reg,%reg peephole2 pattern.
8581 2023-11-02  liuhongt  <hongtao.liu@intel.com>
8583         * config/i386/mmx.md (cmlav4hf4): New expander.
8584         (cmla_conjv4hf4): Ditto.
8585         (cmulv4hf3): Ditto.
8586         (cmul_conjv4hf3): Ditto.
8588 2023-11-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8590         * config/riscv/vector.md: Fix redundant codes in attributes.
8592 2023-11-02  xuli  <xuli1@eswincomputing.com>
8594         * config/riscv/riscv-vector-builtins-bases.cc: Expand non-tuple intrinsics.
8595         * config/riscv/riscv-vector-builtins-functions.def (vcreate): Define non-tuple intrinsics.
8596         * config/riscv/riscv-vector-builtins-shapes.cc (struct vcreate_def): Ditto.
8597         * config/riscv/riscv-vector-builtins.cc: Add arg types.
8599 2023-11-02  Pan Li  <pan2.li@intel.com>
8601         * tree-vect-stmts.cc (vectorizable_internal_function): Add type
8602         size check for vectype_out doesn't participating for optab query.
8603         (vectorizable_call): Remove the type size check.
8605 2023-11-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8607         PR target/112327
8608         * config/riscv/vector.md: Add '0'.
8610 2023-11-01  Roger Sayle  <roger@nextmovesoftware.com>
8612         PR target/110551
8613         * config/i386/i386.md (*bmi2_umul<mode><dwi>3_1): Tidy condition
8614         as operands[2] with predicate register_operand must be !MEM_P.
8615         (peephole2): Optimize a mulx followed by a register-to-register
8616         move, to place result in the correct destination if possible.
8618 2023-11-01  Patrick O'Neill  <patrick@rivosinc.com>
8620         * config/riscv/sync.md:  Use riscv_subword_address function to
8621         calculate the address and shift in atomic_test_and_set.
8623 2023-11-01  Vineet Gupta  <vineetg@rivosinc.com>
8625         * config/riscv/riscv.cc (riscv_promote_function_mode): Fix mode
8626         returned for libcall case.
8628 2023-11-01  Martin Uecker  <uecker@tugraz.at>
8630         PR c/71219
8631         * doc/invoke.texi: Document -Walloc-size option.
8633 2023-11-01  Edwin Lu  <ewlu@rivosinc.com>
8635         * genautomata.cc (write_automata): move endif
8637 2023-11-01  Andre Vieira  <andre.simoesdiasvieira@arm.com>
8639         * omp-simd-clone.cc (simd_clone_adjust_return_type): Hoist out code to
8640         create return array and don't return new type.
8641         (simd_clone_adjust_argument_types): Hoist out code that creates
8642         ipa_param_body_adjustments and don't return them.
8643         (simd_clone_adjust): Call TARGET_SIMD_CLONE_ADJUST after return and
8644         argument types have been vectorized, create adjustments and return array
8645         after the hook.
8646         (expand_simd_clones): Call TARGET_SIMD_CLONE_ADJUST after return and
8647         argument types have been vectorized.
8649 2023-11-01  Uros Bizjak  <ubizjak@gmail.com>
8651         PR target/112332
8652         * config/i386/i386.md (stack_protexct_set_2 peephole2):
8653         Use general_gr_operand as operand 4 predicate.
8655 2023-11-01  Uros Bizjak  <ubizjak@gmail.com>
8657         * config/i386/i386.md (stack_protect_set): Explicitly
8658         generate scratch register in word mode.
8659         (@stack_protect_set_1_<mode>): Rename to ...
8660         (@stack_protect_set_1_<PTR:mode>_<SWI48:mode>): ... this.
8661         Use SWI48 mode iterator to match scratch register.
8662         (stack_protexct_set_1 peephole2): Use PTR, W and SWI48 mode
8663         iterators to match peephole sequence.  Use general_operand
8664         predicate for operand 4.  Allow different operand 2 and operand 3
8665         registers and use peep2_reg_dead_p to ensure new scratch
8666         register is dead before peephole seqeunce. Use peep2_reg_dead_p
8667         to ensure old scratch register is dead after peephole sequence.
8668         (*stack_protect_set_2_<mode>): Rename to ...
8669         (*stack_protect_set_2_<mode>_si): .. this.
8670         (*stack_protect_set_3): Rename to ...
8671         (*stack_protect_set_2_<mode>_di): ... this.
8672         Use PTR mode iterator to match stack protector memory move.
8673         Use earlyclobber for all alternatives of operand 1.
8674         (stack_protexct_set_2 peephole2): Use PTR, W and SWI48 mode
8675         iterators to match peephole sequence.  Use general_operand
8676         predicate for operand 4.  Allow different operand 2 and operand 3
8677         registers and use peep2_reg_dead_p to ensure new scratch
8678         register is dead before peephole seqeunce. Use peep2_reg_dead_p
8679         to ensure old scratch register is dead after peephole sequence.
8681 2023-11-01  xuli  <xuli1@eswincomputing.com>
8683         * config/riscv/riscv-vector-builtins-functions.def (vundefined): Add vundefine
8684         intrinsics for tuple types.
8685         * config/riscv/riscv-vector-builtins.cc: Ditto.
8686         * config/riscv/vector.md (@vundefined<mode>): Ditto.
8688 2023-11-01  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8690         * tree-vect-slp.cc (vect_build_slp_tree_1): Fix whitespace.
8692 2023-10-31  David Malcolm  <dmalcolm@redhat.com>
8694         * Makefile.in (ANALYZER_OBJS): Add analyzer/record-layout.o.
8696 2023-10-31  David Malcolm  <dmalcolm@redhat.com>
8698         * input.cc (dump_location_info): Update for removal of
8699         MACRO_MAP_EXPANSION_POINT_LOCATION.
8700         * tree-diagnostic.cc (maybe_unwind_expanded_macro_loc):
8701         Likewise.
8703 2023-10-31  David Malcolm  <dmalcolm@redhat.com>
8705         * opts.cc (get_option_url): Update comment; the requirement to
8706         pass DOCUMENTATION_ROOT_URL's value via -D was removed in
8707         r10-8065-ge33a1eae25b8a8.
8709 2023-10-31  David Malcolm  <dmalcolm@redhat.com>
8711         * pretty-print.cc (pretty_printer::pretty_printer): Initialize
8712         m_skipping_null_url.
8713         (pp_begin_url): Handle URL being null.
8714         (pp_end_url): Likewise.
8715         (selftest::test_null_urls): New.
8716         (selftest::pretty_print_cc_tests): Call it.
8717         * pretty-print.h (pretty_printer::m_skipping_null_url): New.
8719 2023-10-31  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8721         * tree-vect-slp.cc (vect_get_operand_map): Add MASK_LEN_GATHER_LOAD.
8722         (vect_build_slp_tree_1): Ditto.
8723         (vect_build_slp_tree_2): Ditto.
8725 2023-10-31  Cupertino Miranda  <cupertino.miranda@oracle.com>
8727         * config/bpf/bpf-passes.def (pass_lower_bpf_core): Added pass.
8728         * config/bpf/bpf-protos.h: Added prototype for new pass.
8729         * config/bpf/bpf.cc (bpf_delegitimize_address): New function.
8730         * config/bpf/bpf.md (mov_reloc_core<MM:mode>): Prefixed
8731         name with '*'.
8732         * config/bpf/core-builtins.cc (cr_builtins) Added access_node to
8733         struct.
8734         (is_attr_preserve_access): Improved check.
8735         (core_field_info): Make use of root_for_core_field_info
8736         function.
8737         (process_field_expr): Adapted to new functions.
8738         (pack_type): Small improvement.
8739         (bpf_handle_plugin_finish_type): Adapted to GTY(()).
8740         (bpf_init_core_builtins): Changed to new function names.
8741         (construct_builtin_core_reloc): Improved implementation.
8742         (bpf_resolve_overloaded_core_builtin): Changed how
8743         __builtin_preserve_access_index is converted.
8744         (compute_field_expr): Corrected implementation. Added
8745         access_node argument.
8746         (bpf_core_get_index): Added valid argument.
8747         (root_for_core_field_info, pack_field_expr)
8748         (core_expr_with_field_expr_plus_base, make_core_safe_access_index)
8749         (replace_core_access_index_comp_expr, maybe_get_base_for_field_expr)
8750         (core_access_clean, core_is_access_index, core_mark_as_access_index)
8751         (make_gimple_core_safe_access_index, execute_lower_bpf_core)
8752         (make_pass_lower_bpf_core): Added functions.
8753         (pass_data_lower_bpf_core): New pass struct.
8754         (pass_lower_bpf_core): New gimple_opt_pass class.
8755         (pack_field_expr_for_preserve_field)
8756         (bpf_replace_core_move_operands): Removed function.
8757         (bpf_enum_value_kind): Added GTY(()).
8758         * config/bpf/core-builtins.h (bpf_field_info_kind, bpf_type_id_kind)
8759         (bpf_type_info_kind, bpf_enum_value_kind): New enum.
8760         * config/bpf/t-bpf: Added pass bpf-passes.def to PASSES_EXTRA.
8762 2023-10-31  Neal Frager  <neal.frager@amd.com>
8764         * config/microblaze/microblaze.cc: Fix mcpu version check.
8766 2023-10-31  Patrick O'Neill  <patrick@rivosinc.com>
8768         * config/riscv/sync-rvwmo.md (atomic_load_rvwmo<mode>): Remove
8769         TARGET_ATOMIC constraint
8770         (atomic_store_rvwmo<mode>): Ditto.
8771         * config/riscv/sync-ztso.md (atomic_load_ztso<mode>): Ditto.
8772         (atomic_store_ztso<mode>): Ditto.
8773         * config/riscv/sync.md (atomic_load<mode>): Ditto.
8774         (atomic_store<mode>): Ditto.
8776 2023-10-31  Christoph Müllner  <christoph.muellner@vrull.eu>
8778         * config/riscv/riscv.cc (riscv_index_reg_class):
8779         Return GR_REGS for XTheadFMemIdx.
8780         (riscv_regno_ok_for_index_p): Add support for XTheadFMemIdx.
8781         * config/riscv/riscv.h (HARDFP_REG_P): New macro.
8782         * config/riscv/thead.cc (is_fmemidx_mode): New function.
8783         (th_memidx_classify_address_index): Add support for XTheadFMemIdx.
8784         (th_fmemidx_output_index): New function.
8785         (th_output_move): Add support for XTheadFMemIdx.
8786         * config/riscv/thead.md (TH_M_ANYF): New mode iterator.
8787         (TH_M_NOEXTF): Likewise.
8788         (*th_fmemidx_movsf_hardfloat): New INSN.
8789         (*th_fmemidx_movdf_hardfloat_rv64): Likewise.
8790         (*th_fmemidx_I_a): Likewise.
8791         (*th_fmemidx_I_c): Likewise.
8792         (*th_fmemidx_US_a): Likewise.
8793         (*th_fmemidx_US_c): Likewise.
8794         (*th_fmemidx_UZ_a): Likewise.
8795         (*th_fmemidx_UZ_c): Likewise.
8797 2023-10-31  Christoph Müllner  <christoph.muellner@vrull.eu>
8799         * config/riscv/constraints.md (th_m_mia): New constraint.
8800         (th_m_mib): Likewise.
8801         (th_m_mir): Likewise.
8802         (th_m_miu): Likewise.
8803         * config/riscv/riscv-protos.h (enum riscv_address_type):
8804         Add new address types ADDRESS_REG_REG, ADDRESS_REG_UREG,
8805         and ADDRESS_REG_WB and their documentation.
8806         (struct riscv_address_info): Add new field 'shift' and
8807         document the field usage for the new address types.
8808         (riscv_valid_base_register_p): New prototype.
8809         (th_memidx_legitimate_modify_p): Likewise.
8810         (th_memidx_legitimate_index_p): Likewise.
8811         (th_classify_address): Likewise.
8812         (th_output_move): Likewise.
8813         (th_print_operand_address): Likewise.
8814         * config/riscv/riscv.cc (riscv_index_reg_class):
8815         Return GR_REGS for XTheadMemIdx.
8816         (riscv_regno_ok_for_index_p): Add support for XTheadMemIdx.
8817         (riscv_classify_address): Call th_classify_address() on top.
8818         (riscv_output_move): Call th_output_move() on top.
8819         (riscv_print_operand_address): Call th_print_operand_address()
8820         on top.
8821         * config/riscv/riscv.h (HAVE_POST_MODIFY_DISP): New macro.
8822         (HAVE_PRE_MODIFY_DISP): Likewise.
8823         * config/riscv/riscv.md (zero_extendqi<SUPERQI:mode>2): Disable
8824         for XTheadMemIdx.
8825         (*zero_extendqi<SUPERQI:mode>2_internal): Convert to expand,
8826         create INSN with same name and disable it for XTheadMemIdx.
8827         (extendsidi2): Likewise.
8828         (*extendsidi2_internal): Disable for XTheadMemIdx.
8829         * config/riscv/thead.cc (valid_signed_immediate): New helper
8830         function.
8831         (th_memidx_classify_address_modify): New function.
8832         (th_memidx_legitimate_modify_p): Likewise.
8833         (th_memidx_output_modify): Likewise.
8834         (is_memidx_mode): Likewise.
8835         (th_memidx_classify_address_index): Likewise.
8836         (th_memidx_legitimate_index_p): Likewise.
8837         (th_memidx_output_index): Likewise.
8838         (th_classify_address): Likewise.
8839         (th_output_move): Likewise.
8840         (th_print_operand_address): Likewise.
8841         * config/riscv/thead.md (*th_memidx_operand): New splitter.
8842         (*th_memidx_zero_extendqi<SUPERQI:mode>2): New INSN.
8843         (*th_memidx_extendsidi2): Likewise.
8844         (*th_memidx_zero_extendsidi2): Likewise.
8845         (*th_memidx_zero_extendhi<GPR:mode>2): Likewise.
8846         (*th_memidx_extend<SHORT:mode><SUPERQI:mode>2): Likewise.
8847         (*th_memidx_bb_zero_extendsidi2): Likewise.
8848         (*th_memidx_bb_zero_extendhi<GPR:mode>2): Likewise.
8849         (*th_memidx_bb_extendhi<GPR:mode>2): Likewise.
8850         (*th_memidx_bb_extendqi<SUPERQI:mode>2): Likewise.
8851         (TH_M_ANYI): New mode iterator.
8852         (TH_M_NOEXTI): Likewise.
8853         (*th_memidx_I_a): New combiner optimization.
8854         (*th_memidx_I_b): Likewise.
8855         (*th_memidx_I_c): Likewise.
8856         (*th_memidx_US_a): Likewise.
8857         (*th_memidx_US_b): Likewise.
8858         (*th_memidx_US_c): Likewise.
8859         (*th_memidx_UZ_a): Likewise.
8860         (*th_memidx_UZ_b): Likewise.
8861         (*th_memidx_UZ_c): Likewise.
8863 2023-10-31  Carl Love  <cel@us.ibm.com>
8865         * doc/extend.texi (__builtin_bcdsub_le, __builtin_bcdsub_ge): Add
8866         documentation for the builti-ins.
8868 2023-10-31  Vladimir N. Makarov  <vmakarov@redhat.com>
8870         PR rtl-optimization/111971
8871         * lra-constraints.cc: (process_alt_operands): Don't check start
8872         hard regs for regs originated from register variables.
8874 2023-10-31  Robin Dapp  <rdapp@ventanamicro.com>
8876         * config/riscv/autovec.md (<ieee_fmaxmin_op><mode>3): fmax/fmin
8877         expanders.
8878         (cond_<ieee_fmaxmin_op><mode>): Ditto.
8879         (cond_len_<ieee_fmaxmin_op><mode>): Ditto.
8880         (reduc_fmax_scal_<mode>): Ditto.
8881         (reduc_fmin_scal_<mode>): Ditto.
8882         * config/riscv/riscv-v.cc (needs_fp_rounding): Add fmin/fmax.
8883         * config/riscv/vector-iterators.md (fmin): New UNSPEC.
8884         (UNSPEC_VFMIN): Ditto.
8885         * config/riscv/vector.md (@pred_<ieee_fmaxmin_op><mode>): Add
8886         UNSPEC insn patterns.
8887         (@pred_<ieee_fmaxmin_op><mode>_scalar): Ditto.
8889 2023-10-31  Robin Dapp  <rdapp@ventanamicro.com>
8891         PR bootstrap/84402
8892         PR target/111600
8893         * Makefile.in: Handle split insn-emit.cc.
8894         * configure: Regenerate.
8895         * configure.ac: Add --with-insnemit-partitions.
8896         * genemit.cc (output_peephole2_scratches): Print to file instead
8897         of stdout.
8898         (print_code): Ditto.
8899         (gen_rtx_scratch): Ditto.
8900         (gen_exp): Ditto.
8901         (gen_emit_seq): Ditto.
8902         (emit_c_code): Ditto.
8903         (gen_insn): Ditto.
8904         (gen_expand): Ditto.
8905         (gen_split): Ditto.
8906         (output_add_clobbers): Ditto.
8907         (output_added_clobbers_hard_reg_p): Ditto.
8908         (print_overload_arguments): Ditto.
8909         (print_overload_test): Ditto.
8910         (handle_overloaded_code_for): Ditto.
8911         (handle_overloaded_gen): Ditto.
8912         (print_header): New function.
8913         (handle_arg): New function.
8914         (main): Split output into 10 files.
8915         * gensupport.cc (count_patterns): New function.
8916         * gensupport.h (count_patterns): Define.
8917         * read-md.cc (md_reader::print_md_ptr_loc): Add file argument.
8918         * read-md.h (class md_reader): Change definition.
8920 2023-10-31  Alexandre Oliva  <oliva@adacore.com>
8922         PR tree-optimization/111943
8923         * gimple-harden-control-flow.cc: Adjust copyright year.
8924         (rt_bb_visited): Add vfalse and vtrue data members.
8925         Zero-initialize them in the ctor.
8926         (rt_bb_visited::insert_exit_check_on_edge): Upon encountering
8927         abnormal edges, insert initializers for vfalse and vtrue on
8928         entry, and insert the check sequence guarded by a conditional
8929         in the dest block.
8931 2023-10-31  Richard Biener  <rguenther@suse.de>
8933         PR tree-optimization/112305
8934         * tree-scalar-evolution.h (expression_expensive): Adjust.
8935         * tree-scalar-evolution.cc (expression_expensive): Record
8936         when we see a COND_EXPR.
8937         (final_value_replacement_loop): When the replacement contains
8938         a COND_EXPR, rewrite it to defined overflow.
8939         * tree-ssa-loop-ivopts.cc (may_eliminate_iv): Adjust.
8941 2023-10-31  Xi Ruoyao  <xry111@xry111.site>
8943         PR target/112299
8944         * config/loongarch/loongarch-opts.h (HAVE_AS_TLS): Define to 0
8945         if not defined yet.
8947 2023-10-31  Lehua Ding  <lehua.ding@rivai.ai>
8949         * gimple-match.h (gimple_match_op::gimple_match_op):
8950         Add interfaces for more arguments.
8951         (gimple_match_op::set_op): Add interfaces for more arguments.
8952         * match.pd: Add support of combining cond_len_op + vec_cond
8954 2023-10-31  Haochen Jiang  <haochen.jiang@intel.com>
8956         * config/i386/avx512cdintrin.h (target): Push evex512 for
8957         avx512cd.
8958         * config/i386/avx512vlintrin.h (target): Split avx512cdvl part
8959         out from avx512vl.
8960         * config/i386/i386-builtin.def (BDESC): Do not check evex512
8961         for builtins not needed.
8963 2023-10-31  Lehua Ding  <lehua.ding@rivai.ai>
8965         * config/riscv/autovec.md (<float_cvt><mode><vnnconvert>2):
8966         Change to define_expand.
8968 2023-10-31  liuhongt  <hongtao.liu@intel.com>
8970         PR target/112276
8971         * config/i386/mmx.md (*mmx_pblendvb_v8qi_1): Change
8972         define_split to define_insn_and_split to handle
8973         immediate_operand for comparison.
8974         (*mmx_pblendvb_v8qi_2): Ditto.
8975         (*mmx_pblendvb_<mode>_1): Ditto.
8976         (*mmx_pblendvb_v4qi_2): Ditto.
8977         (<code><mode>3): Remove define_split after it.
8978         (<code>v8qi3): Ditto.
8979         (<code><mode>3): Ditto.
8980         (<ode>v2hi3): Ditto.
8982 2023-10-31  Andrew Pinski  <pinskia@gmail.com>
8984         * match.pd (`a == 1 ? b : a OP b`): New pattern.
8985         (`a == -1 ? b : a & b`): New pattern.
8987 2023-10-31  Andrew Pinski  <pinskia@gmail.com>
8989         * match.pd: (`a == 0 ? b : b + a`,
8990         `a == 0 ? b : b - a`): New patterns.
8992 2023-10-31  Neal Frager  <neal.frager@amd.com>
8994         * config/microblaze/microblaze.cc: Fix mcpu version check.
8996 2023-10-30  Mayshao  <mayshao-oc@zhaoxin.com>
8998         * common/config/i386/cpuinfo.h (get_zhaoxin_cpu): Recognize yongfeng.
8999         * common/config/i386/i386-common.cc: Add yongfeng.
9000         * common/config/i386/i386-cpuinfo.h (enum processor_subtypes):
9001         Add ZHAOXIN_FAM7H_YONGFENG.
9002         * config.gcc: Add yongfeng.
9003         * config/i386/driver-i386.cc (host_detect_local_cpu):
9004         Let -march=native recognize yongfeng processors.
9005         * config/i386/i386-c.cc (ix86_target_macros_internal): Add yongfeng.
9006         * config/i386/i386-options.cc (m_YONGFENG): New definition.
9007         (m_ZHAOXIN): Ditto.
9008         * config/i386/i386.h (enum processor_type): Add PROCESSOR_YONGFENG.
9009         * config/i386/i386.md: Add yongfeng.
9010         * config/i386/lujiazui.md: Fix typo.
9011         * config/i386/x86-tune-costs.h (struct processor_costs):
9012         Add yongfeng costs.
9013         * config/i386/x86-tune-sched.cc (ix86_issue_rate): Add yongfeng.
9014         (ix86_adjust_cost): Ditto.
9015         * config/i386/x86-tune.def (X86_TUNE_SCHEDULE): Replace
9016         m_LUJIAZUI with m_ZHAOXIN.
9017         (X86_TUNE_PARTIAL_REG_DEPENDENCY): Ditto.
9018         (X86_TUNE_SSE_PARTIAL_REG_DEPENDENCY): Ditto.
9019         (X86_TUNE_SSE_PARTIAL_REG_FP_CONVERTS_DEPENDENCY): Ditto.
9020         (X86_TUNE_SSE_PARTIAL_REG_CONVERTS_DEPENDENCY): Ditto.
9021         (X86_TUNE_MOVX): Ditto.
9022         (X86_TUNE_MEMORY_MISMATCH_STALL): Ditto.
9023         (X86_TUNE_FUSE_CMP_AND_BRANCH_32): Ditto.
9024         (X86_TUNE_FUSE_CMP_AND_BRANCH_64): Ditto.
9025         (X86_TUNE_FUSE_CMP_AND_BRANCH_SOFLAGS): Ditto.
9026         (X86_TUNE_FUSE_ALU_AND_BRANCH): Ditto.
9027         (X86_TUNE_ACCUMULATE_OUTGOING_ARGS): Ditto.
9028         (X86_TUNE_USE_LEAVE): Ditto.
9029         (X86_TUNE_PUSH_MEMORY): Ditto.
9030         (X86_TUNE_LCP_STALL): Ditto.
9031         (X86_TUNE_INTEGER_DFMODE_MOVES): Ditto.
9032         (X86_TUNE_OPT_AGU): Ditto.
9033         (X86_TUNE_PREFER_KNOWN_REP_MOVSB_STOSB): Ditto.
9034         (X86_TUNE_MISALIGNED_MOVE_STRING_PRO_EPILOGUES): Ditto.
9035         (X86_TUNE_USE_SAHF): Ditto.
9036         (X86_TUNE_USE_BT): Ditto.
9037         (X86_TUNE_AVOID_FALSE_DEP_FOR_BMI): Ditto.
9038         (X86_TUNE_ONE_IF_CONV_INSN): Ditto.
9039         (X86_TUNE_AVOID_MFENCE): Ditto.
9040         (X86_TUNE_EXPAND_ABS): Ditto.
9041         (X86_TUNE_USE_SIMODE_FIOP): Ditto.
9042         (X86_TUNE_USE_FFREEP): Ditto.
9043         (X86_TUNE_EXT_80387_CONSTANTS): Ditto.
9044         (X86_TUNE_SSE_UNALIGNED_LOAD_OPTIMAL): Ditto.
9045         (X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL): Ditto.
9046         (X86_TUNE_SSE_TYPELESS_STORES): Ditto.
9047         (X86_TUNE_SSE_LOAD0_BY_PXOR): Ditto.
9048         (X86_TUNE_USE_GATHER_2PARTS): Add m_YONGFENG.
9049         (X86_TUNE_USE_GATHER_4PARTS): Ditto.
9050         (X86_TUNE_USE_GATHER_8PARTS): Ditto.
9051         (X86_TUNE_AVOID_128FMA_CHAINS): Ditto.
9052         * doc/extend.texi: Add details about yongfeng.
9053         * doc/invoke.texi: Ditto.
9054         * config/i386/yongfeng.md: New file to describe yongfeng processor.
9056 2023-10-30  Martin Jambor  <mjambor@suse.cz>
9058         PR ipa/111157
9059         * ipa-prop.h (struct ipa_argagg_value): Newf flag killed.
9060         * ipa-modref.cc (ipcp_argagg_and_kill_overlap_p): New function.
9061         (update_signature): Mark any any IPA-CP aggregate constants at
9062         positions known to be killed as killed.  Move check that there is
9063         clone_info after this pruning.
9064         * ipa-cp.cc (ipa_argagg_value_list::dump): Dump the killed flag.
9065         (ipa_argagg_value_list::push_adjusted_values): Clear the new flag.
9066         (push_agg_values_from_plats): Likewise.
9067         (ipa_push_agg_values_from_jfunc): Likewise.
9068         (estimate_local_effects): Likewise.
9069         (push_agg_values_for_index_from_edge): Likewise.
9070         * ipa-prop.cc (write_ipcp_transformation_info): Stream the killed
9071         flag.
9072         (read_ipcp_transformation_info): Likewise.
9073         (ipcp_get_aggregate_const): Update comment, assert that encountered
9074         record does not have killed flag set.
9075         (ipcp_transform_function): Prune all aggregate constants with killed
9076         set.
9078 2023-10-30  Martin Jambor  <mjambor@suse.cz>
9080         PR ipa/111157
9081         * ipa-prop.h (ipcp_transformation): New member function template
9082         remove_argaggs_if.
9083         * ipa-sra.cc (zap_useless_ipcp_results): Use remove_argaggs_if to
9084         filter aggreagate constants.
9086 2023-10-30  Roger Sayle  <roger@nextmovesoftware.com>
9088         PR middle-end/101955
9089         * config/arc/arc.md (*extvsi_1_0): New define_insn_and_split
9090         to convert sign extract of the least significant bit into an
9091         AND $1 then a NEG when !TARGET_BARREL_SHIFTER.
9093 2023-10-30  Roger Sayle  <roger@nextmovesoftware.com>
9095         * config/arc/arc.cc (arc_rtx_costs): Improve cost estimates.
9096         Provide reasonable values for SHIFTS and ROTATES by constant
9097         bit counts depending upon TARGET_BARREL_SHIFTER.
9098         (arc_insn_cost): Use insn attributes if the instruction is
9099         recognized.  Avoid calling get_attr_length for type "multi",
9100         i.e. define_insn_and_split patterns without explicit type.
9101         Fall-back to set_rtx_cost for single_set and pattern_cost
9102         otherwise.
9103         * config/arc/arc.h (COSTS_N_BYTES): Define helper macro.
9104         (BRANCH_COST): Improve/correct definition.
9105         (LOGICAL_OP_NON_SHORT_CIRCUIT): Preserve previous behavior.
9107 2023-10-30  Roger Sayle  <roger@nextmovesoftware.com>
9109         * config/arc/arc.cc (arc_split_ashl): Use lsl16 on TARGET_SWAP.
9110         (arc_split_ashr): Use swap and sign-extend on TARGET_SWAP.
9111         (arc_split_lshr): Use lsr16 on TARGET_SWAP.
9112         (arc_split_rotl): Use swap on TARGET_SWAP.
9113         (arc_split_rotr): Likewise.
9114         * config/arc/arc.md (ANY_ROTATE): New code iterator.
9115         (<ANY_ROTATE>si2_cnt16): New define_insn for alternate form of
9116         swap instruction on TARGET_SWAP.
9117         (ashlsi2_cnt16): Rename from *ashlsi16_cnt16 and move earlier.
9118         (lshrsi2_cnt16): New define_insn for LSR16 instruction.
9119         (*ashlsi2_cnt16): See above.
9121 2023-10-30  Richard Ball  <richard.ball@arm.com>
9123         * config/arm/aout.h: Change to use the Lrtx label.
9124         * config/arm/arm.h (CASE_VECTOR_PC_RELATIVE): Remove arm targets
9125         from (!target_pure_code) condition.
9126         (ADDR_VEC_ALIGN): Add align for tables in rodata section.
9127         * config/arm/arm.cc (arm_output_casesi): Alter the function to include
9128         .Lrtx label and remove adr instructions.
9129         * config/arm/arm.md
9130         (arm_casesi_internal): Use force_reg to generate ldr instructions that
9131         would otherwise be out of range, and change rtl to accommodate force reg.
9132         Additionally remove unnecessary register temp.
9133         (casesi): Remove pure code check for Arm.
9134         * config/arm/elf.h (JUMP_TABLES_IN_TEXT_SECTION): Remove arm
9135         targets from JUMP_TABLES_IN_TEXT_SECTION definition.
9137 2023-10-30  Jeevitha Palanisamy  <jeevitha@linux.ibm.com>
9139         PR target/106907
9140         * config/rs6000/rs6000.cc (altivec_expand_vec_perm_const): Change bitwise
9141         xor to an equality and fix comment indentation.
9143 2023-10-30  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
9145         * config/riscv/riscv-protos.h (sew64_scalar_helper): Fix bug.
9146         * config/riscv/riscv-v.cc (sew64_scalar_helper): Ditto.
9147         * config/riscv/vector.md: Ditto.
9149 2023-10-30  liuhongt  <hongtao.liu@intel.com>
9151         PR target/104610
9152         * config/i386/i386-expand.cc (ix86_expand_branch): Handle
9153         512-bit vector with vpcmpeq + kortest.
9154         * config/i386/i386.md (cbranchxi4): New expander.
9155         * config/i386/sse.md: (cbranch<mode>4): Extend to V16SImode
9156         and V8DImode.
9158 2023-10-30  Haochen Gui  <guihaoc@gcc.gnu.org>
9160         PR target/111449
9161         * expr.cc (qi_vector_mode_supported_p): Rename to...
9162         (by_pieces_mode_supported_p): ...this, and extends it to do
9163         the checking for both scalar and vector mode.
9164         (widest_fixed_size_mode_for_size): Call
9165         by_pieces_mode_supported_p to examine the mode.
9166         (op_by_pieces_d::smallest_fixed_size_mode_for_size): Likewise.
9168 2023-10-29  Martin Uecker  <uecker@tugraz.at>
9170         PR tree-optimization/109334
9171         * tree-object-size.cc (parm_object_size): Allow size
9172         computation for implicit access attributes.
9174 2023-10-29  Max Filippov  <jcmvbkbc@gmail.com>
9176         * config/xtensa/xtensa.h (TARGET_SALT): Change HW version from
9177         260000 (which corresponds to RF-2014.0) to 270000 (which
9178         corresponds to RG-2015.0, the release where salt/saltu opcodes
9179         were introduced).
9181 2023-10-29  Pan Li  <pan2.li@intel.com>
9183         * config/riscv/riscv-avlprop.cc (pass_avlprop::execute): Use
9184         reference type to prevent copying.
9186 2023-10-27  Vladimir N. Makarov  <vmakarov@redhat.com>
9188         PR rtl-optimization/112107
9189         * ira-costs.cc: (calculate_equiv_gains): Use NONDEBUG_INSN_P
9190         instead of INSN_P.
9192 2023-10-27  Andrew Stubbs  <ams@codesourcery.com>
9194         PR target/112088
9195         * config/gcn/gcn.cc (gcn_expand_epilogue): Fix kernel epilogue register
9196         conflict.
9198 2023-10-27  Andrew Stubbs  <ams@codesourcery.com>
9200         * config/gcn/gcn-valu.md
9201         (vec_extract<V_1REG:mode><V_1REG_ALT:mode>_nop): Mention "operands" in
9202         condition to silence the warnings.
9203         (vec_extract<V_2REG:mode><V_2REG_ALT:mode>_nop): Likewise.
9204         * config/gcn/gcn.md (*movti_insn): Likewise.
9206 2023-10-27  Richard Sandiford  <richard.sandiford@arm.com>
9208         * recog.cc (insn_propagation::apply_to_pattern_1): Handle shared
9209         ASM_OPERANDS.
9211 2023-10-27  Yangyu Chen  <chenyangyu@isrc.iscas.ac.cn>
9213         * config/riscv/riscv.cc (rocket_tune_info): Fix int_div cost.
9214         (sifive_7_tune_info, thead_c906_tune_info): Likewise.
9216 2023-10-27  Robin Dapp  <rdapp@ventanamicro.com>
9218         * config/riscv/autovec.md (rawmemchr<ANYI:mode>): New expander.
9219         * config/riscv/riscv-protos.h (gen_no_side_effects_vsetvl_rtx):
9220         Define.
9221         (expand_rawmemchr): Define.
9222         * config/riscv/riscv-v.cc (force_vector_length_operand): Remove
9223         static.
9224         (expand_block_move): Move from here...
9225         * config/riscv/riscv-string.cc (expand_block_move): ...to here.
9226         (expand_rawmemchr): Add vectorized expander.
9227         * internal-fn.cc (expand_RAWMEMCHR): Fix typo.
9229 2023-10-27  Vladimir N. Makarov  <vmakarov@redhat.com>
9231         * ira-costs.cc: (get_equiv_regno, calculate_equiv_gains):
9232         Process reg equivalence invariants.
9234 2023-10-27  Uros Bizjak  <ubizjak@gmail.com>
9236         * config/i386/x86-tune.def (X86_TUNE_PARTIAL_MEMORY_READ_STALL):
9237         i386: Fiy typo in "partial_memory_read_stall" tune option.
9239 2023-10-27  Victor Do Nascimento  <victor.donascimento@arm.com>
9241         * config/aarch64/aarch64.cc (aarch64_print_operand): Add
9242         support for CONST_STRING.
9244 2023-10-27  Roger Sayle  <roger@nextmovesoftware.com>
9246         PR target/110551
9247         * config/i386/i386.md (<u>mul<mode><dwi>3): Make operands 1 and
9248         2 take "regiser_operand" and "nonimmediate_operand" respectively.
9249         (<u>mulqihi3): Likewise.
9250         (*bmi2_umul<mode><dwi>3_1): Operand 2 needs to be register_operand
9251         matching the %d constraint.  Use umul_highpart RTX to represent
9252         the highpart multiplication.
9253         (*umul<mode><dwi>3_1):  Operand 2 should use regiser_operand
9254         predicate, and "a" rather than "0" as operands 0 and 2 have
9255         different modes.
9256         (define_split): For mul to mulx conversion, use the new
9257         umul_highpart RTX representation.
9258         (*mul<mode><dwi>3_1):  Operand 1 should be register_operand
9259         and the constraint %a as operands 0 and 1 have different modes.
9260         (*<u>mulqihi3_1): Operand 1 should be register_operand matching
9261         the constraint %0.
9262         (define_peephole2): Providing widening multiplication variants
9263         of the peephole2s that tweak highpart multiplication register
9264         allocation.
9266 2023-10-27  Lewis Hyatt  <lhyatt@gmail.com>
9268         PR preprocessor/87299
9269         * toplev.cc (no_backend): New static global.
9270         (finalize): Remove argument no_backend, which is now a
9271         static global.
9272         (process_options): Likewise.
9273         (do_compile): Likewise.
9274         (target_reinit): Don't do anything in preprocess-only mode.
9275         (toplev::main): Adapt to no_backend change.
9276         (toplev::finalize): Likewise.
9278 2023-10-27  Andrew Pinski  <apinski@marvell.com>
9280         PR tree-optimization/101590
9281         PR tree-optimization/94884
9282         * match.pd (`(X BIT_OP Y) CMP X`): New pattern.
9284 2023-10-27  liuhongt  <hongtao.liu@intel.com>
9286         PR target/103861
9287         * config/i386/i386-expand.cc (ix86_expand_sse_movcc): Handle
9288         V2HF/V2BF/V4HF/V4BFmode.
9289         * config/i386/i386.cc (ix86_get_mask_mode): Return QImode when
9290         data_mode is V4HF/V2HFmode.
9291         * config/i386/mmx.md (vec_cmpv4hfqi): New expander.
9292         (vcond_mask_<mode>v4hi): Ditto.
9293         (vcond_mask_<mode>qi): Ditto.
9294         (vec_cmpv2hfqi): Ditto.
9295         (vcond_mask_<mode>v2hi): Ditto.
9296         (mmx_plendvb_<mode>): Add 2 combine splitters after the
9297         patterns.
9298         (mmx_pblendvb_v8qi): Ditto.
9299         (<code>v2hi3): Add a combine splitter after the pattern.
9300         (<code><mode>3): Ditto.
9301         (<code>v8qi3): Ditto.
9302         (<code><mode>3): Ditto.
9303         * config/i386/sse.md (vcond<mode><mode>): Merge this with ..
9304         (vcond<sseintvecmodelower><mode>): .. this into ..
9305         (vcond<VI2HFBF_AVX512VL:mode><VHF_AVX512VL:mode>): .. this,
9306         and extend to V8BF/V16BF/V32BFmode.
9308 2023-10-26  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
9310         * config/riscv/riscv-opts.h (TARGET_MAX_LMUL): New macro.
9311         * config/riscv/riscv-v.cc (preferred_simd_mode): Adapt macro.
9312         (autovectorize_vector_modes): Ditto.
9313         (can_find_related_mode_p): Ditto.
9315 2023-10-26  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
9317         PR target/111318
9318         PR target/111888
9319         * config.gcc: Add AVL propagation pass.
9320         * config/riscv/riscv-passes.def (INSERT_PASS_AFTER): Ditto.
9321         * config/riscv/riscv-protos.h (make_pass_avlprop): Ditto.
9322         * config/riscv/t-riscv: Ditto.
9323         * config/riscv/riscv-avlprop.cc: New file.
9325 2023-10-26  David Malcolm  <dmalcolm@redhat.com>
9327         * doc/extend.texi (Common Function Attributes): Add
9328         null_terminated_string_arg.
9330 2023-10-26  Andrew Pinski  <pinskia@gmail.com>
9332         PR tree-optimization/111957
9333         * match.pd (`a != C1 ? abs(a) : C2`): New pattern.
9335 2023-10-26  Aldy Hernandez  <aldyh@redhat.com>
9337         * range-op-float.cc (range_operator::fold_range): Delete unused
9338         variable.
9340 2023-10-26  Aldy Hernandez  <aldyh@redhat.com>
9342         * range-op-float.cc (range_operator::fold_range): Remove
9343         superfluous code.
9344         (range_operator::rv_fold): Remove unneeded arguments.
9345         (operator_plus::rv_fold): Same.
9346         (operator_minus::rv_fold): Same.
9347         (operator_mult::rv_fold): Same.
9348         (operator_div::rv_fold): Same.
9349         * range-op-mixed.h: Remove lb, ub, and maybe_nan arguments from
9350         rv_fold methods.
9351         * range-op.h: Same.
9353 2023-10-26  Aldy Hernandez  <aldyh@redhat.com>
9355         * range-op-float.cc (range_operator::fold_range): Pass frange
9356         argument to rv_fold.
9357         (range_operator::rv_fold): Add frange argument.
9358         (operator_plus::rv_fold): Same.
9359         (operator_minus::rv_fold): Same.
9360         (operator_mult::rv_fold): Same.
9361         (operator_div::rv_fold): Same.
9362         * range-op-mixed.h: Add frange argument to rv_fold methods.
9363         * range-op.h: Same.
9365 2023-10-26  Richard Ball  <richard.ball@arm.com>
9367         * config/arm/aout.h (ASM_OUTPUT_ADDR_DIFF_ELT): Add table output
9368         for different machine modes for arm.
9369         * config/arm/arm-protos.h (arm_output_casesi): New prototype.
9370         * config/arm/arm.h (CASE_VECTOR_PC_RELATIVE): Make arm use
9371         ASM_OUTPUT_ADDR_DIFF_ELT.
9372         (CASE_VECTOR_SHORTEN_MODE): Change table size calculation for
9373         TARGET_ARM.
9374         (LABEL_ALIGN_AFTER_BARRIER): Change to accommodate .p2align 2
9375         for TARGET_ARM.
9376         * config/arm/arm.cc (arm_output_casesi): New function.
9377         * config/arm/arm.md (arm_casesi_internal): Change casesi expand
9378         and insn.
9379         for arm to use new function arm_output_casesi.
9381 2023-10-26  Iain Sandoe  <iain@sandoe.co.uk>
9383         * config/darwin.h
9384         (darwin_label_is_anonymous_local_objc_name): Make metadata names
9385         linker-visibile for GNU objective C.
9387 2023-10-26  Vladimir N. Makarov  <vmakarov@redhat.com>
9389         * dwarf2out.cc (reg_loc_descriptor): Use lra_eliminate_regs when
9390         LRA is used.
9391         * ira-costs.cc: Include regset.h.
9392         (equiv_can_be_consumed_p, get_equiv_regno, calculate_equiv_gains):
9393         New functions.
9394         (find_costs_and_classes): Call calculate_equiv_gains and redefine
9395         mem_cost of pseudos with equivs when LRA is used.
9396         * var-tracking.cc: Include ira.h and lra.h.
9397         (vt_initialize): Use lra_eliminate_regs when LRA is used.
9399 2023-10-26  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
9401         * doc/md.texi: Adapt COND_LEN pseudo code.
9403 2023-10-26  Roger Sayle  <roger@nextmovesoftware.com>
9404             Richard Biener  <rguenther@suse.de>
9406         PR rtl-optimization/91865
9407         * combine.cc (make_compound_operation): Avoid creating a
9408         ZERO_EXTEND of a ZERO_EXTEND.
9410 2023-10-26  Jiahao Xu  <xujiahao@loongson.cn>
9412         * config/loongarch/lasx.md (vcond_mask_<ILASX:mode><ILASX:mode>): Change to
9413         (vcond_mask_<mode><mode256_i>): this.
9414         * config/loongarch/lsx.md (vcond_mask_<ILSX:mode><ILSX:mode>): Change to
9415         (vcond_mask_<mode><mode_i>): this.
9417 2023-10-26  Thomas Schwinge  <thomas@codesourcery.com>
9419         * ipa-icf.cc (sem_item::target_supports_symbol_aliases_p):
9420         'gcc_checking_assert (TARGET_SUPPORTS_ALIASES);' before
9421         'return true;'.
9422         * ipa-visibility.cc (function_and_variable_visibility): Change
9423         '#ifdef ASM_OUTPUT_DEF' to 'if (TARGET_SUPPORTS_ALIASES)'.
9424         * varasm.cc (output_constant_pool_contents)
9425         [#ifdef ASM_OUTPUT_DEF]:
9426         'gcc_checking_assert (TARGET_SUPPORTS_ALIASES);'.
9427         (do_assemble_alias) [#ifdef ASM_OUTPUT_DEF]:
9428         'if (!TARGET_SUPPORTS_ALIASES)',
9429         'gcc_checking_assert (seen_error ());'.
9430         (assemble_alias): Change '#if !defined (ASM_OUTPUT_DEF)' to
9431         'if (!TARGET_SUPPORTS_ALIASES)'.
9432         (default_asm_output_anchor):
9433         'gcc_checking_assert (TARGET_SUPPORTS_ALIASES);'.
9435 2023-10-26  Alexandre Oliva  <oliva@adacore.com>
9437         PR tree-optimization/111520
9438         * gimple-harden-conditionals.cc
9439         (pass_harden_compares::execute): Set EH edge probability and
9440         EH block execution count.
9442 2023-10-26  Alexandre Oliva  <oliva@adacore.com>
9444         * tree-eh.h (make_eh_edges): Rename to...
9445         (make_eh_edge): ... this.
9446         * tree-eh.cc: Likewise.  Adjust all callers...
9447         * gimple-harden-conditionals.cc: ... here, ...
9448         * gimple-harden-control-flow.cc: ... here, ...
9449         * tree-cfg.cc: ... here, ...
9450         * tree-inline.cc: ... and here.
9452 2023-10-25  Iain Sandoe  <iain@sandoe.co.uk>
9454         * config/darwin.cc (darwin_override_options): Handle fPIE.
9456 2023-10-25  Iain Sandoe  <iain@sandoe.co.uk>
9458         * config.gcc: Use -E to to sed to indicate that we are using
9459         extended REs.
9461 2023-10-25  Jason Merrill  <jason@redhat.com>
9463         * tree-core.h (struct tree_base): Update address_space comment.
9465 2023-10-25  Wilco Dijkstra  <wilco.dijkstra@arm.com>
9467         * config/aarch64/aarch64.cc (aarch64_internal_mov_immediate)
9468         Add support for immediates using MOV/EOR bitmask.
9470 2023-10-25  Uros Bizjak  <ubizjak@gmail.com>
9472         PR target/111698
9473         * config/i386/x86-tune.def (X86_TUNE_PARTIAL_MEMORY_READ_STALL):
9474         New tune.
9475         * config/i386/i386.h (TARGET_PARTIAL_MEMORY_READ_STALL): New macro.
9476         * config/i386/i386.md: New peephole pattern to narrow test
9477         instructions with immediate operands that test memory locations
9478         for zero.
9480 2023-10-25  Andrew MacLeod  <amacleod@redhat.com>
9482         * value-range.cc (irange::union_append): New.
9483         (irange::union_): Call union_append when appropriate.
9484         * value-range.h (irange::union_append): New prototype.
9486 2023-10-25  Chenghui Pan  <panchenghui@loongson.cn>
9488         * config/loongarch/lasxintrin.h (__lasx_xvftintrnel_l_s): Fix comments.
9489         (__lasx_xvfrintrne_s): Ditto.
9490         (__lasx_xvfrintrne_d): Ditto.
9491         (__lasx_xvfrintrz_s): Ditto.
9492         (__lasx_xvfrintrz_d): Ditto.
9493         (__lasx_xvfrintrp_s): Ditto.
9494         (__lasx_xvfrintrp_d): Ditto.
9495         (__lasx_xvfrintrm_s): Ditto.
9496         (__lasx_xvfrintrm_d): Ditto.
9497         * config/loongarch/lsxintrin.h (__lsx_vftintrneh_l_s): Ditto.
9498         (__lsx_vfrintrne_s): Ditto.
9499         (__lsx_vfrintrne_d): Ditto.
9500         (__lsx_vfrintrz_s): Ditto.
9501         (__lsx_vfrintrz_d): Ditto.
9502         (__lsx_vfrintrp_s): Ditto.
9503         (__lsx_vfrintrp_d): Ditto.
9504         (__lsx_vfrintrm_s): Ditto.
9505         (__lsx_vfrintrm_d): Ditto.
9507 2023-10-25  chenxiaolong  <chenxiaolong@loongson.cn>
9509         * config/loongarch/loongarch.md (get_thread_pointer<mode>):Adds the
9510         instruction template corresponding to the __builtin_thread_pointer
9511         function.
9512         * doc/extend.texi:Add the __builtin_thread_pointer function support
9513         description to the documentation.
9515 2023-10-25  Richard Sandiford  <richard.sandiford@arm.com>
9517         * Makefile.in (OBJS): Add rtl-ssa/movement.o.
9518         * rtl-ssa/access-utils.h (accesses_include_nonfixed_hard_registers)
9519         (single_set_info): New functions.
9520         (remove_uses_of_def, accesses_reference_same_resource): Declare.
9521         (insn_clobbers_resources): Likewise.
9522         * rtl-ssa/accesses.cc (rtl_ssa::remove_uses_of_def): New function.
9523         (rtl_ssa::accesses_reference_same_resource): Likewise.
9524         (rtl_ssa::insn_clobbers_resources): Likewise.
9525         * rtl-ssa/movement.h (can_move_insn_p): Declare.
9526         * rtl-ssa/movement.cc: New file.
9528 2023-10-25  Richard Sandiford  <richard.sandiford@arm.com>
9530         * rtl-ssa/functions.h (function_info::remains_available_at_insn):
9531         New member function.
9532         * rtl-ssa/accesses.cc (function_info::remains_available_at_insn):
9533         Likewise.
9534         (function_info::make_use_available): Avoid false negatives for
9535         queries within an EBB.
9537 2023-10-25  Richard Sandiford  <richard.sandiford@arm.com>
9539         * rtl-ssa/changes.cc: Include sreal.h.
9540         (rtl_ssa::changes_are_worthwhile): When optimizing for speed,
9541         scale the cost of each instruction by its execution frequency.
9543 2023-10-25  Richard Sandiford  <richard.sandiford@arm.com>
9545         * rtl-ssa/access-utils.h (next_call_clobbers): New function.
9546         (is_single_dominating_def, remains_available_on_exit): Replace with...
9547         * rtl-ssa/functions.h (function_info::is_single_dominating_def)
9548         (function_info::remains_available_on_exit): ...these new member
9549         functions.
9550         (function_info::m_clobbered_by_calls): New member variable.
9551         * rtl-ssa/functions.cc (function_info::function_info): Explicitly
9552         initialize m_clobbered_by_calls.
9553         * rtl-ssa/insns.cc (function_info::record_call_clobbers): Update
9554         m_clobbered_by_calls for each call-clobber note.
9555         * rtl-ssa/member-fns.inl (function_info::is_single_dominating_def):
9556         New function.  Check for call clobbers.
9557         * rtl-ssa/accesses.cc (function_info::remains_available_on_exit):
9558         Likewise.
9560 2023-10-25  Richard Sandiford  <richard.sandiford@arm.com>
9562         * rtl-ssa/internals.h (build_info::exit_block_dominator): New
9563         member variable.
9564         * rtl-ssa/blocks.cc (build_info::build_info): Initialize it.
9565         (bb_walker::bb_walker): Use it, moving the computation of the
9566         dominator to...
9567         (function_info::process_all_blocks): ...here.
9568         (function_info::place_phis): Add dominance frontiers for the
9569         exit block.
9571 2023-10-25  Richard Sandiford  <richard.sandiford@arm.com>
9573         * rtl-ssa/functions.h (function_info::process_uses_of_deleted_def):
9574         New member function.
9575         * rtl-ssa/changes.cc (function_info::process_uses_of_deleted_def):
9576         Likewise.
9577         (function_info::change_insns): Use it.
9579 2023-10-25  Richard Sandiford  <richard.sandiford@arm.com>
9581         * rtl-ssa/changes.cc (function_info::finalize_new_accesses):
9582         If a change describes a set of memory, ensure that that set
9583         is kept, regardless of the insn pattern.
9585 2023-10-25  Richard Sandiford  <richard.sandiford@arm.com>
9587         * rtl-ssa/changes.cc (function_info::apply_changes_to_insn): Remove
9588         call to add_reg_unused_notes and instead...
9589         (function_info::change_insns): ...use a separate loop here.
9591 2023-10-25  Richard Sandiford  <richard.sandiford@arm.com>
9593         * rtl-ssa/blocks.cc (function_info::add_artificial_accesses): Force
9594         global registers to be live on exit.  Handle any block with zero
9595         successors like an exit block.
9597 2023-10-25  Thomas Schwinge  <thomas@codesourcery.com>
9599         * omp-oacc-kernels-decompose.cc (omp_oacc_kernels_decompose_1):
9600         Handle 'OMP_CLAUSE_SELF' like 'OMP_CLAUSE_IF'.
9601         * omp-expand.cc (expand_omp_target): Handle 'OMP_CLAUSE_SELF' for
9602         'GF_OMP_TARGET_KIND_OACC_DATA_KERNELS'.
9604 2023-10-25  Thomas Schwinge  <thomas@codesourcery.com>
9606         * tree-core.h (omp_clause_code): Move 'OMP_CLAUSE_SELF' after
9607         'OMP_CLAUSE_IF'.
9608         * tree-pretty-print.cc (dump_omp_clause): Adjust.
9609         * tree.cc (omp_clause_num_ops, omp_clause_code_name): Likewise.
9610         * tree.h: Likewise.
9612 2023-10-25  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
9614         * config/riscv/riscv-protos.h (has_vl_op): Export from riscv-vsetvl to riscv-v
9615         (tail_agnostic_p): Ditto.
9616         (validate_change_or_fail): Ditto.
9617         (nonvlmax_avl_type_p): Ditto.
9618         (vlmax_avl_p): Ditto.
9619         (get_sew): Ditto.
9620         (enum vlmul_type): Ditto.
9621         (count_regno_occurrences): Ditto.
9622         * config/riscv/riscv-v.cc (has_vl_op): Ditto.
9623         (get_default_ta): Ditto.
9624         (tail_agnostic_p): Ditto.
9625         (validate_change_or_fail): Ditto.
9626         (nonvlmax_avl_type_p): Ditto.
9627         (vlmax_avl_p): Ditto.
9628         (get_sew): Ditto.
9629         (enum vlmul_type): Ditto.
9630         (get_vlmul): Ditto.
9631         (count_regno_occurrences): Ditto.
9632         * config/riscv/riscv-vsetvl.cc (vlmax_avl_p): Ditto.
9633         (has_vl_op): Ditto.
9634         (get_sew): Ditto.
9635         (get_vlmul): Ditto.
9636         (get_default_ta): Ditto.
9637         (tail_agnostic_p): Ditto.
9638         (count_regno_occurrences): Ditto.
9639         (validate_change_or_fail): Ditto.
9641 2023-10-25  Chung-Lin Tang  <cltang@codesourcery.com>
9643         * gimplify.cc (gimplify_scan_omp_clauses): Add OMP_CLAUSE_SELF case.
9644         (gimplify_adjust_omp_clauses): Likewise.
9645         * omp-expand.cc (expand_omp_target): Add OMP_CLAUSE_SELF expansion code,
9646         * omp-low.cc (scan_sharing_clauses): Add OMP_CLAUSE_SELF case.
9647         * tree-core.h (enum omp_clause_code): Add OMP_CLAUSE_SELF enum.
9648         * tree-nested.cc (convert_nonlocal_omp_clauses): Add OMP_CLAUSE_SELF
9649         case.
9650         (convert_local_omp_clauses): Likewise.
9651         * tree-pretty-print.cc (dump_omp_clause): Add OMP_CLAUSE_SELF case.
9652         * tree.cc (omp_clause_num_ops): Add OMP_CLAUSE_SELF entry.
9653         (omp_clause_code_name): Likewise.
9654         * tree.h (OMP_CLAUSE_SELF_EXPR): New macro.
9656 2023-10-25  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
9658         * config/riscv/riscv-protos.h (vlmax_avl_type_p): New function.
9659         * config/riscv/riscv-v.cc (vlmax_avl_type_p): Ditto.
9660         * config/riscv/riscv-vsetvl.cc (get_avl): Adapt function.
9661         * config/riscv/vector.md: Change avl_type into avl_type_idx.
9663 2023-10-24  Richard Sandiford  <richard.sandiford@arm.com>
9665         * recog.cc (constrain_operands): Remove UNARY_P handling.
9666         * reload.cc (find_reloads): Likewise.
9668 2023-10-24  Jose E. Marchesi  <jose.marchesi@oracle.com>
9670         * gcov-io.h: Fix record length encoding in comment.
9672 2023-10-24  Roger Sayle  <roger@nextmovesoftware.com>
9674         * config/i386/i386-features.cc (compute_convert_gain): Provide
9675         more accurate values (sizes) for inter-unit moves with -Os.
9677 2023-10-24  Roger Sayle  <roger@nextmovesoftware.com>
9678             Claudiu Zissulescu  <claziss@gmail.com>
9680         * config/arc/arc-protos.h (output_shift): Rename to...
9681         (output_shift_loop): Tweak API to take an explicit rtx_code.
9682         (arc_split_ashl): Prototype new function here.
9683         (arc_split_ashr): Likewise.
9684         (arc_split_lshr): Likewise.
9685         (arc_split_rotl): Likewise.
9686         (arc_split_rotr): Likewise.
9687         * config/arc/arc.cc (output_shift): Delete local prototype.  Rename.
9688         (output_shift_loop): New function replacing output_shift to output
9689         a zero overheap loop for SImode shifts and rotates on ARC targets
9690         without barrel shifter (i.e. no hardware support for these insns).
9691         (arc_split_ashl): New helper function to split *ashlsi3_nobs.
9692         (arc_split_ashr): New helper function to split *ashrsi3_nobs.
9693         (arc_split_lshr): New helper function to split *lshrsi3_nobs.
9694         (arc_split_rotl): New helper function to split *rotlsi3_nobs.
9695         (arc_split_rotr): New helper function to split *rotrsi3_nobs.
9696         (arc_print_operand): Correct whitespace.
9697         (arc_rtx_costs): Likewise.
9698         (hwloop_optimize): Likewise.
9699         * config/arc/arc.md (ANY_SHIFT_ROTATE): New define_code_iterator.
9700         (define_code_attr insn): New code attribute to map to pattern name.
9701         (<ANY_SHIFT_ROTATE>si3): New expander unifying previous ashlsi3,
9702         ashrsi3 and lshrsi3 define_expands.  Adds rotlsi3 and rotrsi3.
9703         (*<ANY_SHIFT_ROTATE>si3_nobs): New define_insn_and_split that
9704         unifies the previous *ashlsi3_nobs, *ashrsi3_nobs and *lshrsi3_nobs.
9705         We now call arc_split_<insn> in arc.cc to implement each split.
9706         (shift_si3): Delete define_insn, all shifts/rotates are now split.
9707         (shift_si3_loop): Rename to...
9708         (<insn>si3_loop): define_insn to handle loop implementations of
9709         SImode shifts and rotates, calling ouput_shift_loop for template.
9710         (rotrsi3): Rename to...
9711         (*rotrsi3_insn): define_insn for TARGET_BARREL_SHIFTER's ror.
9712         (*rotlsi3): New define_insn_and_split to transform left rotates
9713         into right rotates before reload.
9714         (rotlsi3_cnt1): New define_insn_and_split to implement a left
9715         rotate by one bit using an add.f followed by an adc.
9716         * config/arc/predicates.md (shiftr4_operator): Delete.
9718 2023-10-24  Claudiu Zissulescu  <claziss@gmail.com>
9720         * config/arc/arc.md (mulsi3_700): Update pattern.
9721         (mulsi3_v2): Likewise.
9722         * config/arc/predicates.md (mpy_dest_reg_operand): Remove it.
9724 2023-10-24  Andrew Pinski  <pinskia@gmail.com>
9726         PR tree-optimization/104376
9727         PR tree-optimization/101541
9728         * tree-ssa-phiopt.cc (factor_out_conditional_operation):
9729         Allow nop conversions even if it is defined by a statement
9730         inside the conditional.
9732 2023-10-24  Andrew Pinski  <pinskia@gmail.com>
9734         PR tree-optimization/111913
9735         * match.pd (`popcount(X&Y) + popcount(X|Y)`): Add the resulting
9736         type for popcount.
9738 2023-10-24  Richard Sandiford  <richard.sandiford@arm.com>
9740         * rtl-ssa/blocks.cc (function_info::create_degenerate_phi): Check
9741         whether the requested phi already exists.
9743 2023-10-24  Richard Sandiford  <richard.sandiford@arm.com>
9745         * rtl-ssa.h: Include cfgbuild.h.
9746         * rtl-ssa/movement.h (can_insert_after): Replace is_jump with the
9747         more comprehensive control_flow_insn_p.
9749 2023-10-24  Richard Sandiford  <richard.sandiford@arm.com>
9751         * rtl-ssa/changes.cc (function_info::perform_pending_updates): Check
9752         whether an insn has been replaced by a note.
9754 2023-10-24  Richard Sandiford  <richard.sandiford@arm.com>
9756         * rtl-ssa/member-fns.inl (first_any_insn_use): Handle null
9757         m_first_use.
9759 2023-10-24  Richard Sandiford  <richard.sandiford@arm.com>
9761         * config/i386/i386-expand.cc (ix86_split_mmx_punpck): Allow the
9762         destination to be wider than the sources.  Take the mode from the
9763         first source.
9764         (ix86_expand_sse_extend): Pass the destination directly to
9765         ix86_split_mmx_punpck, rather than using a fresh register that
9766         is half the size.
9768 2023-10-24  Richard Sandiford  <richard.sandiford@arm.com>
9770         * config/i386/predicates.md (aeswidekl_operation): Protect
9771         REGNO check with REG_P.
9773 2023-10-24  Richard Sandiford  <richard.sandiford@arm.com>
9775         * config/aarch64/aarch64.cc (aarch64_insn_cost): New function.
9776         (TARGET_INSN_COST): Define.
9778 2023-10-24  Richard Sandiford  <richard.sandiford@arm.com>
9780         * config/aarch64/atomics.md (aarch64_atomic_exchange<mode>): Require
9781         !TARGET_LSE.
9783 2023-10-24  xuli  <xuli1@eswincomputing.com>
9785         PR target/111935
9786         * config/riscv/riscv-vector-builtins-bases.cc: fix bug.
9788 2023-10-24  Mark Harmstone  <mark@harmstone.com>
9790         * opts.cc (debug_type_names): Remove stabs and xcoff.
9791         (df_set_names): Adjust.
9793 2023-10-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
9795         PR target/111947
9796         * config/riscv/riscv-vsetvl.cc (pre_vsetvl::compute_lcm_local_properties): Add REGNO check.
9798 2023-10-23  Lewis Hyatt  <lhyatt@gmail.com>
9800         PR preprocessor/36887
9801         * toplev.h (ident_hash_extra): Declare...
9802         * stringpool.cc (ident_hash_extra): ...this new global variable.
9803         (init_stringpool): Handle ident_hash_extra as well as ident_hash.
9804         (ggc_mark_stringpool): Likewise.
9805         (ggc_purge_stringpool): Likewise.
9806         (struct string_pool_data_extra): New struct.
9807         (spd2): New GC root variable.
9808         (gt_pch_save_stringpool): Use spd2 to handle ident_hash_extra,
9809         analogous to how spd is used to handle ident_hash.
9810         (gt_pch_restore_stringpool): Likewise.
9812 2023-10-23  Robin Dapp  <rdapp@ventanamicro.com>
9814         PR tree-optimization/111794
9815         * tree-vect-stmts.cc (vectorizable_assignment): Add
9816         same-precision exception for dest and source.
9818 2023-10-23  Robin Dapp  <rdapp@ventanamicro.com>
9820         * config/riscv/autovec.md (popcount<mode>2): New expander.
9821         * config/riscv/riscv-protos.h (expand_popcount): Define.
9822         * config/riscv/riscv-v.cc (expand_popcount): Vectorize popcount
9823         with the WWG algorithm.
9825 2023-10-23  Richard Biener  <rguenther@suse.de>
9827         PR tree-optimization/111916
9828         * tree-sra.cc (sra_modify_assign): Do not lower all
9829         BIT_FIELD_REF reads that are sra_handled_bf_read_p.
9831 2023-10-23  Richard Biener  <rguenther@suse.de>
9833         PR tree-optimization/111915
9834         * tree-vect-slp.cc (vect_build_slp_tree_1): Check all
9835         accesses are either grouped or not.
9837 2023-10-23  Richard Biener  <rguenther@suse.de>
9839         PR ipa/111914
9840         * tree-inline.cc (setup_one_parameter): Move code emitting
9841         a dummy load when not optimizing ...
9842         (initialize_inlined_parameters): ... here to after when
9843         we remapped the parameter type.
9845 2023-10-23  Oleg Endo  <olegendo@gcc.gnu.org>
9847         PR target/111001
9848         * config/sh/sh_treg_combine.cc (sh_treg_combine::record_set_of_reg):
9849         Skip over nop move insns.
9851 2023-10-23  Tamar Christina  <tamar.christina@arm.com>
9853         PR tree-optimization/111860
9854         * tree-vect-loop-manip.cc (slpeel_tree_duplicate_loop_to_edge_cfg):
9855         Drop .MEM nodes only.
9857 2023-10-23  Andrew Pinski  <apinski@marvell.com>
9859         * match.pd (`(A - B) CMP 0 ? (A - B) : (B - A)`):
9860         New patterns.
9862 2023-10-23  Andrew Pinski  <pinskia@gmail.com>
9864         * convert.cc (convert_to_pointer_1): Return error_mark_node
9865         after an error.
9866         (convert_to_real_1): Likewise.
9867         (convert_to_integer_1): Likewise.
9868         (convert_to_complex_1): Likewise.
9870 2023-10-23  Andrew Pinski  <pinskia@gmail.com>
9872         PR c/111903
9873         * convert.cc (convert_to_complex_1): Return
9874         error_mark_node if either convert was an error
9875         when converting from a scalar.
9877 2023-10-23  Richard Biener  <rguenther@suse.de>
9879         PR tree-optimization/111917
9880         * tree-ssa-loop-unswitch.cc (hoist_guard): Always insert
9881         new conditional after last stmt.
9883 2023-10-23  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
9885         PR target/111927
9886         * config/riscv/riscv-vsetvl.cc: Fix bug.
9888 2023-10-23  Pan Li  <pan2.li@intel.com>
9890         * config/riscv/riscv-v.cc (emit_vec_cvt_x_f_rtz): Add insn type
9891         arg.
9892         (expand_vec_trunc): Take MA instead of MU for cvt_x_f_rtz.
9894 2023-10-23  Xi Ruoyao  <xry111@xry111.site>
9896         * doc/invoke.texi (-mexplicit-relocs=style): Document.
9897         (-mexplicit-relocs): Document as an alias of
9898         -mexplicit-relocs=always.
9899         (-mno-explicit-relocs): Document as an alias of
9900         -mexplicit-relocs=none.
9901         (-mcmodel=extreme): Mention -mexplicit-relocs=always instead of
9902         -mexplicit-relocs.
9904 2023-10-23  Xi Ruoyao  <xry111@xry111.site>
9906         * config/loongarch/predicates.md (symbolic_pcrel_operand): New
9907         predicate.
9908         * config/loongarch/loongarch.md (define_peephole2): Optimize
9909         la.local + ld/st to pcalau12i + ld/st if the address is only used
9910         once if -mexplicit-relocs=auto and -mcmodel=normal or medium.
9912 2023-10-23  Xi Ruoyao  <xry111@xry111.site>
9914         * config/loongarch/loongarch.cc (loongarch_explicit_relocs_p):
9915         Return true for TLS symbol types if -mexplicit-relocs=auto.
9916         (loongarch_call_tls_get_addr): Replace TARGET_EXPLICIT_RELOCS
9917         with la_opt_explicit_relocs != EXPLICIT_RELOCS_NONE.
9918         (loongarch_legitimize_tls_address): Likewise.
9919         * config/loongarch/loongarch.md (@tls_low<mode>): Remove
9920         TARGET_EXPLICIT_RELOCS from insn condition.
9922 2023-10-23  Xi Ruoyao  <xry111@xry111.site>
9924         * config/loongarch/loongarch-protos.h
9925         (loongarch_explicit_relocs_p): Declare new function.
9926         * config/loongarch/loongarch.cc (loongarch_explicit_relocs_p):
9927         Implement.
9928         (loongarch_symbol_insns): Call loongarch_explicit_relocs_p for
9929         SYMBOL_GOT_DISP, instead of using TARGET_EXPLICIT_RELOCS.
9930         (loongarch_split_symbol): Call loongarch_explicit_relocs_p for
9931         deciding if return early, instead of using
9932         TARGET_EXPLICIT_RELOCS.
9933         (loongarch_output_move): CAll loongarch_explicit_relocs_p
9934         instead of using TARGET_EXPLICIT_RELOCS.
9935         * config/loongarch/loongarch.md (*low<mode>): Remove
9936         TARGET_EXPLICIT_RELOCS from insn condition.
9937         (@ld_from_got<mode>): Likewise.
9938         * config/loongarch/predicates.md (move_operand): Call
9939         loongarch_explicit_relocs_p instead of using
9940         TARGET_EXPLICIT_RELOCS.
9942 2023-10-23  Xi Ruoyao  <xry111@xry111.site>
9944         * config/loongarch/genopts/loongarch-strings: Add strings for
9945         -mexplicit-relocs={auto,none,always}.
9946         * config/loongarch/genopts/loongarch.opt.in: Add options for
9947         -mexplicit-relocs={auto,none,always}.
9948         * config/loongarch/loongarch-str.h: Regenerate.
9949         * config/loongarch/loongarch.opt: Regenerate.
9950         * config/loongarch/loongarch-def.h
9951         (EXPLICIT_RELOCS_AUTO): Define.
9952         (EXPLICIT_RELOCS_NONE): Define.
9953         (EXPLICIT_RELOCS_ALWAYS): Define.
9954         (N_EXPLICIT_RELOCS_TYPES): Define.
9955         * config/loongarch/loongarch.cc
9956         (loongarch_option_override_internal): Error out if the old-style
9957         -m[no-]explicit-relocs option is used with
9958         -mexplicit-relocs={auto,none,always} together.  Map
9959         -mno-explicit-relocs to -mexplicit-relocs=none and
9960         -mexplicit-relocs to -mexplicit-relocs=always for backward
9961         compatibility.  Set a proper default for -mexplicit-relocs=
9962         based on configure-time probed linker capability.  Update a
9963         diagnostic message to mention -mexplicit-relocs=always instead
9964         of the old-style -mexplicit-relocs.
9965         (loongarch_handle_model_attribute): Update a diagnostic message
9966         to mention -mexplicit-relocs=always instead of the old-style
9967         -mexplicit-relocs.
9968         * config/loongarch/loongarch.h (TARGET_EXPLICIT_RELOCS): Define.
9970 2023-10-23  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
9972         * config/riscv/riscv-vsetvl.cc (pre_vsetvl::fuse_local_vsetvl_info): Fix typo.
9973         (pre_vsetvl::pre_global_vsetvl_info): Ditto.
9975 2023-10-23  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
9977         * config/riscv/vector.md: Fix avl_type attribute of tuple mov<mode>.
9979 2023-10-23  Kewen Lin  <linkw@linux.ibm.com>
9981         PR tree-optimization/111784
9982         * tree-vect-stmts.cc (vectorizable_store): Adjust costing way for
9983         adjacent vector stores, by costing them with the total number
9984         rather than costing them one by one.
9985         (vectorizable_load): Adjust costing way for adjacent vector
9986         loads, by costing them with the total number rather than costing
9987         them one by one.
9989 2023-10-23  Haochen Jiang  <haochen.jiang@intel.com>
9991         PR target/111753
9992         * config/i386/i386.cc (ix86_standard_x87sse_constant_load_p):
9993         Do not split to xmm16+ when !TARGET_AVX512VL.
9995 2023-10-23  Pan Li  <pan2.li@intel.com>
9997         * config/riscv/riscv-protos.h (enum insn_type): Add new type
9998         values.
9999         * config/riscv/riscv-v.cc (emit_vec_cvt_x_f): Add undef merge
10000         operand handling.
10001         (expand_vec_ceil): Take MA instead of MU for tmp register.
10002         (expand_vec_floor): Ditto.
10003         (expand_vec_nearbyint): Ditto.
10004         (expand_vec_rint): Ditto.
10005         (expand_vec_round): Ditto.
10006         (expand_vec_roundeven): Ditto.
10008 2023-10-23  Lulu Cheng  <chenglulu@loongson.cn>
10010         * config/loongarch/loongarch.h (CLEAR_INSN_CACHE): New definition.
10012 2023-10-23  Haochen Gui  <guihaoc@gcc.gnu.org>
10014         PR target/111449
10015         * expr.cc (can_use_qi_vectors): New function to return true if
10016         we know how to implement OP using vectors of bytes.
10017         (qi_vector_mode_supported_p): New function to check if optabs
10018         exists for the mode and certain by pieces operations.
10019         (widest_fixed_size_mode_for_size): Replace the second argument
10020         with the type of by pieces operations.  Call can_use_qi_vectors
10021         and qi_vector_mode_supported_p to do the check.  Call
10022         scalar_mode_supported_p to check if the scalar mode is supported.
10023         (by_pieces_ninsns): Pass the type of by pieces operation to
10024         widest_fixed_size_mode_for_size.
10025         (class op_by_pieces_d): Remove m_qi_vector_mode.  Add m_op to
10026         record the type of by pieces operations.
10027         (op_by_pieces_d::op_by_pieces_d): Change last argument to the
10028         type of by pieces operations, initialize m_op with it.  Pass
10029         m_op to function widest_fixed_size_mode_for_size.
10030         (op_by_pieces_d::get_usable_mode): Pass m_op to function
10031         widest_fixed_size_mode_for_size.
10032         (op_by_pieces_d::smallest_fixed_size_mode_for_size): Call
10033         can_use_qi_vectors and qi_vector_mode_supported_p to do the
10034         check.
10035         (op_by_pieces_d::run): Pass m_op to function
10036         widest_fixed_size_mode_for_size.
10037         (move_by_pieces_d::move_by_pieces_d): Set m_op to MOVE_BY_PIECES.
10038         (store_by_pieces_d::store_by_pieces_d): Set m_op with the op.
10039         (can_store_by_pieces): Pass the type of by pieces operations to
10040         widest_fixed_size_mode_for_size.
10041         (clear_by_pieces): Initialize class store_by_pieces_d with
10042         CLEAR_BY_PIECES.
10043         (compare_by_pieces_d::compare_by_pieces_d): Set m_op to
10044         COMPARE_BY_PIECES.
10046 2023-10-23  liuhongt  <hongtao.liu@intel.com>
10048         PR tree-optimization/111820
10049         PR tree-optimization/111833
10050         * tree-vect-loop-manip.cc (vect_can_peel_nonlinear_iv_p): Give
10051         up vectorization for nonlinear iv vect_step_op_mul when
10052         step_expr is not exact_log2 and niters is greater than
10053         TYPE_PRECISION (TREE_TYPE (step_expr)). Also don't vectorize
10054         for nagative niters_skip which will be used by fully masked
10055         loop.
10056         (vect_can_advance_ivs_p): Pass whole phi_info to
10057         vect_can_peel_nonlinear_iv_p.
10058         * tree-vect-loop.cc (vect_peel_nonlinear_iv_init): Optimize
10059         init_expr * pow (step_expr, skipn) to init_expr
10060         << (log2 (step_expr) * skipn) when step_expr is exact_log2.
10062 2023-10-23  liuhongt  <hongtao.liu@intel.com>
10064         * config/i386/mmx.md (mmx_pinsrw): Remove.
10066 2023-10-22  Andrew Pinski  <pinskia@gmail.com>
10068         PR target/110986
10069         * config/aarch64/aarch64.md (*cmov<mode>_insn_insv): New pattern.
10070         (*cmov_uxtw_insn_insv): Likewise.
10072 2023-10-22  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
10074         * doc/invoke.texi: Document the new -nodefaultrpaths option.
10075         * doc/install.texi: Document the new --with-darwin-extra-rpath
10076         option.
10078 2023-10-22  Iain Sandoe  <iain@sandoe.co.uk>
10080         * Makefile.in: set ENABLE_DARWIN_AT_RPATH in site.tmp.
10082 2023-10-22  Iain Sandoe  <iain@sandoe.co.uk>
10084         * configure.ac: Add --with-darwin-extra-rpath option.
10085         * config/darwin.h: Handle DARWIN_EXTRA_RPATH.
10086         * config.in: Regenerate.
10087         * configure: Regenerate.
10089 2023-10-22  Iain Sandoe  <iain@sandoe.co.uk>
10091         * aclocal.m4: Regenerate.
10092         * configure: Regenerate.
10093         * configure.ac: Handle Darwin rpaths.
10094         * config/darwin.h: Handle Darwin rpaths.
10095         * config/darwin.opt: Handle Darwin rpaths.
10096         * Makefile.in:  Handle Darwin rpaths.
10098 2023-10-22  Iain Sandoe  <iain@sandoe.co.uk>
10100         * gcc.cc (RUNPATH_OPTION): New.
10101         (do_spec_1): Provide '%P' as a spec to insert rpaths for
10102         each compiler startfile path.
10104 2023-10-22  Andrew Burgess  <andrew.burgess@embecosm.com>
10105             Maxim Blinov  <maxim.blinov@embecosm.com>
10106             Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
10107             Iain Sandoe  <iain@sandoe.co.uk>
10109         * config.gcc: Default to heap trampolines on macOS 11 and above.
10110         * config/i386/darwin.h: Define X86_CUSTOM_FUNCTION_TEST.
10111         * config/i386/i386.h: Define X86_CUSTOM_FUNCTION_TEST.
10112         * config/i386/i386.cc: Use X86_CUSTOM_FUNCTION_TEST.
10114 2023-10-22  Andrew Burgess  <andrew.burgess@embecosm.com>
10115             Maxim Blinov  <maxim.blinov@embecosm.com>
10116             Iain Sandoe  <iain@sandoe.co.uk>
10117             Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
10119         * builtins.def (BUILT_IN_NESTED_PTR_CREATED): Define.
10120         (BUILT_IN_NESTED_PTR_DELETED): Ditto.
10121         * common.opt (ftrampoline-impl): Add option to control
10122         generation of trampoline instantiation (heap or stack).
10123         * coretypes.h: Define enum trampoline_impl.
10124         * tree-nested.cc (convert_tramp_reference_op): Don't bother calling
10125         __builtin_adjust_trampoline for heap trampolines.
10126         (finalize_nesting_tree_1): Emit calls to
10127         __builtin_nested_...{created,deleted} if we're generating with
10128         -ftrampoline-impl=heap.
10129         * tree.cc (build_common_builtin_nodes): Build
10130         __builtin_nested_...{created,deleted}.
10131         * doc/invoke.texi (-ftrampoline-impl): Document.
10133 2023-10-22  Tsukasa OI  <research_trasio@irq.a4lg.com>
10135         * common/config/riscv/riscv-common.cc (riscv_subset_list::parse):
10136         Prohibit 'E' and 'H' combinations.
10138 2023-10-22  Tsukasa OI  <research_trasio@irq.a4lg.com>
10140         * common/config/riscv/riscv-common.cc (riscv_ext_version_table):
10141         Change version number of the 'Zfa' extension to 1.0.
10143 2023-10-21  Pan Li  <pan2.li@intel.com>
10145         PR target/111857
10146         * config/riscv/riscv-opts.h (TARGET_VECTOR_VLS): Remove.
10147         * config/riscv/riscv-protos.h (vls_mode_valid_p): New func decl.
10148         * config/riscv/riscv-v.cc (autovectorize_vector_modes): Replace
10149         macro reference to func.
10150         (vls_mode_valid_p): New func impl for vls mode valid or not.
10151         * config/riscv/riscv-vector-switch.def (VLS_ENTRY): Replace
10152         macro reference to func.
10153         * config/riscv/vector-iterators.md: Ditto.
10155 2023-10-20  Roger Sayle  <roger@nextmovesoftware.com>
10156             Uros Bizjak  <ubizjak@gmail.com>
10158         PR middle-end/101955
10159         PR tree-optimization/106245
10160         * config/i386/i386.md (*extv<mode>_1_0): New define_insn_and_split.
10162 2023-10-20  David Edelsohn  <dje.gcc@gmail.com>
10164         * gimple-harden-control-flow.cc: Include memmodel.h.
10166 2023-10-20  David Edelsohn  <dje.gcc@gmail.com>
10168         * gimple-harden-control-flow.cc: Include tm_p.h.
10170 2023-10-20  Andre Vieira  <andre.simoesdiasvieira@arm.com>
10172         PR tree-optimization/111882
10173         * tree-if-conv.cc (get_bitfield_rep): Return NULL_TREE for bitfields
10174         with non-constant offsets.
10176 2023-10-20  Tamar Christina  <tamar.christina@arm.com>
10178         PR tree-optimization/111866
10179         * tree-vect-loop-manip.cc (vect_do_peeling): Pass null as vinfo to
10180         vect_set_loop_condition during prolog peeling.
10182 2023-10-20  Richard Biener  <rguenther@suse.de>
10184         PR tree-optimization/111445
10185         * tree-scalar-evolution.cc (simple_iv_with_niters):
10186         Add missing check for a sign-conversion.
10188 2023-10-20  Richard Biener  <rguenther@suse.de>
10190         PR tree-optimization/110243
10191         PR tree-optimization/111336
10192         * tree-ssa-loop-ivopts.cc (strip_offset_1): Rewrite
10193         operations with undefined behavior on overflow to
10194         unsigned arithmetic.
10196 2023-10-20  Richard Biener  <rguenther@suse.de>
10198         PR tree-optimization/111891
10199         * tree-vect-stmts.cc (vectorizable_simd_clone_call): Fix
10200         assert.
10202 2023-10-20  Andrew Stubbs  <ams@codesourcery.com>
10204         * config.gcc: Allow --with-arch=gfx1030.
10205         * config/gcn/gcn-hsa.h (NO_XNACK): gfx1030 does not support xnack.
10206         (ASM_SPEC): gfx1030 needs -mattr=+wavefrontsize64 set.
10207         * config/gcn/gcn-opts.h (enum processor_type): Add PROCESSOR_GFX1030.
10208         (TARGET_GFX1030): New.
10209         (TARGET_RDNA2): New.
10210         * config/gcn/gcn-valu.md (@dpp_move<mode>): Disable for RDNA2.
10211         (addc<mode>3<exec_vcc>): Add RDNA2 syntax variant.
10212         (subc<mode>3<exec_vcc>): Likewise.
10213         (<convop><mode><vndi>2_exec): Add RDNA2 alternatives.
10214         (vec_cmp<mode>di): Likewise.
10215         (vec_cmp<u><mode>di): Likewise.
10216         (vec_cmp<mode>di_exec): Likewise.
10217         (vec_cmp<u><mode>di_exec): Likewise.
10218         (vec_cmp<mode>di_dup): Likewise.
10219         (vec_cmp<mode>di_dup_exec): Likewise.
10220         (reduc_<reduc_op>_scal_<mode>): Disable for RDNA2.
10221         (*<reduc_op>_dpp_shr_<mode>): Likewise.
10222         (*plus_carry_dpp_shr_<mode>): Likewise.
10223         (*plus_carry_in_dpp_shr_<mode>): Likewise.
10224         * config/gcn/gcn.cc (gcn_option_override): Recognise gfx1030.
10225         (gcn_global_address_p): RDNA2 only allows smaller offsets.
10226         (gcn_addr_space_legitimate_address_p): Likewise.
10227         (gcn_omp_device_kind_arch_isa): Recognise gfx1030.
10228         (gcn_expand_epilogue): Use VGPRs instead of SGPRs.
10229         (output_file_start): Configure gfx1030.
10230         * config/gcn/gcn.h (TARGET_CPU_CPP_BUILTINS): Add __RDNA2__;
10231         (ASSEMBLER_DIALECT): New.
10232         * config/gcn/gcn.md (rdna): New define_attr.
10233         (enabled): Use "rdna" attribute.
10234         (gcn_return): Remove s_dcache_wb.
10235         (addcsi3_scalar): Add RDNA2 syntax variant.
10236         (addcsi3_scalar_zero): Likewise.
10237         (addptrdi3): Likewise.
10238         (mulsi3): v_mul_lo_i32 should be v_mul_lo_u32 on all ISA.
10239         (*memory_barrier): Add RDNA2 syntax variant.
10240         (atomic_load<mode>): Add RDNA2 cache control variants, and disable
10241         scalar atomics for RDNA2.
10242         (atomic_store<mode>): Likewise.
10243         (atomic_exchange<mode>): Likewise.
10244         * config/gcn/gcn.opt (gpu_type): Add gfx1030.
10245         * config/gcn/mkoffload.cc (EF_AMDGPU_MACH_AMDGCN_GFX1030): New.
10246         (main): Recognise -march=gfx1030.
10247         * config/gcn/t-omp-device: Add gfx1030 isa.
10249 2023-10-20  Richard Biener  <rguenther@suse.de>
10251         PR tree-optimization/111000
10252         * stor-layout.h (element_precision): Move ..
10253         * tree.h (element_precision): .. here.
10254         * tree-ssa-loop-im.cc (movement_possibility_1): Restrict
10255         motion of shifts and rotates.
10257 2023-10-20  Alexandre Oliva  <oliva@adacore.com>
10259         * tree-core.h (ECF_XTHROW): New macro.
10260         * tree.cc (set_call_expr): Add expected_throw attribute when
10261         ECF_XTHROW is set.
10262         (build_common_builtin_node): Add ECF_XTHROW to
10263         __cxa_end_cleanup and _Unwind_Resume or _Unwind_SjLj_Resume.
10264         * calls.cc (flags_from_decl_or_type): Check for expected_throw
10265         attribute to set ECF_XTHROW.
10266         * gimple.cc (gimple_build_call_from_tree): Propagate
10267         ECF_XTHROW from decl flags to gimple call...
10268         (gimple_call_flags): ... and back.
10269         * gimple.h (GF_CALL_XTHROW): New gf_mask flag.
10270         (gimple_call_set_expected_throw): New.
10271         (gimple_call_expected_throw_p): New.
10272         * Makefile.in (OBJS): Add gimple-harden-control-flow.o.
10273         * builtins.def (BUILT_IN___HARDCFR_CHECK): New.
10274         * common.opt (fharden-control-flow-redundancy): New.
10275         (-fhardcfr-check-returning-calls): New.
10276         (-fhardcfr-check-exceptions): New.
10277         (-fhardcfr-check-noreturn-calls=*): New.
10278         (Enum hardcfr_check_noreturn_calls): New.
10279         (fhardcfr-skip-leaf): New.
10280         * doc/invoke.texi: Document them.
10281         (hardcfr-max-blocks, hardcfr-max-inline-blocks): New params.
10282         * flag-types.h (enum hardcfr_noret): New.
10283         * gimple-harden-control-flow.cc: New.
10284         * params.opt (-param=hardcfr-max-blocks=): New.
10285         (-param=hradcfr-max-inline-blocks=): New.
10286         * passes.def (pass_harden_control_flow_redundancy): Add.
10287         * tree-pass.h (make_pass_harden_control_flow_redundancy):
10288         Declare.
10289         * doc/extend.texi: Document expected_throw attribute.
10291 2023-10-20  Alex Coplan  <alex.coplan@arm.com>
10293         * rtl-ssa/changes.cc (function_info::change_insns): Ensure we call
10294         ::remove_insn on deleted insns.
10296 2023-10-20  Richard Biener  <rguenther@suse.de>
10298         * doc/generic.texi ({L,R}ROTATE_EXPR): Document.
10300 2023-10-20  Oleg Endo  <olegendo@gcc.gnu.org>
10302         PR target/101177
10303         * config/sh/sh.md (unnamed split pattern): Fix comparison of
10304         find_regno_note result.
10306 2023-10-20  Richard Biener  <rguenther@suse.de>
10308         * tree-vect-loop.cc (update_epilogue_loop_vinfo): Rewrite
10309         both STMT_VINFO_GATHER_SCATTER_P and VMAT_GATHER_SCATTER
10310         stmt refs.
10312 2023-10-20  Richard Biener  <rguenther@suse.de>
10314         * tree-vect-slp.cc (off_map, off_op0_map, off_arg2_map,
10315         off_arg3_arg2_map): New.
10316         (vect_get_operand_map): Get flag whether the stmt was
10317         recognized as gather or scatter and use the above
10318         accordingly.
10319         (vect_get_and_check_slp_defs): Adjust.
10320         (vect_build_slp_tree_2): Likewise.
10322 2023-10-20  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
10324         * config/riscv/riscv-vsetvl.cc (pre_vsetvl::fuse_local_vsetvl_info): Rename variables.
10325         (pre_vsetvl::pre_global_vsetvl_info): Ditto.
10326         (pre_vsetvl::emit_vsetvl): Ditto.
10328 2023-10-20  Tamar Christina  <tamar.christina@arm.com>
10329              Andre Vieira  <andre.simoesdiasvieira@arm.com>
10331         * tree-if-conv.cc (if_convertible_loop_p_1): Move check from here ...
10332         (get_loop_body_if_conv_order): ... to here.
10333         (if_convertible_loop_p): Remove single_exit check.
10334         (tree_if_conversion): Move single_exit check to if-conversion part and
10335         support multiple exits.
10337 2023-10-20  Tamar Christina  <tamar.christina@arm.com>
10338              Andre Vieira  <andre.simoesdiasvieira@arm.com>
10340         * tree-vect-patterns.cc (vect_init_pattern_stmt): Copy STMT_VINFO_TYPE
10341         from original statement.
10342         (vect_recog_bitfield_ref_pattern): Support bitfields in gcond.
10344 2023-10-20  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
10346         PR target/111848
10347         * config/riscv/riscv-selftests.cc (run_const_vector_selftests): Adapt selftest.
10348         * config/riscv/riscv-v.cc (expand_const_vector): Change it into vec_duplicate splitter.
10350 2023-10-20  Lehua Ding  <lehua.ding@rivai.ai>
10352         PR target/111037
10353         PR target/111234
10354         PR target/111725
10355         * config/riscv/riscv-vsetvl.cc (bitmap_union_of_preds_with_entry): New.
10356         (debug): Removed.
10357         (compute_reaching_defintion): New.
10358         (enum vsetvl_type): Moved.
10359         (vlmax_avl_p): Moved.
10360         (enum emit_type): Moved.
10361         (vlmul_to_str): Moved.
10362         (vlmax_avl_insn_p): Removed.
10363         (policy_to_str): Moved.
10364         (loop_basic_block_p): Removed.
10365         (valid_sew_p): Removed.
10366         (vsetvl_insn_p): Moved.
10367         (vsetvl_vtype_change_only_p): Removed.
10368         (after_or_same_p): Removed.
10369         (before_p): Removed.
10370         (anticipatable_occurrence_p): Removed.
10371         (available_occurrence_p): Removed.
10372         (insn_should_be_added_p): Removed.
10373         (get_all_sets): Moved.
10374         (get_same_bb_set): Moved.
10375         (gen_vsetvl_pat): Removed.
10376         (calculate_vlmul): Moved.
10377         (get_max_int_sew): New.
10378         (emit_vsetvl_insn): Removed.
10379         (get_max_float_sew): New.
10380         (eliminate_insn): Removed.
10381         (insert_vsetvl): Removed.
10382         (count_regno_occurrences): Moved.
10383         (get_vl_vtype_info): Removed.
10384         (enum def_type): Moved.
10385         (validate_change_or_fail): Moved.
10386         (change_insn): Removed.
10387         (get_all_real_uses): Moved.
10388         (get_forward_read_vl_insn): Removed.
10389         (get_backward_fault_first_load_insn): Removed.
10390         (change_vsetvl_insn): Removed.
10391         (avl_source_has_vsetvl_p): Removed.
10392         (source_equal_p): Moved.
10393         (calculate_sew): Removed.
10394         (same_equiv_note_p): Moved.
10395         (get_expr_id): New.
10396         (incompatible_avl_p): Removed.
10397         (get_regno): New.
10398         (different_sew_p): Removed.
10399         (get_bb_index): New.
10400         (different_lmul_p): Removed.
10401         (has_no_uses): Moved.
10402         (different_ratio_p): Removed.
10403         (different_tail_policy_p): Removed.
10404         (different_mask_policy_p): Removed.
10405         (possible_zero_avl_p): Removed.
10406         (enum demand_flags): New.
10407         (second_ratio_invalid_for_first_sew_p): Removed.
10408         (second_ratio_invalid_for_first_lmul_p): Removed.
10409         (enum class): New.
10410         (float_insn_valid_sew_p): Removed.
10411         (second_sew_less_than_first_sew_p): Removed.
10412         (first_sew_less_than_second_sew_p): Removed.
10413         (class vsetvl_info): New.
10414         (compare_lmul): Removed.
10415         (second_lmul_less_than_first_lmul_p): Removed.
10416         (second_ratio_less_than_first_ratio_p): Removed.
10417         (DEF_INCOMPATIBLE_COND): Removed.
10418         (greatest_sew): Removed.
10419         (first_sew): Removed.
10420         (second_sew): Removed.
10421         (first_vlmul): Removed.
10422         (second_vlmul): Removed.
10423         (first_ratio): Removed.
10424         (second_ratio): Removed.
10425         (vlmul_for_first_sew_second_ratio): Removed.
10426         (vlmul_for_greatest_sew_second_ratio): Removed.
10427         (ratio_for_second_sew_first_vlmul): Removed.
10428         (class vsetvl_block_info): New.
10429         (DEF_SEW_LMUL_FUSE_RULE): New.
10430         (always_unavailable): Removed.
10431         (avl_unavailable_p): Removed.
10432         (class demand_system): New.
10433         (sew_unavailable_p): Removed.
10434         (lmul_unavailable_p): Removed.
10435         (ge_sew_unavailable_p): Removed.
10436         (ge_sew_lmul_unavailable_p): Removed.
10437         (ge_sew_ratio_unavailable_p): Removed.
10438         (DEF_UNAVAILABLE_COND): Removed.
10439         (same_sew_lmul_demand_p): Removed.
10440         (propagate_avl_across_demands_p): Removed.
10441         (reg_available_p): Removed.
10442         (support_relaxed_compatible_p): Removed.
10443         (demands_can_be_fused_p): Removed.
10444         (earliest_pred_can_be_fused_p): Removed.
10445         (vsetvl_dominated_by_p): Removed.
10446         (avl_info::avl_info): Removed.
10447         (avl_info::single_source_equal_p): Removed.
10448         (avl_info::multiple_source_equal_p): Removed.
10449         (DEF_SEW_LMUL_RULE): New.
10450         (avl_info::operator=): Removed.
10451         (avl_info::operator==): Removed.
10452         (DEF_POLICY_RULE): New.
10453         (avl_info::operator!=): Removed.
10454         (avl_info::has_non_zero_avl): Removed.
10455         (vl_vtype_info::vl_vtype_info): Removed.
10456         (vl_vtype_info::operator==): Removed.
10457         (DEF_AVL_RULE): New.
10458         (vl_vtype_info::operator!=): Removed.
10459         (vl_vtype_info::same_avl_p): Removed.
10460         (vl_vtype_info::same_vtype_p): Removed.
10461         (vl_vtype_info::same_vlmax_p): Removed.
10462         (vector_insn_info::operator>=): Removed.
10463         (vector_insn_info::operator==): Removed.
10464         (class pre_vsetvl): New.
10465         (vector_insn_info::parse_insn): Removed.
10466         (vector_insn_info::compatible_p): Removed.
10467         (vector_insn_info::skip_avl_compatible_p): Removed.
10468         (vector_insn_info::compatible_avl_p): Removed.
10469         (vector_insn_info::compatible_vtype_p): Removed.
10470         (vector_insn_info::available_p): Removed.
10471         (vector_insn_info::fuse_avl): Removed.
10472         (vector_insn_info::fuse_sew_lmul): Removed.
10473         (vector_insn_info::fuse_tail_policy): Removed.
10474         (vector_insn_info::fuse_mask_policy): Removed.
10475         (vector_insn_info::local_merge): Removed.
10476         (vector_insn_info::global_merge): Removed.
10477         (vector_insn_info::get_avl_or_vl_reg): Removed.
10478         (vector_insn_info::update_fault_first_load_avl): Removed.
10479         (vector_insn_info::dump): Removed.
10480         (vector_infos_manager::vector_infos_manager): Removed.
10481         (vector_infos_manager::create_expr): Removed.
10482         (vector_infos_manager::get_expr_id): Removed.
10483         (vector_infos_manager::all_same_ratio_p): Removed.
10484         (vector_infos_manager::all_avail_in_compatible_p): Removed.
10485         (vector_infos_manager::all_same_avl_p): Removed.
10486         (vector_infos_manager::expr_set_num): Removed.
10487         (vector_infos_manager::release): Removed.
10488         (vector_infos_manager::create_bitmap_vectors): Removed.
10489         (vector_infos_manager::free_bitmap_vectors): Removed.
10490         (vector_infos_manager::dump): Removed.
10491         (class pass_vsetvl): Adjust.
10492         (pass_vsetvl::get_vector_info): Removed.
10493         (pass_vsetvl::get_block_info): Removed.
10494         (pass_vsetvl::update_vector_info): Removed.
10495         (pass_vsetvl::update_block_info): Removed.
10496         (pre_vsetvl::compute_avl_def_data): New.
10497         (pass_vsetvl::simple_vsetvl): Removed.
10498         (pass_vsetvl::compute_local_backward_infos): Removed.
10499         (pass_vsetvl::need_vsetvl): Removed.
10500         (pass_vsetvl::transfer_before): Removed.
10501         (pass_vsetvl::transfer_after): Removed.
10502         (pre_vsetvl::compute_vsetvl_def_data): New.
10503         (pass_vsetvl::emit_local_forward_vsetvls): Removed.
10504         (pass_vsetvl::prune_expressions): Removed.
10505         (pass_vsetvl::compute_local_properties): Removed.
10506         (pre_vsetvl::compute_lcm_local_properties): New.
10507         (pass_vsetvl::earliest_fusion): Removed.
10508         (pre_vsetvl::fuse_local_vsetvl_info): New.
10509         (pass_vsetvl::vsetvl_fusion): Removed.
10510         (pass_vsetvl::can_refine_vsetvl_p): Removed.
10511         (pre_vsetvl::earliest_fuse_vsetvl_info): New.
10512         (pass_vsetvl::refine_vsetvls): Removed.
10513         (pass_vsetvl::cleanup_vsetvls): Removed.
10514         (pass_vsetvl::commit_vsetvls): Removed.
10515         (pass_vsetvl::pre_vsetvl): Removed.
10516         (pass_vsetvl::get_vsetvl_at_end): Removed.
10517         (local_avl_compatible_p): Removed.
10518         (pass_vsetvl::local_eliminate_vsetvl_insn): Removed.
10519         (pre_vsetvl::pre_global_vsetvl_info): New.
10520         (get_first_vsetvl_before_rvv_insns): Removed.
10521         (pass_vsetvl::global_eliminate_vsetvl_insn): Removed.
10522         (pre_vsetvl::emit_vsetvl): New.
10523         (pass_vsetvl::ssa_post_optimization): Removed.
10524         (pre_vsetvl::cleaup): New.
10525         (pre_vsetvl::remove_avl_operand): New.
10526         (pass_vsetvl::df_post_optimization): Removed.
10527         (pre_vsetvl::remove_unused_dest_operand): New.
10528         (pass_vsetvl::init): Removed.
10529         (pass_vsetvl::done): Removed.
10530         (pass_vsetvl::compute_probabilities): Removed.
10531         (pass_vsetvl::lazy_vsetvl): Adjust.
10532         (pass_vsetvl::execute): Adjust.
10533         * config/riscv/riscv-vsetvl.def (DEF_INCOMPATIBLE_COND): Removed.
10534         (DEF_SEW_LMUL_RULE): New.
10535         (DEF_SEW_LMUL_FUSE_RULE): Removed.
10536         (DEF_POLICY_RULE): New.
10537         (DEF_UNAVAILABLE_COND): Removed
10538         (DEF_AVL_RULE): New demand type.
10539         (sew_lmul): New demand type.
10540         (ratio_only): New demand type.
10541         (sew_only): New demand type.
10542         (ge_sew): New demand type.
10543         (ratio_and_ge_sew): New demand type.
10544         (tail_mask_policy): New demand type.
10545         (tail_policy_only): New demand type.
10546         (mask_policy_only): New demand type.
10547         (ignore_policy): New demand type.
10548         (avl): New demand type.
10549         (non_zero_avl): New demand type.
10550         (ignore_avl): New demand type.
10551         * config/riscv/t-riscv: Removed riscv-vsetvl.h
10552         * config/riscv/riscv-vsetvl.h: Removed.
10554 2023-10-20  Alexandre Oliva  <oliva@adacore.com>
10556         * tree-eh.cc (make_eh_edges): Return the new edge.
10557         * tree-eh.h (make_eh_edges): Likewise.
10559 2023-10-19  Marek Polacek  <polacek@redhat.com>
10561         * doc/contrib.texi: Add entry for Patrick Palka.
10563 2023-10-19  Andre Vieira  <andre.simoesdiasvieira@arm.com>
10565         * omp-simd-clone.cc (simd_clone_adjust_argument_types): Make function
10566         compatible with mask parameters in clone.
10567         * tree-vect-stmts.cc (vect_build_all_ones_mask): Allow vector boolean
10568         typed masks.
10569         (vectorizable_simd_clone_call): Enable the use of masked clones in
10570         fully masked loops.
10572 2023-10-19  Andre Vieira  <andre.simoesdiasvieira@arm.com>
10574         PR tree-optimization/110485
10575         * tree-vect-stmts.cc (vectorizable_simd_clone_call): Disable partial
10576         vectors usage if a notinbranch simdclone has been selected.
10578 2023-10-19  Andre Vieira  <andre.simoesdiasvieira@arm.com>
10580         * tree-vect-data-refs.cc (vect_get_smallest_scalar_type): Special case
10581         simd clone calls and only use types that are mapped to vectors.
10582         (simd_clone_call_p): New helper function.
10584 2023-10-19  Andre Vieira  <andre.simoesdiasvieira@arm.com>
10586         * tree-parloops.cc (try_transform_to_exit_first_loop_alt): Accept
10587         poly NIT and ALT_BOUND.
10589 2023-10-19  Andre Vieira  <andre.simoesdiasvieira@arm.com>
10591         * tree-parloops.cc (create_loop_fn): Copy specific target and
10592         optimization options to clone.
10594 2023-10-19  Andre Vieira  <andre.simoesdiasvieira@arm.com>
10596         * omp-simd-clone.cc (simd_clone_subparts): Remove.
10597         (simd_clone_init_simd_arrays): Replace simd_clone_supbarts with
10598         TYPE_VECTOR_SUBPARTS.
10599         (ipa_simd_modify_function_body): Likewise.
10600         * tree-vect-stmts.cc (vectorizable_simd_clone_call): Likewise.
10601         (simd_clone_subparts): Remove.
10603 2023-10-19  Jason Merrill  <jason@redhat.com>
10605         * ABOUT-GCC-NLS: Add usage guidance.
10607 2023-10-19  Jason Merrill  <jason@redhat.com>
10609         * diagnostic-core.h (permerror): Rename new overloads...
10610         (permerror_opt): To this.
10611         * diagnostic.cc: Likewise.
10613 2023-10-19  Tamar Christina  <tamar.christina@arm.com>
10615         PR tree-optimization/111860
10616         * tree-vect-loop-manip.cc (slpeel_tree_duplicate_loop_to_edge_cfg):
10617         Remove PHI nodes that dominate loop.
10619 2023-10-19  Richard Biener  <rguenther@suse.de>
10621         PR tree-optimization/111131
10622         * tree-vect-loop.cc (update_epilogue_loop_vinfo): Make
10623         sure to update all gather/scatter stmt DRs, not only those
10624         that eventually got VMAT_GATHER_SCATTER set.
10625         * tree-vect-slp.cc (_slp_oprnd_info::first_gs_info): Add.
10626         (vect_get_and_check_slp_defs): Handle gathers/scatters,
10627         adding the offset as SLP operand and comparing base and scale.
10628         (vect_build_slp_tree_1): Handle gathers.
10629         (vect_build_slp_tree_2): Likewise.
10631 2023-10-19  Richard Biener  <rguenther@suse.de>
10633         * tree-vect-stmts.cc (vect_build_gather_load_calls): Rename
10634         to ...
10635         (vect_build_one_gather_load_call): ... this.  Refactor,
10636         inline widening/narrowing support ...
10637         (vectorizable_load): ... here, do gather vectorization
10638         with builtin decls along other gather vectorization.
10640 2023-10-19  Alex Coplan  <alex.coplan@arm.com>
10642         * config/aarch64/aarch64.md (load_pair_dw_tftf): Rename to ...
10643         (load_pair_dw_<TX:mode><TX2:mode>): ... this.
10644         (store_pair_dw_tftf): Rename to ...
10645         (store_pair_dw_<TX:mode><TX2:mode>): ... this.
10646         * config/aarch64/iterators.md (TX2): New.
10648 2023-10-19  Alex Coplan  <alex.coplan@arm.com>
10650         * rtl-ssa/changes.cc (function_info::finalize_new_accesses): Add new
10651         parameter to give final insn position, infer use of mem if it isn't
10652         specified explicitly.
10653         (function_info::change_insns): Pass down final insn position to
10654         finalize_new_accesses.
10655         * rtl-ssa/functions.h: Add parameter to finalize_new_accesses.
10657 2023-10-19  Alex Coplan  <alex.coplan@arm.com>
10659         * rtl-ssa/accesses.cc (function_info::reparent_use): New.
10660         * rtl-ssa/functions.h (function_info): Declare new member
10661         function reparent_use.
10663 2023-10-19  Alex Coplan  <alex.coplan@arm.com>
10665         * rtl-ssa/access-utils.h (drop_memory_access): New.
10667 2023-10-19  Alex Coplan  <alex.coplan@arm.com>
10669         * rtl-ssa/insns.cc (function_info::add_insn_after): Ensure we
10670         update the prev pointer on the following nondebug insn in the
10671         case that !insn->is_debug_insn () && next->is_debug_insn ().
10673 2023-10-19  Haochen Jiang  <haochen.jiang@intel.com>
10675         * config/i386/i386.h: Correct the ISA enabled for Arrow Lake.
10676         Also make Clearwater Forest depends on Sierra Forest.
10677         * config/i386/i386-options.cc: Revise the order of the macro
10678         definition to avoid confusion.
10679         * doc/extend.texi: Revise documentation.
10680         * doc/invoke.texi: Correct documentation.
10682 2023-10-19  Andrew Stubbs  <ams@codesourcery.com>
10684         * config.gcc (amdgcn): Switch default to --with-arch=gfx900.
10685         Implement support for --with-multilib-list.
10686         * config/gcn/t-gcn-hsa: Likewise.
10687         * doc/install.texi: Likewise.
10688         * doc/invoke.texi: Mark Fiji deprecated.
10690 2023-10-19  Jiahao Xu  <xujiahao@loongson.cn>
10692         * config/loongarch/loongarch.cc (loongarch_vector_costs): Inherit from
10693         vector_costs.  Add a constructor.
10694         (loongarch_vector_costs::add_stmt_cost): Use adjust_cost_for_freq to
10695         adjust the cost for inner loops.
10696         (loongarch_vector_costs::count_operations): New function.
10697         (loongarch_vector_costs::determine_suggested_unroll_factor): Ditto.
10698         (loongarch_vector_costs::finish_cost): Ditto.
10699         (loongarch_builtin_vectorization_cost): Adjust.
10700         * config/loongarch/loongarch.opt (loongarch-vect-unroll-limit): New parameter.
10701         (loongarcg-vect-issue-info): Ditto.
10702         (mmemvec-cost): Delete.
10703         * config/loongarch/genopts/loongarch.opt.in
10704         (loongarch-vect-unroll-limit): Ditto.
10705         (loongarcg-vect-issue-info): Ditto.
10706         (mmemvec-cost): Delete.
10707         * doc/invoke.texi (loongarcg-vect-unroll-limit): Document new option.
10709 2023-10-19  Jiahao Xu  <xujiahao@loongson.cn>
10711         * config/loongarch/lasx.md
10712         (vec_widen_<su>mult_even_v8si): New patterns.
10713         (vec_widen_<su>add_hi_<mode>): Ditto.
10714         (vec_widen_<su>add_lo_<mode>): Ditto.
10715         (vec_widen_<su>sub_hi_<mode>): Ditto.
10716         (vec_widen_<su>sub_lo_<mode>): Ditto.
10717         (vec_widen_<su>mult_hi_<mode>): Ditto.
10718         (vec_widen_<su>mult_lo_<mode>): Ditto.
10719         * config/loongarch/loongarch.md (u_bool): New iterator.
10720         * config/loongarch/loongarch-protos.h
10721         (loongarch_expand_vec_widen_hilo): New prototype.
10722         * config/loongarch/loongarch.cc
10723         (loongarch_expand_vec_interleave): New function.
10724         (loongarch_expand_vec_widen_hilo): New function.
10726 2023-10-19  Jiahao Xu  <xujiahao@loongson.cn>
10728         * config/loongarch/lasx.md
10729         (avg<mode>3_ceil): New patterns.
10730         (uavg<mode>3_ceil): Ditto.
10731         (avg<mode>3_floor): Ditto.
10732         (uavg<mode>3_floor): Ditto.
10733         (usadv32qi): Ditto.
10734         (ssadv32qi): Ditto.
10735         * config/loongarch/lsx.md
10736         (avg<mode>3_ceil): New patterns.
10737         (uavg<mode>3_ceil): Ditto.
10738         (avg<mode>3_floor): Ditto.
10739         (uavg<mode>3_floor): Ditto.
10740         (usadv16qi): Ditto.
10741         (ssadv16qi): Ditto.
10743 2023-10-18  Andrew Pinski  <pinskia@gmail.com>
10745         PR middle-end/111863
10746         * expr.cc (do_store_flag): Don't over write arg0
10747         when stripping off `& POW2`.
10749 2023-10-18  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
10751         PR tree-optimization/111648
10752         * fold-const.cc (valid_mask_for_fold_vec_perm_cst_p): If a1
10753         chooses base element from arg, ensure that it's a natural stepped
10754         sequence.
10755         (build_vec_cst_rand): New param natural_stepped and use it to
10756         construct a naturally stepped sequence.
10757         (test_nunits_min_2): Add new unit tests Case 6 and Case 7.
10759 2023-10-18  Dimitar Dimitrov  <dimitar@dinux.eu>
10761         * config/pru/pru.cc (pru_insn_cost): New function.
10762         (TARGET_INSN_COST): Define for PRU.
10764 2023-10-18  Andrew Carlotti  <andrew.carlotti@arm.com>
10766         * config/aarch64/aarch64.cc (aarch64_test_fractional_cost):
10767         Test <= instead of testing < twice.
10769 2023-10-18  Jakub Jelinek  <jakub@redhat.com>
10771         PR bootstrap/111852
10772         * cse.cc (cse_insn): Add workaround for GCC 4.8-4.9, instead of
10773         using rtx_def type for memory_extend_buf, use unsigned char
10774         arrayy with size of rtx_def and its alignment.
10776 2023-10-18  Jason Merrill  <jason@redhat.com>
10778         * doc/invoke.texi: Move -fpermissive to Warning Options.
10779         * diagnostic.cc (update_effective_level_from_pragmas): Remove
10780         redundant system header check.
10781         (diagnostic_report_diagnostic): Move down syshdr/-w check.
10782         (diagnostic_impl): Handle DK_PERMERROR with an option number.
10783         (permerror): Add new overloads.
10784         * diagnostic-core.h (permerror): Declare them.
10786 2023-10-18  Tobias Burnus  <tobias@codesourcery.com>
10788         * gimplify.cc (gimplify_bind_expr): Remove "omp allocate" attribute
10789         to avoid that auxillary statement list reaches LTO.
10791 2023-10-18  Jakub Jelinek  <jakub@redhat.com>
10793         PR tree-optimization/111845
10794         * tree-ssa-math-opts.cc (match_uaddc_usubc): Remember temporary
10795         statements for the 4 operand addition or subtraction of 3 operands
10796         from 1 operand cases and remove them when successful.  Look for
10797         nested additions even from rhs[2], not just rhs[1].
10799 2023-10-18  Tobias Burnus  <tobias@codesourcery.com>
10801         PR target/111093
10802         * config/nvptx/nvptx.cc (nvptx_option_override): Issue fatal error
10803         instead of an assert ICE when no -march= has been specified.
10805 2023-10-18  Iain Sandoe  <iain@sandoe.co.uk>
10807         * config.in: Regenerate.
10808         * config/darwin.cc (darwin_file_start): Add assembler directives
10809         for the target OS version, where these are supported by the
10810         assembler.
10811         (darwin_override_options): Check for building >= macOS 10.14.
10812         * configure: Regenerate.
10813         * configure.ac: Check for assembler support of .build_version
10814         directives.
10816 2023-10-18  Tamar Christina  <tamar.christina@arm.com>
10818         PR tree-optimization/109154
10819         * tree-if-conv.cc (INCLUDE_ALGORITHM): Remove.
10820         (typedef struct ifcvt_arg_entry): New.
10821         (cmp_arg_entry): New.
10822         (gen_phi_arg_condition, gen_phi_nest_statement,
10823         predicate_scalar_phi): Use them.
10825 2023-10-18  Tamar Christina  <tamar.christina@arm.com>
10827         PR tree-optimization/109154
10828         * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<VDMOV:mode>):
10829         Rewrite to new syntax.
10830         (*aarch64_simd_mov<VQMOV:mode): Rewrite to new syntax and merge in
10831         splits.
10833 2023-10-18  Tamar Christina  <tamar.christina@arm.com>
10835         PR tree-optimization/109154
10836         * tree-if-conv.cc (if_convertible_stmt_p): Allow any const IFN.
10838 2023-10-18  Tamar Christina  <tamar.christina@arm.com>
10840         PR tree-optimization/109154
10841         * match.pd: Add new cond_op rule.
10843 2023-10-18  Xi Ruoyao  <xry111@xry111.site>
10845         * config/loongarch/loongarch.md (movfcc): Use fcmp.caf.s for
10846         zeroing a fcc.
10848 2023-10-18  Richard Biener  <rguenther@suse.de>
10850         * tree-vect-stmts.cc (vectorizable_simd_clone_call):
10851         Relax check to again allow passing integer mode masks
10852         as traditional vectors.
10854 2023-10-18  Tamar Christina  <tamar.christina@arm.com>
10856         * tree-loop-distribution.cc (copy_loop_before): Request no LCSSA.
10857         * tree-vect-loop-manip.cc (adjust_phi_and_debug_stmts): Add additional
10858         asserts.
10859         (slpeel_tree_duplicate_loop_to_edge_cfg): Keep LCSSA during peeling.
10860         (find_guard_arg): Look value up through explicit edge and original defs.
10861         (vect_do_peeling): Use it.
10862         (slpeel_update_phi_nodes_for_guard2): Take explicit exit edge.
10863         (slpeel_update_phi_nodes_for_lcssa, slpeel_update_phi_nodes_for_loops):
10864         Remove.
10865         * tree-vect-loop.cc (vect_create_epilog_for_reduction): Initialize phi.
10866         * tree-vectorizer.h (slpeel_tree_duplicate_loop_to_edge_cfg): Add
10867         optional param to turn off LCSSA mode.
10869 2023-10-18  Tamar Christina  <tamar.christina@arm.com>
10871         * tree-if-conv.cc (tree_if_conversion): Record exits in aux.
10872         * tree-vect-loop-manip.cc (slpeel_tree_duplicate_loop_to_edge_cfg): Use
10873         it.
10874         * tree-vect-loop.cc (vect_get_loop_niters): Determine main exit.
10875         (vec_init_loop_exit_info): Extend analysis when multiple exits.
10876         (vect_analyze_loop_form): Record conds and determine main cond.
10877         (vect_create_loop_vinfo): Extend bookkeeping of conds.
10878         (vect_analyze_loop): Release conds.
10879         * tree-vectorizer.h (LOOP_VINFO_LOOP_CONDS,
10880         LOOP_VINFO_LOOP_IV_COND):  New.
10881         (struct vect_loop_form_info): Add conds, alt_loop_conds;
10882         (struct loop_vec_info): Add conds, loop_iv_cond.
10884 2023-10-18  Tamar Christina  <tamar.christina@arm.com>
10886         * tree-loop-distribution.cc (copy_loop_before): Pass exit explicitly.
10887         (loop_distribution::distribute_loop): Bail out of not single exit.
10888         * tree-scalar-evolution.cc (get_loop_exit_condition): New.
10889         * tree-scalar-evolution.h (get_loop_exit_condition): New.
10890         * tree-vect-data-refs.cc (vect_enhance_data_refs_alignment): Pass exit
10891         explicitly.
10892         * tree-vect-loop-manip.cc (vect_set_loop_condition_partial_vectors,
10893         vect_set_loop_condition_partial_vectors_avx512,
10894         vect_set_loop_condition_normal, vect_set_loop_condition): Explicitly
10895         take exit.
10896         (slpeel_tree_duplicate_loop_to_edge_cfg): Explicitly take exit and
10897         return new peeled corresponding peeled exit.
10898         (slpeel_can_duplicate_loop_p): Explicitly take exit.
10899         (find_loop_location): Handle not knowing an explicit exit.
10900         (vect_update_ivs_after_vectorizer, vect_gen_vector_loop_niters_mult_vf,
10901         find_guard_arg, slpeel_update_phi_nodes_for_loops,
10902         slpeel_update_phi_nodes_for_guard2): Use new exits.
10903         (vect_do_peeling): Update bookkeeping to keep track of exits.
10904         * tree-vect-loop.cc (vect_get_loop_niters): Explicitly take exit to
10905         analyze.
10906         (vec_init_loop_exit_info): New.
10907         (_loop_vec_info::_loop_vec_info): Initialize vec_loop_iv,
10908         vec_epilogue_loop_iv, scalar_loop_iv.
10909         (vect_analyze_loop_form): Initialize exits.
10910         (vect_create_loop_vinfo): Set main exit.
10911         (vect_create_epilog_for_reduction, vectorizable_live_operation,
10912         vect_transform_loop): Use it.
10913         (scale_profile_for_vect_loop): Explicitly take exit to scale.
10914         * tree-vectorizer.cc (set_uid_loop_bbs): Initialize loop exit.
10915         * tree-vectorizer.h (LOOP_VINFO_IV_EXIT, LOOP_VINFO_EPILOGUE_IV_EXIT,
10916         LOOP_VINFO_SCALAR_IV_EXIT): New.
10917         (struct loop_vec_info): Add vec_loop_iv, vec_epilogue_loop_iv,
10918         scalar_loop_iv.
10919         (vect_set_loop_condition, slpeel_can_duplicate_loop_p,
10920         slpeel_tree_duplicate_loop_to_edge_cfg): Take explicit exits.
10921         (vec_init_loop_exit_info): New.
10922         (struct vect_loop_form_info): Add loop_exit.
10924 2023-10-18  Tamar Christina  <tamar.christina@arm.com>
10926         * tree-vect-stmts.cc (vectorizable_comparison): Refactor, splitting body
10927         to ...
10928         (vectorizable_comparison_1): ...This.
10930 2023-10-18  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
10932         * config/riscv/riscv-v.cc (shuffle_consecutive_patterns): New function.
10933         (expand_vec_perm_const_1): Add consecutive pattern recognition.
10935 2023-10-18  Haochen Jiang  <haochen.jiang@intel.com>
10937         * common/config/i386/cpuinfo.h (get_intel_cpu): Add Panther
10938         Lake.
10939         * common/config/i386/i386-common.cc (processor_name):
10940         Ditto.
10941         (processor_alias_table): Ditto.
10942         * common/config/i386/i386-cpuinfo.h (enum processor_types):
10943         Add INTEL_PANTHERLAKE.
10944         * config.gcc: Add -march=pantherlake.
10945         * config/i386/driver-i386.cc (host_detect_local_cpu): Refactor
10946         the if clause. Handle pantherlake.
10947         * config/i386/i386-c.cc (ix86_target_macros_internal):
10948         Handle pantherlake.
10949         * config/i386/i386-options.cc (processor_cost_table): Ditto.
10950         (m_PANTHERLAKE): New.
10951         (m_CORE_HYBRID): Add pantherlake.
10952         * config/i386/i386.h (enum processor_type): Ditto.
10953         * doc/extend.texi: Ditto.
10954         * doc/invoke.texi: Ditto.
10956 2023-10-18  Haochen Jiang  <haochen.jiang@intel.com>
10958         * config/i386/i386-options.cc (m_CORE_HYBRID): New.
10959         * config/i386/x86-tune.def: Replace hybrid client tune to
10960         m_CORE_HYBRID.
10962 2023-10-18  Haochen Jiang  <haochen.jiang@intel.com>
10964         * common/config/i386/cpuinfo.h
10965         (get_intel_cpu): Handle Clearwater Forest.
10966         * common/config/i386/i386-common.cc (processor_name):
10967         Add Clearwater Forest.
10968         (processor_alias_table): Ditto.
10969         * common/config/i386/i386-cpuinfo.h (enum processor_types):
10970         Add INTEL_CLEARWATERFOREST.
10971         * config.gcc: Add -march=clearwaterforest.
10972         * config/i386/driver-i386.cc (host_detect_local_cpu): Handle
10973         clearwaterforest.
10974         * config/i386/i386-c.cc (ix86_target_macros_internal): Ditto.
10975         * config/i386/i386-options.cc (processor_cost_table): Ditto.
10976         (m_CLEARWATERFOREST): New.
10977         (m_CORE_ATOM): Add clearwaterforest.
10978         * config/i386/i386.h (enum processor_type): Ditto.
10979         * doc/extend.texi: Ditto.
10980         * doc/invoke.texi: Ditto.
10982 2023-10-18  liuhongt  <hongtao.liu@intel.com>
10984         * config/i386/mmx.md (fma<mode>4): New expander.
10985         (fms<mode>4): Ditto.
10986         (fnma<mode>4): Ditto.
10987         (fnms<mode>4): Ditto.
10988         (vec_fmaddsubv4hf4): Ditto.
10989         (vec_fmsubaddv4hf4): Ditto.
10991 2023-10-18  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
10993         PR target/111832
10994         * config/riscv/riscv-vector-costs.cc (get_biggest_mode): New function.
10996 2023-10-17  Richard Sandiford  <richard.sandiford@arm.com>
10998         * config/aarch64/aarch64.cc (aarch64_layout_frame): Don't make
10999         the position of the LR save slot dependent on stack clash
11000         protection unless shadow call stacks are enabled.
11002 2023-10-17  Richard Sandiford  <richard.sandiford@arm.com>
11004         * config/aarch64/aarch64.h (aarch64_frame): Add vectors that
11005         store the list saved GPRs, FPRs and predicate registers.
11006         * config/aarch64/aarch64.cc (aarch64_layout_frame): Initialize
11007         the lists of saved registers.  Use them to choose push candidates.
11008         Invalidate pop candidates if we're not going to do a pop.
11009         (aarch64_next_callee_save): Delete.
11010         (aarch64_save_callee_saves): Take a list of registers,
11011         rather than a range.  Make !skip_wb select only write-back
11012         candidates.
11013         (aarch64_expand_prologue): Update calls accordingly.
11014         (aarch64_restore_callee_saves): Take a list of registers,
11015         rather than a range.  Always skip pop candidates.  Also skip
11016         LR if shadow call stacks are enabled.
11017         (aarch64_expand_epilogue): Update calls accordingly.
11019 2023-10-17  Richard Sandiford  <richard.sandiford@arm.com>
11021         * cfgbuild.h (find_sub_basic_blocks): Declare.
11022         * cfgbuild.cc (update_profile_for_new_sub_basic_block): New function,
11023         split out from...
11024         (find_many_sub_basic_blocks): ...here.
11025         (find_sub_basic_blocks): New function.
11026         * function.cc (thread_prologue_and_epilogue_insns): Handle
11027         epilogues that contain jumps.
11029 2023-10-17  Andrew Pinski  <apinski@marvell.com>
11031         PR tree-optimization/110817
11032         * tree-ssanames.cc (ssa_name_has_boolean_range): Remove the
11033         check for boolean type as they don't have "[0,1]" range.
11035 2023-10-17  Andrew Pinski  <pinskia@gmail.com>
11037         PR tree-optimization/111432
11038         * match.pd (`a & (x | CST)`): New pattern.
11040 2023-10-17  Andre Vieira  <andre.simoesdiasvieira@arm.com>
11042         * tree-cfg.cc (move_sese_region_to_fn): Initialize profile_count for
11043         new basic block.
11045 2023-10-17  Richard Biener  <rguenther@suse.de>
11047         PR tree-optimization/111846
11048         * tree-vectorizer.h (_slp_tree::simd_clone_info): Add.
11049         (SLP_TREE_SIMD_CLONE_INFO): New.
11050         * tree-vect-slp.cc (_slp_tree::_slp_tree): Initialize
11051         SLP_TREE_SIMD_CLONE_INFO.
11052         (_slp_tree::~_slp_tree): Release it.
11053         * tree-vect-stmts.cc (vectorizable_simd_clone_call): Use
11054         SLP_TREE_SIMD_CLONE_INFO or STMT_VINFO_SIMD_CLONE_INFO
11055         dependent on if we're doing SLP.
11057 2023-10-17  Jakub Jelinek  <jakub@redhat.com>
11059         * wide-int-print.h (print_dec_buf_size): For length, divide number
11060         of bits by 3 and add 3 instead of division by 4 and adding 4.
11061         * wide-int-print.cc (print_decs): Remove superfluous ()s.  Don't call
11062         print_hex, instead call print_decu on either negated value after
11063         printing - or on wi itself.
11064         (print_decu): Don't call print_hex, instead print even large numbers
11065         decimally.
11066         (pp_wide_int_large): Assume len from print_dec_buf_size is big enough
11067         even if it returns false.
11068         * pretty-print.h (pp_wide_int): Use print_dec_buf_size to check if
11069         pp_wide_int_large should be used.
11070         * tree-pretty-print.cc (dump_generic_node): Use print_hex_buf_size
11071         to compute needed buffer size.
11073 2023-10-17  Richard Biener  <rguenther@suse.de>
11075         PR middle-end/111818
11076         * tree-ssa.cc (maybe_optimize_var): When clearing
11077         DECL_NOT_GIMPLE_REG_P always rewrite into SSA.
11079 2023-10-17  Richard Biener  <rguenther@suse.de>
11081         PR tree-optimization/111807
11082         * tree-sra.cc (build_ref_for_model): Only call
11083         build_reconstructed_reference when the offsets are the same.
11085 2023-10-17  Vineet Gupta  <vineetg@rivosinc.com>
11087         PR target/111466
11088         * expr.cc (expand_expr_real_2): Do not clear SUBREG_PROMOTED_VAR_P.
11090 2023-10-17  Chenghui Pan  <panchenghui@loongson.cn>
11092         * config/loongarch/loongarch.cc (loongarch_expand_vector_group_init):
11093         fix impl related to vec_initv32qiv16qi template to avoid ICE.
11095 2023-10-17  Lulu Cheng  <chenglulu@loongson.cn>
11096             Chenghua Xu  <xuchenghua@loongson.cn>
11098         * config/loongarch/loongarch.h (ASM_OUTPUT_ALIGN_WITH_NOP):
11099         Delete.
11101 2023-10-17  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
11103         * config/riscv/riscv-vector-costs.cc (max_number_of_live_regs): Fix big LMUL issue.
11104         (get_store_value): New function.
11106 2023-10-16  Jeff Law  <jlaw@ventanamicro.com>
11108         * explow.cc (probe_stack_range): Handle case when expand_binop
11109         does not construct its result in the expected location.
11111 2023-10-16  David Malcolm  <dmalcolm@redhat.com>
11113         * diagnostic.cc (diagnostic_initialize): When LANG=C, update
11114         default for -fdiagnostics-text-art-charset from emoji to ascii.
11115         * doc/invoke.texi (fdiagnostics-text-art-charset): Document the above.
11117 2023-10-16  David Malcolm  <dmalcolm@redhat.com>
11119         * diagnostic.cc (diagnostic_initialize): Ensure
11120         context->extra_output_kind is initialized.
11122 2023-10-16  Uros Bizjak  <ubizjak@gmail.com>
11124         * config/i386/i386.cc (ix86_can_inline_p):
11125         Handle CM_LARGE and CM_LARGE_PIC.
11126         (x86_elf_aligned_decl_common): Ditto.
11127         (x86_output_aligned_bss): Ditto.
11128         * config/i386/i386.opt: Update doc for -mlarge-data-threshold=.
11129         * doc/invoke.texi: Update doc for -mlarge-data-threshold=.
11131 2023-10-16  Christoph Müllner  <christoph.muellner@vrull.eu>
11133         * config/riscv/riscv-protos.h (emit_block_move): Remove redundant
11134         prototype.  Improve comment.
11135         * config/riscv/riscv.cc (riscv_block_move_straight): Move from riscv.cc
11136         into riscv-string.cc.
11137         (riscv_adjust_block_mem, riscv_block_move_loop): Likewise.
11138         (riscv_expand_block_move): Likewise.
11139         * config/riscv/riscv-string.cc (riscv_block_move_straight): Add moved
11140         function.
11141         (riscv_adjust_block_mem, riscv_block_move_loop): Likewise.
11142         (riscv_expand_block_move): Likewise.
11144 2023-10-16  Manolis Tsamis  <manolis.tsamis@vrull.eu>
11146         * Makefile.in: Add fold-mem-offsets.o.
11147         * passes.def: Schedule a new pass.
11148         * tree-pass.h (make_pass_fold_mem_offsets): Declare.
11149         * common.opt: New options.
11150         * doc/invoke.texi: Document new option.
11151         * fold-mem-offsets.cc: New file.
11153 2023-10-16  Andrew Pinski  <pinskia@gmail.com>
11155         PR tree-optimization/101541
11156         * match.pd (A CMP 0 ? A : -A): Improve
11157         using bitwise_equal_p.
11159 2023-10-16  Andrew Pinski  <pinskia@gmail.com>
11161         PR tree-optimization/31531
11162         * match.pd (~X op ~Y): Allow for an optional nop convert.
11163         (~X op C): Likewise.
11165 2023-10-16  Roger Sayle  <roger@nextmovesoftware.com>
11167         * config/arc/arc.md (*ashlsi3_1): New pre-reload splitter to
11168         use bset dst,0,src to implement 1<<x on !TARGET_BARREL_SHIFTER.
11170 2023-10-16  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
11172         * config/s390/vector.md (popcountv8hi2_vx): Sign extend each
11173         unsigned vector element.
11175 2023-10-16  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
11177         * config/riscv/riscv-vector-costs.cc (costs::preferred_new_lmul_p): Use VLS modes.
11179 2023-10-16  Jiufu Guo  <guojiufu@linux.ibm.com>
11181         * fold-const.cc (expr_not_equal_to): Replace get_global_range_query
11182         by get_range_query.
11183         * gimple-fold.cc (size_must_be_zero_p): Likewise.
11184         * gimple-range-fold.cc (fur_source::fur_source): Likewise.
11185         * gimple-ssa-warn-access.cc (check_nul_terminated_array): Likewise.
11186         * tree-dfa.cc (get_ref_base_and_extent): Likewise.
11188 2023-10-16  liuhongt  <hongtao.liu@intel.com>
11190         * config/i386/mmx.md (V2FI_32): New mode iterator
11191         (movd_v2hf_to_sse): Rename to ..
11192         (movd_<mode>_to_sse): .. this.
11193         (movd_v2hf_to_sse_reg): Rename to ..
11194         (movd_<mode>_to_sse_reg): .. this.
11195         (fix<fixunssuffix>_trunc<mode><mmxintvecmodelower>2): New
11196         expander.
11197         (fix<fixunssuffix>_truncv2hfv2si2): Ditto.
11198         (float<floatunssuffix><mmxintvecmodelower><mode>2): Ditto.
11199         (float<floatunssuffix>v2siv2hf2): Ditto.
11200         (extendv2hfv2sf2): Ditto.
11201         (truncv2sfv2hf2): Ditto.
11202         * config/i386/sse.md (*vec_concatv8hf_movss): Rename to ..
11203         (*vec_concat<mode>_movss): .. this.
11205 2023-10-16  liuhongt  <hongtao.liu@intel.com>
11207         * config/i386/i386-expand.cc (ix86_sse_copysign_to_positive):
11208         Handle HFmode.
11209         (ix86_expand_round_sse4): Ditto.
11210         * config/i386/i386.md (roundhf2): New expander.
11211         (lroundhf<mode>2): Ditto.
11212         (lrinthf<mode>2): Ditto.
11213         (l<rounding_insn>hf<mode>2): Ditto.
11214         * config/i386/mmx.md (sqrt<mode>2): Ditto.
11215         (btrunc<mode>2): Ditto.
11216         (nearbyint<mode>2): Ditto.
11217         (rint<mode>2): Ditto.
11218         (lrint<mode><mmxintvecmodelower>2): Ditto.
11219         (floor<mode>2): Ditto.
11220         (lfloor<mode><mmxintvecmodelower>2): Ditto.
11221         (ceil<mode>2): Ditto.
11222         (lceil<mode><mmxintvecmodelower>2): Ditto.
11223         (round<mode>2): Ditto.
11224         (lround<mode><mmxintvecmodelower>2): Ditto.
11225         * config/i386/sse.md (lrint<mode><sseintvecmodelower>2): Ditto.
11226         (lfloor<mode><sseintvecmodelower>2): Ditto.
11227         (lceil<mode><sseintvecmodelower>2): Ditto.
11228         (lround<mode><sseintvecmodelower>2): Ditto.
11229         (sse4_1_round<ssescalarmodesuffix>): Extend to V8HF.
11230         (round<mode>2): Extend to V8HF/V16HF/V32HF.
11232 2023-10-15  Tobias Burnus  <tobias@codesourcery.com>
11234         * doc/invoke.texi (-fopenacc, -fopenmp, -fopenmp-simd): Use @samp not
11235         @code; document more completely the supported Fortran sentinels.
11237 2023-10-15  Roger Sayle  <roger@nextmovesoftware.com>
11239         * optabs.cc (expand_subword_shift): Call simplify_expand_binop
11240         instead of expand_binop.  Optimize cases (i.e. avoid generating
11241         RTL) when CARRIES or INTO_INPUT is zero.  Use one_cmpl_optab
11242         (i.e. NOT) instead of xor_optab with ~0 to calculate ~OP1.
11244 2023-10-15  Jakub Jelinek  <jakub@redhat.com>
11246         PR tree-optimization/111800
11247         * wide-int-print.h (print_dec_buf_size, print_decs_buf_size,
11248         print_decu_buf_size, print_hex_buf_size): New inline functions.
11249         * wide-int.cc (assert_deceq): Use print_dec_buf_size.
11250         (assert_hexeq): Use print_hex_buf_size.
11251         * wide-int-print.cc (print_decs): Use print_decs_buf_size.
11252         (print_decu): Use print_decu_buf_size.
11253         (print_hex): Use print_hex_buf_size.
11254         (pp_wide_int_large): Use print_dec_buf_size.
11255         * value-range.cc (irange_bitmask::dump): Use print_hex_buf_size.
11256         * value-range-pretty-print.cc (vrange_printer::print_irange_bitmasks):
11257         Likewise.
11258         * tree-ssa-loop-niter.cc (do_warn_aggressive_loop_optimizations): Use
11259         print_dec_buf_size.  Use TYPE_SIGN macro in print_dec call argument.
11261 2023-10-15  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
11263         * combine.cc (simplify_compare_const): Fix handling of unsigned
11264         constants.
11266 2023-10-15  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
11268         * config/riscv/vector-iterators.md: Fix vsingle incorrect attribute for RVVM2x2QI.
11270 2023-10-14  Tobias Burnus  <tobias@codesourcery.com>
11272         * gimplify.cc (gimplify_bind_expr): Handle Fortran's
11273         'omp allocate' for stack variables.
11275 2023-10-14  Jakub Jelinek  <jakub@redhat.com>
11277         PR c/102989
11278         * tree-core.h (struct tree_base): Remove int_length.offset
11279         member, change type of int_length.unextended and int_length.extended
11280         from unsigned char to unsigned short.
11281         * tree.h (TREE_INT_CST_OFFSET_NUNITS): Remove.
11282         (wi::extended_tree <N>::get_len): Don't use TREE_INT_CST_OFFSET_NUNITS,
11283         instead compute it at runtime from TREE_INT_CST_EXT_NUNITS and
11284         TREE_INT_CST_NUNITS.
11285         * tree.cc (wide_int_to_tree_1): Don't assert
11286         TREE_INT_CST_OFFSET_NUNITS value.
11287         (make_int_cst): Don't initialize TREE_INT_CST_OFFSET_NUNITS.
11288         * wide-int.h (WIDE_INT_MAX_ELTS): Change from 255 to 1024.
11289         (WIDEST_INT_MAX_ELTS): Change from 510 to 2048, adjust comment.
11290         (trailing_wide_int_storage): Change m_len type from unsigned char *
11291         to unsigned short *.
11292         (trailing_wide_int_storage::trailing_wide_int_storage): Change second
11293         argument from unsigned char * to unsigned short *.
11294         (trailing_wide_ints): Change m_max_len type from unsigned char to
11295         unsigned short.  Change m_len element type from
11296         struct{unsigned char len;} to unsigned short.
11297         (trailing_wide_ints <N>::operator []): Remove .len from m_len
11298         accesses.
11299         * value-range-storage.h (irange_storage::lengths_address): Change
11300         return type from const unsigned char * to const unsigned short *.
11301         (irange_storage::write_lengths_address): Change return type from
11302         unsigned char * to unsigned short *.
11303         * value-range-storage.cc (irange_storage::write_lengths_address):
11304         Likewise.
11305         (irange_storage::lengths_address): Change return type from
11306         const unsigned char * to const unsigned short *.
11307         (write_wide_int): Change len argument type from unsigned char *&
11308         to unsigned short *&.
11309         (irange_storage::set_irange): Change len variable type from
11310         unsigned char * to unsigned short *.
11311         (read_wide_int): Change len argument type from unsigned char to
11312         unsigned short.  Use trailing_wide_int_storage <unsigned short>
11313         instead of trailing_wide_int_storage and
11314         trailing_wide_int <unsigned short> instead of trailing_wide_int.
11315         (irange_storage::get_irange): Change len variable type from
11316         unsigned char * to unsigned short *.
11317         (irange_storage::size): Multiply n by sizeof (unsigned short)
11318         in len_size variable initialization.
11319         (irange_storage::dump): Change len variable type from
11320         unsigned char * to unsigned short *.
11322 2023-10-14  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
11324         * config/riscv/vector-iterators.md: Remove redundant iterators.
11326 2023-10-13  Andrew MacLeod  <amacleod@redhat.com>
11328         PR tree-optimization/111622
11329         * value-relation.cc (equiv_oracle::add_partial_equiv): Do not
11330         register a partial equivalence if an operand has no uses.
11332 2023-10-13  Richard Biener  <rguenther@suse.de>
11334         PR tree-optimization/111795
11335         * tree-vect-stmts.cc (vectorizable_simd_clone_call): Handle
11336         integer mode mask arguments.
11338 2023-10-13  Richard Biener  <rguenther@suse.de>
11340         * tree-vect-slp.cc (mask_call_maps): New.
11341         (vect_get_operand_map): Handle IFN_MASK_CALL.
11342         (vect_build_slp_tree_1): Likewise.
11343         * tree-vect-stmts.cc (vectorizable_simd_clone_call): Handle
11344         SLP.
11346 2023-10-13  Richard Biener  <rguenther@suse.de>
11348         PR tree-optimization/111779
11349         * tree-sra.cc (sra_handled_bf_read_p): New function.
11350         (build_access_from_expr_1): Handle some BIT_FIELD_REFs.
11351         (sra_modify_expr): Likewise.
11352         (make_fancy_name_1): Skip over BIT_FIELD_REF.
11354 2023-10-13  Richard Biener  <rguenther@suse.de>
11356         PR tree-optimization/111773
11357         * tree-ssa-dce.cc (mark_stmt_if_obviously_necessary): Do
11358         not elide noreturn calls that are reflected to the IL.
11360 2023-10-13  Kito Cheng  <kito.cheng@sifive.com>
11362         * config/riscv/riscv.cc (riscv_legitimize_poly_move): Bump
11363         max_power to 64.
11364         * config/riscv/riscv.h (MAX_POLY_VARIANT): New.
11366 2023-10-13  Pan Li  <pan2.li@intel.com>
11368         * config/riscv/autovec.md (lfloor<mode><v_i_l_ll_convert>2): New
11369         pattern for lfloor/lfloorf.
11370         * config/riscv/riscv-protos.h (enum insn_type): New enum value.
11371         (expand_vec_lfloor): New func decl for expanding lfloor.
11372         * config/riscv/riscv-v.cc (expand_vec_lfloor): New func impl
11373         for expanding lfloor.
11375 2023-10-13  Pan Li  <pan2.li@intel.com>
11377         * config/riscv/autovec.md (lceil<mode><v_i_l_ll_convert>2): New
11378         pattern] for lceil/lceilf.
11379         * config/riscv/riscv-protos.h (enum insn_type): New enum value.
11380         (expand_vec_lceil): New func decl for expanding lceil.
11381         * config/riscv/riscv-v.cc (expand_vec_lceil): New func impl
11382         for expanding lceil.
11384 2023-10-12  Michael Meissner  <meissner@linux.ibm.com>
11386         PR target/111778
11387         * config/rs6000/rs6000.cc (can_be_built_by_li_lis_and_rldicl): Protect
11388         code from shifts that are undefined.
11389         (can_be_built_by_li_lis_and_rldicr): Likewise.
11390         (can_be_built_by_li_and_rldic): Protect code from shifts that
11391         undefined.  Also replace uses of 1ULL with HOST_WIDE_INT_1U.
11393 2023-10-12  Alex Coplan  <alex.coplan@arm.com>
11395         * reg-notes.def (NOALIAS): Correct comment.
11397 2023-10-12  Jakub Jelinek  <jakub@redhat.com>
11399         PR bootstrap/111787
11400         * tree.h (wi::int_traits <unextended_tree>::needs_write_val_arg): New
11401         static data member.
11402         (int_traits <extended_tree <N>>::needs_write_val_arg): Likewise.
11403         (wi::ints_for): Provide separate partial specializations for
11404         generic_wide_int <extended_tree <N>> and INL_CONST_PRECISION or that
11405         and CONST_PRECISION, rather than using
11406         int_traits <extended_tree <N> >::precision_type as the second template
11407         argument.
11408         * rtl.h (wi::int_traits <rtx_mode_t>::needs_write_val_arg): New
11409         static data member.
11410         * double-int.h (wi::int_traits <double_int>::needs_write_val_arg):
11411         Likewise.
11413 2023-10-12  Mary Bennett  <mary.bennett@embecosm.com>
11415         PR middle-end/111777
11416         * doc/extend.texi: Change subsubsection to subsection for
11417         CORE-V built-ins.
11419 2023-10-12  Tamar Christina  <tamar.christina@arm.com>
11421         * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Add undef.
11423 2023-10-12  Jakub Jelinek  <jakub@redhat.com>
11425         * wide-int.h (widest_int_storage <N>::write_val): If l is small
11426         and there is space in u.val array, store a canary value at the
11427         end when checking.
11428         (widest_int_storage <N>::set_len): Check the canary hasn't been
11429         overwritten.
11431 2023-10-12  Jakub Jelinek  <jakub@redhat.com>
11433         PR c/102989
11434         * wide-int.h: Adjust file comment.
11435         (WIDE_INT_MAX_INL_ELTS): Define to former value of WIDE_INT_MAX_ELTS.
11436         (WIDE_INT_MAX_INL_PRECISION): Define.
11437         (WIDE_INT_MAX_ELTS): Change to 255.  Assert that WIDE_INT_MAX_INL_ELTS
11438         is smaller than WIDE_INT_MAX_ELTS.
11439         (RWIDE_INT_MAX_ELTS, RWIDE_INT_MAX_PRECISION, WIDEST_INT_MAX_ELTS,
11440         WIDEST_INT_MAX_PRECISION): Define.
11441         (WI_BINARY_RESULT_VAR, WI_UNARY_RESULT_VAR): Change write_val callers
11442         to pass 0 as a new argument.
11443         (class widest_int_storage): Likewise.
11444         (widest_int, widest2_int): Change typedefs to use widest_int_storage
11445         rather than fixed_wide_int_storage.
11446         (enum wi::precision_type): Add INL_CONST_PRECISION enumerator.
11447         (struct binary_traits): Add partial specializations for
11448         INL_CONST_PRECISION.
11449         (generic_wide_int): Add needs_write_val_arg static data member.
11450         (int_traits): Likewise.
11451         (wide_int_storage): Replace val non-static data member with a union
11452         u of it and HOST_WIDE_INT *valp.  Declare copy constructor, copy
11453         assignment operator and destructor.  Add unsigned int argument to
11454         write_val.
11455         (wide_int_storage::wide_int_storage): Initialize precision to 0
11456         in the default ctor.  Remove unnecessary {}s around STATIC_ASSERTs.
11457         Assert in non-default ctor T's precision_type is not
11458         INL_CONST_PRECISION and allocate u.valp for large precision.  Add
11459         copy constructor.
11460         (wide_int_storage::~wide_int_storage): New.
11461         (wide_int_storage::operator=): Add copy assignment operator.  In
11462         assignment operator remove unnecessary {}s around STATIC_ASSERTs,
11463         assert ctor T's precision_type is not INL_CONST_PRECISION and
11464         if precision changes, deallocate and/or allocate u.valp.
11465         (wide_int_storage::get_val): Return u.valp rather than u.val for
11466         large precision.
11467         (wide_int_storage::write_val): Likewise.  Add an unused unsigned int
11468         argument.
11469         (wide_int_storage::set_len): Use write_val instead of writing val
11470         directly.
11471         (wide_int_storage::from, wide_int_storage::from_array): Adjust
11472         write_val callers.
11473         (wide_int_storage::create): Allocate u.valp for large precisions.
11474         (wi::int_traits <wide_int_storage>::get_binary_precision): New.
11475         (fixed_wide_int_storage::fixed_wide_int_storage): Make default
11476         ctor defaulted.
11477         (fixed_wide_int_storage::write_val): Add unused unsigned int argument.
11478         (fixed_wide_int_storage::from, fixed_wide_int_storage::from_array):
11479         Adjust write_val callers.
11480         (wi::int_traits <fixed_wide_int_storage>::get_binary_precision): New.
11481         (WIDEST_INT): Define.
11482         (widest_int_storage): New template class.
11483         (wi::int_traits <widest_int_storage>): New.
11484         (trailing_wide_int_storage::write_val): Add unused unsigned int
11485         argument.
11486         (wi::get_binary_precision): Use
11487         wi::int_traits <WI_BINARY_RESULT (T1, T2)>::get_binary_precision
11488         rather than get_precision on get_binary_result.
11489         (wi::copy): Adjust write_val callers.  Don't call set_len if
11490         needs_write_val_arg.
11491         (wi::bit_not): If result.needs_write_val_arg, call write_val
11492         again with upper bound estimate of len.
11493         (wi::sext, wi::zext, wi::set_bit): Likewise.
11494         (wi::bit_and, wi::bit_and_not, wi::bit_or, wi::bit_or_not,
11495         wi::bit_xor, wi::add, wi::sub, wi::mul, wi::mul_high, wi::div_trunc,
11496         wi::div_floor, wi::div_ceil, wi::div_round, wi::divmod_trunc,
11497         wi::mod_trunc, wi::mod_floor, wi::mod_ceil, wi::mod_round,
11498         wi::lshift, wi::lrshift, wi::arshift): Likewise.
11499         (wi::bswap, wi::bitreverse): Assert result.needs_write_val_arg
11500         is false.
11501         (gt_ggc_mx, gt_pch_nx): Remove generic template for all
11502         generic_wide_int, instead add functions and templates for each
11503         storage of generic_wide_int.  Make functions for
11504         generic_wide_int <wide_int_storage> and templates for
11505         generic_wide_int <widest_int_storage <N>> deleted.
11506         (wi::mask, wi::shifted_mask): Adjust write_val calls.
11507         * wide-int.cc (zeros): Decrease array size to 1.
11508         (BLOCKS_NEEDED): Use CEIL.
11509         (canonize): Use HOST_WIDE_INT_M1.
11510         (wi::from_buffer): Pass 0 to write_val.
11511         (wi::to_mpz): Use CEIL.
11512         (wi::from_mpz): Likewise.  Pass 0 to write_val.  Use
11513         WIDE_INT_MAX_INL_ELTS instead of WIDE_INT_MAX_ELTS.
11514         (wi::mul_internal): Use WIDE_INT_MAX_INL_PRECISION instead of
11515         MAX_BITSIZE_MODE_ANY_INT in automatic array sizes, for prec
11516         above WIDE_INT_MAX_INL_PRECISION estimate precision from
11517         lengths of operands.  Use XALLOCAVEC allocated buffers for
11518         prec above WIDE_INT_MAX_INL_PRECISION.
11519         (wi::divmod_internal): Likewise.
11520         (wi::lshift_large): For len > WIDE_INT_MAX_INL_ELTS estimate
11521         it from xlen and skip.
11522         (rshift_large_common): Remove xprecision argument, add len
11523         argument with len computed in caller.  Don't return anything.
11524         (wi::lrshift_large, wi::arshift_large): Compute len here
11525         and pass it to rshift_large_common, for lengths above
11526         WIDE_INT_MAX_INL_ELTS using estimations from xlen if possible.
11527         (assert_deceq, assert_hexeq): For lengths above
11528         WIDE_INT_MAX_INL_ELTS use XALLOCAVEC allocated buffer.
11529         (test_printing): Use WIDE_INT_MAX_INL_PRECISION instead of
11530         WIDE_INT_MAX_PRECISION.
11531         * wide-int-print.h (WIDE_INT_PRINT_BUFFER_SIZE): Use
11532         WIDE_INT_MAX_INL_PRECISION instead of WIDE_INT_MAX_PRECISION.
11533         * wide-int-print.cc (print_decs, print_decu, print_hex): For
11534         lengths above WIDE_INT_MAX_INL_ELTS use XALLOCAVEC allocated buffer.
11535         * tree.h (wi::int_traits<extended_tree <N>>): Change precision_type
11536         to INL_CONST_PRECISION for N == ADDR_MAX_PRECISION.
11537         (widest_extended_tree): Use WIDEST_INT_MAX_PRECISION instead of
11538         WIDE_INT_MAX_PRECISION.
11539         (wi::ints_for): Use int_traits <extended_tree <N> >::precision_type
11540         instead of hard coded CONST_PRECISION.
11541         (widest2_int_cst): Use WIDEST_INT_MAX_PRECISION instead of
11542         WIDE_INT_MAX_PRECISION.
11543         (wi::extended_tree <N>::get_len): Use WIDEST_INT_MAX_PRECISION rather
11544         than WIDE_INT_MAX_PRECISION.
11545         (wi::ints_for::zero): Use
11546         wi::int_traits <wi::extended_tree <N> >::precision_type instead of
11547         wi::CONST_PRECISION.
11548         * tree.cc (build_replicated_int_cst): Formatting fix.  Use
11549         WIDE_INT_MAX_INL_ELTS rather than WIDE_INT_MAX_ELTS.
11550         * print-tree.cc (print_node): Don't print TREE_UNAVAILABLE on
11551         INTEGER_CSTs, TREE_VECs or SSA_NAMEs.
11552         * double-int.h (wi::int_traits <double_int>::precision_type): Change
11553         to INL_CONST_PRECISION from CONST_PRECISION.
11554         * poly-int.h (struct poly_coeff_traits): Add partial specialization
11555         for wi::INL_CONST_PRECISION.
11556         * cfgloop.h (bound_wide_int): New typedef.
11557         (struct nb_iter_bound): Change bound type from widest_int to
11558         bound_wide_int.
11559         (struct loop): Change nb_iterations_upper_bound,
11560         nb_iterations_likely_upper_bound and nb_iterations_estimate type from
11561         widest_int to bound_wide_int.
11562         * cfgloop.cc (record_niter_bound): Return early if wi::min_precision
11563         of i_bound is too large for bound_wide_int.  Adjustments for the
11564         widest_int to bound_wide_int type change in non-static data members.
11565         (get_estimated_loop_iterations, get_max_loop_iterations,
11566         get_likely_max_loop_iterations): Adjustments for the widest_int to
11567         bound_wide_int type change in non-static data members.
11568         * tree-vect-loop.cc (vect_transform_loop): Likewise.
11569         * tree-ssa-loop-niter.cc (do_warn_aggressive_loop_optimizations): Use
11570         XALLOCAVEC allocated buffer for i_bound len above
11571         WIDE_INT_MAX_INL_ELTS.
11572         (record_estimate): Return early if wi::min_precision of i_bound is too
11573         large for bound_wide_int.  Adjustments for the widest_int to
11574         bound_wide_int type change in non-static data members.
11575         (wide_int_cmp): Use bound_wide_int instead of widest_int.
11576         (bound_index): Use bound_wide_int instead of widest_int.
11577         (discover_iteration_bound_by_body_walk): Likewise.  Use
11578         widest_int::from to convert it to widest_int when passed to
11579         record_niter_bound.
11580         (maybe_lower_iteration_bound): Use widest_int::from to convert it to
11581         widest_int when passed to record_niter_bound.
11582         (estimate_numbers_of_iteration): Don't record upper bound if
11583         loop->nb_iterations has too large precision for bound_wide_int.
11584         (n_of_executions_at_most): Use widest_int::from.
11585         * tree-ssa-loop-ivcanon.cc (remove_redundant_iv_tests): Adjust for
11586         the widest_int to bound_wide_int changes.
11587         * match.pd (fold_sign_changed_comparison simplification): Use
11588         wide_int::from on wi::to_wide instead of wi::to_widest.
11589         * value-range.h (irange::maybe_resize): Avoid using memcpy on
11590         non-trivially copyable elements.
11591         * value-range.cc (irange_bitmask::dump): Use XALLOCAVEC allocated
11592         buffer for mask or value len above WIDE_INT_PRINT_BUFFER_SIZE.
11593         * fold-const.cc (fold_convert_const_int_from_int, fold_unary_loc):
11594         Use wide_int::from on wi::to_wide instead of wi::to_widest.
11595         * tree-ssa-ccp.cc (bit_value_binop): Zero extend r1max from width
11596         before calling wi::udiv_trunc.
11597         * lto-streamer-out.cc (output_cfg): Adjustments for the widest_int to
11598         bound_wide_int type change in non-static data members.
11599         * lto-streamer-in.cc (input_cfg): Likewise.
11600         (lto_input_tree_1): Use WIDE_INT_MAX_INL_ELTS rather than
11601         WIDE_INT_MAX_ELTS.  For length above WIDE_INT_MAX_INL_ELTS use
11602         XALLOCAVEC allocated buffer.  Formatting fix.
11603         * data-streamer-in.cc (streamer_read_wide_int,
11604         streamer_read_widest_int): Likewise.
11605         * tree-affine.cc (aff_combination_expand): Use placement new to
11606         construct name_expansion.
11607         (free_name_expansion): Destruct name_expansion.
11608         * gimple-ssa-strength-reduction.cc (struct slsr_cand_d): Change
11609         index type from widest_int to offset_int.
11610         (class incr_info_d): Change incr type from widest_int to offset_int.
11611         (alloc_cand_and_find_basis, backtrace_base_for_ref,
11612         restructure_reference, slsr_process_ref, create_mul_ssa_cand,
11613         create_mul_imm_cand, create_add_ssa_cand, create_add_imm_cand,
11614         slsr_process_add, cand_abs_increment, replace_mult_candidate,
11615         replace_unconditional_candidate, incr_vec_index,
11616         create_add_on_incoming_edge, create_phi_basis_1,
11617         replace_conditional_candidate, record_increment,
11618         record_phi_increments_1, phi_incr_cost_1, phi_incr_cost,
11619         lowest_cost_path, total_savings, ncd_with_phi, ncd_of_cand_and_phis,
11620         nearest_common_dominator_for_cands, insert_initializers,
11621         all_phi_incrs_profitable_1, replace_one_candidate,
11622         replace_profitable_candidates): Use offset_int rather than widest_int
11623         and wi::to_offset rather than wi::to_widest.
11624         * real.cc (real_to_integer): Use WIDE_INT_MAX_INL_ELTS rather than
11625         2 * WIDE_INT_MAX_ELTS and for words above that use XALLOCAVEC
11626         allocated buffer.
11627         * tree-ssa-loop-ivopts.cc (niter_for_exit): Use placement new
11628         to construct tree_niter_desc and destruct it on failure.
11629         (free_tree_niter_desc): Destruct tree_niter_desc if value is non-NULL.
11630         * gengtype.cc (main): Remove widest_int handling.
11631         * graphite-isl-ast-to-gimple.cc (widest_int_from_isl_expr_int): Use
11632         WIDEST_INT_MAX_ELTS instead of WIDE_INT_MAX_ELTS.
11633         * gimple-ssa-warn-alloca.cc (pass_walloca::execute): Use
11634         WIDE_INT_MAX_INL_PRECISION instead of WIDE_INT_MAX_PRECISION and
11635         assert get_len () fits into it.
11636         * value-range-pretty-print.cc (vrange_printer::print_irange_bitmasks):
11637         For mask or value lengths above WIDE_INT_MAX_INL_ELTS use XALLOCAVEC
11638         allocated buffer.
11639         * gimple-ssa-sprintf.cc (adjust_range_for_overflow): Use
11640         wide_int::from on wi::to_wide instead of wi::to_widest.
11641         * omp-general.cc (score_wide_int): New typedef.
11642         (omp_context_compute_score): Use score_wide_int instead of widest_int
11643         and adjust for those changes.
11644         (struct omp_declare_variant_entry): Change score and
11645         score_in_declare_simd_clone non-static data member type from widest_int
11646         to score_wide_int.
11647         (omp_resolve_late_declare_variant, omp_resolve_declare_variant): Use
11648         score_wide_int instead of widest_int and adjust for those changes.
11649         (omp_lto_output_declare_variant_alt): Likewise.
11650         (omp_lto_input_declare_variant_alt): Likewise.
11651         * godump.cc (go_output_typedef): Assert get_len () is smaller than
11652         WIDE_INT_MAX_INL_ELTS.
11654 2023-10-12  Pan Li  <pan2.li@intel.com>
11656         * config/riscv/autovec.md (lround<mode><v_i_l_ll_convert>2): New
11657         pattern for lround/lroundf.
11658         * config/riscv/riscv-protos.h (enum insn_type): New enum value.
11659         (expand_vec_lround): New func decl for expanding lround.
11660         * config/riscv/riscv-v.cc (expand_vec_lround): New func impl
11661         for expanding lround.
11663 2023-10-12  Jakub Jelinek  <jakub@redhat.com>
11665         * dwarf2out.h (wide_int_ptr): Remove.
11666         (dw_wide_int_ptr): New typedef.
11667         (struct dw_val_node): Change type of val_wide from wide_int_ptr
11668         to dw_wide_int_ptr.
11669         (struct dw_wide_int): New type.
11670         (dw_wide_int::elt): New method.
11671         (dw_wide_int::operator ==): Likewise.
11672         * dwarf2out.cc (get_full_len): Change argument type to
11673         const dw_wide_int & from const wide_int &.  Use CEIL.  Call
11674         get_precision method instead of calling wi::get_precision.
11675         (alloc_dw_wide_int): New function.
11676         (add_AT_wide): Change w argument type to const wide_int_ref &
11677         from const wide_int &.  Use alloc_dw_wide_int.
11678         (mem_loc_descriptor, loc_descriptor): Use alloc_dw_wide_int.
11679         (insert_wide_int): Change val argument type to const wide_int_ref &
11680         from const wide_int &.
11681         (add_const_value_attribute): Pass rtx_mode_t temporary directly to
11682         add_AT_wide instead of using a temporary variable.
11684 2023-10-12  Richard Biener  <rguenther@suse.de>
11686         PR tree-optimization/111764
11687         * tree-vect-loop.cc (check_reduction_path): Remove the attempt
11688         to allow x + x via special-casing of assigns.
11690 2023-10-12  Hu, Lin1  <lin1.hu@intel.com>
11692         * common/config/i386/cpuinfo.h (get_available_features):
11693         Detect USER_MSR.
11694         * common/config/i386/i386-common.cc (OPTION_MASK_ISA2_USER_MSR_SET): New.
11695         (OPTION_MASK_ISA2_USER_MSR_UNSET): Ditto.
11696         (ix86_handle_option): Handle -musermsr.
11697         * common/config/i386/i386-cpuinfo.h (enum processor_features):
11698         Add FEATURE_USER_MSR.
11699         * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for usermsr.
11700         * config.gcc: Add usermsrintrin.h
11701         * config/i386/cpuid.h (bit_USER_MSR): New.
11702         * config/i386/i386-builtin-types.def:
11703         Add DEF_FUNCTION_TYPE (VOID, UINT64, UINT64).
11704         * config/i386/i386-builtins.cc (ix86_init_mmx_sse_builtins):
11705         Add __builtin_urdmsr and __builtin_uwrmsr.
11706         * config/i386/i386-builtins.h (ix86_builtins):
11707         Add IX86_BUILTIN_URDMSR and IX86_BUILTIN_UWRMSR.
11708         * config/i386/i386-c.cc (ix86_target_macros_internal):
11709         Define __USER_MSR__.
11710         * config/i386/i386-expand.cc (ix86_expand_builtin):
11711         Handle new builtins.
11712         * config/i386/i386-isa.def (USER_MSR): Add DEF_PTA(USER_MSR).
11713         * config/i386/i386-options.cc (ix86_valid_target_attribute_inner_p):
11714         Handle usermsr.
11715         * config/i386/i386.md (urdmsr): New define_insn.
11716         (uwrmsr): Ditto.
11717         * config/i386/i386.opt: Add option -musermsr.
11718         * config/i386/x86gprintrin.h: Include usermsrintrin.h
11719         * doc/extend.texi: Document usermsr.
11720         * doc/invoke.texi: Document -musermsr.
11721         * doc/sourcebuild.texi: Document target usermsr.
11722         * config/i386/usermsrintrin.h: New file.
11724 2023-10-12  Yang Yujie  <yangyujie@loongson.cn>
11726         * config.gcc: Add loongarch-driver.h to tm_files.
11727         * config/loongarch/loongarch.h: Do not include loongarch-driver.h.
11728         * config/loongarch/t-loongarch: Append loongarch-multilib.h to $(GTM_H)
11729         instead of $(TM_H) for building generator programs.
11731 2023-10-12  Kewen Lin  <linkw@linux.ibm.com>
11733         PR target/111367
11734         * config/rs6000/rs6000.md (stack_protect_setsi): Support prefixed
11735         instruction emission and incorporate to stack_protect_set<mode>.
11736         (stack_protect_setdi): Rename to ...
11737         (stack_protect_set<mode>): ... this, adjust constraint.
11738         (stack_protect_testsi): Support prefixed instruction emission and
11739         incorporate to stack_protect_test<mode>.
11740         (stack_protect_testdi): Rename to ...
11741         (stack_protect_test<mode>): ... this, adjust constraint.
11743 2023-10-12  Kewen Lin  <linkw@linux.ibm.com>
11745         * tree-vect-stmts.cc (vectorizable_store): Consider generated
11746         VEC_PERM_EXPR stmt for VMAT_CONTIGUOUS_REVERSE in costing as
11747         vec_perm.
11749 2023-10-12  Kewen Lin  <linkw@linux.ibm.com>
11751         * tree-vect-stmts.cc (vect_model_store_cost): Remove.
11752         (vectorizable_store): Adjust the costing for the remaining memory
11753         access types VMAT_CONTIGUOUS{, _DOWN, _REVERSE}.
11755 2023-10-12  Kewen Lin  <linkw@linux.ibm.com>
11757         * tree-vect-stmts.cc (vect_model_store_cost): Assert it will never
11758         get VMAT_CONTIGUOUS_PERMUTE and remove VMAT_CONTIGUOUS_PERMUTE related
11759         handlings.
11760         (vectorizable_store): Adjust the cost handling on
11761         VMAT_CONTIGUOUS_PERMUTE without calling vect_model_store_cost.
11763 2023-10-12  Kewen Lin  <linkw@linux.ibm.com>
11765         * tree-vect-stmts.cc (vect_model_store_cost): Assert it will never
11766         get VMAT_LOAD_STORE_LANES.
11767         (vectorizable_store): Adjust the cost handling on VMAT_LOAD_STORE_LANES
11768         without calling vect_model_store_cost.  Factor out new lambda function
11769         update_prologue_cost.
11771 2023-10-12  Kewen Lin  <linkw@linux.ibm.com>
11773         * tree-vect-stmts.cc (vect_model_store_cost): Assert it won't get
11774         VMAT_ELEMENTWISE and VMAT_STRIDED_SLP any more, and remove their
11775         related handlings.
11776         (vectorizable_store): Adjust the cost handling on VMAT_ELEMENTWISE
11777         and VMAT_STRIDED_SLP without calling vect_model_store_cost.
11779 2023-10-12  Kewen Lin  <linkw@linux.ibm.com>
11781         * tree-vect-stmts.cc (vectorizable_store): Adjust costing on
11782         vectorizable_scan_store without calling vect_model_store_cost
11783         any more.
11785 2023-10-12  Kewen Lin  <linkw@linux.ibm.com>
11787         * tree-vect-stmts.cc (vect_model_store_cost): Assert it won't get
11788         VMAT_GATHER_SCATTER any more, remove VMAT_GATHER_SCATTER related
11789         handlings and the related parameter gs_info.
11790         (vect_build_scatter_store_calls): Add the handlings on costing with
11791         one more argument cost_vec.
11792         (vectorizable_store): Adjust the cost handling on VMAT_GATHER_SCATTER
11793         without calling vect_model_store_cost any more.
11795 2023-10-12  Kewen Lin  <linkw@linux.ibm.com>
11797         * tree-vect-stmts.cc (vectorizable_store): Move and duplicate the call
11798         to vect_model_store_cost down to some different transform paths
11799         according to the handlings of different vect_memory_access_types
11800         or some special handling need.
11802 2023-10-12  Kewen Lin  <linkw@linux.ibm.com>
11804         * tree-vect-stmts.cc (vectorizable_store): Ensure the generated
11805         vector store for some case of VMAT_ELEMENTWISE is supported.
11807 2023-10-12  Mo, Zewei  <zewei.mo@intel.com>
11808             Hu Lin1  <lin1.hu@intel.com>
11809             Hongyu Wang  <hongyu.wang@intel.com>
11811         * config/i386/i386.cc (gen_push2): New function to emit push2
11812         and adjust cfa offset.
11813         (ix86_pro_and_epilogue_can_use_push2_pop2): New function to
11814         determine whether push2/pop2 can be used.
11815         (ix86_compute_frame_layout): Adjust preferred stack boundary
11816         and stack alignment needed for push2/pop2.
11817         (ix86_emit_save_regs): Emit push2 when available.
11818         (ix86_emit_restore_reg_using_pop2): New function to emit pop2
11819         and adjust cfa info.
11820         (ix86_emit_restore_regs_using_pop2): New function to loop
11821         through the saved regs and call above.
11822         (ix86_expand_epilogue): Call ix86_emit_restore_regs_using_pop2
11823         when push2pop2 available.
11824         * config/i386/i386.md (push2_di): New pattern for push2.
11825         (pop2_di): Likewise for pop2.
11827 2023-10-12  Pan Li  <pan2.li@intel.com>
11829         * config/riscv/autovec.md (lrint<mode><vlconvert>2): Rename from.
11830         (lrint<mode><v_i_l_ll_convert>2): Rename to.
11831         * config/riscv/vector-iterators.md: Rename and remove TARGET_64BIT.
11833 2023-10-11  Kito Cheng  <kito.cheng@sifive.com>
11835         * config/riscv/riscv-opts.h (TARGET_MIN_VLEN_OPTS): New.
11837 2023-10-11  Jeff Law  <jlaw@ventanamicro.com>
11839         * config/riscv/riscv.md (jump): Adjust sequence to use a "jump"
11840         pseudo op instead of a "call" pseudo op.
11842 2023-10-11  Kito Cheng  <kito.cheng@sifive.com>
11844         * config/riscv/riscv-subset.h (riscv_subset_list::parse_single_std_ext):
11845         New.
11846         (riscv_subset_list::parse_single_multiletter_ext): Ditto.
11847         (riscv_subset_list::clone): Ditto.
11848         (riscv_subset_list::parse_single_ext): Ditto.
11849         (riscv_subset_list::set_loc): Ditto.
11850         (riscv_set_arch_by_subset_list): Ditto.
11851         * common/config/riscv/riscv-common.cc
11852         (riscv_subset_list::parse_single_std_ext): New.
11853         (riscv_subset_list::parse_single_multiletter_ext): Ditto.
11854         (riscv_subset_list::clone): Ditto.
11855         (riscv_subset_list::parse_single_ext): Ditto.
11856         (riscv_subset_list::set_loc): Ditto.
11857         (riscv_set_arch_by_subset_list): Ditto.
11859 2023-10-11  Kito Cheng  <kito.cheng@sifive.com>
11861         * config/riscv/riscv.cc (riscv_convert_vector_bits): Get setting
11862         from argument rather than get setting from global setting.
11863         (riscv_override_options_internal): New, splited from
11864         riscv_override_options, also take a gcc_options argument.
11865         (riscv_option_override): Splited most part to
11866         riscv_override_options_internal.
11868 2023-10-11  Kito Cheng  <kito.cheng@sifive.com>
11870         * doc/options.texi (Mask): Document TARGET_<NAME>_P and
11871         TARGET_<NAME>_OPTS_P.
11872         (InverseMask): Ditto.
11873         * opth-gen.awk (Mask): Generate TARGET_<NAME>_P and
11874         TARGET_<NAME>_OPTS_P macro.
11875         (InverseMask): Ditto.
11877 2023-10-11  Andrew Pinski  <pinskia@gmail.com>
11879         PR tree-optimization/111282
11880         * match.pd (`a & ~(a ^ b)`, `a & (a == b)`,
11881         `a & ((~a) ^ b)`): New patterns.
11883 2023-10-11  Mary Bennett  <mary.bennett@embecosm.com>
11885         * common/config/riscv/riscv-common.cc: Add the XCValu
11886         extension.
11887         * config/riscv/constraints.md: Add builtins for the XCValu
11888         extension.
11889         * config/riscv/predicates.md (immediate_register_operand):
11890         Likewise.
11891         * config/riscv/corev.def: Likewise.
11892         * config/riscv/corev.md: Likewise.
11893         * config/riscv/riscv-builtins.cc (AVAIL): Likewise.
11894         (RISCV_ATYPE_UHI): Likewise.
11895         * config/riscv/riscv-ftypes.def: Likewise.
11896         * config/riscv/riscv.opt: Likewise.
11897         * config/riscv/riscv.cc (riscv_print_operand): Likewise.
11898         * doc/extend.texi: Add XCValu documentation.
11899         * doc/sourcebuild.texi: Likewise.
11901 2023-10-11  Mary Bennett  <mary.bennett@embecosm.com>
11903         * common/config/riscv/riscv-common.cc: Add XCVmac.
11904         * config/riscv/riscv-ftypes.def: Add XCVmac builtins.
11905         * config/riscv/riscv-builtins.cc: Likewise.
11906         * config/riscv/riscv.md: Likewise.
11907         * config/riscv/riscv.opt: Likewise.
11908         * doc/extend.texi: Add XCVmac builtin documentation.
11909         * doc/sourcebuild.texi: Likewise.
11910         * config/riscv/corev.def: New file.
11911         * config/riscv/corev.md: New file.
11913 2023-10-11  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
11915         * config/riscv/autovec.md: Fix index bug.
11916         * config/riscv/riscv-protos.h (gather_scatter_valid_offset_mode_p): New function.
11917         * config/riscv/riscv-v.cc (expand_gather_scatter): Fix index bug.
11918         (gather_scatter_valid_offset_mode_p): New function.
11920 2023-10-11  Pan Li  <pan2.li@intel.com>
11922         * config/riscv/autovec.md (lrint<mode><vlconvert>2): New pattern
11923         for lrint/lintf.
11924         * config/riscv/riscv-protos.h (expand_vec_lrint): New func decl
11925         for expanding lint.
11926         * config/riscv/riscv-v.cc (emit_vec_cvt_x_f): New helper func impl
11927         for vfcvt.x.f.v.
11928         (expand_vec_lrint): New function impl for expanding lint.
11929         * config/riscv/vector-iterators.md: New mode attr and iterator.
11931 2023-10-11  Richard Biener  <rguenther@suse.de>
11932             Jakub Jelinek  <jakub@redhat.com>
11934         PR tree-optimization/111519
11935         * tree-ssa-strlen.cc (strlen_pass::count_nonzero_bytes): Add vuse
11936         argument and pass it through to recursive calls and
11937         count_nonzero_bytes_addr calls.  Don't shadow the stmt argument, but
11938         change stmt for gimple_assign_single_p statements for which we don't
11939         immediately punt.
11940         (strlen_pass::count_nonzero_bytes_addr): Add vuse argument and pass
11941         it through to recursive calls and count_nonzero_bytes calls.  Don't
11942         use get_strinfo if gimple_vuse (stmt) is different from vuse.  Don't
11943         shadow the stmt argument.
11945 2023-10-11  Roger Sayle  <roger@nextmovesoftware.com>
11947         PR middle-end/101955
11948         PR tree-optimization/106245
11949         * simplify-rtx.cc (simplify_relational_operation_1): Simplify
11950         the RTL (ne:SI (subreg:QI (ashift:SI x 7) 0) 0) to (and:SI x 1).
11952 2023-10-11  liuhongt  <hongtao.liu@intel.com>
11954         PR target/111745
11955         * config/i386/mmx.md (divv4hf3): Refine predicate of
11956         operands[2] with register_operand.
11958 2023-10-10  Andrew Waterman  <andrew@sifive.com>
11959             Philipp Tomsich  <philipp.tomsich@vrull.eu>
11960             Jeff Law  <jlaw@ventanamicro.com>
11962         * config/riscv/riscv.cc (struct machine_function): Track if a
11963         far-branch/jump is used within a function (and $ra needs to be
11964         saved).
11965         (riscv_print_operand): Implement 'N' (inverse integer branch).
11966         (riscv_far_jump_used_p): Implement.
11967         (riscv_save_return_addr_reg_p): New function.
11968         (riscv_save_reg_p): Use riscv_save_return_addr_reg_p.
11969         * config/riscv/riscv.h (FIXED_REGISTERS): Update $ra.
11970         (CALL_USED_REGISTERS): Update $ra.
11971         * config/riscv/riscv.md: Add new types "ret" and "jalr".
11972         (length attribute): Handle long conditional and unconditional
11973         branches.
11974         (conditional branch pattern): Handle case where jump can not
11975         reach the intended target.
11976         (indirect_jump, tablejump): Use new "jalr" type.
11977         (simple_return): Use new "ret" type.
11978         (simple_return_internal, eh_return_internal): Likewise.
11979         (gpr_restore_return, riscv_mret): Likewise.
11980         (riscv_uret, riscv_sret): Likewise.
11981         * config/riscv/generic.md (generic_branch): Also recognize jalr & ret
11982         types.
11983         * config/riscv/sifive-7.md (sifive_7_jump): Likewise.
11985 2023-10-10  Andrew Pinski  <pinskia@gmail.com>
11987         PR tree-optimization/111679
11988         * match.pd (`a | ((~a) ^ b)`): New pattern.
11990 2023-10-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
11992         PR target/111751
11993         * config/riscv/autovec.md: Add VLS BOOL modes.
11995 2023-10-10  Richard Biener  <rguenther@suse.de>
11997         PR tree-optimization/111751
11998         * fold-const.cc (fold_view_convert_expr): Up the buffer size
11999         to 128 bytes.
12000         * tree-ssa-sccvn.cc (visit_reference_op_load): Special case
12001         constants, giving up when re-interpretation to the target type
12002         fails.
12004 2023-10-10  Richard Biener  <rguenther@suse.de>
12006         PR tree-optimization/111751
12007         * tree-ssa-sccvn.cc (visit_reference_op_load): Exempt
12008         BLKmode result from the padding bits check.
12010 2023-10-10  Claudiu Zissulescu  <claziss@gmail.com>
12012         * config/arc/arc.cc (arc_select_cc_mode): Match NEG code with
12013         the first operand.
12014         * config/arc/arc.md (addsi_compare): Make pattern canonical.
12015         (addsi_compare_2): Fix identation, constraint letters.
12016         (addsi_compare_3): Likewise.
12018 2023-10-09  Eugene Rozenfeld  <erozen@microsoft.com>
12020         * auto-profile.cc (afdo_calculate_branch_prob): Fix count comparisons
12021         * tree-vect-loop-manip.cc (vect_do_peeling): Guard against zero count
12022         when scaling loop profile
12024 2023-10-09  Andrew MacLeod  <amacleod@redhat.com>
12026         PR tree-optimization/111694
12027         * gimple-range-cache.cc (ranger_cache::fill_block_cache): Adjust
12028         equivalence range.
12029         * value-relation.cc (adjust_equivalence_range): New.
12030         * value-relation.h (adjust_equivalence_range): New prototype.
12032 2023-10-09  Andrew MacLeod  <amacleod@redhat.com>
12034         * gimple-range-gori.cc (gori_compute::compute_operand1_range): Do
12035         not call get_identity_relation.
12036         (gori_compute::compute_operand2_range): Ditto.
12037         * value-relation.cc (get_identity_relation): Remove.
12038         * value-relation.h (get_identity_relation): Remove protyotype.
12040 2023-10-09  Robin Dapp  <rdapp@ventanamicro.com>
12042         * config/riscv/riscv-cores.def (RISCV_TUNE): Add parameter.
12043         * config/riscv/riscv-opts.h (enum riscv_microarchitecture_type):
12044         Add generic_ooo.
12045         * config/riscv/riscv.cc (riscv_sched_adjust_cost): Implement
12046         scheduler hook.
12047         (TARGET_SCHED_ADJUST_COST): Define.
12048         * config/riscv/riscv.md (no,yes"): Include generic-ooo.md
12049         * config/riscv/riscv.opt: Add -madjust-lmul-cost.
12050         * config/riscv/generic-ooo.md: New file.
12051         * config/riscv/vector.md: Add vsetvl_pre.
12053 2023-10-09  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
12055         * config/riscv/riscv-opts.h (TARGET_VECTOR_MISALIGN_SUPPORTED): New macro.
12056         * config/riscv/riscv.cc (riscv_support_vector_misalignment): Depend on movmisalign pattern.
12057         * config/riscv/vector.md (movmisalign<mode>): New pattern.
12059 2023-10-09  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
12061         * config/riscv/thead.cc (th_mempair_save_regs): Fix missing CFI
12062         directives for store-pair instruction.
12064 2023-10-09  Richard Biener  <rguenther@suse.de>
12066         PR tree-optimization/111715
12067         * alias.cc (reference_alias_ptr_type_1): When we have
12068         a type-punning ref at the base search for the access
12069         path part that's still semantically valid.
12071 2023-10-09  Pan Li  <pan2.li@intel.com>
12073         * config/riscv/riscv-v.cc (shuffle_bswap_pattern): New func impl
12074         for shuffle bswap.
12075         (expand_vec_perm_const_1): Add handling for shuffle bswap pattern.
12077 2023-10-09  Roger Sayle  <roger@nextmovesoftware.com>
12079         * config/i386/i386-expand.cc (ix86_split_ashr): Split shifts by
12080         one into ashr[sd]i3_carry followed by rcr[sd]i2, if TARGET_USE_RCR
12081         or -Oz.
12082         (ix86_split_lshr): Likewise, split shifts by one bit into
12083         lshr[sd]i3_carry followed by rcr[sd]i2, if TARGET_USE_RCR or -Oz.
12084         * config/i386/i386.h (TARGET_USE_RCR): New backend macro.
12085         * config/i386/i386.md (rcrsi2): New define_insn for rcrl.
12086         (rcrdi2): New define_insn for rcrq.
12087         (<anyshiftrt><mode>3_carry): New define_insn for right shifts that
12088         set the carry flag from the least significant bit, modelled using
12089         UNSPEC_CC_NE.
12090         * config/i386/x86-tune.def (X86_TUNE_USE_RCR): New tuning parameter
12091         controlling use of rcr 1 vs. shrd, which is significantly faster on
12092         AMD processors.
12094 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
12096         * config/i386/i386.opt: Allow -mno-evex512.
12098 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
12099             Hu, Lin1  <lin1.hu@intel.com>
12101         * config/i386/sse.md (V48H_AVX512VL): Add TARGET_EVEX512.
12102         (VFH): Ditto.
12103         (VF2H): Ditto.
12104         (VFH_AVX512VL): Ditto.
12105         (VHFBF): Ditto.
12106         (VHF_AVX512VL): Ditto.
12107         (VI2H_AVX512VL): Ditto.
12108         (VI2F_256_512): Ditto.
12109         (VF48_I1248): Remove unused iterator.
12110         (VF48H_AVX512VL): Add TARGET_EVEX512.
12111         (VF_AVX512): Remove unused iterator.
12112         (REDUC_PLUS_MODE): Add TARGET_EVEX512.
12113         (REDUC_SMINMAX_MODE): Ditto.
12114         (FMAMODEM): Ditto.
12115         (VFH_SF_AVX512VL): Ditto.
12116         (VEC_PERM_AVX2): Ditto.
12118 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
12119             Hu, Lin1  <lin1.hu@intel.com>
12121         * config/i386/sse.md (VI1_AVX512VL): Add TARGET_EVEX512.
12122         (VI8_FVL): Ditto.
12123         (VI1_AVX512F): Ditto.
12124         (VI1_AVX512VNNI): Ditto.
12125         (VI1_AVX512VL_F): Ditto.
12126         (VI12_VI48F_AVX512VL): Ditto.
12127         (*avx512f_permvar_truncv32hiv32qi_1): Ditto.
12128         (sdot_prod<mode>): Ditto.
12129         (VEC_PERM_AVX2): Ditto.
12130         (VPERMI2): Ditto.
12131         (VPERMI2I): Ditto.
12132         (vpmadd52<vpmadd52type>v8di): Ditto.
12133         (usdot_prod<mode>): Ditto.
12134         (vpdpbusd_v16si): Ditto.
12135         (vpdpbusds_v16si): Ditto.
12136         (vpdpwssd_v16si): Ditto.
12137         (vpdpwssds_v16si): Ditto.
12138         (VI48_AVX512VP2VL): Ditto.
12139         (avx512vp2intersect_2intersectv16si): Ditto.
12140         (VF_AVX512BF16VL): Ditto.
12141         (VF1_AVX512_256): Ditto.
12143 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
12145         * config/i386/i386-expand.cc (ix86_expand_vector_init_duplicate):
12146         Make sure there is EVEX512 enabled.
12147         (ix86_expand_vecop_qihi2): Refuse V32QI->V32HI when no EVEX512.
12148         * config/i386/i386.cc (ix86_hard_regno_mode_ok): Disable 64 bit mask
12149         when !TARGET_EVEX512.
12150         * config/i386/i386.md (avx512bw_512): New.
12151         (SWI1248_AVX512BWDQ_64): Add TARGET_EVEX512.
12152         (*zero_extendsidi2): Change isa to avx512bw_512.
12153         (kmov_isa): Ditto.
12154         (*anddi_1): Ditto.
12155         (*andn<mode>_1): Change isa to kmov_isa.
12156         (*<code><mode>_1): Ditto.
12157         (*notxor<mode>_1): Ditto.
12158         (*one_cmpl<mode>2_1): Ditto.
12159         (*one_cmplsi2_1_zext): Change isa to avx512bw_512.
12160         (*ashl<mode>3_1): Change isa to kmov_isa.
12161         (*lshr<mode>3_1): Ditto.
12162         * config/i386/sse.md (VI12HFBF_AVX512VL): Add TARGET_EVEX512.
12163         (VI1248_AVX512VLBW): Ditto.
12164         (VHFBF_AVX512VL): Ditto.
12165         (VI): Ditto.
12166         (VIHFBF): Ditto.
12167         (VI_AVX2): Ditto.
12168         (VI1_AVX512): Ditto.
12169         (VI12_256_512_AVX512VL): Ditto.
12170         (VI2_AVX2_AVX512BW): Ditto.
12171         (VI2_AVX512VNNIBW): Ditto.
12172         (VI2_AVX512VL): Ditto.
12173         (VI2HFBF_AVX512VL): Ditto.
12174         (VI8_AVX2_AVX512BW): Ditto.
12175         (VIMAX_AVX2_AVX512BW): Ditto.
12176         (VIMAX_AVX512VL): Ditto.
12177         (VI12_AVX2_AVX512BW): Ditto.
12178         (VI124_AVX2_24_AVX512F_1_AVX512BW): Ditto.
12179         (VI248_AVX512VL): Ditto.
12180         (VI248_AVX512VLBW): Ditto.
12181         (VI248_AVX2_8_AVX512F_24_AVX512BW): Ditto.
12182         (VI248_AVX512BW): Ditto.
12183         (VI248_AVX512BW_AVX512VL): Ditto.
12184         (VI248_512): Ditto.
12185         (VI124_256_AVX512F_AVX512BW): Ditto.
12186         (VI_AVX512BW): Ditto.
12187         (VIHFBF_AVX512BW): Ditto.
12188         (SWI1248_AVX512BWDQ): Ditto.
12189         (SWI1248_AVX512BW): Ditto.
12190         (SWI1248_AVX512BWDQ2): Ditto.
12191         (*knotsi_1_zext): Ditto.
12192         (define_split for zero_extend + not): Ditto.
12193         (kunpckdi): Ditto.
12194         (REDUC_SMINMAX_MODE): Ditto.
12195         (VEC_EXTRACT_MODE): Ditto.
12196         (*avx512bw_permvar_truncv16siv16hi_1): Ditto.
12197         (*avx512bw_permvar_truncv16siv16hi_1_hf): Ditto.
12198         (truncv32hiv32qi2): Ditto.
12199         (avx512bw_<code>v32hiv32qi2): Ditto.
12200         (avx512bw_<code>v32hiv32qi2_mask): Ditto.
12201         (avx512bw_<code>v32hiv32qi2_mask_store): Ditto.
12202         (usadv64qi): Ditto.
12203         (VEC_PERM_AVX2): Ditto.
12204         (AVX512ZEXTMASK): Ditto.
12205         (SWI24_MASK): New.
12206         (vec_pack_trunc_<mode>): Change iterator to SWI24_MASK.
12207         (avx512bw_packsswb<mask_name>): Add TARGET_EVEX512.
12208         (avx512bw_packssdw<mask_name>): Ditto.
12209         (avx512bw_interleave_highv64qi<mask_name>): Ditto.
12210         (avx512bw_interleave_lowv64qi<mask_name>): Ditto.
12211         (<mask_codefor>avx512bw_pshuflwv32hi<mask_name>): Ditto.
12212         (<mask_codefor>avx512bw_pshufhwv32hi<mask_name>): Ditto.
12213         (vec_unpacks_lo_di): Ditto.
12214         (SWI48x_MASK): New.
12215         (vec_unpacks_hi_<mode>): Change iterator to SWI48x_MASK.
12216         (avx512bw_umulhrswv32hi3<mask_name>): Add TARGET_EVEX512.
12217         (VI1248_AVX512VL_AVX512BW): Ditto.
12218         (avx512bw_<code>v32qiv32hi2<mask_name>): Ditto.
12219         (*avx512bw_zero_extendv32qiv32hi2_1): Ditto.
12220         (*avx512bw_zero_extendv32qiv32hi2_2): Ditto.
12221         (<insn>v32qiv32hi2): Ditto.
12222         (pbroadcast_evex_isa): Change isa attribute to avx512bw_512.
12223         (VPERMI2): Add TARGET_EVEX512.
12224         (VPERMI2I): Ditto.
12226 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
12228         * config/i386/i386-expand.cc (ix86_expand_sse2_mulvxdi3):
12229         Add TARGET_EVEX512 for 512 bit usage.
12230         * config/i386/i386.cc (standard_sse_constant_opcode): Ditto.
12231         * config/i386/sse.md (VF1_VF2_AVX512DQ): Ditto.
12232         (VF1_128_256VL): Ditto.
12233         (VF2_AVX512VL): Ditto.
12234         (VI8_256_512): Ditto.
12235         (<mask_codefor>fixuns_trunc<mode><sseintvecmodelower>2<mask_name>):
12236         Ditto.
12237         (AVX512_VEC): Ditto.
12238         (AVX512_VEC_2): Ditto.
12239         (VI4F_BRCST32x2): Ditto.
12240         (VI8F_BRCST64x2): Ditto.
12242 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
12244         * config/i386/i386-builtins.cc
12245         (ix86_vectorize_builtin_gather): Disable 512 bit gather
12246         when !TARGET_EVEX512.
12247         * config/i386/i386-expand.cc (ix86_valid_mask_cmp_mode):
12248         Add TARGET_EVEX512.
12249         (ix86_expand_int_sse_cmp): Ditto.
12250         (ix86_expand_vector_init_one_nonzero): Disable subroutine
12251         when !TARGET_EVEX512.
12252         (ix86_emit_swsqrtsf): Add TARGET_EVEX512.
12253         (ix86_vectorize_vec_perm_const): Disable subroutine when
12254         !TARGET_EVEX512.
12255         * config/i386/i386.cc
12256         (standard_sse_constant_p): Add TARGET_EVEX512.
12257         (standard_sse_constant_opcode): Ditto.
12258         (ix86_get_ssemov): Ditto.
12259         (ix86_legitimate_constant_p): Ditto.
12260         (ix86_vectorize_builtin_scatter): Diable 512 bit scatter
12261         when !TARGET_EVEX512.
12262         * config/i386/i386.md (avx512f_512): New.
12263         (movxi): Add TARGET_EVEX512.
12264         (*movxi_internal_avx512f): Ditto.
12265         (*movdi_internal): Change alternative 12 to ?Yv. Adjust mode
12266         for alternative 13.
12267         (*movsi_internal): Change alternative 8 to ?Yv. Adjust mode for
12268         alternative 9.
12269         (*movhi_internal): Change alternative 11 to *Yv.
12270         (*movdf_internal): Change alternative 12 to Yv.
12271         (*movsf_internal): Change alternative 5 to Yv. Adjust mode for
12272         alternative 5 and 6.
12273         (*mov<mode>_internal): Change alternative 4 to Yv.
12274         (define_split for convert SF to DF): Add TARGET_EVEX512.
12275         (extendbfsf2_1): Ditto.
12276         * config/i386/predicates.md (bcst_mem_operand): Disable predicate
12277         for 512 bit when !TARGET_EVEX512.
12278         * config/i386/sse.md (VMOVE): Add TARGET_EVEX512.
12279         (V48_AVX512VL): Ditto.
12280         (V48_256_512_AVX512VL): Ditto.
12281         (V48H_AVX512VL): Ditto.
12282         (VI12_AVX512VL): Ditto.
12283         (V): Ditto.
12284         (V_512): Ditto.
12285         (V_256_512): Ditto.
12286         (VF): Ditto.
12287         (VF1_VF2_AVX512DQ): Ditto.
12288         (VFH): Ditto.
12289         (VFB): Ditto.
12290         (VF1): Ditto.
12291         (VF1_AVX2): Ditto.
12292         (VF2): Ditto.
12293         (VF2H): Ditto.
12294         (VF2_512_256): Ditto.
12295         (VF2_512_256VL): Ditto.
12296         (VF_512): Ditto.
12297         (VFB_512): Ditto.
12298         (VI48_AVX512VL): Ditto.
12299         (VI1248_AVX512VLBW): Ditto.
12300         (VF_AVX512VL): Ditto.
12301         (VFH_AVX512VL): Ditto.
12302         (VF1_AVX512VL): Ditto.
12303         (VI): Ditto.
12304         (VIHFBF): Ditto.
12305         (VI_AVX2): Ditto.
12306         (VI8): Ditto.
12307         (VI8_AVX512VL): Ditto.
12308         (VI2_AVX512F): Ditto.
12309         (VI4_AVX512F): Ditto.
12310         (VI4_AVX512VL): Ditto.
12311         (VI48_AVX512F_AVX512VL): Ditto.
12312         (VI8_AVX2_AVX512F): Ditto.
12313         (VI8_AVX_AVX512F): Ditto.
12314         (V8FI): Ditto.
12315         (V16FI): Ditto.
12316         (VI124_AVX2_24_AVX512F_1_AVX512BW): Ditto.
12317         (VI248_AVX512VLBW): Ditto.
12318         (VI248_AVX2_8_AVX512F_24_AVX512BW): Ditto.
12319         (VI248_AVX512BW): Ditto.
12320         (VI248_AVX512BW_AVX512VL): Ditto.
12321         (VI48_AVX512F): Ditto.
12322         (VI48_AVX_AVX512F): Ditto.
12323         (VI12_AVX_AVX512F): Ditto.
12324         (VI148_512): Ditto.
12325         (VI124_256_AVX512F_AVX512BW): Ditto.
12326         (VI48_512): Ditto.
12327         (VI_AVX512BW): Ditto.
12328         (VIHFBF_AVX512BW): Ditto.
12329         (VI4F_256_512): Ditto.
12330         (VI48F_256_512): Ditto.
12331         (VI48F): Ditto.
12332         (VI12_VI48F_AVX512VL): Ditto.
12333         (V32_512): Ditto.
12334         (AVX512MODE2P): Ditto.
12335         (STORENT_MODE): Ditto.
12336         (REDUC_PLUS_MODE): Ditto.
12337         (REDUC_SMINMAX_MODE): Ditto.
12338         (*andnot<mode>3): Change isa attribute to avx512f_512.
12339         (*andnot<mode>3): Ditto.
12340         (<code><mode>3): Ditto.
12341         (<code>tf3): Ditto.
12342         (FMAMODEM): Add TARGET_EVEX512.
12343         (FMAMODE_AVX512): Ditto.
12344         (VFH_SF_AVX512VL): Ditto.
12345         (avx512f_fix_notruncv16sfv16si<mask_name><round_name>): Ditto.
12346         (fix<fixunssuffix>_truncv16sfv16si2<mask_name><round_saeonly_name>):
12347         Ditto.
12348         (avx512f_cvtdq2pd512_2): Ditto.
12349         (avx512f_cvtpd2dq512<mask_name><round_name>): Ditto.
12350         (fix<fixunssuffix>_truncv8dfv8si2<mask_name><round_saeonly_name>):
12351         Ditto.
12352         (<mask_codefor>avx512f_cvtpd2ps512<mask_name><round_name>): Ditto.
12353         (vec_unpacks_lo_v16sf): Ditto.
12354         (vec_unpacks_hi_v16sf): Ditto.
12355         (vec_unpacks_float_hi_v16si): Ditto.
12356         (vec_unpacks_float_lo_v16si): Ditto.
12357         (vec_unpacku_float_hi_v16si): Ditto.
12358         (vec_unpacku_float_lo_v16si): Ditto.
12359         (vec_pack_sfix_trunc_v8df): Ditto.
12360         (avx512f_vec_pack_sfix_v8df): Ditto.
12361         (<mask_codefor>avx512f_unpckhps512<mask_name>): Ditto.
12362         (<mask_codefor>avx512f_unpcklps512<mask_name>): Ditto.
12363         (<mask_codefor>avx512f_movshdup512<mask_name>): Ditto.
12364         (<mask_codefor>avx512f_movsldup512<mask_name>): Ditto.
12365         (AVX512_VEC): Ditto.
12366         (AVX512_VEC_2): Ditto.
12367         (vec_extract_lo_v64qi): Ditto.
12368         (vec_extract_hi_v64qi): Ditto.
12369         (VEC_EXTRACT_MODE): Ditto.
12370         (<mask_codefor>avx512f_unpckhpd512<mask_name>): Ditto.
12371         (avx512f_movddup512<mask_name>): Ditto.
12372         (avx512f_unpcklpd512<mask_name>): Ditto.
12373         (*<avx512>_vternlog<mode>_all): Ditto.
12374         (*<avx512>_vpternlog<mode>_1): Ditto.
12375         (*<avx512>_vpternlog<mode>_2): Ditto.
12376         (*<avx512>_vpternlog<mode>_3): Ditto.
12377         (avx512f_shufps512_mask): Ditto.
12378         (avx512f_shufps512_1<mask_name>): Ditto.
12379         (avx512f_shufpd512_mask): Ditto.
12380         (avx512f_shufpd512_1<mask_name>): Ditto.
12381         (<mask_codefor>avx512f_interleave_highv8di<mask_name>): Ditto.
12382         (<mask_codefor>avx512f_interleave_lowv8di<mask_name>): Ditto.
12383         (vec_dupv2df<mask_name>): Ditto.
12384         (trunc<pmov_src_lower><mode>2): Ditto.
12385         (*avx512f_<code><pmov_src_lower><mode>2): Ditto.
12386         (*avx512f_vpermvar_truncv8div8si_1): Ditto.
12387         (avx512f_<code><pmov_src_lower><mode>2_mask): Ditto.
12388         (avx512f_<code><pmov_src_lower><mode>2_mask_store): Ditto.
12389         (truncv8div8qi2): Ditto.
12390         (avx512f_<code>v8div16qi2): Ditto.
12391         (*avx512f_<code>v8div16qi2_store_1): Ditto.
12392         (*avx512f_<code>v8div16qi2_store_2): Ditto.
12393         (avx512f_<code>v8div16qi2_mask): Ditto.
12394         (*avx512f_<code>v8div16qi2_mask_1): Ditto.
12395         (*avx512f_<code>v8div16qi2_mask_store_1): Ditto.
12396         (avx512f_<code>v8div16qi2_mask_store_2): Ditto.
12397         (vec_widen_umult_even_v16si<mask_name>): Ditto.
12398         (*vec_widen_umult_even_v16si<mask_name>): Ditto.
12399         (vec_widen_smult_even_v16si<mask_name>): Ditto.
12400         (*vec_widen_smult_even_v16si<mask_name>): Ditto.
12401         (VEC_PERM_AVX2): Ditto.
12402         (one_cmpl<mode>2): Ditto.
12403         (<mask_codefor>one_cmpl<mode>2<mask_name>): Ditto.
12404         (*one_cmpl<mode>2_pternlog_false_dep): Ditto.
12405         (define_split to xor): Ditto.
12406         (*andnot<mode>3): Ditto.
12407         (define_split for ior): Ditto.
12408         (*iornot<mode>3): Ditto.
12409         (*xnor<mode>3): Ditto.
12410         (*<nlogic><mode>3): Ditto.
12411         (<mask_codefor>avx512f_interleave_highv16si<mask_name>): Ditto.
12412         (<mask_codefor>avx512f_interleave_lowv16si<mask_name>): Ditto.
12413         (avx512f_pshufdv3_mask): Ditto.
12414         (avx512f_pshufd_1<mask_name>): Ditto.
12415         (*vec_extractv4ti): Ditto.
12416         (VEXTRACTI128_MODE): Ditto.
12417         (define_split to vec_extract): Ditto.
12418         (VI1248_AVX512VL_AVX512BW): Ditto.
12419         (<mask_codefor>avx512f_<code>v16qiv16si2<mask_name>): Ditto.
12420         (<insn>v16qiv16si2): Ditto.
12421         (avx512f_<code>v16hiv16si2<mask_name>): Ditto.
12422         (<insn>v16hiv16si2): Ditto.
12423         (avx512f_zero_extendv16hiv16si2_1): Ditto.
12424         (avx512f_<code>v8qiv8di2<mask_name>): Ditto.
12425         (*avx512f_<code>v8qiv8di2<mask_name>_1): Ditto.
12426         (*avx512f_<code>v8qiv8di2<mask_name>_2): Ditto.
12427         (<insn>v8qiv8di2): Ditto.
12428         (avx512f_<code>v8hiv8di2<mask_name>): Ditto.
12429         (<insn>v8hiv8di2): Ditto.
12430         (avx512f_<code>v8siv8di2<mask_name>): Ditto.
12431         (*avx512f_zero_extendv8siv8di2_1): Ditto.
12432         (*avx512f_zero_extendv8siv8di2_2): Ditto.
12433         (<insn>v8siv8di2): Ditto.
12434         (avx512f_roundps512_sfix): Ditto.
12435         (vashrv8di3): Ditto.
12436         (vashrv16si3): Ditto.
12437         (pbroadcast_evex_isa): Change isa attribute to avx512f_512.
12438         (vec_dupv4sf): Add TARGET_EVEX512.
12439         (*vec_dupv4si): Ditto.
12440         (*vec_dupv2di): Ditto.
12441         (vec_dup<mode>): Change isa attribute to avx512f_512.
12442         (VPERMI2): Add TARGET_EVEX512.
12443         (VPERMI2I): Ditto.
12444         (VEC_INIT_MODE): Ditto.
12445         (VEC_INIT_HALF_MODE): Ditto.
12446         (<mask_codefor>avx512f_vcvtph2ps512<mask_name><round_saeonly_name>):
12447         Ditto.
12448         (avx512f_vcvtps2ph512_mask_sae): Ditto.
12449         (<mask_codefor>avx512f_vcvtps2ph512<mask_name><round_saeonly_name>):
12450         Ditto.
12451         (*avx512f_vcvtps2ph512<merge_mask_name>): Ditto.
12452         (INT_BROADCAST_MODE): Ditto.
12454 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
12456         * config/i386/i386-expand.cc (ix86_broadcast_from_constant):
12457         Disable zmm broadcast for !TARGET_EVEX512.
12458         * config/i386/i386-options.cc (ix86_option_override_internal):
12459         Do not use PVW_512 when no-evex512.
12460         (ix86_simd_clone_adjust): Add evex512 target into string.
12461         * config/i386/i386.cc (type_natural_mode): Report ABI warning
12462         when using zmm register w/o evex512.
12463         (ix86_return_in_memory): Do not allow zmm when !TARGET_EVEX512.
12464         (ix86_hard_regno_mode_ok): Ditto.
12465         (ix86_set_reg_reg_cost): Ditto.
12466         (ix86_rtx_costs): Ditto.
12467         (ix86_vector_mode_supported_p): Ditto.
12468         (ix86_preferred_simd_mode): Ditto.
12469         (ix86_get_mask_mode): Ditto.
12470         (ix86_simd_clone_compute_vecsize_and_simdlen): Disable 512 bit
12471         libmvec call when !TARGET_EVEX512.
12472         (ix86_simd_clone_usable): Ditto.
12473         * config/i386/i386.h (BIGGEST_ALIGNMENT): Disable 512 alignment
12474         when !TARGET_EVEX512
12475         (MOVE_MAX): Do not use PVW_512 when !TARGET_EVEX512.
12476         (STORE_MAX_PIECES): Ditto.
12478 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
12480         * config/i386/i386-builtin.def (BDESC): Add
12481         OPTION_MASK_ISA2_EVEX512.
12483 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
12485         * config/i386/i386-builtin.def (BDESC): Add
12486         OPTION_MASK_ISA2_EVEX512.
12488 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
12490         * config/i386/i386-builtin.def (BDESC): Add
12491         OPTION_MASK_ISA2_EVEX512.
12493 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
12495         * config/i386/i386-builtin.def (BDESC): Add
12496         OPTION_MASK_ISA2_EVEX512.
12498 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
12500         * config/i386/i386-builtin.def (BDESC): Add
12501         OPTION_MASK_ISA2_EVEX512.
12502         * config/i386/i386-builtins.cc
12503         (ix86_init_mmx_sse_builtins): Ditto.
12505 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
12506             Hu, Lin1  <lin1.hu@intel.com>
12508         * config/i386/avx512fp16intrin.h: Add evex512 target for 512 bit
12509         intrins.
12511 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
12513         * config.gcc: Add avx512bitalgvlintrin.h.
12514         * config/i386/avx5124fmapsintrin.h: Add evex512 target for 512 bit
12515         intrins.
12516         * config/i386/avx5124vnniwintrin.h: Ditto.
12517         * config/i386/avx512bf16intrin.h: Ditto.
12518         * config/i386/avx512bitalgintrin.h: Add evex512 target for 512 bit
12519         intrins. Split 128/256 bit intrins to avx512bitalgvlintrin.h.
12520         * config/i386/avx512erintrin.h: Add evex512 target for 512 bit
12521         intrins
12522         * config/i386/avx512ifmaintrin.h: Ditto
12523         * config/i386/avx512pfintrin.h: Ditto
12524         * config/i386/avx512vbmi2intrin.h: Ditto.
12525         * config/i386/avx512vbmiintrin.h: Ditto.
12526         * config/i386/avx512vnniintrin.h: Ditto.
12527         * config/i386/avx512vp2intersectintrin.h: Ditto.
12528         * config/i386/avx512vpopcntdqintrin.h: Ditto.
12529         * config/i386/gfniintrin.h: Ditto.
12530         * config/i386/immintrin.h: Add avx512bitalgvlintrin.h.
12531         * config/i386/vaesintrin.h: Add evex512 target for 512 bit intrins.
12532         * config/i386/vpclmulqdqintrin.h: Ditto.
12533         * config/i386/avx512bitalgvlintrin.h: New.
12535 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
12537         * config/i386/avx512bwintrin.h: Add evex512 target for 512 bit
12538         intrins.
12540 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
12542         * config/i386/avx512dqintrin.h: Add evex512 target for 512 bit
12543         intrins.
12545 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
12547         * config/i386/avx512fintrin.h: Add evex512 target for 512 bit intrins.
12549 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
12551         * common/config/i386/i386-common.cc
12552         (OPTION_MASK_ISA2_EVEX512_SET): New.
12553         (OPTION_MASK_ISA2_EVEX512_UNSET): Ditto.
12554         (ix86_handle_option): Handle EVEX512.
12555         * config/i386/i386-c.cc
12556         (ix86_target_macros_internal): Handle EVEX512. Add __EVEX256__
12557         when AVX512VL is set.
12558         * config/i386/i386-options.cc: (isa2_opts): Handle EVEX512.
12559         (ix86_valid_target_attribute_inner_p): Ditto.
12560         (ix86_option_override_internal): Set EVEX512 target if it is not
12561         explicitly set when AVX512 is enabled. Disable
12562         AVX512{PF,ER,4VNNIW,4FAMPS} for -mno-evex512.
12563         * config/i386/i386.opt: Add mevex512. Temporaily RejectNegative.
12565 2023-10-09  Haochen Gui  <guihaoc@gcc.gnu.org>
12567         PR target/88558
12568         * config/rs6000/rs6000.md (lrint<mode>di2): Remove TARGET_FPRND
12569         from insn condition.
12570         (lrint<mode>si2): New insn pattern for 32bit lrint.
12572 2023-10-09  Haochen Gui  <guihaoc@gcc.gnu.org>
12574         PR target/88558
12575         * config/rs6000/rs6000.cc (rs6000_hard_regno_mode_ok_uncached):
12576         Enable SImode on FP registers for P7.
12577         * config/rs6000/rs6000.md (*movsi_internal1): Add fmr for SImode
12578         move between FP registers.  Set attribute isa of stfiwx to "*"
12579         and attribute of stxsiwx to "p7".
12581 2023-10-09  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
12583         * config/s390/s390.md: Make use of new copysign RTL.
12585 2023-10-09  Hongyu Wang  <hongyu.wang@intel.com>
12587         * config/i386/sse.md (vec_concatv2di): Replace constraint "m"
12588         with "jm" for alternative 0 and 1 of operand 2.
12589         (sse4_1_<code><mode>3<mask_name>): Replace constraint "Bm" with
12590         "ja" for alternative 0 and 1 of operand2.
12592 2023-10-08  David Malcolm  <dmalcolm@redhat.com>
12594         PR analyzer/111155
12595         * text-art/table.cc (table::maybe_set_cell_span): New.
12596         (table::add_other_table): New.
12597         * text-art/table.h (class table::cell_placement): Add class table
12598         as a friend.
12599         (table::add_rows): New.
12600         (table::add_row): Reimplement in terms of add_rows.
12601         (table::maybe_set_cell_span): New decl.
12602         (table::add_other_table): New decl.
12603         * text-art/types.h (operator+): New operator for rect + coord.
12605 2023-10-08  David Malcolm  <dmalcolm@redhat.com>
12607         * genmatch.cc (main): Update for "m_" prefix of some fields of
12608         line_maps.
12609         * input.cc (make_location): Update for removal of
12610         COMBINE_LOCATION_DATA.
12611         (dump_line_table_statistics): Update for "m_" prefix of some
12612         fields of line_maps.
12613         (location_with_discriminator): Update for removal of
12614         COMBINE_LOCATION_DATA.
12615         (line_table_test::line_table_test): Update for "m_" prefix of some
12616         fields of line_maps.
12617         * toplev.cc (general_init): Likewise.
12618         * tree.cc (set_block): Update for removal of
12619         COMBINE_LOCATION_DATA.
12620         (set_source_range): Likewise.
12622 2023-10-08  David Malcolm  <dmalcolm@redhat.com>
12624         * input.cc (make_location): Move implementation to
12625         line_maps::make_location.
12627 2023-10-08  David Malcolm  <dmalcolm@redhat.com>
12629         PR driver/111700
12630         * input.cc (file_cache::add_file): Update leading comment to
12631         clarify that it can fail.
12632         (file_cache::lookup_or_add_file): Likewise.
12633         (file_cache::get_source_file_content): Gracefully handle
12634         lookup_or_add_file failing.
12636 2023-10-08  liuhongt  <hongtao.liu@intel.com>
12638         * config/i386/i386.cc (ix86_build_const_vector): Handle V2HF
12639         and V4HFmode.
12640         (ix86_build_signbit_mask): Ditto.
12641         * config/i386/mmx.md (mmxintvecmode): Ditto.
12642         (<code><mode>2): New define_expand.
12643         (*mmx_<code><mode>): New define_insn_and_split.
12644         (*mmx_nabs<mode>2): Ditto.
12645         (*mmx_andnot<mode>3): New define_insn.
12646         (<code><mode>3): Ditto.
12647         (copysign<mode>3): New define_expand.
12648         (xorsign<mode>3): Ditto.
12649         (signbit<mode>2): Ditto.
12651 2023-10-08  liuhongt  <hongtao.liu@intel.com>
12653         * config/i386/mmx.md (VHF_32_64): New mode iterator.
12654         (<insn><mode>3): New define_expand, merged from ..
12655         (<insn>v4hf3): .. this and
12656         (<insn>v2hf3): .. this.
12657         (movd_v2hf_to_sse_reg): New define_expand, splitted from ..
12658         (movd_v2hf_to_sse): .. this.
12659         (<code><mode>3): New define_expand.
12661 2023-10-08  Jiufu Guo  <guojiufu@linux.ibm.com>
12663         * config/rs6000/rs6000.cc (can_be_built_by_li_and_rldic): New function.
12664         (rs6000_emit_set_long_const): Call can_be_built_by_li_and_rldic.
12666 2023-10-08  Jiufu Guo  <guojiufu@linux.ibm.com>
12668         * config/rs6000/rs6000.cc (can_be_built_by_li_lis_and_rldicl): New
12669         function.
12670         (can_be_built_by_li_lis_and_rldicr): New function.
12671         (rs6000_emit_set_long_const): Call can_be_built_by_li_lis_and_rldicr and
12672         can_be_built_by_li_lis_and_rldicl.
12674 2023-10-08  Jiufu Guo  <guojiufu@linux.ibm.com>
12676         * config/rs6000/rs6000.cc (can_be_rotated_to_negative_lis): New
12677         function.
12678         (can_be_built_by_li_and_rotldi): Rename to ...
12679         (can_be_built_by_li_lis_and_rotldi): ... this function.
12680         (rs6000_emit_set_long_const): Call can_be_built_by_li_lis_and_rotldi.
12682 2023-10-08  Jiufu Guo  <guojiufu@linux.ibm.com>
12684         * config/rs6000/rs6000.cc (can_be_built_by_li_and_rotldi): New function.
12685         (rs6000_emit_set_long_const): Call can_be_built_by_li_and_rotldi.
12687 2023-10-08  Yanzhang Wang  <yanzhang.wang@intel.com>
12689         * config/riscv/linux.h: Pass the static-pie specific options to
12690         the linker.
12692 2023-10-07  Saurabh Jha  <saurabh.jha@arm.com>
12694         * config/aarch64/aarch64-cores.def (AARCH64_CORE): Add support for
12695         cortex-x4 core.
12696         * config/aarch64/aarch64-tune.md: Regenerated.
12697         * doc/invoke.texi: Add command-line option for cortex-x4 core.
12699 2023-10-07  Kong Lingling  <lingling.kong@intel.com>
12700             Hongyu Wang  <hongyu.wang@intel.com>
12701             Hongtao Liu  <hongtao.liu@intel.com>
12703         * config/i386/constraints.md (jb): New constraint for vsib memory
12704         that does not allow gpr32.
12705         * config/i386/i386.md: (setcc_<mode>_sse): Replace m to jm for avx
12706         alternative and set attr_gpr32 to 0.
12707         (movmsk_df): Split avx/noavx alternatives and  replace "r" to "jr" for
12708         avx alternative.
12709         (<sse>_rcp<mode>2): Split avx/noavx alternatives and replace
12710         "m/Bm" to "jm/ja" for avx alternative, set its gpr32 attr to 0.
12711         (*rsqrtsf2_sse): Likewise.
12712         * config/i386/mmx.md (mmx_pmovmskb): Split alternative 1 to
12713         avx/noavx and assign jr/r constraint to dest.
12714         * config/i386/sse.md (<sse>_movmsk<ssemodesuffix><avxsizesuffix>):
12715         Split avx/noavx alternatives and replace "r" to "jr" for avx alternative.
12716         (*<sse>_movmsk<ssemodesuffix><avxsizesuffix>_<u>ext): Likewise.
12717         (*<sse>_movmsk<ssemodesuffix><avxsizesuffix>_lt): Likewise.
12718         (*<sse>_movmsk<ssemodesuffix><avxsizesuffix>_<u>ext_lt): Likewise.
12719         (*<sse>_movmsk<ssemodesuffix><avxsizesuffix>_shift): Likewise.
12720         (*<sse>_movmsk<ssemodesuffix><avxsizesuffix>_<u>ext_shift): Likewise.
12721         (<sse2_avx2>_pmovmskb): Likewise.
12722         (*<sse2_avx2>_pmovmskb_zext): Likewise.
12723         (*sse2_pmovmskb_ext): Likewise.
12724         (*<sse2_avx2>_pmovmskb_lt): Likewise.
12725         (*<sse2_avx2>_pmovmskb_zext_lt): Likewise.
12726         (*sse2_pmovmskb_ext_lt): Likewise.
12727         (<sse>_rcp<mode>2): Split avx/noavx alternatives and replace
12728         "m/Bm" to "jm/ja" for avx alternative, set its attr_gpr32 to 0.
12729         (sse_vmrcpv4sf2): Likewise.
12730         (*sse_vmrcpv4sf2): Likewise.
12731         (rsqrt<mode>2): Likewise.
12732         (sse_vmrsqrtv4sf2): Likewise.
12733         (*sse_vmrsqrtv4sf2): Likewise.
12734         (avx_h<insn>v4df3): Likewise.
12735         (sse3_hsubv2df3): Likewise.
12736         (avx_h<insn>v8sf3): Likewise.
12737         (sse3_h<insn>v4sf3): Likewise.
12738         (<sse3>_lddqu<avxsizesuffix>): Likewise.
12739         (avx_cmp<mode>3): Likewise.
12740         (avx_vmcmp<mode>3): Likewise.
12741         (*sse2_gt<mode>3): Likewise.
12742         (sse_ldmxcsr): Likewise.
12743         (sse_stmxcsr): Likewise.
12744         (avx_vtest<ssemodesuffix><avxsizesuffix>): Replace m to jm for
12745         avx alternative and set attr_gpr32 to 0.
12746         (avx2_permv2ti): Likewise.
12747         (*avx_vperm2f128<mode>_full): Likewise.
12748         (*avx_vperm2f128<mode>_nozero): Likewise.
12749         (vec_set_lo_v32qi): Likewise.
12750         (<avx_avx2>_maskload<ssemodesuffix><avxsizesuffix>): Likewise.
12751         (<avx_avx2>_maskstore<ssemodesuffix><avxsi)zesuffix>: Likewise.
12752         (avx_cmp<mode>3): Likewise.
12753         (avx_vmcmp<mode>3): Likewise.
12754         (*<sse>_maskcmp<mode>3_comm): Likewise.
12755         (*avx2_gathersi<VEC_GATHER_MODE:mode>): Replace Tv to jb and set
12756         attr_gpr32 to 0.
12757         (*avx2_gathersi<VEC_GATHER_MODE:mode>_2): Likewise.
12758         (*avx2_gatherdi<VEC_GATHER_MODE:mode>): Likewise.
12759         (*avx2_gatherdi<VEC_GATHER_MODE:mode>_2): Likewise.
12760         (*avx2_gatherdi<VI4F_256:mode>_3): Likewise.
12761         (*avx2_gatherdi<VI4F_256:mode>_4): Likewise.
12762         (avx_vbroadcastf128_<mode>): Restrict non-egpr alternative to
12763         noavx512vl, set its constraint to jm and set attr_gpr32 to 0.
12764         (vec_set_lo_<mode><mask_name>): Likewise.
12765         (vec_set_lo_<mode><mask_name>): Likewise for SF/SI modes.
12766         (vec_set_hi_<mode><mask_name>): Likewise.
12767         (vec_set_hi_<mode><mask_name>): Likewise for SF/SI modes.
12768         (vec_set_hi_<mode>): Likewise.
12769         (vec_set_lo_<mode>): Likewise.
12770         (avx2_set_hi_v32qi): Likewise.
12772 2023-10-07  Kong Lingling  <lingling.kong@intel.com>
12773             Hongyu Wang  <hongyu.wang@intel.com>
12774             Hongtao Liu  <hongtao.liu@intel.com>
12776         * config/i386/i386.md (*movhi_internal): Split out non-gpr
12777         supported pextrw with mem constraint to avx/noavx alternatives,
12778         set jm and attr gpr32 0 to the noavx alternative.
12779         (*mov<mode>_internal): Likewise.
12780         * config/i386/mmx.md (mmx_pshufbv8qi3): Change "r/m/Bm" to
12781         "jr/jm/ja" and set_attr gpr32 0 for noavx alternative.
12782         (mmx_pshufbv4qi3): Likewise.
12783         (*mmx_pinsrd): Likewise.
12784         (*mmx_pinsrb): Likewise.
12785         (*pinsrb): Likewise.
12786         (mmx_pshufbv8qi3): Likewise.
12787         (mmx_pshufbv4qi3): Likewise.
12788         (@sse4_1_insertps_<mode>): Likewise.
12789         (*mmx_pextrw): Split altrenatives and map non-EGPR
12790         constraints, attr_gpr32 and attr_isa to noavx mnemonics.
12791         (*movv2qi_internal): Likewise.
12792         (*pextrw): Likewise.
12793         (*mmx_pextrb): Likewise.
12794         (*mmx_pextrb_zext): Likewise.
12795         (*pextrb): Likewise.
12796         (*pextrb_zext): Likewise.
12797         (vec_extractv2si_1): Likewise.
12798         (vec_extractv2si_1_zext): Likewise.
12799         * config/i386/sse.md: (vi128_h_r): New mode attr for
12800         pinsr{bw}/pextr{bw} with reg operand.
12801         (*abs<mode>2): Split altrenatives and %v in mnemonics, map
12802         non-EGPR constraints, gpr32 and isa attrs to noavx mnemonics.
12803         (*vec_extract<mode>): Likewise.
12804         (*vec_extract<mode>): Likewise for HFBF pattern.
12805         (*vec_extract<PEXTR_MODE12:mode>_zext): Likewise.
12806         (*vec_extractv4si_1): Likewise.
12807         (*vec_extractv4si_zext): Likewise.
12808         (*vec_extractv2di_1): Likewise.
12809         (*vec_concatv2si_sse4_1): Likewise.
12810         (<sse2p4_1>_pinsr<ssemodesuffix>): Likewise.
12811         (vec_concatv2di): Likewise.
12812         (*sse4_1_<code>v2qiv2di2<mask_name>_1): Likewise.
12813         (ssse3_avx2>_pshufb<mode>3<mask_name>): Change "r/m/Bm" to
12814         "jr/jm/ja" and set_attr gpr32 0 for noavx alternative, split
12815         %v for avx/noavx alternatives if necessary.
12816         (*vec_concatv2sf_sse4_1): Likewise.
12817         (*sse4_1_extractps): Likewise.
12818         (vec_set<mode>_0): Likewise for VI4F_128.
12819         (*vec_setv4sf_sse4_1): Likewise.
12820         (@sse4_1_insertps<mode>): Likewise.
12821         (ssse3_pmaddubsw128): Likewise.
12822         (*<ssse3_avx2>_pmulhrsw<mode>3<mask_name>): Likewise.
12823         (<sse4_1_avx2>_packusdw<mask_name>): Likewise.
12824         (<ssse3_avx2>_palignr<mode>): Likewise.
12825         (<vi8_sse4_1_avx2_avx512>_movntdqa): Likewise.
12826         (<sse4_1_avx2>_mpsadbw): Likewise.
12827         (*sse4_1_mulv2siv2di3<mask_name>): Likewise.
12828         (*<sse4_1_avx2>_mul<mode>3<mask_name>): Likewise.
12829         (*sse4_1_<code><mode>3<mask_name>): Likewise.
12830         (*<code>v8hi3): Likewise.
12831         (*<code>v16qi3): Likewise.
12832         (*sse4_1_<code>v8qiv8hi2<mask_name>_1): Likewise.
12833         (*sse4_1_zero_extendv8qiv8hi2_3): Likewise.
12834         (*sse4_1_zero_extendv8qiv8hi2_4): Likewise.
12835         (*sse4_1_<code>v4qiv4si2<mask_name>_1): Likewise.
12836         (*sse4_1_<code>v4hiv4si2<mask_name>_1): Likewise.
12837         (*sse4_1_zero_extendv4hiv4si2_3): Likewise.
12838         (*sse4_1_zero_extendv4hiv4si2_4): Likewise.
12839         (*sse4_1_<code>v2hiv2di2<mask_name>_1): Likewise.
12840         (*sse4_1_<code>v2siv2di2<mask_name>_1): Likewise.
12841         (*sse4_1_zero_extendv2siv2di2_3): Likewise.
12842         (*sse4_1_zero_extendv2siv2di2_4): Likewise.
12843         (aesdec): Likewise.
12844         (aesdeclast): Likewise.
12845         (aesenc): Likewise.
12846         (aesenclast): Likewise.
12847         (pclmulqdq): Likewise.
12848         (vgf2p8affineinvqb_<mode><mask_name>): Likewise.
12849         (vgf2p8affineqb_<mode><mask_name>): Likewise.
12850         (vgf2p8mulb_<mode><mask_name>): Likewise.
12852 2023-10-07  Kong Lingling  <lingling.kong@intel.com>
12853             Hongyu Wang  <hongyu.wang@intel.com>
12854             Hongtao Liu  <hongtao.liu@intel.com>
12856         * config/i386/i386-protos.h (x86_evex_reg_mentioned_p): New
12857         prototype.
12858         * config/i386/i386.cc (x86_evex_reg_mentioned_p): New
12859         function.
12860         * config/i386/i386.md (sse4_1_round<mode>2): Set attr gpr32 0
12861         and constraint jm to all non-evex alternatives, adjust
12862         alternative outputs if evex reg is mentioned.
12863         * config/i386/sse.md (<sse4_1>_ptest<mode>): Set attr gpr32 0
12864         and constraint jm/ja to all non-evex alternatives.
12865         (ptesttf2): Likewise.
12866         (<sse4_1>_round<ssemodesuffix><avxsizesuffix): Likewise.
12867         (sse4_1_round<ssescalarmodesuffix>): Likewise.
12868         (sse4_2_pcmpestri): Likewise.
12869         (sse4_2_pcmpestrm): Likewise.
12870         (sse4_2_pcmpestr_cconly): Likewise.
12871         (sse4_2_pcmpistr): Likewise.
12872         (sse4_2_pcmpistri): Likewise.
12873         (sse4_2_pcmpistrm): Likewise.
12874         (sse4_2_pcmpistr_cconly): Likewise.
12875         (aesimc): Likewise.
12876         (aeskeygenassist): Likewise.
12878 2023-10-07  Kong Lingling  <lingling.kong@intel.com>
12879             Hongyu Wang  <hongyu.wang@intel.com>
12880             Hongtao Liu  <hongtao.liu@intel.com>
12882         * config/i386/sse.md (avx2_ph<plusminus_mnemonic>wv16hi3): Set
12883         attr gpr32 0 and constraint jm/ja to all mem alternatives.
12884         (ssse3_ph<plusminus_mnemonic>wv8hi3): Likewise.
12885         (ssse3_ph<plusminus_mnemonic>wv4hi3): Likewise.
12886         (avx2_ph<plusminus_mnemonic>dv8si3): Likewise.
12887         (ssse3_ph<plusminus_mnemonic>dv4si3): Likewise.
12888         (ssse3_ph<plusminus_mnemonic>dv2si3): Likewise.
12889         (<ssse3_avx2>_psign<mode>3): Likewise.
12890         (ssse3_psign<mode>3): Likewise.
12891         (<sse4_1>_blend<ssemodesuffix><avxsizesuffix): Likewise.
12892         (<sse4_1>_blendv<ssemodesuffix><avxsizesuffix): Likewise.
12893         (*<sse4_1>_blendv<ssemodesuffix><avxsizesuffix>_lt): Likewise.
12894         (*<sse4_1>_blendv<ssefltmodesuff)ix><avxsizesuffix>_not_ltint: Likewise.
12895         (<sse4_1>_dp<ssemodesuffix><avxsizesuffix>): Likewise.
12896         (<sse4_1_avx2>_mpsadbw): Likewise.
12897         (<sse4_1_avx2>_pblendvb): Likewise.
12898         (*<sse4_1_avx2>_pblendvb_lt): Likewise.
12899         (sse4_1_pblend<ssemodesuffix>): Likewise.
12900         (*avx2_pblend<ssemodesuffix>): Likewise.
12901         (avx2_permv2ti): Likewise.
12902         (*avx_vperm2f128<mode>_nozero): Likewise.
12903         (*avx2_eq<mode>3): Likewise.
12904         (*sse4_1_eqv2di3): Likewise.
12905         (sse4_2_gtv2di3): Likewise.
12906         (avx2_gt<mode>3): Likewise.
12908 2023-10-07  Kong Lingling  <lingling.kong@intel.com>
12909             Hongyu Wang  <hongyu.wang@intel.com>
12910             Hongtao Liu  <hongtao.liu@intel.com>
12912         * config/i386/i386.md (<xsave>): Set attr gpr32 0 and constraint
12913         jm.
12914         (<xsave>_rex64): Likewise.
12915         (<xrstor>_rex64): Likewise.
12916         (<xrstor>64): Likewise.
12917         (fxsave64): Likewise.
12918         (fxstore64): Likewise.
12920 2023-10-07  Hongyu Wang  <hongyu.wang@intel.com>
12921             Kong Lingling  <lingling.kong@intel.com>
12922             Hongtao Liu  <hongtao.liu@intel.com>
12924         * config/i386/i386.cc (ix86_get_ssemov): Check if egpr is used,
12925         adjust mnemonic for vmovduq/vmovdqa.
12926         * config/i386/sse.md (*<extract_type>_vinsert<shuffletype><extract_suf>_0):
12927         Check if egpr is used, adjust mnemonic for vmovdqu/vmovdqa.
12928         (avx_vec_concat<mode>): Likewise, and separate alternative 0 to
12929         avx_noavx512f.
12931 2023-10-07  Kong Lingling  <lingling.kong@intel.com>
12932             Hongyu Wang  <hongyu.wang@intel.com>
12933             Hongtao Liu  <hongtao.liu@intel.com>
12935         * config/i386/i386.cc (map_egpr_constraints): New funciton to
12936         map common constraints to EGPR prohibited constraints.
12937         (ix86_md_asm_adjust): Calls map_egpr_constraints.
12938         * config/i386/i386.opt: Add option mapx-inline-asm-use-gpr32.
12940 2023-10-07  Kong Lingling  <lingling.kong@intel.com>
12941             Hongyu Wang  <hongyu.wang@intel.com>
12942             Hongtao Liu  <hongtao.liu@intel.com>
12944         * config/i386/i386-protos.h (ix86_insn_base_reg_class): New
12945         prototype.
12946         (ix86_regno_ok_for_insn_base_p): Likewise.
12947         (ix86_insn_index_reg_class): Likewise.
12948         * config/i386/i386.cc (ix86_memory_address_use_extended_reg_class_p):
12949         New helper function to scan the insn.
12950         (ix86_insn_base_reg_class): New function to choose BASE_REG_CLASS.
12951         (ix86_regno_ok_for_insn_base_p): Likewise for base regno.
12952         (ix86_insn_index_reg_class): Likewise for INDEX_REG_CLASS.
12953         * config/i386/i386.h (INSN_BASE_REG_CLASS): Define.
12954         (REGNO_OK_FOR_INSN_BASE_P): Likewise.
12955         (INSN_INDEX_REG_CLASS): Likewise.
12956         (enum reg_class): Add INDEX_GPR16.
12957         (GENERAL_GPR16_REGNO_P): Define.
12958         * config/i386/i386.md (gpr32): New attribute.
12960 2023-10-07  Kong Lingling  <lingling.kong@intel.com>
12961             Hongyu Wang  <hongyu.wang@intel.com>
12962             Hongtao Liu  <hongtao.liu@intel.com>
12964         * config/i386/constraints.md (jr): New register constraint
12965         that prohibits EGPR.
12966         (jR): Constraint that force usage of EGPR.
12967         (jm): New memory constraint that prohibits EGPR.
12968         (ja): Likewise for Bm constraint.
12969         (jb): Likewise for Tv constraint.
12970         (j<): New auto-dec memory constraint that prohibits EGPR.
12971         (j>): Likewise for ">" constraint.
12972         (jo): Likewise for "o" constraint.
12973         (jv): Likewise for "V" constraint.
12974         (jp): Likewise for "p" constraint.
12975         * config/i386/i386.h (enum reg_class): Add new reg class
12976         GENERAL_GPR16.
12978 2023-10-07  Kong Lingling  <lingling.kong@intel.com>
12979             Hongyu Wang  <hongyu.wang@intel.com>
12980             Hongtao Liu  <hongtao.liu@intel.com>
12982         * config/i386/i386-protos.h (x86_extended_rex2reg_mentioned_p):
12983         New function prototype.
12984         * config/i386/i386.cc (regclass_map): Add mapping for 16 new
12985         general registers.
12986         (debugger64_register_map): Likewise.
12987         (ix86_conditional_register_usage): Clear REX2 register when APX
12988         disabled.
12989         (ix86_code_end): Add handling for REX2 reg.
12990         (print_reg): Likewise.
12991         (ix86_output_jmp_thunk_or_indirect): Likewise.
12992         (ix86_output_indirect_branch_via_reg): Likewise.
12993         (ix86_attr_length_vex_default): Likewise.
12994         (ix86_emit_save_regs): Adjust to allow saving r31.
12995         (ix86_register_priority): Set REX2 reg priority same as REX.
12996         (x86_extended_reg_mentioned_p): Add check for REX2 regs.
12997         (x86_extended_rex2reg_mentioned_p): New function.
12998         * config/i386/i386.h (CALL_USED_REGISTERS): Add new extended
12999         registers.
13000         (REG_ALLOC_ORDER): Likewise.
13001         (FIRST_REX2_INT_REG): Define.
13002         (LAST_REX2_INT_REG): Ditto.
13003         (GENERAL_REGS): Add 16 new registers.
13004         (INT_SSE_REGS): Likewise.
13005         (FLOAT_INT_REGS): Likewise.
13006         (FLOAT_INT_SSE_REGS): Likewise.
13007         (INT_MASK_REGS): Likewise.
13008         (ALL_REGS):Likewise.
13009         (REX2_INT_REG_P): Define.
13010         (REX2_INT_REGNO_P): Ditto.
13011         (GENERAL_REGNO_P): Add REX2_INT_REGNO_P.
13012         (REGNO_OK_FOR_INDEX_P): Ditto.
13013         (REG_OK_FOR_INDEX_NONSTRICT_P): Add new extended registers.
13014         * config/i386/i386.md: Add 16 new integer general
13015         registers.
13017 2023-10-07  Kong Lingling  <lingling.kong@intel.com>
13018             Hongyu Wang  <hongyu.wang@intel.com>
13019             Hongtao Liu  <hongtao.liu@intel.com>
13021         * common/config/i386/cpuinfo.h (XSTATE_APX_F): New macro.
13022         (XCR_APX_F_ENABLED_MASK): Likewise.
13023         (get_available_features): Detect APX_F under
13024         * common/config/i386/i386-common.cc (OPTION_MASK_ISA2_APX_F_SET): New.
13025         (OPTION_MASK_ISA2_APX_F_UNSET): Likewise.
13026         (ix86_handle_option): Handle -mapxf.
13027         * common/config/i386/i386-cpuinfo.h (FEATURE_APX_F): New.
13028         * common/config/i386/i386-isas.h: Add entry for APX_F.
13029         * config/i386/cpuid.h (bit_APX_F): New.
13030         * config/i386/i386.h (bit_APX_F): (TARGET_APX_EGPR,
13031         TARGET_APX_PUSH2POP2, TARGET_APX_NDD): New define.
13032         * config/i386/i386-opts.h (enum apx_features): New enum.
13033         * config/i386/i386-isa.def (APX_F): New DEF_PTA.
13034         * config/i386/i386-options.cc (ix86_function_specific_save):
13035         Save ix86_apx_features.
13036         (ix86_function_specific_restore): Restore it.
13037         (ix86_valid_target_attribute_inner_p): Add mapxf.
13038         (ix86_option_override_internal): Set ix86_apx_features for PTA
13039         and TARGET_APX_F. Also reports error when APX_F is set but not
13040         having TARGET_64BIT.
13041         * config/i386/i386.opt: (-mapxf): New ISA flag option.
13042         (-mapx=): New enumeration option.
13043         (apx_features): New enum type.
13044         (apx_none): New enum value.
13045         (apx_egpr): Likewise.
13046         (apx_push2pop2): Likewise.
13047         (apx_ndd): Likewise.
13048         (apx_all): Likewise.
13049         * doc/invoke.texi: Document mapxf.
13051 2023-10-07  Hongyu Wang  <hongyu.wang@intel.com>
13052             Kong Lingling  <lingling.kong@intel.com>
13053             Hongtao Liu  <hongtao.liu@intel.com>
13055         * addresses.h (index_reg_class): New wrapper function like
13056         base_reg_class.
13057         * doc/tm.texi: Document INSN_INDEX_REG_CLASS.
13058         * doc/tm.texi.in: Ditto.
13059         * lra-constraints.cc (index_part_to_reg): Pass index_class.
13060         (process_address_1): Calls index_reg_class with curr_insn and
13061         replace INDEX_REG_CLASS with its return value index_cl.
13062         * reload.cc (find_reloads_address): Likewise.
13063         (find_reloads_address_1): Likewise.
13065 2023-10-07  Kong Lingling  <lingling.kong@intel.com>
13066             Hongyu Wang  <hongyu.wang@intel.com>
13067             Hongtao Liu  <hongtao.liu@intel.com>
13069         * addresses.h (base_reg_class): Add insn argument and new macro
13070         INSN_BASE_REG_CLASS.
13071         (regno_ok_for_base_p_1): Add insn argument and new macro
13072         REGNO_OK_FOR_INSN_BASE_P.
13073         (regno_ok_for_base_p): Add insn argument and parse to ok_for_base_p_1.
13074         * doc/tm.texi: Document INSN_BASE_REG_CLASS and
13075         REGNO_OK_FOR_INSN_BASE_P.
13076         * doc/tm.texi.in: Ditto.
13077         * lra-constraints.cc (process_address_1): Pass insn to
13078         base_reg_class.
13079         (curr_insn_transform): Ditto.
13080         * reload.cc (find_reloads): Ditto.
13081         (find_reloads_address): Ditto.
13082         (find_reloads_address_1): Ditto.
13083         (find_reloads_subreg_address): Ditto.
13084         * reload1.cc (maybe_fix_stack_asms): Ditto.
13086 2023-10-07  Jiufu Guo  <guojiufu@linux.ibm.com>
13088         PR target/108338
13089         * config/rs6000/rs6000.md (movsf_from_si): Update to generate mtvsrws
13090         for P9.
13092 2023-10-07  Jiufu Guo  <guojiufu@linux.ibm.com>
13094         PR target/108338
13095         * config/rs6000/predicates.md (lowpart_subreg_operator): New
13096         define_predicate.
13097         * config/rs6000/rs6000.md (any_rshift): New code_iterator.
13098         (movsf_from_si2): Rename to ...
13099         (movsf_from_si2_<code>): ... this.
13101 2023-10-07  Pan Li  <pan2.li@intel.com>
13103         PR target/111634
13104         * config/riscv/riscv.cc (riscv_legitimize_address): Ensure
13105         object is a REG before extracting its' REGNO.
13107 2023-10-06  Roger Sayle  <roger@nextmovesoftware.com>
13109         * config/i386/i386-expand.cc (ix86_split_ashl): Split shifts by
13110         one into add3_cc_overflow_1 followed by add3_carry.
13111         * config/i386/i386.md (@add<mode>3_cc_overflow_1): Renamed from
13112         "*add<mode>3_cc_overflow_1" to provide generator function.
13114 2023-10-06  Roger Sayle  <roger@nextmovesoftware.com>
13115             Uros Bizjak  <ubizjak@gmail.com>
13117         * config/i386/i386.cc (ix86_avoid_lea_for_addr): Split LEAs used
13118         to perform left shifts into shorter instructions with -Oz.
13120 2023-10-06  Vineet Gupta  <vineetg@rivosinc.com>
13122         * config/riscv/riscv.md (mvconst_internal): Add !ira_in_progress.
13124 2023-10-06  Sandra Loosemore  <sandra@codesourcery.com>
13126         * doc/extend.texi (Function Attributes): Mention standard attribute
13127         syntax.
13128         (Variable Attributes): Likewise.
13129         (Type Attributes): Likewise.
13130         (Attribute Syntax): Likewise.
13132 2023-10-06  Andrew Stubbs  <ams@codesourcery.com>
13134         * config/gcn/gcn-valu.md (*mov<mode>): Convert to compact syntax.
13135         (mov<mode>_exec): Likewise.
13136         (mov<mode>_sgprbase): Likewise.
13137         * config/gcn/gcn.md (*mov<mode>_insn): Likewise.
13138         (*movti_insn): Likewise.
13140 2023-10-06  Andrew Stubbs  <ams@codesourcery.com>
13142         * config/gcn/gcn.cc (print_operand): Adjust xcode type to fix warning.
13144 2023-10-06  Andrew Pinski  <pinskia@gmail.com>
13146         PR middle-end/111699
13147         * match.pd ((c ? a : b) op d, (c ? a : b) op (c ? d : e),
13148         (v ? w : 0) ? a : b, c1 ? c2 ? a : b : b): Enable only for GIMPLE.
13150 2023-10-06  Jakub Jelinek  <jakub@redhat.com>
13152         * ipa-prop.h (ipa_bits): Remove.
13153         (struct ipa_jump_func): Remove bits member.
13154         (struct ipcp_transformation): Remove bits member, adjust
13155         ctor and dtor.
13156         (ipa_get_ipa_bits_for_value): Remove.
13157         * ipa-prop.cc (struct ipa_bit_ggc_hash_traits): Remove.
13158         (ipa_bits_hash_table): Remove.
13159         (ipa_print_node_jump_functions_for_edge): Don't print bits.
13160         (ipa_get_ipa_bits_for_value): Remove.
13161         (ipa_set_jfunc_bits): Remove.
13162         (ipa_compute_jump_functions_for_edge): For pointers query
13163         pointer alignment before ipa_set_jfunc_vr and update_bitmask
13164         in there.  For integral types, just rely on bitmask already
13165         being handled in value ranges.
13166         (ipa_check_create_edge_args): Don't create ipa_bits_hash_table.
13167         (ipcp_transformation_initialize): Neither here.
13168         (ipcp_transformation_t::duplicate): Don't copy bits vector.
13169         (ipa_write_jump_function): Don't stream bits here.
13170         (ipa_read_jump_function): Neither here.
13171         (useful_ipcp_transformation_info_p): Don't test bits vec.
13172         (write_ipcp_transformation_info): Don't stream bits here.
13173         (read_ipcp_transformation_info): Neither here.
13174         (ipcp_get_parm_bits): Get mask and value from m_vr rather
13175         than bits.
13176         (ipcp_update_bits): Remove.
13177         (ipcp_update_vr): For pointers, set_ptr_info_alignment from
13178         bitmask stored in value range.
13179         (ipcp_transform_function): Don't test bits vector, don't call
13180         ipcp_update_bits.
13181         * ipa-cp.cc (propagate_bits_across_jump_function): Don't use
13182         jfunc->bits, instead get mask and value from jfunc->m_vr.
13183         (ipcp_store_bits_results): Remove.
13184         (ipcp_store_vr_results): Incorporate parts of
13185         ipcp_store_bits_results here, merge the bitmasks with value
13186         range if both are supplied.
13187         (ipcp_driver): Don't call ipcp_store_bits_results.
13188         * ipa-sra.cc (zap_useless_ipcp_results): Remove *ts->bits
13189         clearing.
13191 2023-10-06  Pan Li  <pan2.li@intel.com>
13193         * config/riscv/autovec.md: Update comments.
13195 2023-10-05  John David Anglin  <danglin@gcc.gnu.org>
13197         * config/pa/pa32-linux.h (MALLOC_ABI_ALIGNMENT): Delete.
13199 2023-10-05  Andrew MacLeod  <amacleod@redhat.com>
13201         * timevar.def (TV_TREE_FAST_VRP): New.
13202         * tree-pass.h (make_pass_fast_vrp): New prototype.
13203         * tree-vrp.cc (class fvrp_folder): New.
13204         (fvrp_folder::fvrp_folder): New.
13205         (fvrp_folder::~fvrp_folder): New.
13206         (fvrp_folder::value_of_expr): New.
13207         (fvrp_folder::value_on_edge): New.
13208         (fvrp_folder::value_of_stmt): New.
13209         (fvrp_folder::pre_fold_bb): New.
13210         (fvrp_folder::post_fold_bb): New.
13211         (fvrp_folder::pre_fold_stmt): New.
13212         (fvrp_folder::fold_stmt): New.
13213         (execute_fast_vrp): New.
13214         (pass_data_fast_vrp): New.
13215         (pass_vrp:execute): Check for fast VRP pass.
13216         (make_pass_fast_vrp): New.
13218 2023-10-05  Andrew MacLeod  <amacleod@redhat.com>
13220         * gimple-range.cc (dom_ranger::dom_ranger): New.
13221         (dom_ranger::~dom_ranger): New.
13222         (dom_ranger::range_of_expr): New.
13223         (dom_ranger::edge_range): New.
13224         (dom_ranger::range_on_edge): New.
13225         (dom_ranger::range_in_bb): New.
13226         (dom_ranger::range_of_stmt): New.
13227         (dom_ranger::maybe_push_edge): New.
13228         (dom_ranger::pre_bb): New.
13229         (dom_ranger::post_bb): New.
13230         * gimple-range.h (class dom_ranger): New.
13232 2023-10-05  Andrew MacLeod  <amacleod@redhat.com>
13234         * gimple-range-gori.cc (gori_stmt_info::gori_stmt_info): New.
13235         (gori_calc_operands): New.
13236         (gori_on_edge): New.
13237         (gori_name_helper): New.
13238         (gori_name_on_edge): New.
13239         * gimple-range-gori.h (gori_on_edge): New prototype.
13240         (gori_name_on_edge): New prototype.
13242 2023-10-05  Sergei Trofimovich  <siarheit@google.com>
13244         PR ipa/111283
13245         PR gcov-profile/111559
13246         * ipa-utils.cc (ipa_merge_profiles): Avoid producing
13247         uninitialized probabilities when merging counters with zero
13248         denominators.
13250 2023-10-05  Uros Bizjak  <ubizjak@gmail.com>
13252         PR target/111657
13253         * config/i386/i386-expand.cc (alg_usable_p): Reject libcall
13254         strategy for non-default address spaces.
13255         (decide_alg): Use loop strategy as a fallback strategy for
13256         non-default address spaces.
13258 2023-10-05  Jakub Jelinek  <jakub@redhat.com>
13260         * sreal.cc (verify_aritmetics): Rename to ...
13261         (verify_arithmetics): ... this.
13262         (sreal_verify_arithmetics): Adjust caller.
13264 2023-10-05  Martin Jambor  <mjambor@suse.cz>
13266         Revert:
13267         2023-10-03  Martin Jambor  <mjambor@suse.cz>
13269         PR ipa/108007
13270         * cgraph.h (cgraph_edge): Add a parameter to
13271         redirect_call_stmt_to_callee.
13272         * ipa-param-manipulation.h (ipa_param_adjustments): Add a
13273         parameter to modify_call.
13274         * cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee): New
13275         parameter killed_ssas, pass it to padjs->modify_call.
13276         * ipa-param-manipulation.cc (purge_transitive_uses): New function.
13277         (ipa_param_adjustments::modify_call): New parameter killed_ssas.
13278         Instead of substituting uses, invoke purge_transitive_uses.  If
13279         hash of killed SSAs has not been provided, create a temporary one
13280         and release SSAs that have been added to it.
13281         * tree-inline.cc (redirect_all_calls): Create
13282         id->killed_new_ssa_names earlier, pass it to edge redirection,
13283         adjust a comment.
13284         (copy_body): Release SSAs in id->killed_new_ssa_names.
13286 2023-10-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
13288         * config/riscv/autovec.md (@vec_series<mode>): Remove @.
13289         (vec_series<mode>): Ditto.
13290         * config/riscv/riscv-v.cc (expand_const_vector): Ditto.
13291         (shuffle_decompress_patterns): Ditto.
13293 2023-10-05  Claudiu Zissulescu  <claziss@gmail.com>
13295         * config/arc/arc-passes.def: Remove arc_ifcvt pass.
13296         * config/arc/arc-protos.h (arc_ccfsm_branch_deleted_p): Remove.
13297         (arc_ccfsm_record_branch_deleted): Likewise.
13298         (arc_ccfsm_cond_exec_p): Likewise.
13299         (arc_ccfsm): Likewise.
13300         (arc_ccfsm_record_condition): Likewise.
13301         (make_pass_arc_ifcvt): Likewise.
13302         * config/arc/arc.cc (arc_ccfsm): Remove.
13303         (arc_ccfsm_current): Likewise.
13304         (ARC_CCFSM_BRANCH_DELETED_P): Likewise.
13305         (ARC_CCFSM_RECORD_BRANCH_DELETED): Likewise.
13306         (ARC_CCFSM_COND_EXEC_P): Likewise.
13307         (CCFSM_ISCOMPACT): Likewise.
13308         (CCFSM_DBR_ISCOMPACT): Likewise.
13309         (machine_function): Remove ccfsm related fields.
13310         (arc_ifcvt): Remove pass.
13311         (arc_print_operand): Remove `#` punct operand and other ccfsm
13312         related code.
13313         (arc_ccfsm_advance): Remove.
13314         (arc_ccfsm_at_label): Likewise.
13315         (arc_ccfsm_record_condition): Likewise.
13316         (arc_ccfsm_post_advance): Likewise.
13317         (arc_ccfsm_branch_deleted_p): Likewise.
13318         (arc_ccfsm_record_branch_deleted): Likewise.
13319         (arc_ccfsm_cond_exec_p): Likewise.
13320         (arc_get_ccfsm_cond): Likewise.
13321         (arc_final_prescan_insn): Remove ccfsm references.
13322         (arc_internal_label): Likewise.
13323         (arc_reorg): Likewise.
13324         (arc_output_libcall): Likewise.
13325         * config/arc/arc.md: Remove ccfsm references and update related
13326         instruction patterns.
13328 2023-10-05  Claudiu Zissulescu  <claziss@gmail.com>
13330         * config/arc/arc.cc (arc_init): Remove '^' punct char.
13331         (arc_print_operand): Remove related code.
13332         * config/arc/arc.md: Update patterns which uses '%&'.
13334 2023-10-05  Claudiu Zissulescu  <claziss@gmail.com>
13336         * config/arc/arc-protos.h (arc_clear_unalign): Remove.
13337         (arc_toggle_unalign): Likewise.
13338         * config/arc/arc.cc (machine_function) Remove unalign.
13339         (arc_init): Remove `&` punct character.
13340         (arc_print_operand): Remove `&` related functions.
13341         (arc_verify_short): Update function's number of parameters.
13342         (output_short_suffix): Update function.
13343         (arc_short_long): Likewise.
13344         (arc_clear_unalign): Remove.
13345         (arc_toggle_unalign): Likewise.
13346         * config/arc/arc.h (ASM_OUTPUT_CASE_END): Remove.
13347         (ASM_OUTPUT_ALIGN): Update.
13348         * config/arc/arc.md: Remove all `%&` references.
13349         * config/arc/arc.opt (mannotate-align): Ignore option.
13350         * doc/invoke.texi (mannotate-align): Update description.
13352 2023-10-05  Richard Biener  <rguenther@suse.de>
13354         * tree-vect-slp.cc (vect_build_slp_tree_1): Do not
13355         ask for internal_fn_p (CFN_LAST).
13357 2023-10-05  Richard Biener  <rguenther@suse.de>
13359         * tree-ssa-sccvn.cc (rpo_elim::eliminate_avail): Not
13360         visited value numbers are available itself.
13362 2023-10-05  Richard Biener  <rguenther@suse.de>
13364         PR ipa/111643
13365         * doc/extend.texi (attribute flatten): Clarify.
13367 2023-10-04  Roger Sayle  <roger@nextmovesoftware.com>
13369         * config/arc/arc-protos.h (emit_shift): Delete prototype.
13370         (arc_pre_reload_split): New function prototype.
13371         * config/arc/arc.cc (emit_shift): Delete function.
13372         (arc_pre_reload_split): New predicate function, copied from i386,
13373         to schedule define_insn_and_split splitters to the split1 pass.
13374         * config/arc/arc.md (ashlsi3): Expand RTL template unconditionally.
13375         (ashrsi3): Likewise.
13376         (lshrsi3): Likewise.
13377         (shift_si3): Move after other shift patterns, and disable when
13378         operands[2] is one (which is handled by its own define_insn).
13379         Use shiftr4_operator, instead of shift4_operator, as this is no
13380         longer used for left shifts.
13381         (shift_si3_loop): Likewise.  Additionally remove match_scratch.
13382         (*ashlsi3_nobs): New pre-reload define_insn_and_split.
13383         (*ashrsi3_nobs): Likewise.
13384         (*lshrsi3_nobs): Likewise.
13385         (rotrsi3_cnt1): Rename define_insn from *rotrsi3_cnt1.
13386         (add_shift): Rename define_insn from *add_shift.
13387         * config/arc/predicates.md (shiftl4_operator): Delete.
13388         (shift4_operator): Delete.
13390 2023-10-04  Roger Sayle  <roger@nextmovesoftware.com>
13392         * config/arc/arc.md (ashlsi3_cnt1): Rename define_insn *ashlsi2_cnt1.
13393         Change type attribute to "unary", as this doesn't have operands[2].
13394         Change length attribute to "*,4" to allow compact representation.
13395         (lshrsi3_cnt1): Rename define_insn from *lshrsi3_cnt1.  Change
13396         insn type attribute to "unary", as this doesn't have operands[2].
13397         (ashrsi3_cnt1): Rename define_insn from *ashrsi3_cnt1.  Change
13398         insn type attribute to "unary", as this doesn't have operands[2].
13400 2023-10-04  Roger Sayle  <roger@nextmovesoftware.com>
13402         PR rtl-optimization/110701
13403         * combine.cc (record_dead_and_set_regs_1): Split comment into
13404         pieces placed before the relevant clauses.  When the SET_DEST
13405         is a partial_subreg_p, mark the bits outside of the updated
13406         portion of the destination as undefined.
13408 2023-10-04  Kito Cheng  <kito.cheng@sifive.com>
13410         PR bootstrap/111664
13411         * opt-read.awk: Drop multidimensional arrays.
13412         * opth-gen.awk: Ditto.
13414 2023-10-04  Xi Ruoyao  <xry111@xry111.site>
13416         * config/loongarch/loongarch.md (UNSPEC_FCOPYSIGN): Delete.
13417         (copysign<mode>3): Use copysign RTL instead of UNSPEC.
13419 2023-10-04  Jakub Jelinek  <jakub@redhat.com>
13421         PR middle-end/111369
13422         * match.pd (x == cstN ? cst4 : cst3): Use
13423         build_nonstandard_integer_type only if type1 is BOOLEAN_TYPE.
13424         Fix comment typo.  Formatting fix.
13425         (a?~t:t -> (-(a))^t): Always convert to type rather
13426         than using build_nonstandard_integer_type.  Perform negation
13427         only if type has precision > 1 and is not signed BOOLEAN_TYPE.
13429 2023-10-04  Jakub Jelinek  <jakub@redhat.com>
13431         PR tree-optimization/111668
13432         * match.pd (a ? CST1 : CST2): Handle the a ? -1 : 0 and
13433         a ? 0 : -1 cases before the powerof2cst cases and differentiate
13434         between 1-bit precision types, larger precision boolean types
13435         and other integral types.  Fix comment pastos and formatting.
13437 2023-10-03  Andrew MacLeod  <amacleod@redhat.com>
13439         * tree-ssanames.cc (set_range_info): Use get_ptr_info for
13440         pointers rather than range_info_get_range.
13442 2023-10-03  Martin Jambor  <mjambor@suse.cz>
13444         * ipa-modref.h (modref_summary::dump): Make const.
13445         * ipa-modref.cc (modref_summary::dump): Likewise.
13446         (dump_lto_records): Dump to out instead of dump_file.
13448 2023-10-03  Martin Jambor  <mjambor@suse.cz>
13450         PR ipa/110378
13451         * ipa-param-manipulation.cc
13452         (ipa_param_body_adjustments::mark_dead_statements): Verify that any
13453         return uses of PARAM will be removed.
13454         (ipa_param_body_adjustments::mark_clobbers_dead): Likewise.
13455         * ipa-sra.cc (isra_param_desc): New fields
13456         remove_only_when_retval_removed and split_only_when_retval_removed.
13457         (struct gensum_param_desc): Likewise.  Fix comment long line.
13458         (ipa_sra_function_summaries::duplicate): Copy the new flags.
13459         (dump_gensum_param_descriptor): Dump the new flags.
13460         (dump_isra_param_descriptor): Likewise.
13461         (isra_track_scalar_value_uses): New parameter desc.  Set its flag
13462         remove_only_when_retval_removed when encountering a simple return.
13463         (isra_track_scalar_param_local_uses): Replace parameter call_uses_p
13464         with desc.  Pass it to isra_track_scalar_value_uses and set its
13465         call_uses.
13466         (ptr_parm_has_nonarg_uses): Accept parameter descriptor as a
13467         parameter.  If there is a direct return use, mark any..
13468         (create_parameter_descriptors): Pass the whole parameter descriptor to
13469         isra_track_scalar_param_local_uses and ptr_parm_has_nonarg_uses.
13470         (process_scan_results): Copy the new flags.
13471         (isra_write_node_summary): Stream the new flags.
13472         (isra_read_node_info): Likewise.
13473         (adjust_parameter_descriptions): Check that transformations
13474         requring return removal only happen when return value is removed.
13475         Restructure main loop.  Adjust dump message.
13477 2023-10-03  Martin Jambor  <mjambor@suse.cz>
13479         PR ipa/108007
13480         * cgraph.h (cgraph_edge): Add a parameter to
13481         redirect_call_stmt_to_callee.
13482         * ipa-param-manipulation.h (ipa_param_adjustments): Add a
13483         parameter to modify_call.
13484         * cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee): New
13485         parameter killed_ssas, pass it to padjs->modify_call.
13486         * ipa-param-manipulation.cc (purge_transitive_uses): New function.
13487         (ipa_param_adjustments::modify_call): New parameter killed_ssas.
13488         Instead of substituting uses, invoke purge_transitive_uses.  If
13489         hash of killed SSAs has not been provided, create a temporary one
13490         and release SSAs that have been added to it.
13491         * tree-inline.cc (redirect_all_calls): Create
13492         id->killed_new_ssa_names earlier, pass it to edge redirection,
13493         adjust a comment.
13494         (copy_body): Release SSAs in id->killed_new_ssa_names.
13496 2023-10-03  Andrew MacLeod  <amacleod@redhat.com>
13498         * passes.def (pass_vrp): Pass "final pass" flag as parameter.
13499         * tree-vrp.cc (vrp_pass_num): Remove.
13500         (pass_vrp::my_pass): Remove.
13501         (pass_vrp::pass_vrp): Add warn_p as a parameter.
13502         (pass_vrp::final_p): New.
13503         (pass_vrp::set_pass_param): Set final_p param.
13504         (pass_vrp::execute): Call execute_range_vrp with no conditions.
13505         (make_pass_vrp): Pass additional parameter.
13506         (make_pass_early_vrp): Ditto.
13508 2023-10-03  Andrew MacLeod  <amacleod@redhat.com>
13510         * tree-ssanames.cc (set_range_info): Return true only if the
13511         current value changes.
13513 2023-10-03  David Malcolm  <dmalcolm@redhat.com>
13515         * diagnostic.cc (diagnostic_set_info_translated): Update for "m_"
13516         prefixes to text_info fields.
13517         (diagnostic_report_diagnostic): Likewise.
13518         (verbatim): Use text_info ctor.
13519         (simple_diagnostic_path::add_event): Likewise.
13520         (simple_diagnostic_path::add_thread_event): Likewise.
13521         * dumpfile.cc (dump_pretty_printer::decode_format): Update for
13522         "m_" prefixes to text_info fields.
13523         (dump_context::dump_printf_va): Use text_info ctor.
13524         * graphviz.cc (graphviz_out::graphviz_out): Use text_info ctor.
13525         (graphviz_out::print): Likewise.
13526         * opt-problem.cc (opt_problem::opt_problem): Likewise.
13527         * pretty-print.cc (pp_format): Update for "m_" prefixes to
13528         text_info fields.
13529         (pp_printf): Use text_info ctor.
13530         (pp_verbatim): Likewise.
13531         (assert_pp_format_va): Likewise.
13532         * pretty-print.h (struct text_info): Add ctors.  Add "m_" prefix
13533         to all fields.
13534         * text-art/styled-string.cc (styled_string::from_fmt_va): Use
13535         text_info ctor.
13536         * tree-diagnostic.cc (default_tree_printer): Update for "m_"
13537         prefixes to text_info fields.
13538         * tree-pretty-print.h (pp_ti_abstract_origin): Likewise.
13540 2023-10-03  Roger Sayle  <roger@nextmovesoftware.com>
13542         * config/arc/arc.md (CC_ltu): New mode iterator for CC and CC_C.
13543         (scc_ltu_<mode>): New define_insn to handle LTU form of scc_insn.
13544         (*scc_insn): Don't split to a conditional move sequence for LTU.
13546 2023-10-03  Andrea Corallo  <andrea.corallo@arm.com>
13548         * config/aarch64/aarch64.md (@ccmp<CC_ONLY:mode><GPI:mode>)
13549         (@ccmp<CC_ONLY:mode><GPI:mode>_rev, *call_insn, *call_value_insn)
13550         (*mov<mode>_aarch64, load_pair_sw_<SX:mode><SX2:mode>)
13551         (load_pair_dw_<DX:mode><DX2:mode>)
13552         (store_pair_sw_<SX:mode><SX2:mode>)
13553         (store_pair_dw_<DX:mode><DX2:mode>, *extendsidi2_aarch64)
13554         (*zero_extendsidi2_aarch64, *load_pair_zero_extendsidi2_aarch64)
13555         (*extend<SHORT:mode><GPI:mode>2_aarch64)
13556         (*zero_extend<SHORT:mode><GPI:mode>2_aarch64)
13557         (*extendqihi2_aarch64, *zero_extendqihi2_aarch64)
13558         (*add<mode>3_aarch64, *addsi3_aarch64_uxtw, *add<mode>3_poly_1)
13559         (add<mode>3_compare0, *addsi3_compare0_uxtw)
13560         (*add<mode>3_compareC_cconly, add<mode>3_compareC)
13561         (*add<mode>3_compareV_cconly_imm, add<mode>3_compareV_imm)
13562         (*add<mode>3nr_compare0, subdi3, subv<GPI:mode>_imm)
13563         (*cmpv<GPI:mode>_insn, sub<mode>3_compare1_imm, neg<mode>2)
13564         (cmp<mode>, fcmp<mode>, fcmpe<mode>, *cmov<mode>_insn)
13565         (*cmovsi_insn_uxtw, <optab><mode>3, *<optab>si3_uxtw)
13566         (*and<mode>3_compare0, *andsi3_compare0_uxtw, one_cmpl<mode>2)
13567         (*<NLOGICAL:optab>_one_cmpl<mode>3, *and<mode>3nr_compare0)
13568         (*aarch64_ashl_sisd_or_int_<mode>3)
13569         (*aarch64_lshr_sisd_or_int_<mode>3)
13570         (*aarch64_ashr_sisd_or_int_<mode>3, *ror<mode>3_insn)
13571         (*<optab>si3_insn_uxtw, <optab>_trunc<fcvt_target><GPI:mode>2)
13572         (<optab><fcvt_target><GPF:mode>2)
13573         (<FCVT_F2FIXED:fcvt_fixed_insn><GPF:mode>3)
13574         (<FCVT_FIXED2F:fcvt_fixed_insn><GPI:mode>3)
13575         (*aarch64_<optab><mode>3_cssc, copysign<GPF:mode>3_insn): Update
13576         to new syntax.
13577         * config/aarch64/aarch64-sve2.md (@aarch64_scatter_stnt<mode>)
13578         (@aarch64_scatter_stnt_<SVE_FULL_SDI:mode><SVE_PARTIAL_I:mode>)
13579         (*aarch64_mul_unpredicated_<mode>)
13580         (@aarch64_pred_<sve_int_op><mode>, *cond_<sve_int_op><mode>_2)
13581         (*cond_<sve_int_op><mode>_3, *cond_<sve_int_op><mode>_any)
13582         (*cond_<sve_int_op><mode>_z, @aarch64_pred_<sve_int_op><mode>)
13583         (*cond_<sve_int_op><mode>_2, *cond_<sve_int_op><mode>_3)
13584         (*cond_<sve_int_op><mode>_any, @aarch64_sve_<sve_int_op><mode>)
13585         (@aarch64_sve_<sve_int_op>_lane_<mode>)
13586         (@aarch64_sve_add_mul_lane_<mode>)
13587         (@aarch64_sve_sub_mul_lane_<mode>, @aarch64_sve2_xar<mode>)
13588         (*aarch64_sve2_bcax<mode>, @aarch64_sve2_eor3<mode>)
13589         (*aarch64_sve2_nor<mode>, *aarch64_sve2_nand<mode>)
13590         (*aarch64_sve2_bsl<mode>, *aarch64_sve2_nbsl<mode>)
13591         (*aarch64_sve2_bsl1n<mode>, *aarch64_sve2_bsl2n<mode>)
13592         (*aarch64_sve2_sra<mode>, @aarch64_sve_add_<sve_int_op><mode>)
13593         (*aarch64_sve2_<su>aba<mode>, @aarch64_sve_add_<sve_int_op><mode>)
13594         (@aarch64_sve_add_<sve_int_op>_lane_<mode>)
13595         (@aarch64_sve_qadd_<sve_int_op><mode>)
13596         (@aarch64_sve_qadd_<sve_int_op>_lane_<mode>)
13597         (@aarch64_sve_sub_<sve_int_op><mode>)
13598         (@aarch64_sve_sub_<sve_int_op>_lane_<mode>)
13599         (@aarch64_sve_qsub_<sve_int_op><mode>)
13600         (@aarch64_sve_qsub_<sve_int_op>_lane_<mode>)
13601         (@aarch64_sve_<sve_fp_op><mode>, @aarch64_<sve_fp_op>_lane_<mode>)
13602         (@aarch64_pred_<sve_int_op><mode>)
13603         (@aarch64_pred_<sve_fp_op><mode>, *cond_<sve_int_op><mode>_2)
13604         (*cond_<sve_int_op><mode>_z, @aarch64_sve_<optab><mode>)
13605         (@aarch64_<optab>_lane_<mode>, @aarch64_sve_<optab><mode>)
13606         (@aarch64_<optab>_lane_<mode>, @aarch64_pred_<sve_fp_op><mode>)
13607         (*cond_<sve_fp_op><mode>_any_relaxed)
13608         (*cond_<sve_fp_op><mode>_any_strict)
13609         (@aarch64_pred_<sve_int_op><mode>, *cond_<sve_int_op><mode>)
13610         (@aarch64_pred_<sve_fp_op><mode>, *cond_<sve_fp_op><mode>)
13611         (*cond_<sve_fp_op><mode>_strict): Update to new syntax.
13612         * config/aarch64/aarch64-sve.md (*aarch64_sve_mov<mode>_ldr_str)
13613         (*aarch64_sve_mov<mode>_no_ldr_str, @aarch64_pred_mov<mode>)
13614         (*aarch64_sve_mov<mode>, aarch64_wrffr)
13615         (mask_scatter_store<mode><v_int_container>)
13616         (*mask_scatter_store<mode><v_int_container>_<su>xtw_unpacked)
13617         (*mask_scatter_store<mode><v_int_container>_sxtw)
13618         (*mask_scatter_store<mode><v_int_container>_uxtw)
13619         (@aarch64_scatter_store_trunc<VNx4_NARROW:mode><VNx4_WIDE:mode>)
13620         (@aarch64_scatter_store_trunc<VNx2_NARROW:mode><VNx2_WIDE:mode>)
13621         (*aarch64_scatter_store_trunc<VNx2_NARROW:mode><VNx2_WIDE:mode>_sxtw)
13622         (*aarch64_scatter_store_trunc<VNx2_NARROW:mode><VNx2_WIDE:mode>_uxtw)
13623         (*vec_duplicate<mode>_reg, vec_shl_insert_<mode>)
13624         (vec_series<mode>, @extract_<last_op>_<mode>)
13625         (@aarch64_pred_<optab><mode>, *cond_<optab><mode>_2)
13626         (*cond_<optab><mode>_any, @aarch64_pred_<optab><mode>)
13627         (@aarch64_sve_revbhw_<SVE_ALL:mode><PRED_HSD:mode>)
13628         (@cond_<optab><mode>)
13629         (*<optab><SVE_PARTIAL_I:mode><SVE_HSDI:mode>2)
13630         (@aarch64_pred_sxt<SVE_FULL_HSDI:mode><SVE_PARTIAL_I:mode>)
13631         (@aarch64_cond_sxt<SVE_FULL_HSDI:mode><SVE_PARTIAL_I:mode>)
13632         (*cond_uxt<mode>_2, *cond_uxt<mode>_any, *cnot<mode>)
13633         (*cond_cnot<mode>_2, *cond_cnot<mode>_any)
13634         (@aarch64_pred_<optab><mode>, *cond_<optab><mode>_2_relaxed)
13635         (*cond_<optab><mode>_2_strict, *cond_<optab><mode>_any_relaxed)
13636         (*cond_<optab><mode>_any_strict, @aarch64_pred_<optab><mode>)
13637         (*cond_<optab><mode>_2, *cond_<optab><mode>_3)
13638         (*cond_<optab><mode>_any, add<mode>3, sub<mode>3)
13639         (@aarch64_pred_<su>abd<mode>, *aarch64_cond_<su>abd<mode>_2)
13640         (*aarch64_cond_<su>abd<mode>_3, *aarch64_cond_<su>abd<mode>_any)
13641         (@aarch64_sve_<optab><mode>, @aarch64_pred_<optab><mode>)
13642         (*cond_<optab><mode>_2, *cond_<optab><mode>_z)
13643         (@aarch64_pred_<optab><mode>, *cond_<optab><mode>_2)
13644         (*cond_<optab><mode>_3, *cond_<optab><mode>_any, <optab><mode>3)
13645         (*cond_bic<mode>_2, *cond_bic<mode>_any)
13646         (@aarch64_pred_<optab><mode>, *cond_<optab><mode>_2_const)
13647         (*cond_<optab><mode>_any_const, *cond_<sve_int_op><mode>_m)
13648         (*cond_<sve_int_op><mode>_z, *sdiv_pow2<mode>3)
13649         (*cond_<sve_int_op><mode>_2, *cond_<sve_int_op><mode>_any)
13650         (@aarch64_pred_<optab><mode>, *cond_<optab><mode>_2_relaxed)
13651         (*cond_<optab><mode>_2_strict, *cond_<optab><mode>_any_relaxed)
13652         (*cond_<optab><mode>_any_strict, @aarch64_pred_<optab><mode>)
13653         (*cond_<optab><mode>_2_relaxed, *cond_<optab><mode>_2_strict)
13654         (*cond_<optab><mode>_2_const_relaxed)
13655         (*cond_<optab><mode>_2_const_strict)
13656         (*cond_<optab><mode>_3_relaxed, *cond_<optab><mode>_3_strict)
13657         (*cond_<optab><mode>_any_relaxed, *cond_<optab><mode>_any_strict)
13658         (*cond_<optab><mode>_any_const_relaxed)
13659         (*cond_<optab><mode>_any_const_strict)
13660         (@aarch64_pred_<optab><mode>, *cond_add<mode>_2_const_relaxed)
13661         (*cond_add<mode>_2_const_strict)
13662         (*cond_add<mode>_any_const_relaxed)
13663         (*cond_add<mode>_any_const_strict, @aarch64_pred_<optab><mode>)
13664         (*cond_<optab><mode>_2_relaxed, *cond_<optab><mode>_2_strict)
13665         (*cond_<optab><mode>_any_relaxed, *cond_<optab><mode>_any_strict)
13666         (@aarch64_pred_<optab><mode>, *cond_sub<mode>_3_const_relaxed)
13667         (*cond_sub<mode>_3_const_strict, *cond_sub<mode>_const_relaxed)
13668         (*cond_sub<mode>_const_strict, *aarch64_pred_abd<mode>_relaxed)
13669         (*aarch64_pred_abd<mode>_strict)
13670         (*aarch64_cond_abd<mode>_2_relaxed)
13671         (*aarch64_cond_abd<mode>_2_strict)
13672         (*aarch64_cond_abd<mode>_3_relaxed)
13673         (*aarch64_cond_abd<mode>_3_strict)
13674         (*aarch64_cond_abd<mode>_any_relaxed)
13675         (*aarch64_cond_abd<mode>_any_strict, @aarch64_pred_<optab><mode>)
13676         (@aarch64_pred_fma<mode>, *cond_fma<mode>_2, *cond_fma<mode>_4)
13677         (*cond_fma<mode>_any, @aarch64_pred_fnma<mode>)
13678         (*cond_fnma<mode>_2, *cond_fnma<mode>_4, *cond_fnma<mode>_any)
13679         (<sur>dot_prod<vsi2qi>, @aarch64_<sur>dot_prod_lane<vsi2qi>)
13680         (@<sur>dot_prod<vsi2qi>, @aarch64_<sur>dot_prod_lane<vsi2qi>)
13681         (@aarch64_sve_add_<optab><vsi2qi>, @aarch64_pred_<optab><mode>)
13682         (*cond_<optab><mode>_2_relaxed, *cond_<optab><mode>_2_strict)
13683         (*cond_<optab><mode>_4_relaxed, *cond_<optab><mode>_4_strict)
13684         (*cond_<optab><mode>_any_relaxed, *cond_<optab><mode>_any_strict)
13685         (@aarch64_<optab>_lane_<mode>, @aarch64_pred_<optab><mode>)
13686         (*cond_<optab><mode>_4_relaxed, *cond_<optab><mode>_4_strict)
13687         (*cond_<optab><mode>_any_relaxed, *cond_<optab><mode>_any_strict)
13688         (@aarch64_<optab>_lane_<mode>, @aarch64_sve_tmad<mode>)
13689         (@aarch64_sve_<sve_fp_op>vnx4sf)
13690         (@aarch64_sve_<sve_fp_op>_lanevnx4sf)
13691         (@aarch64_sve_<sve_fp_op><mode>, *vcond_mask_<mode><vpred>)
13692         (@aarch64_sel_dup<mode>, @aarch64_pred_cmp<cmp_op><mode>)
13693         (*cmp<cmp_op><mode>_cc, *cmp<cmp_op><mode>_ptest)
13694         (@aarch64_pred_fcm<cmp_op><mode>, @fold_extract_<last_op>_<mode>)
13695         (@aarch64_fold_extract_vector_<last_op>_<mode>)
13696         (@aarch64_sve_splice<mode>)
13697         (@aarch64_sve_<optab>_nontrunc<SVE_FULL_F:mode><SVE_FULL_HSDI:mode>)
13698         (@aarch64_sve_<optab>_trunc<VNx2DF_ONLY:mode><VNx4SI_ONLY:mode>)
13699         (*cond_<optab>_nontrunc<SVE_FULL_F:mode><SVE_FULL_HSDI:mode>_relaxed)
13700         (*cond_<optab>_nontrunc<SVE_FULL_F:mode><SVE_FULL_HSDI:mode>_strict)
13701         (*cond_<optab>_trunc<VNx2DF_ONLY:mode><VNx4SI_ONLY:mode>)
13702         (@aarch64_sve_<optab>_nonextend<SVE_FULL_HSDI:mode><SVE_FULL_F:mode>)
13703         (@aarch64_sve_<optab>_extend<VNx4SI_ONLY:mode><VNx2DF_ONLY:mode>)
13704         (*cond_<optab>_nonextend<SVE_FULL_HSDI:mode><SVE_FULL_F:mode>_relaxed)
13705         (*cond_<optab>_nonextend<SVE_FULL_HSDI:mode><SVE_FULL_F:mode>_strict)
13706         (*cond_<optab>_extend<VNx4SI_ONLY:mode><VNx2DF_ONLY:mode>)
13707         (@aarch64_sve_<optab>_trunc<SVE_FULL_SDF:mode><SVE_FULL_HSF:mode>)
13708         (*cond_<optab>_trunc<SVE_FULL_SDF:mode><SVE_FULL_HSF:mode>)
13709         (@aarch64_sve_<optab>_trunc<VNx4SF_ONLY:mode><VNx8BF_ONLY:mode>)
13710         (*cond_<optab>_trunc<VNx4SF_ONLY:mode><VNx8BF_ONLY:mode>)
13711         (@aarch64_sve_<optab>_nontrunc<SVE_FULL_HSF:mode><SVE_FULL_SDF:mode>)
13712         (*cond_<optab>_nontrunc<SVE_FULL_HSF:mode><SVE_FULL_SDF:mode>)
13713         (@aarch64_brk<brk_op>, *aarch64_sve_<inc_dec><mode>_cntp): Update
13714         to new syntax.
13715         * config/aarch64/aarch64-simd.md (aarch64_simd_dup<mode>)
13716         (load_pair<DREG:mode><DREG2:mode>)
13717         (vec_store_pair<DREG:mode><DREG2:mode>, aarch64_simd_stp<mode>)
13718         (aarch64_simd_mov_from_<mode>low)
13719         (aarch64_simd_mov_from_<mode>high, and<mode>3<vczle><vczbe>)
13720         (ior<mode>3<vczle><vczbe>, aarch64_simd_ashr<mode><vczle><vczbe>)
13721         (aarch64_simd_bsl<mode>_internal<vczle><vczbe>)
13722         (*aarch64_simd_bsl<mode>_alt<vczle><vczbe>)
13723         (aarch64_simd_bsldi_internal, aarch64_simd_bsldi_alt)
13724         (store_pair_lanes<mode>, *aarch64_combine_internal<mode>)
13725         (*aarch64_combine_internal_be<mode>, *aarch64_combinez<mode>)
13726         (*aarch64_combinez_be<mode>)
13727         (aarch64_cm<optab><mode><vczle><vczbe>, *aarch64_cm<optab>di)
13728         (aarch64_cm<optab><mode><vczle><vczbe>, *aarch64_mov<mode>)
13729         (*aarch64_be_mov<mode>, *aarch64_be_movoi): Update to new syntax.
13731 2023-10-03  Andrea Corallo  <andrea.corallo@arm.com>
13733         * gensupport.cc (convert_syntax): Skip spaces before "cons:"
13734         in new compact pattern syntax.
13736 2023-10-03  Richard Sandiford  <richard.sandiford@arm.com>
13738         * gensupport.cc (convert_syntax): Updated to support unordered
13739         constraints in compact syntax.
13741 2023-10-02  Michael Meissner  <meissner@linux.ibm.com>
13743         * config/rs6000/rs6000.md (UNSPEC_COPYSIGN): Delete.
13744         (copysign<mode>3_fcpsg): Use copysign RTL instead of UNSPEC.
13745         (copysign<mode>3_hard): Likewise.
13746         (copysign<mode>3_soft): Likewise.
13747         * config/rs6000/vector.md (vector_copysign<mode>3): Use copysign RTL
13748         instead of UNSPEC.
13749         * config/rs6000/vsx.md (vsx_copysign<mode>3): Use copysign RTL instead
13750         of UNSPEC.
13752 2023-10-02  David Malcolm  <dmalcolm@redhat.com>
13754         * diagnostic-format-json.cc (toplevel_array): Remove global in
13755         favor of json_output_format::m_top_level_array.
13756         (cur_group): Likewise, for json_output_format::m_cur_group.
13757         (cur_children_array): Likewise, for
13758         json_output_format::m_cur_children_array.
13759         (class json_output_format): New.
13760         (json_begin_diagnostic): Remove, in favor of
13761         json_output_format::on_begin_diagnostic.
13762         (json_end_diagnostic): Convert to...
13763         (json_output_format::on_end_diagnostic): ...this.
13764         (json_begin_group): Remove, in favor of
13765         json_output_format::on_begin_group.
13766         (json_end_group): Remove, in favor of
13767         json_output_format::on_end_group.
13768         (json_flush_to_file): Remove, in favor of
13769         json_output_format::flush_to_file.
13770         (json_stderr_final_cb): Remove, in favor of json_output_format
13771         dtor.
13772         (json_output_base_file_name): Remove global.
13773         (class json_stderr_output_format): New.
13774         (json_file_final_cb): Remove.
13775         (class json_file_output_format): New.
13776         (json_emit_diagram): Remove.
13777         (diagnostic_output_format_init_json): Update.
13778         (diagnostic_output_format_init_json_file): Update.
13779         * diagnostic-format-sarif.cc (the_builder): Remove this global,
13780         moving to a field of the sarif_output_format.
13781         (sarif_builder::maybe_make_artifact_content_object): Use the
13782         context's m_file_cache.
13783         (get_source_lines): Convert to...
13784         (sarif_builder::get_source_lines): ...this, using context's
13785         m_file_cache.
13786         (sarif_begin_diagnostic): Remove, in favor of
13787         sarif_output_format::on_begin_diagnostic.
13788         (sarif_end_diagnostic): Remove, in favor of
13789         sarif_output_format::on_end_diagnostic.
13790         (sarif_begin_group): Remove, in favor of
13791         sarif_output_format::on_begin_group.
13792         (sarif_end_group): Remove, in favor of
13793         sarif_output_format::on_end_group.
13794         (sarif_flush_to_file): Delete.
13795         (sarif_stderr_final_cb): Delete.
13796         (sarif_output_base_file_name): Delete.
13797         (sarif_file_final_cb): Delete.
13798         (class sarif_output_format): New.
13799         (sarif_emit_diagram): Delete.
13800         (class sarif_stream_output_format): New.
13801         (class sarif_file_output_format): New.
13802         (diagnostic_output_format_init_sarif): Update.
13803         (diagnostic_output_format_init_sarif_stderr): Update.
13804         (diagnostic_output_format_init_sarif_file): Update.
13805         (diagnostic_output_format_init_sarif_stream): Update.
13806         * diagnostic-show-locus.cc (diagnostic_show_locus): Update.
13807         * diagnostic.cc (default_diagnostic_final_cb): Delete, moving to
13808         diagnostic_text_output_format's dtor.
13809         (diagnostic_initialize): Update, making a new instance of
13810         diagnostic_text_output_format.
13811         (diagnostic_finish): Delete m_output_format, rather than calling
13812         final_cb.
13813         (diagnostic_report_diagnostic): Assert that m_output_format is
13814         non-NULL.  Replace call to begin_group_cb with call to
13815         m_output_format->on_begin_group.  Replace call to
13816         diagnostic_starter with call to
13817         m_output_format->on_begin_diagnostic.  Replace call to
13818         diagnostic_finalizer with call to
13819         m_output_format->on_end_diagnostic.
13820         (diagnostic_emit_diagram): Replace both optional call to
13821         m_diagrams.m_emission_cb and default implementation with call to
13822         m_output_format->on_diagram.  Move default implementation to
13823         diagnostic_text_output_format::on_diagram.
13824         (auto_diagnostic_group::~auto_diagnostic_group): Replace call to
13825         end_group_cb with call to m_output_format->on_end_group.
13826         (diagnostic_text_output_format::~diagnostic_text_output_format):
13827         New, based on default_diagnostic_final_cb.
13828         (diagnostic_text_output_format::on_begin_diagnostic): New, based
13829         on code from diagnostic_report_diagnostic.
13830         (diagnostic_text_output_format::on_end_diagnostic): Likewise.
13831         (diagnostic_text_output_format::on_diagram): New, based on code
13832         from diagnostic_emit_diagram.
13833         * diagnostic.h (class diagnostic_output_format): New.
13834         (class diagnostic_text_output_format): New.
13835         (diagnostic_context::begin_diagnostic): Move to...
13836         (diagnostic_context::m_text_callbacks::begin_diagnostic): ...here.
13837         (diagnostic_context::start_span): Move to...
13838         (diagnostic_context::m_text_callbacks::start_span): ...here.
13839         (diagnostic_context::end_diagnostic): Move to...
13840         (diagnostic_context::m_text_callbacks::end_diagnostic): ...here.
13841         (diagnostic_context::begin_group_cb): Remove, in favor of
13842         m_output_format->on_begin_group.
13843         (diagnostic_context::end_group_cb): Remove, in favor of
13844         m_output_format->on_end_group.
13845         (diagnostic_context::final_cb): Remove, in favor of
13846         m_output_format's dtor.
13847         (diagnostic_context::m_output_format): New field.
13848         (diagnostic_context::m_diagrams.m_emission_cb): Remove, in favor
13849         of m_output_format->on_diagram.
13850         (diagnostic_starter): Update.
13851         (diagnostic_finalizer): Update.
13852         (diagnostic_output_format_init_sarif_stream): New.
13853         * input.cc (location_get_source_line): Move implementation apart from
13854         call to diagnostic_file_cache_init to...
13855         (file_cache::get_source_line): ...this new function...
13856         (location_get_source_line): ...and reintroduce, rewritten in terms of
13857         file_cache::get_source_line.
13858         (get_source_file_content): Likewise, refactor into...
13859         (file_cache::get_source_file_content): ...this new function.
13860         * input.h (file_cache::get_source_line): New decl.
13861         (file_cache::get_source_file_content): New decl.
13862         * selftest-diagnostic.cc
13863         (test_diagnostic_context::test_diagnostic_context): Update.
13864         * tree-diagnostic-path.cc (event_range::print): Update for
13865         change to diagnostic_context's start_span callback.
13867 2023-10-02  David Malcolm  <dmalcolm@redhat.com>
13869         * diagnostic-show-locus.cc: Update for reorganization of
13870         source-printing fields of diagnostic_context.
13871         * diagnostic.cc (diagnostic_set_caret_max_width): Likewise.
13872         (diagnostic_initialize): Likewise.
13873         * diagnostic.h (diagnostic_context::show_caret): Move to...
13874         (diagnostic_context::m_source_printing::enabled): ...here.
13875         (diagnostic_context::caret_max_width): Move to...
13876         (diagnostic_context::m_source_printing::max_width): ...here.
13877         (diagnostic_context::caret_chars): Move to...
13878         (diagnostic_context::m_source_printing::caret_chars): ...here.
13879         (diagnostic_context::colorize_source_p): Move to...
13880         (diagnostic_context::m_source_printing::colorize_source_p): ...here.
13881         (diagnostic_context::show_labels_p): Move to...
13882         (diagnostic_context::m_source_printing::show_labels_p): ...here.
13883         (diagnostic_context::show_line_numbers_p): Move to...
13884         (diagnostic_context::m_source_printing::show_line_numbers_p): ...here.
13885         (diagnostic_context::min_margin_width): Move to...
13886         (diagnostic_context::m_source_printing::min_margin_width): ...here.
13887         (diagnostic_context::show_ruler_p): Move to...
13888         (diagnostic_context::m_source_printing::show_ruler_p): ...here.
13889         (diagnostic_same_line): Update for above changes.
13890         * opts.cc (common_handle_option): Update for reorganization of
13891         source-printing fields of diagnostic_context.
13892         * selftest-diagnostic.cc
13893         (test_diagnostic_context::test_diagnostic_context): Likewise.
13894         * toplev.cc (general_init): Likewise.
13895         * tree-diagnostic-path.cc (struct event_range): Likewise.
13897 2023-10-02  David Malcolm  <dmalcolm@redhat.com>
13899         * diagnostic.cc (diagnostic_initialize): Initialize
13900         set_locations_cb to nullptr.
13902 2023-10-02  Wilco Dijkstra  <wilco.dijkstra@arm.com>
13904         PR target/111235
13905         * config/arm/constraints.md: Remove Pf constraint.
13906         * config/arm/sync.md (arm_atomic_load<mode>): Add new pattern.
13907         (arm_atomic_load_acquire<mode>): Likewise.
13908         (arm_atomic_store<mode>): Likewise.
13909         (arm_atomic_store_release<mode>): Likewise.
13910         (atomic_load<mode>): Switch patterns to define_expand.
13911         (atomic_store<mode>): Likewise.
13912         (arm_atomic_loaddi2_ldrd): Remove predication.
13913         (arm_load_exclusive<mode>): Likewise.
13914         (arm_load_acquire_exclusive<mode>): Likewise.
13915         (arm_load_exclusivesi): Likewise.
13916         (arm_load_acquire_exclusivesi): Likewise.
13917         (arm_load_exclusivedi): Likewise.
13918         (arm_load_acquire_exclusivedi): Likewise.
13919         (arm_store_exclusive<mode>): Likewise.
13920         (arm_store_release_exclusivedi): Likewise.
13921         (arm_store_release_exclusive<mode>): Likewise.
13922         * config/arm/unspecs.md: Add VUNSPEC_LDR and VUNSPEC_STR.
13924 2023-10-02  Tamar Christina  <tamar.christina@arm.com>
13926         Revert:
13927         2023-10-02  Tamar Christina  <tamar.christina@arm.com>
13929         PR tree-optimization/109154
13930         * tree-if-conv.cc (INCLUDE_ALGORITHM): Remove.
13931         (cmp_arg_entry): New.
13932         (predicate_scalar_phi): Use it.
13934 2023-10-02  Tamar Christina  <tamar.christina@arm.com>
13936         * config/aarch64/aarch64-simd.md (xorsign<mode>3): Renamed to..
13937         (@xorsign<mode>3): ...This.
13938         * config/aarch64/aarch64.md (xorsign<mode>3): Renamed to...
13939         (@xorsign<mode>3): ..This and emit vectors directly
13940         * config/aarch64/iterators.md (VCONQ): Add SF and DF.
13942 2023-10-02  Tamar Christina  <tamar.christina@arm.com>
13944         * emit-rtl.cc (validate_subreg): Relax subreg rule.
13946 2023-10-02  Tamar Christina  <tamar.christina@arm.com>
13948         PR tree-optimization/109154
13949         * tree-if-conv.cc (INCLUDE_ALGORITHM): Remove.
13950         (cmp_arg_entry): New.
13951         (predicate_scalar_phi): Use it.
13953 2023-10-02  Richard Sandiford  <richard.sandiford@arm.com>
13955         PR bootstrap/111642
13956         * rtl-tests.cc (const_poly_int_tests<N>::run): Use a local
13957         poly_int64 typedef.
13958         * simplify-rtx.cc (simplify_const_poly_int_tests<N>::run): Likewise.
13960 2023-10-02  Joern Rennecke  <joern.rennecke@embecosm.com>
13961             Juzhe-Zhong  <juzhe.zhong@rivai.ai>
13963         * config/riscv/riscv-protos.h (riscv_vector::expand_block_move):
13964         Declare.
13965         * config/riscv/riscv-v.cc (riscv_vector::expand_block_move):
13966         New function.
13967         * config/riscv/riscv.md (cpymemsi): Use riscv_vector::expand_block_move.
13968         Change to ..
13969         (cpymem<P:mode>) .. this.
13971 2023-10-01  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
13973         * combine.cc (simplify_compare_const): Properly handle unsigned
13974         constants while narrowing comparison of memory and constants.
13976 2023-10-01  Feng Wang  <wangfeng@eswincomputing.com>
13978         * config/riscv/riscv-opts.h (MASK_ZICSR): Delete.
13979         (MASK_ZIFENCEI): Delete;
13980         (MASK_ZIHINTNTL): Ditto.
13981         (MASK_ZIHINTPAUSE): Ditto.
13982         (TARGET_ZICSR): Ditto.
13983         (TARGET_ZIFENCEI): Ditto.
13984         (TARGET_ZIHINTNTL): Ditto.
13985         (TARGET_ZIHINTPAUSE): Ditto.
13986         (MASK_ZAWRS): Ditto.
13987         (TARGET_ZAWRS): Ditto.
13988         (MASK_ZBA): Ditto.
13989         (MASK_ZBB): Ditto.
13990         (MASK_ZBC): Ditto.
13991         (MASK_ZBS): Ditto.
13992         (TARGET_ZBA): Ditto.
13993         (TARGET_ZBB): Ditto.
13994         (TARGET_ZBC): Ditto.
13995         (TARGET_ZBS): Ditto.
13996         (MASK_ZFINX): Ditto.
13997         (MASK_ZDINX): Ditto.
13998         (MASK_ZHINX): Ditto.
13999         (MASK_ZHINXMIN): Ditto.
14000         (TARGET_ZFINX): Ditto.
14001         (TARGET_ZDINX): Ditto.
14002         (TARGET_ZHINX): Ditto.
14003         (TARGET_ZHINXMIN): Ditto.
14004         (MASK_ZBKB): Ditto.
14005         (MASK_ZBKC): Ditto.
14006         (MASK_ZBKX): Ditto.
14007         (MASK_ZKNE): Ditto.
14008         (MASK_ZKND): Ditto.
14009         (MASK_ZKNH): Ditto.
14010         (MASK_ZKR): Ditto.
14011         (MASK_ZKSED): Ditto.
14012         (MASK_ZKSH): Ditto.
14013         (MASK_ZKT): Ditto.
14014         (TARGET_ZBKB): Ditto.
14015         (TARGET_ZBKC): Ditto.
14016         (TARGET_ZBKX): Ditto.
14017         (TARGET_ZKNE): Ditto.
14018         (TARGET_ZKND): Ditto.
14019         (TARGET_ZKNH): Ditto.
14020         (TARGET_ZKR): Ditto.
14021         (TARGET_ZKSED): Ditto.
14022         (TARGET_ZKSH): Ditto.
14023         (TARGET_ZKT): Ditto.
14024         (MASK_ZTSO): Ditto.
14025         (TARGET_ZTSO): Ditto.
14026         (MASK_VECTOR_ELEN_32): Ditto.
14027         (MASK_VECTOR_ELEN_64): Ditto.
14028         (MASK_VECTOR_ELEN_FP_32): Ditto.
14029         (MASK_VECTOR_ELEN_FP_64): Ditto.
14030         (MASK_VECTOR_ELEN_FP_16): Ditto.
14031         (TARGET_VECTOR_ELEN_32): Ditto.
14032         (TARGET_VECTOR_ELEN_64): Ditto.
14033         (TARGET_VECTOR_ELEN_FP_32): Ditto.
14034         (TARGET_VECTOR_ELEN_FP_64): Ditto.
14035         (TARGET_VECTOR_ELEN_FP_16): Ditto.
14036         (MASK_ZVBB): Ditto.
14037         (MASK_ZVBC): Ditto.
14038         (TARGET_ZVBB): Ditto.
14039         (TARGET_ZVBC): Ditto.
14040         (MASK_ZVKG): Ditto.
14041         (MASK_ZVKNED): Ditto.
14042         (MASK_ZVKNHA): Ditto.
14043         (MASK_ZVKNHB): Ditto.
14044         (MASK_ZVKSED): Ditto.
14045         (MASK_ZVKSH): Ditto.
14046         (MASK_ZVKN): Ditto.
14047         (MASK_ZVKNC): Ditto.
14048         (MASK_ZVKNG): Ditto.
14049         (MASK_ZVKS): Ditto.
14050         (MASK_ZVKSC): Ditto.
14051         (MASK_ZVKSG): Ditto.
14052         (MASK_ZVKT): Ditto.
14053         (TARGET_ZVKG): Ditto.
14054         (TARGET_ZVKNED): Ditto.
14055         (TARGET_ZVKNHA): Ditto.
14056         (TARGET_ZVKNHB): Ditto.
14057         (TARGET_ZVKSED): Ditto.
14058         (TARGET_ZVKSH): Ditto.
14059         (TARGET_ZVKN): Ditto.
14060         (TARGET_ZVKNC): Ditto.
14061         (TARGET_ZVKNG): Ditto.
14062         (TARGET_ZVKS): Ditto.
14063         (TARGET_ZVKSC): Ditto.
14064         (TARGET_ZVKSG): Ditto.
14065         (TARGET_ZVKT): Ditto.
14066         (MASK_ZVL32B): Ditto.
14067         (MASK_ZVL64B): Ditto.
14068         (MASK_ZVL128B): Ditto.
14069         (MASK_ZVL256B): Ditto.
14070         (MASK_ZVL512B): Ditto.
14071         (MASK_ZVL1024B): Ditto.
14072         (MASK_ZVL2048B): Ditto.
14073         (MASK_ZVL4096B): Ditto.
14074         (MASK_ZVL8192B): Ditto.
14075         (MASK_ZVL16384B): Ditto.
14076         (MASK_ZVL32768B): Ditto.
14077         (MASK_ZVL65536B): Ditto.
14078         (TARGET_ZVL32B): Ditto.
14079         (TARGET_ZVL64B): Ditto.
14080         (TARGET_ZVL128B): Ditto.
14081         (TARGET_ZVL256B): Ditto.
14082         (TARGET_ZVL512B): Ditto.
14083         (TARGET_ZVL1024B): Ditto.
14084         (TARGET_ZVL2048B): Ditto.
14085         (TARGET_ZVL4096B): Ditto.
14086         (TARGET_ZVL8192B): Ditto.
14087         (TARGET_ZVL16384B): Ditto.
14088         (TARGET_ZVL32768B): Ditto.
14089         (TARGET_ZVL65536B): Ditto.
14090         (MASK_ZICBOZ): Ditto.
14091         (MASK_ZICBOM): Ditto.
14092         (MASK_ZICBOP): Ditto.
14093         (TARGET_ZICBOZ): Ditto.
14094         (TARGET_ZICBOM): Ditto.
14095         (TARGET_ZICBOP): Ditto.
14096         (MASK_ZICOND): Ditto.
14097         (TARGET_ZICOND): Ditto.
14098         (MASK_ZFA): Ditto.
14099         (TARGET_ZFA): Ditto.
14100         (MASK_ZFHMIN): Ditto.
14101         (MASK_ZFH): Ditto.
14102         (MASK_ZVFHMIN): Ditto.
14103         (MASK_ZVFH): Ditto.
14104         (TARGET_ZFHMIN): Ditto.
14105         (TARGET_ZFH): Ditto.
14106         (TARGET_ZVFHMIN): Ditto.
14107         (TARGET_ZVFH): Ditto.
14108         (MASK_ZMMUL): Ditto.
14109         (TARGET_ZMMUL): Ditto.
14110         (MASK_ZCA): Ditto.
14111         (MASK_ZCB): Ditto.
14112         (MASK_ZCE): Ditto.
14113         (MASK_ZCF): Ditto.
14114         (MASK_ZCD): Ditto.
14115         (MASK_ZCMP): Ditto.
14116         (MASK_ZCMT): Ditto.
14117         (TARGET_ZCA): Ditto.
14118         (TARGET_ZCB): Ditto.
14119         (TARGET_ZCE): Ditto.
14120         (TARGET_ZCF): Ditto.
14121         (TARGET_ZCD): Ditto.
14122         (TARGET_ZCMP): Ditto.
14123         (TARGET_ZCMT): Ditto.
14124         (MASK_SVINVAL): Ditto.
14125         (MASK_SVNAPOT): Ditto.
14126         (TARGET_SVINVAL): Ditto.
14127         (TARGET_SVNAPOT): Ditto.
14128         (MASK_XTHEADBA): Ditto.
14129         (MASK_XTHEADBB): Ditto.
14130         (MASK_XTHEADBS): Ditto.
14131         (MASK_XTHEADCMO): Ditto.
14132         (MASK_XTHEADCONDMOV): Ditto.
14133         (MASK_XTHEADFMEMIDX): Ditto.
14134         (MASK_XTHEADFMV): Ditto.
14135         (MASK_XTHEADINT): Ditto.
14136         (MASK_XTHEADMAC): Ditto.
14137         (MASK_XTHEADMEMIDX): Ditto.
14138         (MASK_XTHEADMEMPAIR): Ditto.
14139         (MASK_XTHEADSYNC): Ditto.
14140         (TARGET_XTHEADBA): Ditto.
14141         (TARGET_XTHEADBB): Ditto.
14142         (TARGET_XTHEADBS): Ditto.
14143         (TARGET_XTHEADCMO): Ditto.
14144         (TARGET_XTHEADCONDMOV): Ditto.
14145         (TARGET_XTHEADFMEMIDX): Ditto.
14146         (TARGET_XTHEADFMV): Ditto.
14147         (TARGET_XTHEADINT): Ditto.
14148         (TARGET_XTHEADMAC): Ditto.
14149         (TARGET_XTHEADMEMIDX): Ditto.
14150         (TARGET_XTHEADMEMPAIR): Ditto.
14151         (TARGET_XTHEADSYNC): Ditto.
14152         (MASK_XVENTANACONDOPS): Ditto.
14153         (TARGET_XVENTANACONDOPS): Ditto.
14154         * config/riscv/riscv.opt: Add new Mask defination.
14155         * doc/options.texi: Add explanation for this new usage.
14156         * opt-functions.awk: Add new function to find the index
14157         of target variable from extra_target_vars.
14158         * opt-read.awk: Add new function to store the Mask flags.
14159         * opth-gen.awk: Add new function to output the defination of
14160         Mask Macro and Target Macro.
14162 2023-10-01  Joern Rennecke  <joern.rennecke@embecosm.com>
14163             Juzhe-Zhong  <juzhe.zhong@rivai.ai>
14164             Juzhe-Zhong   <juzhe.zhong@rivai.ai>
14166         PR target/111566
14167         * config/riscv/riscv-protos.h (riscv_vector::legitimize_move):
14168         Change second parameter to rtx *.
14169         * config/riscv/riscv-v.cc (risv_vector::legitimize_move): Likewise.
14170         * config/riscv/vector.md: Changed callers of
14171         riscv_vector::legitimize_move.
14172         (*mov<mode>_mem_to_mem): Remove.
14174 2023-09-30  Jakub Jelinek  <jakub@redhat.com>
14176         PR target/111649
14177         * config/riscv/riscv-vsetvl.cc (vector_infos_manager::vector_infos_manager):
14178         Replace safe_grow with safe_grow_cleared.
14180 2023-09-30  Jakub Jelinek  <jakub@redhat.com>
14182         * gimple-match-head.cc (gimple_bitwise_inverted_equal_p): Fix a pasto
14183         in function comment.
14185 2023-09-30  Jakub Jelinek  <jakub@redhat.com>
14187         PR middle-end/111625
14188         PR middle-end/111637
14189         * gimple-lower-bitint.cc (range_to_prec): Use prec or -prec if
14190         r.undefined_p ().
14191         (bitint_large_huge::handle_operand_addr): For uninitialized operands
14192         use limb_prec or -limb_prec precision.
14194 2023-09-30  Jakub Jelinek  <jakub@redhat.com>
14196         * vec.h (quick_grow): Uncomment static_assert.
14198 2023-09-30  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
14200         * config/riscv/bitmanip.md (*<optab>_not_const<mode>): Added type attribute
14202 2023-09-29  Xiao Zeng  <zengxiao@eswincomputing.com>
14204         * config/riscv/riscv.cc (riscv_rtx_costs): Better handle costing
14205         SETs when the outer code is INSN.
14207 2023-09-29  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
14209         * config/riscv/bitmanip.md (*<optab>_not_const<mode>): New split
14210         pattern.
14212 2023-09-29  Richard Sandiford  <richard.sandiford@arm.com>
14214         * poly-int.h (poly_int_pod): Delete.
14215         (poly_coeff_traits::init_cast): New type.
14216         (poly_int_full, poly_int_hungry, poly_int_fullness): New structures.
14217         (poly_int): Replace constructors that take 1 and 2 coefficients with
14218         a general one that takes an arbitrary number of coefficients.
14219         Delegate initialization to two new private constructors, one of
14220         which uses the coefficients as-is and one of which adds an extra
14221         zero of the appropriate type (and precision, where applicable).
14222         (gt_ggc_mx, gt_pch_nx): Operate on poly_ints rather than poly_int_pods.
14223         * poly-int-types.h (poly_uint16_pod, poly_int64_pod, poly_uint64_pod)
14224         (poly_offset_int_pod, poly_wide_int_pod, poly_widest_int_pod): Delete.
14225         * gengtype.cc (main): Don't register poly_int64_pod.
14226         * calls.cc (initialize_argument_information): Use poly_int rather
14227         than poly_int_pod.
14228         (combine_pending_stack_adjustment_and_call): Likewise.
14229         * config/aarch64/aarch64.cc (pure_scalable_type_info): Likewise.
14230         * data-streamer.h (bp_unpack_poly_value): Likewise.
14231         * dwarf2cfi.cc (struct dw_trace_info): Likewise.
14232         (struct queued_reg_save): Likewise.
14233         * dwarf2out.h (struct dw_cfa_location): Likewise.
14234         * emit-rtl.h (struct incoming_args): Likewise.
14235         (struct rtl_data): Likewise.
14236         * expr.cc (get_bit_range): Likewise.
14237         (get_inner_reference): Likewise.
14238         * expr.h (get_bit_range): Likewise.
14239         * fold-const.cc (split_address_to_core_and_offset): Likewise.
14240         (ptr_difference_const): Likewise.
14241         * fold-const.h (ptr_difference_const): Likewise.
14242         * function.cc (try_fit_stack_local): Likewise.
14243         (instantiate_new_reg): Likewise.
14244         * function.h (struct expr_status): Likewise.
14245         (struct args_size): Likewise.
14246         * genmodes.cc (ZERO_COEFFS): Likewise.
14247         (mode_size_inline): Likewise.
14248         (mode_nunits_inline): Likewise.
14249         (emit_mode_precision): Likewise.
14250         (emit_mode_size): Likewise.
14251         (emit_mode_nunits): Likewise.
14252         * gimple-fold.cc (get_base_constructor): Likewise.
14253         * gimple-ssa-store-merging.cc (struct symbolic_number): Likewise.
14254         * inchash.h (class hash): Likewise.
14255         * ipa-modref-tree.cc (modref_access_node::dump): Likewise.
14256         * ipa-modref.cc (modref_access_analysis::merge_call_side_effects):
14257         Likewise.
14258         * ira-int.h (ira_spilled_reg_stack_slot): Likewise.
14259         * lra-eliminations.cc (self_elim_offsets): Likewise.
14260         * machmode.h (mode_size, mode_precision, mode_nunits): Likewise.
14261         * omp-low.cc (omplow_simd_context): Likewise.
14262         * pretty-print.cc (pp_wide_integer): Likewise.
14263         * pretty-print.h (pp_wide_integer): Likewise.
14264         * reload.cc (struct decomposition): Likewise.
14265         * reload.h (struct reload): Likewise.
14266         * reload1.cc (spill_stack_slot_width): Likewise.
14267         (struct elim_table): Likewise.
14268         (offsets_at): Likewise.
14269         (init_eliminable_invariants): Likewise.
14270         * rtl.h (union rtunion): Likewise.
14271         (poly_int_rtx_p): Likewise.
14272         (strip_offset): Likewise.
14273         (strip_offset_and_add): Likewise.
14274         * rtlanal.cc (strip_offset): Likewise.
14275         * tree-dfa.cc (get_ref_base_and_extent): Likewise.
14276         (get_addr_base_and_unit_offset_1): Likewise.
14277         (get_addr_base_and_unit_offset): Likewise.
14278         * tree-dfa.h (get_ref_base_and_extent): Likewise.
14279         (get_addr_base_and_unit_offset_1): Likewise.
14280         (get_addr_base_and_unit_offset): Likewise.
14281         * tree-ssa-loop-ivopts.cc (struct iv_use): Likewise.
14282         (strip_offset): Likewise.
14283         * tree-ssa-sccvn.h (struct vn_reference_op_struct): Likewise.
14284         * tree.cc (ptrdiff_tree_p): Likewise.
14285         * tree.h (poly_int_tree_p): Likewise.
14286         (ptrdiff_tree_p): Likewise.
14287         (get_inner_reference): Likewise.
14289 2023-09-29  John David Anglin  <danglin@gcc.gnu.org>
14291         * config/pa/pa.md (memory_barrier): Revise comment.
14292         (memory_barrier_64, memory_barrier_32): Use ldcw,co on PA 2.0.
14293         * config/pa/pa.opt (coherent-ldcw): Change default to disabled.
14295 2023-09-29  Jakub Jelinek  <jakub@redhat.com>
14297         * vec.h (quick_insert, ordered_remove, unordered_remove,
14298         block_remove, qsort, sort, stablesort, quick_grow): Guard
14299         std::is_trivially_{copyable,default_constructible} and
14300         vec_detail::is_trivially_copyable_or_pair static assertions
14301         with GCC_VERSION >= 5000.
14302         (vec_detail::is_trivially_copyable_or_pair): Guard definition
14303         with GCC_VERSION >= 5000.
14305 2023-09-29  Manos Anagnostakis  <manos.anagnostakis@vrull.eu>
14307         * config/aarch64/aarch64-opts.h (enum aarch64_ldp_policy): Removed.
14308         (enum aarch64_ldp_stp_policy): Merged enums aarch64_ldp_policy
14309         and aarch64_stp_policy to aarch64_ldp_stp_policy.
14310         (enum aarch64_stp_policy): Removed.
14311         * config/aarch64/aarch64-protos.h (struct tune_params): Removed
14312         aarch64_ldp_policy_model and aarch64_stp_policy_model enum types
14313         and left only the definitions to the aarch64-opts one.
14314         * config/aarch64/aarch64.cc (aarch64_parse_ldp_policy): Removed.
14315         (aarch64_parse_stp_policy): Removed.
14316         (aarch64_override_options_internal): Removed calls to parsing
14317         functions and added obvious direct assignments.
14318         (aarch64_mem_ok_with_ldpstp_policy_model): Improved
14319         code quality based on the new changes.
14320         * config/aarch64/aarch64.opt: Use single enum type
14321         aarch64_ldp_stp_policy for both ldp and stp options.
14323 2023-09-29  Richard Biener  <rguenther@suse.de>
14325         PR tree-optimization/111583
14326         * tree-loop-distribution.cc (find_single_drs): Ensure the
14327         load/store are always executed.
14329 2023-09-29  Jakub Jelinek  <jakub@redhat.com>
14331         * tree-vect-patterns.cc (vect_recog_over_widening_pattern): Use
14332         quick_grow_cleared method on unprom rather than quick_grow.
14334 2023-09-29  Sergei Trofimovich  <siarheit@google.com>
14336         PR middle-end/111505
14337         * ggc-common.cc (ggc_zero_out_root_pointers, ggc_common_finalize):
14338         Add new helper. Use helper instead of memset() to wipe out pointers.
14340 2023-09-29  Richard Sandiford  <richard.sandiford@arm.com>
14342         * builtins.h (c_readstr): Take a fixed_size_mode rather than a
14343         scalar_int_mode.
14344         * builtins.cc (c_readstr): Likewise.  Build a local array of
14345         bytes and use native_decode_rtx to get the rtx image.
14346         (builtin_memcpy_read_str): Simplify accordingly.
14347         (builtin_strncpy_read_str): Likewise.
14348         (builtin_memset_read_str): Likewise.
14349         (builtin_memset_gen_str): Likewise.
14350         * expr.cc (string_cst_read_str): Likewise.
14352 2023-09-29  Jakub Jelinek  <jakub@redhat.com>
14354         * tree-ssa-loop-im.cc (tree_ssa_lim_initialize): Use quick_grow_cleared
14355         instead of quick_grow on vec<bitmap_head> members.
14356         * cfganal.cc (control_dependences::control_dependences): Likewise.
14357         * rtl-ssa/blocks.cc (function_info::build_info::build_info): Likewise.
14358         (function_info::place_phis): Use safe_grow_cleared instead of safe_grow
14359         on auto_vec<bitmap_head> vars.
14360         * tree-ssa-live.cc (compute_live_vars): Use quick_grow_cleared instead
14361         of quick_grow on vec<bitmap_head> var.
14363 2023-09-28  Vladimir N. Makarov  <vmakarov@redhat.com>
14365         Revert:
14366         2023-09-14  Vladimir N. Makarov  <vmakarov@redhat.com>
14368         * ira-costs.cc (find_costs_and_classes): Decrease memory cost
14369         by equiv savings.
14371 2023-09-28  Wilco Dijkstra  <wilco.dijkstra@arm.com>
14373         PR target/111121
14374         * config/aarch64/aarch64.md (aarch64_movmemdi): Add new expander.
14375         (movmemdi): Call aarch64_expand_cpymem_mops for correct expansion.
14376         * config/aarch64/aarch64.cc (aarch64_expand_cpymem_mops): Add support
14377         for memmove.
14378         * config/aarch64/aarch64-protos.h (aarch64_expand_cpymem_mops): Add new
14379         function.
14381 2023-09-28  Pan Li  <pan2.li@intel.com>
14383         PR target/111506
14384         * config/riscv/autovec.md (<float_cvt><mode><vnnconvert>2):
14385         New pattern.
14386         * config/riscv/vector-iterators.md: New iterator.
14388 2023-09-28  Vladimir N. Makarov  <vmakarov@redhat.com>
14390         * rtl.h (lra_in_progress): Change type to bool.
14391         (ira_in_progress): Add new extern.
14392         * ira.cc (ira_in_progress): New global.
14393         (pass_ira::execute): Set up ira_in_progress.
14394         * lra.cc: (lra_in_progress): Change type to bool and initialize.
14395         (lra): Use bool values for lra_in_progress.
14396         * lra-eliminations.cc (init_elim_table): Ditto.
14398 2023-09-28  Richard Biener  <rguenther@suse.de>
14400         PR target/111600
14401         * gimple-ssa-warn-access.cc (pass_waccess::check_dangling_stores):
14402         Use a heap allocated worklist for CFG traversal instead of
14403         recursion.
14405 2023-09-28  Jakub Jelinek  <jakub@redhat.com>
14406             Jonathan Wakely  <jwakely@redhat.com>
14408         * vec.h: Mention in file comment limited support for non-POD types
14409         in some operations.
14410         (vec_destruct): New function template.
14411         (release): Use it for non-trivially destructible T.
14412         (truncate): Likewise.
14413         (quick_push): Perform a placement new into slot
14414         instead of assignment.
14415         (pop): For non-trivially destructible T return void
14416         rather than T & and destruct the popped element.
14417         (quick_insert, ordered_remove): Note that they aren't suitable
14418         for non-trivially copyable types.  Add static_asserts for that.
14419         (block_remove): Assert T is trivially copyable.
14420         (vec_detail::is_trivially_copyable_or_pair): New trait.
14421         (qsort, sort, stablesort): Assert T is trivially copyable or
14422         std::pair with both trivally copyable types.
14423         (quick_grow): Add assert T is trivially default constructible,
14424         for now commented out.
14425         (quick_grow_cleared): Don't call quick_grow, instead inline it
14426         by hand except for the new static_assert.
14427         (gt_ggc_mx): Assert T is trivially destructable.
14428         (auto_vec::operator=): Formatting fixes.
14429         (auto_vec::auto_vec): Likewise.
14430         (vec_safe_grow_cleared): Don't call vec_safe_grow, instead inline
14431         it manually and call quick_grow_cleared method rather than quick_grow.
14432         (safe_grow_cleared): Likewise.
14433         * edit-context.cc (class line_event): Move definition earlier.
14434         * tree-ssa-loop-im.cc (seq_entry::seq_entry): Make default ctor
14435         defaulted.
14436         * ipa-fnsummary.cc (evaluate_properties_for_edge): Use
14437         safe_grow_cleared instead of safe_grow followed by placement new
14438         constructing the elements.
14440 2023-09-28  Richard Sandiford  <richard.sandiford@arm.com>
14442         * dwarf2out.cc (mem_loc_descriptor): Remove unused variables.
14443         * tree-affine.cc (expr_to_aff_combination): Likewise.
14445 2023-09-28  Richard Biener  <rguenther@suse.de>
14447         PR tree-optimization/111614
14448         * tree-ssa-reassoc.cc (undistribute_bitref_for_vector): Properly
14449         convert the first vector when required.
14451 2023-09-28  xuli  <xuli1@eswincomputing.com>
14453         PR target/111533
14454         * config/riscv/riscv-v.cc (expand_const_vector): Fix bug.
14455         * config/riscv/riscv-vsetvl.cc (anticipatable_occurrence_p): Fix bug.
14457 2023-09-27  Sandra Loosemore  <sandra@codesourcery.com>
14459         * gimple.cc (gimple_copy): Add case GIMPLE_OMP_STRUCTURED_BLOCK.
14461 2023-09-27  Iain Sandoe  <iain@sandoe.co.uk>
14463         PR target/111610
14464         * configure: Regenerate.
14465         * configure.ac: Rename the missing dsymutil case to "DET_UNKNOWN".
14467 2023-09-27  Manos Anagnostakis  <manos.anagnostakis@vrull.eu>
14468             Philipp Tomsich  <philipp.tomsich@vrull.eu>
14469             Manolis Tsamis  <manolis.tsamis@vrull.eu>
14471         * config/aarch64/aarch64-opts.h (enum aarch64_ldp_policy): New
14472         enum type.
14473         (enum aarch64_stp_policy): New enum type.
14474         * config/aarch64/aarch64-protos.h (struct tune_params): Add
14475         appropriate enums for the policies.
14476         (aarch64_mem_ok_with_ldpstp_policy_model): New declaration.
14477         * config/aarch64/aarch64-tuning-flags.def
14478         (AARCH64_EXTRA_TUNING_OPTION): Remove superseded tuning
14479         options.
14480         * config/aarch64/aarch64.cc (aarch64_parse_ldp_policy): New
14481         function to parse ldp-policy parameter.
14482         (aarch64_parse_stp_policy): New function to parse stp-policy parameter.
14483         (aarch64_override_options_internal): Call parsing functions.
14484         (aarch64_mem_ok_with_ldpstp_policy_model): New function.
14485         (aarch64_operands_ok_for_ldpstp): Add call to
14486         aarch64_mem_ok_with_ldpstp_policy_model for parameter-value
14487         check and alignment check and remove superseded ones.
14488         (aarch64_operands_adjust_ok_for_ldpstp): Add call to
14489         aarch64_mem_ok_with_ldpstp_policy_model for parameter-value
14490         check and alignment check and remove superseded ones.
14491         * config/aarch64/aarch64.opt (aarch64-ldp-policy): New param.
14492         (aarch64-stp-policy): New param.
14493         * doc/invoke.texi: Document the parameters accordingly.
14495 2023-09-27  Andre Vieira  <andre.simoesdiasvieira@arm.com>
14497         * tree-data-ref.cc (include calls.h): Add new include.
14498         (get_references_in_stmt): Correctly handle IFN_MASK_CALL.
14500 2023-09-27  Richard Biener  <rguenther@suse.de>
14502         * match.pd (abs (copysign (x, y)) -> abs (x)): New pattern.
14504 2023-09-27  Jakub Jelinek  <jakub@redhat.com>
14506         PR c++/105606
14507         * system.h (BROKEN_VALUE_INITIALIZATION): Don't define.
14508         * vec.h (vec_default_construct): Remove BROKEN_VALUE_INITIALIZATION
14509         workaround.
14510         * function.cc (assign_parm_find_data_types): Likewise.
14512 2023-09-27  Pan Li  <pan2.li@intel.com>
14514         * config/riscv/autovec.md (roundeven<mode>2): New pattern.
14515         * config/riscv/riscv-protos.h (enum insn_flags): New enum type.
14516         (enum insn_type): Ditto.
14517         (expand_vec_roundeven): New func decl.
14518         * config/riscv/riscv-v.cc (expand_vec_roundeven): New func impl.
14520 2023-09-27  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
14522         PR target/111590
14523         * dse.cc (find_shift_sequence): Check the mode with access_size exist on the target.
14525 2023-09-27  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
14527         * tree-if-conv.cc (is_cond_scalar_reduction): Fix comments.
14529 2023-09-27  Pan Li  <pan2.li@intel.com>
14531         * config/riscv/autovec.md (btrunc<mode>2): New pattern.
14532         * config/riscv/riscv-protos.h (expand_vec_trunc): New func decl.
14533         * config/riscv/riscv-v.cc (emit_vec_cvt_x_f_rtz): New func impl.
14534         (expand_vec_trunc): Ditto.
14536 2023-09-26  Hans-Peter Nilsson  <hp@axis.com>
14538         PR target/107567
14539         PR target/109166
14540         * builtins.cc (expand_builtin) <case BUILT_IN_ATOMIC_TEST_AND_SET>:
14541         Handle failure from expand_builtin_atomic_test_and_set.
14542         * optabs.cc (expand_atomic_test_and_set): When all attempts fail to
14543         generate atomic code through target support, return NULL
14544         instead of emitting non-atomic code.  Also, for code handling
14545         targetm.atomic_test_and_set_trueval != 1, gcc_assert result
14546         from calling emit_store_flag_force instead of returning NULL.
14548 2023-09-26  Andrew MacLeod  <amacleod@redhat.com>
14550         PR tree-optimization/111599
14551         * value-relation.cc (relation_oracle::valid_equivs): Ensure
14552         ssa_name is valid.
14554 2023-09-26  Andrew Pinski  <apinski@marvell.com>
14556         PR tree-optimization/106164
14557         PR tree-optimization/111456
14558         * match.pd (`(A ==/!= B) & (A CMP C)`):
14559         Support an optional cast on the second A.
14560         (`(A ==/!= B) | (A CMP C)`): Likewise.
14562 2023-09-26  Andrew Pinski  <apinski@marvell.com>
14564         PR tree-optimization/111469
14565         * tree-ssa-phiopt.cc (minmax_replacement): Fix
14566         the assumption for the `non-diamond` handling cases
14567         of diamond code.
14569 2023-09-26  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
14571         * match.pd: Optimize COND_ADD reduction pattern.
14573 2023-09-26  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
14575         PR tree-optimization/111594
14576         PR tree-optimization/110660
14577         * match.pd: Optimize COND_LEN_ADD reduction.
14579 2023-09-26  Pan Li  <pan2.li@intel.com>
14581         * config/riscv/autovec.md (round<mode>2): New pattern.
14582         * config/riscv/riscv-protos.h (enum insn_flags): New enum type.
14583         (enum insn_type): Ditto.
14584         (expand_vec_round): New function decl.
14585         * config/riscv/riscv-v.cc (expand_vec_round): New function impl.
14587 2023-09-26  Iain Sandoe  <iain@sandoe.co.uk>
14589         * config/darwin.h (DARWIN_CC1_SPEC): Remove -dynamiclib.
14591 2023-09-26  Tobias Burnus  <tobias@codesourcery.com>
14593         PR middle-end/111547
14594         * doc/invoke.texi (-fopenmp): Mention C++11 [[omp::decl(...)]] syntax.
14595         (-fopenmp-simd): Likewise. Clarify 'loop' directive semantic.
14597 2023-09-26  Pan Li  <pan2.li@intel.com>
14599         * config/riscv/autovec.md (rint<mode>2): New pattern.
14600         * config/riscv/riscv-protos.h (expand_vec_rint): New function decl.
14601         * config/riscv/riscv-v.cc (expand_vec_rint): New function impl.
14603 2023-09-26  Pan Li  <pan2.li@intel.com>
14605         * config/riscv/autovec.md (nearbyint<mode>2): New pattern.
14606         * config/riscv/riscv-protos.h (enum insn_type): New enum.
14607         (expand_vec_nearbyint): New function decl.
14608         * config/riscv/riscv-v.cc (expand_vec_nearbyint): New func impl.
14610 2023-09-26  Pan Li  <pan2.li@intel.com>
14612         * config/riscv/riscv-v.cc (gen_ceil_const_fp): Remove.
14613         (get_fp_rounding_coefficient): Rename.
14614         (gen_floor_const_fp): Remove.
14615         (expand_vec_ceil): Take renamed func.
14616         (expand_vec_floor): Ditto.
14618 2023-09-25  Vladimir N. Makarov  <vmakarov@redhat.com>
14620         PR middle-end/111497
14621         * lra-constraints.cc (lra_constraints): Copy substituted
14622         equivalence.
14623         * lra.cc (lra): Change comment for calling unshare_all_rtl_again.
14625 2023-09-25  Eric Botcazou  <ebotcazou@adacore.com>
14627         * gimple-range-gori.cc (gori_compute::logical_combine): Add missing
14628         return statement in the varying case.
14630 2023-09-25  Xi Ruoyao  <xry111@xry111.site>
14632         * doc/invoke.texi: Update -m[no-]explicit-relocs for r14-4160.
14634 2023-09-25  Andrew Pinski  <apinski@marvell.com>
14636         PR tree-optimization/110386
14637         * gimple-ssa-backprop.cc (strip_sign_op_1): Remove ABSU_EXPR.
14639 2023-09-25  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
14641         PR target/111548
14642         * config/riscv/riscv-vsetvl.cc (earliest_pred_can_be_fused_p): Bugfix
14644 2023-09-25  Kewen Lin  <linkw@linux.ibm.com>
14646         PR target/111366
14647         * config/rs6000/rs6000.cc (rs6000_update_ipa_fn_target_info): Skip
14648         empty inline asm.
14650 2023-09-25  Kewen Lin  <linkw@linux.ibm.com>
14652         PR target/111380
14653         * config/rs6000/rs6000.cc (rs6000_can_inline_p): Adopt
14654         target_option_default_node when the callee has no option
14655         attributes, also simplify the existing code accordingly.
14657 2023-09-25  Guo Jie  <guojie@loongson.cn>
14659         * config/loongarch/lasx.md (lasx_vecinit_merge_<LASX:mode>): New
14660         pattern for vector construction.
14661         (vec_set<mode>_internal): Ditto.
14662         (lasx_xvinsgr2vr_<mode256_i_half>_internal): Ditto.
14663         (lasx_xvilvl_<lasxfmt_f>_internal): Ditto.
14664         * config/loongarch/loongarch.cc (loongarch_expand_vector_init):
14665         Optimized the implementation of vector construction.
14666         (loongarch_expand_vector_init_same): New function.
14667         * config/loongarch/lsx.md (lsx_vilvl_<lsxfmt_f>_internal): New
14668         pattern for vector construction.
14669         (lsx_vreplvei_mirror_<lsxfmt_f>): New pattern for vector
14670         construction.
14671         (vec_concatv2df): Ditto.
14672         (vec_concatv4sf): Ditto.
14674 2023-09-24  Pan Li  <pan2.li@intel.com>
14676         PR target/111546
14677         * config/riscv/riscv-v.cc
14678         (expand_vector_init_merge_repeating_sequence): Bugfix
14680 2023-09-24  Andrew Pinski  <apinski@marvell.com>
14682         PR tree-optimization/111543
14683         * match.pd (`(X & ~Y) & Y`, `(X | ~Y) | Y`): New patterns.
14685 2023-09-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
14687         * config/riscv/autovec-opt.md: Extend VLS modes
14688         * config/riscv/vector-iterators.md: Ditto.
14690 2023-09-23  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
14692         * config/riscv/autovec-opt.md: Add VLS modes for conditional ABS/SQRT.
14694 2023-09-23  Pan Li  <pan2.li@intel.com>
14696         * config/riscv/autovec.md (floor<mode>2): New pattern.
14697         * config/riscv/riscv-protos.h (enum insn_flags): New enum type.
14698         (enum insn_type): Ditto.
14699         (expand_vec_floor): New function decl.
14700         * config/riscv/riscv-v.cc (gen_floor_const_fp): New function impl.
14701         (expand_vec_floor): Ditto.
14703 2023-09-22  Pan Li  <pan2.li@intel.com>
14705         * config/riscv/riscv-v.cc (expand_vec_float_cmp_mask): Refactor.
14706         (emit_vec_float_cmp_mask): Rename.
14707         (expand_vec_copysign): Ditto.
14708         (emit_vec_copysign): Ditto.
14709         (emit_vec_abs): New function impl.
14710         (emit_vec_cvt_x_f): Ditto.
14711         (emit_vec_cvt_f_x): Ditto.
14712         (expand_vec_ceil): Ditto.
14714 2023-09-22  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
14716         * config/riscv/vector-iterators.md: Extend VLS modes.
14718 2023-09-22  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
14720         * config/riscv/riscv-v.cc (gen_const_vector_dup): Use global expand function.
14721         * config/riscv/vector.md (@vec_duplicate<mode>): Remove @.
14722         (vec_duplicate<mode>): Ditto.
14724 2023-09-22  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
14726         * config/riscv/autovec.md: Add VLS conditional patterns.
14727         * config/riscv/riscv-protos.h (expand_cond_unop): Ditto.
14728         (expand_cond_binop): Ditto.
14729         (expand_cond_ternop): Ditto.
14730         * config/riscv/riscv-v.cc (expand_cond_unop): Ditto.
14731         (expand_cond_binop): Ditto.
14732         (expand_cond_ternop): Ditto.
14734 2023-09-22  xuli  <xuli1@eswincomputing.com>
14736         PR target/111451
14737         * config/riscv/riscv-v.cc (emit_vlmax_gather_insn): Optimization of vrgather.vv
14738                                                         into vrgatherei16.vv.
14740 2023-09-22  Lehua Ding  <lehua.ding@rivai.ai>
14742         * config/riscv/autovec-opt.md (*cond_widen_reduc_plus_scal_<mode>):
14743         New combine patterns.
14744         * config/riscv/riscv-protos.h (enum insn_type): New insn_type.
14746 2023-09-22  Lehua Ding  <lehua.ding@rivai.ai>
14748         * config/riscv/riscv-protos.h (enum avl_type): New VLS avl_type.
14749         * config/riscv/riscv-v.cc (autovec_use_vlmax_p): Move comments.
14751 2023-09-22  Pan Li  <pan2.li@intel.com>
14753         * config/riscv/autovec.md (ceil<mode>2): New pattern.
14754         * config/riscv/riscv-protos.h (enum insn_flags): New enum type.
14755         (enum insn_type): Ditto.
14756         (expand_vec_ceil): New function decl.
14757         * config/riscv/riscv-v.cc (gen_ceil_const_fp): New function impl.
14758         (expand_vec_float_cmp_mask): Ditto.
14759         (expand_vec_copysign): Ditto.
14760         (expand_vec_ceil): Ditto.
14761         * config/riscv/vector.md: Add VLS mode support.
14763 2023-09-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
14765         * config/riscv/autovec.md: Extend VLS modes.
14767 2023-09-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
14769         * config/riscv/vector-iterators.md: Extend VLS modes.
14771 2023-09-21  Lehua Ding  <lehua.ding@rivai.ai>
14772             Robin Dapp  <rdapp.gcc@gmail.com>
14774         * config/riscv/riscv-v.cc (emit_vlmax_insn): Adjust comments.
14775         (emit_nonvlmax_insn): Adjust comments.
14776         (emit_vlmax_insn_lra): Adjust comments.
14778 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
14780         * config.gcc (*linux*): Set rust target_objs, and
14781         target_has_targetrustm,
14782         * config/t-linux (linux-rust.o): New rule.
14783         * config/linux-rust.cc: New file.
14785 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
14787         * config.gcc (i[34567]86-*-mingw* | x86_64-*-mingw*): Set
14788         rust_target_objs and target_has_targetrustm.
14789         * config/t-winnt (winnt-rust.o): New rule.
14790         * config/winnt-rust.cc: New file.
14792 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
14794         * config.gcc (*-*-fuchsia): Set tmake_rule, rust_target_objs,
14795         and target_has_targetrustm.
14796         * config/fuchsia-rust.cc: New file.
14797         * config/t-fuchsia: New file.
14799 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
14801         * config.gcc (*-*-vxworks*): Set rust_target_objs and
14802         target_has_targetrustm.
14803         * config/t-vxworks (vxworks-rust.o): New rule.
14804         * config/vxworks-rust.cc: New file.
14806 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
14808         * config.gcc (*-*-dragonfly*): Set rust_target_objs and
14809         target_has_targetrustm.
14810         * config/t-dragonfly (dragonfly-rust.o): New rule.
14811         * config/dragonfly-rust.cc: New file.
14813 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
14815         * config.gcc (*-*-solaris2*): Set rust_target_objs and
14816         target_has_targetrustm.
14817         * config/t-sol2 (sol2-rust.o): New rule.
14818         * config/sol2-rust.cc: New file.
14820 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
14822         * config.gcc (*-*-openbsd*): Set rust_target_objs and
14823         target_has_targetrustm.
14824         * config/t-openbsd (openbsd-rust.o): New rule.
14825         * config/openbsd-rust.cc: New file.
14827 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
14829         * config.gcc (*-*-netbsd*): Set rust_target_objs and
14830         target_has_targetrustm.
14831         * config/t-netbsd (netbsd-rust.o): New rule.
14832         * config/netbsd-rust.cc: New file.
14834 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
14836         * config.gcc (*-*-freebsd*): Set rust_target_objs and
14837         target_has_targetrustm.
14838         * config/t-freebsd (freebsd-rust.o): New rule.
14839         * config/freebsd-rust.cc: New file.
14841 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
14843         * config.gcc (*-*-darwin*): Set rust_target_objs and
14844         target_has_targetrustm.
14845         * config/t-darwin (darwin-rust.o): New rule.
14846         * config/darwin-rust.cc: New file.
14848 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
14850         * config/i386/t-i386 (i386-rust.o): New rule.
14851         * config/i386/i386-rust.cc: New file.
14852         * config/i386/i386-rust.h: New file.
14854 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
14856         * doc/tm.texi: Regenerate.
14857         * doc/tm.texi.in: Document TARGET_RUST_OS_INFO.
14859 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
14861         * doc/tm.texi: Regenerate.
14862         * doc/tm.texi.in: Add @node for Rust language and ABI, and document
14863         TARGET_RUST_CPU_INFO.
14865 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
14867         * Makefile.in (tm_rust_file_list, tm_rust_include_list, TM_RUST_H,
14868         RUST_TARGET_DEF, RUST_TARGET_H, RUST_TARGET_OBJS): New variables.
14869         (tm_rust.h, cs-tm_rust.h, default-rust.o,
14870         rust/rust-target-hooks-def.h, s-rust-target-hooks-def-h): New rules.
14871         (s-tm-texi): Also check timestamp on rust-target.def.
14872         (generated_files): Add TM_RUST_H and rust-target-hooks-def.h.
14873         (build/genhooks.o): Also depend on RUST_TARGET_DEF.
14874         * config.gcc (tm_rust_file, rust_target_objs, target_has_targetrustm):
14875         New variables.
14876         * configure: Regenerate.
14877         * configure.ac (tm_rust_file_list, tm_rust_include_list,
14878         rust_target_objs): Add substitutes.
14879         * doc/tm.texi: Regenerate.
14880         * doc/tm.texi.in (targetrustm): Document.
14881         (target_has_targetrustm): Document.
14882         * genhooks.cc: Include rust/rust-target.def.
14883         * config/default-rust.cc: New file.
14885 2023-09-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
14887         PR target/110751
14888         * config/riscv/autovec.md: Enable scratch rtx in ELSE operand.
14889         * config/riscv/predicates.md (autovec_else_operand): New predicate.
14890         * config/riscv/riscv-v.cc (get_else_operand): New function.
14891         (expand_cond_len_unop): Adapt ELSE value.
14892         (expand_cond_len_binop): Ditto.
14893         (expand_cond_len_ternop): Ditto.
14894         * config/riscv/riscv.cc (riscv_preferred_else_value): New function.
14895         (TARGET_PREFERRED_ELSE_VALUE): New targethook.
14897 2023-09-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
14899         PR target/111486
14900         * config/riscv/riscv.cc (riscv_legitimize_move): Fix bug.
14902 2023-09-21  Jiufu Guo  <guojiufu@linux.ibm.com>
14904         PR tree-optimization/111355
14905         * match.pd ((X + C) / N): Update pattern.
14907 2023-09-21  Jiufu Guo  <guojiufu@linux.ibm.com>
14909         * match.pd ((t * 2) / 2): Update to use overflow_free_p.
14911 2023-09-21  xuli  <xuli1@eswincomputing.com>
14913         PR target/111450
14914         * config/riscv/constraints.md (c01): const_int 1.
14915         (c02): const_int 2.
14916         (c04): const_int 4.
14917         (c08): const_int 8.
14918         * config/riscv/predicates.md (vector_eew8_stride_operand): New predicate for stride operand.
14919         (vector_eew16_stride_operand): Ditto.
14920         (vector_eew32_stride_operand): Ditto.
14921         (vector_eew64_stride_operand): Ditto.
14922         * config/riscv/vector-iterators.md: New iterator for stride operand.
14923         * config/riscv/vector.md: Add stride = element width constraint.
14925 2023-09-21  Lehua Ding  <lehua.ding@rivai.ai>
14927         * config/riscv/predicates.md (const_1_or_2_operand): Rename.
14928         (const_1_or_4_operand): Ditto.
14929         (vector_gs_scale_operand_16): Ditto.
14930         (vector_gs_scale_operand_32): Ditto.
14931         * config/riscv/vector-iterators.md: Adjust.
14933 2023-09-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
14935         * config/riscv/autovec.md: Extend VLS modes.
14936         * config/riscv/vector-iterators.md: Ditto.
14937         * config/riscv/vector.md: Ditto.
14939 2023-09-20  Andrew MacLeod  <amacleod@redhat.com>
14941         * gimple-range-cache.cc (ssa_cache::merge_range): Change meaning
14942         of the return value.
14943         (ssa_cache::dump): Don't print GLOBAL RANGE header.
14944         (ssa_lazy_cache::merge_range): Adjust return value meaning.
14945         (ranger_cache::dump): Print GLOBAL RANGE header.
14947 2023-09-20  Aldy Hernandez  <aldyh@redhat.com>
14949         * range-op-float.cc (foperator_unordered_ge::fold_range): Remove
14950         special casing.
14951         (foperator_unordered_gt::fold_range): Same.
14952         (foperator_unordered_lt::fold_range): Same.
14953         (foperator_unordered_le::fold_range): Same.
14955 2023-09-20  Jakub Jelinek  <jakub@redhat.com>
14957         * builtins.h (type_to_class): Declare.
14958         * builtins.cc (type_to_class): No longer static.  Return
14959         int rather than enum.
14960         * doc/extend.texi (__builtin_classify_type): Document.
14962 2023-09-20  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
14964         PR target/110751
14965         * internal-fn.cc (expand_fn_using_insn): Support undefined rtx value.
14966         * optabs.cc (maybe_legitimize_operand): Ditto.
14967         (can_reuse_operands_p): Ditto.
14968         * optabs.h (enum expand_operand_type): Ditto.
14969         (create_undefined_input_operand): Ditto.
14971 2023-09-20  Tobias Burnus  <tobias@codesourcery.com>
14973         * gimplify.cc (gimplify_bind_expr): Call GOMP_alloc/free for
14974         'omp allocate' variables; move stack cleanup after other
14975         cleanup.
14976         (omp_notice_variable): Process original decl when decl
14977         of the value-expression for a 'omp allocate' variable is passed.
14978         * omp-low.cc (scan_omp_1_op): Handle 'omp allocate' variables
14980 2023-09-20  Yanzhang Wang  <yanzhang.wang@intel.com>
14982         * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
14983         support simplifying vector int not only scalar int.
14985 2023-09-20  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
14987         * config/riscv/vector-iterators.md: Extend VLS floating-point.
14989 2023-09-20  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
14991         * config/riscv/riscv-vsetvl.cc (vector_insn_info::operator==): Fix bug.
14993 2023-09-20  Iain Sandoe  <iain@sandoe.co.uk>
14995         * config/darwin.h:
14996         (SUBTARGET_DRIVER_SELF_SPECS): Move handling of 'shared' into the same
14997         specs as 'dynamiclib'. (STARTFILE_SPEC): Handle 'shared'.
14999 2023-09-20  Richard Biener  <rguenther@suse.de>
15001         PR tree-optimization/111489
15002         * params.opt (-param uninit-max-chain-len=): Raise default to 8.
15004 2023-09-20  Richard Biener  <rguenther@suse.de>
15006         PR tree-optimization/111489
15007         * doc/invoke.texi (--param uninit-max-chain-len): Document.
15008         (--param uninit-max-num-chains): Likewise.
15009         * params.opt (-param=uninit-max-chain-len=): New.
15010         (-param=uninit-max-num-chains=): Likewise.
15011         * gimple-predicate-analysis.cc (MAX_NUM_CHAINS): Define to
15012         param_uninit_max_num_chains.
15013         (MAX_CHAIN_LEN): Define to param_uninit_max_chain_len.
15014         (uninit_analysis::init_use_preds): Avoid VLA.
15015         (uninit_analysis::init_from_phi_def): Likewise.
15016         (compute_control_dep_chain): Avoid using MAX_CHAIN_LEN in
15017         template parameter.
15019 2023-09-20  Jakub Jelinek  <jakub@redhat.com>
15021         * match.pd ((x << c) >> c): Use MAX_FIXED_MODE_SIZE instead of
15022         GET_MODE_PRECISION of TImode or DImode depending on whether
15023         TImode is supported scalar mode.
15024         * gimple-lower-bitint.cc (bitint_precision_kind): Likewise.
15025         * expr.cc (expand_expr_real_1): Likewise.
15026         * tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_stmt): Likewise.
15027         * ubsan.cc (ubsan_encode_value, ubsan_type_descriptor): Likewise.
15029 2023-09-20  Lehua Ding  <lehua.ding@rivai.ai>
15031         * config/riscv/autovec-opt.md (*<optab>not<mode>): Move and rename.
15032         (*n<optab><mode>): Ditto.
15033         (*v<any_shiftrt:optab><any_extend:optab>trunc<mode>): Ditto.
15034         (*<any_shiftrt:optab>trunc<mode>): Ditto.
15035         (*narrow_<any_shiftrt:optab><any_extend:optab><mode>): Ditto.
15036         (*narrow_<any_shiftrt:optab><mode>_scalar): Ditto.
15037         (*single_widen_mult<any_extend:su><mode>): Ditto.
15038         (*single_widen_mul<any_extend:su><mode>): Ditto.
15039         (*single_widen_mult<mode>): Ditto.
15040         (*single_widen_mul<mode>): Ditto.
15041         (*dual_widen_fma<mode>): Ditto.
15042         (*dual_widen_fma<su><mode>): Ditto.
15043         (*single_widen_fma<mode>): Ditto.
15044         (*single_widen_fma<su><mode>): Ditto.
15045         (*dual_fma<mode>): Ditto.
15046         (*single_fma<mode>): Ditto.
15047         (*dual_fnma<mode>): Ditto.
15048         (*dual_widen_fnma<mode>): Ditto.
15049         (*single_fnma<mode>): Ditto.
15050         (*single_widen_fnma<mode>): Ditto.
15051         (*dual_fms<mode>): Ditto.
15052         (*dual_widen_fms<mode>): Ditto.
15053         (*single_fms<mode>): Ditto.
15054         (*single_widen_fms<mode>): Ditto.
15055         (*dual_fnms<mode>): Ditto.
15056         (*dual_widen_fnms<mode>): Ditto.
15057         (*single_fnms<mode>): Ditto.
15058         (*single_widen_fnms<mode>): Ditto.
15060 2023-09-20  Jakub Jelinek  <jakub@redhat.com>
15062         PR c++/111392
15063         * attribs.cc (decl_attributes): Don't warn on omp::directive attribute
15064         on vars or function decls if -fopenmp or -fopenmp-simd.
15066 2023-09-20  Lehua Ding  <lehua.ding@rivai.ai>
15068         PR target/111488
15069         * config/riscv/autovec-opt.md: Add missed operand.
15071 2023-09-20  Omar Sandoval  <osandov@osandov.com>
15073         PR debug/111409
15074         * dwarf2out.cc (output_macinfo): Don't call optimize_macinfo_range if
15075         dwarf_split_debug_info.
15077 2023-09-20  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
15079         * config/riscv/riscv-v.cc (can_find_related_mode_p): New function.
15080         (vectorize_related_mode): Add VLS related modes.
15081         * config/riscv/vector-iterators.md: Extend VLS modes.
15083 2023-09-20  Surya Kumari Jangala  <jskumari@linux.ibm.com>
15085         PR rtl-optimization/110071
15086         * ira-color.cc (improve_allocation): Consider cost of callee
15087         save registers.
15089 2023-09-20  mengqinggang  <mengqinggang@loongson.cn>
15090             Xi Ruoyao  <xry111@xry111.site>
15092         * configure: Regenerate.
15093         * configure.ac: Checking assembler for -mno-relax support.
15094         Disable relaxation when probing leb128 support.
15096 2023-09-20  Lulu Cheng  <chenglulu@loongson.cn>
15098         * config.in: Regenerate.
15099         * config/loongarch/genopts/loongarch.opt.in: Add compilation option
15100         mrelax. And set the initial value of explicit-relocs according to the
15101         detection status.
15102         * config/loongarch/gnu-user.h: When compiling with -mno-relax, pass the
15103         --no-relax option to the linker.
15104         * config/loongarch/loongarch-driver.h (ASM_SPEC): When compiling with
15105         -mno-relax, pass the -mno-relax option to the assembler.
15106         * config/loongarch/loongarch-opts.h (HAVE_AS_MRELAX_OPTION): Define macro.
15107         * config/loongarch/loongarch.opt: Regenerate.
15108         * configure: Regenerate.
15109         * configure.ac: Add detection of support for binutils relax function.
15111 2023-09-19  Ben Boeckel  <ben.boeckel@kitware.com>
15113         * doc/invoke.texi: Document -fdeps-format=, -fdeps-file=, and
15114         -fdeps-target= flags.
15115         * gcc.cc: add defaults for -fdeps-target= and -fdeps-file= when
15116         only -fdeps-format= is specified.
15117         * json.h: Add a TODO item to refactor out to share with
15118         `libcpp/mkdeps.cc`.
15120 2023-09-19  Ben Boeckel  <ben.boeckel@kitware.com>
15121             Jason Merrill  <jason@redhat.com>
15123         * gcc.cc (join_spec_func): Add a spec function to join all
15124         arguments.
15126 2023-09-19  Patrick O'Neill  <patrick@rivosinc.com>
15128         * config/riscv/riscv.cc (riscv_legitimize_const_move): Eliminate
15129         src_op_0 var to avoid rtl check error.
15131 2023-09-19  Aldy Hernandez  <aldyh@redhat.com>
15133         * range-op-float.cc (frelop_early_resolve): Clean-up and remove
15134         special casing.
15135         (operator_not_equal::fold_range): Handle VREL_EQ.
15136         (operator_lt::fold_range): Remove special casing for VREL_EQ.
15137         (operator_gt::fold_range): Same.
15138         (foperator_unordered_equal::fold_range): Same.
15140 2023-09-19  Javier Martinez  <javier.martinez.bugzilla@gmail.com>
15142         * doc/extend.texi: Document attributes hot, cold on C++ types.
15144 2023-09-19  Pat Haugen  <pthaugen@linux.ibm.com>
15146         * config/rs6000/rs6000.cc (rs6000_rtx_costs): Check whether the
15147         modulo instruction is disabled.
15148         * config/rs6000/rs6000.h (RS6000_DISABLE_SCALAR_MODULO): New.
15149         * config/rs6000/rs6000.md (mod<mode>3, *mod<mode>3): Check it.
15150         (define_expand umod<mode>3): New.
15151         (define_insn umod<mode>3): Rename to *umod<mode>3 and check if the modulo
15152         instruction is disabled.
15153         (umodti3, modti3): Check if the modulo instruction is disabled.
15155 2023-09-19  Gaius Mulley  <gaiusmod2@gmail.com>
15157         * doc/gm2.texi (fdebug-builtins): Correct description.
15159 2023-09-19  Jeff Law  <jlaw@ventanamicro.com>
15161         * config/iq2000/predicates.md (uns_arith_constant): New predicate.
15162         * config/iq2000/iq2000.md (rotrsi3): Use it.
15164 2023-09-19  Aldy Hernandez  <aldyh@redhat.com>
15166         * range-op-float.cc (operator_lt::op1_range): Remove known_isnan check.
15167         (operator_lt::op2_range): Same.
15168         (operator_le::op1_range): Same.
15169         (operator_le::op2_range): Same.
15170         (operator_gt::op1_range): Same.
15171         (operator_gt::op2_range): Same.
15172         (operator_ge::op1_range): Same.
15173         (operator_ge::op2_range): Same.
15174         (foperator_unordered_lt::op1_range): Same.
15175         (foperator_unordered_lt::op2_range): Same.
15176         (foperator_unordered_le::op1_range): Same.
15177         (foperator_unordered_le::op2_range): Same.
15178         (foperator_unordered_gt::op1_range): Same.
15179         (foperator_unordered_gt::op2_range): Same.
15180         (foperator_unordered_ge::op1_range): Same.
15181         (foperator_unordered_ge::op2_range): Same.
15183 2023-09-19  Aldy Hernandez  <aldyh@redhat.com>
15185         * value-range.h (frange::update_nan): New.
15187 2023-09-19  Aldy Hernandez  <aldyh@redhat.com>
15189         * range-op-float.cc (operator_not_equal::op2_range): New.
15190         * range-op-mixed.h: Add operator_not_equal::op2_range.
15192 2023-09-19  Andrew MacLeod  <amacleod@redhat.com>
15194         PR tree-optimization/110080
15195         PR tree-optimization/110249
15196         * tree-vrp.cc (remove_unreachable::final_p): New.
15197         (remove_unreachable::maybe_register): Rename from
15198         maybe_register_block and call early or final routine.
15199         (fully_replaceable): New.
15200         (remove_unreachable::handle_early): New.
15201         (remove_unreachable::remove_and_update_globals): Remove
15202         non-final processing.
15203         (rvrp_folder::rvrp_folder): Add final flag to constructor.
15204         (rvrp_folder::post_fold_bb): Remove unreachable registration.
15205         (rvrp_folder::pre_fold_stmt): Move unreachable processing to here.
15206         (execute_ranger_vrp): Adjust some call parameters.
15208 2023-09-19  Richard Biener  <rguenther@suse.de>
15210         PR c/111468
15211         * tree-pretty-print.h (op_symbol_code): Add defaulted flags
15212         argument.
15213         * tree-pretty-print.cc (op_symbol): Likewise.
15214         (op_symbol_code): Print TDF_GIMPLE variant if requested.
15215         * gimple-pretty-print.cc (dump_binary_rhs): Pass flags to
15216         op_symbol_code.
15217         (dump_gimple_cond): Likewise.
15219 2023-09-19  Thomas Schwinge  <thomas@codesourcery.com>
15220             Pan Li  <pan2.li@intel.com>
15222         * tree-streamer.h (bp_unpack_machine_mode): If
15223         'ib->file_data->mode_table' not available, apply 1-to-1 mapping.
15225 2023-09-19  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
15227         * config/riscv/riscv.cc (riscv_can_change_mode_class): Block unordered VLA and VLS modes.
15229 2023-09-19  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
15231         * config/riscv/autovec.md: Extend VLS modes.
15232         * config/riscv/vector.md: Ditto.
15234 2023-09-19  Richard Biener  <rguenther@suse.de>
15236         PR tree-optimization/111465
15237         * tree-ssa-threadupdate.cc (fwd_jt_path_registry::thread_block_1):
15238         Cancel the path when a EDGE_NO_COPY_SRC_BLOCK became non-empty.
15240 2023-09-19  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
15242         * config/riscv/autovec.md: Extend VLS floating-point modes.
15243         * config/riscv/vector.md: Ditto.
15245 2023-09-19  Jakub Jelinek  <jakub@redhat.com>
15247         * match.pd ((x << c) >> c): Don't call build_nonstandard_integer_type
15248         nor check type_has_mode_precision_p for width larger than [TD]Imode
15249         precision.
15250         (a ? CST1 : CST2): Don't use build_nonstandard_type, just convert
15251         to type.  Use boolean_true_node instead of
15252         constant_boolean_node (true, boolean_type_node).  Formatting fixes.
15254 2023-09-19  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
15256         * config/riscv/autovec.md: Add VLS modes.
15257         * config/riscv/vector.md: Ditto.
15259 2023-09-19  Jakub Jelinek  <jakub@redhat.com>
15261         * tree.cc (build_bitint_type): Assert precision is not 0, or
15262         for signed types 1.
15263         (signed_or_unsigned_type_for): Return INTEGER_TYPE for signed variant
15264         of unsigned _BitInt(1).
15266 2023-09-19  Lehua Ding  <lehua.ding@rivai.ai>
15268         * config/riscv/autovec-opt.md (*<optab>_fma<mode>):
15269         Removed old combine patterns.
15270         (*single_<optab>mult_plus<mode>): Ditto.
15271         (*double_<optab>mult_plus<mode>): Ditto.
15272         (*sign_zero_extend_fma): Ditto.
15273         (*zero_sign_extend_fma): Ditto.
15274         (*double_widen_fma<mode>): Ditto.
15275         (*single_widen_fma<mode>): Ditto.
15276         (*double_widen_fnma<mode>): Ditto.
15277         (*single_widen_fnma<mode>): Ditto.
15278         (*double_widen_fms<mode>): Ditto.
15279         (*single_widen_fms<mode>): Ditto.
15280         (*double_widen_fnms<mode>): Ditto.
15281         (*single_widen_fnms<mode>): Ditto.
15282         (*reduc_plus_scal_<mode>): Adjust name.
15283         (*widen_reduc_plus_scal_<mode>): Adjust name.
15284         (*dual_widen_fma<mode>): New combine pattern.
15285         (*dual_widen_fmasu<mode>): Ditto.
15286         (*dual_widen_fmaus<mode>): Ditto.
15287         (*dual_fma<mode>): Ditto.
15288         (*single_fma<mode>): Ditto.
15289         (*dual_fnma<mode>): Ditto.
15290         (*single_fnma<mode>): Ditto.
15291         (*dual_fms<mode>): Ditto.
15292         (*single_fms<mode>): Ditto.
15293         (*dual_fnms<mode>): Ditto.
15294         (*single_fnms<mode>): Ditto.
15295         * config/riscv/autovec.md (fma<mode>4):
15296         Reafctor fma pattern.
15297         (*fma<VI:mode><P:mode>): Removed.
15298         (fnma<mode>4): Reafctor.
15299         (*fnma<VI:mode><P:mode>): Removed.
15300         (*fma<VF:mode><P:mode>):  Removed.
15301         (*fnma<VF:mode><P:mode>):  Removed.
15302         (fms<mode>4):  Reafctor.
15303         (*fms<VF:mode><P:mode>):  Removed.
15304         (fnms<mode>4): Reafctor.
15305         (*fnms<VF:mode><P:mode>): Removed.
15306         * config/riscv/riscv-protos.h (prepare_ternary_operands):
15307         Adjust prototype.
15308         * config/riscv/riscv-v.cc (prepare_ternary_operands): Refactor.
15309         * config/riscv/vector.md (*pred_mul_plus<mode>_undef): New pattern.
15310         (*pred_mul_plus<mode>): Removed.
15311         (*pred_mul_plus<mode>_scalar): Removed.
15312         (*pred_mul_plus<mode>_extended_scalar): Removed.
15313         (*pred_minus_mul<mode>_undef):  New pattern.
15314         (*pred_minus_mul<mode>): Removed.
15315         (*pred_minus_mul<mode>_scalar): Removed.
15316         (*pred_minus_mul<mode>_extended_scalar): Removed.
15317         (*pred_mul_<optab><mode>_undef):  New pattern.
15318         (*pred_mul_<optab><mode>): Removed.
15319         (*pred_mul_<optab><mode>_scalar): Removed.
15320         (*pred_mul_neg_<optab><mode>_undef):  New pattern.
15321         (*pred_mul_neg_<optab><mode>): Removed.
15322         (*pred_mul_neg_<optab><mode>_scalar): Removed.
15324 2023-09-19  Tsukasa OI  <research_trasio@irq.a4lg.com>
15326         * config/riscv/riscv-vector-builtins.cc
15327         (builtin_decl, expand_builtin): Replace SVE with RVV.
15329 2023-09-19  Tsukasa OI  <research_trasio@irq.a4lg.com>
15331         * config/riscv/t-riscv: Add dependencies for riscv-builtins.cc,
15332         riscv-cmo.def and riscv-scalar-crypto.def.
15334 2023-09-18  Pan Li  <pan2.li@intel.com>
15336         * config/riscv/autovec.md: Extend to vls mode.
15338 2023-09-18  Pan Li  <pan2.li@intel.com>
15340         * config/riscv/autovec.md: Bugfix.
15341         * config/riscv/riscv-protos.h (SCALAR_MOVE_MERGED_OP): New enum.
15343 2023-09-18  Andrew Pinski  <apinski@marvell.com>
15345         PR tree-optimization/111442
15346         * match.pd (zero_one_valued_p): Have the bit_and match not be
15347         recursive.
15349 2023-09-18  Andrew Pinski  <apinski@marvell.com>
15351         PR tree-optimization/111435
15352         * match.pd (zero_one_valued_p): Don't do recursion
15353         on converts.
15355 2023-09-18  Iain Sandoe  <iain@sandoe.co.uk>
15357         * config/darwin-protos.h (enum darwin_external_toolchain): New.
15358         * config/darwin.cc (DSYMUTIL_VERSION): New.
15359         (darwin_override_options): Choose the default debug DWARF version
15360         depending on the configured dsymutil version.
15362 2023-09-18  Iain Sandoe  <iain@sandoe.co.uk>
15364         * configure: Regenerate.
15365         * configure.ac: Handle explict disable of stdlib option, set
15366         defaults for Darwin.
15368 2023-09-18  Andrew Pinski  <apinski@marvell.com>
15370         PR tree-optimization/111431
15371         * match.pd (`(a == CST) & a`): New pattern.
15373 2023-09-18  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
15375         * config/riscv/riscv-selftests.cc (run_broadcast_selftests): Adapt selftests.
15376         * config/riscv/vector.md (@vec_duplicate<mode>): Remove.
15378 2023-09-18  Wilco Dijkstra  <wilco.dijkstra@arm.com>
15380         PR target/105928
15381         * config/aarch64/aarch64.cc (aarch64_internal_mov_immediate)
15382         Add support for immediates using shifted ORR/BIC.
15383         (aarch64_split_dimode_const_store): Apply if we save one instruction.
15384         * config/aarch64/aarch64.md (<LOGICAL:optab>_<SHIFT:optab><mode>3):
15385         Make pattern global.
15387 2023-09-18  Wilco Dijkstra  <wilco.dijkstra@arm.com>
15389         * config/aarch64/aarch64-cores.def (neoverse-n1): Place before ares.
15390         (neoverse-v1): Place before zeus.
15391         (neoverse-v2): Place before demeter.
15392         * config/aarch64/aarch64-tune.md: Regenerate.
15394 2023-09-18  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
15396         * config/riscv/autovec.md: Add VLS modes.
15397         * config/riscv/vector-iterators.md: Ditto.
15398         * config/riscv/vector.md: Ditto.
15400 2023-09-18  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
15402         * config/riscv/riscv-vsetvl.cc (vlmul_for_greatest_sew_second_ratio): New function.
15403         * config/riscv/riscv-vsetvl.def (DEF_SEW_LMUL_FUSE_RULE): Fix bug.
15405 2023-09-18  Richard Biener  <rguenther@suse.de>
15407         PR tree-optimization/111294
15408         * tree-ssa-threadbackward.cc (back_threader_profitability::m_name):
15409         Remove
15410         (back_threader::find_paths_to_names): Adjust.
15411         (back_threader::maybe_thread_block): Likewise.
15412         (back_threader_profitability::possibly_profitable_path_p): Remove
15413         code applying extra costs to copies PHIs.
15415 2023-09-18  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
15417         * config/riscv/autovec.md: Extend VLS modes.
15418         * config/riscv/vector.md: Ditto.
15420 2023-09-18  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
15422         * config/riscv/vector.md (mov<mode>): New pattern.
15423         (*mov<mode>_mem_to_mem): Ditto.
15424         (*mov<mode>): Ditto.
15425         (@mov<VLS_AVL_REG:mode><P:mode>_lra): Ditto.
15426         (*mov<VLS_AVL_REG:mode><P:mode>_lra): Ditto.
15427         (*mov<mode>_vls): Ditto.
15428         (movmisalign<mode>): Ditto.
15429         (@vec_duplicate<mode>): Ditto.
15430         * config/riscv/autovec-vls.md: Removed.
15432 2023-09-18  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
15434         PR target/111153
15435         * config/riscv/autovec.md: Add VLS modes.
15437 2023-09-18  Jason Merrill  <jason@redhat.com>
15439         * doc/gty.texi: Add discussion of cache vs. deletable.
15441 2023-09-18  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
15443         * config/riscv/autovec-vls.md (<optab><mode>3): Deleted.
15444         (copysign<mode>3): Ditto.
15445         (xorsign<mode>3): Ditto.
15446         (<optab><mode>2): Ditto.
15447         * config/riscv/autovec.md: Extend VLS modes.
15449 2023-09-18  Jiufu Guo  <guojiufu@linux.ibm.com>
15451         PR middle-end/111303
15452         * match.pd ((t * 2) / 2): Update pattern.
15454 2023-09-17  Ajit Kumar Agarwal  <aagarwa1@linux.ibm.com>
15456         * config/rs6000/vsx.md (*vctzlsbb_zext_<mode>): New define_insn.
15458 2023-09-16  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
15460         PR target/111391
15461         * config/riscv/autovec.md (@vec_extract<mode><vel>): Remove @.
15462         (vec_extract<mode><vel>): Ditto.
15463         * config/riscv/riscv-vsetvl.cc (emit_vsetvl_insn): Fix bug.
15464         (pass_vsetvl::local_eliminate_vsetvl_insn): Fix bug.
15465         * config/riscv/riscv.cc (riscv_legitimize_move): Expand VLS mode to scalar mode move.
15467 2023-09-16  Tsukasa OI  <research_trasio@irq.a4lg.com>
15469         * config/riscv/crypto.md (riscv_sha256sig0_<mode>,
15470         riscv_sha256sig1_<mode>, riscv_sha256sum0_<mode>,
15471         riscv_sha256sum1_<mode>, riscv_sm3p0_<mode>, riscv_sm3p1_<mode>,
15472         riscv_sm4ed_<mode>, riscv_sm4ks_<mode>): Remove and replace with
15473         new insn/expansions.
15474         (SHA256_OP, SM3_OP, SM4_OP): New iterators.
15475         (sha256_op, sm3_op, sm4_op): New attributes for iteration.
15476         (*riscv_<sha256_op>_si): New raw instruction for RV32.
15477         (*riscv_<sm3_op>_si): Ditto.
15478         (*riscv_<sm4_op>_si): Ditto.
15479         (riscv_<sha256_op>_di_extended): New base instruction for RV64.
15480         (riscv_<sm3_op>_di_extended): Ditto.
15481         (riscv_<sm4_op>_di_extended): Ditto.
15482         (riscv_<sha256_op>_si): New common instruction expansion.
15483         (riscv_<sm3_op>_si): Ditto.
15484         (riscv_<sm4_op>_si): Ditto.
15485         * config/riscv/riscv-builtins.cc: Add availability "crypto_zknh",
15486         "crypto_zksh" and "crypto_zksed".  Remove availability
15487         "crypto_zksh{32,64}" and "crypto_zksed{32,64}".
15488         * config/riscv/riscv-ftypes.def: Remove unused function type.
15489         * config/riscv/riscv-scalar-crypto.def: Make SHA-256, SM3 and SM4
15490         intrinsics to operate on uint32_t.
15492 2023-09-16  Tsukasa OI  <research_trasio@irq.a4lg.com>
15494         * config/riscv/riscv-builtins.cc (RISCV_ATYPE_UQI): New for
15495         uint8_t.  (RISCV_ATYPE_UHI): New for uint16_t.
15496         (RISCV_ATYPE_QI, RISCV_ATYPE_HI, RISCV_ATYPE_SI, RISCV_ATYPE_DI):
15497         Removed as no longer used.
15498         (RISCV_ATYPE_UDI): New for uint64_t.
15499         * config/riscv/riscv-cmo.def: Make types unsigned for not working
15500         "zicbop_cbo_prefetchi" and working bit manipulation clmul builtin
15501         argument/return types.
15502         * config/riscv/riscv-ftypes.def: Make bit manipulation, round
15503         number and shift amount types unsigned.
15504         * config/riscv/riscv-scalar-crypto.def: Ditto.
15506 2023-09-16  Pan Li  <pan2.li@intel.com>
15508         * config/riscv/autovec-vls.md (xorsign<mode>3): New pattern.
15510 2023-09-15  Fei Gao  <gaofei@eswincomputing.com>
15512         * config/riscv/predicates.md: Restrict predicate
15513         to allow 'reg' only.
15515 2023-09-15  Andrew Pinski  <apinski@marvell.com>
15517         * match.pd (zero_one_valued_p): Match a cast from a zero_one_valued_p.
15518         Also match `a & zero_one_valued_p` too.
15520 2023-09-15  Andrew Pinski  <apinski@marvell.com>
15522         PR tree-optimization/111414
15523         * match.pd (`(1 >> X) != 0`): Check to see if
15524         the integer_onep was an integral type (not a vector type).
15526 2023-09-15  Andrew MacLeod  <amacleod@redhat.com>
15528         * gimple-range-fold.cc (fold_using_range::range_of_phi): Always
15529         run phi analysis, and do it before loop analysis.
15531 2023-09-15  Andrew MacLeod  <amacleod@redhat.com>
15533         * gimple-range-fold.cc (fold_using_range::range_of_phi): Fix
15534         indentation.
15536 2023-09-15  Qing Zhao  <qing.zhao@oracle.com>
15538         PR tree-optimization/111407
15539         * tree-ssa-math-opts.cc (convert_mult_to_widen): Avoid the transform
15540         when one of the operands is subject to abnormal coalescing.
15542 2023-09-15  Lehua Ding  <lehua.ding@rivai.ai>
15544         * config/riscv/riscv-protos.h (enum insn_flags): Change name.
15545         (enum insn_type): Ditto.
15546         * config/riscv/riscv-v.cc (get_mask_mode_from_insn_flags): Removed.
15547         (emit_vlmax_insn): Adjust.
15548         (emit_nonvlmax_insn): Adjust.
15549         (emit_vlmax_insn_lra): Adjust.
15551 2023-09-15  Lehua Ding  <lehua.ding@rivai.ai>
15553         * config/riscv/autovec-opt.md: Adjust.
15554         * config/riscv/autovec.md: Ditto.
15555         * config/riscv/riscv-protos.h (enum class): Delete enum reduction_type.
15556         (expand_reduction): Adjust expand_reduction prototype.
15557         * config/riscv/riscv-v.cc (need_mask_operand_p): New helper function.
15558         (expand_reduction): Refactor expand_reduction.
15560 2023-09-15  Richard Sandiford  <richard.sandiford@arm.com>
15562         PR target/111411
15563         * config/aarch64/aarch64.cc (aarch64_operands_ok_for_ldpstp): Require
15564         the lower memory access to a mem-pair operand.
15566 2023-09-15  Yang Yujie  <yangyujie@loongson.cn>
15568         * config.gcc: Pass the default ABI via TM_MULTILIB_CONFIG.
15569         * config/loongarch/loongarch-driver.h: Invoke MLIB_SELF_SPECS
15570         before the driver canonicalization routines.
15571         * config/loongarch/loongarch.h: Move definitions of CC1_SPEC etc.
15572         to loongarch-driver.h
15573         * config/loongarch/t-linux: Move multilib-related definitions to
15574         t-multilib.
15575         * config/loongarch/t-multilib: New file.  Inject library build
15576         options obtained from --with-multilib-list.
15577         * config/loongarch/t-loongarch: Same.
15579 2023-09-15  Lehua Ding  <lehua.ding@rivai.ai>
15581         PR target/111381
15582         * config/riscv/autovec-opt.md (*reduc_plus_scal_<mode>):
15583         New combine pattern.
15584         (*fold_left_widen_plus_<mode>): Ditto.
15585         (*mask_len_fold_left_widen_plus_<mode>): Ditto.
15586         * config/riscv/autovec.md (reduc_plus_scal_<mode>):
15587         Change from define_expand to define_insn_and_split.
15588         (fold_left_plus_<mode>): Ditto.
15589         (mask_len_fold_left_plus_<mode>): Ditto.
15590         * config/riscv/riscv-v.cc (expand_reduction):
15591         Support widen reduction.
15592         * config/riscv/vector-iterators.md (UNSPEC_WREDUC_SUM):
15593         Add new iterators and attrs.
15595 2023-09-14  David Malcolm  <dmalcolm@redhat.com>
15597         * diagnostic-event-id.h (diagnostic_thread_id_t): New typedef.
15598         * diagnostic-format-sarif.cc (class sarif_thread_flow): New.
15599         (sarif_thread_flow::sarif_thread_flow): New.
15600         (sarif_builder::make_code_flow_object): Reimplement, creating
15601         per-thread threadFlow objects, populating them with the relevant
15602         events.
15603         (sarif_builder::make_thread_flow_object): Delete, moving the
15604         code into sarif_builder::make_code_flow_object.
15605         (sarif_builder::make_thread_flow_location_object): Add
15606         "path_event_idx" param.  Use it to set "executionOrder"
15607         property.
15608         * diagnostic-path.h (diagnostic_event::get_thread_id): New
15609         pure-virtual vfunc.
15610         (class diagnostic_thread): New.
15611         (diagnostic_path::num_threads): New pure-virtual vfunc.
15612         (diagnostic_path::get_thread):  New pure-virtual vfunc.
15613         (diagnostic_path::multithreaded_p): New decl.
15614         (simple_diagnostic_event::simple_diagnostic_event): Add optional
15615         thread_id param.
15616         (simple_diagnostic_event::get_thread_id): New accessor.
15617         (simple_diagnostic_event::m_thread_id): New.
15618         (class simple_diagnostic_thread): New.
15619         (simple_diagnostic_path::simple_diagnostic_path): Move definition
15620         to diagnostic.cc.
15621         (simple_diagnostic_path::num_threads): New.
15622         (simple_diagnostic_path::get_thread): New.
15623         (simple_diagnostic_path::add_thread): New.
15624         (simple_diagnostic_path::add_thread_event): New.
15625         (simple_diagnostic_path::m_threads): New.
15626         * diagnostic-show-locus.cc (layout::layout): Add pretty_printer
15627         param for overriding the context's printer.
15628         (diagnostic_show_locus): Likwise.
15629         * diagnostic.cc (simple_diagnostic_path::simple_diagnostic_path):
15630         Move here from diagnostic-path.h.  Add main thread.
15631         (simple_diagnostic_path::num_threads): New.
15632         (simple_diagnostic_path::get_thread): New.
15633         (simple_diagnostic_path::add_thread): New.
15634         (simple_diagnostic_path::add_thread_event): New.
15635         (simple_diagnostic_event::simple_diagnostic_event): Add thread_id
15636         param and use it to initialize m_thread_id.  Reformat.
15637         * diagnostic.h: Add pretty_printer param for overriding the
15638         context's printer.
15639         * tree-diagnostic-path.cc: Add #define INCLUDE_VECTOR.
15640         (can_consolidate_events): Compare thread ids.
15641         (class per_thread_summary): New.
15642         (event_range::event_range): Add per_thread_summary arg.
15643         (event_range::print): Add "pp" param and use it rather than dc's
15644         printer.
15645         (event_range::m_thread_id): New field.
15646         (event_range::m_per_thread_summary): New field.
15647         (path_summary::multithreaded_p): New.
15648         (path_summary::get_events_for_thread_id): New.
15649         (path_summary::m_per_thread_summary): New field.
15650         (path_summary::m_thread_id_to_events): New field.
15651         (path_summary::get_or_create_events_for_thread_id): New.
15652         (path_summary::path_summary): Create per_thread_summary instances
15653         as needed and associate the event_range instances with them.
15654         (base_indent): Move here from print_path_summary_as_text.
15655         (per_frame_indent): Likewise.
15656         (class thread_event_printer): New, adapted from parts of
15657         print_path_summary_as_text.
15658         (print_path_summary_as_text): Make static.  Reimplement to
15659         moving most of existing code to class thread_event_printer,
15660         capturing state as per-thread as appropriate.
15661         (default_tree_diagnostic_path_printer): Add missing 'break' on
15662         final case.
15664 2023-09-14  David Malcolm  <dmalcolm@redhat.com>
15666         * dwarf2cfi.cc (dwarf2cfi_cc_finalize): New.
15667         * dwarf2out.h (dwarf2cfi_cc_finalize): New decl.
15668         * ggc-common.cc (ggc_mark_roots): Multiply by rti->nelt when
15669         clearing the deletable gcc_root_tab_t.
15670         (ggc_common_finalize): New.
15671         * ggc.h (ggc_common_finalize): New decl.
15672         * toplev.cc (toplev::finalize): Call dwarf2cfi_cc_finalize and
15673         ggc_common_finalize.
15675 2023-09-14  Max Filippov  <jcmvbkbc@gmail.com>
15677         * config/xtensa/predicates.md (xtensa_cstoresi_operator): Add
15678         unsigned comparisons.
15679         * config/xtensa/xtensa.cc (xtensa_expand_scc): Add code
15680         generation of salt/saltu instructions.
15681         * config/xtensa/xtensa.h (TARGET_SALT): New macro.
15682         * config/xtensa/xtensa.md (salt, saltu): New instruction
15683         patterns.
15685 2023-09-14  Vladimir N. Makarov  <vmakarov@redhat.com>
15687         * ira-costs.cc (find_costs_and_classes): Decrease memory cost
15688         by equiv savings.
15690 2023-09-14  Lehua Ding  <lehua.ding@rivai.ai>
15692         * config/riscv/autovec.md: Change rtx code to unspec.
15693         * config/riscv/riscv-protos.h (expand_reduction): Change prototype.
15694         * config/riscv/riscv-v.cc (expand_reduction): Change prototype.
15695         * config/riscv/riscv-vector-builtins-bases.cc (class widen_reducop):
15696         Removed.
15697         (class widen_freducop): Removed.
15698         * config/riscv/vector-iterators.md (minu): Add reduc unspec, iterators, attrs.
15699         * config/riscv/vector.md (@pred_reduc_<reduc><mode>): Change name.
15700         (@pred_<reduc_op><mode>): New name.
15701         (@pred_widen_reduc_plus<v_su><mode>): Change name.
15702         (@pred_reduc_plus<order><mode>): Change name.
15703         (@pred_widen_reduc_plus<order><mode>): Change name.
15705 2023-09-14  Lehua Ding  <lehua.ding@rivai.ai>
15707         * config/riscv/riscv-v.cc (expand_reduction): Adjust call.
15708         * config/riscv/riscv-vector-builtins-bases.cc: Adjust call.
15709         * config/riscv/vector-iterators.md: New iterators and attrs.
15710         * config/riscv/vector.md (@pred_reduc_<reduc><VQI:mode><VQI_LMUL1:mode>):
15711         Removed.
15712         (@pred_reduc_<reduc><VHI:mode><VHI_LMUL1:mode>): Removed.
15713         (@pred_reduc_<reduc><VSI:mode><VSI_LMUL1:mode>): Removed.
15714         (@pred_reduc_<reduc><VDI:mode><VDI_LMUL1:mode>): Removed.
15715         (@pred_reduc_<reduc><mode>): Added.
15716         (@pred_widen_reduc_plus<v_su><VQI:mode><VHI_LMUL1:mode>): Removed.
15717         (@pred_widen_reduc_plus<v_su><VHI:mode><VSI_LMUL1:mode>): Removed.
15718         (@pred_widen_reduc_plus<v_su><mode>): Added.
15719         (@pred_widen_reduc_plus<v_su><VSI:mode><VDI_LMUL1:mode>): Removed.
15720         (@pred_reduc_<reduc><VHF:mode><VHF_LMUL1:mode>): Removed.
15721         (@pred_reduc_<reduc><VSF:mode><VSF_LMUL1:mode>): Removed.
15722         (@pred_reduc_<reduc><VDF:mode><VDF_LMUL1:mode>): Removed.
15723         (@pred_reduc_plus<order><VHF:mode><VHF_LMUL1:mode>): Removed.
15724         (@pred_reduc_plus<order><VSF:mode><VSF_LMUL1:mode>): Removed.
15725         (@pred_reduc_plus<order><mode>): Added.
15726         (@pred_reduc_plus<order><VDF:mode><VDF_LMUL1:mode>): Removed.
15727         (@pred_widen_reduc_plus<order><VHF:mode><VSF_LMUL1:mode>): Removed.
15728         (@pred_widen_reduc_plus<order><VSF:mode><VDF_LMUL1:mode>): Removed.
15729         (@pred_widen_reduc_plus<order><mode>): Added.
15731 2023-09-14  Richard Sandiford  <richard.sandiford@arm.com>
15733         * config/aarch64/aarch64.cc (aarch64_vector_costs::analyze_loop_info):
15734         Move WHILELO handling to...
15735         (aarch64_vector_costs::finish_cost): ...here.  Check whether the
15736         vectorizer has decided to use a predicated loop.
15738 2023-09-14  Andrew Pinski  <apinski@marvell.com>
15740         PR tree-optimization/106164
15741         * match.pd (`(X CMP1 CST1) AND/IOR (X CMP2 CST2)`):
15742         Expand to support constants that are off by one.
15744 2023-09-14  Andrew Pinski  <apinski@marvell.com>
15746         * genmatch.cc (parser::parse_result): For an else clause
15747         of an if statement inside a switch, error out explictly.
15749 2023-09-14  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
15751         * config/riscv/autovec-opt.md: Add VLS mask modes.
15752         * config/riscv/autovec.md (@vcond_mask_<mode><vm>): Remove @.
15753         (vcond_mask_<mode><vm>): Add VLS mask modes.
15754         * config/riscv/vector.md: Ditto.
15756 2023-09-14  Richard Biener  <rguenther@suse.de>
15758         PR tree-optimization/111294
15759         * tree-ssa-forwprop.cc (pass_forwprop::execute): Track
15760         operands that eventually become dead and use simple_dce_from_worklist
15761         to remove their definitions if they did so.
15763 2023-09-14  Richard Sandiford  <richard.sandiford@arm.com>
15765         * config/aarch64/aarch64-sve.md (@aarch64_vec_duplicate_vq<mode>_le):
15766         Accept all nonimmediate_operands, but keep the existing constraints.
15767         If the instruction is split before RA, load invalid addresses into
15768         a temporary register.
15769         * config/aarch64/predicates.md (aarch64_sve_dup_ld1rq_operand): Delete.
15771 2023-09-14  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
15773         PR target/111395
15774         * config/riscv/riscv-vsetvl.cc (avl_info::operator==): Fix ICE.
15775         (vector_insn_info::global_merge): Ditto.
15776         (vector_insn_info::get_avl_or_vl_reg): Ditto.
15778 2023-09-14  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
15780         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::global_eliminate_vsetvl_insn): Format it.
15782 2023-09-14  Lulu Cheng  <chenglulu@loongson.cn>
15784         * config/loongarch/loongarch-def.c: Modify the default value of
15785         branch_cost.
15787 2023-09-14  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
15789         * config/xtensa/xtensa.cc (xtensa_expand_scc):
15790         Revert the changes from the last patch, as the work in the RTL
15791         expansion pass is too far to determine the physical registers.
15792         * config/xtensa/xtensa.md (*eqne_INT_MIN): Ditto.
15793         (eq_zero_NSA, eqne_zero, *eqne_zero_masked_bits): New patterns.
15795 2023-09-14  Lulu Cheng  <chenglulu@loongson.cn>
15797         PR target/111334
15798         * config/loongarch/loongarch.md: Fix bug of '<optab>di3_fake'.
15800 2023-09-13  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
15802         * config/riscv/autovec.md (vec_extract<mode><vel>): Add VLS modes.
15803         (@vec_extract<mode><vel>): Ditto.
15804         * config/riscv/vector.md: Ditto
15806 2023-09-13  Andrew Pinski  <apinski@marvell.com>
15808         * match.pd (`X <= MAX(X, Y)`):
15809         Move before `MIN (X, C1) < C2` pattern.
15811 2023-09-13  Andrew Pinski  <apinski@marvell.com>
15813         PR tree-optimization/111364
15814         * match.pd (`MIN (X, Y) == X`): Extend
15815         to min/lt, min/ge, max/gt, max/le.
15817 2023-09-13  Andrew Pinski  <apinski@marvell.com>
15819         PR tree-optimization/111345
15820         * match.pd (`Y > (X % Y)`): Merge
15821         into ...
15822         (`(X % Y) < Y`): Pattern by adding `:c`
15823         on the comparison.
15825 2023-09-13  Richard Biener  <rguenther@suse.de>
15827         PR tree-optimization/111387
15828         * tree-vect-slp.cc (vect_get_and_check_slp_defs): Check
15829         EDGE_DFS_BACK when doing BB vectorization.
15830         (vect_slp_function): Use rev_post_order_and_mark_dfs_back_seme
15831         to compute RPO and mark backedges.
15833 2023-09-13  Lehua Ding  <lehua.ding@rivai.ai>
15835         * config/riscv/autovec-opt.md (*cond_<mulh_table><mode>3_highpart):
15836         New combine pattern.
15837         * config/riscv/autovec.md (smul<mode>3_highpart): Mrege smul and umul.
15838         (<mulh_table><mode>3_highpart): Merged pattern.
15839         (umul<mode>3_highpart): Mrege smul and umul.
15840         * config/riscv/vector-iterators.md (umul): New iterators.
15841         (UNSPEC_VMULHU): New iterators.
15843 2023-09-13  Lehua Ding  <lehua.ding@rivai.ai>
15845         * config/riscv/autovec-opt.md (*cond_v<any_shiftrt:optab><any_extend:optab>trunc<mode>):
15846         New combine pattern.
15847         (*cond_<any_shiftrt:optab>trunc<mode>): Ditto.
15849 2023-09-13  Lehua Ding  <lehua.ding@rivai.ai>
15851         * config/riscv/autovec-opt.md (*copysign<mode>_neg): Move.
15852         (*cond_copysign<mode>): New combine pattern.
15853         * config/riscv/riscv-v.cc (needs_fp_rounding): Extend.
15855 2023-09-13  Richard Biener  <rguenther@suse.de>
15857         PR tree-optimization/111397
15858         * tree-ssa-propagate.cc (may_propagate_copy): Change optional
15859         argument to specify whether the PHI destination doesn't flow in
15860         from an abnormal PHI.
15861         (propagate_value): Adjust.
15862         * tree-ssa-forwprop.cc (pass_forwprop::execute): Indicate abnormal
15863         PHI dest.
15864         * tree-ssa-sccvn.cc (eliminate_dom_walker::before_dom_children):
15865         Likewise.
15866         (process_bb): Likewise.
15868 2023-09-13  Pan Li  <pan2.li@intel.com>
15870         PR target/111362
15871         * config/riscv/riscv.cc (riscv_emit_frm_mode_set): Bugfix.
15873 2023-09-13  Jiufu Guo  <guojiufu@linux.ibm.com>
15875         PR tree-optimization/111303
15876         * match.pd ((X - N * M) / N): Add undefined_p checking.
15877         ((X + N * M) / N): Likewise.
15878         ((X + C) div_rshift N): Likewise.
15880 2023-09-12  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
15882         PR target/111337
15883         * config/riscv/autovec.md (vcond_mask_<mode><mode>): New pattern.
15885 2023-09-12  Martin Jambor  <mjambor@suse.cz>
15887         * dbgcnt.def (form_fma): New.
15888         * tree-ssa-math-opts.cc: Include dbgcnt.h.
15889         (convert_mult_to_fma): Bail out if the debug counter say so.
15891 2023-09-12  Edwin Lu  <ewlu@rivosinc.com>
15893         * config/riscv/autovec-opt.md: Update type
15894         * config/riscv/riscv.cc (riscv_sched_variable_issue): Enable assert
15896 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
15898         * config/aarch64/aarch64.cc (aarch64_save_regs_above_locals_p):
15899         New function.
15900         (aarch64_layout_frame): Use it to decide whether locals should
15901         go above or below the saved registers.
15902         (aarch64_expand_prologue): Update stack layout comment.
15903         Emit a stack tie after the final adjustment.
15905 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
15907         * config/aarch64/aarch64.h (aarch64_frame::saved_regs_size)
15908         (aarch64_frame::below_hard_fp_saved_regs_size): Delete.
15909         * config/aarch64/aarch64.cc (aarch64_layout_frame): Update accordingly.
15911 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
15913         * config/aarch64/aarch64.h (aarch64_frame::sve_save_and_probe)
15914         (aarch64_frame::hard_fp_save_and_probe): New fields.
15915         * config/aarch64/aarch64.cc (aarch64_layout_frame): Initialize them.
15916         Rather than asserting that a leaf function saves LR, instead assert
15917         that a leaf function saves something.
15918         (aarch64_get_separate_components): Prevent the chosen probe
15919         registers from being individually shrink-wrapped.
15920         (aarch64_allocate_and_probe_stack_space): Remove workaround for
15921         probe registers that aren't at the bottom of the previous allocation.
15923 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
15925         * config/aarch64/aarch64.cc (aarch64_allocate_and_probe_stack_space):
15926         Always probe the residual allocation at offset 1024, asserting
15927         that that is in range.
15929 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
15931         * config/aarch64/aarch64.cc (aarch64_layout_frame): Ensure that
15932         the LR save slot is in the first 16 bytes of the register save area.
15933         Only form STP/LDP push/pop candidates if both registers are valid.
15934         (aarch64_allocate_and_probe_stack_space): Remove workaround for
15935         when LR was not in the first 16 bytes.
15937 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
15939         * config/aarch64/aarch64.cc (aarch64_allocate_and_probe_stack_space):
15940         Don't probe final allocations that are exactly 1KiB in size (after
15941         unprobed space above the final allocation has been deducted).
15943 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
15945         * config/aarch64/aarch64.cc (aarch64_layout_frame): Tweak
15946         calculation of initial_adjust for frames in which all saves
15947         are SVE saves.
15949 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
15951         * config/aarch64/aarch64.cc (aarch64_layout_frame): Simplify
15952         the allocation of the top of the frame.
15954 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
15956         * config/aarch64/aarch64.h (aarch64_frame): Add comment above
15957         reg_offset.
15958         * config/aarch64/aarch64.cc (aarch64_layout_frame): Walk offsets
15959         from the bottom of the frame, rather than the bottom of the saved
15960         register area.  Measure reg_offset from the bottom of the frame
15961         rather than the bottom of the saved register area.
15962         (aarch64_save_callee_saves): Update accordingly.
15963         (aarch64_restore_callee_saves): Likewise.
15964         (aarch64_get_separate_components): Likewise.
15965         (aarch64_process_components): Likewise.
15967 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
15969         * config/aarch64/aarch64.h (aarch64_frame::frame_size): Tweak comment.
15971 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
15973         * config/aarch64/aarch64.h (aarch64_frame::hard_fp_offset): Rename
15974         to...
15975         (aarch64_frame::bytes_above_hard_fp): ...this.
15976         * config/aarch64/aarch64.cc (aarch64_layout_frame)
15977         (aarch64_expand_prologue): Update accordingly.
15978         (aarch64_initial_elimination_offset): Likewise.
15980 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
15982         * config/aarch64/aarch64.h (aarch64_frame::locals_offset): Rename to...
15983         (aarch64_frame::bytes_above_locals): ...this.
15984         * config/aarch64/aarch64.cc (aarch64_layout_frame)
15985         (aarch64_initial_elimination_offset): Update accordingly.
15987 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
15989         * config/aarch64/aarch64.cc (aarch64_expand_prologue): Move the
15990         calculation of chain_offset into the emit_frame_chain block.
15992 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
15994         * config/aarch64/aarch64.h (aarch64_frame::callee_offset): Delete.
15995         * config/aarch64/aarch64.cc (aarch64_layout_frame): Remove
15996         callee_offset handling.
15997         (aarch64_save_callee_saves): Replace the start_offset parameter
15998         with a bytes_below_sp parameter.
15999         (aarch64_restore_callee_saves): Likewise.
16000         (aarch64_expand_prologue): Update accordingly.
16001         (aarch64_expand_epilogue): Likewise.
16003 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
16005         * config/aarch64/aarch64.h (aarch64_frame::bytes_below_hard_fp): New
16006         field.
16007         * config/aarch64/aarch64.cc (aarch64_layout_frame): Initialize it.
16008         (aarch64_expand_epilogue): Use it instead of
16009         below_hard_fp_saved_regs_size.
16011 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
16013         * config/aarch64/aarch64.h (aarch64_frame::bytes_below_saved_regs): New
16014         field.
16015         * config/aarch64/aarch64.cc (aarch64_layout_frame): Initialize it,
16016         and use it instead of crtl->outgoing_args_size.
16017         (aarch64_get_separate_components): Use bytes_below_saved_regs instead
16018         of outgoing_args_size.
16019         (aarch64_process_components): Likewise.
16021 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
16023         * config/aarch64/aarch64.cc (aarch64_layout_frame): Explicitly
16024         allocate the frame in one go if there are no saved registers.
16026 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
16028         * config/aarch64/aarch64.cc (aarch64_expand_prologue): Use
16029         chain_offset rather than callee_offset.
16031 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
16033         * config/aarch64/aarch64.cc (aarch64_save_callee_saves): Use
16034         a local shorthand for cfun->machine->frame.
16035         (aarch64_restore_callee_saves, aarch64_get_separate_components):
16036         (aarch64_process_components): Likewise.
16037         (aarch64_allocate_and_probe_stack_space): Likewise.
16038         (aarch64_expand_prologue, aarch64_expand_epilogue): Likewise.
16039         (aarch64_layout_frame): Use existing shorthand for one more case.
16041 2023-09-12  Andrew Pinski  <apinski@marvell.com>
16043         PR tree-optimization/107881
16044         * match.pd (`(a CMP1 b) ^ (a CMP2 b)`): New pattern.
16045         (`(a CMP1 b) == (a CMP2 b)`): New pattern.
16047 2023-09-12  Pan Li  <pan2.li@intel.com>
16049         * config/riscv/riscv-vector-costs.h (struct range): Removed.
16051 2023-09-12  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
16053         * config/riscv/riscv-vector-costs.cc (get_last_live_range): New function.
16054         (compute_nregs_for_mode): Ditto.
16055         (live_range_conflict_p): Ditto.
16056         (max_number_of_live_regs): Ditto.
16057         (compute_lmul): Ditto.
16058         (costs::prefer_new_lmul_p): Ditto.
16059         (costs::better_main_loop_than_p): Ditto.
16060         * config/riscv/riscv-vector-costs.h (struct stmt_point): New struct.
16061         (struct var_live_range): Ditto.
16062         (struct autovec_info): Ditto.
16063         * config/riscv/t-riscv: Update makefile for COST model.
16065 2023-09-12  Jakub Jelinek  <jakub@redhat.com>
16067         * fold-const.cc (range_check_type): Handle BITINT_TYPE like
16068         OFFSET_TYPE.
16070 2023-09-12  Jakub Jelinek  <jakub@redhat.com>
16072         PR middle-end/111338
16073         * tree-ssa-sccvn.cc (struct vn_walk_cb_data): Add bufsize non-static
16074         data member.
16075         (vn_walk_cb_data::push_partial_def): Remove bufsize variable.
16076         (visit_nary_op): Avoid the BIT_AND_EXPR with constant rhs2
16077         optimization if type's precision is too large for
16078         vn_walk_cb_data::bufsize.
16080 2023-09-12  Gaius Mulley  <gaiusmod2@gmail.com>
16082         * doc/gm2.texi (Compiler options): Document new option
16083         -Wcase-enum.
16085 2023-09-12  Thomas Schwinge  <thomas@codesourcery.com>
16087         * doc/sourcebuild.texi (stack_size): Update.
16089 2023-09-12  Christoph Müllner  <christoph.muellner@vrull.eu>
16091         * config/riscv/bitmanip.md (*<optab>_not<mode>): Export INSN name.
16092         (<optab>_not<mode>3): Likewise.
16093         * config/riscv/riscv-protos.h (riscv_expand_strcmp): New
16094         prototype.
16095         * config/riscv/riscv-string.cc (GEN_EMIT_HELPER3): New helper
16096         macros.
16097         (GEN_EMIT_HELPER2): Likewise.
16098         (emit_strcmp_scalar_compare_byte): New function.
16099         (emit_strcmp_scalar_compare_subword): Likewise.
16100         (emit_strcmp_scalar_compare_word): Likewise.
16101         (emit_strcmp_scalar_load_and_compare): Likewise.
16102         (emit_strcmp_scalar_call_to_libc): Likewise.
16103         (emit_strcmp_scalar_result_calculation_nonul): Likewise.
16104         (emit_strcmp_scalar_result_calculation): Likewise.
16105         (riscv_expand_strcmp_scalar): Likewise.
16106         (riscv_expand_strcmp): Likewise.
16107         * config/riscv/riscv.md (*slt<u>_<X:mode><GPR:mode>): Export
16108         INSN name.
16109         (@slt<u>_<X:mode><GPR:mode>3): Likewise.
16110         (cmpstrnsi): Invoke expansion function for str(n)cmp.
16111         (cmpstrsi): Likewise.
16112         * config/riscv/riscv.opt: Add new parameter
16113         '-mstring-compare-inline-limit'.
16114         * doc/invoke.texi: Document new parameter
16115         '-mstring-compare-inline-limit'.
16117 2023-09-12  Christoph Müllner  <christoph.muellner@vrull.eu>
16119         * config.gcc: Add new object riscv-string.o.
16120         riscv-string.cc.
16121         * config/riscv/riscv-protos.h (riscv_expand_strlen):
16122         New function.
16123         * config/riscv/riscv.md (strlen<mode>): New expand INSN.
16124         * config/riscv/riscv.opt: New flag 'minline-strlen'.
16125         * config/riscv/t-riscv: Add new object riscv-string.o.
16126         * config/riscv/thead.md (th_rev<mode>2): Export INSN name.
16127         (th_rev<mode>2): Likewise.
16128         (th_tstnbz<mode>2): New INSN.
16129         * doc/invoke.texi: Document '-minline-strlen'.
16130         * emit-rtl.cc (emit_likely_jump_insn): New helper function.
16131         (emit_unlikely_jump_insn): Likewise.
16132         * rtl.h (emit_likely_jump_insn): New prototype.
16133         (emit_unlikely_jump_insn): Likewise.
16134         * config/riscv/riscv-string.cc: New file.
16136 2023-09-12  Thomas Schwinge  <thomas@codesourcery.com>
16138         * config/nvptx/nvptx.h (TARGET_USE_LOCAL_THUNK_ALIAS_P)
16139         (TARGET_SUPPORTS_ALIASES): Define.
16141 2023-09-12  Thomas Schwinge  <thomas@codesourcery.com>
16143         * doc/sourcebuild.texi (check-function-bodies): Update.
16145 2023-09-12  Tobias Burnus  <tobias@codesourcery.com>
16147         * gimplify.cc (gimplify_bind_expr): Check for
16148         insertion after variable cleanup.  Convert 'omp allocate'
16149         var-decl attribute to GOMP_alloc/GOMP_free calls.
16151 2023-09-12  xuli  <xuli1@eswincomputing.com>
16153         * config/riscv/riscv-vector-builtins-bases.cc: remove unused
16154                 parameter e and replace NULL_RTX with gcc_unreachable.
16156 2023-09-12  xuli  <xuli1@eswincomputing.com>
16158         * config/riscv/riscv-vector-builtins-bases.cc (class vcreate): New class.
16159         (BASE): Ditto.
16160         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
16161         * config/riscv/riscv-vector-builtins-functions.def (vcreate): Add vcreate support.
16162         * config/riscv/riscv-vector-builtins-shapes.cc (struct vcreate_def): Ditto.
16163         (SHAPE): Ditto.
16164         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
16165         * config/riscv/riscv-vector-builtins.cc: Add args type.
16167 2023-09-12  Fei Gao  <gaofei@eswincomputing.com>
16169         * config/riscv/riscv.cc
16170         (riscv_avoid_shrink_wrapping_separate): wrap the condition check in
16171         riscv_avoid_shrink_wrapping_separate.
16172         (riscv_avoid_multi_push):avoid multi push if shrink_wrapping_separate
16173         is active.
16174         (riscv_get_separate_components):call riscv_avoid_shrink_wrapping_separate
16176 2023-09-12  Fei Gao  <gaofei@eswincomputing.com>
16178         * shrink-wrap.cc (try_shrink_wrapping_separate):call
16179         use_shrink_wrapping_separate.
16180         (use_shrink_wrapping_separate): wrap the condition
16181         check in use_shrink_wrapping_separate.
16182         * shrink-wrap.h (use_shrink_wrapping_separate): add to extern
16184 2023-09-11  Andrew Pinski  <apinski@marvell.com>
16186         PR tree-optimization/111348
16187         * match.pd (`(a CMP b) ? minmax<a, c> : minmax<b, c>`): Add :c on
16188         the cmp part of the pattern.
16190 2023-09-11  Uros Bizjak  <ubizjak@gmail.com>
16192         PR target/111340
16193         * config/i386/i386.cc (output_pic_addr_const): Handle CONST_WIDE_INT.
16194         Call output_addr_const for CASE_CONST_SCALAR_INT.
16196 2023-09-11  Edwin Lu  <ewlu@rivosinc.com>
16198         * config/riscv/thead.md: Update types
16200 2023-09-11  Edwin Lu  <ewlu@rivosinc.com>
16202         * config/riscv/riscv.md: Update types
16204 2023-09-11  Edwin Lu  <ewlu@rivosinc.com>
16206         * config/riscv/riscv.md: Add "zicond" type
16207         * config/riscv/zicond.md: Update types
16209 2023-09-11  Edwin Lu  <ewlu@rivosinc.com>
16211         * config/riscv/riscv.md: Add "pushpop" and "mvpair" types
16212         * config/riscv/zc.md: Update types
16214 2023-09-11  Edwin Lu  <ewlu@rivosinc.com>
16216         * config/riscv/autovec-opt.md: Update types
16217         * config/riscv/autovec.md: likewise
16219 2023-09-11  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
16221         * config/s390/s390-builtins.def (s390_vec_signed_flt): Fix
16222         builtin flag.
16223         (s390_vec_unsigned_flt): Ditto.
16224         (s390_vec_revb_flt): Ditto.
16225         (s390_vec_reve_flt): Ditto.
16226         (s390_vclfnhs): Fix operand flags.
16227         (s390_vclfnls): Ditto.
16228         (s390_vcrnfs): Ditto.
16229         (s390_vcfn): Ditto.
16230         (s390_vcnf): Ditto.
16232 2023-09-11  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
16234         * config/s390/s390-builtins.def (O_U64): New.
16235         (O1_U64): Ditto.
16236         (O2_U64): Ditto.
16237         (O3_U64): Ditto.
16238         (O4_U64): Ditto.
16239         (O_M12): Change bit position.
16240         (O_S2): Ditto.
16241         (O_S3): Ditto.
16242         (O_S4): Ditto.
16243         (O_S5): Ditto.
16244         (O_S8): Ditto.
16245         (O_S12): Ditto.
16246         (O_S16): Ditto.
16247         (O_S32): Ditto.
16248         (O_ELEM): Ditto.
16249         (O_LIT): Ditto.
16250         (OB_DEF_VAR): Add operand constraints.
16251         (B_DEF): Ditto.
16252         * config/s390/s390.cc (s390_const_operand_ok): Honour 64 bit
16253         operands.
16255 2023-09-11  Andrew Pinski  <apinski@marvell.com>
16257         PR tree-optimization/111349
16258         * match.pd (`(a CMP CST1) ? max<a,CST2> : a`): Add :c on
16259         the cmp part of the pattern.
16261 2023-09-11  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
16263         PR target/111311
16264         * config/riscv/riscv.opt: Set default as scalable vectorization.
16266 2023-09-11  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
16268         * config/riscv/riscv-protos.h (get_all_predecessors): Remove.
16269         (get_all_successors): Ditto.
16270         * config/riscv/riscv-v.cc (get_all_predecessors): Ditto.
16271         (get_all_successors): Ditto.
16273 2023-09-11  Jakub Jelinek  <jakub@redhat.com>
16275         PR middle-end/111329
16276         * pretty-print.h (pp_wide_int): Rewrite from macro into inline
16277         function.  For printing values which don't fit into digit_buffer
16278         use out-of-line function.
16279         * wide-int-print.h (pp_wide_int_large): Declare.
16280         * wide-int-print.cc: Include pretty-print.h.
16281         (pp_wide_int_large): Define.
16283 2023-09-11  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
16285         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::global_eliminate_vsetvl_insn):
16286         Use dominance analysis.
16287         (pass_vsetvl::init): Ditto.
16288         (pass_vsetvl::done): Ditto.
16290 2023-09-11  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
16292         PR target/111311
16293         * config/riscv/autovec.md: Add VLS modes.
16294         * config/riscv/riscv-protos.h (cmp_lmul_le_one): New function.
16295         (cmp_lmul_gt_one): Ditto.
16296         * config/riscv/riscv-v.cc (cmp_lmul_le_one): Ditto.
16297         (cmp_lmul_gt_one): Ditto.
16298         * config/riscv/riscv.cc (riscv_print_operand): Add VLS modes.
16299         (riscv_vectorize_vec_perm_const): Ditto.
16300         * config/riscv/vector-iterators.md: Ditto.
16301         * config/riscv/vector.md: Ditto.
16303 2023-09-11  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
16305         * config/riscv/autovec-vls.md (*mov<mode>_vls): New pattern.
16306         * config/riscv/vector-iterators.md: New iterator
16308 2023-09-11  Andrew Pinski  <apinski@marvell.com>
16310         PR tree-optimization/111346
16311         * match.pd (`X CMP MINMAX`): Add `:c` on the cmp part
16312         of the pattern
16314 2023-09-11  liuhongt  <hongtao.liu@intel.com>
16316         PR target/111306
16317         PR target/111335
16318         * config/i386/sse.md (int_comm): New int_attr.
16319         (fma_<complexopname>_<mode><sdc_maskz_name><round_name>):
16320         Remove % for Complex conjugate operations since they're not
16321         commutative.
16322         (fma_<complexpairopname>_<mode>_pair): Ditto.
16323         (<avx512>_<complexopname>_<mode>_mask<round_name>): Ditto.
16324         (cmul<conj_op><mode>3): Ditto.
16326 2023-09-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
16328         * config/riscv/riscv-v.cc (shuffle_generic_patterns): Expand
16329         fixed-vlmax/vls vector permutation.
16331 2023-09-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
16333         * config/riscv/riscv-v.cc (shuffle_compress_patterns): Avoid unnecessary slideup.
16335 2023-09-10  Andrew Pinski  <apinski@marvell.com>
16337         PR tree-optimization/111331
16338         * match.pd (`(a CMP CST1) ? max<a,CST2> : a`):
16339         Fix the LE/GE comparison to the correct value.
16340         * tree-ssa-phiopt.cc (minmax_replacement):
16341         Fix the LE/GE comparison for the
16342         `(a CMP CST1) ? max<a,CST2> : a` optimization.
16344 2023-09-10  Iain Sandoe  <iain@sandoe.co.uk>
16346         * config/darwin.cc (darwin_function_section): Place unlikely
16347         executed global init code into the standard cold section.
16349 2023-09-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
16351         PR target/111311
16352         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::vsetvl_fusion): Add TDF_DETAILS.
16353         (pass_vsetvl::pre_vsetvl): Ditto.
16354         (pass_vsetvl::init): Ditto.
16355         (pass_vsetvl::lazy_vsetvl): Ditto.
16357 2023-09-09  Lulu Cheng  <chenglulu@loongson.cn>
16359         * config/loongarch/loongarch.md (mulsidi3_64bit):
16360         Field unsigned extension support.
16361         (<u>muldi3_highpart): Modify template name.
16362         (<u>mulsi3_highpart): Likewise.
16363         (<u>mulsidi3_64bit): Field unsigned extension support.
16364         (<su>muldi3_highpart): Modify muldi3_highpart to
16365         smuldi3_highpart.
16366         (<su>mulsi3_highpart): Modify mulsi3_highpart to
16367         smulsi3_highpart.
16369 2023-09-09  Xi Ruoyao  <xry111@xry111.site>
16371         * config/loongarch/loongarch.cc (loongarch_block_move_straight):
16372         Check precondition (delta must be a power of 2) and use
16373         popcount_hwi instead of a homebrew loop.
16375 2023-09-09  Xi Ruoyao  <xry111@xry111.site>
16377         * config/loongarch/loongarch.h (LARCH_MAX_MOVE_PER_INSN):
16378         Define to the maximum amount of bytes able to be loaded or
16379         stored with one machine instruction.
16380         * config/loongarch/loongarch.cc (loongarch_mode_for_move_size):
16381         New static function.
16382         (loongarch_block_move_straight): Call
16383         loongarch_mode_for_move_size for machine_mode to be moved.
16384         (loongarch_expand_block_move): Use LARCH_MAX_MOVE_PER_INSN
16385         instead of UNITS_PER_WORD.
16387 2023-09-09  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
16389         * config/riscv/vector-iterators.md: Fix floating-point operations predicate.
16391 2023-09-09  Lehua Ding  <lehua.ding@rivai.ai>
16393         * fold-const.cc (can_min_p): New function.
16394         (poly_int_binop): Try fold MIN_EXPR.
16396 2023-09-08  Aldy Hernandez  <aldyh@redhat.com>
16398         * range-op-float.cc (foperator_ltgt::fold_range): Do not special
16399         case VREL_EQ nor call frelop_early_resolve.
16401 2023-09-08  Christoph Müllner  <christoph.muellner@vrull.eu>
16403         * config/riscv/thead.md (*extend<SHORT:mode><SUPERQI:mode>2_th_ext):
16404         Remove broken INSN.
16405         (*extendhi<SUPERQI:mode>2_th_ext): New INSN.
16406         (*extendqi<SUPERQI:mode>2_th_ext): New INSN.
16408 2023-09-08  Christoph Müllner  <christoph.muellner@vrull.eu>
16410         * config/riscv/thead.md: Use more appropriate mode attributes
16411         for extensions.
16413 2023-09-08  Guo Jie  <guojie@loongson.cn>
16415         * common/config/loongarch/loongarch-common.cc:
16416         (default_options loongarch_option_optimization_table):
16417         Default to -fsched-pressure.
16419 2023-09-08  Yang Yujie  <yangyujie@loongson.cn>
16421         * config.gcc: remove non-POSIX syntax "<<<".
16423 2023-09-08  Christoph Müllner  <christoph.muellner@vrull.eu>
16425         * config/riscv/bitmanip.md (*extend<SHORT:mode><SUPERQI:mode>2_zbb):
16426         Rename postfix to _bitmanip.
16427         (*extend<SHORT:mode><SUPERQI:mode>2_bitmanip): Renamed pattern.
16428         (*zero_extendhi<GPR:mode>2_zbb): Remove duplicated pattern.
16430 2023-09-08  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
16432         * config/riscv/riscv.cc (riscv_pass_in_vector_p): Only allow RVV type.
16434 2023-09-08  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
16436         * config/riscv/riscv.cc (riscv_hard_regno_nregs): Fix bug.
16438 2023-09-07  liuhongt  <hongtao.liu@intel.com>
16440         * config/i386/sse.md
16441         (<avx512>_vpermt2var<mode>3<sd_maskz_name>): New define_insn.
16442         (VHFBF_AVX512VL): New mode iterator.
16443         (VI2HFBF_AVX512VL): New mode iterator.
16445 2023-09-07  Aldy Hernandez  <aldyh@redhat.com>
16447         * value-range.h (contains_zero_p): Return false for undefined ranges.
16448         * range-op-float.cc (operator_gt::op1_op2_relation): Adjust for
16449         contains_zero_p change above.
16450         (operator_ge::op1_op2_relation): Same.
16451         (operator_equal::op1_op2_relation): Same.
16452         (operator_not_equal::op1_op2_relation): Same.
16453         (operator_lt::op1_op2_relation): Same.
16454         (operator_le::op1_op2_relation): Same.
16455         (operator_ge::op1_op2_relation): Same.
16456         * range-op.cc (operator_equal::op1_op2_relation): Same.
16457         (operator_not_equal::op1_op2_relation): Same.
16458         (operator_lt::op1_op2_relation): Same.
16459         (operator_le::op1_op2_relation): Same.
16460         (operator_cast::op1_range): Same.
16461         (set_nonzero_range_from_mask): Same.
16462         (operator_bitwise_xor::op1_range): Same.
16463         (operator_addr_expr::fold_range): Same.
16464         (operator_addr_expr::op1_range): Same.
16466 2023-09-07  Andrew MacLeod  <amacleod@redhat.com>
16468         PR tree-optimization/110875
16469         * gimple-range.cc (gimple_ranger::prefill_name): Only invoke
16470         cache-prefilling routine when the ssa-name has no global value.
16472 2023-09-07  Vladimir N. Makarov  <vmakarov@redhat.com>
16474         PR target/111225
16475         * lra-constraints.cc (goal_reuse_alt_p): New global flag.
16476         (process_alt_operands): Set up the flag.  Clear flag for chosen
16477         alternative with special memory constraints.
16478         (process_alt_operands): Set up used insn alternative depending on the flag.
16480 2023-09-07  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
16482         * config/riscv/autovec-vls.md: Add VLS mask modes mov patterns.
16483         * config/riscv/riscv.md: Ditto.
16484         * config/riscv/vector-iterators.md: Ditto.
16485         * config/riscv/vector.md: Ditto.
16487 2023-09-07  David Malcolm  <dmalcolm@redhat.com>
16489         * diagnostic-core.h (error_meta): New decl.
16490         * diagnostic.cc (error_meta): New.
16492 2023-09-07  Jakub Jelinek  <jakub@redhat.com>
16494         PR c/102989
16495         * expr.cc (expand_expr_real_1): Don't call targetm.c.bitint_type_info
16496         inside gcc_assert, as later code relies on it filling info variable.
16497         * gimple-fold.cc (clear_padding_bitint_needs_padding_p,
16498         clear_padding_type): Likewise.
16499         * varasm.cc (output_constant): Likewise.
16500         * fold-const.cc (native_encode_int, native_interpret_int): Likewise.
16501         * stor-layout.cc (finish_bitfield_representative, layout_type):
16502         Likewise.
16503         * gimple-lower-bitint.cc (bitint_precision_kind): Likewise.
16505 2023-09-07  Xi Ruoyao  <xry111@xry111.site>
16507         PR target/111252
16508         * config/loongarch/loongarch-protos.h
16509         (loongarch_pre_reload_split): Declare new function.
16510         (loongarch_use_bstrins_for_ior_with_mask): Likewise.
16511         * config/loongarch/loongarch.cc
16512         (loongarch_pre_reload_split): Implement.
16513         (loongarch_use_bstrins_for_ior_with_mask): Likewise.
16514         * config/loongarch/predicates.md (ins_zero_bitmask_operand):
16515         New predicate.
16516         * config/loongarch/loongarch.md (bstrins_<mode>_for_mask):
16517         New define_insn_and_split.
16518         (bstrins_<mode>_for_ior_mask): Likewise.
16519         (define_peephole2): Further optimize code sequence produced by
16520         bstrins_<mode>_for_ior_mask if possible.
16522 2023-09-07  Richard Sandiford  <richard.sandiford@arm.com>
16524         * lra-eliminations.cc (lra_eliminate_regs_1): Use simplify_gen_binary
16525         rather than gen_rtx_PLUS.
16527 2023-09-07  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
16529         PR target/111313
16530         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::cleanup_earliest_vsetvls): Remove.
16531         (pass_vsetvl::df_post_optimization): Remove incorrect function.
16533 2023-09-07  Tsukasa OI  <research_trasio@irq.a4lg.com>
16535         * common/config/riscv/riscv-common.cc (riscv_ext_flag_table):
16536         Parse 'XVentanaCondOps' extension.
16537         * config/riscv/riscv-opts.h (MASK_XVENTANACONDOPS): New.
16538         (TARGET_XVENTANACONDOPS): Ditto.
16539         (TARGET_ZICOND_LIKE): New to represent targets with conditional
16540         moves like 'Zicond'.  It includes RV64 + 'XVentanaCondOps'.
16541         * config/riscv/riscv.cc (riscv_rtx_costs): Replace TARGET_ZICOND
16542         with TARGET_ZICOND_LIKE.
16543         (riscv_expand_conditional_move): Ditto.
16544         * config/riscv/riscv.md (mov<mode>cc): Replace TARGET_ZICOND with
16545         TARGET_ZICOND_LIKE.
16546         * config/riscv/riscv.opt: Add new riscv_xventana_subext.
16547         * config/riscv/zicond.md: Modify description.
16548         (eqz_ventana): New to match corresponding czero instructions.
16549         (nez_ventana): Ditto.
16550         (*czero.<eqz>.<GPR><X>): Emit a 'XVentanaCondOps' instruction if
16551         'Zicond' is not available but 'XVentanaCondOps' + RV64 is.
16552         (*czero.<eqz>.<GPR><X>): Ditto.
16553         (*czero.eqz.<GPR><X>.opt1): Ditto.
16554         (*czero.nez.<GPR><X>.opt2): Ditto.
16556 2023-09-06  Ian Lance Taylor  <iant@golang.org>
16558         PR go/111310
16559         * godump.cc (go_format_type): Handle BITINT_TYPE.
16561 2023-09-06  Jakub Jelinek  <jakub@redhat.com>
16563         PR c/102989
16564         * tree.cc (build_one_cst, build_minus_one_cst): Handle BITINT_TYPE
16565         like INTEGER_TYPE.
16567 2023-09-06  Jakub Jelinek  <jakub@redhat.com>
16569         PR c/102989
16570         * gimple-lower-bitint.cc (bitint_large_huge::if_then_else,
16571         bitint_large_huge::if_then_if_then_else): Use make_single_succ_edge
16572         rather than make_edge, initialize bb->count.
16574 2023-09-06  Jakub Jelinek  <jakub@redhat.com>
16576         PR c/102989
16577         * doc/libgcc.texi (Bit-precise integer arithmetic functions):
16578         Document general rules for _BitInt support library functions
16579         and document __mulbitint3 and __divmodbitint4.
16580         (Conversion functions): Document __fix{s,d,x,t}fbitint,
16581         __floatbitint{s,d,x,t,h,b}f, __bid_fix{s,d,t}dbitint and
16582         __bid_floatbitint{s,d,t}d.
16584 2023-09-06  Jakub Jelinek  <jakub@redhat.com>
16586         PR c/102989
16587         * glimits.h (BITINT_MAXWIDTH): Define if __BITINT_MAXWIDTH__ is
16588         predefined.
16590 2023-09-06  Jakub Jelinek  <jakub@redhat.com>
16592         PR c/102989
16593         * internal-fn.cc (expand_ubsan_result_store): Add LHS, MODE and
16594         DO_ERROR arguments.  For non-mode precision BITINT_TYPE results
16595         check if all padding bits up to mode precision are zeros or sign
16596         bit copies and if not, jump to DO_ERROR.
16597         (expand_addsub_overflow, expand_neg_overflow, expand_mul_overflow):
16598         Adjust expand_ubsan_result_store callers.
16599         * ubsan.cc: Include target.h and langhooks.h.
16600         (ubsan_encode_value): Pass BITINT_TYPE values which fit into pointer
16601         size converted to pointer sized integer, pass BITINT_TYPE values
16602         which fit into TImode (if supported) or DImode as those integer types
16603         or otherwise for now punt (pass 0).
16604         (ubsan_type_descriptor): Handle BITINT_TYPE.  For pstyle of
16605         UBSAN_PRINT_FORCE_INT use TK_Integer (0x0000) mode with a
16606         TImode/DImode precision rather than TK_Unknown used otherwise for
16607         large/huge BITINT_TYPEs.
16608         (instrument_si_overflow): Instrument BITINT_TYPE operations even when
16609         they don't have mode precision.
16610         * ubsan.h (enum ubsan_print_style): New enumerator.
16612 2023-09-06  Jakub Jelinek  <jakub@redhat.com>
16614         PR c/102989
16615         * config/i386/i386.cc (classify_argument): Handle BITINT_TYPE.
16616         (ix86_bitint_type_info): New function.
16617         (TARGET_C_BITINT_TYPE_INFO): Redefine.
16619 2023-09-06  Jakub Jelinek  <jakub@redhat.com>
16621         PR c/102989
16622         * Makefile.in (OBJS): Add gimple-lower-bitint.o.
16623         * passes.def: Add pass_lower_bitint after pass_lower_complex and
16624         pass_lower_bitint_O0 after pass_lower_complex_O0.
16625         * tree-pass.h (PROP_gimple_lbitint): Define.
16626         (make_pass_lower_bitint_O0, make_pass_lower_bitint): Declare.
16627         * gimple-lower-bitint.h: New file.
16628         * tree-ssa-live.h (struct _var_map): Add bitint member.
16629         (init_var_map): Adjust declaration.
16630         (region_contains_p): Handle map->bitint like map->outofssa_p.
16631         * tree-ssa-live.cc (init_var_map): Add BITINT argument, initialize
16632         map->bitint and set map->outofssa_p to false if it is non-NULL.
16633         * tree-ssa-coalesce.cc: Include gimple-lower-bitint.h.
16634         (build_ssa_conflict_graph): Call build_bitint_stmt_ssa_conflicts if
16635         map->bitint.
16636         (create_coalesce_list_for_region): For map->bitint ignore SSA_NAMEs
16637         not in that bitmap, and allow res without default def.
16638         (compute_optimized_partition_bases): In map->bitint mode try hard to
16639         coalesce any SSA_NAMEs with the same size.
16640         (coalesce_bitint): New function.
16641         (coalesce_ssa_name): In map->bitint mode, or map->bitmap into
16642         used_in_copies and call coalesce_bitint.
16643         * gimple-lower-bitint.cc: New file.
16645 2023-09-06  Jakub Jelinek  <jakub@redhat.com>
16647         PR c/102989
16648         * tree.def (BITINT_TYPE): New type.
16649         * tree.h (TREE_CHECK6, TREE_NOT_CHECK6): Define.
16650         (NUMERICAL_TYPE_CHECK, INTEGRAL_TYPE_P): Include
16651         BITINT_TYPE.
16652         (BITINT_TYPE_P): Define.
16653         (CONSTRUCTOR_BITFIELD_P): Return true even for BLKmode bit-fields if
16654         they have BITINT_TYPE type.
16655         (tree_check6, tree_not_check6): New inline functions.
16656         (any_integral_type_check): Include BITINT_TYPE.
16657         (build_bitint_type): Declare.
16658         * tree.cc (tree_code_size, wide_int_to_tree_1, cache_integer_cst,
16659         build_zero_cst, type_hash_canon_hash, type_cache_hasher::equal,
16660         type_hash_canon): Handle BITINT_TYPE.
16661         (bitint_type_cache): New variable.
16662         (build_bitint_type): New function.
16663         (signed_or_unsigned_type_for, verify_type_variant, verify_type):
16664         Handle BITINT_TYPE.
16665         (tree_cc_finalize): Free bitint_type_cache.
16666         * builtins.cc (type_to_class): Handle BITINT_TYPE.
16667         (fold_builtin_unordered_cmp): Handle BITINT_TYPE like INTEGER_TYPE.
16668         * cfgexpand.cc (expand_debug_expr): Punt on BLKmode BITINT_TYPE
16669         INTEGER_CSTs.
16670         * convert.cc (convert_to_pointer_1, convert_to_real_1,
16671         convert_to_complex_1): Handle BITINT_TYPE like INTEGER_TYPE.
16672         (convert_to_integer_1): Likewise.  For BITINT_TYPE don't check
16673         GET_MODE_PRECISION (TYPE_MODE (type)).
16674         * doc/generic.texi (BITINT_TYPE): Document.
16675         * doc/tm.texi.in (TARGET_C_BITINT_TYPE_INFO): New.
16676         * doc/tm.texi: Regenerated.
16677         * dwarf2out.cc (base_type_die, is_base_type, modified_type_die,
16678         gen_type_die_with_usage): Handle BITINT_TYPE.
16679         (rtl_for_decl_init): Punt on BLKmode BITINT_TYPE INTEGER_CSTs or
16680         handle those which fit into shwi.
16681         * expr.cc (expand_expr_real_1): Define EXTEND_BITINT macro, reduce
16682         to bitfield precision reads from BITINT_TYPE vars, parameters or
16683         memory locations.  Expand large/huge BITINT_TYPE INTEGER_CSTs into
16684         memory.
16685         * fold-const.cc (fold_convert_loc, make_range_step): Handle
16686         BITINT_TYPE.
16687         (extract_muldiv_1): For BITINT_TYPE use TYPE_PRECISION rather than
16688         GET_MODE_SIZE (SCALAR_INT_TYPE_MODE).
16689         (native_encode_int, native_interpret_int, native_interpret_expr):
16690         Handle BITINT_TYPE.
16691         * gimple-expr.cc (useless_type_conversion_p): Make BITINT_TYPE
16692         to some other integral type or vice versa conversions non-useless.
16693         * gimple-fold.cc (gimple_fold_builtin_memset): Punt for BITINT_TYPE.
16694         (clear_padding_unit): Mention in comment that _BitInt types don't need
16695         to fit either.
16696         (clear_padding_bitint_needs_padding_p): New function.
16697         (clear_padding_type_may_have_padding_p): Handle BITINT_TYPE.
16698         (clear_padding_type): Likewise.
16699         * internal-fn.cc (expand_mul_overflow): For unsigned non-mode
16700         precision operands force pos_neg? to 1.
16701         (expand_MULBITINT, expand_DIVMODBITINT, expand_FLOATTOBITINT,
16702         expand_BITINTTOFLOAT): New functions.
16703         * internal-fn.def (MULBITINT, DIVMODBITINT, FLOATTOBITINT,
16704         BITINTTOFLOAT): New internal functions.
16705         * internal-fn.h (expand_MULBITINT, expand_DIVMODBITINT,
16706         expand_FLOATTOBITINT, expand_BITINTTOFLOAT): Declare.
16707         * match.pd (non-equality compare simplifications from fold_binary):
16708         Punt if TYPE_MODE (arg1_type) is BLKmode.
16709         * pretty-print.h (pp_wide_int): Handle printing of large precision
16710         wide_ints which would buffer overflow digit_buffer.
16711         * stor-layout.cc (finish_bitfield_representative): For bit-fields
16712         with BITINT_TYPE, prefer representatives with precisions in
16713         multiple of limb precision.
16714         (layout_type): Handle BITINT_TYPE.  Handle COMPLEX_TYPE with BLKmode
16715         element type and assert it is BITINT_TYPE.
16716         * target.def (bitint_type_info): New C target hook.
16717         * target.h (struct bitint_info): New type.
16718         * targhooks.cc (default_bitint_type_info): New function.
16719         * targhooks.h (default_bitint_type_info): Declare.
16720         * tree-pretty-print.cc (dump_generic_node): Handle BITINT_TYPE.
16721         Handle printing large wide_ints which would buffer overflow
16722         digit_buffer.
16723         * tree-ssa-sccvn.cc: Include target.h.
16724         (eliminate_dom_walker::eliminate_stmt): Punt for large/huge
16725         BITINT_TYPE.
16726         * tree-switch-conversion.cc (jump_table_cluster::emit): For more than
16727         64-bit BITINT_TYPE subtract low bound from expression and cast to
16728         64-bit integer type both the controlling expression and case labels.
16729         * typeclass.h (enum type_class): Add bitint_type_class enumerator.
16730         * varasm.cc (output_constant): Handle BITINT_TYPE INTEGER_CSTs.
16731         * vr-values.cc (check_for_binary_op_overflow): Use widest2_int rather
16732         than widest_int.
16733         (simplify_using_ranges::simplify_internal_call_using_ranges): Use
16734         unsigned_type_for rather than build_nonstandard_integer_type.
16736 2023-09-06  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
16738         PR target/111296
16739         * config/riscv/riscv.cc (riscv_modes_tieable_p): Fix incorrect mode
16740         tieable for RVV modes.
16742 2023-09-06  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
16744         PR target/111295
16745         * config/riscv/riscv-vsetvl.cc (insert_vsetvl): Bug fix.
16747 2023-09-06  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
16749         * config/riscv/riscv-vector-switch.def (VLS_ENTRY): Remove TARGET_64BIT
16751 2023-09-06  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
16753         * config/xtensa/xtensa.cc (xtensa_expand_scc):
16754         Add code for particular constants (only 0 and INT_MIN for now)
16755         for EQ/NE boolean evaluation in SImode.
16756         * config/xtensa/xtensa.md (*eqne_INT_MIN): Remove because its
16757         implementation has been integrated into the above.
16759 2023-09-06  Lehua Ding  <lehua.ding@rivai.ai>
16761         PR target/111232
16762         * config/riscv/autovec-opt.md (@pred_single_widen_mul<any_extend:su><mode>):
16763         Delete.
16764         (*pred_widen_mulsu<mode>): Delete.
16765         (*pred_single_widen_mul<mode>): Delete.
16766         (*dual_widen_<any_widen_binop:optab><any_extend:su><mode>):
16767         Add new combine patterns.
16768         (*single_widen_sub<any_extend:su><mode>): Ditto.
16769         (*single_widen_add<any_extend:su><mode>): Ditto.
16770         (*single_widen_mult<any_extend:su><mode>): Ditto.
16771         (*dual_widen_mulsu<mode>): Ditto.
16772         (*dual_widen_mulus<mode>): Ditto.
16773         (*dual_widen_<optab><mode>): Ditto.
16774         (*single_widen_add<mode>): Ditto.
16775         (*single_widen_sub<mode>): Ditto.
16776         (*single_widen_mult<mode>): Ditto.
16777         * config/riscv/autovec.md (<optab><mode>3):
16778         Change define_expand to define_insn_and_split.
16779         (<optab><mode>2): Ditto.
16780         (abs<mode>2): Ditto.
16781         (smul<mode>3_highpart): Ditto.
16782         (umul<mode>3_highpart): Ditto.
16784 2023-09-06  Lehua Ding  <lehua.ding@rivai.ai>
16786         * config/riscv/riscv-protos.h (riscv_declare_function_name): Add protos.
16787         (riscv_asm_output_alias): Ditto.
16788         (riscv_asm_output_external): Ditto.
16789         * config/riscv/riscv.cc (riscv_asm_output_variant_cc):
16790         Output .variant_cc directive for vector function.
16791         (riscv_declare_function_name): Ditto.
16792         (riscv_asm_output_alias): Ditto.
16793         (riscv_asm_output_external): Ditto.
16794         * config/riscv/riscv.h (ASM_DECLARE_FUNCTION_NAME):
16795         Implement ASM_DECLARE_FUNCTION_NAME.
16796         (ASM_OUTPUT_DEF_FROM_DECLS): Implement ASM_OUTPUT_DEF_FROM_DECLS.
16797         (ASM_OUTPUT_EXTERNAL): Implement ASM_OUTPUT_EXTERNAL.
16799 2023-09-06  Lehua Ding  <lehua.ding@rivai.ai>
16801         * config/riscv/riscv-sr.cc (riscv_remove_unneeded_save_restore_calls): Pass riscv_cc.
16802         * config/riscv/riscv.cc (struct riscv_frame_info): Add new fileds.
16803         (riscv_frame_info::reset): Reset new fileds.
16804         (riscv_call_tls_get_addr): Pass riscv_cc.
16805         (riscv_function_arg): Return riscv_cc for call patterm.
16806         (get_riscv_cc): New function return riscv_cc from rtl call_insn.
16807         (riscv_insn_callee_abi): Implement TARGET_INSN_CALLEE_ABI.
16808         (riscv_save_reg_p): Add vector callee-saved check.
16809         (riscv_stack_align): Add vector save area comment.
16810         (riscv_compute_frame_info): Ditto.
16811         (riscv_restore_reg): Update for type change.
16812         (riscv_for_each_saved_v_reg): New function save vector registers.
16813         (riscv_first_stack_step): Handle funciton with vector callee-saved registers.
16814         (riscv_expand_prologue): Ditto.
16815         (riscv_expand_epilogue): Ditto.
16816         (riscv_output_mi_thunk): Pass riscv_cc.
16817         (TARGET_INSN_CALLEE_ABI): Implement TARGET_INSN_CALLEE_ABI.
16818         * config/riscv/riscv.h (get_riscv_cc): Export get_riscv_cc function.
16819         * config/riscv/riscv.md: Add CALLEE_CC operand for call pattern.
16821 2023-09-06  Lehua Ding  <lehua.ding@rivai.ai>
16823         * config/riscv/riscv-protos.h (builtin_type_p): New function for checking vector type.
16824         * config/riscv/riscv-vector-builtins.cc (builtin_type_p): Ditto.
16825         * config/riscv/riscv.cc (struct riscv_arg_info): New fields.
16826         (riscv_init_cumulative_args): Setup variant_cc field.
16827         (riscv_vector_type_p): New function for checking vector type.
16828         (riscv_hard_regno_nregs): Hoist declare.
16829         (riscv_get_vector_arg): Subroutine of riscv_get_arg_info.
16830         (riscv_get_arg_info): Support vector cc.
16831         (riscv_function_arg_advance): Update cum.
16832         (riscv_pass_by_reference): Handle vector args.
16833         (riscv_v_abi): New function return vector abi.
16834         (riscv_return_value_is_vector_type_p): New function for check vector arguments.
16835         (riscv_arguments_is_vector_type_p): New function for check vector returns.
16836         (riscv_fntype_abi): Implement TARGET_FNTYPE_ABI.
16837         (TARGET_FNTYPE_ABI): Implement TARGET_FNTYPE_ABI.
16838         * config/riscv/riscv.h (GCC_RISCV_H): Define macros for vector abi.
16839         (MAX_ARGS_IN_VECTOR_REGISTERS): Ditto.
16840         (MAX_ARGS_IN_MASK_REGISTERS): Ditto.
16841         (V_ARG_FIRST): Ditto.
16842         (V_ARG_LAST): Ditto.
16843         (enum riscv_cc): Define all RISCV_CC variants.
16844         * config/riscv/riscv.opt: Add --param=riscv-vector-abi.
16846 2023-09-06  Lehua Ding  <lehua.ding@rivai.ai>
16848         * config/riscv/autovec-opt.md (*cond_<optab><mode>):
16849         Add sqrt + vcond_mask combine pattern.
16850         * config/riscv/autovec.md (<optab><mode>2):
16851         Change define_expand to define_insn_and_split.
16853 2023-09-06  Jason Merrill  <jason@redhat.com>
16855         * common.opt: Update -fabi-version=19.
16857 2023-09-06  Tsukasa OI  <research_trasio@irq.a4lg.com>
16859         * config/riscv/zicond.md: Add closing parent to a comment.
16861 2023-09-06  Tsukasa OI  <research_trasio@irq.a4lg.com>
16863         * config/riscv/riscv.cc (riscv_expand_conditional_move): Force
16864         large constant cons/alt into a register.
16866 2023-09-05  Christoph Müllner  <christoph.muellner@vrull.eu>
16868         * config/riscv/riscv.cc (riscv_build_integer_1): Don't
16869         require one zero bit in the upper 32 bits for LI+RORI synthesis.
16871 2023-09-05  Jeff Law  <jlaw@ventanamicro.com>
16873         * config/riscv/bitmanip.md (bswapsi2): Expose for TARGET_64BIT.
16875 2023-09-05  Andrew Pinski  <apinski@marvell.com>
16877         PR tree-optimization/98710
16878         * match.pd (`(x | c) & ~(y | c)`, `(x & c) | ~(y & c)`): New pattern.
16879         (`x & ~(y | x)`, `x | ~(y & x)`): New patterns.
16881 2023-09-05  Andrew Pinski  <apinski@marvell.com>
16883         PR tree-optimization/103536
16884         * match.pd (`(x | y) & (x & z)`,
16885         `(x & y) | (x | z)`): New patterns.
16887 2023-09-05  Andrew Pinski  <apinski@marvell.com>
16889         PR tree-optimization/107137
16890         * match.pd (`(nop_convert)-(convert)a`): New pattern.
16892 2023-09-05  Andrew Pinski  <apinski@marvell.com>
16894         PR tree-optimization/96694
16895         * match.pd (`~MAX(~X, Y)`, `~MIN(~X, Y)`): New patterns.
16897 2023-09-05  Andrew Pinski  <apinski@marvell.com>
16899         PR tree-optimization/105832
16900         * match.pd (`(1 >> X) != 0`): New pattern
16902 2023-09-05  Edwin Lu  <ewlu@rivosinc.com>
16904         * config/riscv/riscv.md: Update/Add types
16906 2023-09-05  Edwin Lu  <ewlu@rivosinc.com>
16908         * config/riscv/pic.md: Update types
16910 2023-09-05  Christoph Müllner  <christoph.muellner@vrull.eu>
16912         * config/riscv/riscv.cc (riscv_build_integer_1): Enable constant
16913         synthesis with rotate-right for XTheadBb.
16915 2023-09-05  Vineet Gupta  <vineetg@rivosinc.com>
16917         * config/riscv/zicond.md: Fix op2 pattern.
16919 2023-09-05  Szabolcs Nagy  <szabolcs.nagy@arm.com>
16921         * config/aarch64/aarch64.h (AARCH64_ISA_RCPC): Remove dup.
16923 2023-09-05  Xi Ruoyao  <xry111@xry111.site>
16925         * config/loongarch/loongarch-opts.h (HAVE_AS_EXPLICIT_RELOCS):
16926         Define to 0 if not defined yet.
16928 2023-09-05  Kito Cheng  <kito.cheng@sifive.com>
16930         * config/riscv/linux.h (TARGET_ASM_FILE_END): Move ...
16931         * config/riscv/riscv.cc (TARGET_ASM_FILE_END): to here.
16933 2023-09-05  Pan Li  <pan2.li@intel.com>
16935         * config/riscv/autovec-vls.md (copysign<mode>3): New pattern.
16936         * config/riscv/vector.md: Extend iterator for VLS.
16938 2023-09-05  Lulu Cheng  <chenglulu@loongson.cn>
16940         * config.gcc: Export the header file lasxintrin.h.
16941         * config/loongarch/loongarch-builtins.cc (enum loongarch_builtin_type):
16942         Add Loongson ASX builtin functions support.
16943         (AVAIL_ALL): Ditto.
16944         (LASX_BUILTIN): Ditto.
16945         (LASX_NO_TARGET_BUILTIN): Ditto.
16946         (LASX_BUILTIN_TEST_BRANCH): Ditto.
16947         (CODE_FOR_lasx_xvsadd_b): Ditto.
16948         (CODE_FOR_lasx_xvsadd_h): Ditto.
16949         (CODE_FOR_lasx_xvsadd_w): Ditto.
16950         (CODE_FOR_lasx_xvsadd_d): Ditto.
16951         (CODE_FOR_lasx_xvsadd_bu): Ditto.
16952         (CODE_FOR_lasx_xvsadd_hu): Ditto.
16953         (CODE_FOR_lasx_xvsadd_wu): Ditto.
16954         (CODE_FOR_lasx_xvsadd_du): Ditto.
16955         (CODE_FOR_lasx_xvadd_b): Ditto.
16956         (CODE_FOR_lasx_xvadd_h): Ditto.
16957         (CODE_FOR_lasx_xvadd_w): Ditto.
16958         (CODE_FOR_lasx_xvadd_d): Ditto.
16959         (CODE_FOR_lasx_xvaddi_bu): Ditto.
16960         (CODE_FOR_lasx_xvaddi_hu): Ditto.
16961         (CODE_FOR_lasx_xvaddi_wu): Ditto.
16962         (CODE_FOR_lasx_xvaddi_du): Ditto.
16963         (CODE_FOR_lasx_xvand_v): Ditto.
16964         (CODE_FOR_lasx_xvandi_b): Ditto.
16965         (CODE_FOR_lasx_xvbitsel_v): Ditto.
16966         (CODE_FOR_lasx_xvseqi_b): Ditto.
16967         (CODE_FOR_lasx_xvseqi_h): Ditto.
16968         (CODE_FOR_lasx_xvseqi_w): Ditto.
16969         (CODE_FOR_lasx_xvseqi_d): Ditto.
16970         (CODE_FOR_lasx_xvslti_b): Ditto.
16971         (CODE_FOR_lasx_xvslti_h): Ditto.
16972         (CODE_FOR_lasx_xvslti_w): Ditto.
16973         (CODE_FOR_lasx_xvslti_d): Ditto.
16974         (CODE_FOR_lasx_xvslti_bu): Ditto.
16975         (CODE_FOR_lasx_xvslti_hu): Ditto.
16976         (CODE_FOR_lasx_xvslti_wu): Ditto.
16977         (CODE_FOR_lasx_xvslti_du): Ditto.
16978         (CODE_FOR_lasx_xvslei_b): Ditto.
16979         (CODE_FOR_lasx_xvslei_h): Ditto.
16980         (CODE_FOR_lasx_xvslei_w): Ditto.
16981         (CODE_FOR_lasx_xvslei_d): Ditto.
16982         (CODE_FOR_lasx_xvslei_bu): Ditto.
16983         (CODE_FOR_lasx_xvslei_hu): Ditto.
16984         (CODE_FOR_lasx_xvslei_wu): Ditto.
16985         (CODE_FOR_lasx_xvslei_du): Ditto.
16986         (CODE_FOR_lasx_xvdiv_b): Ditto.
16987         (CODE_FOR_lasx_xvdiv_h): Ditto.
16988         (CODE_FOR_lasx_xvdiv_w): Ditto.
16989         (CODE_FOR_lasx_xvdiv_d): Ditto.
16990         (CODE_FOR_lasx_xvdiv_bu): Ditto.
16991         (CODE_FOR_lasx_xvdiv_hu): Ditto.
16992         (CODE_FOR_lasx_xvdiv_wu): Ditto.
16993         (CODE_FOR_lasx_xvdiv_du): Ditto.
16994         (CODE_FOR_lasx_xvfadd_s): Ditto.
16995         (CODE_FOR_lasx_xvfadd_d): Ditto.
16996         (CODE_FOR_lasx_xvftintrz_w_s): Ditto.
16997         (CODE_FOR_lasx_xvftintrz_l_d): Ditto.
16998         (CODE_FOR_lasx_xvftintrz_wu_s): Ditto.
16999         (CODE_FOR_lasx_xvftintrz_lu_d): Ditto.
17000         (CODE_FOR_lasx_xvffint_s_w): Ditto.
17001         (CODE_FOR_lasx_xvffint_d_l): Ditto.
17002         (CODE_FOR_lasx_xvffint_s_wu): Ditto.
17003         (CODE_FOR_lasx_xvffint_d_lu): Ditto.
17004         (CODE_FOR_lasx_xvfsub_s): Ditto.
17005         (CODE_FOR_lasx_xvfsub_d): Ditto.
17006         (CODE_FOR_lasx_xvfmul_s): Ditto.
17007         (CODE_FOR_lasx_xvfmul_d): Ditto.
17008         (CODE_FOR_lasx_xvfdiv_s): Ditto.
17009         (CODE_FOR_lasx_xvfdiv_d): Ditto.
17010         (CODE_FOR_lasx_xvfmax_s): Ditto.
17011         (CODE_FOR_lasx_xvfmax_d): Ditto.
17012         (CODE_FOR_lasx_xvfmin_s): Ditto.
17013         (CODE_FOR_lasx_xvfmin_d): Ditto.
17014         (CODE_FOR_lasx_xvfsqrt_s): Ditto.
17015         (CODE_FOR_lasx_xvfsqrt_d): Ditto.
17016         (CODE_FOR_lasx_xvflogb_s): Ditto.
17017         (CODE_FOR_lasx_xvflogb_d): Ditto.
17018         (CODE_FOR_lasx_xvmax_b): Ditto.
17019         (CODE_FOR_lasx_xvmax_h): Ditto.
17020         (CODE_FOR_lasx_xvmax_w): Ditto.
17021         (CODE_FOR_lasx_xvmax_d): Ditto.
17022         (CODE_FOR_lasx_xvmaxi_b): Ditto.
17023         (CODE_FOR_lasx_xvmaxi_h): Ditto.
17024         (CODE_FOR_lasx_xvmaxi_w): Ditto.
17025         (CODE_FOR_lasx_xvmaxi_d): Ditto.
17026         (CODE_FOR_lasx_xvmax_bu): Ditto.
17027         (CODE_FOR_lasx_xvmax_hu): Ditto.
17028         (CODE_FOR_lasx_xvmax_wu): Ditto.
17029         (CODE_FOR_lasx_xvmax_du): Ditto.
17030         (CODE_FOR_lasx_xvmaxi_bu): Ditto.
17031         (CODE_FOR_lasx_xvmaxi_hu): Ditto.
17032         (CODE_FOR_lasx_xvmaxi_wu): Ditto.
17033         (CODE_FOR_lasx_xvmaxi_du): Ditto.
17034         (CODE_FOR_lasx_xvmin_b): Ditto.
17035         (CODE_FOR_lasx_xvmin_h): Ditto.
17036         (CODE_FOR_lasx_xvmin_w): Ditto.
17037         (CODE_FOR_lasx_xvmin_d): Ditto.
17038         (CODE_FOR_lasx_xvmini_b): Ditto.
17039         (CODE_FOR_lasx_xvmini_h): Ditto.
17040         (CODE_FOR_lasx_xvmini_w): Ditto.
17041         (CODE_FOR_lasx_xvmini_d): Ditto.
17042         (CODE_FOR_lasx_xvmin_bu): Ditto.
17043         (CODE_FOR_lasx_xvmin_hu): Ditto.
17044         (CODE_FOR_lasx_xvmin_wu): Ditto.
17045         (CODE_FOR_lasx_xvmin_du): Ditto.
17046         (CODE_FOR_lasx_xvmini_bu): Ditto.
17047         (CODE_FOR_lasx_xvmini_hu): Ditto.
17048         (CODE_FOR_lasx_xvmini_wu): Ditto.
17049         (CODE_FOR_lasx_xvmini_du): Ditto.
17050         (CODE_FOR_lasx_xvmod_b): Ditto.
17051         (CODE_FOR_lasx_xvmod_h): Ditto.
17052         (CODE_FOR_lasx_xvmod_w): Ditto.
17053         (CODE_FOR_lasx_xvmod_d): Ditto.
17054         (CODE_FOR_lasx_xvmod_bu): Ditto.
17055         (CODE_FOR_lasx_xvmod_hu): Ditto.
17056         (CODE_FOR_lasx_xvmod_wu): Ditto.
17057         (CODE_FOR_lasx_xvmod_du): Ditto.
17058         (CODE_FOR_lasx_xvmul_b): Ditto.
17059         (CODE_FOR_lasx_xvmul_h): Ditto.
17060         (CODE_FOR_lasx_xvmul_w): Ditto.
17061         (CODE_FOR_lasx_xvmul_d): Ditto.
17062         (CODE_FOR_lasx_xvclz_b): Ditto.
17063         (CODE_FOR_lasx_xvclz_h): Ditto.
17064         (CODE_FOR_lasx_xvclz_w): Ditto.
17065         (CODE_FOR_lasx_xvclz_d): Ditto.
17066         (CODE_FOR_lasx_xvnor_v): Ditto.
17067         (CODE_FOR_lasx_xvor_v): Ditto.
17068         (CODE_FOR_lasx_xvori_b): Ditto.
17069         (CODE_FOR_lasx_xvnori_b): Ditto.
17070         (CODE_FOR_lasx_xvpcnt_b): Ditto.
17071         (CODE_FOR_lasx_xvpcnt_h): Ditto.
17072         (CODE_FOR_lasx_xvpcnt_w): Ditto.
17073         (CODE_FOR_lasx_xvpcnt_d): Ditto.
17074         (CODE_FOR_lasx_xvxor_v): Ditto.
17075         (CODE_FOR_lasx_xvxori_b): Ditto.
17076         (CODE_FOR_lasx_xvsll_b): Ditto.
17077         (CODE_FOR_lasx_xvsll_h): Ditto.
17078         (CODE_FOR_lasx_xvsll_w): Ditto.
17079         (CODE_FOR_lasx_xvsll_d): Ditto.
17080         (CODE_FOR_lasx_xvslli_b): Ditto.
17081         (CODE_FOR_lasx_xvslli_h): Ditto.
17082         (CODE_FOR_lasx_xvslli_w): Ditto.
17083         (CODE_FOR_lasx_xvslli_d): Ditto.
17084         (CODE_FOR_lasx_xvsra_b): Ditto.
17085         (CODE_FOR_lasx_xvsra_h): Ditto.
17086         (CODE_FOR_lasx_xvsra_w): Ditto.
17087         (CODE_FOR_lasx_xvsra_d): Ditto.
17088         (CODE_FOR_lasx_xvsrai_b): Ditto.
17089         (CODE_FOR_lasx_xvsrai_h): Ditto.
17090         (CODE_FOR_lasx_xvsrai_w): Ditto.
17091         (CODE_FOR_lasx_xvsrai_d): Ditto.
17092         (CODE_FOR_lasx_xvsrl_b): Ditto.
17093         (CODE_FOR_lasx_xvsrl_h): Ditto.
17094         (CODE_FOR_lasx_xvsrl_w): Ditto.
17095         (CODE_FOR_lasx_xvsrl_d): Ditto.
17096         (CODE_FOR_lasx_xvsrli_b): Ditto.
17097         (CODE_FOR_lasx_xvsrli_h): Ditto.
17098         (CODE_FOR_lasx_xvsrli_w): Ditto.
17099         (CODE_FOR_lasx_xvsrli_d): Ditto.
17100         (CODE_FOR_lasx_xvsub_b): Ditto.
17101         (CODE_FOR_lasx_xvsub_h): Ditto.
17102         (CODE_FOR_lasx_xvsub_w): Ditto.
17103         (CODE_FOR_lasx_xvsub_d): Ditto.
17104         (CODE_FOR_lasx_xvsubi_bu): Ditto.
17105         (CODE_FOR_lasx_xvsubi_hu): Ditto.
17106         (CODE_FOR_lasx_xvsubi_wu): Ditto.
17107         (CODE_FOR_lasx_xvsubi_du): Ditto.
17108         (CODE_FOR_lasx_xvpackod_d): Ditto.
17109         (CODE_FOR_lasx_xvpackev_d): Ditto.
17110         (CODE_FOR_lasx_xvpickod_d): Ditto.
17111         (CODE_FOR_lasx_xvpickev_d): Ditto.
17112         (CODE_FOR_lasx_xvrepli_b): Ditto.
17113         (CODE_FOR_lasx_xvrepli_h): Ditto.
17114         (CODE_FOR_lasx_xvrepli_w): Ditto.
17115         (CODE_FOR_lasx_xvrepli_d): Ditto.
17116         (CODE_FOR_lasx_xvandn_v): Ditto.
17117         (CODE_FOR_lasx_xvorn_v): Ditto.
17118         (CODE_FOR_lasx_xvneg_b): Ditto.
17119         (CODE_FOR_lasx_xvneg_h): Ditto.
17120         (CODE_FOR_lasx_xvneg_w): Ditto.
17121         (CODE_FOR_lasx_xvneg_d): Ditto.
17122         (CODE_FOR_lasx_xvbsrl_v): Ditto.
17123         (CODE_FOR_lasx_xvbsll_v): Ditto.
17124         (CODE_FOR_lasx_xvfmadd_s): Ditto.
17125         (CODE_FOR_lasx_xvfmadd_d): Ditto.
17126         (CODE_FOR_lasx_xvfmsub_s): Ditto.
17127         (CODE_FOR_lasx_xvfmsub_d): Ditto.
17128         (CODE_FOR_lasx_xvfnmadd_s): Ditto.
17129         (CODE_FOR_lasx_xvfnmadd_d): Ditto.
17130         (CODE_FOR_lasx_xvfnmsub_s): Ditto.
17131         (CODE_FOR_lasx_xvfnmsub_d): Ditto.
17132         (CODE_FOR_lasx_xvpermi_q): Ditto.
17133         (CODE_FOR_lasx_xvpermi_d): Ditto.
17134         (CODE_FOR_lasx_xbnz_v): Ditto.
17135         (CODE_FOR_lasx_xbz_v): Ditto.
17136         (CODE_FOR_lasx_xvssub_b): Ditto.
17137         (CODE_FOR_lasx_xvssub_h): Ditto.
17138         (CODE_FOR_lasx_xvssub_w): Ditto.
17139         (CODE_FOR_lasx_xvssub_d): Ditto.
17140         (CODE_FOR_lasx_xvssub_bu): Ditto.
17141         (CODE_FOR_lasx_xvssub_hu): Ditto.
17142         (CODE_FOR_lasx_xvssub_wu): Ditto.
17143         (CODE_FOR_lasx_xvssub_du): Ditto.
17144         (CODE_FOR_lasx_xvabsd_b): Ditto.
17145         (CODE_FOR_lasx_xvabsd_h): Ditto.
17146         (CODE_FOR_lasx_xvabsd_w): Ditto.
17147         (CODE_FOR_lasx_xvabsd_d): Ditto.
17148         (CODE_FOR_lasx_xvabsd_bu): Ditto.
17149         (CODE_FOR_lasx_xvabsd_hu): Ditto.
17150         (CODE_FOR_lasx_xvabsd_wu): Ditto.
17151         (CODE_FOR_lasx_xvabsd_du): Ditto.
17152         (CODE_FOR_lasx_xvavg_b): Ditto.
17153         (CODE_FOR_lasx_xvavg_h): Ditto.
17154         (CODE_FOR_lasx_xvavg_w): Ditto.
17155         (CODE_FOR_lasx_xvavg_d): Ditto.
17156         (CODE_FOR_lasx_xvavg_bu): Ditto.
17157         (CODE_FOR_lasx_xvavg_hu): Ditto.
17158         (CODE_FOR_lasx_xvavg_wu): Ditto.
17159         (CODE_FOR_lasx_xvavg_du): Ditto.
17160         (CODE_FOR_lasx_xvavgr_b): Ditto.
17161         (CODE_FOR_lasx_xvavgr_h): Ditto.
17162         (CODE_FOR_lasx_xvavgr_w): Ditto.
17163         (CODE_FOR_lasx_xvavgr_d): Ditto.
17164         (CODE_FOR_lasx_xvavgr_bu): Ditto.
17165         (CODE_FOR_lasx_xvavgr_hu): Ditto.
17166         (CODE_FOR_lasx_xvavgr_wu): Ditto.
17167         (CODE_FOR_lasx_xvavgr_du): Ditto.
17168         (CODE_FOR_lasx_xvmuh_b): Ditto.
17169         (CODE_FOR_lasx_xvmuh_h): Ditto.
17170         (CODE_FOR_lasx_xvmuh_w): Ditto.
17171         (CODE_FOR_lasx_xvmuh_d): Ditto.
17172         (CODE_FOR_lasx_xvmuh_bu): Ditto.
17173         (CODE_FOR_lasx_xvmuh_hu): Ditto.
17174         (CODE_FOR_lasx_xvmuh_wu): Ditto.
17175         (CODE_FOR_lasx_xvmuh_du): Ditto.
17176         (CODE_FOR_lasx_xvssran_b_h): Ditto.
17177         (CODE_FOR_lasx_xvssran_h_w): Ditto.
17178         (CODE_FOR_lasx_xvssran_w_d): Ditto.
17179         (CODE_FOR_lasx_xvssran_bu_h): Ditto.
17180         (CODE_FOR_lasx_xvssran_hu_w): Ditto.
17181         (CODE_FOR_lasx_xvssran_wu_d): Ditto.
17182         (CODE_FOR_lasx_xvssrarn_b_h): Ditto.
17183         (CODE_FOR_lasx_xvssrarn_h_w): Ditto.
17184         (CODE_FOR_lasx_xvssrarn_w_d): Ditto.
17185         (CODE_FOR_lasx_xvssrarn_bu_h): Ditto.
17186         (CODE_FOR_lasx_xvssrarn_hu_w): Ditto.
17187         (CODE_FOR_lasx_xvssrarn_wu_d): Ditto.
17188         (CODE_FOR_lasx_xvssrln_bu_h): Ditto.
17189         (CODE_FOR_lasx_xvssrln_hu_w): Ditto.
17190         (CODE_FOR_lasx_xvssrln_wu_d): Ditto.
17191         (CODE_FOR_lasx_xvssrlrn_bu_h): Ditto.
17192         (CODE_FOR_lasx_xvssrlrn_hu_w): Ditto.
17193         (CODE_FOR_lasx_xvssrlrn_wu_d): Ditto.
17194         (CODE_FOR_lasx_xvftint_w_s): Ditto.
17195         (CODE_FOR_lasx_xvftint_l_d): Ditto.
17196         (CODE_FOR_lasx_xvftint_wu_s): Ditto.
17197         (CODE_FOR_lasx_xvftint_lu_d): Ditto.
17198         (CODE_FOR_lasx_xvsllwil_h_b): Ditto.
17199         (CODE_FOR_lasx_xvsllwil_w_h): Ditto.
17200         (CODE_FOR_lasx_xvsllwil_d_w): Ditto.
17201         (CODE_FOR_lasx_xvsllwil_hu_bu): Ditto.
17202         (CODE_FOR_lasx_xvsllwil_wu_hu): Ditto.
17203         (CODE_FOR_lasx_xvsllwil_du_wu): Ditto.
17204         (CODE_FOR_lasx_xvsat_b): Ditto.
17205         (CODE_FOR_lasx_xvsat_h): Ditto.
17206         (CODE_FOR_lasx_xvsat_w): Ditto.
17207         (CODE_FOR_lasx_xvsat_d): Ditto.
17208         (CODE_FOR_lasx_xvsat_bu): Ditto.
17209         (CODE_FOR_lasx_xvsat_hu): Ditto.
17210         (CODE_FOR_lasx_xvsat_wu): Ditto.
17211         (CODE_FOR_lasx_xvsat_du): Ditto.
17212         (loongarch_builtin_vectorized_function): Ditto.
17213         (loongarch_expand_builtin_insn): Ditto.
17214         (loongarch_expand_builtin): Ditto.
17215         * config/loongarch/loongarch-ftypes.def (1): Ditto.
17216         (2): Ditto.
17217         (3): Ditto.
17218         (4): Ditto.
17219         * config/loongarch/lasxintrin.h: New file.
17221 2023-09-05  Lulu Cheng  <chenglulu@loongson.cn>
17223         * config/loongarch/loongarch-modes.def
17224         (VECTOR_MODES): Add Loongson ASX instruction support.
17225         * config/loongarch/loongarch-protos.h (loongarch_split_256bit_move): Ditto.
17226         (loongarch_split_256bit_move_p): Ditto.
17227         (loongarch_expand_vector_group_init): Ditto.
17228         (loongarch_expand_vec_perm_1): Ditto.
17229         * config/loongarch/loongarch.cc (loongarch_symbol_insns): Ditto.
17230         (loongarch_valid_offset_p): Ditto.
17231         (loongarch_address_insns): Ditto.
17232         (loongarch_const_insns): Ditto.
17233         (loongarch_legitimize_move): Ditto.
17234         (loongarch_builtin_vectorization_cost): Ditto.
17235         (loongarch_split_move_p): Ditto.
17236         (loongarch_split_move): Ditto.
17237         (loongarch_output_move_index_float): Ditto.
17238         (loongarch_split_256bit_move_p): Ditto.
17239         (loongarch_split_256bit_move): Ditto.
17240         (loongarch_output_move): Ditto.
17241         (loongarch_print_operand_reloc): Ditto.
17242         (loongarch_print_operand): Ditto.
17243         (loongarch_hard_regno_mode_ok_uncached): Ditto.
17244         (loongarch_hard_regno_nregs): Ditto.
17245         (loongarch_class_max_nregs): Ditto.
17246         (loongarch_can_change_mode_class): Ditto.
17247         (loongarch_mode_ok_for_mov_fmt_p): Ditto.
17248         (loongarch_vector_mode_supported_p): Ditto.
17249         (loongarch_preferred_simd_mode): Ditto.
17250         (loongarch_autovectorize_vector_modes): Ditto.
17251         (loongarch_lsx_output_division): Ditto.
17252         (loongarch_expand_lsx_shuffle): Ditto.
17253         (loongarch_expand_vec_perm): Ditto.
17254         (loongarch_expand_vec_perm_interleave): Ditto.
17255         (loongarch_try_expand_lsx_vshuf_const): Ditto.
17256         (loongarch_expand_vec_perm_even_odd_1): Ditto.
17257         (loongarch_expand_vec_perm_even_odd): Ditto.
17258         (loongarch_expand_vec_perm_1): Ditto.
17259         (loongarch_expand_vec_perm_const_2): Ditto.
17260         (loongarch_is_quad_duplicate): Ditto.
17261         (loongarch_is_double_duplicate): Ditto.
17262         (loongarch_is_odd_extraction): Ditto.
17263         (loongarch_is_even_extraction): Ditto.
17264         (loongarch_is_extraction_permutation): Ditto.
17265         (loongarch_is_center_extraction): Ditto.
17266         (loongarch_is_reversing_permutation): Ditto.
17267         (loongarch_is_di_misalign_extract): Ditto.
17268         (loongarch_is_si_misalign_extract): Ditto.
17269         (loongarch_is_lasx_lowpart_interleave): Ditto.
17270         (loongarch_is_lasx_lowpart_interleave_2): Ditto.
17271         (COMPARE_SELECTOR): Ditto.
17272         (loongarch_is_lasx_lowpart_extract): Ditto.
17273         (loongarch_is_lasx_highpart_interleave): Ditto.
17274         (loongarch_is_lasx_highpart_interleave_2): Ditto.
17275         (loongarch_is_elem_duplicate): Ditto.
17276         (loongarch_is_op_reverse_perm): Ditto.
17277         (loongarch_is_single_op_perm): Ditto.
17278         (loongarch_is_divisible_perm): Ditto.
17279         (loongarch_is_triple_stride_extract): Ditto.
17280         (loongarch_vectorize_vec_perm_const): Ditto.
17281         (loongarch_cpu_sched_reassociation_width): Ditto.
17282         (loongarch_expand_vector_extract): Ditto.
17283         (emit_reduc_half): Ditto.
17284         (loongarch_expand_vec_unpack): Ditto.
17285         (loongarch_expand_vector_group_init): Ditto.
17286         (loongarch_expand_vector_init): Ditto.
17287         (loongarch_expand_lsx_cmp): Ditto.
17288         (loongarch_builtin_support_vector_misalignment): Ditto.
17289         * config/loongarch/loongarch.h (UNITS_PER_LASX_REG): Ditto.
17290         (BITS_PER_LASX_REG): Ditto.
17291         (STRUCTURE_SIZE_BOUNDARY): Ditto.
17292         (LASX_REG_FIRST): Ditto.
17293         (LASX_REG_LAST): Ditto.
17294         (LASX_REG_NUM): Ditto.
17295         (LASX_REG_P): Ditto.
17296         (LASX_REG_RTX_P): Ditto.
17297         (LASX_SUPPORTED_MODE_P): Ditto.
17298         * config/loongarch/loongarch.md: Ditto.
17299         * config/loongarch/lasx.md: New file.
17301 2023-09-05  Lulu Cheng  <chenglulu@loongson.cn>
17303         * config.gcc: Export the header file lsxintrin.h.
17304         * config/loongarch/loongarch-builtins.cc (LARCH_FTYPE_NAME4): Add builtin function support.
17305         (enum loongarch_builtin_type): Ditto.
17306         (AVAIL_ALL): Ditto.
17307         (LARCH_BUILTIN): Ditto.
17308         (LSX_BUILTIN): Ditto.
17309         (LSX_BUILTIN_TEST_BRANCH): Ditto.
17310         (LSX_NO_TARGET_BUILTIN): Ditto.
17311         (CODE_FOR_lsx_vsadd_b): Ditto.
17312         (CODE_FOR_lsx_vsadd_h): Ditto.
17313         (CODE_FOR_lsx_vsadd_w): Ditto.
17314         (CODE_FOR_lsx_vsadd_d): Ditto.
17315         (CODE_FOR_lsx_vsadd_bu): Ditto.
17316         (CODE_FOR_lsx_vsadd_hu): Ditto.
17317         (CODE_FOR_lsx_vsadd_wu): Ditto.
17318         (CODE_FOR_lsx_vsadd_du): Ditto.
17319         (CODE_FOR_lsx_vadd_b): Ditto.
17320         (CODE_FOR_lsx_vadd_h): Ditto.
17321         (CODE_FOR_lsx_vadd_w): Ditto.
17322         (CODE_FOR_lsx_vadd_d): Ditto.
17323         (CODE_FOR_lsx_vaddi_bu): Ditto.
17324         (CODE_FOR_lsx_vaddi_hu): Ditto.
17325         (CODE_FOR_lsx_vaddi_wu): Ditto.
17326         (CODE_FOR_lsx_vaddi_du): Ditto.
17327         (CODE_FOR_lsx_vand_v): Ditto.
17328         (CODE_FOR_lsx_vandi_b): Ditto.
17329         (CODE_FOR_lsx_bnz_v): Ditto.
17330         (CODE_FOR_lsx_bz_v): Ditto.
17331         (CODE_FOR_lsx_vbitsel_v): Ditto.
17332         (CODE_FOR_lsx_vseqi_b): Ditto.
17333         (CODE_FOR_lsx_vseqi_h): Ditto.
17334         (CODE_FOR_lsx_vseqi_w): Ditto.
17335         (CODE_FOR_lsx_vseqi_d): Ditto.
17336         (CODE_FOR_lsx_vslti_b): Ditto.
17337         (CODE_FOR_lsx_vslti_h): Ditto.
17338         (CODE_FOR_lsx_vslti_w): Ditto.
17339         (CODE_FOR_lsx_vslti_d): Ditto.
17340         (CODE_FOR_lsx_vslti_bu): Ditto.
17341         (CODE_FOR_lsx_vslti_hu): Ditto.
17342         (CODE_FOR_lsx_vslti_wu): Ditto.
17343         (CODE_FOR_lsx_vslti_du): Ditto.
17344         (CODE_FOR_lsx_vslei_b): Ditto.
17345         (CODE_FOR_lsx_vslei_h): Ditto.
17346         (CODE_FOR_lsx_vslei_w): Ditto.
17347         (CODE_FOR_lsx_vslei_d): Ditto.
17348         (CODE_FOR_lsx_vslei_bu): Ditto.
17349         (CODE_FOR_lsx_vslei_hu): Ditto.
17350         (CODE_FOR_lsx_vslei_wu): Ditto.
17351         (CODE_FOR_lsx_vslei_du): Ditto.
17352         (CODE_FOR_lsx_vdiv_b): Ditto.
17353         (CODE_FOR_lsx_vdiv_h): Ditto.
17354         (CODE_FOR_lsx_vdiv_w): Ditto.
17355         (CODE_FOR_lsx_vdiv_d): Ditto.
17356         (CODE_FOR_lsx_vdiv_bu): Ditto.
17357         (CODE_FOR_lsx_vdiv_hu): Ditto.
17358         (CODE_FOR_lsx_vdiv_wu): Ditto.
17359         (CODE_FOR_lsx_vdiv_du): Ditto.
17360         (CODE_FOR_lsx_vfadd_s): Ditto.
17361         (CODE_FOR_lsx_vfadd_d): Ditto.
17362         (CODE_FOR_lsx_vftintrz_w_s): Ditto.
17363         (CODE_FOR_lsx_vftintrz_l_d): Ditto.
17364         (CODE_FOR_lsx_vftintrz_wu_s): Ditto.
17365         (CODE_FOR_lsx_vftintrz_lu_d): Ditto.
17366         (CODE_FOR_lsx_vffint_s_w): Ditto.
17367         (CODE_FOR_lsx_vffint_d_l): Ditto.
17368         (CODE_FOR_lsx_vffint_s_wu): Ditto.
17369         (CODE_FOR_lsx_vffint_d_lu): Ditto.
17370         (CODE_FOR_lsx_vfsub_s): Ditto.
17371         (CODE_FOR_lsx_vfsub_d): Ditto.
17372         (CODE_FOR_lsx_vfmul_s): Ditto.
17373         (CODE_FOR_lsx_vfmul_d): Ditto.
17374         (CODE_FOR_lsx_vfdiv_s): Ditto.
17375         (CODE_FOR_lsx_vfdiv_d): Ditto.
17376         (CODE_FOR_lsx_vfmax_s): Ditto.
17377         (CODE_FOR_lsx_vfmax_d): Ditto.
17378         (CODE_FOR_lsx_vfmin_s): Ditto.
17379         (CODE_FOR_lsx_vfmin_d): Ditto.
17380         (CODE_FOR_lsx_vfsqrt_s): Ditto.
17381         (CODE_FOR_lsx_vfsqrt_d): Ditto.
17382         (CODE_FOR_lsx_vflogb_s): Ditto.
17383         (CODE_FOR_lsx_vflogb_d): Ditto.
17384         (CODE_FOR_lsx_vmax_b): Ditto.
17385         (CODE_FOR_lsx_vmax_h): Ditto.
17386         (CODE_FOR_lsx_vmax_w): Ditto.
17387         (CODE_FOR_lsx_vmax_d): Ditto.
17388         (CODE_FOR_lsx_vmaxi_b): Ditto.
17389         (CODE_FOR_lsx_vmaxi_h): Ditto.
17390         (CODE_FOR_lsx_vmaxi_w): Ditto.
17391         (CODE_FOR_lsx_vmaxi_d): Ditto.
17392         (CODE_FOR_lsx_vmax_bu): Ditto.
17393         (CODE_FOR_lsx_vmax_hu): Ditto.
17394         (CODE_FOR_lsx_vmax_wu): Ditto.
17395         (CODE_FOR_lsx_vmax_du): Ditto.
17396         (CODE_FOR_lsx_vmaxi_bu): Ditto.
17397         (CODE_FOR_lsx_vmaxi_hu): Ditto.
17398         (CODE_FOR_lsx_vmaxi_wu): Ditto.
17399         (CODE_FOR_lsx_vmaxi_du): Ditto.
17400         (CODE_FOR_lsx_vmin_b): Ditto.
17401         (CODE_FOR_lsx_vmin_h): Ditto.
17402         (CODE_FOR_lsx_vmin_w): Ditto.
17403         (CODE_FOR_lsx_vmin_d): Ditto.
17404         (CODE_FOR_lsx_vmini_b): Ditto.
17405         (CODE_FOR_lsx_vmini_h): Ditto.
17406         (CODE_FOR_lsx_vmini_w): Ditto.
17407         (CODE_FOR_lsx_vmini_d): Ditto.
17408         (CODE_FOR_lsx_vmin_bu): Ditto.
17409         (CODE_FOR_lsx_vmin_hu): Ditto.
17410         (CODE_FOR_lsx_vmin_wu): Ditto.
17411         (CODE_FOR_lsx_vmin_du): Ditto.
17412         (CODE_FOR_lsx_vmini_bu): Ditto.
17413         (CODE_FOR_lsx_vmini_hu): Ditto.
17414         (CODE_FOR_lsx_vmini_wu): Ditto.
17415         (CODE_FOR_lsx_vmini_du): Ditto.
17416         (CODE_FOR_lsx_vmod_b): Ditto.
17417         (CODE_FOR_lsx_vmod_h): Ditto.
17418         (CODE_FOR_lsx_vmod_w): Ditto.
17419         (CODE_FOR_lsx_vmod_d): Ditto.
17420         (CODE_FOR_lsx_vmod_bu): Ditto.
17421         (CODE_FOR_lsx_vmod_hu): Ditto.
17422         (CODE_FOR_lsx_vmod_wu): Ditto.
17423         (CODE_FOR_lsx_vmod_du): Ditto.
17424         (CODE_FOR_lsx_vmul_b): Ditto.
17425         (CODE_FOR_lsx_vmul_h): Ditto.
17426         (CODE_FOR_lsx_vmul_w): Ditto.
17427         (CODE_FOR_lsx_vmul_d): Ditto.
17428         (CODE_FOR_lsx_vclz_b): Ditto.
17429         (CODE_FOR_lsx_vclz_h): Ditto.
17430         (CODE_FOR_lsx_vclz_w): Ditto.
17431         (CODE_FOR_lsx_vclz_d): Ditto.
17432         (CODE_FOR_lsx_vnor_v): Ditto.
17433         (CODE_FOR_lsx_vor_v): Ditto.
17434         (CODE_FOR_lsx_vori_b): Ditto.
17435         (CODE_FOR_lsx_vnori_b): Ditto.
17436         (CODE_FOR_lsx_vpcnt_b): Ditto.
17437         (CODE_FOR_lsx_vpcnt_h): Ditto.
17438         (CODE_FOR_lsx_vpcnt_w): Ditto.
17439         (CODE_FOR_lsx_vpcnt_d): Ditto.
17440         (CODE_FOR_lsx_vxor_v): Ditto.
17441         (CODE_FOR_lsx_vxori_b): Ditto.
17442         (CODE_FOR_lsx_vsll_b): Ditto.
17443         (CODE_FOR_lsx_vsll_h): Ditto.
17444         (CODE_FOR_lsx_vsll_w): Ditto.
17445         (CODE_FOR_lsx_vsll_d): Ditto.
17446         (CODE_FOR_lsx_vslli_b): Ditto.
17447         (CODE_FOR_lsx_vslli_h): Ditto.
17448         (CODE_FOR_lsx_vslli_w): Ditto.
17449         (CODE_FOR_lsx_vslli_d): Ditto.
17450         (CODE_FOR_lsx_vsra_b): Ditto.
17451         (CODE_FOR_lsx_vsra_h): Ditto.
17452         (CODE_FOR_lsx_vsra_w): Ditto.
17453         (CODE_FOR_lsx_vsra_d): Ditto.
17454         (CODE_FOR_lsx_vsrai_b): Ditto.
17455         (CODE_FOR_lsx_vsrai_h): Ditto.
17456         (CODE_FOR_lsx_vsrai_w): Ditto.
17457         (CODE_FOR_lsx_vsrai_d): Ditto.
17458         (CODE_FOR_lsx_vsrl_b): Ditto.
17459         (CODE_FOR_lsx_vsrl_h): Ditto.
17460         (CODE_FOR_lsx_vsrl_w): Ditto.
17461         (CODE_FOR_lsx_vsrl_d): Ditto.
17462         (CODE_FOR_lsx_vsrli_b): Ditto.
17463         (CODE_FOR_lsx_vsrli_h): Ditto.
17464         (CODE_FOR_lsx_vsrli_w): Ditto.
17465         (CODE_FOR_lsx_vsrli_d): Ditto.
17466         (CODE_FOR_lsx_vsub_b): Ditto.
17467         (CODE_FOR_lsx_vsub_h): Ditto.
17468         (CODE_FOR_lsx_vsub_w): Ditto.
17469         (CODE_FOR_lsx_vsub_d): Ditto.
17470         (CODE_FOR_lsx_vsubi_bu): Ditto.
17471         (CODE_FOR_lsx_vsubi_hu): Ditto.
17472         (CODE_FOR_lsx_vsubi_wu): Ditto.
17473         (CODE_FOR_lsx_vsubi_du): Ditto.
17474         (CODE_FOR_lsx_vpackod_d): Ditto.
17475         (CODE_FOR_lsx_vpackev_d): Ditto.
17476         (CODE_FOR_lsx_vpickod_d): Ditto.
17477         (CODE_FOR_lsx_vpickev_d): Ditto.
17478         (CODE_FOR_lsx_vrepli_b): Ditto.
17479         (CODE_FOR_lsx_vrepli_h): Ditto.
17480         (CODE_FOR_lsx_vrepli_w): Ditto.
17481         (CODE_FOR_lsx_vrepli_d): Ditto.
17482         (CODE_FOR_lsx_vsat_b): Ditto.
17483         (CODE_FOR_lsx_vsat_h): Ditto.
17484         (CODE_FOR_lsx_vsat_w): Ditto.
17485         (CODE_FOR_lsx_vsat_d): Ditto.
17486         (CODE_FOR_lsx_vsat_bu): Ditto.
17487         (CODE_FOR_lsx_vsat_hu): Ditto.
17488         (CODE_FOR_lsx_vsat_wu): Ditto.
17489         (CODE_FOR_lsx_vsat_du): Ditto.
17490         (CODE_FOR_lsx_vavg_b): Ditto.
17491         (CODE_FOR_lsx_vavg_h): Ditto.
17492         (CODE_FOR_lsx_vavg_w): Ditto.
17493         (CODE_FOR_lsx_vavg_d): Ditto.
17494         (CODE_FOR_lsx_vavg_bu): Ditto.
17495         (CODE_FOR_lsx_vavg_hu): Ditto.
17496         (CODE_FOR_lsx_vavg_wu): Ditto.
17497         (CODE_FOR_lsx_vavg_du): Ditto.
17498         (CODE_FOR_lsx_vavgr_b): Ditto.
17499         (CODE_FOR_lsx_vavgr_h): Ditto.
17500         (CODE_FOR_lsx_vavgr_w): Ditto.
17501         (CODE_FOR_lsx_vavgr_d): Ditto.
17502         (CODE_FOR_lsx_vavgr_bu): Ditto.
17503         (CODE_FOR_lsx_vavgr_hu): Ditto.
17504         (CODE_FOR_lsx_vavgr_wu): Ditto.
17505         (CODE_FOR_lsx_vavgr_du): Ditto.
17506         (CODE_FOR_lsx_vssub_b): Ditto.
17507         (CODE_FOR_lsx_vssub_h): Ditto.
17508         (CODE_FOR_lsx_vssub_w): Ditto.
17509         (CODE_FOR_lsx_vssub_d): Ditto.
17510         (CODE_FOR_lsx_vssub_bu): Ditto.
17511         (CODE_FOR_lsx_vssub_hu): Ditto.
17512         (CODE_FOR_lsx_vssub_wu): Ditto.
17513         (CODE_FOR_lsx_vssub_du): Ditto.
17514         (CODE_FOR_lsx_vabsd_b): Ditto.
17515         (CODE_FOR_lsx_vabsd_h): Ditto.
17516         (CODE_FOR_lsx_vabsd_w): Ditto.
17517         (CODE_FOR_lsx_vabsd_d): Ditto.
17518         (CODE_FOR_lsx_vabsd_bu): Ditto.
17519         (CODE_FOR_lsx_vabsd_hu): Ditto.
17520         (CODE_FOR_lsx_vabsd_wu): Ditto.
17521         (CODE_FOR_lsx_vabsd_du): Ditto.
17522         (CODE_FOR_lsx_vftint_w_s): Ditto.
17523         (CODE_FOR_lsx_vftint_l_d): Ditto.
17524         (CODE_FOR_lsx_vftint_wu_s): Ditto.
17525         (CODE_FOR_lsx_vftint_lu_d): Ditto.
17526         (CODE_FOR_lsx_vandn_v): Ditto.
17527         (CODE_FOR_lsx_vorn_v): Ditto.
17528         (CODE_FOR_lsx_vneg_b): Ditto.
17529         (CODE_FOR_lsx_vneg_h): Ditto.
17530         (CODE_FOR_lsx_vneg_w): Ditto.
17531         (CODE_FOR_lsx_vneg_d): Ditto.
17532         (CODE_FOR_lsx_vshuf4i_d): Ditto.
17533         (CODE_FOR_lsx_vbsrl_v): Ditto.
17534         (CODE_FOR_lsx_vbsll_v): Ditto.
17535         (CODE_FOR_lsx_vfmadd_s): Ditto.
17536         (CODE_FOR_lsx_vfmadd_d): Ditto.
17537         (CODE_FOR_lsx_vfmsub_s): Ditto.
17538         (CODE_FOR_lsx_vfmsub_d): Ditto.
17539         (CODE_FOR_lsx_vfnmadd_s): Ditto.
17540         (CODE_FOR_lsx_vfnmadd_d): Ditto.
17541         (CODE_FOR_lsx_vfnmsub_s): Ditto.
17542         (CODE_FOR_lsx_vfnmsub_d): Ditto.
17543         (CODE_FOR_lsx_vmuh_b): Ditto.
17544         (CODE_FOR_lsx_vmuh_h): Ditto.
17545         (CODE_FOR_lsx_vmuh_w): Ditto.
17546         (CODE_FOR_lsx_vmuh_d): Ditto.
17547         (CODE_FOR_lsx_vmuh_bu): Ditto.
17548         (CODE_FOR_lsx_vmuh_hu): Ditto.
17549         (CODE_FOR_lsx_vmuh_wu): Ditto.
17550         (CODE_FOR_lsx_vmuh_du): Ditto.
17551         (CODE_FOR_lsx_vsllwil_h_b): Ditto.
17552         (CODE_FOR_lsx_vsllwil_w_h): Ditto.
17553         (CODE_FOR_lsx_vsllwil_d_w): Ditto.
17554         (CODE_FOR_lsx_vsllwil_hu_bu): Ditto.
17555         (CODE_FOR_lsx_vsllwil_wu_hu): Ditto.
17556         (CODE_FOR_lsx_vsllwil_du_wu): Ditto.
17557         (CODE_FOR_lsx_vssran_b_h): Ditto.
17558         (CODE_FOR_lsx_vssran_h_w): Ditto.
17559         (CODE_FOR_lsx_vssran_w_d): Ditto.
17560         (CODE_FOR_lsx_vssran_bu_h): Ditto.
17561         (CODE_FOR_lsx_vssran_hu_w): Ditto.
17562         (CODE_FOR_lsx_vssran_wu_d): Ditto.
17563         (CODE_FOR_lsx_vssrarn_b_h): Ditto.
17564         (CODE_FOR_lsx_vssrarn_h_w): Ditto.
17565         (CODE_FOR_lsx_vssrarn_w_d): Ditto.
17566         (CODE_FOR_lsx_vssrarn_bu_h): Ditto.
17567         (CODE_FOR_lsx_vssrarn_hu_w): Ditto.
17568         (CODE_FOR_lsx_vssrarn_wu_d): Ditto.
17569         (CODE_FOR_lsx_vssrln_bu_h): Ditto.
17570         (CODE_FOR_lsx_vssrln_hu_w): Ditto.
17571         (CODE_FOR_lsx_vssrln_wu_d): Ditto.
17572         (CODE_FOR_lsx_vssrlrn_bu_h): Ditto.
17573         (CODE_FOR_lsx_vssrlrn_hu_w): Ditto.
17574         (CODE_FOR_lsx_vssrlrn_wu_d): Ditto.
17575         (loongarch_builtin_vector_type): Ditto.
17576         (loongarch_build_cvpointer_type): Ditto.
17577         (LARCH_ATYPE_CVPOINTER): Ditto.
17578         (LARCH_ATYPE_BOOLEAN): Ditto.
17579         (LARCH_ATYPE_V2SF): Ditto.
17580         (LARCH_ATYPE_V2HI): Ditto.
17581         (LARCH_ATYPE_V2SI): Ditto.
17582         (LARCH_ATYPE_V4QI): Ditto.
17583         (LARCH_ATYPE_V4HI): Ditto.
17584         (LARCH_ATYPE_V8QI): Ditto.
17585         (LARCH_ATYPE_V2DI): Ditto.
17586         (LARCH_ATYPE_V4SI): Ditto.
17587         (LARCH_ATYPE_V8HI): Ditto.
17588         (LARCH_ATYPE_V16QI): Ditto.
17589         (LARCH_ATYPE_V2DF): Ditto.
17590         (LARCH_ATYPE_V4SF): Ditto.
17591         (LARCH_ATYPE_V4DI): Ditto.
17592         (LARCH_ATYPE_V8SI): Ditto.
17593         (LARCH_ATYPE_V16HI): Ditto.
17594         (LARCH_ATYPE_V32QI): Ditto.
17595         (LARCH_ATYPE_V4DF): Ditto.
17596         (LARCH_ATYPE_V8SF): Ditto.
17597         (LARCH_ATYPE_UV2DI): Ditto.
17598         (LARCH_ATYPE_UV4SI): Ditto.
17599         (LARCH_ATYPE_UV8HI): Ditto.
17600         (LARCH_ATYPE_UV16QI): Ditto.
17601         (LARCH_ATYPE_UV4DI): Ditto.
17602         (LARCH_ATYPE_UV8SI): Ditto.
17603         (LARCH_ATYPE_UV16HI): Ditto.
17604         (LARCH_ATYPE_UV32QI): Ditto.
17605         (LARCH_ATYPE_UV2SI): Ditto.
17606         (LARCH_ATYPE_UV4HI): Ditto.
17607         (LARCH_ATYPE_UV8QI): Ditto.
17608         (loongarch_builtin_vectorized_function): Ditto.
17609         (LARCH_GET_BUILTIN): Ditto.
17610         (loongarch_expand_builtin_insn): Ditto.
17611         (loongarch_expand_builtin_lsx_test_branch): Ditto.
17612         (loongarch_expand_builtin): Ditto.
17613         * config/loongarch/loongarch-ftypes.def (1): Ditto.
17614         (2): Ditto.
17615         (3): Ditto.
17616         (4): Ditto.
17617         * config/loongarch/lsxintrin.h: New file.
17619 2023-09-05  Lulu Cheng  <chenglulu@loongson.cn>
17621         * config/loongarch/constraints.md (M): Add Loongson LSX base instruction support.
17622         (N): Ditto.
17623         (O): Ditto.
17624         (P): Ditto.
17625         (R): Ditto.
17626         (S): Ditto.
17627         (YG): Ditto.
17628         (YA): Ditto.
17629         (YB): Ditto.
17630         (Yb): Ditto.
17631         (Yh): Ditto.
17632         (Yw): Ditto.
17633         (YI): Ditto.
17634         (YC): Ditto.
17635         (YZ): Ditto.
17636         (Unv5): Ditto.
17637         (Uuv5): Ditto.
17638         (Usv5): Ditto.
17639         (Uuv6): Ditto.
17640         (Urv8): Ditto.
17641         * config/loongarch/genopts/loongarch.opt.in: Ditto.
17642         * config/loongarch/loongarch-builtins.cc (loongarch_gen_const_int_vector): Ditto.
17643         * config/loongarch/loongarch-modes.def (VECTOR_MODES): Ditto.
17644         (VECTOR_MODE): Ditto.
17645         (INT_MODE): Ditto.
17646         * config/loongarch/loongarch-protos.h (loongarch_split_move_insn_p): Ditto.
17647         (loongarch_split_move_insn): Ditto.
17648         (loongarch_split_128bit_move): Ditto.
17649         (loongarch_split_128bit_move_p): Ditto.
17650         (loongarch_split_lsx_copy_d): Ditto.
17651         (loongarch_split_lsx_insert_d): Ditto.
17652         (loongarch_split_lsx_fill_d): Ditto.
17653         (loongarch_expand_vec_cmp): Ditto.
17654         (loongarch_const_vector_same_val_p): Ditto.
17655         (loongarch_const_vector_same_bytes_p): Ditto.
17656         (loongarch_const_vector_same_int_p): Ditto.
17657         (loongarch_const_vector_shuffle_set_p): Ditto.
17658         (loongarch_const_vector_bitimm_set_p): Ditto.
17659         (loongarch_const_vector_bitimm_clr_p): Ditto.
17660         (loongarch_lsx_vec_parallel_const_half): Ditto.
17661         (loongarch_gen_const_int_vector): Ditto.
17662         (loongarch_lsx_output_division): Ditto.
17663         (loongarch_expand_vector_init): Ditto.
17664         (loongarch_expand_vec_unpack): Ditto.
17665         (loongarch_expand_vec_perm): Ditto.
17666         (loongarch_expand_vector_extract): Ditto.
17667         (loongarch_expand_vector_reduc): Ditto.
17668         (loongarch_ldst_scaled_shift): Ditto.
17669         (loongarch_expand_vec_cond_expr): Ditto.
17670         (loongarch_expand_vec_cond_mask_expr): Ditto.
17671         (loongarch_builtin_vectorized_function): Ditto.
17672         (loongarch_gen_const_int_vector_shuffle): Ditto.
17673         (loongarch_build_signbit_mask): Ditto.
17674         * config/loongarch/loongarch.cc (loongarch_pass_aggregate_num_fpr): Ditto.
17675         (loongarch_setup_incoming_varargs): Ditto.
17676         (loongarch_emit_move): Ditto.
17677         (loongarch_const_vector_bitimm_set_p): Ditto.
17678         (loongarch_const_vector_bitimm_clr_p): Ditto.
17679         (loongarch_const_vector_same_val_p): Ditto.
17680         (loongarch_const_vector_same_bytes_p): Ditto.
17681         (loongarch_const_vector_same_int_p): Ditto.
17682         (loongarch_const_vector_shuffle_set_p): Ditto.
17683         (loongarch_symbol_insns): Ditto.
17684         (loongarch_cannot_force_const_mem): Ditto.
17685         (loongarch_valid_offset_p): Ditto.
17686         (loongarch_valid_index_p): Ditto.
17687         (loongarch_classify_address): Ditto.
17688         (loongarch_address_insns): Ditto.
17689         (loongarch_ldst_scaled_shift): Ditto.
17690         (loongarch_const_insns): Ditto.
17691         (loongarch_split_move_insn_p): Ditto.
17692         (loongarch_subword_at_byte): Ditto.
17693         (loongarch_legitimize_move): Ditto.
17694         (loongarch_builtin_vectorization_cost): Ditto.
17695         (loongarch_split_move_p): Ditto.
17696         (loongarch_split_move): Ditto.
17697         (loongarch_split_move_insn): Ditto.
17698         (loongarch_output_move_index_float): Ditto.
17699         (loongarch_split_128bit_move_p): Ditto.
17700         (loongarch_split_128bit_move): Ditto.
17701         (loongarch_split_lsx_copy_d): Ditto.
17702         (loongarch_split_lsx_insert_d): Ditto.
17703         (loongarch_split_lsx_fill_d): Ditto.
17704         (loongarch_output_move): Ditto.
17705         (loongarch_extend_comparands): Ditto.
17706         (loongarch_print_operand_reloc): Ditto.
17707         (loongarch_print_operand): Ditto.
17708         (loongarch_hard_regno_mode_ok_uncached): Ditto.
17709         (loongarch_hard_regno_call_part_clobbered): Ditto.
17710         (loongarch_hard_regno_nregs): Ditto.
17711         (loongarch_class_max_nregs): Ditto.
17712         (loongarch_can_change_mode_class): Ditto.
17713         (loongarch_mode_ok_for_mov_fmt_p): Ditto.
17714         (loongarch_secondary_reload): Ditto.
17715         (loongarch_vector_mode_supported_p): Ditto.
17716         (loongarch_preferred_simd_mode): Ditto.
17717         (loongarch_autovectorize_vector_modes): Ditto.
17718         (loongarch_lsx_output_division): Ditto.
17719         (loongarch_option_override_internal): Ditto.
17720         (loongarch_hard_regno_caller_save_mode): Ditto.
17721         (MAX_VECT_LEN): Ditto.
17722         (loongarch_spill_class): Ditto.
17723         (struct expand_vec_perm_d): Ditto.
17724         (loongarch_promote_function_mode): Ditto.
17725         (loongarch_expand_vselect): Ditto.
17726         (loongarch_starting_frame_offset): Ditto.
17727         (loongarch_expand_vselect_vconcat): Ditto.
17728         (TARGET_ASM_ALIGNED_DI_OP): Ditto.
17729         (TARGET_OPTION_OVERRIDE): Ditto.
17730         (TARGET_LEGITIMIZE_ADDRESS): Ditto.
17731         (TARGET_ASM_SELECT_RTX_SECTION): Ditto.
17732         (TARGET_ASM_FUNCTION_RODATA_SECTION): Ditto.
17733         (loongarch_expand_lsx_shuffle): Ditto.
17734         (TARGET_SCHED_INIT): Ditto.
17735         (TARGET_SCHED_REORDER): Ditto.
17736         (TARGET_SCHED_REORDER2): Ditto.
17737         (TARGET_SCHED_VARIABLE_ISSUE): Ditto.
17738         (TARGET_SCHED_ADJUST_COST): Ditto.
17739         (TARGET_SCHED_ISSUE_RATE): Ditto.
17740         (TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD): Ditto.
17741         (TARGET_FUNCTION_OK_FOR_SIBCALL): Ditto.
17742         (TARGET_VALID_POINTER_MODE): Ditto.
17743         (TARGET_REGISTER_MOVE_COST): Ditto.
17744         (TARGET_MEMORY_MOVE_COST): Ditto.
17745         (TARGET_RTX_COSTS): Ditto.
17746         (TARGET_ADDRESS_COST): Ditto.
17747         (TARGET_IN_SMALL_DATA_P): Ditto.
17748         (TARGET_PREFERRED_RELOAD_CLASS): Ditto.
17749         (TARGET_ASM_FILE_START_FILE_DIRECTIVE): Ditto.
17750         (TARGET_EXPAND_BUILTIN_VA_START): Ditto.
17751         (loongarch_expand_vec_perm): Ditto.
17752         (TARGET_PROMOTE_FUNCTION_MODE): Ditto.
17753         (TARGET_RETURN_IN_MEMORY): Ditto.
17754         (TARGET_FUNCTION_VALUE): Ditto.
17755         (TARGET_LIBCALL_VALUE): Ditto.
17756         (loongarch_try_expand_lsx_vshuf_const): Ditto.
17757         (TARGET_ASM_OUTPUT_MI_THUNK): Ditto.
17758         (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Ditto.
17759         (TARGET_PRINT_OPERAND): Ditto.
17760         (TARGET_PRINT_OPERAND_ADDRESS): Ditto.
17761         (TARGET_PRINT_OPERAND_PUNCT_VALID_P): Ditto.
17762         (TARGET_SETUP_INCOMING_VARARGS): Ditto.
17763         (TARGET_STRICT_ARGUMENT_NAMING): Ditto.
17764         (TARGET_MUST_PASS_IN_STACK): Ditto.
17765         (TARGET_PASS_BY_REFERENCE): Ditto.
17766         (TARGET_ARG_PARTIAL_BYTES): Ditto.
17767         (TARGET_FUNCTION_ARG): Ditto.
17768         (TARGET_FUNCTION_ARG_ADVANCE): Ditto.
17769         (TARGET_FUNCTION_ARG_BOUNDARY): Ditto.
17770         (TARGET_SCALAR_MODE_SUPPORTED_P): Ditto.
17771         (TARGET_INIT_BUILTINS): Ditto.
17772         (loongarch_expand_vec_perm_const_1): Ditto.
17773         (loongarch_expand_vec_perm_const_2): Ditto.
17774         (loongarch_vectorize_vec_perm_const): Ditto.
17775         (loongarch_cpu_sched_reassociation_width): Ditto.
17776         (loongarch_sched_reassociation_width): Ditto.
17777         (loongarch_expand_vector_extract): Ditto.
17778         (emit_reduc_half): Ditto.
17779         (loongarch_expand_vector_reduc): Ditto.
17780         (loongarch_expand_vec_unpack): Ditto.
17781         (loongarch_lsx_vec_parallel_const_half): Ditto.
17782         (loongarch_constant_elt_p): Ditto.
17783         (loongarch_gen_const_int_vector_shuffle): Ditto.
17784         (loongarch_expand_vector_init): Ditto.
17785         (loongarch_expand_lsx_cmp): Ditto.
17786         (loongarch_expand_vec_cond_expr): Ditto.
17787         (loongarch_expand_vec_cond_mask_expr): Ditto.
17788         (loongarch_expand_vec_cmp): Ditto.
17789         (loongarch_case_values_threshold): Ditto.
17790         (loongarch_build_const_vector): Ditto.
17791         (loongarch_build_signbit_mask): Ditto.
17792         (loongarch_builtin_support_vector_misalignment): Ditto.
17793         (TARGET_ASM_ALIGNED_HI_OP): Ditto.
17794         (TARGET_ASM_ALIGNED_SI_OP): Ditto.
17795         (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST): Ditto.
17796         (TARGET_VECTOR_MODE_SUPPORTED_P): Ditto.
17797         (TARGET_VECTORIZE_PREFERRED_SIMD_MODE): Ditto.
17798         (TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_MODES): Ditto.
17799         (TARGET_VECTORIZE_VEC_PERM_CONST): Ditto.
17800         (TARGET_SCHED_REASSOCIATION_WIDTH): Ditto.
17801         (TARGET_CASE_VALUES_THRESHOLD): Ditto.
17802         (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Ditto.
17803         (TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT): Ditto.
17804         * config/loongarch/loongarch.h (TARGET_SUPPORTS_WIDE_INT): Ditto.
17805         (UNITS_PER_LSX_REG): Ditto.
17806         (BITS_PER_LSX_REG): Ditto.
17807         (BIGGEST_ALIGNMENT): Ditto.
17808         (LSX_REG_FIRST): Ditto.
17809         (LSX_REG_LAST): Ditto.
17810         (LSX_REG_NUM): Ditto.
17811         (LSX_REG_P): Ditto.
17812         (LSX_REG_RTX_P): Ditto.
17813         (IMM13_OPERAND): Ditto.
17814         (LSX_SUPPORTED_MODE_P): Ditto.
17815         * config/loongarch/loongarch.md (unknown,add,sub,not,nor,and,or,xor): Ditto.
17816         (unknown,add,sub,not,nor,and,or,xor,simd_add): Ditto.
17817         (unknown,none,QI,HI,SI,DI,TI,SF,DF,TF,FCC): Ditto.
17818         (mode" ): Ditto.
17819         (DF): Ditto.
17820         (SF): Ditto.
17821         (sf): Ditto.
17822         (DI): Ditto.
17823         (SI): Ditto.
17824         * config/loongarch/loongarch.opt: Ditto.
17825         * config/loongarch/predicates.md (const_lsx_branch_operand): Ditto.
17826         (const_uimm3_operand): Ditto.
17827         (const_8_to_11_operand): Ditto.
17828         (const_12_to_15_operand): Ditto.
17829         (const_uimm4_operand): Ditto.
17830         (const_uimm6_operand): Ditto.
17831         (const_uimm7_operand): Ditto.
17832         (const_uimm8_operand): Ditto.
17833         (const_imm5_operand): Ditto.
17834         (const_imm10_operand): Ditto.
17835         (const_imm13_operand): Ditto.
17836         (reg_imm10_operand): Ditto.
17837         (aq8b_operand): Ditto.
17838         (aq8h_operand): Ditto.
17839         (aq8w_operand): Ditto.
17840         (aq8d_operand): Ditto.
17841         (aq10b_operand): Ditto.
17842         (aq10h_operand): Ditto.
17843         (aq10w_operand): Ditto.
17844         (aq10d_operand): Ditto.
17845         (aq12b_operand): Ditto.
17846         (aq12h_operand): Ditto.
17847         (aq12w_operand): Ditto.
17848         (aq12d_operand): Ditto.
17849         (const_m1_operand): Ditto.
17850         (reg_or_m1_operand): Ditto.
17851         (const_exp_2_operand): Ditto.
17852         (const_exp_4_operand): Ditto.
17853         (const_exp_8_operand): Ditto.
17854         (const_exp_16_operand): Ditto.
17855         (const_exp_32_operand): Ditto.
17856         (const_0_or_1_operand): Ditto.
17857         (const_0_to_3_operand): Ditto.
17858         (const_0_to_7_operand): Ditto.
17859         (const_2_or_3_operand): Ditto.
17860         (const_4_to_7_operand): Ditto.
17861         (const_8_to_15_operand): Ditto.
17862         (const_16_to_31_operand): Ditto.
17863         (qi_mask_operand): Ditto.
17864         (hi_mask_operand): Ditto.
17865         (si_mask_operand): Ditto.
17866         (d_operand): Ditto.
17867         (db4_operand): Ditto.
17868         (db7_operand): Ditto.
17869         (db8_operand): Ditto.
17870         (ib3_operand): Ditto.
17871         (sb4_operand): Ditto.
17872         (sb5_operand): Ditto.
17873         (sb8_operand): Ditto.
17874         (sd8_operand): Ditto.
17875         (ub4_operand): Ditto.
17876         (ub8_operand): Ditto.
17877         (uh4_operand): Ditto.
17878         (uw4_operand): Ditto.
17879         (uw5_operand): Ditto.
17880         (uw6_operand): Ditto.
17881         (uw8_operand): Ditto.
17882         (addiur2_operand): Ditto.
17883         (addiusp_operand): Ditto.
17884         (andi16_operand): Ditto.
17885         (movep_src_register): Ditto.
17886         (movep_src_operand): Ditto.
17887         (fcc_reload_operand): Ditto.
17888         (muldiv_target_operand): Ditto.
17889         (const_vector_same_val_operand): Ditto.
17890         (const_vector_same_simm5_operand): Ditto.
17891         (const_vector_same_uimm5_operand): Ditto.
17892         (const_vector_same_ximm5_operand): Ditto.
17893         (const_vector_same_uimm6_operand): Ditto.
17894         (par_const_vector_shf_set_operand): Ditto.
17895         (reg_or_vector_same_val_operand): Ditto.
17896         (reg_or_vector_same_simm5_operand): Ditto.
17897         (reg_or_vector_same_uimm5_operand): Ditto.
17898         (reg_or_vector_same_ximm5_operand): Ditto.
17899         (reg_or_vector_same_uimm6_operand): Ditto.
17900         * doc/md.texi: Ditto.
17901         * config/loongarch/lsx.md: New file.
17903 2023-09-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
17905         * config/riscv/riscv-protos.h (lookup_vector_type_attribute): Export global.
17906         (get_all_predecessors): New function.
17907         (get_all_successors): Ditto.
17908         * config/riscv/riscv-v.cc (get_all_predecessors): Ditto.
17909         (get_all_successors): Ditto.
17910         * config/riscv/riscv-vector-builtins.cc (sizeless_type_p): Export global.
17911         * config/riscv/riscv-vsetvl.cc (get_all_predecessors): Remove it.
17913 2023-09-05  Claudiu Zissulescu  <claziss@gmail.com>
17915         * config/arc/arc-protos.h (arc_output_addsi): Remove declaration.
17916         (split_addsi): Likewise.
17917         * config/arc/arc.cc (arc_print_operand): Add/repurpose 's', 'S',
17918         'N', 'x', and 'J' code letters.
17919         (arc_output_addsi): Make it static.
17920         (split_addsi): Remove it.
17921         * config/arc/arc.h (UNSIGNED_INT*): New defines.
17922         (SINNED_INT*): Likewise.
17923         * config/arc/arc.md (type): Add add, sub, bxor types.
17924         (tst_movb): Change code letter from 's' to 'x'.
17925         (andsi3_i): Likewise.
17926         (addsi3_mixed): Refurbish the pattern.
17927         (call_i): Change code letter from 'S' to 'J'.
17928         * config/arc/arc700.md: Add newly introduced types.
17929         * config/arc/arcHS.md: Likewsie.
17930         * config/arc/arcHS4x.md: Likewise.
17931         * config/arc/constraints.md (Cca, CL2, Csp, C2a): Remove it.
17932         (CM4): Update description.
17933         (CP4, C6u, C6n, CIs, C4p): New constraint.
17935 2023-09-05  Claudiu Zissulescu  <claziss@gmail.com>
17937         * common/config/arc/arc-common.cc (arc_option_optimization_table):
17938         Remove mbbit_peephole.
17939         * config/arc/arc.md (UNSPEC_ARC_DIRECT): Remove.
17940         (store_direct): Likewise.
17941         (BBIT peephole2): Likewise.
17942         * config/arc/arc.opt (mbbit-peephole): Ignore option.
17943         * doc/invoke.texi (mbbit-peephole): Update document.
17945 2023-09-05  Jakub Jelinek  <jakub@redhat.com>
17947         * tree-ssa-tail-merge.cc (replace_block_by): Fix a comment typo:
17948         avreage -> average.
17950 2023-09-05  Yang Yujie  <yangyujie@loongson.cn>
17952         * config/loongarch/loongarch.h (CC1_SPEC): Mark normalized
17953         options passed from driver to gnat1 as explicit for multilib.
17955 2023-09-05  Yang Yujie  <yangyujie@loongson.cn>
17957         * config.gcc: add loongarch*-elf target.
17958         * config/loongarch/elf.h: New file.
17959         Link against newlib by default.
17961 2023-09-05  Yang Yujie  <yangyujie@loongson.cn>
17963         * config.gcc: use -mstrict-align for building libraries
17964         if --with-strict-align-lib is given.
17965         * doc/install.texi: likewise.
17967 2023-09-05  Yang Yujie  <yangyujie@loongson.cn>
17969         * config/loongarch/loongarch-c.cc: Export macros
17970         "__loongarch_{arch,tune}" in the preprocessor.
17972 2023-09-05  Yang Yujie  <yangyujie@loongson.cn>
17974         * config.gcc: Make --with-abi= obsolete, decide the default ABI
17975         with target triplet.  Allow specifying multilib library build
17976         options with --with-multilib-list and --with-multilib-default.
17977         * config/loongarch/t-linux: Likewise.
17978         * config/loongarch/genopts/loongarch-strings: Likewise.
17979         * config/loongarch/loongarch-str.h: Likewise.
17980         * doc/install.texi: Likewise.
17981         * config/loongarch/genopts/loongarch.opt.in: Introduce
17982         -m[no-]l[a]sx options.  Only process -m*-float and
17983         -m[no-]l[a]sx in the GCC driver.
17984         * config/loongarch/loongarch.opt: Likewise.
17985         * config/loongarch/la464.md: Likewise.
17986         * config/loongarch/loongarch-c.cc: Likewise.
17987         * config/loongarch/loongarch-cpu.cc: Likewise.
17988         * config/loongarch/loongarch-cpu.h: Likewise.
17989         * config/loongarch/loongarch-def.c: Likewise.
17990         * config/loongarch/loongarch-def.h: Likewise.
17991         * config/loongarch/loongarch-driver.cc: Likewise.
17992         * config/loongarch/loongarch-driver.h: Likewise.
17993         * config/loongarch/loongarch-opts.cc: Likewise.
17994         * config/loongarch/loongarch-opts.h: Likewise.
17995         * config/loongarch/loongarch.cc: Likewise.
17996         * doc/invoke.texi: Likewise.
17998 2023-09-05  liuhongt  <hongtao.liu@intel.com>
18000         * config/i386/sse.md: (V8BFH_128): Renamed to ..
18001         (VHFBF_128): .. this.
18002         (V16BFH_256): Renamed to ..
18003         (VHFBF_256): .. this.
18004         (avx512f_mov<mode>): Extend to V_128.
18005         (vcvtnee<bf16_ph>2ps_<mode>): Changed to VHFBF_128.
18006         (vcvtneo<bf16_ph>2ps_<mode>): Ditto.
18007         (vcvtnee<bf16_ph>2ps_<mode>): Changed to VHFBF_256.
18008         (vcvtneo<bf16_ph>2ps_<mode>): Ditto.
18009         * config/i386/i386-expand.cc (expand_vec_perm_blend):
18010         Canonicalize vec_merge.
18012 2023-09-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
18014         * config/riscv/riscv-opts.h (enum riscv_autovec_lmul_enum): Fix Dynamic status.
18015         * config/riscv/riscv-v.cc (preferred_simd_mode): Ditto.
18016         (autovectorize_vector_modes): Ditto.
18017         (vectorize_related_mode): Ditto.
18019 2023-09-04  Iain Sandoe  <iain@sandoe.co.uk>
18021         * config/rs6000/darwin.h (LIB_SPEC): Include libSystemStubs for
18022         all 32b Darwin PowerPC cases.
18024 2023-09-04  Iain Sandoe  <iain@sandoe.co.uk>
18026         * config/darwin-sections.def (static_init_section): Add the
18027         __TEXT,__StaticInit section.
18028         * config/darwin.cc (darwin_function_section): Use the static init
18029         section for global initializers, to match other platform toolchains.
18031 2023-09-04  Iain Sandoe  <iain@sandoe.co.uk>
18033         * config/darwin-sections.def (darwin_exception_section): Move to
18034         the __TEXT segment.
18035         * config/darwin.cc (darwin_emit_except_table_label): Align before
18036         the exception table label.
18037         * config/darwin.h (ASM_PREFERRED_EH_DATA_FORMAT): Use indirect PC-
18038         relative 4byte relocs.
18040 2023-09-04  Iain Sandoe  <iain@sandoe.co.uk>
18042         * config/darwin.cc (dump_machopic_symref_flags): New.
18043         (debug_machopic_symref_flags): New.
18045 2023-09-04  Pan Li  <pan2.li@intel.com>
18047         * config/riscv/riscv-vector-builtins-types.def
18048         (vfloat16mf4_t): Add FP16 intrinsic def.
18049         (vfloat16mf2_t): Ditto.
18050         (vfloat16m1_t): Ditto.
18051         (vfloat16m2_t): Ditto.
18052         (vfloat16m4_t): Ditto.
18053         (vfloat16m8_t): Ditto.
18055 2023-09-04  Jiufu Guo  <guojiufu@linux.ibm.com>
18057         PR tree-optimization/108757
18058         * match.pd ((X - N * M) / N): New pattern.
18059         ((X + N * M) / N): New pattern.
18060         ((X + C) div_rshift N): New pattern.
18062 2023-09-04  Guo Jie  <guojie@loongson.cn>
18064         * config/loongarch/loongarch.md: Support 'G' -> 'k' in
18065         movsf_hardfloat and movdf_hardfloat.
18067 2023-09-04  Lulu Cheng  <chenglulu@loongson.cn>
18069         * config/loongarch/loongarch.cc (loongarch_extend_comparands):
18070         In unsigned QImode test, check for sign extended subreg and/or
18071         constant operands, and do a sign extension in that case.
18072         * config/loongarch/loongarch.md (TARGET_64BIT): Define
18073         template cbranchqi4.
18075 2023-09-04  Lulu Cheng  <chenglulu@loongson.cn>
18077         * config/loongarch/loongarch.md: Allows fixed-point values to be loaded
18078         from memory into floating-point registers.
18080 2023-09-03  Pan Li  <pan2.li@intel.com>
18082         * config/riscv/autovec-vls.md (<optab><mode>3): New pattern for
18083         fmax/fmin
18084         * config/riscv/vector.md: Add VLS modes to vfmax/vfmin.
18086 2023-09-02  Mikael Morin  <mikael@gcc.gnu.org>
18088         * tree-diagnostic.cc (tree_diagnostics_defaults): Delete allocated
18089         pointer before overwriting it.
18091 2023-09-02  chenxiaolong  <chenxiaolong@loongson.cn>
18093         * config/loongarch/loongarch-builtins.cc (loongarch_init_builtins):
18094         Associate the __float128 type to float128_type_node so that it can
18095         be recognized by the compiler.
18096         * config/loongarch/loongarch-c.cc (loongarch_cpu_cpp_builtins):
18097         Add the flag "FLOAT128_TYPE" to gcc and associate a function
18098         with the suffix "q" to "f128".
18099         * doc/extend.texi:Added support for 128-bit floating-point functions on
18100         the LoongArch architecture.
18102 2023-09-01  Jakub Jelinek  <jakub@redhat.com>
18104         PR c++/111069
18105         * common.opt (fabi-version=): Document version 19.
18106         * doc/invoke.texi (-fabi-version=): Likewise.
18108 2023-09-01  Lehua Ding  <lehua.ding@rivai.ai>
18110         * config/riscv/autovec-opt.md (*cond_<optab><mode><vconvert>):
18111         New combine pattern.
18112         (*cond_<float_cvt><vconvert><mode>): Ditto.
18113         (*cond_<optab><vnconvert><mode>): Ditto.
18114         (*cond_<float_cvt><vnconvert><mode>): Ditto.
18115         (*cond_<optab><mode><vnconvert>): Ditto.
18116         (*cond_<float_cvt><mode><vnconvert>2): Ditto.
18117         * config/riscv/autovec.md (<optab><mode><vconvert>2): Adjust.
18118         (<float_cvt><vconvert><mode>2): Adjust.
18119         (<optab><vnconvert><mode>2): Adjust.
18120         (<float_cvt><vnconvert><mode>2): Adjust.
18121         (<optab><mode><vnconvert>2): Adjust.
18122         (<float_cvt><mode><vnconvert>2): Adjust.
18123         * config/riscv/riscv-v.cc (needs_fp_rounding): Add INT->FP extend.
18125 2023-09-01  Lehua Ding  <lehua.ding@rivai.ai>
18127         * config/riscv/autovec-opt.md (*cond_extend<v_double_trunc><mode>):
18128         New combine pattern.
18129         (*cond_trunc<mode><v_double_trunc>): Ditto.
18130         * config/riscv/autovec.md: Adjust.
18131         * config/riscv/riscv-v.cc (needs_fp_rounding): Add FP extend.
18133 2023-09-01  Lehua Ding  <lehua.ding@rivai.ai>
18135         * config/riscv/autovec-opt.md (*cond_<optab><v_double_trunc><mode>):
18136         New combine pattern.
18137         (*cond_<optab><v_quad_trunc><mode>): Ditto.
18138         (*cond_<optab><v_oct_trunc><mode>): Ditto.
18139         (*cond_trunc<mode><v_double_trunc>): Ditto.
18140         * config/riscv/autovec.md (<optab><v_quad_trunc><mode>2): Adjust.
18141         (<optab><v_oct_trunc><mode>2): Ditto.
18143 2023-09-01  Lehua Ding  <lehua.ding@rivai.ai>
18145         * config/riscv/autovec.md: Adjust.
18146         * config/riscv/riscv-protos.h (expand_cond_len_unop): Ditto.
18147         (expand_cond_len_binop): Ditto.
18148         * config/riscv/riscv-v.cc (needs_fp_rounding): Ditto.
18149         (expand_cond_len_op): Ditto.
18150         (expand_cond_len_unop): Ditto.
18151         (expand_cond_len_binop): Ditto.
18152         (expand_cond_len_ternop): Ditto.
18154 2023-09-01  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
18156         * config/riscv/riscv-v.cc (autovectorize_vector_modes): Enable
18157         VECT_COMPARE_COSTS by default.
18159 2023-09-01  Robin Dapp  <rdapp@ventanamicro.com>
18161         * config/riscv/autovec.md (vec_extract<mode>qi): New expander.
18163 2023-09-01  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
18165         * config/riscv/riscv-opts.h (enum riscv_autovec_lmul_enum): Add
18166         dynamic enum.
18167         * config/riscv/riscv.opt: Add dynamic compile option.
18169 2023-09-01  Pan Li  <pan2.li@intel.com>
18171         * config/riscv/autovec-vls.md (<optab><mode>3): New pattern for
18172         vls floating-point autovec.
18173         * config/riscv/vector-iterators.md: New iterator for
18174         floating-point V and VLS.
18175         * config/riscv/vector.md: Add VLS to floating-point binop.
18177 2023-09-01  Andrew Pinski  <apinski@marvell.com>
18179         PR tree-optimization/19832
18180         * match.pd: Add pattern to optimize
18181         `(a != b) ? a OP b : c`.
18183 2023-09-01  Lulu Cheng  <chenglulu@loongson.cn>
18184             Guo Jie  <guojie@loongson.cn>
18186         PR target/110484
18187         * config/loongarch/loongarch.cc (loongarch_emit_stack_tie): Use the
18188         frame_pointer_needed to determine whether to use the $fp register.
18190 2023-08-31  Andrew Pinski  <apinski@marvell.com>
18192         PR tree-optimization/110915
18193         * match.pd (min_value, max_value): Extend to vector constants.
18195 2023-08-31  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
18197         * config.in: Regenerate.
18198         * config/darwin-c.cc: Change spelling to macOS.
18199         * config/darwin-driver.cc: Likewise.
18200         * config/darwin.h: Likewise.
18201         * configure.ac: Likewise.
18202         * doc/contrib.texi: Likewise.
18203         * doc/extend.texi: Likewise.
18204         * doc/invoke.texi: Likewise.
18205         * doc/plugins.texi: Likewise.
18206         * doc/tm.texi: Regenerate.
18207         * doc/tm.texi.in: Change spelling to macOS.
18208         * plugin.cc: Likewise.
18210 2023-08-31  Pan Li  <pan2.li@intel.com>
18212         * config/riscv/autovec-opt.md: Add FRM_REGNUM to vfnmadd/vfnmacc.
18213         * config/riscv/autovec.md: Ditto.
18215 2023-08-31  Pan Li  <pan2.li@intel.com>
18217         * config/riscv/autovec-opt.md: Add FRM_REGNUM to vfnmsac/vfnmsub
18218         * config/riscv/autovec.md: Ditto.
18220 2023-08-31  Richard Sandiford  <richard.sandiford@arm.com>
18222         * config/aarch64/aarch64.md (untyped_call): Emit a call_value
18223         rather than a call.  List each possible destination register
18224         in the call pattern.
18226 2023-08-31  Pan Li  <pan2.li@intel.com>
18228         * config/riscv/autovec-opt.md: Add FRM_REGNUM to vfmsac/vfmsub
18229         * config/riscv/autovec.md: Ditto.
18231 2023-08-31  Pan Li  <pan2.li@intel.com>
18232             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
18234         * config/riscv/autovec-opt.md: Add FRM_REGNUM to vfmadd/vfmacc.
18235         * config/riscv/autovec.md: Ditto.
18236         * config/riscv/vector-iterators.md: Add UNSPEC_VFFMA.
18238 2023-08-31  Palmer Dabbelt  <palmer@rivosinc.com>
18240         * config/riscv/autovec.md (shifts): Use
18241         vector_scalar_shift_operand.
18242         * config/riscv/predicates.md (vector_scalar_shift_operand): New
18243         predicate.
18245 2023-08-31  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
18247         * config.gcc: Add vector cost model framework for RVV.
18248         * config/riscv/riscv.cc (riscv_vectorize_create_costs): Ditto.
18249         (TARGET_VECTORIZE_CREATE_COSTS): Ditto.
18250         * config/riscv/t-riscv: Ditto.
18251         * config/riscv/riscv-vector-costs.cc: New file.
18252         * config/riscv/riscv-vector-costs.h: New file.
18254 2023-08-31  Jeevitha Palanisamy  <jeevitha@linux.ibm.com>
18256         PR target/110411
18257         * config/rs6000/mma.md (define_insn_and_split movoo): Disallow
18258         AltiVec address operands.
18259         (define_insn_and_split movxo): Likewise.
18260         * config/rs6000/predicates.md (vsx_quad_dform_memory_operand): Remove
18261         redundant mode size check.
18263 2023-08-31  Lehua Ding  <lehua.ding@rivai.ai>
18265         * config/riscv/riscv-protos.h (IS_AGNOSTIC): Move to here.
18266         * config/riscv/riscv-v.cc (gen_no_side_effects_vsetvl_rtx):
18267         Change to default policy.
18268         * config/riscv/riscv-vector-builtins-bases.cc: Change to default policy.
18269         * config/riscv/riscv-vsetvl.h (IS_AGNOSTIC): Delete.
18270         * config/riscv/riscv.cc (riscv_print_operand): Use IS_AGNOSTIC to test.
18272 2023-08-31  Lehua Ding  <lehua.ding@rivai.ai>
18274         * config/riscv/autovec-opt.md: Adjust.
18275         * config/riscv/autovec-vls.md: Ditto.
18276         * config/riscv/autovec.md: Ditto.
18277         * config/riscv/riscv-protos.h (enum insn_type): Add insn_type.
18278         (enum insn_flags): Add insn flags.
18279         (emit_vlmax_insn): Adjust.
18280         (emit_vlmax_fp_insn): Delete.
18281         (emit_vlmax_ternary_insn): Delete.
18282         (emit_vlmax_fp_ternary_insn): Delete.
18283         (emit_nonvlmax_insn): Adjust.
18284         (emit_vlmax_slide_insn): Delete.
18285         (emit_nonvlmax_slide_tu_insn): Delete.
18286         (emit_vlmax_merge_insn): Delete.
18287         (emit_vlmax_cmp_insn): Delete.
18288         (emit_vlmax_cmp_mu_insn): Delete.
18289         (emit_vlmax_masked_mu_insn): Delete.
18290         (emit_scalar_move_insn): Delete.
18291         (emit_nonvlmax_integer_move_insn): Delete.
18292         (emit_vlmax_insn_lra): Add.
18293         * config/riscv/riscv-v.cc (get_mask_mode_from_insn_flags): New.
18294         (emit_vlmax_insn): Adjust.
18295         (emit_nonvlmax_insn): Adjust.
18296         (emit_vlmax_insn_lra): Add.
18297         (emit_vlmax_fp_insn): Delete.
18298         (emit_vlmax_ternary_insn): Delete.
18299         (emit_vlmax_fp_ternary_insn): Delete.
18300         (emit_vlmax_slide_insn): Delete.
18301         (emit_nonvlmax_slide_tu_insn): Delete.
18302         (emit_nonvlmax_slide_insn): Delete.
18303         (emit_vlmax_merge_insn): Delete.
18304         (emit_vlmax_cmp_insn): Delete.
18305         (emit_vlmax_cmp_mu_insn): Delete.
18306         (emit_vlmax_masked_insn): Delete.
18307         (emit_nonvlmax_masked_insn): Delete.
18308         (emit_vlmax_masked_store_insn): Delete.
18309         (emit_nonvlmax_masked_store_insn): Delete.
18310         (emit_vlmax_masked_mu_insn): Delete.
18311         (emit_vlmax_masked_fp_mu_insn): Delete.
18312         (emit_nonvlmax_tu_insn): Delete.
18313         (emit_nonvlmax_fp_tu_insn): Delete.
18314         (emit_nonvlmax_tumu_insn): Delete.
18315         (emit_nonvlmax_fp_tumu_insn): Delete.
18316         (emit_scalar_move_insn): Delete.
18317         (emit_cpop_insn): Delete.
18318         (emit_vlmax_integer_move_insn): Delete.
18319         (emit_nonvlmax_integer_move_insn): Delete.
18320         (emit_vlmax_gather_insn): Delete.
18321         (emit_vlmax_masked_gather_mu_insn): Delete.
18322         (emit_vlmax_compress_insn): Delete.
18323         (emit_nonvlmax_compress_insn): Delete.
18324         (emit_vlmax_reduction_insn): Delete.
18325         (emit_vlmax_fp_reduction_insn): Delete.
18326         (emit_nonvlmax_fp_reduction_insn): Delete.
18327         (expand_vec_series): Adjust.
18328         (expand_const_vector): Adjust.
18329         (legitimize_move): Adjust.
18330         (sew64_scalar_helper): Adjust.
18331         (expand_tuple_move): Adjust.
18332         (expand_vector_init_insert_elems): Adjust.
18333         (expand_vector_init_merge_repeating_sequence): Adjust.
18334         (expand_vec_cmp): Adjust.
18335         (expand_vec_cmp_float): Adjust.
18336         (expand_vec_perm): Adjust.
18337         (shuffle_merge_patterns): Adjust.
18338         (shuffle_compress_patterns): Adjust.
18339         (shuffle_decompress_patterns): Adjust.
18340         (expand_load_store): Adjust.
18341         (expand_cond_len_op): Adjust.
18342         (expand_cond_len_unop): Adjust.
18343         (expand_cond_len_binop): Adjust.
18344         (expand_gather_scatter): Adjust.
18345         (expand_cond_len_ternop): Adjust.
18346         (expand_reduction): Adjust.
18347         (expand_lanes_load_store): Adjust.
18348         (expand_fold_extract_last): Adjust.
18349         * config/riscv/riscv.cc (vector_zero_call_used_regs): Adjust.
18350         * config/riscv/vector.md: Adjust.
18352 2023-08-31  Haochen Gui  <guihaoc@gcc.gnu.org>
18354         PR target/96762
18355         * config/rs6000/rs6000-string.cc (expand_block_move): Call vector
18356         load/store with length only on 64-bit Power10.
18358 2023-08-31  Claudiu Zissulescu  <claziss@gmail.com>
18360         * config/arc/arc.cc (arc_split_mov_const): Use LSL16 only when
18361         SWAP option is enabled.
18362         * config/arc/arc.md (ashlsi2_cnt16): Likewise.
18364 2023-08-31  Stamatis Markianos-Wright  <stam.markianos-wright@arm.com>
18366         * config/arm/arm-mve-builtins-base.cc (vcaddq_rot90, vcaddq_rot270):
18367         Use common insn for signed and unsigned front-end definitions.
18368         * config/arm/arm_mve_builtins.def
18369         (vcaddq_rot90_m_u, vcaddq_rot270_m_u): Make common.
18370         (vcaddq_rot90_m_s, vcaddq_rot270_m_s): Remove.
18371         * config/arm/iterators.md (mve_insn): Merge signed and unsigned defs.
18372         (isu): Likewise.
18373         (rot): Likewise.
18374         (mve_rot): Likewise.
18375         (supf): Likewise.
18376         (VxCADDQ_M): Likewise.
18377         * config/arm/unspecs.md (unspec): Likewise.
18378         * config/arm/mve.md: Fix minor typo.
18380 2023-08-31  liuhongt  <hongtao.liu@intel.com>
18382         * config/i386/sse.md (<avx512>_blendm<mode>): Merge
18383         VF_AVX512HFBFVL into VI12HFBF_AVX512VL.
18384         (VF_AVX512HFBF16): Renamed to VHFBF.
18385         (VF_AVX512FP16VL): Renamed to VHF_AVX512VL.
18386         (VF_AVX512FP16): Removed.
18387         (div<mode>3): Adjust VF_AVX512FP16VL to VHF_AVX512VL.
18388         (avx512fp16_rcp<mode>2<mask_name>): Ditto.
18389         (rsqrt<mode>2): Ditto.
18390         (<sse>_rsqrt<mode>2<mask_name>): Ditto.
18391         (vcond<mode><code>): Ditto.
18392         (vcond<sseintvecmodelower><mode>): Ditto.
18393         (<avx512>_fmaddc_<mode>_mask1<round_expand_name>): Ditto.
18394         (<avx512>_fmaddc_<mode>_maskz<round_expand_name>): Ditto.
18395         (<avx512>_fcmaddc_<mode>_mask1<round_expand_name>): Ditto.
18396         (<avx512>_fcmaddc_<mode>_maskz<round_expand_name>): Ditto.
18397         (cmla<conj_op><mode>4): Ditto.
18398         (fma_<mode>_fadd_fmul): Ditto.
18399         (fma_<mode>_fadd_fcmul): Ditto.
18400         (fma_<complexopname>_<mode>_fma_zero): Ditto.
18401         (fma_<mode>_fmaddc_bcst): Ditto.
18402         (fma_<mode>_fcmaddc_bcst): Ditto.
18403         (<avx512>_<complexopname>_<mode>_mask<round_name>): Ditto.
18404         (cmul<conj_op><mode>3): Ditto.
18405         (<avx512>_<complexopname>_<mode><maskc_name><round_name>):
18406         Ditto.
18407         (vec_unpacks_lo_<mode>): Ditto.
18408         (vec_unpacks_hi_<mode>): Ditto.
18409         (vec_unpack_<fixprefix>fix_trunc_lo_<mode>): Ditto.
18410         (vec_unpack_<fixprefix>fix_trunc_lo_<mode>): Ditto.
18411         (*vec_extract<mode>_0): Ditto.
18412         (*<avx512>_cmp<mode>3): Extend to V48H_AVX512VL.
18414 2023-08-31  Lehua Ding  <lehua.ding@rivai.ai>
18416         PR target/111234
18417         * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): Remove condition.
18419 2023-08-31  Jiufu Guo  <guojiufu@linux.ibm.com>
18421         * range-op-mixed.h (operator_plus::overflow_free_p): New declare.
18422         (operator_minus::overflow_free_p): New declare.
18423         (operator_mult::overflow_free_p): New declare.
18424         * range-op.cc (range_op_handler::overflow_free_p): New function.
18425         (range_operator::overflow_free_p): New default function.
18426         (operator_plus::overflow_free_p): New function.
18427         (operator_minus::overflow_free_p): New function.
18428         (operator_mult::overflow_free_p): New function.
18429         * range-op.h (range_op_handler::overflow_free_p): New declare.
18430         (range_operator::overflow_free_p): New declare.
18431         * value-range.cc (irange::nonnegative_p): New function.
18432         (irange::nonpositive_p): New function.
18433         * value-range.h (irange::nonnegative_p): New declare.
18434         (irange::nonpositive_p): New declare.
18436 2023-08-30  Dimitar Dimitrov  <dimitar@dinux.eu>
18438         PR target/106562
18439         * config/pru/predicates.md (const_0_operand): New predicate.
18440         (pru_cstore_comparison_operator): Ditto.
18441         * config/pru/pru.md (cstore<mode>4): New pattern.
18442         (cstoredi4): Ditto.
18444 2023-08-30  Richard Biener  <rguenther@suse.de>
18446         PR tree-optimization/111228
18447         * match.pd ((vec_perm (vec_perm ..) @5 ..) -> (vec_perm @x @5 ..)):
18448         New simplifications.
18450 2023-08-30  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
18452         * config/riscv/autovec.md (movmisalign<mode>): Delete.
18454 2023-08-30  Die Li  <lidie@eswincomputing.com>
18455             Fei Gao  <gaofei@eswincomputing.com>
18457         * config/riscv/peephole.md: New pattern.
18458         * config/riscv/predicates.md (a0a1_reg_operand): New predicate.
18459         (zcmp_mv_sreg_operand): New predicate.
18460         * config/riscv/riscv.md: New predicate.
18461         * config/riscv/zc.md (*mva01s<X:mode>): New pattern.
18462         (*mvsa01<X:mode>): New pattern.
18464 2023-08-30  Fei Gao  <gaofei@eswincomputing.com>
18466         * config/riscv/riscv.cc
18467         (riscv_zcmp_can_use_popretz): true if popretz can be used
18468         (riscv_gen_multi_pop_insn): interface to generate cm.pop[ret][z]
18469         (riscv_expand_epilogue): expand cm.pop[ret][z] in epilogue
18470         * config/riscv/riscv.md: define A0_REGNUM
18471         * config/riscv/zc.md
18472         (@gpr_multi_popretz_up_to_ra_<mode>): md for popretz ra
18473         (@gpr_multi_popretz_up_to_s0_<mode>): md for popretz ra, s0
18474         (@gpr_multi_popretz_up_to_s1_<mode>): likewise
18475         (@gpr_multi_popretz_up_to_s2_<mode>): likewise
18476         (@gpr_multi_popretz_up_to_s3_<mode>): likewise
18477         (@gpr_multi_popretz_up_to_s4_<mode>): likewise
18478         (@gpr_multi_popretz_up_to_s5_<mode>): likewise
18479         (@gpr_multi_popretz_up_to_s6_<mode>): likewise
18480         (@gpr_multi_popretz_up_to_s7_<mode>): likewise
18481         (@gpr_multi_popretz_up_to_s8_<mode>): likewise
18482         (@gpr_multi_popretz_up_to_s9_<mode>): likewise
18483         (@gpr_multi_popretz_up_to_s11_<mode>): likewise
18485 2023-08-30  Fei Gao  <gaofei@eswincomputing.com>
18487         * config/riscv/iterators.md
18488         (slot0_offset): slot 0 offset in stack GPRs area in bytes
18489         (slot1_offset): slot 1 offset in stack GPRs area in bytes
18490         (slot2_offset): likewise
18491         (slot3_offset): likewise
18492         (slot4_offset): likewise
18493         (slot5_offset): likewise
18494         (slot6_offset): likewise
18495         (slot7_offset): likewise
18496         (slot8_offset): likewise
18497         (slot9_offset): likewise
18498         (slot10_offset): likewise
18499         (slot11_offset): likewise
18500         (slot12_offset): likewise
18501         * config/riscv/predicates.md
18502         (stack_push_up_to_ra_operand): predicates of stack adjust pushing ra
18503         (stack_push_up_to_s0_operand): predicates of stack adjust pushing ra, s0
18504         (stack_push_up_to_s1_operand): likewise
18505         (stack_push_up_to_s2_operand): likewise
18506         (stack_push_up_to_s3_operand): likewise
18507         (stack_push_up_to_s4_operand): likewise
18508         (stack_push_up_to_s5_operand): likewise
18509         (stack_push_up_to_s6_operand): likewise
18510         (stack_push_up_to_s7_operand): likewise
18511         (stack_push_up_to_s8_operand): likewise
18512         (stack_push_up_to_s9_operand): likewise
18513         (stack_push_up_to_s11_operand): likewise
18514         (stack_pop_up_to_ra_operand): predicates of stack adjust poping ra
18515         (stack_pop_up_to_s0_operand): predicates of stack adjust poping ra, s0
18516         (stack_pop_up_to_s1_operand): likewise
18517         (stack_pop_up_to_s2_operand): likewise
18518         (stack_pop_up_to_s3_operand): likewise
18519         (stack_pop_up_to_s4_operand): likewise
18520         (stack_pop_up_to_s5_operand): likewise
18521         (stack_pop_up_to_s6_operand): likewise
18522         (stack_pop_up_to_s7_operand): likewise
18523         (stack_pop_up_to_s8_operand): likewise
18524         (stack_pop_up_to_s9_operand): likewise
18525         (stack_pop_up_to_s11_operand): likewise
18526         * config/riscv/riscv-protos.h
18527         (riscv_zcmp_valid_stack_adj_bytes_p):declaration
18528         * config/riscv/riscv.cc (struct riscv_frame_info): comment change
18529         (riscv_avoid_multi_push): helper function of riscv_use_multi_push
18530         (riscv_use_multi_push): true if multi push is used
18531         (riscv_multi_push_sregs_count): num of sregs in multi-push
18532         (riscv_multi_push_regs_count): num of regs in multi-push
18533         (riscv_16bytes_align): align to 16 bytes
18534         (riscv_stack_align): moved to a better place
18535         (riscv_save_libcall_count): no functional change
18536         (riscv_compute_frame_info): add zcmp frame info
18537         (riscv_for_each_saved_reg): save or restore fprs in specified slot for zcmp
18538         (riscv_adjust_multi_push_cfi_prologue): adjust cfi for cm.push
18539         (riscv_gen_multi_push_pop_insn): gen function for multi push and pop
18540         (get_multi_push_fpr_mask): get mask for the fprs pushed by cm.push
18541         (riscv_expand_prologue): allocate stack by cm.push
18542         (riscv_adjust_multi_pop_cfi_epilogue): adjust cfi for cm.pop[ret]
18543         (riscv_expand_epilogue): allocate stack by cm.pop[ret]
18544         (zcmp_base_adj): calculate stack adjustment base size
18545         (zcmp_additional_adj): calculate stack adjustment additional size
18546         (riscv_zcmp_valid_stack_adj_bytes_p): check if stack adjustment valid
18547         * config/riscv/riscv.h (RETURN_ADDR_MASK): mask of ra
18548         (S0_MASK): likewise
18549         (S1_MASK): likewise
18550         (S2_MASK): likewise
18551         (S3_MASK): likewise
18552         (S4_MASK): likewise
18553         (S5_MASK): likewise
18554         (S6_MASK): likewise
18555         (S7_MASK): likewise
18556         (S8_MASK): likewise
18557         (S9_MASK): likewise
18558         (S10_MASK): likewise
18559         (S11_MASK): likewise
18560         (MULTI_PUSH_GPR_MASK): GPR_MASK that cm.push can cover at most
18561         (ZCMP_MAX_SPIMM): max spimm value
18562         (ZCMP_SP_INC_STEP): zcmp sp increment step
18563         (ZCMP_INVALID_S0S10_SREGS_COUNTS): num of s0-s10
18564         (ZCMP_S0S11_SREGS_COUNTS): num of s0-s11
18565         (ZCMP_MAX_GRP_SLOTS): max slots of pushing and poping in zcmp
18566         (CALLEE_SAVED_FREG_NUMBER): get x of fsx(fs0 ~ fs11)
18567         * config/riscv/riscv.md: include zc.md
18568         * config/riscv/zc.md: New file. machine description for zcmp
18570 2023-08-30  Jakub Jelinek  <jakub@redhat.com>
18572         PR tree-optimization/110914
18573         * tree-ssa-strlen.cc (strlen_pass::handle_builtin_memcpy): Don't call
18574         adjust_last_stmt unless len is known constant.
18576 2023-08-30  Jakub Jelinek  <jakub@redhat.com>
18578         PR tree-optimization/111015
18579         * gimple-ssa-store-merging.cc
18580         (imm_store_chain_info::output_merged_store): Use wi::mask and
18581         wide_int_to_tree instead of unsigned HOST_WIDE_INT shift and
18582         build_int_cst to build BIT_AND_EXPR mask.
18584 2023-08-30  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
18586         * tree-ssa-alias.cc (ref_maybe_used_by_call_p_1): Add MASK_LEN_ variant.
18587         (call_may_clobber_ref_p_1): Ditto.
18588         * tree-ssa-loop-ivopts.cc (get_mem_type_for_internal_fn): Ditto.
18589         (get_alias_ptr_type_for_ptr_address): Ditto.
18591 2023-08-30  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
18593         * config/riscv/riscv-vsetvl.cc
18594         (vector_insn_info::get_avl_or_vl_reg): Fix bug.
18596 2023-08-30  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
18598         * config/riscv/autovec-vls.md (movmisalign<mode>): New pattern.
18599         * config/riscv/riscv.cc (riscv_support_vector_misalignment): Support
18600         VLS misalign.
18602 2023-08-29  Philipp Tomsich  <philipp.tomsich@vrull.eu>
18604         * config/riscv/zicond.md: New splitters to rewrite single bit
18605         sign extension as the condition to a czero in the desired form.
18607 2023-08-29  David Malcolm  <dmalcolm@redhat.com>
18609         PR analyzer/99860
18610         * doc/invoke.texi: Add -Wanalyzer-overlapping-buffers.
18612 2023-08-29  David Malcolm  <dmalcolm@redhat.com>
18614         PR analyzer/99860
18615         * Makefile.in (ANALYZER_OBJS): Add analyzer/ranges.o.
18617 2023-08-29  Jin Ma  <jinma@linux.alibaba.com>
18619         * config/riscv/riscv.cc (riscv_float_const_rtx_index_for_fli):
18620         zvfh can generate zfa extended instruction fli.h, just like zfh.
18622 2023-08-29  Edwin Lu  <ewlu@rivosinc.com>
18623             Vineet Gupta  <vineetg@rivosinc.com>
18625         * config/riscv/riscv-c.cc (riscv_cpu_cpp_builtins): Generate
18626         __riscv_unaligned_avoid with value 1 or
18627         __riscv_unaligned_slow with value 1 or
18628         __riscv_unaligned_fast with value 1
18629         * config/riscv/riscv.cc (riscv_option_override): Define
18630         riscv_user_wants_strict_align. Set
18631         riscv_user_wants_strict_align to TARGET_STRICT_ALIGN
18632         * config/riscv/riscv.h: Declare riscv_user_wants_strict_align
18634 2023-08-29  Edwin Lu  <ewlu@rivosinc.com>
18636         * config/riscv/autovec-vls.md: Update types
18637         * config/riscv/riscv.md: Add vector placeholder type
18638         * config/riscv/vector.md: Update types
18640 2023-08-29  Carl Love  <cel@us.ibm.com>
18642         * config/rs6000/dfp.md (UNSPEC_DQUAN): New unspec.
18643         (dfp_dqua_<mode>, dfp_dquai_<mode>): New define_insn.
18644         * config/rs6000/rs6000-builtins.def (__builtin_dfp_dqua,
18645         __builtin_dfp_dquai, __builtin_dfp_dquaq, __builtin_dfp_dquaqi):
18646         New buit-in definitions.
18647         * config/rs6000/rs6000-overload.def (__builtin_dfp_quantize): New
18648         overloaded definition.
18649         * doc/extend.texi: Add documentation for __builtin_dfp_quantize.
18651 2023-08-29  Pan Li  <pan2.li@intel.com>
18652             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
18654         * config/riscv/riscv.cc (riscv_legitimize_poly_move): New declaration.
18655         (riscv_legitimize_const_move): Handle ref plus const poly.
18657 2023-08-29  Tsukasa OI  <research_trasio@irq.a4lg.com>
18659         * common/config/riscv/riscv-common.cc
18660         (riscv_implied_info): Add implications from unprivileged extensions.
18661         (riscv_ext_version_table): Add stub support for all unprivileged
18662         extensions supported by Binutils as well as 'Zce', 'Zcmp', 'Zcmt'.
18664 2023-08-29  Tsukasa OI  <research_trasio@irq.a4lg.com>
18666         * common/config/riscv/riscv-common.cc (riscv_ext_version_table):
18667         Add stub support for all vendor extensions supported by Binutils.
18669 2023-08-29  Tsukasa OI  <research_trasio@irq.a4lg.com>
18671         * common/config/riscv/riscv-common.cc
18672         (riscv_implied_info): Add implications from privileged extensions.
18673         (riscv_ext_version_table): Add stub support for all privileged
18674         extensions supported by Binutils.
18676 2023-08-29  Lehua Ding  <lehua.ding@rivai.ai>
18678         * config/riscv/autovec.md: Adjust
18679         * config/riscv/riscv-protos.h (RVV_VUNDEF): Clean.
18680         (get_vlmax_rtx): Exported.
18681         * config/riscv/riscv-v.cc (emit_nonvlmax_fp_ternary_tu_insn): Deleted.
18682         (emit_vlmax_masked_gather_mu_insn): Adjust.
18683         (get_vlmax_rtx): New func.
18684         (expand_load_store): Adjust.
18685         (expand_cond_len_unop): Call expand_cond_len_op.
18686         (expand_cond_len_op): New subroutine.
18687         (expand_cond_len_binop): Call expand_cond_len_op.
18688         (expand_cond_len_ternop): Call expand_cond_len_op.
18689         (expand_lanes_load_store): Adjust.
18691 2023-08-29  Jakub Jelinek  <jakub@redhat.com>
18693         PR middle-end/79173
18694         PR middle-end/111209
18695         * tree-ssa-math-opts.cc (match_uaddc_usubc): Match also
18696         just 2 limb uaddc/usubc with 0 carry-in on lower limb and ignored
18697         carry-out on higher limb.  Don't match it though if it could be
18698         matched later on 4 argument addition/subtraction.
18700 2023-08-29  Andrew Pinski  <apinski@marvell.com>
18702         PR tree-optimization/111147
18703         * match.pd (`(x | y) & (~x ^ y)`) Use bitwise_inverted_equal_p
18704         instead of matching bit_not.
18706 2023-08-29  Christophe Lyon  <christophe.lyon@linaro.org>
18708         * config/arm/arm-mve-builtins.cc (type_suffixes): Add missing
18709         initializer.
18711 2023-08-29  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
18713         * config/riscv/riscv-vsetvl.cc (vector_insn_info::get_avl_or_vl_reg): New function.
18714         (pass_vsetvl::compute_local_properties): Fix bug.
18715         (pass_vsetvl::commit_vsetvls): Ditto.
18716         * config/riscv/riscv-vsetvl.h: New function.
18718 2023-08-29  Lehua Ding  <lehua.ding@rivai.ai>
18720         PR target/110943
18721         * config/riscv/predicates.md (vector_const_int_or_double_0_operand):
18722         New predicate.
18723         * config/riscv/riscv-vector-builtins.cc (function_expander::function_expander):
18724         force_reg mem target operand.
18725         * config/riscv/vector.md (@pred_mov<mode>): Wrapper.
18726         (*pred_mov<mode>): Remove imm -> reg pattern.
18727         (*pred_broadcast<mode>_imm): Add imm -> reg pattern.
18729 2023-08-29  Lulu Cheng  <chenglulu@loongson.cn>
18731         * common/config/loongarch/loongarch-common.cc:
18732         Enable '-free' on O2 and above.
18733         * doc/invoke.texi: Modify the description information
18734         of the '-free' compilation option and add the LoongArch
18735         description.
18737 2023-08-28  Tsukasa OI  <research_trasio@irq.a4lg.com>
18739         * doc/extend.texi: Fix the description of __builtin_riscv_pause.
18741 2023-08-28  Tsukasa OI  <research_trasio@irq.a4lg.com>
18743         * common/config/riscv/riscv-common.cc (riscv_ext_version_table):
18744         Implement the 'Zihintpause' extension, version 2.0.
18745         (riscv_ext_flag_table) Add 'Zihintpause' handling.
18746         * config/riscv/riscv-builtins.cc: Remove availability predicate
18747         "always" and add "hint_pause".
18748         (riscv_builtins) : Add "pause" extension.
18749         * config/riscv/riscv-opts.h (MASK_ZIHINTPAUSE, TARGET_ZIHINTPAUSE): New.
18750         * config/riscv/riscv.md (riscv_pause): Adjust output based on
18751         TARGET_ZIHINTPAUSE.
18753 2023-08-28  Andrew Pinski  <apinski@marvell.com>
18755         * match.pd (`(X & ~Y) | (~X & Y)`): Use bitwise_inverted_equal_p
18756         instead of specifically checking for ~X.
18758 2023-08-28  Andrew Pinski  <apinski@marvell.com>
18760         PR tree-optimization/111146
18761         * match.pd (`(x | y) & ~x`, `(x & y) | ~x`): Remove
18762         redundant pattern.
18764 2023-08-28  Andrew Pinski  <apinski@marvell.com>
18766         * tree-ssa-phiopt.cc (gimple_simplify_phiopt): Add dump information
18767         when resimplify returns true.
18768         (match_simplify_replacement): Print only if accepted the match-and-simplify
18769         result rather than the full sequence.
18771 2023-08-28  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
18773         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::earliest_fusion): Skip
18774         never probability.
18775         (pass_vsetvl::compute_probabilities): Fix unitialized probability.
18777 2023-08-28  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
18779         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::earliest_fusion): Fix bug.
18781 2023-08-28  Christophe Lyon  <christophe.lyon@linaro.org>
18783         * config/arm/arm-mve-builtins-base.cc (vmullbq_poly)
18784         (vmulltq_poly): New.
18785         * config/arm/arm-mve-builtins-base.def (vmullbq_poly)
18786         (vmulltq_poly): New.
18787         * config/arm/arm-mve-builtins-base.h (vmullbq_poly)
18788         (vmulltq_poly): New.
18789         * config/arm/arm_mve.h (vmulltq_poly): Remove.
18790         (vmullbq_poly): Remove.
18791         (vmullbq_poly_m): Remove.
18792         (vmulltq_poly_m): Remove.
18793         (vmullbq_poly_x): Remove.
18794         (vmulltq_poly_x): Remove.
18795         (vmulltq_poly_p8): Remove.
18796         (vmullbq_poly_p8): Remove.
18797         (vmulltq_poly_p16): Remove.
18798         (vmullbq_poly_p16): Remove.
18799         (vmullbq_poly_m_p8): Remove.
18800         (vmullbq_poly_m_p16): Remove.
18801         (vmulltq_poly_m_p8): Remove.
18802         (vmulltq_poly_m_p16): Remove.
18803         (vmullbq_poly_x_p8): Remove.
18804         (vmullbq_poly_x_p16): Remove.
18805         (vmulltq_poly_x_p8): Remove.
18806         (vmulltq_poly_x_p16): Remove.
18807         (__arm_vmulltq_poly_p8): Remove.
18808         (__arm_vmullbq_poly_p8): Remove.
18809         (__arm_vmulltq_poly_p16): Remove.
18810         (__arm_vmullbq_poly_p16): Remove.
18811         (__arm_vmullbq_poly_m_p8): Remove.
18812         (__arm_vmullbq_poly_m_p16): Remove.
18813         (__arm_vmulltq_poly_m_p8): Remove.
18814         (__arm_vmulltq_poly_m_p16): Remove.
18815         (__arm_vmullbq_poly_x_p8): Remove.
18816         (__arm_vmullbq_poly_x_p16): Remove.
18817         (__arm_vmulltq_poly_x_p8): Remove.
18818         (__arm_vmulltq_poly_x_p16): Remove.
18819         (__arm_vmulltq_poly): Remove.
18820         (__arm_vmullbq_poly): Remove.
18821         (__arm_vmullbq_poly_m): Remove.
18822         (__arm_vmulltq_poly_m): Remove.
18823         (__arm_vmullbq_poly_x): Remove.
18824         (__arm_vmulltq_poly_x): Remove.
18826 2023-08-28  Christophe Lyon  <christophe.lyon@linaro.org>
18828         * config/arm/arm-mve-builtins-functions.h (class
18829         unspec_mve_function_exact_insn_vmull_poly): New.
18831 2023-08-28  Christophe Lyon  <christophe.lyon@linaro.org>
18833         * config/arm/arm-mve-builtins-shapes.cc (binary_widen_poly): New.
18834         * config/arm/arm-mve-builtins-shapes.h (binary_widen_poly): New.
18836 2023-08-28  Christophe Lyon  <christophe.lyon@linaro.org>
18838         * config/arm/arm-mve-builtins-shapes.cc (parse_element_type): Add
18839         support for 'U' and 'p' format specifiers.
18841 2023-08-28  Christophe Lyon  <christophe.lyon@linaro.org>
18843         * config/arm/arm-mve-builtins.cc (type_suffixes): Handle poly_p
18844         field..
18845         (TYPES_poly_8_16): New.
18846         (poly_8_16): New.
18847         * config/arm/arm-mve-builtins.def (p8): New type suffix.
18848         (p16): Likewise.
18849         * config/arm/arm-mve-builtins.h (enum type_class_index): Add
18850         TYPE_poly.
18851         (struct type_suffix_info): Add poly_p field.
18853 2023-08-28  Christophe Lyon  <christophe.lyon@linaro.org>
18855         * config/arm/arm-mve-builtins-base.cc (vmullbq_int, vmulltq_int):
18856         New.
18857         * config/arm/arm-mve-builtins-base.def (vmullbq_int, vmulltq_int):
18858         New.
18859         * config/arm/arm-mve-builtins-base.h (vmullbq_int, vmulltq_int):
18860         New.
18861         * config/arm/arm_mve.h (vmulltq_int): Remove.
18862         (vmullbq_int): Remove.
18863         (vmullbq_int_m): Remove.
18864         (vmulltq_int_m): Remove.
18865         (vmullbq_int_x): Remove.
18866         (vmulltq_int_x): Remove.
18867         (vmulltq_int_u8): Remove.
18868         (vmullbq_int_u8): Remove.
18869         (vmulltq_int_s8): Remove.
18870         (vmullbq_int_s8): Remove.
18871         (vmulltq_int_u16): Remove.
18872         (vmullbq_int_u16): Remove.
18873         (vmulltq_int_s16): Remove.
18874         (vmullbq_int_s16): Remove.
18875         (vmulltq_int_u32): Remove.
18876         (vmullbq_int_u32): Remove.
18877         (vmulltq_int_s32): Remove.
18878         (vmullbq_int_s32): Remove.
18879         (vmullbq_int_m_s8): Remove.
18880         (vmullbq_int_m_s32): Remove.
18881         (vmullbq_int_m_s16): Remove.
18882         (vmullbq_int_m_u8): Remove.
18883         (vmullbq_int_m_u32): Remove.
18884         (vmullbq_int_m_u16): Remove.
18885         (vmulltq_int_m_s8): Remove.
18886         (vmulltq_int_m_s32): Remove.
18887         (vmulltq_int_m_s16): Remove.
18888         (vmulltq_int_m_u8): Remove.
18889         (vmulltq_int_m_u32): Remove.
18890         (vmulltq_int_m_u16): Remove.
18891         (vmullbq_int_x_s8): Remove.
18892         (vmullbq_int_x_s16): Remove.
18893         (vmullbq_int_x_s32): Remove.
18894         (vmullbq_int_x_u8): Remove.
18895         (vmullbq_int_x_u16): Remove.
18896         (vmullbq_int_x_u32): Remove.
18897         (vmulltq_int_x_s8): Remove.
18898         (vmulltq_int_x_s16): Remove.
18899         (vmulltq_int_x_s32): Remove.
18900         (vmulltq_int_x_u8): Remove.
18901         (vmulltq_int_x_u16): Remove.
18902         (vmulltq_int_x_u32): Remove.
18903         (__arm_vmulltq_int_u8): Remove.
18904         (__arm_vmullbq_int_u8): Remove.
18905         (__arm_vmulltq_int_s8): Remove.
18906         (__arm_vmullbq_int_s8): Remove.
18907         (__arm_vmulltq_int_u16): Remove.
18908         (__arm_vmullbq_int_u16): Remove.
18909         (__arm_vmulltq_int_s16): Remove.
18910         (__arm_vmullbq_int_s16): Remove.
18911         (__arm_vmulltq_int_u32): Remove.
18912         (__arm_vmullbq_int_u32): Remove.
18913         (__arm_vmulltq_int_s32): Remove.
18914         (__arm_vmullbq_int_s32): Remove.
18915         (__arm_vmullbq_int_m_s8): Remove.
18916         (__arm_vmullbq_int_m_s32): Remove.
18917         (__arm_vmullbq_int_m_s16): Remove.
18918         (__arm_vmullbq_int_m_u8): Remove.
18919         (__arm_vmullbq_int_m_u32): Remove.
18920         (__arm_vmullbq_int_m_u16): Remove.
18921         (__arm_vmulltq_int_m_s8): Remove.
18922         (__arm_vmulltq_int_m_s32): Remove.
18923         (__arm_vmulltq_int_m_s16): Remove.
18924         (__arm_vmulltq_int_m_u8): Remove.
18925         (__arm_vmulltq_int_m_u32): Remove.
18926         (__arm_vmulltq_int_m_u16): Remove.
18927         (__arm_vmullbq_int_x_s8): Remove.
18928         (__arm_vmullbq_int_x_s16): Remove.
18929         (__arm_vmullbq_int_x_s32): Remove.
18930         (__arm_vmullbq_int_x_u8): Remove.
18931         (__arm_vmullbq_int_x_u16): Remove.
18932         (__arm_vmullbq_int_x_u32): Remove.
18933         (__arm_vmulltq_int_x_s8): Remove.
18934         (__arm_vmulltq_int_x_s16): Remove.
18935         (__arm_vmulltq_int_x_s32): Remove.
18936         (__arm_vmulltq_int_x_u8): Remove.
18937         (__arm_vmulltq_int_x_u16): Remove.
18938         (__arm_vmulltq_int_x_u32): Remove.
18939         (__arm_vmulltq_int): Remove.
18940         (__arm_vmullbq_int): Remove.
18941         (__arm_vmullbq_int_m): Remove.
18942         (__arm_vmulltq_int_m): Remove.
18943         (__arm_vmullbq_int_x): Remove.
18944         (__arm_vmulltq_int_x): Remove.
18946 2023-08-28  Christophe Lyon  <christophe.lyon@linaro.org>
18948         * config/arm/arm-mve-builtins-shapes.cc (binary_widen): New.
18949         * config/arm/arm-mve-builtins-shapes.h (binary_widen): New.
18951 2023-08-28  Christophe Lyon  <christophe.lyon@linaro.org>
18953         * config/arm/arm-mve-builtins-functions.h (class
18954         unspec_mve_function_exact_insn_vmull): New.
18956 2023-08-28  Christophe Lyon  <christophe.lyon@linaro.org>
18958         * config/arm/iterators.md (mve_insn): Add vmullb, vmullt.
18959         (isu): Add VMULLBQ_INT_S, VMULLBQ_INT_U, VMULLTQ_INT_S,
18960         VMULLTQ_INT_U.
18961         (supf): Add VMULLBQ_POLY_P, VMULLTQ_POLY_P, VMULLBQ_POLY_M_P,
18962         VMULLTQ_POLY_M_P.
18963         (VMULLBQ_INT, VMULLTQ_INT, VMULLBQ_INT_M, VMULLTQ_INT_M): Delete.
18964         (VMULLxQ_INT, VMULLxQ_POLY, VMULLxQ_INT_M, VMULLxQ_POLY_M): New.
18965         * config/arm/mve.md (mve_vmullbq_int_<supf><mode>)
18966         (mve_vmulltq_int_<supf><mode>): Merge into ...
18967         (@mve_<mve_insn>q_int_<supf><mode>) ... this.
18968         (mve_vmulltq_poly_p<mode>, mve_vmullbq_poly_p<mode>): Merge into ...
18969         (@mve_<mve_insn>q_poly_<supf><mode>): ... this.
18970         (mve_vmullbq_int_m_<supf><mode>, mve_vmulltq_int_m_<supf><mode>): Merge into ...
18971         (@mve_<mve_insn>q_int_m_<supf><mode>): ... this.
18972         (mve_vmullbq_poly_m_p<mode>, mve_vmulltq_poly_m_p<mode>): Merge into ...
18973         (@mve_<mve_insn>q_poly_m_<supf><mode>): ... this.
18975 2023-08-28  Christophe Lyon  <christophe.lyon@linaro.org>
18977         * config/arm/arm-mve-builtins-shapes.cc (parse_element_type):
18978         Remove dead check.
18980 2023-08-28  Christophe Lyon  <christophe.lyon@linaro.org>
18982         * config/arm/arm-mve-builtins-shapes.cc (binary_acca_int32): Fix loop bound.
18983         (binary_acca_int64): Likewise.
18985 2023-08-28  Aldy Hernandez  <aldyh@redhat.com>
18987         * range-op-float.cc (fold_range): Handle relations.
18989 2023-08-28  Lulu Cheng  <chenglulu@loongson.cn>
18991         * config/loongarch/loongarch.cc (loongarch_expand_conditional_move):
18992         Optimize the function implementation.
18994 2023-08-28  liuhongt  <hongtao.liu@intel.com>
18996         PR target/111119
18997         * config/i386/sse.md (V48_AVX2): Rename to ..
18998         (V48_128_256): .. this.
18999         (ssefltmodesuffix): Extend to V4SF/V8SF/V2DF/V4DF.
19000         (<avx_avx2>_maskload<ssemodesuffix><avxsizesuffix>): Change
19001         V48_AVX2 to V48_128_256, also generate vmaskmov{ps,pd} for
19002         integral modes when TARGET_AVX2 is not available.
19003         (<avx_avx2>_maskstore<ssemodesuffix><avxsizesuffix>): Ditto.
19004         (maskload<mode><sseintvecmodelower>): Change V48_AVX2 to
19005         V48_128_256.
19006         (maskstore<mode><sseintvecmodelower>): Ditto.
19008 2023-08-28  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
19010         * config/riscv/riscv-vsetvl.cc (vsetvl_vtype_change_only_p):
19011         New function.
19012         (after_or_same_p): Ditto.
19013         (find_reg_killed_by): Delete.
19014         (has_vsetvl_killed_avl_p): Ditto.
19015         (anticipatable_occurrence_p): Refactor.
19016         (any_set_in_bb_p): Delete.
19017         (count_regno_occurrences): Ditto.
19018         (backward_propagate_worthwhile_p): Ditto.
19019         (demands_can_be_fused_p): Ditto.
19020         (earliest_pred_can_be_fused_p): New function.
19021         (vsetvl_dominated_by_p): Ditto.
19022         (vector_insn_info::parse_insn): Refactor.
19023         (vector_insn_info::merge): Refactor.
19024         (vector_insn_info::dump): Refactor.
19025         (vector_infos_manager::vector_infos_manager): Refactor.
19026         (vector_infos_manager::all_empty_predecessor_p): Delete.
19027         (vector_infos_manager::all_same_avl_p): Ditto.
19028         (vector_infos_manager::create_bitmap_vectors): Refactor.
19029         (vector_infos_manager::free_bitmap_vectors): Refactor.
19030         (vector_infos_manager::dump): Refactor.
19031         (pass_vsetvl::update_block_info): New function.
19032         (enum fusion_type): Ditto.
19033         (pass_vsetvl::get_backward_fusion_type): Delete.
19034         (pass_vsetvl::hard_empty_block_p): Ditto.
19035         (pass_vsetvl::backward_demand_fusion): Ditto.
19036         (pass_vsetvl::forward_demand_fusion): Ditto.
19037         (pass_vsetvl::demand_fusion): Ditto.
19038         (pass_vsetvl::cleanup_illegal_dirty_blocks): Ditto.
19039         (pass_vsetvl::compute_local_properties): Ditto.
19040         (pass_vsetvl::earliest_fusion): New function.
19041         (pass_vsetvl::vsetvl_fusion): Ditto.
19042         (pass_vsetvl::commit_vsetvls): Refactor.
19043         (get_first_vsetvl_before_rvv_insns): Ditto.
19044         (pass_vsetvl::global_eliminate_vsetvl_insn): Ditto.
19045         (pass_vsetvl::cleanup_earliest_vsetvls): New function.
19046         (pass_vsetvl::df_post_optimization): Refactor.
19047         (pass_vsetvl::lazy_vsetvl): Ditto.
19048         * config/riscv/riscv-vsetvl.h: Ditto.
19050 2023-08-26  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
19052         * config/riscv/autovec.md (len_fold_extract_last_<mode>): New pattern.
19053         * config/riscv/riscv-protos.h (enum insn_type): New enum.
19054         (expand_fold_extract_last): New function.
19055         * config/riscv/riscv-v.cc (emit_nonvlmax_slide_insn): Ditto.
19056         (emit_cpop_insn): Ditto.
19057         (emit_nonvlmax_compress_insn): Ditto.
19058         (expand_fold_extract_last): Ditto.
19059         * config/riscv/vector.md: Fix vcpop.m ratio demand.
19061 2023-08-25  Edwin Lu  <ewlu@rivosinc.com>
19063         * config/riscv/sync-rvwmo.md: updated types to "multi" or
19064                 "atomic" based on number of assembly lines generated
19065         * config/riscv/sync-ztso.md: likewise
19066         * config/riscv/sync.md: likewise
19068 2023-08-25  Jin Ma  <jinma@linux.alibaba.com>
19070         * common/config/riscv/riscv-common.cc: Add zfa extension version, which depends on
19071         the F extension.
19072         * config/riscv/constraints.md (zfli): Constrain the floating point number that the
19073         instructions FLI.H/S/D can load.
19074         * config/riscv/iterators.md (ceil): New.
19075         * config/riscv/riscv-opts.h (MASK_ZFA): New.
19076         (TARGET_ZFA): New.
19077         * config/riscv/riscv-protos.h (riscv_float_const_rtx_index_for_fli): New.
19078         * config/riscv/riscv.cc (riscv_float_const_rtx_index_for_fli): New.
19079         (riscv_cannot_force_const_mem): If instruction FLI.H/S/D can be used, memory is
19080         not applicable.
19081         (riscv_const_insns): Likewise.
19082         (riscv_legitimize_const_move): Likewise.
19083         (riscv_split_64bit_move_p): If instruction FLI.H/S/D can be used, no split is
19084         required.
19085         (riscv_split_doubleword_move): Likewise.
19086         (riscv_output_move): Output the mov instructions in zfa extension.
19087         (riscv_print_operand): Output the floating-point value of the FLI.H/S/D immediate
19088         in assembly.
19089         (riscv_secondary_memory_needed): Likewise.
19090         * config/riscv/riscv.md (fminm<mode>3): New.
19091         (fmaxm<mode>3): New.
19092         (movsidf2_low_rv32): New.
19093         (movsidf2_high_rv32): New.
19094         (movdfsisi3_rv32): New.
19095         (f<quiet_pattern>_quiet<ANYF:mode><X:mode>4_zfa): New.
19096         * config/riscv/riscv.opt: New.
19098 2023-08-25  Sandra Loosemore  <sandra@codesourcery.com>
19100         * omp-api.h: New.
19101         * omp-general.cc (omp_runtime_api_procname): New.
19102         (omp_runtime_api_call): Moved here from omp-low.cc, and make
19103         non-static.
19104         * omp-general.h: Include omp-api.h.
19105         * omp-low.cc (omp_runtime_api_call): Delete this copy.
19107 2023-08-25  Sandra Loosemore  <sandra@codesourcery.com>
19109         * doc/generic.texi (OpenMP): Document OMP_STRUCTURED_BLOCK.
19110         * doc/gimple.texi (GIMPLE instruction set): Add
19111         GIMPLE_OMP_STRUCTURED_BLOCK.
19112         (GIMPLE_OMP_STRUCTURED_BLOCK): New subsection.
19113         * gimple-low.cc (lower_stmt): Error on GIMPLE_OMP_STRUCTURED_BLOCK.
19114         * gimple-pretty-print.cc (dump_gimple_omp_block): Handle
19115         GIMPLE_OMP_STRUCTURED_BLOCK.
19116         (pp_gimple_stmt_1): Likewise.
19117         * gimple-walk.cc (walk_gimple_stmt): Likewise.
19118         * gimple.cc (gimple_build_omp_structured_block): New.
19119         * gimple.def (GIMPLE_OMP_STRUCTURED_BLOCK): New.
19120         * gimple.h (gimple_build_omp_structured_block): Declare.
19121         (gimple_has_substatements): Handle GIMPLE_OMP_STRUCTURED_BLOCK.
19122         (CASE_GIMPLE_OMP): Likewise.
19123         * gimplify.cc (is_gimple_stmt): Handle OMP_STRUCTURED_BLOCK.
19124         (gimplify_expr): Likewise.
19125         * omp-expand.cc (GIMPLE_OMP_STRUCTURED_BLOCK): Error on
19126         GIMPLE_OMP_STRUCTURED_BLOCK.
19127         * omp-low.cc (scan_omp_1_stmt): Handle GIMPLE_OMP_STRUCTURED_BLOCK.
19128         (lower_omp_1): Likewise.
19129         (diagnose_sb_1): Likewise.
19130         (diagnose_sb_2): Likewise.
19131         * tree-inline.cc (remap_gimple_stmt): Handle
19132         GIMPLE_OMP_STRUCTURED_BLOCK.
19133         (estimate_num_insns): Likewise.
19134         * tree-nested.cc (convert_nonlocal_reference_stmt): Likewise.
19135         (convert_local_reference_stmt): Likewise.
19136         (convert_gimple_call): Likewise.
19137         * tree-pretty-print.cc (dump_generic_node): Handle
19138         OMP_STRUCTURED_BLOCK.
19139         * tree.def (OMP_STRUCTURED_BLOCK): New.
19140         * tree.h (OMP_STRUCTURED_BLOCK_BODY): New.
19142 2023-08-25  Vineet Gupta  <vineetg@rivosinc.com>
19144         * config/riscv/riscv.cc (riscv_rtx_costs): Adjust const_int
19145         cost. Add some comments about different constants handling.
19147 2023-08-25  Andrew Pinski  <apinski@marvell.com>
19149         * match.pd (`a ? one_zero : one_zero`): Move
19150         below detection of minmax.
19152 2023-08-25  Andrew Pinski  <apinski@marvell.com>
19154         * match.pd (`a | C -> C`): New pattern.
19156 2023-08-25  Uros Bizjak  <ubizjak@gmail.com>
19158         * caller-save.cc (new_saved_hard_reg):
19159         Rename TRUE/FALSE to true/false.
19160         (setup_save_areas): Ditto.
19161         * gcc.cc (set_collect_gcc_options): Ditto.
19162         (driver::build_multilib_strings): Ditto.
19163         (print_multilib_info): Ditto.
19164         * genautomata.cc (gen_cpu_unit): Ditto.
19165         (gen_query_cpu_unit): Ditto.
19166         (gen_bypass): Ditto.
19167         (gen_excl_set): Ditto.
19168         (gen_presence_absence_set): Ditto.
19169         (gen_presence_set): Ditto.
19170         (gen_final_presence_set): Ditto.
19171         (gen_absence_set): Ditto.
19172         (gen_final_absence_set): Ditto.
19173         (gen_automaton): Ditto.
19174         (gen_regexp_repeat): Ditto.
19175         (gen_regexp_allof): Ditto.
19176         (gen_regexp_oneof): Ditto.
19177         (gen_regexp_sequence): Ditto.
19178         (process_decls): Ditto.
19179         (reserv_sets_are_intersected): Ditto.
19180         (initiate_excl_sets): Ditto.
19181         (form_reserv_sets_list): Ditto.
19182         (check_presence_pattern_sets): Ditto.
19183         (check_absence_pattern_sets): Ditto.
19184         (check_regexp_units_distribution): Ditto.
19185         (check_unit_distributions_to_automata): Ditto.
19186         (create_ainsns): Ditto.
19187         (output_insn_code_cases): Ditto.
19188         (output_internal_dead_lock_func): Ditto.
19189         (form_important_insn_automata_lists): Ditto.
19190         * gengtype-state.cc (read_state_files_list): Ditto.
19191         * gengtype.cc (main): Ditto.
19192         * gimple-array-bounds.cc (array_bounds_checker::check_array_bounds):
19193         Ditto.
19194         * gimple.cc (gimple_build_call_from_tree): Ditto.
19195         (preprocess_case_label_vec_for_gimple): Ditto.
19196         * gimplify.cc (gimplify_call_expr): Ditto.
19197         * ordered-hash-map-tests.cc (test_map_of_int_to_strings): Ditto.
19199 2023-08-25  Richard Biener  <rguenther@suse.de>
19201         PR tree-optimization/111137
19202         * tree-vect-data-refs.cc (vect_slp_analyze_load_dependences):
19203         Properly handle grouped stores from other SLP instances.
19205 2023-08-25  Richard Biener  <rguenther@suse.de>
19207         * tree-vect-data-refs.cc (vect_slp_analyze_store_dependences):
19208         Split out from vect_slp_analyze_node_dependences, remove
19209         dead code.
19210         (vect_slp_analyze_load_dependences): Split out from
19211         vect_slp_analyze_node_dependences, adjust comments.  Process
19212         queued stores before any disambiguation.
19213         (vect_slp_analyze_node_dependences): Remove.
19214         (vect_slp_analyze_instance_dependence): Adjust.
19216 2023-08-25  Aldy Hernandez  <aldyh@redhat.com>
19218         * range-op-float.cc (frelop_early_resolve): Rewrite for better NAN
19219         handling.
19220         (operator_not_equal::fold_range): Adjust for relations.
19221         (operator_lt::fold_range): Same.
19222         (operator_gt::fold_range): Same.
19223         (foperator_unordered_equal::fold_range): Same.
19224         (foperator_unordered_lt::fold_range): Same.
19225         (foperator_unordered_le::fold_range): Same.
19226         (foperator_unordered_gt::fold_range): Same.
19227         (foperator_unordered_ge::fold_range): Same.
19229 2023-08-25  Richard Biener  <rguenther@suse.de>
19231         PR tree-optimization/111136
19232         * tree-vect-loop.cc (vect_dissolve_slp_only_groups): For
19233         stores force STMT_VINFO_STRIDED_P and also duplicate that
19234         to all elements.
19236 2023-08-25  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
19238         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::compute_local_properties):
19239         Add early continue.
19241 2023-08-25  liuhongt  <hongtao.liu@intel.com>
19243         * config/i386/sse.md (vec_set<mode>): Removed.
19244         (V_128H): Merge into ..
19245         (V_128): .. this.
19246         (V_256H): Merge into ..
19247         (V_256): .. this.
19248         (V_512): Add V32HF, V32BF.
19249         (*ssse3_palignr<mode>_perm): Adjust mode iterator from V_128H
19250         to V_128.
19251         (vcond<mode><sseintvecmodelower>): Removed
19252         (vcondu<mode><sseintvecmodelower>): Removed.
19253         (avx_vbroadcastf128_<mode>): Refator from V_256H to V_256.
19255 2023-08-25  Hongyu Wang  <hongyu.wang@intel.com>
19257         PR target/111127
19258         * config/i386/sse.md (avx512f_cvtne2ps2bf16_<mode>_maskz):
19259         Adjust paramter order.
19261 2023-08-24  Uros Bizjak  <ubizjak@gmail.com>
19263         PR target/94866
19264         * config/i386/sse.md (*sse2_movq128_<mode>_1): New insn pattern.
19266 2023-08-24  David Malcolm  <dmalcolm@redhat.com>
19268         PR analyzer/105899
19269         * doc/invoke.texi (Static Analyzer Options): Add "strcat" to the
19270         list of functions known to the analyzer.
19272 2023-08-24  Richard Biener  <rguenther@suse.de>
19274         PR tree-optimization/111123
19275         * tree-ssa-ccp.cc (pass_fold_builtins::execute): Do not
19276         remove indirect clobbers here ...
19277         * tree-outof-ssa.cc (rewrite_out_of_ssa): ... but here.
19278         (remove_indirect_clobbers): New function.
19280 2023-08-24  Jan Hubicka  <jh@suse.cz>
19282         * cfg.h (struct control_flow_graph): New field full_profile.
19283         * auto-profile.cc (afdo_annotate_cfg): Set full_profile to true.
19284         * cfg.cc (init_flow): Set full_profile to false.
19285         * graphite.cc (graphite_transform_loops): Set full_profile to false.
19286         * lto-streamer-in.cc (input_cfg): Initialize full_profile flag.
19287         * predict.cc (pass_profile::execute): Set full_profile to true.
19288         * symtab-thunks.cc (expand_thunk): Set full_profile to true.
19289         * tree-cfg.cc (gimple_verify_flow_info): Verify that profile is full
19290         if full_profile is set.
19291         * tree-inline.cc (initialize_cfun): Initialize full_profile.
19292         (expand_call_inline): Combine full_profile.
19294 2023-08-24  Richard Biener  <rguenther@suse.de>
19296         * tree-vect-slp.cc (vect_build_slp_tree_1): Rename
19297         load_p to ldst_p, fix mistakes and rely on
19298         STMT_VINFO_DATA_REF.
19300 2023-08-24  Jan Hubicka  <jh@suse.cz>
19302         * gimple-harden-conditionals.cc (insert_check_and_trap): Set count
19303         of newly build trap bb.
19305 2023-08-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
19307         * config/riscv/riscv.cc (riscv_preferred_else_value): Remove it since
19308         it forbid COND_LEN_FMS/COND_LEN_FNMS STMT fold.
19309         (TARGET_PREFERRED_ELSE_VALUE): Ditto.
19311 2023-08-24  Robin Dapp  <rdapp.gcc@gmail.com>
19313         * common/config/riscv/riscv-common.cc: Add -fsched-pressure.
19314         * config/riscv/riscv.cc (riscv_option_override): Set sched
19315         pressure algorithm.
19317 2023-08-24  Robin Dapp  <rdapp@ventanamicro.com>
19319         * config/riscv/riscv.cc (riscv_print_operand): Allow vk operand.
19321 2023-08-24  Richard Biener  <rguenther@suse.de>
19323         PR tree-optimization/111125
19324         * tree-vect-slp.cc (vect_slp_function): Split at novector
19325         loop entry, do not push blocks in novector loops.
19327 2023-08-24  Richard Sandiford  <richard.sandiford@arm.com>
19329         * doc/extend.texi: Document the C [[__extension__ ...]] construct.
19331 2023-08-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
19333         * genmatch.cc (decision_tree::gen): Support
19334         COND_LEN_FNMA/COND_LEN_FMS/COND_LEN_FNMS gimple fold.
19335         * gimple-match-exports.cc (gimple_simplify): Ditto.
19336         (gimple_resimplify6): New function.
19337         (gimple_resimplify7): New function.
19338         (gimple_match_op::resimplify): Support
19339         COND_LEN_FNMA/COND_LEN_FMS/COND_LEN_FNMS gimple fold.
19340         (convert_conditional_op): Ditto.
19341         (build_call_internal): Ditto.
19342         (try_conditional_simplification): Ditto.
19343         (gimple_extract): Ditto.
19344         * gimple-match.h (gimple_match_cond::gimple_match_cond): Ditto.
19345         * internal-fn.cc (CASE): Ditto.
19347 2023-08-24  Richard Biener  <rguenther@suse.de>
19349         PR tree-optimization/111115
19350         * tree-vectorizer.h (vect_slp_child_index_for_operand): New.
19351         * tree-vect-data-refs.cc (can_group_stmts_p): Also group
19352         .MASK_STORE.
19353         * tree-vect-slp.cc (arg3_arg2_map): New.
19354         (vect_get_operand_map): Handle IFN_MASK_STORE.
19355         (vect_slp_child_index_for_operand): New function.
19356         (vect_build_slp_tree_1): Handle statements with no LHS,
19357         masked store ifns.
19358         (vect_remove_slp_scalar_calls): Likewise.
19359         * tree-vect-stmts.cc (vect_check_store_rhs): Lookup the
19360         SLP child corresponding to the ifn value index.
19361         (vectorizable_store): Likewise for the mask index.  Support
19362         masked stores.
19363         (vectorizable_load): Lookup the SLP child corresponding to the
19364         ifn mask index.
19366 2023-08-24  Richard Biener  <rguenther@suse.de>
19368         PR tree-optimization/111125
19369         * tree-vect-slp.cc (vectorizable_bb_reduc_epilogue): Account
19370         for the remain_defs processing.
19372 2023-08-24  Richard Sandiford  <richard.sandiford@arm.com>
19374         * config/aarch64/aarch64.cc: Include ssa.h.
19375         (aarch64_multiply_add_p): Require the second operand of an
19376         Advanced SIMD subtraction to be a multiplication.  Assume that
19377         such an operation won't be fused if the second operand is used
19378         multiple times and if the first operand is also a multiplication.
19380 2023-08-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
19382         * tree-vect-loop.cc (vectorizable_reduction): Apply
19383         LEN_FOLD_EXTRACT_LAST.
19384         * tree-vect-stmts.cc (vectorizable_condition): Ditto.
19386 2023-08-24  Richard Biener  <rguenther@suse.de>
19388         PR tree-optimization/111128
19389         * tree-vect-patterns.cc (vect_recog_over_widening_pattern):
19390         Emit external shift operand inline if we promoted it with
19391         another pattern stmt.
19393 2023-08-24  Pan Li  <pan2.li@intel.com>
19395         * config/riscv/autovec.md: Fix typo.
19397 2023-08-24  Pan Li  <pan2.li@intel.com>
19399         * config/riscv/riscv-vector-builtins-bases.cc
19400         (class binop_frm): Removed.
19401         (class reverse_binop_frm): Ditto.
19402         (class widen_binop_frm): Ditto.
19403         (class vfmacc_frm): Ditto.
19404         (class vfnmacc_frm): Ditto.
19405         (class vfmsac_frm): Ditto.
19406         (class vfnmsac_frm): Ditto.
19407         (class vfmadd_frm): Ditto.
19408         (class vfnmadd_frm): Ditto.
19409         (class vfmsub_frm): Ditto.
19410         (class vfnmsub_frm): Ditto.
19411         (class vfwmacc_frm): Ditto.
19412         (class vfwnmacc_frm): Ditto.
19413         (class vfwmsac_frm): Ditto.
19414         (class vfwnmsac_frm): Ditto.
19415         (class unop_frm): Ditto.
19416         (class vfrec7_frm): Ditto.
19417         (class binop): Add frm_op_type template arg.
19418         (class unop): Ditto.
19419         (class widen_binop): Ditto.
19420         (class widen_binop_fp): Ditto.
19421         (class reverse_binop): Ditto.
19422         (class vfmacc): Ditto.
19423         (class vfnmsac): Ditto.
19424         (class vfmadd): Ditto.
19425         (class vfnmsub): Ditto.
19426         (class vfnmacc): Ditto.
19427         (class vfmsac): Ditto.
19428         (class vfnmadd): Ditto.
19429         (class vfmsub): Ditto.
19430         (class vfwmacc): Ditto.
19431         (class vfwnmacc): Ditto.
19432         (class vfwmsac): Ditto.
19433         (class vfwnmsac): Ditto.
19434         (class float_misc): Ditto.
19436 2023-08-24  Andrew Pinski  <apinski@marvell.com>
19438         PR tree-optimization/111109
19439         * match.pd (ior(cond,cond), ior(vec_cond,vec_cond)):
19440         Add check to make sure cmp and icmp are inverse.
19442 2023-08-24  Andrew Pinski  <apinski@marvell.com>
19444         PR tree-optimization/95929
19445         * match.pd (convert?(-a)): New pattern
19446         for 1bit integer types.
19448 2023-08-24  Haochen Jiang  <haochen.jiang@intel.com>
19450         Revert:
19451         2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
19453         * common/config/i386/cpuinfo.h (get_available_features):
19454         Add avx10_set and version and detect avx10.1.
19455         (cpu_indicator_init): Handle avx10.1-512.
19456         * common/config/i386/i386-common.cc
19457         (OPTION_MASK_ISA2_AVX10_512BIT_SET): New.
19458         (OPTION_MASK_ISA2_AVX10_1_SET): Ditto.
19459         (OPTION_MASK_ISA2_AVX10_512BIT_UNSET): Ditto.
19460         (OPTION_MASK_ISA2_AVX10_1_UNSET): Ditto.
19461         (OPTION_MASK_ISA2_AVX2_UNSET): Modify for AVX10_1.
19462         (ix86_handle_option): Handle -mavx10.1, -mavx10.1-256 and
19463         -mavx10.1-512.
19464         * common/config/i386/i386-cpuinfo.h (enum processor_features):
19465         Add FEATURE_AVX10_512BIT, FEATURE_AVX10_1 and
19466         FEATURE_AVX10_512BIT.
19467         * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
19468         AVX10_512BIT, AVX10_1 and AVX10_1_512.
19469         * config/i386/constraints.md (Yk): Add AVX10_1.
19470         (Yv): Ditto.
19471         (k): Ditto.
19472         * config/i386/cpuid.h (bit_AVX10): New.
19473         (bit_AVX10_256): Ditto.
19474         (bit_AVX10_512): Ditto.
19475         * config/i386/i386-c.cc (ix86_target_macros_internal):
19476         Define AVX10_512BIT and AVX10_1.
19477         * config/i386/i386-isa.def
19478         (AVX10_512BIT): Add DEF_PTA(AVX10_512BIT).
19479         (AVX10_1): Add DEF_PTA(AVX10_1).
19480         * config/i386/i386-options.cc (isa2_opts): Add -mavx10.1.
19481         (ix86_valid_target_attribute_inner_p): Handle avx10-512bit, avx10.1
19482         and avx10.1-512.
19483         (ix86_option_override_internal): Enable AVX512{F,VL,BW,DQ,CD,BF16,
19484         FP16,VBMI,VBMI2,VNNI,IFMA,BITALG,VPOPCNTDQ} features for avx10.1-512.
19485         (ix86_valid_target_attribute_inner_p): Handle AVX10_1.
19486         * config/i386/i386.cc (ix86_get_ssemov): Add AVX10_1.
19487         (ix86_conditional_register_usage): Ditto.
19488         (ix86_hard_regno_mode_ok): Ditto.
19489         (ix86_rtx_costs): Ditto.
19490         * config/i386/i386.h (VALID_MASK_AVX10_MODE): New macro.
19491         * config/i386/i386.opt: Add option -mavx10.1, -mavx10.1-256 and
19492         -mavx10.1-512.
19493         * doc/extend.texi: Document avx10.1, avx10.1-256 and avx10.1-512.
19494         * doc/invoke.texi: Document -mavx10.1, -mavx10.1-256 and -mavx10.1-512.
19495         * doc/sourcebuild.texi: Document target avx10.1, avx10.1-256
19496         and avx10.1-512.
19498 2023-08-24  Haochen Jiang  <haochen.jiang@intel.com>
19500         Revert:
19501         2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
19503         * common/config/i386/i386-common.cc
19504         (ix86_check_avx10): New function to check isa_flags and
19505         isa_flags_explicit to emit warning when AVX10 is enabled
19506         by "-m" option.
19507         (ix86_check_avx512):  New function to check isa_flags and
19508         isa_flags_explicit to emit warning when AVX512 is enabled
19509         by "-m" option.
19510         (ix86_handle_option): Do not change the flags when warning
19511         is emitted.
19512         * config/i386/driver-i386.cc (host_detect_local_cpu):
19513         Do not append -mno-avx10.1 for -march=native.
19515 2023-08-24  Haochen Jiang  <haochen.jiang@intel.com>
19517         Revert:
19518         2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
19520         * common/config/i386/i386-common.cc
19521         (ix86_check_avx10_vector_width): New function to check isa_flags
19522         to emit a warning when there is a conflict in AVX10 options for
19523         vector width.
19524         (ix86_handle_option): Add check for avx10.1-256 and avx10.1-512.
19525         * config/i386/driver-i386.cc (host_detect_local_cpu):
19526         Do not append -mno-avx10-max-512bit for -march=native.
19528 2023-08-24  Haochen Jiang  <haochen.jiang@intel.com>
19530         Revert:
19531         2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
19533         * config/i386/avx512vldqintrin.h: Remove target attribute.
19534         * config/i386/i386-builtin.def (BDESC):
19535         Add OPTION_MASK_ISA2_AVX10_1.
19536         * config/i386/i386-builtins.cc (def_builtin): Handle AVX10_1.
19537         * config/i386/i386-expand.cc
19538         (ix86_check_builtin_isa_match): Ditto.
19539         (ix86_expand_sse2_mulvxdi3): Add TARGET_AVX10_1.
19540         * config/i386/i386.md: Add new isa attribute avx10_1_or_avx512dq
19541         and avx10_1_or_avx512vl.
19542         * config/i386/sse.md: (VF2_AVX512VLDQ_AVX10_1): New.
19543         (VF1_128_256VLDQ_AVX10_1): Ditto.
19544         (VI8_AVX512VLDQ_AVX10_1): Ditto.
19545         (<sse>_andnot<mode>3<mask_name>):
19546         Add TARGET_AVX10_1 and change isa attr from avx512dq to
19547         avx10_1_or_avx512dq.
19548         (*andnot<mode>3): Add TARGET_AVX10_1 and change isa attr from
19549         avx512vl to avx10_1_or_avx512vl.
19550         (fix<fixunssuffix>_trunc<mode><sseintvecmodelower>2<mask_name><round_saeonly_name>):
19551         Change iterator to VF2_AVX512VLDQ_AVX10_1. Remove target check.
19552         (fix_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
19553         Ditto.
19554         (ufix_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
19555         Ditto.
19556         (fix<fixunssuffix>_trunc<mode><sselongvecmodelower>2<mask_name><round_saeonly_name>):
19557         Change iterator to VF1_128_256VLDQ_AVX10_1. Remove target check.
19558         (avx512dq_fix<fixunssuffix>_truncv2sfv2di2<mask_name>):
19559         Add TARGET_AVX10_1.
19560         (fix<fixunssuffix>_truncv2sfv2di2): Ditto.
19561         (cond_mul<mode>): Change iterator to VI8_AVX10_1_AVX512DQVL.
19562         Remove target check.
19563         (avx512dq_mul<mode>3<mask_name>): Ditto.
19564         (*avx512dq_mul<mode>3<mask_name>): Ditto.
19565         (VI4F_BRCST32x2): Add TARGET_AVX512DQ and TARGET_AVX10_1.
19566         (<mask_codefor>avx512dq_broadcast<mode><mask_name>):
19567         Remove target check.
19568         (VI8F_BRCST64x2): Add TARGET_AVX512DQ and TARGET_AVX10_1.
19569         (<mask_codefor>avx512dq_broadcast<mode><mask_name>_1):
19570         Remove target check.
19571         * config/i386/subst.md (mask_mode512bit_condition): Add TARGET_AVX10_1.
19572         (mask_avx512vl_condition): Ditto.
19573         (mask): Ditto.
19575 2023-08-24  Haochen Jiang  <haochen.jiang@intel.com>
19577         Revert:
19578         2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
19580         * config/i386/avx512vldqintrin.h: Remove target attribute.
19581         * config/i386/i386-builtin.def (BDESC):
19582         Add OPTION_MASK_ISA2_AVX10_1.
19583         * config/i386/i386.cc (standard_sse_constant_opcode): Add TARGET_AVX10_1.
19584         * config/i386/sse.md: (VI48_AVX512VL_AVX10_1): New.
19585         (VI48_AVX512VLDQ_AVX10_1): Ditto.
19586         (VF2_AVX512VL): Remove.
19587         (VI8_256_512VLDQ_AVX10_1): Rename from VI8_256_512.
19588         Add TARGET_AVX10_1.
19589         (*<code><mode>3<mask_name>): Change isa attribute to
19590         avx10_1_or_avx512dq. Add TARGET_AVX10_1.
19591         (<code><mode>3): Add TARGET_AVX10_1. Change isa attr
19592         to avx10_1_or_avx512vl.
19593         (<mask_codefor>avx512dq_cvtps2qq<mode><mask_name><round_name>):
19594         Change iterator to VI8_256_512VLDQ_AVX10_1. Remove target check.
19595         (<mask_codefor>avx512dq_cvtps2qqv2di<mask_name>):
19596         Add TARGET_AVX10_1.
19597         (<mask_codefor>avx512dq_cvtps2uqq<mode><mask_name><round_name>):
19598         Change iterator to VI8_256_512VLDQ_AVX10_1. Remove target check.
19599         (<mask_codefor>avx512dq_cvtps2uqqv2di<mask_name>):
19600         Add TARGET_AVX10_1.
19601         (float<floatunssuffix><sseintvecmodelower><mode>2<mask_name><round_name>):
19602         Change iterator to VF2_AVX512VLDQ_AVX10_1. Remove target check.
19603         (float<floatunssuffix><sselongvecmodelower><mode>2<mask_name><round_name>):
19604         Change iterator to VF1_128_256VLDQ_AVX10_1. Remove target check.
19605         (float<floatunssuffix>v4div4sf2<mask_name>):
19606         Add TARGET_AVX10_1.
19607         (avx512dq_float<floatunssuffix>v2div2sf2): Ditto.
19608         (*avx512dq_float<floatunssuffix>v2div2sf2): Ditto.
19609         (float<floatunssuffix>v2div2sf2): Ditto.
19610         (float<floatunssuffix>v2div2sf2_mask): Ditto.
19611         (*float<floatunssuffix>v2div2sf2_mask): Ditto.
19612         (*float<floatunssuffix>v2div2sf2_mask_1): Ditto.
19613         (<avx512>_cvt<ssemodesuffix>2mask<mode>):
19614         Change iterator to VI48_AVX512VLDQ_AVX10_1. Remove target check.
19615         (<avx512>_cvtmask2<ssemodesuffix><mode>): Ditto.
19616         (*<avx512>_cvtmask2<ssemodesuffix><mode>):
19617         Change iterator to VI48_AVX512VL_AVX10_1. Remove target check.
19618         Change when constraint is enabled.
19620 2023-08-24  Haochen Jiang  <haochen.jiang@intel.com>
19622         Revert:
19623         2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
19625         * config/i386/avx512vldqintrin.h: Remove target attribute.
19626         * config/i386/i386-builtin.def (BDESC):
19627         Add OPTION_MASK_ISA2_AVX10_1.
19628         * config/i386/sse.md (VF_AVX512VLDQ_AVX10_1): New.
19629         (VFH_AVX512VLDQ_AVX10_1): Ditto.
19630         (VF1_AVX512VLDQ_AVX10_1): Ditto.
19631         (<mask_codefor>reducep<mode><mask_name><round_saeonly_name>):
19632         Change iterator to VFH_AVX512VLDQ_AVX10_1. Remove target check.
19633         (vec_pack<floatprefix>_float_<mode>): Change iterator to
19634         VI8_AVX512VLDQ_AVX10_1. Remove target check.
19635         (vec_unpack_<fixprefix>fix_trunc_lo_<mode>): Change iterator to
19636         VF1_AVX512VLDQ_AVX10_1. Remove target check.
19637         (vec_unpack_<fixprefix>fix_trunc_hi_<mode>): Ditto.
19638         (VI48F_256_DQVL_AVX10_1): Rename from VI48F_256_DQ.
19639         (avx512vl_vextractf128<mode>): Change iterator to
19640         VI48F_256_DQVL_AVX10_1. Remove target check.
19641         (vec_extract_hi_<mode>_mask): Add TARGET_AVX10_1.
19642         (vec_extract_hi_<mode>): Ditto.
19643         (avx512vl_vinsert<mode>): Ditto.
19644         (vec_set_lo_<mode><mask_name>): Ditto.
19645         (vec_set_hi_<mode><mask_name>): Ditto.
19646         (avx512dq_rangep<mode><mask_name><round_saeonly_name>): Change
19647         iterator to VF_AVX512VLDQ_AVX10_1. Remove target check.
19648         (avx512dq_fpclass<mode><mask_scalar_merge_name>): Change
19649         iterator to VFH_AVX512VLDQ_AVX10_1. Remove target check.
19650         * config/i386/subst.md (mask_avx512dq_condition): Add
19651         TARGET_AVX10_1.
19652         (mask_scalar_merge): Ditto.
19654 2023-08-24  Haochen Jiang  <haochen.jiang@intel.com>
19656         Revert:
19657         2023-08-18  Haochen Jiang  <haochen.jiang@intel.com>
19659         PR target/111051
19660         * config/i386/avx512vldqintrin.h: Push AVX2 when AVX2 is
19661         disabled.
19663 2023-08-24  Richard Biener  <rguenther@suse.de>
19665         PR debug/111080
19666         * dwarf2out.cc (prune_unused_types_walk): Handle
19667         DW_TAG_restrict_type, DW_TAG_shared_type, DW_TAG_atomic_type,
19668         DW_TAG_immutable_type, DW_TAG_coarray_type, DW_TAG_unspecified_type
19669         and DW_TAG_dynamic_type as to only output them when referenced.
19671 2023-08-24  liuhongt  <hongtao.liu@intel.com>
19673         * config/i386/i386.cc (ix86_invalid_conversion): Adjust GCC
19674         V13 to GCC 13.1.
19676 2023-08-24  liuhongt  <hongtao.liu@intel.com>
19678         * common/config/i386/i386-common.cc (processor_names): Add new
19679         member graniterapids-s and arrowlake-s.
19680         * config/i386/i386-options.cc (processor_alias_table): Update
19681         table with PROCESSOR_ARROWLAKE_S and
19682         PROCESSOR_GRANITERAPIDS_D.
19683         (m_GRANITERAPID_D): New macro.
19684         (m_ARROWLAKE_S): Ditto.
19685         (m_CORE_AVX512): Add m_GRANITERAPIDS_D.
19686         (processor_cost_table): Add icelake_cost for
19687         PROCESSOR_GRANITERAPIDS_D and alderlake_cost for
19688         PROCESSOR_ARROWLAKE_S.
19689         * config/i386/x86-tune.def: Hanlde m_ARROWLAKE_S same as
19690         m_ARROWLAKE.
19691         * config/i386/i386.h (enum processor_type): Add new member
19692         PROCESSOR_GRANITERAPIDS_D and PROCESSOR_ARROWLAKE_S.
19693         * config/i386/i386-c.cc (ix86_target_macros_internal): Handle
19694         PROCESSOR_GRANITERAPIDS_D and PROCESSOR_ARROWLAKE_S
19696 2023-08-23  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
19698         * lra-eliminations.cc (eliminate_regs_in_insn): Use equivalences to
19699         to help simplify code further.
19701 2023-08-23  Andrew MacLeod  <amacleod@redhat.com>
19703         * gimple-range-fold.cc (fold_using_range::range_of_phi): Tweak output.
19704         * gimple-range-phi.cc (phi_group::phi_group): Remove unused members.
19705         Initialize using a range instead of value and edge.
19706         (phi_group::calculate_using_modifier): Use initializer value and
19707         process for relations after trying for iteration convergence.
19708         (phi_group::refine_using_relation): Use initializer range.
19709         (phi_group::dump): Rework the dump output.
19710         (phi_analyzer::process_phi): Allow multiple constant initilizers.
19711         Dump groups immediately as created.
19712         (phi_analyzer::dump): Tweak output.
19713         * gimple-range-phi.h (phi_group::phi_group): Adjust prototype.
19714         (phi_group::initial_value): Delete.
19715         (phi_group::refine_using_relation): Adjust prototype.
19716         (phi_group::m_initial_value): Delete.
19717         (phi_group::m_initial_edge): Delete.
19718         (phi_group::m_vr): Use int_range_max.
19719         * tree-vrp.cc (execute_ranger_vrp): Don't dump phi groups.
19721 2023-08-23  Andrew MacLeod  <amacleod@redhat.com>
19723         * gimple-range-phi.cc (phi_analyzer::operator[]): Return NULL if
19724         no group was created.
19725         (phi_analyzer::process_phi): Do not create groups of one phi node.
19727 2023-08-23  Richard Earnshaw  <rearnsha@arm.com>
19729         * target.def (gen_ccmp_first, gen_ccmp_next): Use rtx_code for
19730         CODE, CMP_CODE and BIT_CODE arguments.
19731         * config/aarch64/aarch64.cc (aarch64_gen_ccmp_first): Likewise.
19732         (aarch64_gen_ccmp_next): Likewise.
19733         * doc/tm.texi: Regenerated.
19735 2023-08-23  Richard Earnshaw  <rearnsha@arm.com>
19737         * coretypes.h (rtx_code): Add forward declaration.
19738         * rtl.h (rtx_code): Make compatible with forward declaration.
19740 2023-08-23  Uros Bizjak  <ubizjak@gmail.com>
19742         PR target/111010
19743         * config/i386/i386.md (*concat<any_or_plus:mode><dwi>3_3):
19744         Merge pattern from *concatditi3_3 and *concatsidi3_3 using
19745         DWIH mode iterator.  Disable (=&r,m,m) alternative for
19746         32-bit targets.
19747         (*concat<any_or_plus:mode><dwi>3_3): Disable (=&r,m,m)
19748         alternative for 32-bit targets.
19750 2023-08-23  Zhangjin Liao  <liaozhangjin@eswincomputing.com>
19752         * config/riscv/bitmanip.md (*<bitmanip_optab>disi2_sext): Add a more
19753         appropriate type attribute.
19755 2023-08-23  Lehua Ding  <lehua.ding@rivai.ai>
19757         * config/riscv/autovec-opt.md (*cond_abs<mode>): New combine pattern.
19758         (*copysign<mode>_neg): Ditto.
19759         * config/riscv/autovec.md (@vcond_mask_<mode><vm>): Adjust.
19760         (<optab><mode>2): Ditto.
19761         (cond_<optab><mode>): New.
19762         (cond_len_<optab><mode>): Ditto.
19763         * config/riscv/riscv-protos.h (enum insn_type): New.
19764         (expand_cond_len_unop): New helper func.
19765         * config/riscv/riscv-v.cc (shuffle_merge_patterns): Adjust.
19766         (expand_cond_len_unop): New helper func.
19768 2023-08-23  Jan Hubicka  <jh@suse.cz>
19770         * tree-ssa-loop-ch.cc (enum ch_decision): Fix comment.
19771         (should_duplicate_loop_header_p): Fix return value for static exits.
19772         (ch_base::copy_headers): Improve handling of ch_possible_zero_cost.
19774 2023-08-23  Kewen Lin  <linkw@linux.ibm.com>
19776         * tree-vect-stmts.cc (vectorizable_store): Move the handlings on
19777         VMAT_GATHER_SCATTER in the final loop nest to its own loop,
19778         and update the final nest accordingly.
19780 2023-08-23  Kewen Lin  <linkw@linux.ibm.com>
19782         * tree-vect-stmts.cc (vectorizable_store): Move the handlings on
19783         VMAT_LOAD_STORE_LANES in the final loop nest to its own loop,
19784         and update the final nest accordingly.
19786 2023-08-23  Kewen Lin  <linkw@linux.ibm.com>
19788         * tree-vect-stmts.cc (vectorizable_store): Remove vec oprnds,
19789         adjust vec result_chain, vec_oprnd with auto_vec, and adjust
19790         gvec_oprnds with auto_delete_vec.
19792 2023-08-23  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
19794         * config/riscv/riscv-vsetvl.cc
19795         (pass_vsetvl::global_eliminate_vsetvl_insn): Fix potential ICE.
19797 2023-08-23  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
19799         * config/riscv/riscv-vsetvl.cc (ge_sew_ratio_unavailable_p):
19800         Fix fuse rule bug.
19801         * config/riscv/riscv-vsetvl.def (DEF_SEW_LMUL_FUSE_RULE): Ditto.
19803 2023-08-23  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
19805         * config/riscv/vector.md: Add attribute.
19807 2023-08-22  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
19809         * config/riscv/riscv-vsetvl.cc (change_insn): Clang format.
19810         (vector_infos_manager::all_same_ratio_p): Ditto.
19811         (vector_infos_manager::all_same_avl_p): Ditto.
19812         (pass_vsetvl::refine_vsetvls): Ditto.
19813         (pass_vsetvl::cleanup_vsetvls): Ditto.
19814         (pass_vsetvl::commit_vsetvls): Ditto.
19815         (pass_vsetvl::local_eliminate_vsetvl_insn): Ditto.
19816         (pass_vsetvl::global_eliminate_vsetvl_insn): Ditto.
19817         (pass_vsetvl::compute_probabilities): Ditto.
19819 2023-08-22  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
19821         * config/riscv/t-riscv: Add riscv-vsetvl.def
19823 2023-08-22  Vineet Gupta  <vineetg@rivosinc.com>
19825         * config/riscv/riscv.opt: Add --param names
19826         riscv-autovec-preference and riscv-autovec-lmul
19828 2023-08-22  Raphael Moreira Zinsly  <rzinsly@ventanamicro.com>
19830         * config/riscv/t-linux: Add MULTIARCH_DIRNAME.
19832 2023-08-22  Tobias Burnus  <tobias@codesourcery.com>
19834         * tree-core.h (enum omp_clause_defaultmap_kind): Add
19835         OMP_CLAUSE_DEFAULTMAP_CATEGORY_ALL.
19836         * gimplify.cc (gimplify_scan_omp_clauses): Handle it.
19837         * tree-pretty-print.cc (dump_omp_clause): Likewise.
19839 2023-08-22  Jakub Jelinek  <jakub@redhat.com>
19841         PR c++/106652
19842         * doc/extend.texi (_Float<n>): Drop obsolete sentence that the
19843         types aren't supported in C++.
19845 2023-08-22  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
19847         * doc/md.texi: Add LEN_FOLD_EXTRACT_LAST pattern.
19848         * internal-fn.cc (fold_len_extract_direct): Ditto.
19849         (expand_fold_len_extract_optab_fn): Ditto.
19850         (direct_fold_len_extract_optab_supported_p): Ditto.
19851         * internal-fn.def (LEN_FOLD_EXTRACT_LAST): Ditto.
19852         * optabs.def (OPTAB_D): Ditto.
19854 2023-08-22  Richard Biener  <rguenther@suse.de>
19856         * tree-vect-stmts.cc (vectorizable_store): Do not bump
19857         DR_GROUP_STORE_COUNT here.  Remove early out.
19858         (vect_transform_stmt): Only call vectorizable_store on
19859         the last element of an interleaving chain.
19861 2023-08-22  Richard Biener  <rguenther@suse.de>
19863         PR tree-optimization/94864
19864         PR tree-optimization/94865
19865         PR tree-optimization/93080
19866         * match.pd (bit_insert @0 (BIT_FIELD_REF @1 ..) ..): New pattern
19867         for vector insertion from vector extraction.
19869 2023-08-22  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
19870             Kewen.Lin  <linkw@linux.ibm.com>
19872         * tree-vect-loop.cc (vect_verify_loop_lens): Add exists check.
19873         (vectorizable_live_operation): Add live vectorization for length loop
19874         control.
19876 2023-08-22  David Malcolm  <dmalcolm@redhat.com>
19878         PR analyzer/105899
19879         * doc/invoke.texi: Remove -Wanalyzer-unterminated-string.
19881 2023-08-22  Pan Li  <pan2.li@intel.com>
19883         * config/riscv/riscv-vector-builtins-bases.cc
19884         (vfwredusum_frm_obj): New declaration.
19885         (BASE): Ditto.
19886         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
19887         * config/riscv/riscv-vector-builtins-functions.def
19888         (vfwredusum_frm): New intrinsic function def.
19890 2023-08-21  David Faust  <david.faust@oracle.com>
19892         * config/bpf/bpf.md (neg): Second operand must be a register.
19894 2023-08-21  Edwin Lu  <ewlu@rivosinc.com>
19896         * config/riscv/bitmanip.md: Added bitmanip type to insns
19897         that are missing types.
19899 2023-08-21  Jeff Law  <jlaw@ventanamicro.com>
19901         * config/riscv/sync-ztso.md (atomic_load_ztso<mode>): Avoid extraenous
19902         newline.
19904 2023-08-21  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
19906         * config/aarch64/falkor-tag-collision-avoidance.cc (dump_insn_list):
19907         Fix format specifier.
19909 2023-08-21  Aldy Hernandez  <aldyh@redhat.com>
19911         * value-range.cc (frange::union_nans): Return false if nothing
19912         changed.
19913         (range_tests_floats): New test.
19915 2023-08-21  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
19917         PR tree-optimization/111048
19918         * fold-const.cc (valid_mask_for_fold_vec_perm_cst_p): Set arg_npatterns
19919         correctly.
19920         (fold_vec_perm_cst): Remove workaround and again call
19921         valid_mask_fold_vec_perm_cst_p for both VLS and VLA vectors.
19922         (test_fold_vec_perm_cst::test_nunits_min_4): Add test-case.
19924 2023-08-21  Richard Biener  <rguenther@suse.de>
19926         PR tree-optimization/111082
19927         * tree-vect-slp.cc (vectorize_slp_instance_root_stmt): Only
19928         pun operations that can overflow.
19930 2023-08-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
19932         * lcm.cc (compute_antinout_edge): Export as global use.
19933         (compute_earliest): Ditto.
19934         (compute_rev_insert_delete): Ditto.
19935         * lcm.h (compute_antinout_edge): Ditto.
19936         (compute_earliest): Ditto.
19938 2023-08-21  Richard Biener  <rguenther@suse.de>
19940         PR tree-optimization/111070
19941         * tree-ssa-ifcombine.cc (ifcombine_ifandif): Check we have
19942         an SSA name before checking SSA_NAME_OCCURS_IN_ABNORMAL_PHI.
19944 2023-08-21  Andrew Pinski  <apinski@marvell.com>
19946         PR tree-optimization/111002
19947         * match.pd (view_convert(vec_cond(a,b,c))): New pattern.
19949 2023-08-21  liuhongt  <hongtao.liu@intel.com>
19951         * common/config/i386/cpuinfo.h (get_intel_cpu): Detect
19952         Alderlake-N.
19953         * common/config/i386/i386-common.cc (alias_table): Support
19954         -march=gracemont as an alias of -march=alderlake.
19956 2023-08-20  Uros Bizjak  <ubizjak@gmail.com>
19958         * config/i386/i386-expand.cc (ix86_expand_sse_extend): Use ops[1]
19959         instead of src in the call to ix86_expand_sse_cmp.
19960         * config/i386/sse.md (<any_extend:insn>v8qiv8hi2): Do not
19961         force operands[1] to a register.
19962         (<any_extend:insn>v4hiv4si2): Ditto.
19963         (<any_extend:insn>v2siv2di2): Ditto.
19965 2023-08-20  Andrew Pinski  <apinski@marvell.com>
19967         PR tree-optimization/111006
19968         PR tree-optimization/110986
19969         * match.pd: (op(vec_cond(a,b,c))): Handle convert for op.
19971 2023-08-20  Eric Gallager  <egallager@gcc.gnu.org>
19973         PR target/90835
19974         * Makefile.in: improve error message when /usr/include is
19975         missing
19977 2023-08-19  Tobias Burnus  <tobias@codesourcery.com>
19979         PR middle-end/111017
19980         * omp-expand.cc (expand_omp_for_init_vars): Pass after=true
19981         to expand_omp_build_cond for 'factor != 0' condition, resulting
19982         in pre-r12-5295-g47de0b56ee455e code for the gimple insert.
19984 2023-08-19  Guo Jie  <guojie@loongson.cn>
19985             Lulu Cheng  <chenglulu@loongson.cn>
19987         * config/loongarch/t-loongarch: Add loongarch-driver.h into
19988         TM_H. Add loongarch-def.h and loongarch-tune.h into
19989         OPTIONS_H_EXTRA.
19991 2023-08-18  Uros Bizjak  <ubizjak@gmail.com>
19993         PR target/111023
19994         * config/i386/i386-expand.cc (ix86_split_mmx_punpck):
19995         Also handle V2QImode.
19996         (ix86_expand_sse_extend): New function.
19997         * config/i386/i386-protos.h (ix86_expand_sse_extend): New prototype.
19998         * config/i386/mmx.md (<any_extend:insn>v4qiv4hi2): Enable for
19999         TARGET_SSE2.  Expand through ix86_expand_sse_extend for !TARGET_SSE4_1.
20000         (<any_extend:insn>v2hiv2si2): Ditto.
20001         (<any_extend:insn>v2qiv2hi2): Ditto.
20002         * config/i386/sse.md (<any_extend:insn>v8qiv8hi2): Ditto.
20003         (<any_extend:insn>v4hiv4si2): Ditto.
20004         (<any_extend:insn>v2siv2di2): Ditto.
20006 2023-08-18  Aldy Hernandez  <aldyh@redhat.com>
20008         PR ipa/110753
20009         * value-range.cc (irange::union_bitmask): Return FALSE if updated
20010         bitmask is semantically equivalent to the original mask.
20011         (irange::intersect_bitmask): Same.
20012         (irange::get_bitmask): Add comment.
20014 2023-08-18  Richard Biener  <rguenther@suse.de>
20016         PR tree-optimization/111019
20017         * tree-ssa-loop-im.cc (gather_mem_refs_stmt): When canonicalizing
20018         also scrap base and offset in case the ref is indirect.
20020 2023-08-18  Jose E. Marchesi  <jose.marchesi@oracle.com>
20022         * config/bpf/bpf.opt (mframe-limit): Set default to 32767.
20024 2023-08-18  Kewen Lin  <linkw@linux.ibm.com>
20026         PR bootstrap/111021
20027         * Makefile.in (TM_P_H): Add $(TREE_H) as dependence.
20029 2023-08-18  Kewen Lin  <linkw@linux.ibm.com>
20031         * tree-vect-stmts.cc (vect_build_scatter_store_calls): New, factor
20032         out from ...
20033         (vectorizable_store): ... here.
20035 2023-08-18  Richard Biener  <rguenther@suse.de>
20037         PR tree-optimization/111048
20038         * fold-const.cc (fold_vec_perm_cst): Check for non-VLA
20039         vectors first.
20041 2023-08-18  Haochen Jiang  <haochen.jiang@intel.com>
20043         PR target/111051
20044         * config/i386/avx512vldqintrin.h: Push AVX2 when AVX2 is
20045         disabled.
20047 2023-08-18  Kewen Lin  <linkw@linux.ibm.com>
20049         * tree-vect-stmts.cc (vectorizable_load): Move the handlings on
20050         VMAT_GATHER_SCATTER in the final loop nest to its own loop,
20051         and update the final nest accordingly.
20053 2023-08-18  Andrew Pinski  <apinski@marvell.com>
20055         * doc/md.texi (Standard patterns): Document cond_neg, cond_one_cmpl,
20056         cond_len_neg and cond_len_one_cmpl.
20058 2023-08-18  Lehua Ding  <lehua.ding@rivai.ai>
20060         * config/riscv/iterators.md (TARGET_HARD_FLOAT || TARGET_ZFINX): New.
20061         * config/riscv/pic.md (*local_pic_load<ANYF:mode>): Change ANYF.
20062         (*local_pic_load<ANYLSF:mode>): To ANYLSF.
20063         (*local_pic_load_32d<ANYF:mode>): Ditto.
20064         (*local_pic_load_32d<ANYLSF:mode>): Ditto.
20065         (*local_pic_store<ANYF:mode>): Ditto.
20066         (*local_pic_store<ANYLSF:mode>): Ditto.
20067         (*local_pic_store_32d<ANYF:mode>): Ditto.
20068         (*local_pic_store_32d<ANYLSF:mode>): Ditto.
20070 2023-08-18  Lehua Ding  <lehua.ding@rivai.ai>
20071             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
20073         * config/riscv/predicates.md (vector_const_0_operand): New.
20074         * config/riscv/vector.md (*pred_broadcast<mode>_zero): Ditto.
20076 2023-08-18  Lehua Ding  <lehua.ding@rivai.ai>
20078         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::backward_demand_fusion):
20079         Forbidden.
20081 2023-08-17  Andrew MacLeod  <amacleod@redhat.com>
20083         PR tree-optimization/111009
20084         * range-op.cc (operator_addr_expr::op1_range): Be more restrictive.
20086 2023-08-17  Vladimir N. Makarov  <vmakarov@redhat.com>
20088         * lra-spills.cc (assign_stack_slot_num_and_sort_pseudos): Moving
20089         slots_num initialization from here ...
20090         (lra_spill): ... to here before the 1st call of
20091         assign_stack_slot_num_and_sort_pseudos.  Add the 2nd call after
20092         fp->sp elimination.
20094 2023-08-17  Jose E. Marchesi  <jose.marchesi@oracle.com>
20096         PR c/106537
20097         * doc/invoke.texi (Option Summary): Mention
20098         -Wcompare-distinct-pointer-types under `Warning Options'.
20099         (Warning Options): Document -Wcompare-distinct-pointer-types.
20101 2023-08-17  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
20103         * recog.cc (memory_address_addr_space_p): Mark possibly unused
20104         argument as unused.
20106 2023-08-17  Richard Biener  <rguenther@suse.de>
20108         PR tree-optimization/111039
20109         * tree-ssa-ifcombine.cc (ifcombine_ifandif): Check for
20110         SSA_NAME_OCCURS_IN_ABNORMAL_PHI.
20112 2023-08-17  Alex Coplan  <alex.coplan@arm.com>
20114         * doc/rtl.texi: Fix up sample code for RTL-SSA insn changes.
20116 2023-08-17  Jose E. Marchesi  <jose.marchesi@oracle.com>
20118         PR target/111046
20119         * config/bpf/bpf.cc (bpf_attribute_table): Add entry for the
20120         `naked' function attribute.
20121         (bpf_warn_func_return): New function.
20122         (TARGET_WARN_FUNC_RETURN): Define.
20123         (bpf_expand_prologue): Add preventive comment.
20124         (bpf_expand_epilogue): Likewise.
20125         * doc/extend.texi (BPF Function Attributes): Document the `naked'
20126         function attribute.
20128 2023-08-17  Richard Biener  <rguenther@suse.de>
20130         * tree-vect-slp.cc (vect_slp_check_for_roots): Use
20131         !needs_fold_left_reduction_p to decide whether we can
20132         handle the reduction with association.
20133         (vectorize_slp_instance_root_stmt): For TYPE_OVERFLOW_UNDEFINED
20134         reductions perform all arithmetic in an unsigned type.
20136 2023-08-17  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
20138         * configure.ac (gcc_cv_ld64_version): Allow for dyld in ld -v
20139         output.
20140         * configure: Regenerate.
20142 2023-08-17  Pan Li  <pan2.li@intel.com>
20144         * config/riscv/riscv-vector-builtins-bases.cc
20145         (widen_freducop): Add frm_opt_type template arg.
20146         (vfwredosum_frm_obj): New declaration.
20147         (BASE): Ditto.
20148         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
20149         * config/riscv/riscv-vector-builtins-functions.def
20150         (vfwredosum_frm): New intrinsic function def.
20152 2023-08-17  Pan Li  <pan2.li@intel.com>
20154         * config/riscv/riscv-vector-builtins-bases.cc
20155         (vfredosum_frm_obj): New declaration.
20156         (BASE): Ditto.
20157         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
20158         * config/riscv/riscv-vector-builtins-functions.def
20159         (vfredosum_frm): New intrinsic function def.
20161 2023-08-17  Pan Li  <pan2.li@intel.com>
20163         * config/riscv/riscv-vector-builtins-bases.cc
20164         (class freducop): Add frm_op_type template arg.
20165         (vfredusum_frm_obj): New declaration.
20166         (BASE): Ditto.
20167         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
20168         * config/riscv/riscv-vector-builtins-functions.def
20169         (vfredusum_frm): New intrinsic function def.
20170         * config/riscv/riscv-vector-builtins-shapes.cc
20171         (struct reduc_alu_frm_def): New class for frm shape.
20172         (SHAPE): New declaration.
20173         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
20175 2023-08-17  Pan Li  <pan2.li@intel.com>
20177         * config/riscv/riscv-vector-builtins-bases.cc
20178         (class vfncvt_f): Add frm_op_type template arg.
20179         (vfncvt_f_frm_obj): New declaration.
20180         (BASE): Ditto.
20181         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
20182         * config/riscv/riscv-vector-builtins-functions.def
20183         (vfncvt_f_frm): New intrinsic function def.
20185 2023-08-17  Pan Li  <pan2.li@intel.com>
20187         * config/riscv/riscv-vector-builtins-bases.cc
20188         (vfncvt_xu_frm_obj): New declaration.
20189         (BASE): Ditto.
20190         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
20191         * config/riscv/riscv-vector-builtins-functions.def
20192         (vfncvt_xu_frm): New intrinsic function def.
20194 2023-08-17  Pan Li  <pan2.li@intel.com>
20196         * config/riscv/riscv-vector-builtins-bases.cc
20197         (class vfncvt_x): Add frm_op_type template arg.
20198         (BASE): New declaration.
20199         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
20200         * config/riscv/riscv-vector-builtins-functions.def
20201         (vfncvt_x_frm): New intrinsic function def.
20202         * config/riscv/riscv-vector-builtins-shapes.cc
20203         (struct narrow_alu_frm_def): New shape function for frm.
20204         (SHAPE): New declaration.
20205         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
20207 2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
20209         * config/i386/avx512vldqintrin.h: Remove target attribute.
20210         * config/i386/i386-builtin.def (BDESC):
20211         Add OPTION_MASK_ISA2_AVX10_1.
20212         * config/i386/sse.md (VF_AVX512VLDQ_AVX10_1): New.
20213         (VFH_AVX512VLDQ_AVX10_1): Ditto.
20214         (VF1_AVX512VLDQ_AVX10_1): Ditto.
20215         (<mask_codefor>reducep<mode><mask_name><round_saeonly_name>):
20216         Change iterator to VFH_AVX512VLDQ_AVX10_1. Remove target check.
20217         (vec_pack<floatprefix>_float_<mode>): Change iterator to
20218         VI8_AVX512VLDQ_AVX10_1. Remove target check.
20219         (vec_unpack_<fixprefix>fix_trunc_lo_<mode>): Change iterator to
20220         VF1_AVX512VLDQ_AVX10_1. Remove target check.
20221         (vec_unpack_<fixprefix>fix_trunc_hi_<mode>): Ditto.
20222         (VI48F_256_DQVL_AVX10_1): Rename from VI48F_256_DQ.
20223         (avx512vl_vextractf128<mode>): Change iterator to
20224         VI48F_256_DQVL_AVX10_1. Remove target check.
20225         (vec_extract_hi_<mode>_mask): Add TARGET_AVX10_1.
20226         (vec_extract_hi_<mode>): Ditto.
20227         (avx512vl_vinsert<mode>): Ditto.
20228         (vec_set_lo_<mode><mask_name>): Ditto.
20229         (vec_set_hi_<mode><mask_name>): Ditto.
20230         (avx512dq_rangep<mode><mask_name><round_saeonly_name>): Change
20231         iterator to VF_AVX512VLDQ_AVX10_1. Remove target check.
20232         (avx512dq_fpclass<mode><mask_scalar_merge_name>): Change
20233         iterator to VFH_AVX512VLDQ_AVX10_1. Remove target check.
20234         * config/i386/subst.md (mask_avx512dq_condition): Add
20235         TARGET_AVX10_1.
20236         (mask_scalar_merge): Ditto.
20238 2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
20240         * config/i386/avx512vldqintrin.h: Remove target attribute.
20241         * config/i386/i386-builtin.def (BDESC):
20242         Add OPTION_MASK_ISA2_AVX10_1.
20243         * config/i386/i386.cc (standard_sse_constant_opcode): Add TARGET_AVX10_1.
20244         * config/i386/sse.md: (VI48_AVX512VL_AVX10_1): New.
20245         (VI48_AVX512VLDQ_AVX10_1): Ditto.
20246         (VF2_AVX512VL): Remove.
20247         (VI8_256_512VLDQ_AVX10_1): Rename from VI8_256_512.
20248         Add TARGET_AVX10_1.
20249         (*<code><mode>3<mask_name>): Change isa attribute to
20250         avx10_1_or_avx512dq. Add TARGET_AVX10_1.
20251         (<code><mode>3): Add TARGET_AVX10_1. Change isa attr
20252         to avx10_1_or_avx512vl.
20253         (<mask_codefor>avx512dq_cvtps2qq<mode><mask_name><round_name>):
20254         Change iterator to VI8_256_512VLDQ_AVX10_1. Remove target check.
20255         (<mask_codefor>avx512dq_cvtps2qqv2di<mask_name>):
20256         Add TARGET_AVX10_1.
20257         (<mask_codefor>avx512dq_cvtps2uqq<mode><mask_name><round_name>):
20258         Change iterator to VI8_256_512VLDQ_AVX10_1. Remove target check.
20259         (<mask_codefor>avx512dq_cvtps2uqqv2di<mask_name>):
20260         Add TARGET_AVX10_1.
20261         (float<floatunssuffix><sseintvecmodelower><mode>2<mask_name><round_name>):
20262         Change iterator to VF2_AVX512VLDQ_AVX10_1. Remove target check.
20263         (float<floatunssuffix><sselongvecmodelower><mode>2<mask_name><round_name>):
20264         Change iterator to VF1_128_256VLDQ_AVX10_1. Remove target check.
20265         (float<floatunssuffix>v4div4sf2<mask_name>):
20266         Add TARGET_AVX10_1.
20267         (avx512dq_float<floatunssuffix>v2div2sf2): Ditto.
20268         (*avx512dq_float<floatunssuffix>v2div2sf2): Ditto.
20269         (float<floatunssuffix>v2div2sf2): Ditto.
20270         (float<floatunssuffix>v2div2sf2_mask): Ditto.
20271         (*float<floatunssuffix>v2div2sf2_mask): Ditto.
20272         (*float<floatunssuffix>v2div2sf2_mask_1): Ditto.
20273         (<avx512>_cvt<ssemodesuffix>2mask<mode>):
20274         Change iterator to VI48_AVX512VLDQ_AVX10_1. Remove target check.
20275         (<avx512>_cvtmask2<ssemodesuffix><mode>): Ditto.
20276         (*<avx512>_cvtmask2<ssemodesuffix><mode>):
20277         Change iterator to VI48_AVX512VL_AVX10_1. Remove target check.
20278         Change when constraint is enabled.
20280 2023-08-17  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
20282         PR target/111037
20283         * config/riscv/riscv-vsetvl.cc (float_insn_valid_sew_p): New function.
20284         (second_sew_less_than_first_sew_p): Fix bug.
20285         (first_sew_less_than_second_sew_p): Ditto.
20287 2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
20289         * config/i386/avx512vldqintrin.h: Remove target attribute.
20290         * config/i386/i386-builtin.def (BDESC):
20291         Add OPTION_MASK_ISA2_AVX10_1.
20292         * config/i386/i386-builtins.cc (def_builtin): Handle AVX10_1.
20293         * config/i386/i386-expand.cc
20294         (ix86_check_builtin_isa_match): Ditto.
20295         (ix86_expand_sse2_mulvxdi3): Add TARGET_AVX10_1.
20296         * config/i386/i386.md: Add new isa attribute avx10_1_or_avx512dq
20297         and avx10_1_or_avx512vl.
20298         * config/i386/sse.md: (VF2_AVX512VLDQ_AVX10_1): New.
20299         (VF1_128_256VLDQ_AVX10_1): Ditto.
20300         (VI8_AVX512VLDQ_AVX10_1): Ditto.
20301         (<sse>_andnot<mode>3<mask_name>):
20302         Add TARGET_AVX10_1 and change isa attr from avx512dq to
20303         avx10_1_or_avx512dq.
20304         (*andnot<mode>3): Add TARGET_AVX10_1 and change isa attr from
20305         avx512vl to avx10_1_or_avx512vl.
20306         (fix<fixunssuffix>_trunc<mode><sseintvecmodelower>2<mask_name><round_saeonly_name>):
20307         Change iterator to VF2_AVX512VLDQ_AVX10_1. Remove target check.
20308         (fix_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
20309         Ditto.
20310         (ufix_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
20311         Ditto.
20312         (fix<fixunssuffix>_trunc<mode><sselongvecmodelower>2<mask_name><round_saeonly_name>):
20313         Change iterator to VF1_128_256VLDQ_AVX10_1. Remove target check.
20314         (avx512dq_fix<fixunssuffix>_truncv2sfv2di2<mask_name>):
20315         Add TARGET_AVX10_1.
20316         (fix<fixunssuffix>_truncv2sfv2di2): Ditto.
20317         (cond_mul<mode>): Change iterator to VI8_AVX10_1_AVX512DQVL.
20318         Remove target check.
20319         (avx512dq_mul<mode>3<mask_name>): Ditto.
20320         (*avx512dq_mul<mode>3<mask_name>): Ditto.
20321         (VI4F_BRCST32x2): Add TARGET_AVX512DQ and TARGET_AVX10_1.
20322         (<mask_codefor>avx512dq_broadcast<mode><mask_name>):
20323         Remove target check.
20324         (VI8F_BRCST64x2): Add TARGET_AVX512DQ and TARGET_AVX10_1.
20325         (<mask_codefor>avx512dq_broadcast<mode><mask_name>_1):
20326         Remove target check.
20327         * config/i386/subst.md (mask_mode512bit_condition): Add TARGET_AVX10_1.
20328         (mask_avx512vl_condition): Ditto.
20329         (mask): Ditto.
20331 2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
20333         * common/config/i386/i386-common.cc
20334         (ix86_check_avx10_vector_width): New function to check isa_flags
20335         to emit a warning when there is a conflict in AVX10 options for
20336         vector width.
20337         (ix86_handle_option): Add check for avx10.1-256 and avx10.1-512.
20338         * config/i386/driver-i386.cc (host_detect_local_cpu):
20339         Do not append -mno-avx10-max-512bit for -march=native.
20341 2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
20343         * common/config/i386/i386-common.cc
20344         (ix86_check_avx10): New function to check isa_flags and
20345         isa_flags_explicit to emit warning when AVX10 is enabled
20346         by "-m" option.
20347         (ix86_check_avx512):  New function to check isa_flags and
20348         isa_flags_explicit to emit warning when AVX512 is enabled
20349         by "-m" option.
20350         (ix86_handle_option): Do not change the flags when warning
20351         is emitted.
20352         * config/i386/driver-i386.cc (host_detect_local_cpu):
20353         Do not append -mno-avx10.1 for -march=native.
20355 2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
20357         * common/config/i386/cpuinfo.h (get_available_features):
20358         Add avx10_set and version and detect avx10.1.
20359         (cpu_indicator_init): Handle avx10.1-512.
20360         * common/config/i386/i386-common.cc
20361         (OPTION_MASK_ISA2_AVX10_512BIT_SET): New.
20362         (OPTION_MASK_ISA2_AVX10_1_SET): Ditto.
20363         (OPTION_MASK_ISA2_AVX10_512BIT_UNSET): Ditto.
20364         (OPTION_MASK_ISA2_AVX10_1_UNSET): Ditto.
20365         (OPTION_MASK_ISA2_AVX2_UNSET): Modify for AVX10_1.
20366         (ix86_handle_option): Handle -mavx10.1, -mavx10.1-256 and
20367         -mavx10.1-512.
20368         * common/config/i386/i386-cpuinfo.h (enum processor_features):
20369         Add FEATURE_AVX10_512BIT, FEATURE_AVX10_1 and
20370         FEATURE_AVX10_512BIT.
20371         * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
20372         AVX10_512BIT, AVX10_1 and AVX10_1_512.
20373         * config/i386/constraints.md (Yk): Add AVX10_1.
20374         (Yv): Ditto.
20375         (k): Ditto.
20376         * config/i386/cpuid.h (bit_AVX10): New.
20377         (bit_AVX10_256): Ditto.
20378         (bit_AVX10_512): Ditto.
20379         * config/i386/i386-c.cc (ix86_target_macros_internal):
20380         Define AVX10_512BIT and AVX10_1.
20381         * config/i386/i386-isa.def
20382         (AVX10_512BIT): Add DEF_PTA(AVX10_512BIT).
20383         (AVX10_1): Add DEF_PTA(AVX10_1).
20384         * config/i386/i386-options.cc (isa2_opts): Add -mavx10.1.
20385         (ix86_valid_target_attribute_inner_p): Handle avx10-512bit, avx10.1
20386         and avx10.1-512.
20387         (ix86_option_override_internal): Enable AVX512{F,VL,BW,DQ,CD,BF16,
20388         FP16,VBMI,VBMI2,VNNI,IFMA,BITALG,VPOPCNTDQ} features for avx10.1-512.
20389         (ix86_valid_target_attribute_inner_p): Handle AVX10_1.
20390         * config/i386/i386.cc (ix86_get_ssemov): Add AVX10_1.
20391         (ix86_conditional_register_usage): Ditto.
20392         (ix86_hard_regno_mode_ok): Ditto.
20393         (ix86_rtx_costs): Ditto.
20394         * config/i386/i386.h (VALID_MASK_AVX10_MODE): New macro.
20395         * config/i386/i386.opt: Add option -mavx10.1, -mavx10.1-256 and
20396         -mavx10.1-512.
20397         * doc/extend.texi: Document avx10.1, avx10.1-256 and avx10.1-512.
20398         * doc/invoke.texi: Document -mavx10.1, -mavx10.1-256 and -mavx10.1-512.
20399         * doc/sourcebuild.texi: Document target avx10.1, avx10.1-256
20400         and avx10.1-512.
20402 2023-08-17  Sergei Trofimovich  <siarheit@google.com>
20404         * flag-types.h (vrp_mode): Remove unused.
20406 2023-08-17  Yanzhang Wang  <yanzhang.wang@intel.com>
20408         * simplify-rtx.cc (simplify_context::simplify_binary_operation_1): Use
20409         CONSTM1_RTX.
20411 2023-08-17  Andrew Pinski  <apinski@marvell.com>
20413         * internal-fn.def (COND_NOT): New internal function.
20414         * match.pd (UNCOND_UNARY, COND_UNARY): Add bit_not/not
20415         to the lists.
20416         (`vec (a ? -1 : 0) ^ b`): New pattern to convert
20417         into conditional not.
20418         * optabs.def (cond_one_cmpl): New optab.
20419         (cond_len_one_cmpl): Likewise.
20421 2023-08-16  Surya Kumari Jangala  <jskumari@linux.ibm.com>
20423         PR rtl-optimization/110254
20424         * ira-color.cc (improve_allocation): Update array
20425         allocated_hard_reg_p.
20427 2023-08-16  Vladimir N. Makarov  <vmakarov@redhat.com>
20429         * lra-int.h (lra_update_fp2sp_elimination): Change the prototype.
20430         * lra-eliminations.cc (spill_pseudos): Record spilled pseudos.
20431         (lra_update_fp2sp_elimination): Ditto.
20432         (update_reg_eliminate): Adjust spill_pseudos call.
20433         * lra-spills.cc (lra_spill): Assign stack slots to pseudos spilled
20434         in lra_update_fp2sp_elimination.
20436 2023-08-16  Richard Ball  <richard.ball@arm.com>
20438         * config/aarch64/aarch64-cores.def (AARCH64_CORE): Add Cortex-A720 CPU.
20439         * config/aarch64/aarch64-tune.md: Regenerate.
20440         * doc/invoke.texi: Document Cortex-A720 CPU.
20442 2023-08-16  Robin Dapp  <rdapp@ventanamicro.com>
20444         * config/riscv/autovec.md (<u>avg<v_double_trunc>3_floor):
20445         Implement expander.
20446         (<u>avg<v_double_trunc>3_ceil): Ditto.
20447         * config/riscv/vector-iterators.md (ashiftrt): New iterator.
20448         (ASHIFTRT): Ditto.
20450 2023-08-16  Robin Dapp  <rdapp@ventanamicro.com>
20452         * internal-fn.cc (vec_extract_direct): Change type argument
20453         numbers.
20454         (expand_vec_extract_optab_fn): Call convert_optab_fn.
20455         (direct_vec_extract_optab_supported_p): Use
20456         convert_optab_supported_p.
20458 2023-08-16  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
20459             Richard Sandiford  <richard.sandiford@arm.com>
20461         * fold-const.cc (INCLUDE_ALGORITHM): Add Include.
20462         (valid_mask_for_fold_vec_perm_cst_p): New function.
20463         (fold_vec_perm_cst): Likewise.
20464         (fold_vec_perm): Adjust assert and call fold_vec_perm_cst.
20465         (test_fold_vec_perm_cst): New namespace.
20466         (test_fold_vec_perm_cst::build_vec_cst_rand): New function.
20467         (test_fold_vec_perm_cst::validate_res): Likewise.
20468         (test_fold_vec_perm_cst::validate_res_vls): Likewise.
20469         (test_fold_vec_perm_cst::builder_push_elems): Likewise.
20470         (test_fold_vec_perm_cst::test_vnx4si_v4si): Likewise.
20471         (test_fold_vec_perm_cst::test_v4si_vnx4si): Likewise.
20472         (test_fold_vec_perm_cst::test_all_nunits): Likewise.
20473         (test_fold_vec_perm_cst::test_nunits_min_2): Likewise.
20474         (test_fold_vec_perm_cst::test_nunits_min_4): Likewise.
20475         (test_fold_vec_perm_cst::test_nunits_min_8): Likewise.
20476         (test_fold_vec_perm_cst::test_nunits_max_4): Likewise.
20477         (test_fold_vec_perm_cst::is_simple_vla_size): Likewise.
20478         (test_fold_vec_perm_cst::test): Likewise.
20479         (fold_const_cc_tests): Call test_fold_vec_perm_cst::test.
20481 2023-08-16  Pan Li  <pan2.li@intel.com>
20483         * config/riscv/riscv-vector-builtins-bases.cc
20484         (BASE): New declaration.
20485         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
20486         * config/riscv/riscv-vector-builtins-functions.def
20487         (vfwcvt_xu_frm): New intrinsic function def.
20489 2023-08-16  Pan Li  <pan2.li@intel.com>
20491         * config/riscv/riscv-vector-builtins-bases.cc: Use explicit argument.
20493 2023-08-16  Pan Li  <pan2.li@intel.com>
20495         * config/riscv/riscv-vector-builtins-bases.cc
20496         (BASE): New declaration.
20497         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
20498         * config/riscv/riscv-vector-builtins-functions.def
20499         (vfwcvt_x_frm): New intrinsic function def.
20501 2023-08-16  Pan Li  <pan2.li@intel.com>
20503         * config/riscv/riscv-vector-builtins-bases.cc (BASE): New declaration.
20504         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
20505         * config/riscv/riscv-vector-builtins-functions.def
20506         (vfcvt_f_frm): New intrinsic function def.
20508 2023-08-16  Pan Li  <pan2.li@intel.com>
20510         * config/riscv/riscv-vector-builtins-bases.cc
20511         (BASE): New declaration.
20512         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
20513         * config/riscv/riscv-vector-builtins-functions.def
20514         (vfcvt_xu_frm): New intrinsic function def..
20516 2023-08-16  Haochen Gui  <guihaoc@gcc.gnu.org>
20518         PR target/110429
20519         * config/rs6000/vsx.md (*vsx_extract_<mode>_store_p9): Skip vector
20520         extract when the element is 7 on BE while 8 on LE for byte or 3 on
20521         BE while 4 on LE for halfword.
20523 2023-08-16  Haochen Gui  <guihaoc@gcc.gnu.org>
20525         PR target/106769
20526         * config/rs6000/vsx.md (expand vsx_extract_<mode>): Set it only
20527         for V8HI and V16QI.
20528         (vsx_extract_v4si): New expand for V4SI extraction.
20529         (vsx_extract_v4si_w1): New insn pattern for V4SI extraction on
20530         word 1 from BE order.
20531         (*mfvsrwz): New insn pattern for mfvsrwz.
20532         (*vsx_extract_<mode>_di_p9): Assert that it won't be generated on
20533         word 1 from BE order.
20534         (*vsx_extract_si): Remove.
20535         (*vsx_extract_v4si_w023): New insn and split pattern on word 0, 2,
20536         3 from BE order.
20538 2023-08-16  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
20540         * config/riscv/autovec.md (vec_mask_len_load_lanes<mode><vsingle>):
20541         New pattern.
20542         (vec_mask_len_store_lanes<mode><vsingle>): Ditto.
20543         * config/riscv/riscv-protos.h (expand_lanes_load_store): New function.
20544         * config/riscv/riscv-v.cc (get_mask_mode): Add tuple mask mode.
20545         (expand_lanes_load_store): New function.
20546         * config/riscv/vector-iterators.md: New iterator.
20548 2023-08-16  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
20550         * internal-fn.cc (internal_load_fn_p): Apply
20551         MASK_LEN_{LOAD_LANES,STORE_LANES} into vectorizer.
20552         (internal_store_fn_p): Ditto.
20553         (internal_fn_len_index): Ditto.
20554         (internal_fn_mask_index): Ditto.
20555         (internal_fn_stored_value_index): Ditto.
20556         * tree-vect-data-refs.cc (vect_store_lanes_supported): Ditto.
20557         (vect_load_lanes_supported): Ditto.
20558         * tree-vect-loop.cc: Ditto.
20559         * tree-vect-slp.cc (vect_slp_prefer_store_lanes_p): Ditto.
20560         * tree-vect-stmts.cc (check_load_store_for_partial_vectors): Ditto.
20561         (get_group_load_store_type): Ditto.
20562         (vectorizable_store): Ditto.
20563         (vectorizable_load): Ditto.
20564         * tree-vectorizer.h (vect_store_lanes_supported): Ditto.
20565         (vect_load_lanes_supported): Ditto.
20567 2023-08-16  Pan Li  <pan2.li@intel.com>
20569         * config/riscv/riscv-vector-builtins-bases.cc
20570         (enum frm_op_type): New type for frm.
20571         (BASE): New declaration.
20572         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
20573         * config/riscv/riscv-vector-builtins-functions.def
20574         (vfcvt_x_frm): New intrinsic function def.
20576 2023-08-16  liuhongt  <hongtao.liu@intel.com>
20578         * config/i386/i386-builtins.cc
20579         (ix86_vectorize_builtin_gather): Adjust for use_gather_8parts.
20580         * config/i386/i386-options.cc (parse_mtune_ctrl_str):
20581         Set/Clear tune features use_{gather,scatter}_{2parts, 4parts,
20582         8parts} for -mtune-crtl={,^}{use_gather,use_scatter}.
20583         * config/i386/i386.cc (ix86_vectorize_builtin_scatter): Adjust
20584         for use_scatter_8parts
20585         * config/i386/i386.h (TARGET_USE_GATHER): Rename to ..
20586         (TARGET_USE_GATHER_8PARTS): .. this.
20587         (TARGET_USE_SCATTER): Rename to ..
20588         (TARGET_USE_SCATTER_8PARTS): .. this.
20589         * config/i386/x86-tune.def (X86_TUNE_USE_GATHER): Rename to
20590         (X86_TUNE_USE_GATHER_8PARTS): .. this.
20591         (X86_TUNE_USE_SCATTER): Rename to
20592         (X86_TUNE_USE_SCATTER_8PARTS): .. this.
20593         * config/i386/i386.opt: Add new options mgather, mscatter.
20595 2023-08-16  liuhongt  <hongtao.liu@intel.com>
20597         * config/i386/i386-options.cc (m_GDS): New macro.
20598         * config/i386/x86-tune.def (X86_TUNE_USE_GATHER_2PARTS): Don't
20599         enable for m_GDS.
20600         (X86_TUNE_USE_GATHER_4PARTS): Ditto.
20601         (X86_TUNE_USE_GATHER): Ditto.
20603 2023-08-16  liuhongt  <hongtao.liu@intel.com>
20605         * config/i386/i386.md (movdf_internal): Generate vmovapd instead of
20606         vmovsd when moving DFmode between SSE_REGS.
20607         (movhi_internal): Generate vmovdqa instead of vmovsh when
20608         moving HImode between SSE_REGS.
20609         (mov<mode>_internal): Use vmovaps instead of vmovsh when
20610         moving HF/BFmode between SSE_REGS.
20612 2023-08-15  David Faust  <david.faust@oracle.com>
20614         * config/bpf/bpf.md (extendsisi2): Delete useless define_insn.
20616 2023-08-15  David Faust  <david.faust@oracle.com>
20618         PR target/111029
20619         * config/bpf/bpf.cc (bpf_print_register): Print 'w' registers
20620         for any mode 32-bits or smaller, not just SImode.
20622 2023-08-15  Martin Jambor  <mjambor@suse.cz>
20624         PR ipa/68930
20625         PR ipa/92497
20626         * ipa-prop.h (ipcp_get_aggregate_const): Declare.
20627         * ipa-prop.cc (ipcp_get_aggregate_const): New function.
20628         (ipcp_transform_function): Do not deallocate transformation info.
20629         * tree-ssa-sccvn.cc: Include alloc-pool.h, symbol-summary.h and
20630         ipa-prop.h.
20631         (vn_reference_lookup_2): When hitting default-def vuse, query
20632         IPA-CP transformation info for any known constants.
20634 2023-08-15  Chung-Lin Tang  <cltang@codesourcery.com>
20635             Thomas Schwinge  <thomas@codesourcery.com>
20637         * gimplify.cc (oacc_region_type_name): New function.
20638         (oacc_default_clause): If no 'default' clause appears on this
20639         compute construct, see if one appears on a lexically containing
20640         'data' construct.
20641         (gimplify_scan_omp_clauses): Upon OMP_CLAUSE_DEFAULT case, set
20642         ctx->oacc_default_clause_ctx to current context.
20644 2023-08-15  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
20646         PR target/110989
20647         * config/riscv/predicates.md: Fix predicate.
20649 2023-08-15  Richard Biener  <rguenther@suse.de>
20651         * tree-vect-slp.cc (vect_analyze_slp_instance): Remove
20652         slp_inst_kind_ctor handling.
20653         (vect_analyze_slp): Simplify.
20654         (vect_build_slp_instance): Dump when we analyze a CTOR.
20655         (vect_slp_check_for_constructors): Rename to ...
20656         (vect_slp_check_for_roots): ... this.  Register a
20657         slp_root for CONSTRUCTORs instead of shoving them to
20658         the set of grouped stores.
20659         (vect_slp_analyze_bb_1): Adjust.
20661 2023-08-15  Richard Biener  <rguenther@suse.de>
20663         * tree-vectorizer.h (_slp_instance::remain_stmts): Change
20664         to ...
20665         (_slp_instance::remain_defs): ... this.
20666         (SLP_INSTANCE_REMAIN_STMTS): Rename to ...
20667         (SLP_INSTANCE_REMAIN_DEFS): ... this.
20668         (slp_root::remain): New.
20669         (slp_root::slp_root): Adjust.
20670         * tree-vect-slp.cc (vect_free_slp_instance): Adjust.
20671         (vect_build_slp_instance): Get extra remain parameter,
20672         adjust former handling of a cut off stmt.
20673         (vect_analyze_slp_instance): Adjust.
20674         (vect_analyze_slp): Likewise.
20675         (_bb_vec_info::~_bb_vec_info): Likewise.
20676         (vectorizable_bb_reduc_epilogue): Dump something if we fail.
20677         (vect_slp_check_for_constructors): Handle non-internal
20678         defs as remain defs of a reduction.
20679         (vectorize_slp_instance_root_stmt): Adjust.
20681 2023-08-15  Richard Biener  <rguenther@suse.de>
20683         * tree-ssa-loop-ivcanon.cc: Include tree-vectorizer.h
20684         (canonicalize_loop_induction_variables): Use find_loop_location.
20686 2023-08-15  Hans-Peter Nilsson  <hp@axis.com>
20688         PR bootstrap/111021
20689         * config/cris/cris-protos.h: Revert recent change.
20690         * config/cris/cris.cc (cris_legitimate_address_p): Remove
20691         code_helper unused parameter.
20692         (cris_legitimate_address_p_hook): New wrapper function.
20693         (TARGET_LEGITIMATE_ADDRESS_P): Change to
20694         cris_legitimate_address_p_hook.
20696 2023-08-15  Richard Biener  <rguenther@suse.de>
20698         PR tree-optimization/110963
20699         * tree-ssa-pre.cc (do_pre_regular_insertion): Also insert
20700         a PHI node when the expression is available on all edges
20701         and we insert at most one copy from a constant.
20703 2023-08-15  Richard Biener  <rguenther@suse.de>
20705         PR tree-optimization/110991
20706         * tree-ssa-loop-ivcanon.cc (constant_after_peeling): Handle
20707         VIEW_CONVERT_EXPR <op>, handle more simple IV-like SSA cycles
20708         that will end up constant.
20710 2023-08-15  Kewen Lin  <linkw@linux.ibm.com>
20712         PR bootstrap/111021
20713         * Makefile.in (RECOG_H): Add $(TREE_H) as dependence.
20715 2023-08-15  Kewen Lin  <linkw@linux.ibm.com>
20717         * tree-vect-stmts.cc (vectorizable_load): Move the handlings on
20718         VMAT_LOAD_STORE_LANES in the final loop nest to its own loop,
20719         and update the final nest accordingly.
20721 2023-08-15  Kewen Lin  <linkw@linux.ibm.com>
20723         * tree-vect-stmts.cc (vectorizable_load): Remove some useless checks
20724         on VMAT_INVARIANT.
20726 2023-08-15  Pan Li  <pan2.li@intel.com>
20728         * mode-switching.cc (create_pre_exit): Add SET insn check.
20730 2023-08-15  Pan Li  <pan2.li@intel.com>
20732         * config/riscv/riscv-vector-builtins-bases.cc
20733         (class vfrec7_frm): New class for frm.
20734         (vfrec7_frm_obj): New declaration.
20735         (BASE): Ditto.
20736         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
20737         * config/riscv/riscv-vector-builtins-functions.def
20738         (vfrec7_frm): New intrinsic function definition.
20739         * config/riscv/vector-iterators.md
20740         (VFMISC): Remove VFREC7.
20741         (misc_op): Ditto.
20742         (float_insn_type): Ditto.
20743         (VFMISC_FRM): New int iterator.
20744         (misc_frm_op): New op for frm.
20745         (float_frm_insn_type): New type for frm.
20746         * config/riscv/vector.md (@pred_<misc_frm_op><mode>):
20747         New pattern for misc frm.
20749 2023-08-14  Vladimir N. Makarov  <vmakarov@redhat.com>
20751         * lra-constraints.cc (curr_insn_transform): Process output stack
20752         pointer reloads before emitting reload insns.
20754 2023-08-14  benjamin priour  <vultkayn@gcc.gnu.org>
20756         PR analyzer/110543
20757         * doc/invoke.texi: Add documentation of
20758         fanalyzer-show-events-in-system-headers
20760 2023-08-14  Jan Hubicka  <jh@suse.cz>
20762         PR gcov-profile/110988
20763         * tree-cfg.cc (fold_loop_internal_call): Avoid division by zero.
20765 2023-08-14  Jiawei  <jiawei@iscas.ac.cn>
20767         * config/riscv/riscv-c.cc (riscv_cpu_cpp_builtins):
20768         Enable compressed builtins when ZC* extensions enabled.
20769         * config/riscv/riscv-shorten-memrefs.cc:
20770         Enable shorten_memrefs pass when ZC* extensions enabled.
20771         * config/riscv/riscv.cc (riscv_compressed_reg_p):
20772         Enable compressible registers when ZC* extensions enabled.
20773         (riscv_rtx_costs): Allow adjusting rtx costs when ZC* extensions enabled.
20774         (riscv_address_cost): Allow adjusting address cost when ZC* extensions enabled.
20775         (riscv_first_stack_step): Allow compression of the register saves
20776         without adding extra instructions.
20777         * config/riscv/riscv.h (FUNCTION_BOUNDARY): Adjusts function boundary
20778         to 16 bits when ZC* extensions enabled.
20780 2023-08-14  Jiawei  <jiawei@iscas.ac.cn>
20782         * common/config/riscv/riscv-common.cc (riscv_subset_list::parse): New extensions.
20783         * config/riscv/riscv-opts.h (MASK_ZCA): New mask.
20784         (MASK_ZCB): Ditto.
20785         (MASK_ZCE): Ditto.
20786         (MASK_ZCF): Ditto.
20787         (MASK_ZCD): Ditto.
20788         (MASK_ZCMP): Ditto.
20789         (MASK_ZCMT): Ditto.
20790         (TARGET_ZCA): New target.
20791         (TARGET_ZCB): Ditto.
20792         (TARGET_ZCE): Ditto.
20793         (TARGET_ZCF): Ditto.
20794         (TARGET_ZCD): Ditto.
20795         (TARGET_ZCMP): Ditto.
20796         (TARGET_ZCMT): Ditto.
20797         * config/riscv/riscv.opt: New target variable.
20799 2023-08-14  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
20801         Revert:
20802         2023-05-17  Jin Ma  <jinma@linux.alibaba.com>
20804         * genrecog.cc (print_nonbool_test): Fix type error of
20805         switch (SUBREG_BYTE (op))'.
20807 2023-08-14  Richard Biener  <rguenther@suse.de>
20809         * tree-cfg.cc (print_loop_info): Dump to 'file', not 'dump_file'.
20811 2023-08-14  Pan Li  <pan2.li@intel.com>
20813         * config/riscv/riscv-vector-builtins-bases.cc
20814         (class unop_frm): New class for frm.
20815         (vfsqrt_frm_obj): New declaration.
20816         (BASE): Ditto.
20817         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
20818         * config/riscv/riscv-vector-builtins-functions.def
20819         (vfsqrt_frm): New intrinsic function definition.
20821 2023-08-14  Pan Li  <pan2.li@intel.com>
20823         * config/riscv/riscv-vector-builtins-bases.cc
20824         (class vfwnmsac_frm): New class for frm.
20825         (vfwnmsac_frm_obj): New declaration.
20826         (BASE): Ditto.
20827         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
20828         * config/riscv/riscv-vector-builtins-functions.def
20829         (vfwnmsac_frm): New intrinsic function definition.
20831 2023-08-14  Pan Li  <pan2.li@intel.com>
20833         * config/riscv/riscv-vector-builtins-bases.cc
20834         (class vfwmsac_frm): New class for frm.
20835         (vfwmsac_frm_obj): New declaration.
20836         (BASE): Ditto.
20837         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
20838         * config/riscv/riscv-vector-builtins-functions.def
20839         (vfwmsac_frm): New intrinsic function definition.
20841 2023-08-14  Pan Li  <pan2.li@intel.com>
20843         * config/riscv/riscv-vector-builtins-bases.cc
20844         (class vfwnmacc_frm): New class for frm.
20845         (vfwnmacc_frm_obj): New declaration.
20846         (BASE): Ditto.
20847         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
20848         * config/riscv/riscv-vector-builtins-functions.def
20849         (vfwnmacc_frm): New intrinsic function definition.
20851 2023-08-14  Cui, Lili  <lili.cui@intel.com>
20853         * common/config/i386/cpuinfo.h (get_intel_cpu): Add model value 0xba
20854         to Raptorlake.
20856 2023-08-14  Hans-Peter Nilsson  <hp@axis.com>
20858         * config/mmix/predicates.md (mmix_address_operand): Use
20859         lra_in_progress, not reload_in_progress.
20861 2023-08-14  Hans-Peter Nilsson  <hp@axis.com>
20863         * config/mmix/mmix.cc: Re-enable LRA.
20865 2023-08-14  Hans-Peter Nilsson  <hp@axis.com>
20867         * config/mmix/predicates.md (frame_pointer_operand): Handle FP+offset
20868         when lra_in_progress.
20870 2023-08-14  Hans-Peter Nilsson  <hp@axis.com>
20872         * config/mmix/mmix.cc: Disable LRA for MMIX.
20874 2023-08-14  Pan Li  <pan2.li@intel.com>
20876         * config/riscv/riscv-vector-builtins-bases.cc
20877         (class vfwmacc_frm): New class for vfwmacc frm.
20878         (vfwmacc_frm_obj): New declaration.
20879         (BASE): Ditto.
20880         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
20881         * config/riscv/riscv-vector-builtins-functions.def
20882         (vfwmacc_frm): Function definition for vfwmacc.
20883         * config/riscv/riscv-vector-builtins.cc
20884         (function_expander::use_widen_ternop_insn): Add frm support.
20886 2023-08-14  Pan Li  <pan2.li@intel.com>
20888         * config/riscv/riscv-vector-builtins-bases.cc
20889         (class vfnmsub_frm): New class for vfnmsub frm.
20890         (vfnmsub_frm): New declaration.
20891         (BASE): Ditto.
20892         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
20893         * config/riscv/riscv-vector-builtins-functions.def
20894         (vfnmsub_frm): New function declaration.
20896 2023-08-14  Vladimir N. Makarov  <vmakarov@redhat.com>
20898         * lra-constraints.cc (curr_insn_transform): Set done_p up and
20899         check it on true after processing output stack pointer reload.
20901 2023-08-12  Jakub Jelinek  <jakub@redhat.com>
20903         * Makefile.in (USER_H): Add stdckdint.h.
20904         * ginclude/stdckdint.h: New file.
20906 2023-08-12  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
20908         PR target/110994
20909         * config/riscv/riscv-opts.h (TARGET_VECTOR_VLS): Add TARGET_VETOR.
20911 2023-08-12  Patrick Palka  <ppalka@redhat.com>
20913         * tree-pretty-print.cc (dump_generic_node) <case TREE_VEC>:
20914         Delimit output with braces.
20916 2023-08-12  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
20918         PR target/110985
20919         * config/riscv/riscv-v.cc (expand_vec_series): Refactor the expander.
20921 2023-08-12  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
20923         * config/riscv/autovec.md: Add VLS CONST_VECTOR.
20924         * config/riscv/riscv.cc (riscv_const_insns): Ditto.
20925         * config/riscv/vector.md: Ditto.
20927 2023-08-11  David Malcolm  <dmalcolm@redhat.com>
20929         PR analyzer/105899
20930         * doc/analyzer.texi (__analyzer_get_strlen): New.
20931         * doc/invoke.texi: Add -Wanalyzer-unterminated-string.
20933 2023-08-11  Jeff Law  <jlaw@ventanamicro.com>
20935         * config/rx/rx.md (subdi3): Fix test for borrow.
20937 2023-08-11  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
20939         PR middle-end/110989
20940         * tree-vect-stmts.cc (vectorizable_store): Replace iv_type with sizetype.
20941         (vectorizable_load): Ditto.
20943 2023-08-11  Jose E. Marchesi  <jose.marchesi@oracle.com>
20945         * config/bpf/bpf.md (allocate_stack): Define.
20946         * config/bpf/bpf.h (FIRST_PSEUDO_REGISTER): Make room for fake
20947         stack pointer register.
20948         (FIXED_REGISTERS): Adjust accordingly.
20949         (CALL_USED_REGISTERS): Likewise.
20950         (REG_CLASS_CONTENTS): Likewise.
20951         (REGISTER_NAMES): Likewise.
20952         * config/bpf/bpf.cc (bpf_compute_frame_layout): Do not reserve
20953         space for callee-saved registers.
20954         (bpf_expand_prologue): Do not save callee-saved registers in xbpf.
20955         (bpf_expand_epilogue): Do not restore callee-saved registers in
20956         xbpf.
20958 2023-08-11  Jose E. Marchesi  <jose.marchesi@oracle.com>
20960         * config/bpf/bpf.cc (bpf_function_arg_advance): Do not complain
20961         about too many arguments if function is always inlined.
20963 2023-08-11  Patrick Palka  <ppalka@redhat.com>
20965         * tree-pretty-print.cc (dump_generic_node) <case COMPONENT_REF>:
20966         Don't call component_ref_field_offset if the RHS isn't a decl.
20968 2023-08-11  John David Anglin  <danglin@gcc.gnu.org>
20970         PR bootstrap/110646
20971         * gensupport.cc(class conlist): Use strtol instead of std::stoi.
20973 2023-08-11  Vladimir N. Makarov  <vmakarov@redhat.com>
20975         * lra-constraints.cc (goal_alt_out_sp_reload_p): New flag.
20976         (process_alt_operands): Set the flag.
20977         (curr_insn_transform): Modify stack pointer offsets if output
20978         stack pointer reload is generated.
20980 2023-08-11  Joseph Myers  <joseph@codesourcery.com>
20982         * configure: Regenerate.
20984 2023-08-11  Richard Biener  <rguenther@suse.de>
20986         PR tree-optimization/110979
20987         * tree-vect-loop.cc (vectorizable_reduction): For
20988         FOLD_LEFT_REDUCTION without target support make sure
20989         we don't need to honor signed zeros and sign dependent rounding.
20991 2023-08-11  Richard Biener  <rguenther@suse.de>
20993         * tree-vect-slp.cc (vect_slp_region): Provide opt-info for all SLP
20994         subgraph entries.  Dump the used vector size based on the
20995         SLP subgraph entry root vector type.
20997 2023-08-11  Pan Li  <pan2.li@intel.com>
20999         * config/riscv/riscv-vector-builtins-bases.cc
21000         (class vfmsub_frm): New class for vfmsub frm.
21001         (vfmsub_frm): New declaration.
21002         (BASE): Ditto.
21003         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
21004         * config/riscv/riscv-vector-builtins-functions.def
21005         (vfmsub_frm): New function declaration.
21007 2023-08-11  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
21009         * doc/md.texi: Add vec_mask_len_{load_lanes,store_lanes} patterns.
21010         * internal-fn.cc (expand_partial_load_optab_fn): Ditto.
21011         (expand_partial_store_optab_fn): Ditto.
21012         * internal-fn.def (MASK_LEN_LOAD_LANES): Ditto.
21013         (MASK_LEN_STORE_LANES): Ditto.
21014         * optabs.def (OPTAB_CD): Ditto.
21016 2023-08-11  Pan Li  <pan2.li@intel.com>
21018         * config/riscv/riscv-vector-builtins-bases.cc
21019         (class vfnmadd_frm): New class for vfnmadd frm.
21020         (vfnmadd_frm): New declaration.
21021         (BASE): Ditto.
21022         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
21023         * config/riscv/riscv-vector-builtins-functions.def
21024         (vfnmadd_frm): New function declaration.
21026 2023-08-11  Drew Ross  <drross@redhat.com>
21027             Jakub Jelinek  <jakub@redhat.com>
21029         PR tree-optimization/109938
21030         * match.pd (((x ^ y) & z) | x -> (z & y) | x): New simplification.
21032 2023-08-11  Pan Li  <pan2.li@intel.com>
21034         * config/riscv/riscv-vector-builtins-bases.cc
21035         (class vfmadd_frm): New class for vfmadd frm.
21036         (vfmadd_frm_obj): New declaration.
21037         (BASE): Ditto.
21038         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
21039         * config/riscv/riscv-vector-builtins-functions.def
21040         (vfmadd_frm): New function definition.
21042 2023-08-11  Pan Li  <pan2.li@intel.com>
21044         * config/riscv/riscv-vector-builtins-bases.cc
21045         (class vfnmsac_frm): New class for vfnmsac frm.
21046         (vfnmsac_frm_obj): New declaration.
21047         (BASE): Ditto.
21048         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
21049         * config/riscv/riscv-vector-builtins-functions.def
21050         (vfnmsac_frm): New function definition.
21052 2023-08-11  Jakub Jelinek  <jakub@redhat.com>
21054         * doc/extend.texi (Typeof): Document typeof_unqual
21055         and __typeof_unqual__.
21057 2023-08-11  Andrew Pinski  <apinski@marvell.com>
21059         PR tree-optimization/110954
21060         * generic-match-head.cc (bitwise_inverted_equal_p): Add
21061         wascmp argument and set it accordingly.
21062         * gimple-match-head.cc (bitwise_inverted_equal_p): Add
21063         wascmp argument to the macro.
21064         (gimple_bitwise_inverted_equal_p): Add
21065         wascmp argument and set it accordingly.
21066         * match.pd (`a & ~a`, `a ^| ~a`): Update call
21067         to bitwise_inverted_equal_p and handle wascmp case.
21068         (`(~x | y) & x`, `(~x | y) & x`, `a?~t:t`): Update
21069         call to bitwise_inverted_equal_p and check to see
21070         if was !wascmp or if precision was 1.
21072 2023-08-11  Martin Uecker  <uecker@tugraz.at>
21074         PR c/84510
21075         * doc/invoke.texi: Update.
21077 2023-08-11  Pan Li  <pan2.li@intel.com>
21079         * config/riscv/riscv-vector-builtins-bases.cc
21080         (class vfmsac_frm): New class for vfmsac frm.
21081         (vfmsac_frm_obj): New declaration.
21082         (BASE): Ditto.
21083         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
21084         * config/riscv/riscv-vector-builtins-functions.def
21085         (vfmsac_frm): New function definition
21087 2023-08-10  Jan Hubicka  <jh@suse.cz>
21089         PR middle-end/110923
21090         * tree-ssa-loop-split.cc (split_loop): Watch for division by zero.
21092 2023-08-10  Patrick O'Neill  <patrick@rivosinc.com>
21094         * common/config/riscv/riscv-common.cc: Add Ztso and mark Ztso as
21095         dependent on 'a' extension.
21096         * config/riscv/riscv-opts.h (MASK_ZTSO): New mask.
21097         (TARGET_ZTSO): New target.
21098         * config/riscv/riscv.cc (riscv_memmodel_needs_amo_acquire): Add
21099         Ztso case.
21100         (riscv_memmodel_needs_amo_release): Add Ztso case.
21101         (riscv_print_operand): Add Ztso case for LR/SC annotations.
21102         * config/riscv/riscv.md: Import sync-rvwmo.md and sync-ztso.md.
21103         * config/riscv/riscv.opt: Add Ztso target variable.
21104         * config/riscv/sync.md (mem_thread_fence_1): Expand to RVWMO or
21105         Ztso specific insn.
21106         (atomic_load<mode>): Expand to RVWMO or Ztso specific insn.
21107         (atomic_store<mode>): Expand to RVWMO or Ztso specific insn.
21108         * config/riscv/sync-rvwmo.md: New file. Seperate out RVWMO
21109         specific load/store/fence mappings.
21110         * config/riscv/sync-ztso.md: New file. Seperate out Ztso
21111         specific load/store/fence mappings.
21113 2023-08-10  Jan Hubicka  <jh@suse.cz>
21115         * cfgloopmanip.cc (duplicate_loop_body_to_header_edge): Special case loops with
21116         0 iteration count.
21118 2023-08-10  Jan Hubicka  <jh@suse.cz>
21120         * tree-ssa-threadupdate.cc (ssa_fix_duplicate_block_edges): Fix profile update.
21122 2023-08-10  Jan Hubicka  <jh@suse.cz>
21124         * profile-count.cc (profile_count::differs_from_p): Fix overflow and
21125         handling of undefined values.
21127 2023-08-10  Jakub Jelinek  <jakub@redhat.com>
21129         PR c/102989
21130         * tree-ssa-phiopt.cc (single_non_singleton_phi_for_edges): Never
21131         return virtual phis and return NULL if there is a virtual phi
21132         where the arguments from E0 and E1 edges aren't equal.
21134 2023-08-10  Richard Biener  <rguenther@suse.de>
21136         * internal-fn.def (VCOND, VCONDU, VCONDEQ, VCOND_MASK,
21137         VEC_SET, VEC_EXTRACT): Make ECF_CONST | ECF_NOTHROW.
21139 2023-08-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
21141         PR target/110962
21142         * config/riscv/autovec.md (vec_duplicate<mode>): New pattern.
21144 2023-08-10  Pan Li  <pan2.li@intel.com>
21146         * config/riscv/riscv-vector-builtins-bases.cc
21147         (class vfnmacc_frm): New class for vfnmacc.
21148         (vfnmacc_frm_obj): New declaration.
21149         (BASE): Ditto.
21150         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
21151         * config/riscv/riscv-vector-builtins-functions.def
21152         (vfnmacc_frm): New function definition.
21154 2023-08-10  Pan Li  <pan2.li@intel.com>
21156         * config/riscv/riscv-vector-builtins-bases.cc
21157         (class vfmacc_frm): New class for vfmacc frm.
21158         (vfmacc_frm_obj): New declaration.
21159         (BASE): Ditto.
21160         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
21161         * config/riscv/riscv-vector-builtins-functions.def
21162         (vfmacc_frm): New function definition.
21164 2023-08-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
21166         PR target/110964
21167         * config/riscv/riscv-v.cc (expand_cond_len_ternop): Add integer ternary.
21169 2023-08-10  Richard Biener  <rguenther@suse.de>
21171         * tree-vectorizer.h (vectorizable_live_operation): Remove
21172         gimple_stmt_iterator * argument.
21173         * tree-vect-loop.cc (vectorizable_live_operation): Likewise.
21174         Adjust plumbing around vect_get_loop_mask.
21175         (vect_analyze_loop_operations): Adjust.
21176         * tree-vect-slp.cc (vect_slp_analyze_node_operations_1): Likewise.
21177         (vect_bb_slp_mark_live_stmts): Likewise.
21178         (vect_schedule_slp_node): Likewise.
21179         * tree-vect-stmts.cc (can_vectorize_live_stmts): Likewise.
21180         Remove gimple_stmt_iterator * argument.
21181         (vect_transform_stmt): Adjust.
21183 2023-08-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
21185         * config/riscv/vector-iterators.md: Add missing modes.
21187 2023-08-10  Jakub Jelinek  <jakub@redhat.com>
21189         PR c/102989
21190         * lto-streamer-in.cc (lto_input_tree_1): Assert TYPE_PRECISION
21191         is up to WIDE_INT_MAX_PRECISION rather than MAX_BITSIZE_MODE_ANY_INT.
21193 2023-08-10  Jakub Jelinek  <jakub@redhat.com>
21195         PR c/102989
21196         * expr.cc (expand_expr_real_1) <case MEM_REF>: Add an early return for
21197         EXPAND_WRITE or EXPAND_MEMORY modifiers to avoid testing it multiple
21198         times.
21200 2023-08-10  liuhongt  <hongtao.liu@intel.com>
21202         PR target/110832
21203         * config/i386/mmx.md: (movq_<mode>_to_sse): Also do not
21204         sanitize upper part of V4HFmode register with
21205         -fno-trapping-math.
21206         (<insn>v4hf3): Enable for ix86_partial_vec_fp_math.
21207         (<divv4hf3): Ditto.
21208         (<insn>v2hf3): Ditto.
21209         (divv2hf3): Ditto.
21210         (movd_v2hf_to_sse): Do not sanitize upper part of V2HFmode
21211         register with -fno-trapping-math.
21213 2023-08-10  Pan Li  <pan2.li@intel.com>
21214             Kito Cheng  <kito.cheng@sifive.com>
21216         * config/riscv/riscv-protos.h
21217         (enum floating_point_rounding_mode): Add NONE, DYN_EXIT and DYN_CALL.
21218         (get_frm_mode): New declaration.
21219         * config/riscv/riscv-v.cc (get_frm_mode): New function to get frm mode.
21220         * config/riscv/riscv-vector-builtins.cc
21221         (function_expander::use_ternop_insn): Take care of frm reg.
21222         * config/riscv/riscv.cc (riscv_static_frm_mode_p): Migrate to FRM_XXX.
21223         (riscv_emit_frm_mode_set): Ditto.
21224         (riscv_emit_mode_set): Ditto.
21225         (riscv_frm_adjust_mode_after_call): Ditto.
21226         (riscv_frm_mode_needed): Ditto.
21227         (riscv_frm_mode_after): Ditto.
21228         (riscv_mode_entry): Ditto.
21229         (riscv_mode_exit): Ditto.
21230         * config/riscv/riscv.h (NUM_MODES_FOR_MODE_SWITCHING): Ditto.
21231         * config/riscv/vector.md
21232         (rne,rtz,rdn,rup,rmm,dyn,dyn_exit,dyn_call,none): Removed
21233         (symbol_ref): * config/riscv/vector.md: Set frm_mode attr explicitly.
21235 2023-08-09  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
21237         * config/riscv/riscv-vsetvl.cc (anticipatable_occurrence_p): Fix
21238         incorrect anticipate info.
21240 2023-08-09  Tsukasa OI  <research_trasio@irq.a4lg.com>
21242         * common/config/riscv/riscv-common.cc (riscv_ext_version_table):
21243         Remove 'Zve32d' from the version list.
21245 2023-08-09  Jin Ma  <jinma@linux.alibaba.com>
21247         * config/riscv/riscv.cc (riscv_sched_variable_issue): New function.
21248         (TARGET_SCHED_VARIABLE_ISSUE): New macro.
21249         Co-authored-by: Philipp Tomsich <philipp.tomsich@vrull.eu>
21250         Co-authored-by: Jeff Law <jlaw@ventanamicro.com>
21252 2023-08-09  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
21254         * config/riscv/riscv.cc (riscv_legitimize_address): Handle folding.
21255         (mem_shadd_or_shadd_rtx_p): New function.
21257 2023-08-09  Andrew Pinski  <apinski@marvell.com>
21259         PR tree-optimization/110937
21260         PR tree-optimization/100798
21261         * match.pd (`a ? ~b : b`): Handle this
21262         case.
21264 2023-08-09  Uros Bizjak  <ubizjak@gmail.com>
21266         * config/i386/i386.opt (mpartial-vector-fp-math): Add dot.
21268 2023-08-09  Richard Ball  <richard.ball@arm.com>
21270         * config/aarch64/aarch64-cores.def (AARCH64_CORE): Add Cortex-A520 CPU.
21271         * config/aarch64/aarch64-tune.md: Regenerate.
21272         * doc/invoke.texi: Document Cortex-A520 CPU.
21274 2023-08-09  Carl Love  <cel@us.ibm.com>
21276         * config/rs6000/rs6000-builtins.def (vcmpneb, vcmpneh, vcmpnew):
21277         Move definitions to Altivec stanza.
21278         * config/rs6000/altivec.md (vcmpneb, vcmpneh, vcmpnew): New
21279         define_expand.
21281 2023-08-09  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
21283         PR target/110950
21284         * config/riscv/riscv-v.cc (expand_const_vector): Add NPATTERNS = 1
21285         stepped vector support.
21287 2023-08-09  liuhongt  <hongtao.liu@intel.com>
21289         * common/config/i386/cpuinfo.h (get_available_features):
21290         Rename local variable subleaf_level to max_subleaf_level.
21292 2023-08-09  Richard Biener  <rguenther@suse.de>
21294         PR rtl-optimization/110587
21295         * lra-assigns.cc (find_hard_regno_for_1): Re-order checks.
21297 2023-08-09  Kewen Lin  <linkw@linux.ibm.com>
21299         PR tree-optimization/110248
21300         * config/rs6000/rs6000.cc (rs6000_legitimate_address_p): Check if
21301         the given code is for ifn LEN_{LOAD,STORE}, if yes then make it not
21302         legitimate when outer code is PLUS.
21304 2023-08-09  Kewen Lin  <linkw@linux.ibm.com>
21306         PR tree-optimization/110248
21307         * recog.cc (memory_address_addr_space_p): Add one more argument ch of
21308         type code_helper and pass it to targetm.addr_space.legitimate_address_p
21309         instead of ERROR_MARK.
21310         (offsettable_address_addr_space_p): Update one function pointer with
21311         one more argument of type code_helper as its assignees
21312         memory_address_addr_space_p and strict_memory_address_addr_space_p
21313         have been adjusted, and adjust some call sites with ERROR_MARK.
21314         * recog.h (tree.h): New include header file for tree_code ERROR_MARK.
21315         (memory_address_addr_space_p): Adjust with one more unnamed argument
21316         of type code_helper with default ERROR_MARK.
21317         (strict_memory_address_addr_space_p): Likewise.
21318         * reload.cc (strict_memory_address_addr_space_p): Add one unnamed
21319         argument of type code_helper.
21320         * tree-ssa-address.cc (valid_mem_ref_p): Add one more argument ch of
21321         type code_helper and pass it to memory_address_addr_space_p.
21322         * tree-ssa-address.h (valid_mem_ref_p): Adjust the declaration with
21323         one more unnamed argument of type code_helper with default value
21324         ERROR_MARK.
21325         * tree-ssa-loop-ivopts.cc (get_address_cost): Use ERROR_MARK as code
21326         by default, change it with ifn code for USE_PTR_ADDRESS type use, and
21327         pass it to all valid_mem_ref_p calls.
21329 2023-08-09  Kewen Lin  <linkw@linux.ibm.com>
21331         PR tree-optimization/110248
21332         * coretypes.h (class code_helper): Add forward declaration.
21333         * doc/tm.texi: Regenerate.
21334         * lra-constraints.cc (valid_address_p): Call target hook
21335         targetm.addr_space.legitimate_address_p with an extra parameter
21336         ERROR_MARK as its prototype changes.
21337         * recog.cc (memory_address_addr_space_p): Likewise.
21338         * reload.cc (strict_memory_address_addr_space_p): Likewise.
21339         * target.def (legitimate_address_p, addr_space.legitimate_address_p):
21340         Extend with one more argument of type code_helper, update the
21341         documentation accordingly.
21342         * targhooks.cc (default_legitimate_address_p): Adjust for the
21343         new code_helper argument.
21344         (default_addr_space_legitimate_address_p): Likewise.
21345         * targhooks.h (default_legitimate_address_p): Likewise.
21346         (default_addr_space_legitimate_address_p): Likewise.
21347         * config/aarch64/aarch64.cc (aarch64_legitimate_address_hook_p): Adjust
21348         with extra unnamed code_helper argument with default ERROR_MARK.
21349         * config/alpha/alpha.cc (alpha_legitimate_address_p): Likewise.
21350         * config/arc/arc.cc (arc_legitimate_address_p): Likewise.
21351         * config/arm/arm-protos.h (arm_legitimate_address_p): Likewise.
21352         (tree.h): New include for tree_code ERROR_MARK.
21353         * config/arm/arm.cc (arm_legitimate_address_p): Adjust with extra
21354         unnamed code_helper argument with default ERROR_MARK.
21355         * config/avr/avr.cc (avr_addr_space_legitimate_address_p): Likewise.
21356         * config/bfin/bfin.cc (bfin_legitimate_address_p): Likewise.
21357         * config/bpf/bpf.cc (bpf_legitimate_address_p): Likewise.
21358         * config/c6x/c6x.cc (c6x_legitimate_address_p): Likewise.
21359         * config/cris/cris-protos.h (cris_legitimate_address_p): Likewise.
21360         (tree.h): New include for tree_code ERROR_MARK.
21361         * config/cris/cris.cc (cris_legitimate_address_p): Adjust with extra
21362         unnamed code_helper argument with default ERROR_MARK.
21363         * config/csky/csky.cc (csky_legitimate_address_p): Likewise.
21364         * config/epiphany/epiphany.cc (epiphany_legitimate_address_p):
21365         Likewise.
21366         * config/frv/frv.cc (frv_legitimate_address_p): Likewise.
21367         * config/ft32/ft32.cc (ft32_addr_space_legitimate_address_p): Likewise.
21368         * config/gcn/gcn.cc (gcn_addr_space_legitimate_address_p): Likewise.
21369         * config/h8300/h8300.cc (h8300_legitimate_address_p): Likewise.
21370         * config/i386/i386.cc (ix86_legitimate_address_p): Likewise.
21371         * config/ia64/ia64.cc (ia64_legitimate_address_p): Likewise.
21372         * config/iq2000/iq2000.cc (iq2000_legitimate_address_p): Likewise.
21373         * config/lm32/lm32.cc (lm32_legitimate_address_p): Likewise.
21374         * config/loongarch/loongarch.cc (loongarch_legitimate_address_p):
21375         Likewise.
21376         * config/m32c/m32c.cc (m32c_legitimate_address_p): Likewise.
21377         (m32c_addr_space_legitimate_address_p): Likewise.
21378         * config/m32r/m32r.cc (m32r_legitimate_address_p): Likewise.
21379         * config/m68k/m68k.cc (m68k_legitimate_address_p): Likewise.
21380         * config/mcore/mcore.cc (mcore_legitimate_address_p): Likewise.
21381         * config/microblaze/microblaze-protos.h (tree.h): New include for
21382         tree_code ERROR_MARK.
21383         (microblaze_legitimate_address_p): Adjust with extra unnamed
21384         code_helper argument with default ERROR_MARK.
21385         * config/microblaze/microblaze.cc (microblaze_legitimate_address_p):
21386         Likewise.
21387         * config/mips/mips.cc (mips_legitimate_address_p): Likewise.
21388         * config/mmix/mmix.cc (mmix_legitimate_address_p): Likewise.
21389         * config/mn10300/mn10300.cc (mn10300_legitimate_address_p): Likewise.
21390         * config/moxie/moxie.cc (moxie_legitimate_address_p): Likewise.
21391         * config/msp430/msp430.cc (msp430_legitimate_address_p): Likewise.
21392         (msp430_addr_space_legitimate_address_p): Adjust with extra code_helper
21393         argument with default ERROR_MARK and adjust the call to function
21394         msp430_legitimate_address_p.
21395         * config/nds32/nds32.cc (nds32_legitimate_address_p): Adjust with extra
21396         unnamed code_helper argument with default ERROR_MARK.
21397         * config/nios2/nios2.cc (nios2_legitimate_address_p): Likewise.
21398         * config/nvptx/nvptx.cc (nvptx_legitimate_address_p): Likewise.
21399         * config/or1k/or1k.cc (or1k_legitimate_address_p): Likewise.
21400         * config/pa/pa.cc (pa_legitimate_address_p): Likewise.
21401         * config/pdp11/pdp11.cc (pdp11_legitimate_address_p): Likewise.
21402         * config/pru/pru.cc (pru_addr_space_legitimate_address_p): Likewise.
21403         * config/riscv/riscv.cc (riscv_legitimate_address_p): Likewise.
21404         * config/rl78/rl78-protos.h (rl78_as_legitimate_address): Likewise.
21405         (tree.h): New include for tree_code ERROR_MARK.
21406         * config/rl78/rl78.cc (rl78_as_legitimate_address): Adjust with
21407         extra unnamed code_helper argument with default ERROR_MARK.
21408         * config/rs6000/rs6000.cc (rs6000_legitimate_address_p): Likewise.
21409         (rs6000_debug_legitimate_address_p): Adjust with extra code_helper
21410         argument and adjust the call to function rs6000_legitimate_address_p.
21411         * config/rx/rx.cc (rx_is_legitimate_address): Adjust with extra
21412         unnamed code_helper argument with default ERROR_MARK.
21413         * config/s390/s390.cc (s390_legitimate_address_p): Likewise.
21414         * config/sh/sh.cc (sh_legitimate_address_p): Likewise.
21415         * config/sparc/sparc.cc (sparc_legitimate_address_p): Likewise.
21416         * config/v850/v850.cc (v850_legitimate_address_p): Likewise.
21417         * config/vax/vax.cc (vax_legitimate_address_p): Likewise.
21418         * config/visium/visium.cc (visium_legitimate_address_p): Likewise.
21419         * config/xtensa/xtensa.cc (xtensa_legitimate_address_p): Likewise.
21420         * config/stormy16/stormy16-protos.h (xstormy16_legitimate_address_p):
21421         Likewise.
21422         (tree.h): New include for tree_code ERROR_MARK.
21423         * config/stormy16/stormy16.cc (xstormy16_legitimate_address_p):
21424         Adjust with extra unnamed code_helper argument with default
21425         ERROR_MARK.
21427 2023-08-09  liuhongt  <hongtao.liu@intel.com>
21429         * common/config/i386/cpuinfo.h (get_available_features): Check
21430         EAX for valid subleaf before use CPUID.
21432 2023-08-08  Jeff Law  <jlaw@ventanamicro.com>
21434         * config/riscv/riscv.cc (riscv_expand_conditional_move): Use word_mode
21435         for the temporary when canonicalizing the condition.
21437 2023-08-08  Cupertino Miranda  <cupertino.miranda@oracle.com>
21439         * config/bpf/core-builtins.cc: Cleaned include headers.
21440         (struct cr_builtins): Added GTY.
21441         (cr_builtins_ref): Created.
21442         (builtins_data) Changed to GC root.
21443         (allocate_builtin_data): Changed.
21444         Included gt-core-builtins.h.
21445         * config/bpf/coreout.cc: (bpf_core_extra) Added GTY.
21446         (bpf_core_extra_ref): Created.
21447         (bpf_comment_info): Changed to GC root.
21448         (bpf_core_reloc_add, output_btfext_header, btf_ext_init): Changed.
21450 2023-08-08  Uros Bizjak  <ubizjak@gmail.com>
21452         PR target/110832
21453         * config/i386/i386.opt (mpartial-vector-fp-math): New option.
21454         * config/i386/mmx.md (movq_<mode>_to_sse): Do not sanitize
21455         upper part of V2SFmode register with -fno-trapping-math.
21456         (<plusminusmult:insn>v2sf3): Enable for ix86_partial_vec_fp_math.
21457         (divv2sf3): Ditto.
21458         (<smaxmin:code>v2sf3): Ditto.
21459         (sqrtv2sf2): Ditto.
21460         (*mmx_haddv2sf3_low): Ditto.
21461         (*mmx_hsubv2sf3_low): Ditto.
21462         (vec_addsubv2sf3): Ditto.
21463         (vec_cmpv2sfv2si): Ditto.
21464         (vcond<V2FI:mode>v2sf): Ditto.
21465         (fmav2sf4): Ditto.
21466         (fmsv2sf4): Ditto.
21467         (fnmav2sf4): Ditto.
21468         (fnmsv2sf4): Ditto.
21469         (fix_truncv2sfv2si2): Ditto.
21470         (fixuns_truncv2sfv2si2): Ditto.
21471         (floatv2siv2sf2): Ditto.
21472         (floatunsv2siv2sf2): Ditto.
21473         (nearbyintv2sf2): Ditto.
21474         (rintv2sf2): Ditto.
21475         (lrintv2sfv2si2): Ditto.
21476         (ceilv2sf2): Ditto.
21477         (lceilv2sfv2si2): Ditto.
21478         (floorv2sf2): Ditto.
21479         (lfloorv2sfv2si2): Ditto.
21480         (btruncv2sf2): Ditto.
21481         (roundv2sf2): Ditto.
21482         (lroundv2sfv2si2): Ditto.
21483         * doc/invoke.texi (x86 Options): Document
21484         -mpartial-vector-fp-math option.
21486 2023-08-08  Andrew Pinski  <apinski@marvell.com>
21488         PR tree-optimization/103281
21489         PR tree-optimization/28794
21490         * vr-values.cc (simplify_using_ranges::simplify_cond_using_ranges_1): Split out
21491         majority to ...
21492         (simplify_using_ranges::simplify_compare_using_ranges_1): Here.
21493         (simplify_using_ranges::simplify_casted_cond): Rename to ...
21494         (simplify_using_ranges::simplify_casted_compare): This
21495         and change arguments to take op0 and op1.
21496         (simplify_using_ranges::simplify_compare_assign_using_ranges_1): New method.
21497         (simplify_using_ranges::simplify): For tcc_comparison assignments call
21498         simplify_compare_assign_using_ranges_1.
21499         * vr-values.h (simplify_using_ranges): Add
21500         new methods, simplify_compare_using_ranges_1 and simplify_compare_assign_using_ranges_1.
21501         Rename simplify_casted_cond and simplify_casted_compare and
21502         update argument types.
21504 2023-08-08  Andrzej Turko  <andrzej.turko@gmail.com>
21506         * genmatch.cc: Log line numbers indirectly.
21508 2023-08-08  Andrzej Turko  <andrzej.turko@gmail.com>
21510         * genmatch.cc: Make sinfo map ordered.
21511         * Makefile.in: Require the ordered map header for genmatch.o.
21513 2023-08-08  Andrzej Turko  <andrzej.turko@gmail.com>
21515         * ordered-hash-map.h: Add get_or_insert.
21516         * ordered-hash-map-tests.cc: Use get_or_insert in tests.
21518 2023-08-08  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
21520         * config/riscv/autovec.md (cond_<optab><mode>): New pattern.
21521         (cond_len_<optab><mode>): Ditto.
21522         (cond_fma<mode>): Ditto.
21523         (cond_len_fma<mode>): Ditto.
21524         (cond_fnma<mode>): Ditto.
21525         (cond_len_fnma<mode>): Ditto.
21526         (cond_fms<mode>): Ditto.
21527         (cond_len_fms<mode>): Ditto.
21528         (cond_fnms<mode>): Ditto.
21529         (cond_len_fnms<mode>): Ditto.
21530         * config/riscv/riscv-protos.h (riscv_get_v_regno_alignment): Export
21531         global.
21532         (enum insn_type): Add new enum type.
21533         (prepare_ternary_operands): New function.
21534         * config/riscv/riscv-v.cc (emit_vlmax_masked_fp_mu_insn): Ditto.
21535         (emit_nonvlmax_tumu_insn): Ditto.
21536         (emit_nonvlmax_fp_tumu_insn): Ditto.
21537         (expand_cond_len_binop): Add condtional operations.
21538         (expand_cond_len_ternop): Ditto.
21539         (prepare_ternary_operands): New function.
21540         * config/riscv/riscv.cc (riscv_memmodel_needs_amo_release): Export
21541         riscv_get_v_regno_alignment as global scope.
21542         * config/riscv/vector.md: Fix ternary bugs.
21544 2023-08-08  Richard Biener  <rguenther@suse.de>
21546         PR tree-optimization/49955
21547         * tree-vectorizer.h (_slp_instance::remain_stmts): New.
21548         (SLP_INSTANCE_REMAIN_STMTS): Likewise.
21549         * tree-vect-slp.cc (vect_free_slp_instance): Release
21550         SLP_INSTANCE_REMAIN_STMTS.
21551         (vect_build_slp_instance): Make the number of lanes of
21552         a BB reduction even.
21553         (vectorize_slp_instance_root_stmt): Handle unvectorized
21554         defs of a BB reduction.
21556 2023-08-08  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
21558         * internal-fn.cc (get_len_internal_fn): New function.
21559         (DEF_INTERNAL_COND_FN): Ditto.
21560         (DEF_INTERNAL_SIGNED_COND_FN): Ditto.
21561         * internal-fn.h (get_len_internal_fn): Ditto.
21562         * tree-vect-stmts.cc (vectorizable_call): Add CALL auto-vectorization.
21564 2023-08-08  Richard Biener  <rguenther@suse.de>
21566         PR tree-optimization/110924
21567         * tree-ssa-live.h (virtual_operand_live): Update comment.
21568         * tree-ssa-live.cc (virtual_operand_live::get_live_in): Remove
21569         optimization, look at each predecessor.
21570         * tree-ssa-sink.cc (pass_sink_code::execute): Mark backedges.
21572 2023-08-08  yulong  <shiyulong@iscas.ac.cn>
21574         * config/riscv/riscv-v.cc (slide1_sew64_helper): Modify.
21576 2023-08-08  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
21578         * config/riscv/autovec-vls.md (<optab><mode>2): Add VLS neg.
21579         * config/riscv/vector.md: Ditto.
21581 2023-08-08  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
21583         * config/riscv/autovec.md: Add VLS shift.
21585 2023-08-07  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
21587         * config/riscv/autovec-vls.md (<optab><mode>3): Add VLS modes.
21588         * config/riscv/vector-iterators.md: Ditto.
21589         * config/riscv/vector.md: Ditto.
21591 2023-08-07  Jonathan Wakely  <jwakely@redhat.com>
21593         * config/i386/i386.cc (ix86_invalid_conversion): Fix grammar.
21595 2023-08-07  Nick Alcock  <nick.alcock@oracle.com>
21597         * configure: Regenerate.
21599 2023-08-07  John Ericson  <git@JohnEricson.me>
21601         * configure: Regenerate.
21603 2023-08-07  Alan Modra  <amodra@gmail.com>
21605         * configure: Regenerate.
21607 2023-08-07  Alexander von Gluck IV  <kallisti5@unixzen.com>
21609         * configure: Regenerate.
21611 2023-08-07  Nick Alcock  <nick.alcock@oracle.com>
21613         * configure: Regenerate.
21615 2023-08-07  Nick Alcock  <nick.alcock@oracle.com>
21617         * configure: Regenerate.
21619 2023-08-07  H.J. Lu  <hjl.tools@gmail.com>
21621         * configure: Regenerate.
21623 2023-08-07  H.J. Lu  <hjl.tools@gmail.com>
21625         * configure: Regenerate.
21627 2023-08-07  Jeff Law  <jlaw@ventanamicro.com>
21629         * config/riscv/riscv.cc (riscv_expand_conditional_move): Allow
21630         VOIDmode operands to conditional before canonicalization.
21632 2023-08-07  Manolis Tsamis  <manolis.tsamis@vrull.eu>
21634         * regcprop.cc (maybe_copy_reg_attrs): Remove unnecessary function.
21635         (find_oldest_value_reg): Inline stack_pointer_rtx check.
21636         (copyprop_hardreg_forward_1): Inline stack_pointer_rtx check.
21638 2023-08-07  Martin Jambor  <mjambor@suse.cz>
21640         PR ipa/110378
21641         * ipa-param-manipulation.h (class ipa_param_body_adjustments): New
21642         members get_ddef_if_exists_and_is_used and mark_clobbers_dead.
21643         * ipa-sra.cc (isra_track_scalar_value_uses): Ignore clobbers.
21644         (ptr_parm_has_nonarg_uses): Likewise.
21645         * ipa-param-manipulation.cc
21646         (ipa_param_body_adjustments::get_ddef_if_exists_and_is_used): New.
21647         (ipa_param_body_adjustments::mark_dead_statements): Move initial
21648         checks to get_ddef_if_exists_and_is_used.
21649         (ipa_param_body_adjustments::mark_clobbers_dead): New.
21650         (ipa_param_body_adjustments::common_initialization): Call
21651         mark_clobbers_dead when splitting.
21653 2023-08-07  Raphael Zinsly  <rzinsly@ventanamicro.com>
21655         * config/riscv/riscv.cc (riscv_expand_int_scc): Add invert_ptr
21656         as an argument and pass it to riscv_emit_int_order_test.
21657         (riscv_expand_conditional_move): Handle cases where the condition
21658         is not EQ/NE or the second argument to the conditional is not
21659         (const_int 0).
21660         * config/riscv/riscv-protos.h (riscv_expand_int_scc): Update prototype.
21661         Co-authored-by: Jeff Law <jlaw@ventanamicro.com>
21663 2023-08-07  Andrew Pinski  <apinski@marvell.com>
21665         PR tree-optimization/109959
21666         * match.pd (`(a > 1) ? 0 : (cast)a`, `(a <= 1) & (cast)a`):
21667         New patterns.
21669 2023-08-07  Richard Biener  <rguenther@suse.de>
21671         * tree-ssa-sink.cc (pass_sink_code::execute): Do not
21672         calculate post-dominators.  Calculate RPO on the inverted
21673         graph and process blocks in that order.
21675 2023-08-07  liuhongt  <hongtao.liu@intel.com>
21677         PR target/110926
21678         * config/i386/i386-protos.h
21679         (vpternlog_redundant_operand_mask): Adjust parameter type.
21680         * config/i386/i386.cc (vpternlog_redundant_operand_mask): Use
21681         INTVAL instead of XINT, also adjust parameter type from rtx*
21682         to rtx since the function only needs operands[4] in vpternlog
21683         pattern.
21684         (substitute_vpternlog_operands): Pass operands[4] instead of
21685         operands to vpternlog_redundant_operand_mask.
21686         * config/i386/sse.md: Ditto.
21688 2023-08-07  Richard Biener  <rguenther@suse.de>
21690         * tree-vect-slp.cc (vect_slp_region): Save/restore vect_location
21691         around dumping code.
21693 2023-08-07  liuhongt  <hongtao.liu@intel.com>
21695         PR target/110762
21696         * config/i386/mmx.md (<insn><mode>3): Changed from define_insn
21697         to define_expand and break into ..
21698         (<insn>v4hf3): .. this.
21699         (divv4hf3): .. this.
21700         (<insn>v2hf3): .. this.
21701         (divv2hf3): .. this.
21702         (movd_v2hf_to_sse): New define_expand.
21703         (movq_<mode>_to_sse): Extend to V4HFmode.
21704         (mmxdoublevecmode): Ditto.
21705         (V2FI_V4HF): New mode iterator.
21706         * config/i386/sse.md (*vec_concatv4sf): Extend to hanlde V8HF
21707         by using mode iterator V4SF_V8HF, renamed to ..
21708         (*vec_concat<mode>): .. this.
21709         (*vec_concatv4sf_0): Extend to handle V8HF by using mode
21710         iterator V4SF_V8HF, renamed to ..
21711         (*vec_concat<mode>_0): .. this.
21712         (*vec_concatv8hf_movss): New define_insn.
21713         (V4SF_V8HF): New mode iterator.
21715 2023-08-07  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
21717         * tree-vect-patterns.cc (vect_recog_over_widening_pattern): Add op vectype.
21719 2023-08-07  Jan Beulich  <jbeulich@suse.com>
21721         * config/i386/mmx.md (*mmx_pinsrd): Drop "prefix_data16".
21722         (*mmx_pinsrb): Likewise.
21723         (*mmx_pextrb): Likewise.
21724         (*mmx_pextrb_zext): Likewise.
21725         (mmx_pshufbv8qi3): Likewise.
21726         (mmx_pshufbv4qi3): Likewise.
21727         (mmx_pswapdv2si2): Likewise.
21728         (*pinsrb): Likewise.
21729         (*pextrb): Likewise.
21730         (*pextrb_zext): Likewise.
21731         * config/i386/sse.md (*sse4_1_mulv2siv2di3<mask_name>): Likewise.
21732         (*sse2_eq<mode>3): Likewise.
21733         (*sse2_gt<mode>3): Likewise.
21734         (<sse2p4_1>_pinsr<ssemodesuffix>): Likewise.
21735         (*vec_extract<mode>): Likewise.
21736         (*vec_extract<PEXTR_MODE12:mode>_zext): Likewise.
21737         (*vec_extractv16qi_zext): Likewise.
21738         (ssse3_ph<plusminus_mnemonic>wv8hi3): Likewise.
21739         (ssse3_pmaddubsw128): Likewise.
21740         (*<ssse3_avx2>_pmulhrsw<mode>3<mask_name>): Likewise.
21741         (<ssse3_avx2>_pshufb<mode>3<mask_name>): Likewise.
21742         (<ssse3_avx2>_psign<mode>3): Likewise.
21743         (<ssse3_avx2>_palignr<mode>): Likewise.
21744         (*abs<mode>2): Likewise.
21745         (sse4_2_pcmpestr): Likewise.
21746         (sse4_2_pcmpestri): Likewise.
21747         (sse4_2_pcmpestrm): Likewise.
21748         (sse4_2_pcmpestr_cconly): Likewise.
21749         (sse4_2_pcmpistr): Likewise.
21750         (sse4_2_pcmpistri): Likewise.
21751         (sse4_2_pcmpistrm): Likewise.
21752         (sse4_2_pcmpistr_cconly): Likewise.
21753         (vgf2p8affineinvqb_<mode><mask_name>): Likewise.
21754         (vgf2p8affineqb_<mode><mask_name>): Likewise.
21755         (vgf2p8mulb_<mode><mask_name>): Likewise.
21756         (*<code>v8hi3 [smaxmin]): Drop "prefix_data16" and
21757         "prefix_extra".
21758         (*<code>v16qi3 [umaxmin]): Likewise.
21760 2023-08-07  Jan Beulich  <jbeulich@suse.com>
21762         * config/i386/i386.md (sse4_1_round<mode>2): Make
21763         "length_immediate" uniformly 1.
21764         * config/i386/mmx.md (mmx_pblendvb_v8qi): Likewise.
21765         (mmx_pblendvb_<mode>): Likewise.
21767 2023-08-07  Jan Beulich  <jbeulich@suse.com>
21769         * config/i386/sse.md
21770         (<avx512>_<complexopname>_<mode><maskc_name><round_name>): Add
21771         "prefix" attribute.
21772         (avx512fp16_<complexopname>sh_v8hf<mask_scalarc_name><round_scalarcz_name>):
21773         Likewise.
21775 2023-08-07  Jan Beulich  <jbeulich@suse.com>
21777         * config/i386/sse.md (xop_phadd<u>bw): Add "prefix",
21778         "prefix_extra", and "mode" attributes.
21779         (xop_phadd<u>bd): Likewise.
21780         (xop_phadd<u>bq): Likewise.
21781         (xop_phadd<u>wd): Likewise.
21782         (xop_phadd<u>wq): Likewise.
21783         (xop_phadd<u>dq): Likewise.
21784         (xop_phsubbw): Likewise.
21785         (xop_phsubwd): Likewise.
21786         (xop_phsubdq): Likewise.
21787         (xop_rotl<mode>3): Add "prefix" and "prefix_extra" attributes.
21788         (xop_rotr<mode>3): Likewise.
21789         (xop_frcz<mode>2): Likewise.
21790         (*xop_vmfrcz<mode>2): Likewise.
21791         (xop_vrotl<mode>3): Add "prefix" attribute. Change
21792         "prefix_extra" to 1.
21793         (xop_sha<mode>3): Likewise.
21794         (xop_shl<mode>3): Likewise.
21796 2023-08-07  Jan Beulich  <jbeulich@suse.com>
21798         * config/i386/sse.md
21799         (*<avx512>_eq<mode>3<mask_scalar_merge_name>_1): Drop
21800         "prefix_extra".
21801         (avx512dq_vextract<shuffletype>64x2_1_mask): Likewise.
21802         (*avx512dq_vextract<shuffletype>64x2_1): Likewise.
21803         (avx512f_vextract<shuffletype>32x4_1_mask): Likewise.
21804         (*avx512f_vextract<shuffletype>32x4_1): Likewise.
21805         (vec_extract_lo_<mode>_mask [AVX512 forms]): Likewise.
21806         (vec_extract_lo_<mode> [AVX512 forms]): Likewise.
21807         (vec_extract_hi_<mode>_mask [AVX512 forms]): Likewise.
21808         (vec_extract_hi_<mode> [AVX512 forms]): Likewise.
21809         (@vec_extract_lo_<mode> [AVX512 forms]): Likewise.
21810         (@vec_extract_hi_<mode> [AVX512 forms]): Likewise.
21811         (vec_extract_lo_v64qi): Likewise.
21812         (vec_extract_hi_v64qi): Likewise.
21813         (*vec_widen_umult_even_v16si<mask_name>): Likewise.
21814         (*vec_widen_smult_even_v16si<mask_name>): Likewise.
21815         (*avx512f_<code><mode>3<mask_name>): Likewise.
21816         (*vec_extractv4ti): Likewise.
21817         (avx512bw_<code>v32qiv32hi2<mask_name>): Likewise.
21818         (<mask_codefor>avx512dq_broadcast<mode><mask_name>_1): Likewise.
21819         Add "length_immediate".
21821 2023-08-07  Jan Beulich  <jbeulich@suse.com>
21823         * config/i386/i386.md (@rdrand<mode>): Add "prefix_0f". Drop
21824         "prefix_extra".
21825         (@rdseed<mode>): Likewise.
21826         * config/i386/mmx.md (<code><mode>3 [smaxmin and umaxmin cases]):
21827         Adjust "prefix_extra".
21828         * config/i386/sse.md (@vec_set<mode>_0): Likewise.
21829         (*sse4_1_<code><mode>3<mask_name>): Likewise.
21830         (*avx2_eq<mode>3): Likewise.
21831         (avx2_gt<mode>3): Likewise.
21832         (<sse2p4_1>_pinsr<ssemodesuffix>): Likewise.
21833         (*vec_extract<mode>): Likewise.
21834         (<vi8_sse4_1_avx2_avx512>_movntdqa): Likewise.
21836 2023-08-07  Jan Beulich  <jbeulich@suse.com>
21838         * config/i386/i386.md (rd<fsgs>base<mode>): Add "prefix_0f" and
21839         "prefix_rep". Drop "prefix_extra".
21840         (wr<fsgs>base<mode>): Likewise.
21841         (ptwrite<mode>): Likewise.
21843 2023-08-07  Jan Beulich  <jbeulich@suse.com>
21845         * config/i386/i386.md (isa): Move up.
21846         (length_immediate): Handle "fma4".
21847         (prefix): Handle "ssemuladd".
21848         * config/i386/sse.md (*fma_fmadd_<mode>): Add "prefix" attribute.
21849         (<sd_mask_codefor>fma_fmadd_<mode><sd_maskz_name><round_name>):
21850         Likewise.
21851         (<avx512>_fmadd_<mode>_mask<round_name>): Likewise.
21852         (<avx512>_fmadd_<mode>_mask3<round_name>): Likewise.
21853         (<sd_mask_codefor>fma_fmsub_<mode><sd_maskz_name><round_name>):
21854         Likewise.
21855         (<avx512>_fmsub_<mode>_mask<round_name>): Likewise.
21856         (<avx512>_fmsub_<mode>_mask3<round_name>): Likewise.
21857         (*fma_fnmadd_<mode>): Likewise.
21858         (<sd_mask_codefor>fma_fnmadd_<mode><sd_maskz_name><round_name>):
21859         Likewise.
21860         (<avx512>_fnmadd_<mode>_mask<round_name>): Likewise.
21861         (<avx512>_fnmadd_<mode>_mask3<round_name>): Likewise.
21862         (<sd_mask_codefor>fma_fnmsub_<mode><sd_maskz_name><round_name>):
21863         Likewise.
21864         (<avx512>_fnmsub_<mode>_mask<round_name>): Likewise.
21865         (<avx512>_fnmsub_<mode>_mask3<round_name>): Likewise.
21866         (<sd_mask_codefor>fma_fmaddsub_<mode><sd_maskz_name><round_name>):
21867         Likewise.
21868         (<avx512>_fmaddsub_<mode>_mask<round_name>): Likewise.
21869         (<avx512>_fmaddsub_<mode>_mask3<round_name>): Likewise.
21870         (<sd_mask_codefor>fma_fmsubadd_<mode><sd_maskz_name><round_name>):
21871         Likewise.
21872         (<avx512>_fmsubadd_<mode>_mask<round_name>): Likewise.
21873         (<avx512>_fmsubadd_<mode>_mask3<round_name>): Likewise.
21874         (*fmai_fmadd_<mode>): Likewise.
21875         (*fmai_fmsub_<mode>): Likewise.
21876         (*fmai_fnmadd_<mode><round_name>): Likewise.
21877         (*fmai_fnmsub_<mode><round_name>): Likewise.
21878         (avx512f_vmfmadd_<mode>_mask<round_name>): Likewise.
21879         (avx512f_vmfmadd_<mode>_mask3<round_name>): Likewise.
21880         (avx512f_vmfmadd_<mode>_maskz_1<round_name>): Likewise.
21881         (*avx512f_vmfmsub_<mode>_mask<round_name>): Likewise.
21882         (avx512f_vmfmsub_<mode>_mask3<round_name>): Likewise.
21883         (*avx512f_vmfmsub_<mode>_maskz_1<round_name>): Likewise.
21884         (avx512f_vmfnmadd_<mode>_mask<round_name>): Likewise.
21885         (avx512f_vmfnmadd_<mode>_mask3<round_name>): Likewise.
21886         (avx512f_vmfnmadd_<mode>_maskz_1<round_name>): Likewise.
21887         (*avx512f_vmfnmsub_<mode>_mask<round_name>): Likewise.
21888         (*avx512f_vmfnmsub_<mode>_mask3<round_name>): Likewise.
21889         (*avx512f_vmfnmsub_<mode>_maskz_1<round_name>): Likewise.
21890         (*fma4i_vmfmadd_<mode>): Likewise.
21891         (*fma4i_vmfmsub_<mode>): Likewise.
21892         (*fma4i_vmfnmadd_<mode>): Likewise.
21893         (*fma4i_vmfnmsub_<mode>): Likewise.
21894         (fma_<complexopname>_<mode><sdc_maskz_name><round_name>): Likewise.
21895         (<avx512>_<complexopname>_<mode>_mask<round_name>): Likewise.
21896         (avx512fp16_fma_<complexopname>sh_v8hf<mask_scalarcz_name><round_scalarcz_name>):
21897         Likewise.
21898         (avx512fp16_<complexopname>sh_v8hf_mask<round_name>): Likewise.
21899         (xop_p<macs><ssemodesuffix><ssemodesuffix>): Likewise.
21900         (xop_p<macs>dql): Likewise.
21901         (xop_p<macs>dqh): Likewise.
21902         (xop_p<macs>wd): Likewise.
21903         (xop_p<madcs>wd): Likewise.
21904         (fma_<complexpairopname>_<mode>_pair): Likewise. Add "mode" attribute.
21906 2023-08-07  Jan Beulich  <jbeulich@suse.com>
21908         * config/i386/i386.md (length_immediate): Handle "sse4arg".
21909         (prefix): Likewise.
21910         (*xop_pcmov_<mode>): Add "mode" attribute.
21911         * config/i386/mmx.md (*xop_maskcmp<mode>3): Drop "prefix_data16",
21912         "prefix_rep", "prefix_extra", and "length_immediate" attributes.
21913         (*xop_maskcmp_uns<mode>3): Likewise. Switch "type" to "sse4arg".
21914         (*xop_pcmov_<mode>): Add "mode" attribute.
21915         * config/i386/sse.md (xop_pcmov_<mode><avxsizesuffix>): Add "mode"
21916         attribute.
21917         (xop_maskcmp<mode>3): Drop "prefix_data16", "prefix_rep",
21918         "prefix_extra", and "length_immediate" attributes.
21919         (xop_maskcmp_uns<mode>3): Likewise. Switch "type" to "sse4arg".
21920         (xop_maskcmp_uns2<mode>3): Drop "prefix_data16", "prefix_extra",
21921         and "length_immediate" attributes. Switch "type" to "sse4arg".
21922         (xop_pcom_tf<mode>3): Likewise.
21923         (xop_vpermil2<mode>3): Drop "length_immediate" attribute.
21925 2023-08-07  Jan Beulich  <jbeulich@suse.com>
21927         * config/i386/i386.md (prefix_extra): Correct comment. Fold
21928         cases yielding 2 into ones yielding 1.
21930 2023-08-07  Jan Hubicka  <jh@suse.cz>
21932         PR tree-optimization/106293
21933         * tree-vect-loop-manip.cc (vect_loop_versioning): Fix profile update.
21934         * tree-vect-loop.cc (vect_transform_loop): Likewise.
21936 2023-08-07  Andrew Pinski  <apinski@marvell.com>
21938         PR tree-optimization/96695
21939         * match.pd (min_value, max_value): Extend to
21940         pointer types too.
21942 2023-08-06  Jan Hubicka  <jh@suse.cz>
21944         * config/i386/cpuid.h (__get_cpuid_count, __get_cpuid_max): Add
21945         __builtin_expect that CPU likely supports cpuid.
21947 2023-08-06  Jan Hubicka  <jh@suse.cz>
21949         * tree-loop-distribution.cc (loop_distribution::execute): Disable
21950         distribution for loops with estimated iterations 0.
21952 2023-08-06  Jan Hubicka  <jh@suse.cz>
21954         * tree-vect-loop-manip.cc (vect_do_peeling): Fix profile update of peeled epilogues.
21956 2023-08-04  Xiao Zeng  <zengxiao@eswincomputing.com>
21958         * config/riscv/riscv.cc (riscv_expand_conditional_move): Recognize
21959         more Zicond patterns.  Fix whitespace typo.
21960         (riscv_rtx_costs): Remove accidental code duplication.
21961         Co-authored-by: Jeff Law <jlaw@ventanamicro.com>
21963 2023-08-04  Yan Simonaytes  <simonaytes.yan@ispras.ru>
21965         PR target/110202
21966         * config/i386/i386-protos.h
21967         (vpternlog_redundant_operand_mask): Declare.
21968         (substitute_vpternlog_operands): Declare.
21969         * config/i386/i386.cc
21970         (vpternlog_redundant_operand_mask): New helper.
21971         (substitute_vpternlog_operands): New function.  Use them...
21972         * config/i386/sse.md: ... here in new VPTERNLOG define_splits.
21974 2023-08-04  Roger Sayle  <roger@nextmovesoftware.com>
21976         * expmed.cc (extract_bit_field_1): Document that an UNSIGNEDP
21977         value of -1 is equivalent to don't care.
21978         (extract_integral_bit_field): Indicate that we don't require
21979         the most significant word to be zero extended, if we're about
21980         to sign extend it.
21981         (extract_fixed_bit_field_1): Document that an UNSIGNEDP value
21982         of -1 is equivalent to don't care.  Don't clear the most
21983         significant bits with AND mask when UNSIGNEDP is -1.
21985 2023-08-04  Roger Sayle  <roger@nextmovesoftware.com>
21987         * config/i386/sse.md (define_split): Convert highpart:DF extract
21988         from V2DFmode register into a sse2_storehpd instruction.
21989         (define_split): Likewise, convert lowpart:DF extract from V2DF
21990         register into a sse2_storelpd instruction.
21992 2023-08-04  Qing Zhao  <qing.zhao@oracle.com>
21994         * doc/invoke.texi (-Wflex-array-member-not-at-end): Document
21995         new option.
21997 2023-08-04  Vladimir N. Makarov  <vmakarov@redhat.com>
21999         * lra-lives.cc (process_bb_lives): Check input insn pattern hard regs
22000         against early clobber hard regs.
22002 2023-08-04  Tamar Christina  <tamar.christina@arm.com>
22004         * doc/extend.texi: Document it.
22006 2023-08-04  Tamar Christina  <tamar.christina@arm.com>
22008         PR target/106346
22009         * config/aarch64/aarch64-simd.md (vec_widen_<sur>shiftl_lo_<mode>,
22010         vec_widen_<sur>shiftl_hi_<mode>): Remove.
22011         (aarch64_<sur>shll<mode>_internal): Renamed to...
22012         (aarch64_<su>shll<mode>): .. This.
22013         (aarch64_<sur>shll2<mode>_internal): Renamed to...
22014         (aarch64_<su>shll2<mode>): .. This.
22015         (aarch64_<sur>shll_n<mode>, aarch64_<sur>shll2_n<mode>): Re-use new
22016         optabs.
22017         * config/aarch64/constraints.md (D2, DL): New.
22018         * config/aarch64/predicates.md (aarch64_simd_shll_imm_vec): New.
22020 2023-08-04  Tamar Christina  <tamar.christina@arm.com>
22022         * gensupport.cc (conlist): Support length 0 attribute.
22024 2023-08-04  Tamar Christina  <tamar.christina@arm.com>
22026         * config/aarch64/aarch64.cc (aarch64_bool_compound_p): New.
22027         (aarch64_adjust_stmt_cost, aarch64_vector_costs::count_ops): Use it.
22029 2023-08-04  Tamar Christina  <tamar.christina@arm.com>
22031         * config/aarch64/aarch64.cc (aarch64_multiply_add_p): Update handling
22032         of constants.
22033         (aarch64_adjust_stmt_cost): Use it.
22034         (aarch64_vector_costs::count_ops): Likewise.
22035         (aarch64_vector_costs::add_stmt_cost): Pass vinfo to
22036         aarch64_adjust_stmt_cost.
22038 2023-08-04  Richard Biener  <rguenther@suse.de>
22040         PR tree-optimization/110838
22041         * tree-vect-patterns.cc (vect_recog_over_widening_pattern):
22042         Fix right-shift value sanitizing.  Properly emit external
22043         def mangling in the preheader rather than in the pattern
22044         def sequence where it will fail vectorizing.
22046 2023-08-04  Matthew Malcomson  <matthew.malcomson@arm.com>
22048         PR middle-end/110316
22049         PR middle-end/9903
22050         * timevar.cc (NANOSEC_PER_SEC, TICKS_TO_NANOSEC,
22051         CLOCKS_TO_NANOSEC, nanosec_to_floating_sec, percent_of): New.
22052         (TICKS_TO_MSEC, CLOCKS_TO_MSEC): Remove these macros.
22053         (timer::validate_phases): Use integral arithmetic to check
22054         validity.
22055         (timer::print_row, timer::print): Convert from integral
22056         nanoseconds to floating point seconds before printing.
22057         (timer::all_zero): Change limit to nanosec count instead of
22058         fractional count of seconds.
22059         (make_json_for_timevar_time_def): Convert from integral
22060         nanoseconds to floating point seconds before recording.
22061         * timevar.h (struct timevar_time_def): Update all measurements
22062         to use uint64_t nanoseconds rather than seconds stored in a
22063         double.
22065 2023-08-04  Richard Biener  <rguenther@suse.de>
22067         PR tree-optimization/110838
22068         * match.pd (([rl]shift @0 out-of-bounds) -> zero): Restrict
22069         the arithmetic right-shift case to non-negative operands.
22071 2023-08-04  Pan Li  <pan2.li@intel.com>
22073         Revert:
22074         2023-08-04  Pan Li  <pan2.li@intel.com>
22076         * config/riscv/riscv-vector-builtins-bases.cc
22077         (class vfmacc_frm): New class for vfmacc frm.
22078         (vfmacc_frm_obj): New declaration.
22079         (BASE): Ditto.
22080         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
22081         * config/riscv/riscv-vector-builtins-functions.def
22082         (vfmacc_frm): New function definition.
22083         * config/riscv/riscv-vector-builtins.cc
22084         (function_expander::use_ternop_insn): Add frm operand support.
22085         * config/riscv/vector.md: Add vfmuladd to frm_mode.
22087 2023-08-04  Pan Li  <pan2.li@intel.com>
22089         Revert:
22090         2023-08-04  Pan Li  <pan2.li@intel.com>
22092         * config/riscv/riscv-vector-builtins-bases.cc
22093         (class vfnmacc_frm): New class for vfnmacc.
22094         (vfnmacc_frm_obj): New declaration.
22095         (BASE): Ditto.
22096         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
22097         * config/riscv/riscv-vector-builtins-functions.def
22098         (vfnmacc_frm): New function definition.
22100 2023-08-04  Pan Li  <pan2.li@intel.com>
22102         Revert:
22103         2023-08-04  Pan Li  <pan2.li@intel.com>
22105         * config/riscv/riscv-vector-builtins-bases.cc
22106         (class vfmsac_frm): New class for vfmsac frm.
22107         (vfmsac_frm_obj): New declaration.
22108         (BASE): Ditto.
22109         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
22110         * config/riscv/riscv-vector-builtins-functions.def
22111         (vfmsac_frm): New function definition.
22113 2023-08-04  Pan Li  <pan2.li@intel.com>
22115         Revert:
22116         2023-08-04  Pan Li  <pan2.li@intel.com>
22118         * config/riscv/riscv-vector-builtins-bases.cc
22119         (class vfnmsac_frm): New class for vfnmsac frm.
22120         (vfnmsac_frm_obj): New declaration.
22121         (BASE): Ditto.
22122         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
22123         * config/riscv/riscv-vector-builtins-functions.def
22124         (vfnmsac_frm): New function definition.
22126 2023-08-04  Georg-Johann Lay  <avr@gjlay.de>
22128         * config/avr/avr-mcus.def (avr64dd14, avr64dd20, avr64dd28, avr64dd32)
22129         (avr64ea28, avr64ea32, avr64ea48, attiny424, attiny426, attiny427)
22130         (attiny824, attiny826, attiny827, attiny1624, attiny1626, attiny1627)
22131         (attiny3224, attiny3226, attiny3227, avr16dd14, avr16dd20, avr16dd28)
22132         (avr16dd32, avr32dd14, avr32dd20, avr32dd28, avr32dd32)
22133         (attiny102, attiny104): New devices.
22134         * doc/avr-mmcu.texi: Regenerate.
22136 2023-08-04  Georg-Johann Lay  <avr@gjlay.de>
22138         * config/avr/avr-mcus.def (avr128d*, avr64d*): Fix their FLASH_SIZE
22139         and PM_OFFSET entries.
22141 2023-08-04  Andrew Pinski  <apinski@marvell.com>
22143         PR tree-optimization/110874
22144         * gimple-match-head.cc (gimple_bit_not_with_nop): New declaration.
22145         (gimple_maybe_cmp): Likewise.
22146         (gimple_bitwise_inverted_equal_p): Rewrite to use gimple_bit_not_with_nop
22147         and gimple_maybe_cmp instead of being recursive.
22148         * match.pd (bit_not_with_nop): New match pattern.
22149         (maybe_cmp): Likewise.
22151 2023-08-04  Drew Ross  <drross@redhat.com>
22153         PR middle-end/101955
22154         * match.pd ((signed x << c) >> c): New canonicalization.
22156 2023-08-04  Pan Li  <pan2.li@intel.com>
22158         * config/riscv/riscv-vector-builtins-bases.cc
22159         (class vfnmsac_frm): New class for vfnmsac frm.
22160         (vfnmsac_frm_obj): New declaration.
22161         (BASE): Ditto.
22162         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
22163         * config/riscv/riscv-vector-builtins-functions.def
22164         (vfnmsac_frm): New function definition.
22166 2023-08-04  Pan Li  <pan2.li@intel.com>
22168         * config/riscv/riscv-vector-builtins-bases.cc
22169         (class vfmsac_frm): New class for vfmsac frm.
22170         (vfmsac_frm_obj): New declaration.
22171         (BASE): Ditto.
22172         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
22173         * config/riscv/riscv-vector-builtins-functions.def
22174         (vfmsac_frm): New function definition.
22176 2023-08-04  Pan Li  <pan2.li@intel.com>
22178         * config/riscv/riscv-vector-builtins-bases.cc
22179         (class vfnmacc_frm): New class for vfnmacc.
22180         (vfnmacc_frm_obj): New declaration.
22181         (BASE): Ditto.
22182         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
22183         * config/riscv/riscv-vector-builtins-functions.def
22184         (vfnmacc_frm): New function definition.
22186 2023-08-04  Hao Liu  <hliu@os.amperecomputing.com>
22188         PR target/110625
22189         * config/aarch64/aarch64.cc (aarch64_force_single_cycle): check
22190         STMT_VINFO_REDUC_DEF to avoid failures in info_for_reduction.
22192 2023-08-04  Pan Li  <pan2.li@intel.com>
22194         * config/riscv/riscv-vector-builtins-bases.cc
22195         (class vfmacc_frm): New class for vfmacc frm.
22196         (vfmacc_frm_obj): New declaration.
22197         (BASE): Ditto.
22198         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
22199         * config/riscv/riscv-vector-builtins-functions.def
22200         (vfmacc_frm): New function definition.
22201         * config/riscv/riscv-vector-builtins.cc
22202         (function_expander::use_ternop_insn): Add frm operand support.
22203         * config/riscv/vector.md: Add vfmuladd to frm_mode.
22205 2023-08-04  Pan Li  <pan2.li@intel.com>
22207         * config/riscv/riscv-vector-builtins-bases.cc
22208         (vfwmul_frm_obj): New declaration.
22209         (vfwmul_frm): Ditto.
22210         * config/riscv/riscv-vector-builtins-bases.h:
22211         (vfwmul_frm): Ditto.
22212         * config/riscv/riscv-vector-builtins-functions.def
22213         (vfwmul_frm): New function definition.
22214         * config/riscv/vector.md: (frm_mode) Add vfwmul to frm_mode.
22216 2023-08-04  Pan Li  <pan2.li@intel.com>
22218         * config/riscv/riscv-vector-builtins-bases.cc
22219         (binop_frm): New declaration.
22220         (reverse_binop_frm): Likewise.
22221         (BASE): Likewise.
22222         * config/riscv/riscv-vector-builtins-bases.h:
22223         (vfdiv_frm): New extern declaration.
22224         (vfrdiv_frm): Likewise.
22225         * config/riscv/riscv-vector-builtins-functions.def
22226         (vfdiv_frm): New function definition.
22227         (vfrdiv_frm): Likewise.
22228         * config/riscv/vector.md: Add vfdiv to frm_mode.
22230 2023-08-03  Jan Hubicka  <jh@suse.cz>
22232         * tree-cfg.cc (print_loop_info): Print entry count.
22234 2023-08-03  Jan Hubicka  <jh@suse.cz>
22236         * tree-ssa-loop-split.cc (split_loop): Update estimated iteration counts.
22238 2023-08-03  Jan Hubicka  <jh@suse.cz>
22240         PR bootstrap/110857
22241         * cfgloopmanip.cc (scale_loop_profile): (Un)initialize
22242         unadjusted_exit_count.
22244 2023-08-03  Aldy Hernandez  <aldyh@redhat.com>
22246         * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Read global
22247         value/mask.
22249 2023-08-03  Xiao Zeng  <zengxiao@eswincomputing.com>
22251         * config/riscv/riscv.cc (riscv_expand_conditional_move): Recognize
22252         various Zicond patterns.
22253         * config/riscv/riscv.md (mov<mode>cc): Allow TARGET_ZICOND.  Use
22254         sfb_alu_operand for both arms of the conditional move.
22255         Co-authored-by: Jeff Law <jlaw@ventanamicro.com>
22257 2023-08-03  Cupertino Miranda  <cupertino.miranda@oracle.com>
22259         PR target/107844
22260         PR target/107479
22261         PR target/107480
22262         PR target/107481
22263         * config.gcc: Added core-builtins.cc and .o files.
22264         * config/bpf/bpf-passes.def: Removed file.
22265         * config/bpf/bpf-protos.h (bpf_add_core_reloc,
22266         bpf_replace_core_move_operands): New prototypes.
22267         * config/bpf/bpf.cc (enum bpf_builtins, is_attr_preserve_access,
22268         maybe_make_core_relo, bpf_core_field_info, bpf_core_compute,
22269         bpf_core_get_index, bpf_core_new_decl, bpf_core_walk,
22270         bpf_is_valid_preserve_field_info_arg, is_attr_preserve_access,
22271         handle_attr_preserve, pass_data_bpf_core_attr, pass_bpf_core_attr):
22272         Removed.
22273         (def_builtin, bpf_expand_builtin, bpf_resolve_overloaded_builtin): Changed.
22274         * config/bpf/bpf.md (define_expand mov<MM:mode>): Changed.
22275         (mov_reloc_core<mode>): Added.
22276         * config/bpf/core-builtins.cc (struct cr_builtin, enum
22277         cr_decision struct cr_local, struct cr_final, struct
22278         core_builtin_helpers, enum bpf_plugin_states): Added types.
22279         (builtins_data, core_builtin_helpers, core_builtin_type_defs):
22280         Added variables.
22281         (allocate_builtin_data, get_builtin-data, search_builtin_data,
22282         remove_parser_plugin, compare_same_kind, compare_same_ptr_expr,
22283         compare_same_ptr_type, is_attr_preserve_access, core_field_info,
22284         bpf_core_get_index, compute_field_expr,
22285         pack_field_expr_for_access_index, pack_field_expr_for_preserve_field,
22286         process_field_expr, pack_enum_value, process_enum_value, pack_type,
22287         process_type, bpf_require_core_support, make_core_relo, read_kind,
22288         kind_access_index, kind_preserve_field_info, kind_enum_value,
22289         kind_type_id, kind_preserve_type_info, get_core_builtin_fndecl_for_type,
22290         bpf_handle_plugin_finish_type, bpf_init_core_builtins,
22291         construct_builtin_core_reloc, bpf_resolve_overloaded_core_builtin,
22292         bpf_expand_core_builtin, bpf_add_core_reloc,
22293         bpf_replace_core_move_operands): Added functions.
22294         * config/bpf/core-builtins.h (enum bpf_builtins): Added.
22295         (bpf_init_core_builtins, bpf_expand_core_builtin,
22296         bpf_resolve_overloaded_core_builtin): Added functions.
22297         * config/bpf/coreout.cc (struct bpf_core_extra): Added.
22298         (bpf_core_reloc_add, output_asm_btfext_core_reloc): Changed.
22299         * config/bpf/coreout.h (bpf_core_reloc_add) Changed prototype.
22300         * config/bpf/t-bpf: Added core-builtins.o.
22301         * doc/extend.texi: Added documentation for new BPF builtins.
22303 2023-08-03  Andrew MacLeod  <amacleod@redhat.com>
22305         * gimple-range-fold.cc (fold_using_range::range_of_range_op): Add
22306         ranges to the call to relation_fold_and_or.
22307         (fold_using_range::relation_fold_and_or): Add op1 and op2 ranges.
22308         (fur_source::register_outgoing_edges): Add op1 and op2 ranges.
22309         * gimple-range-fold.h (relation_fold_and_or): Adjust params.
22310         * gimple-range-gori.cc (gori_compute::compute_operand_range): Add
22311         a varying op1 and op2 to call.
22312         * range-op-float.cc (range_operator::op1_op2_relation): New dafaults.
22313         (operator_equal::op1_op2_relation): New float version.
22314         (operator_not_equal::op1_op2_relation): Ditto.
22315         (operator_lt::op1_op2_relation): Ditto.
22316         (operator_le::op1_op2_relation): Ditto.
22317         (operator_gt::op1_op2_relation): Ditto.
22318         (operator_ge::op1_op2_relation) Ditto.
22319         * range-op-mixed.h (operator_equal::op1_op2_relation): New float
22320         prototype.
22321         (operator_not_equal::op1_op2_relation): Ditto.
22322         (operator_lt::op1_op2_relation): Ditto.
22323         (operator_le::op1_op2_relation): Ditto.
22324         (operator_gt::op1_op2_relation): Ditto.
22325         (operator_ge::op1_op2_relation): Ditto.
22326         * range-op.cc (range_op_handler::op1_op2_relation): Dispatch new
22327         variations.
22328         (range_operator::op1_op2_relation): Add extra params.
22329         (operator_equal::op1_op2_relation): Ditto.
22330         (operator_not_equal::op1_op2_relation): Ditto.
22331         (operator_lt::op1_op2_relation): Ditto.
22332         (operator_le::op1_op2_relation): Ditto.
22333         (operator_gt::op1_op2_relation): Ditto.
22334         (operator_ge::op1_op2_relation): Ditto.
22335         * range-op.h (range_operator): New prototypes.
22336         (range_op_handler): Ditto.
22338 2023-08-03  Andrew MacLeod  <amacleod@redhat.com>
22340         * gimple-range-gori.cc (gori_compute::compute_operand1_range):
22341         Use identity relation.
22342         (gori_compute::compute_operand2_range): Ditto.
22343         * value-relation.cc (get_identity_relation): New.
22344         * value-relation.h (get_identity_relation): New prototype.
22346 2023-08-03  Andrew MacLeod  <amacleod@redhat.com>
22348         * value-range.h (Value_Range::set_varying): Set the type.
22349         (Value_Range::set_zero): Ditto.
22350         (Value_Range::set_nonzero): Ditto.
22352 2023-08-03  Jeff Law  <jeffreyalaw@gmail.com>
22354         * config/riscv/riscv.cc (riscv_rtx_costs): Remove errant hunk from
22355         recent commit.
22357 2023-08-03  Pan Li  <pan2.li@intel.com>
22359         * config/riscv/riscv-vector-builtins-bases.cc: Add vfsub.
22361 2023-08-03  Richard Sandiford  <richard.sandiford@arm.com>
22363         * poly-int.h (can_div_trunc_p): Succeed for more boundary conditions.
22365 2023-08-03  Richard Biener  <rguenther@suse.de>
22367         PR tree-optimization/110838
22368         * tree-vect-patterns.cc (vect_recog_over_widening_pattern):
22369         Adjust the shift operand of RSHIFT_EXPRs.
22371 2023-08-03  Richard Biener  <rguenther@suse.de>
22373         PR tree-optimization/110702
22374         * tree-ssa-loop-ivopts.cc (rewrite_use_address): When
22375         we created a NULL pointer based access rewrite that to
22376         a LEA.
22378 2023-08-03  Richard Biener  <rguenther@suse.de>
22380         * tree-ssa-sink.cc: Include tree-ssa-live.h.
22381         (pass_sink_code::execute): Instantiate virtual_operand_live
22382         and pass it down.
22383         (sink_code_in_bb): Pass down virtual_operand_live.
22384         (statement_sink_location): Get virtual_operand_live and
22385         verify we are not sinking loads across stores by looking up
22386         the live virtual operand at the sink location.
22388 2023-08-03  Richard Biener  <rguenther@suse.de>
22390         * tree-ssa-live.h (class virtual_operand_live): New.
22391         * tree-ssa-live.cc (virtual_operand_live::init): New.
22392         (virtual_operand_live::get_live_in): Likewise.
22393         (virtual_operand_live::get_live_out): Likewise.
22395 2023-08-03  Richard Biener  <rguenther@suse.de>
22397         * passes.def: Exchange loop splitting and final value
22398         replacement passes.
22400 2023-08-03  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
22402         * config/s390/s390.cc (expand_perm_as_a_vlbr_vstbr_candidate):
22403         New function which handles bswap patterns for vec_perm_const.
22404         (vectorize_vec_perm_const_1): Call new function.
22405         * config/s390/vector.md (*bswap<mode>): Fix operands in output
22406         template.
22407         (*vstbr<mode>): New insn.
22409 2023-08-03  Alexandre Oliva  <oliva@adacore.com>
22411         * config/vxworks-smp.opt: New.  Introduce -msmp.
22412         * config.gcc: Enable it on powerpc* vxworks prior to 7r*.
22413         * config/rs6000/vxworks.h (STARTFILE_PREFIX_SPEC): Choose
22414         lib_smp when -msmp is present in the command line.
22415         * doc/invoke.texi: Document it.
22417 2023-08-03  Yanzhang Wang  <yanzhang.wang@intel.com>
22419         * config/riscv/riscv.cc (riscv_save_reg_p): Save ra for leaf
22420         when enabling -mno-omit-leaf-frame-pointer
22421         (riscv_option_override): Override omit-frame-pointer.
22422         (riscv_frame_pointer_required): Save s0 for non-leaf function
22423         (TARGET_FRAME_POINTER_REQUIRED): Override defination
22424         * config/riscv/riscv.opt: Add option support.
22426 2023-08-03  Roger Sayle  <roger@nextmovesoftware.com>
22428         PR target/110792
22429         * config/i386/i386.md (<any_rotate>ti3): For rotations by 64 bits
22430         place operand in a register before gen_<insn>64ti2_doubleword.
22431         (<any_rotate>di3): Likewise, for rotations by 32 bits, place
22432         operand in a register before gen_<insn>32di2_doubleword.
22433         (<any_rotate>32di2_doubleword): Constrain operand to be in register.
22434         (<any_rotate>64ti2_doubleword): Likewise.
22436 2023-08-03  Pan Li  <pan2.li@intel.com>
22438         * config/riscv/riscv-vector-builtins-bases.cc
22439         (vfmul_frm_obj): New declaration.
22440         (Base): Likewise.
22441         * config/riscv/riscv-vector-builtins-bases.h: Likewise.
22442         * config/riscv/riscv-vector-builtins-functions.def
22443         (vfmul_frm): New function definition.
22444         * config/riscv/vector.md: Add vfmul to frm_mode.
22446 2023-08-03  Andrew Pinski  <apinski@marvell.com>
22448         * match.pd (`~X & X`): Check that the types match.
22449         (`~x | x`, `~x ^ x`): Likewise.
22451 2023-08-03  Pan Li  <pan2.li@intel.com>
22453         * config/riscv/riscv-vector-builtins-bases.h: Remove
22454         redudant declaration.
22456 2023-08-03  Pan Li  <pan2.li@intel.com>
22458         * config/riscv/riscv-vector-builtins-bases.cc (BASE): Add
22459         vfwsub frm.
22460         * config/riscv/riscv-vector-builtins-bases.h: Add declaration.
22461         * config/riscv/riscv-vector-builtins-functions.def (vfwsub_frm):
22462         Add vfwsub function definitions.
22464 2023-08-02  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
22466         PR rtl-optimization/110867
22467         * combine.cc (simplify_compare_const): Try the optimization only
22468         in case the constant fits into the comparison mode.
22470 2023-08-02  Jeff Law  <jlaw@ventanamicro.com>
22472         * config/riscv/zicond.md: Remove incorrect zicond patterns and
22473         renumber/rename them.
22474         (zero.nez.<GPR:MODE><X:mode>.opt2): Fix output string.
22476 2023-08-02  Richard Biener  <rguenther@suse.de>
22478         * tree-phinodes.h (add_phi_node_to_bb): Remove.
22479         * tree-phinodes.cc  (add_phi_node_to_bb): Make static.
22481 2023-08-02  Jan Beulich  <jbeulich@suse.com>
22483         * config/i386/sse.md (vec_dupv2df<mask_name>): Fold the middle
22484         two of the alternatives.
22486 2023-08-02  Richard Biener  <rguenther@suse.de>
22488         PR tree-optimization/92335
22489         * tree-ssa-sink.cc (select_best_block): Before loop
22490         optimizations avoid sinking unconditional loads/stores
22491         in innermost loops to conditional executed places.
22493 2023-08-02  Andrew Pinski  <apinski@marvell.com>
22495         * gimple-match-head.cc (gimple_bitwise_inverted_equal_p): Valueize
22496         the comparison operands before comparing them.
22498 2023-08-02  Andrew Pinski  <apinski@marvell.com>
22500         * match.pd (`~X & X`, `~X | X`): Move over to
22501         use bitwise_inverted_equal_p, removing :c as bitwise_inverted_equal_p
22502         handles that already.
22503         Remove range test simplifications to true/false as they
22504         are now handled by these patterns.
22506 2023-08-02  Andrew Pinski  <apinski@marvell.com>
22508         * tree-ssa-phiopt.cc (match_simplify_replacement): Mark's cond
22509         statement's lhs and rhs to check if trivial dead.
22510         Rename inserted_exprs to exprs_maybe_dce; also move it so
22511         bitmap is not allocated if not needed.
22513 2023-08-02  Pan Li  <pan2.li@intel.com>
22515         * config/riscv/riscv-vector-builtins-bases.cc
22516         (class widen_binop_frm): New class for binop frm.
22517         (BASE): Add vfwadd_frm.
22518         * config/riscv/riscv-vector-builtins-bases.h: New declaration.
22519         * config/riscv/riscv-vector-builtins-functions.def
22520         (vfwadd_frm): New function definition.
22521         * config/riscv/riscv-vector-builtins-shapes.cc
22522         (BASE_NAME_MAX_LEN): New macro.
22523         (struct alu_frm_def): Leverage new base class.
22524         (struct build_frm_base): New build base for frm.
22525         (struct widen_alu_frm_def): New struct for widen alu frm.
22526         (SHAPE): Add widen_alu_frm shape.
22527         * config/riscv/riscv-vector-builtins-shapes.h: New declaration.
22528         * config/riscv/vector.md (frm_mode): Add vfwalu type.
22530 2023-08-02  Jan Hubicka  <jh@suse.cz>
22532         * cfgloop.h (loop_count_in): Declare.
22533         * cfgloopanal.cc (expected_loop_iterations_by_profile): Use count_in.
22534         (loop_count_in): Move here from ...
22535         * cfgloopmanip.cc (loop_count_in): ... here.
22536         (scale_loop_profile): Improve dumping; cast iteration bound to sreal.
22538 2023-08-02  Jan Hubicka  <jh@suse.cz>
22540         * cfg.cc (scale_strictly_dominated_blocks): New function.
22541         * cfg.h (scale_strictly_dominated_blocks): Declare.
22542         * tree-cfg.cc (fold_loop_internal_call): Fixup CFG profile.
22544 2023-08-02  Richard Biener  <rguenther@suse.de>
22546         PR rtl-optimization/110587
22547         * lra-spills.cc (return_regno_p): Remove.
22548         (regno_in_use_p): Likewise.
22549         (lra_final_code_change): Do not remove noop moves
22550         between hard registers.
22552 2023-08-02  liuhongt  <hongtao.liu@intel.com>
22554         PR target/81904
22555         * config/i386/sse.md (vec_fmaddsub<mode>4): Extend to vector
22556         HFmode, use mode iterator VFH instead.
22557         (vec_fmsubadd<mode>4): Ditto.
22558         (<sd_mask_codefor>fma_fmaddsub_<mode><sd_maskz_name><round_name>):
22559         Remove scalar mode from iterator, use VFH_AVX512VL instead.
22560         (<sd_mask_codefor>fma_fmsubadd_<mode><sd_maskz_name><round_name>):
22561         Ditto.
22563 2023-08-02  liuhongt  <hongtao.liu@intel.com>
22565         * config/i386/sse.md (*avx2_lddqu_inserti_to_bcasti): New
22566         pre_reload define_insn_and_split.
22568 2023-08-02  Xiao Zeng  <zengxiao@eswincomputing.com>
22570         * config/riscv/riscv.cc (riscv_rtx_costs): Add costing for
22571         using Zicond to implement some conditional moves.
22573 2023-08-02  Jeff Law  <jlaw@ventanamicro.com>
22575         * config/riscv/zicond.md: Use the X iterator instead of ANYI
22576         on the comparison input operands.
22578 2023-08-02  Xiao Zeng  <zengxiao@eswincomputing.com>
22580         * config/riscv/riscv.cc (riscv_rtx_costs, case IF_THEN_ELSE): Add
22581         Zicond costing.
22582         (case SET): For INSNs that just set a REG, take the cost from the
22583         SET_SRC.
22584         Co-authored-by: Jeff Law <jlaw@ventanamicro.com>
22586 2023-08-02  Hu, Lin1  <lin1.hu@intel.com>
22588         * common/config/i386/i386-common.cc (OPTION_MASK_ISA2_AMX_INT8_SET):
22589         Change OPTION_MASK_ISA2_AMX_TILE to OPTION_MASK_ISA2_AMX_TILE_SET.
22590         (OPTION_MASK_ISA2_AMX_BF16_SET): Ditto
22591         (OPTION_MASK_ISA2_AMX_FP16_SET): Ditto
22592         (OPTION_MASK_ISA2_AMX_COMPLEX_SET): Ditto
22593         (OPTION_MASK_ISA_ABM_SET):
22594         Change OPTION_MASK_ISA_POPCNT to OPTION_MASK_ISA_POPCNT_SET.
22596 2023-08-01  Andreas Krebbel  <krebbel@linux.ibm.com>
22598         * config/s390/s390.cc (s390_encode_section_info): Assume external
22599         symbols without explicit alignment to be unaligned if
22600         -munaligned-symbols has been specified.
22601         * config/s390/s390.opt (-munaligned-symbols): New option.
22603 2023-08-01  Richard Ball  <richard.ball@arm.com>
22605         * gimple-fold.cc (fold_ctor_reference):
22606         Add support for poly_int.
22608 2023-08-01  Georg-Johann Lay  <avr@gjlay.de>
22610         PR target/110220
22611         * config/avr/avr.cc (avr_optimize_casesi): Set JUMP_LABEL and
22612         LABEL_NUSES of new conditional branch instruction.
22614 2023-08-01  Jan Hubicka  <jh@suse.cz>
22616         * tree-vect-loop-manip.cc (vect_do_peeling): Fix profile update after
22617         constant prologue peeling.
22619 2023-08-01  Christophe Lyon  <christophe.lyon@linaro.org>
22621         * doc/sourcebuild.texi (arm_v8_1m_main_cde_mve_fp): Fix spelling.
22623 2023-08-01  Pan Li  <pan2.li@intel.com>
22624             Juzhe-Zhong  <juzhe.zhong@rivai.ai>
22626         * config/riscv/riscv.cc (DYNAMIC_FRM_RTL): New macro.
22627         (STATIC_FRM_P): Ditto.
22628         (struct mode_switching_info): New struct for mode switching.
22629         (struct machine_function): Add new field mode switching.
22630         (riscv_emit_frm_mode_set): Add DYN_CALL emit.
22631         (riscv_frm_adjust_mode_after_call): New function for call mode.
22632         (riscv_frm_emit_after_call_in_bb_end): New function for emit
22633         insn when call as the end of bb.
22634         (riscv_frm_mode_needed): New function for frm mode needed.
22635         (frm_unknown_dynamic_p): Remove call check.
22636         (riscv_mode_needed): Extrac function for frm.
22637         (riscv_frm_mode_after): Add DYN_CALL after.
22638         (riscv_mode_entry): Remove backup rtl initialization.
22639         * config/riscv/vector.md (frm_mode): Add dyn_call.
22640         (fsrmsi_restore_exit): Rename to _volatile.
22641         (fsrmsi_restore_volatile): Likewise.
22643 2023-08-01  Pan Li  <pan2.li@intel.com>
22645         * config/riscv/riscv-vector-builtins-bases.cc
22646         (class reverse_binop_frm): Add new template for reversed frm.
22647         (vfsub_frm_obj): New obj.
22648         (vfrsub_frm_obj): Likewise.
22649         * config/riscv/riscv-vector-builtins-bases.h:
22650         (vfsub_frm): New declaration.
22651         (vfrsub_frm): Likewise.
22652         * config/riscv/riscv-vector-builtins-functions.def
22653         (vfsub_frm): New function define.
22654         (vfrsub_frm): Likewise.
22656 2023-08-01  Andrew Pinski  <apinski@marvell.com>
22658         PR tree-optimization/93044
22659         * match.pd (nested int casts): A truncation (to the same size or smaller)
22660         can always remove the inner cast.
22662 2023-07-31  Hamza Mahfooz  <someguy@effective-light.com>
22664         PR c/65213
22665         * doc/invoke.texi (-Wmissing-variable-declarations): Document
22666         new option.
22668 2023-07-31  Andrew Pinski  <apinski@marvell.com>
22670         PR tree-optimization/106164
22671         * match.pd (`a != b & a <= b`, `a != b & a >= b`,
22672         `a == b | a < b`, `a == b | a > b`): Handle these cases
22673         too.
22675 2023-07-31  Andrew Pinski  <apinski@marvell.com>
22677         PR tree-optimization/106164
22678         * match.pd: Extend the `(X CMP1 CST1) AND/IOR (X CMP2 CST2)`
22679         patterns to support `(X CMP1 Y) AND/IOR (X CMP2 Y)`.
22681 2023-07-31  Andrew Pinski  <apinski@marvell.com>
22683         PR tree-optimization/100864
22684         * generic-match-head.cc (bitwise_inverted_equal_p): New function.
22685         * gimple-match-head.cc (bitwise_inverted_equal_p): New macro.
22686         (gimple_bitwise_inverted_equal_p): New function.
22687         * match.pd ((~x | y) & x): Use bitwise_inverted_equal_p
22688         instead of direct matching bit_not.
22690 2023-07-31  Costas Argyris  <costas.argyris@gmail.com>
22692         PR driver/77576
22693         * gcc-ar.cc (main): Expand argv and use
22694         temporary response file to call ar if any
22695         expansions were made.
22697 2023-07-31  Andrew MacLeod  <amacleod@redhat.com>
22699         PR tree-optimization/110582
22700         * gimple-range-fold.cc (fur_list::get_operand): Do not use the
22701         range vector for non-ssa names.
22703 2023-07-31  David Malcolm  <dmalcolm@redhat.com>
22705         PR analyzer/109361
22706         * diagnostic-client-data-hooks.h (class sarif_object): New forward
22707         decl.
22708         (diagnostic_client_data_hooks::add_sarif_invocation_properties):
22709         New vfunc.
22710         * diagnostic-format-sarif.cc: Include "diagnostic-format-sarif.h".
22711         (class sarif_invocation): Inherit from sarif_object rather than
22712         json::object.
22713         (class sarif_result): Likewise.
22714         (class sarif_ice_notification): Likewise.
22715         (sarif_object::get_or_create_properties): New.
22716         (sarif_invocation::prepare_to_flush): Add "context" param.  Use it
22717         to call the context's add_sarif_invocation_properties hook.
22718         (sarif_builder::flush_to_file): Pass m_context to
22719         sarif_invocation::prepare_to_flush.
22720         * diagnostic-format-sarif.h: New header.
22721         * doc/invoke.texi (Developer Options): Clarify that -ftime-report
22722         writes to stderr.  Document that if SARIF diagnostic output is
22723         requested then any timing information is written in JSON form as
22724         part of the SARIF output, rather than to stderr.
22725         * timevar.cc: Include "json.h".
22726         (timer::named_items::m_hash_map): Split out type into...
22727         (timer::named_items::hash_map_t): ...this new typedef.
22728         (timer::named_items::make_json): New function.
22729         (timevar_diff): New function.
22730         (make_json_for_timevar_time_def): New function.
22731         (timer::timevar_def::make_json): New function.
22732         (timer::make_json): New function.
22733         * timevar.h (class json::value): New forward decl.
22734         (timer::make_json): New decl.
22735         (timer::timevar_def::make_json): New decl.
22736         * tree-diagnostic-client-data-hooks.cc: Include
22737         "diagnostic-format-sarif.h" and "timevar.h".
22738         (compiler_data_hooks::add_sarif_invocation_properties): New vfunc
22739         implementation.
22741 2023-07-31  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
22743         * combine.cc (simplify_compare_const): Narrow comparison of
22744         memory and constant.
22745         (try_combine): Adapt new function signature.
22746         (simplify_comparison): Adapt new function signature.
22748 2023-07-31  Kito Cheng  <kito.cheng@sifive.com>
22750         * config/riscv/riscv-v.cc (expand_vec_series): Drop unused
22751         variable.
22752         (expand_vector_init_insert_elems): Ditto.
22754 2023-07-31  Hao Liu  <hliu@os.amperecomputing.com>
22756         PR target/110625
22757         * config/aarch64/aarch64.cc (count_ops): Only '* count' for
22758         single_defuse_cycle while counting reduction_latency.
22760 2023-07-31  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
22762         * internal-fn.def (DEF_INTERNAL_COND_FN): New macro.
22763         (DEF_INTERNAL_SIGNED_COND_FN): Ditto.
22764         (COND_ADD): Remove.
22765         (COND_SUB): Ditto.
22766         (COND_MUL): Ditto.
22767         (COND_DIV): Ditto.
22768         (COND_MOD): Ditto.
22769         (COND_RDIV): Ditto.
22770         (COND_MIN): Ditto.
22771         (COND_MAX): Ditto.
22772         (COND_FMIN): Ditto.
22773         (COND_FMAX): Ditto.
22774         (COND_AND): Ditto.
22775         (COND_IOR): Ditto.
22776         (COND_XOR): Ditto.
22777         (COND_SHL): Ditto.
22778         (COND_SHR): Ditto.
22779         (COND_FMA): Ditto.
22780         (COND_FMS): Ditto.
22781         (COND_FNMA): Ditto.
22782         (COND_FNMS): Ditto.
22783         (COND_NEG): Ditto.
22784         (COND_LEN_ADD): Ditto.
22785         (COND_LEN_SUB): Ditto.
22786         (COND_LEN_MUL): Ditto.
22787         (COND_LEN_DIV): Ditto.
22788         (COND_LEN_MOD): Ditto.
22789         (COND_LEN_RDIV): Ditto.
22790         (COND_LEN_MIN): Ditto.
22791         (COND_LEN_MAX): Ditto.
22792         (COND_LEN_FMIN): Ditto.
22793         (COND_LEN_FMAX): Ditto.
22794         (COND_LEN_AND): Ditto.
22795         (COND_LEN_IOR): Ditto.
22796         (COND_LEN_XOR): Ditto.
22797         (COND_LEN_SHL): Ditto.
22798         (COND_LEN_SHR): Ditto.
22799         (COND_LEN_FMA): Ditto.
22800         (COND_LEN_FMS): Ditto.
22801         (COND_LEN_FNMA): Ditto.
22802         (COND_LEN_FNMS): Ditto.
22803         (COND_LEN_NEG): Ditto.
22804         (ADD): New macro define.
22805         (SUB): Ditto.
22806         (MUL): Ditto.
22807         (DIV): Ditto.
22808         (MOD): Ditto.
22809         (RDIV): Ditto.
22810         (MIN): Ditto.
22811         (MAX): Ditto.
22812         (FMIN): Ditto.
22813         (FMAX): Ditto.
22814         (AND): Ditto.
22815         (IOR): Ditto.
22816         (XOR): Ditto.
22817         (SHL): Ditto.
22818         (SHR): Ditto.
22819         (FMA): Ditto.
22820         (FMS): Ditto.
22821         (FNMA): Ditto.
22822         (FNMS): Ditto.
22823         (NEG): Ditto.
22825 2023-07-31  Roger Sayle  <roger@nextmovesoftware.com>
22827         PR target/110843
22828         * config/i386/i386-features.cc (compute_convert_gain): Check
22829         TARGET_AVX512VL (not TARGET_AVX512F) when considering V2DImode
22830         and V4SImode rotates in STV.
22831         (general_scalar_chain::convert_rotate): Likewise.
22833 2023-07-31  Kito Cheng  <kito.cheng@sifive.com>
22835         * config/riscv/autovec.md (abs<mode>2): Remove `.require ()`.
22836         * config/riscv/riscv-protos.h (get_mask_mode): Update return
22837         type.
22838         * config/riscv/riscv-v.cc (rvv_builder::rvv_builder): Remove
22839         `.require ()`.
22840         (emit_vlmax_insn): Ditto.
22841         (emit_vlmax_fp_insn): Ditto.
22842         (emit_vlmax_ternary_insn): Ditto.
22843         (emit_vlmax_fp_ternary_insn): Ditto.
22844         (emit_nonvlmax_fp_ternary_tu_insn): Ditto.
22845         (emit_nonvlmax_insn): Ditto.
22846         (emit_vlmax_slide_insn): Ditto.
22847         (emit_nonvlmax_slide_tu_insn): Ditto.
22848         (emit_vlmax_merge_insn): Ditto.
22849         (emit_vlmax_masked_insn): Ditto.
22850         (emit_nonvlmax_masked_insn): Ditto.
22851         (emit_vlmax_masked_store_insn): Ditto.
22852         (emit_nonvlmax_masked_store_insn): Ditto.
22853         (emit_vlmax_masked_mu_insn): Ditto.
22854         (emit_nonvlmax_tu_insn): Ditto.
22855         (emit_nonvlmax_fp_tu_insn): Ditto.
22856         (emit_scalar_move_insn): Ditto.
22857         (emit_vlmax_compress_insn): Ditto.
22858         (emit_vlmax_reduction_insn): Ditto.
22859         (emit_vlmax_fp_reduction_insn): Ditto.
22860         (emit_nonvlmax_fp_reduction_insn): Ditto.
22861         (expand_vec_series): Ditto.
22862         (expand_vector_init_merge_repeating_sequence): Ditto.
22863         (expand_vec_perm): Ditto.
22864         (shuffle_merge_patterns): Ditto.
22865         (shuffle_compress_patterns): Ditto.
22866         (shuffle_decompress_patterns): Ditto.
22867         (expand_reduction): Ditto.
22868         (get_mask_mode): Update return type.
22869         * config/riscv/riscv.cc (riscv_get_mask_mode): Check vector type
22870         is valid, and use new get_mask_mode interface.
22872 2023-07-31  Pan Li  <pan2.li@intel.com>
22874         * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_frm_def):
22875         Move rm suffix before mask.
22877 2023-07-31  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
22879         * config/riscv/autovec-vls.md (@vec_duplicate<mode>): New pattern.
22880         * config/riscv/riscv-v.cc (autovectorize_vector_modes): Add VLS autovec
22881         support.
22883 2023-07-29  Roger Sayle  <roger@nextmovesoftware.com>
22885         PR target/110790
22886         * config/i386/i386.md (extv<mode>): Use QImode for offsets.
22887         (extzv<mode>): Likewise.
22888         (insv<mode>): Likewise.
22889         (*testqi_ext_3): Likewise.
22890         (*btr<mode>_2): Likewise.
22891         (define_split): Likewise.
22892         (*btsq_imm): Likewise.
22893         (*btrq_imm): Likewise.
22894         (*btcq_imm): Likewise.
22895         (define_peephole2 x3): Likewise.
22896         (*bt<mode>): Likewise
22897         (*bt<mode>_mask): New define_insn_and_split.
22898         (*jcc_bt<mode>): Use QImode for offsets.
22899         (*jcc_bt<mode>_1): Delete obsolete pattern.
22900         (*jcc_bt<mode>_mask): Use QImode offsets.
22901         (*jcc_bt<mode>_mask_1): Likewise.
22902         (define_split): Likewise.
22903         (*bt<mode>_setcqi): Likewise.
22904         (*bt<mode>_setncqi): Likewise.
22905         (*bt<mode>_setnc<mode>): Likewise.
22906         (*bt<mode>_setncqi_2): Likewise.
22907         (*bt<mode>_setc<mode>_mask): New define_insn_and_split.
22908         (bmi2_bzhi_<mode>3): Use QImode offsets.
22909         (*bmi2_bzhi_<mode>3): Likewise.
22910         (*bmi2_bzhi_<mode>3_1): Likewise.
22911         (*bmi2_bzhi_<mode>3_1_ccz): Likewise.
22912         (@tbm_bextri_<mode>): Likewise.
22914 2023-07-29  Jan Hubicka  <jh@suse.cz>
22916         * profile-count.cc (profile_probability::sqrt): New member function.
22917         (profile_probability::pow): Likewise.
22918         * profile-count.h: (profile_probability::sqrt): Declare
22919         (profile_probability::pow): Likewise.
22920         * tree-vect-loop-manip.cc (vect_loop_versioning): Fix profile update.
22922 2023-07-28  Andrew MacLeod  <amacleod@redhat.com>
22924         * gimple-range-cache.cc (ssa_cache::merge_range): New.
22925         (ssa_lazy_cache::merge_range): New.
22926         * gimple-range-cache.h (class ssa_cache): Adjust protoypes.
22927         (class ssa_lazy_cache): Ditto.
22928         * gimple-range.cc (assume_query::calculate_op): Use merge_range.
22930 2023-07-28  Andrew MacLeod  <amacleod@redhat.com>
22932         * tree-ssa-propagate.cc (substitute_and_fold_engine::value_on_edge):
22933         Move from value-query.cc.
22934         (substitute_and_fold_engine::value_of_stmt): Ditto.
22935         (substitute_and_fold_engine::range_of_expr): New.
22936         * tree-ssa-propagate.h (substitute_and_fold_engine): Inherit from
22937         range_query.  New prototypes.
22938         * value-query.cc (value_query::value_on_edge): Relocate.
22939         (value_query::value_of_stmt): Ditto.
22940         * value-query.h (class value_query): Remove.
22941         (class range_query): Remove base class.  Adjust prototypes.
22943 2023-07-28  Andrew MacLeod  <amacleod@redhat.com>
22945         PR tree-optimization/110205
22946         * gimple-range-cache.h (ranger_cache::m_estimate): Delete.
22947         * range-op-mixed.h (operator_bitwise_xor::op1_op2_relation_effect):
22948         Add final override.
22949         * range-op.cc (operator_lshift): Add missing final overrides.
22950         (operator_rshift): Ditto.
22952 2023-07-28  Jose E. Marchesi  <jose.marchesi@oracle.com>
22954         * config/bpf/bpf.cc (bpf_option_override): Disable tail-call
22955         optimizations in BPF target.
22957 2023-07-28  Honza  <jh@ryzen4.suse.cz>
22959         * cfgloopmanip.cc (loop_count_in): Break out from ...
22960         (loop_exit_for_scaling): Break out from ...
22961         (update_loop_exit_probability_scale_dom_bbs): Break out from ...;
22962         add more sanity check and debug info.
22963         (scale_loop_profile): ... here.
22964         (create_empty_loop_on_edge): Fix whitespac.
22965         * cfgloopmanip.h (update_loop_exit_probability_scale_dom_bbs): Declare.
22966         * loop-unroll.cc (unroll_loop_constant_iterations): Use
22967         update_loop_exit_probability_scale_dom_bbs.
22968         * tree-ssa-loop-manip.cc (update_exit_probability_after_unrolling): Remove.
22969         (tree_transform_and_unroll_loop): Use
22970         update_loop_exit_probability_scale_dom_bbs.
22971         * tree-ssa-loop-split.cc (split_loop): Use
22972         update_loop_exit_probability_scale_dom_bbs.
22974 2023-07-28  Jan Hubicka  <jh@suse.cz>
22976         PR middle-end/77689
22977         * tree-ssa-loop-split.cc: Include value-query.h.
22978         (split_at_bb_p): Analyze cases where EQ/NE can be turned
22979         into LT/LE/GT/GE; return updated guard code.
22980         (split_loop): Use guard code.
22982 2023-07-28  Roger Sayle  <roger@nextmovesoftware.com>
22983             Richard Biener  <rguenther@suse.de>
22985         PR middle-end/28071
22986         PR rtl-optimization/110587
22987         * expr.cc (emit_group_load_1): Simplify logic for calling
22988         force_reg on ORIG_SRC, to avoid making a copy if the source
22989         is already in a pseudo register.
22991 2023-07-28  Jan Hubicka  <jh@suse.cz>
22993         PR middle-end/106923
22994         * tree-ssa-loop-split.cc (connect_loops): Change probability
22995         of the test preconditioning second loop to very_likely.
22996         (fix_loop_bb_probability): Handle correctly case where
22997         on of the arms of the conditional is empty.
22998         (split_loop): Fold the test guarding first condition to
22999         see if it is constant true; Set correct entry block
23000         probabilities of the split loops; determine correct loop
23001         eixt probabilities.
23003 2023-07-28  xuli  <xuli1@eswincomputing.com>
23005         * config/riscv/riscv-vector-builtins-bases.cc: remove rounding mode of
23006         vsadd[u] and vssub[u].
23007         * config/riscv/vector.md: Ditto.
23009 2023-07-28  Jan Hubicka  <jh@suse.cz>
23011         * tree-ssa-loop-split.cc (split_loop): Also support NE driven
23012         loops when IV test is not overflowing.
23014 2023-07-28  liuhongt  <hongtao.liu@intel.com>
23016         PR target/110788
23017         * config/i386/sse.md (avx512cd_maskb_vec_dup<mode>): Add
23018         UNSPEC_MASKOP.
23019         (avx512cd_maskw_vec_dup<mode>): Ditto.
23021 2023-07-27  David Faust  <david.faust@oracle.com>
23023         PR target/110782
23024         PR target/110784
23025         * config/bpf/bpf.opt (msmov): New option.
23026         * config/bpf/bpf.cc (bpf_option_override): Handle it here.
23027         * config/bpf/bpf.md (*extendsidi2): New.
23028         (extendhidi2): New.
23029         (extendqidi2): New.
23030         (extendsisi2): New.
23031         (extendhisi2): New.
23032         (extendqisi2): New.
23033         * doc/invoke.texi (Option Summary): Add -msmov eBPF option.
23034         (eBPF Options): Add -m[no-]smov.  Document that -mcpu=v4
23035         also enables -msmov.
23037 2023-07-27  David Faust  <david.faust@oracle.com>
23039         * doc/invoke.texi (Option Summary): Remove -mkernel eBPF option.
23040         Add -mbswap and -msdiv eBPF options.
23041         (eBPF Options): Remove -mkernel.  Add -mno-{jmpext, jmp32,
23042         alu32, v3-atomics, bswap, sdiv}.  Document that -mcpu=v4 also
23043         enables -msdiv.
23045 2023-07-27  David Faust  <david.faust@oracle.com>
23047         * config/bpf/bpf.md (add<AM:mode>3): Use %w2 instead of %w1
23048         in pseudo-C dialect output template.
23049         (sub<AM:mode>3): Likewise.
23051 2023-07-27  Jan Hubicka  <jh@suse.cz>
23053         * tree-vect-loop.cc (optimize_mask_stores): Make store
23054         likely.
23056 2023-07-27  Jan Hubicka  <jh@suse.cz>
23058         * cfgloop.h (single_dom_exit): Declare.
23059         * cfgloopmanip.h (update_exit_probability_after_unrolling): Declare.
23060         * cfgrtl.cc (struct cfg_hooks): Fix comment.
23061         * loop-unroll.cc (unroll_loop_constant_iterations): Update exit edge.
23062         * tree-ssa-loop-ivopts.h (single_dom_exit): Do not declare it here.
23063         * tree-ssa-loop-manip.cc (update_exit_probability_after_unrolling):
23064         Break out from ...
23065         (tree_transform_and_unroll_loop): ... here;
23067 2023-07-27  Jan Hubicka  <jh@suse.cz>
23069         * cfgloopmanip.cc (scale_dominated_blocks_in_loop): Move here from
23070         tree-ssa-loop-manip.cc and avoid recursion.
23071         (scale_loop_profile): Use scale_dominated_blocks_in_loop.
23072         (duplicate_loop_body_to_header_edge): Add DLTHE_FLAG_FLAT_PROFILE
23073         flag.
23074         * cfgloopmanip.h (DLTHE_FLAG_FLAT_PROFILE): Define.
23075         (scale_dominated_blocks_in_loop): Declare.
23076         * predict.cc (dump_prediction): Do not ICE on uninitialized probability.
23077         (change_edge_frequency): Remove.
23078         * predict.h (change_edge_frequency): Remove.
23079         * tree-ssa-loop-manip.cc (scale_dominated_blocks_in_loop): Move to
23080         cfgloopmanip.cc.
23081         (niter_for_unrolled_loop): Remove.
23082         (tree_transform_and_unroll_loop): Fix profile update.
23084 2023-07-27  Jan Hubicka  <jh@suse.cz>
23086         * tree-ssa-loop-im.cc (execute_sm_if_changed): Turn cap probability
23087         to guessed; fix count of new_bb.
23089 2023-07-27  Jan Hubicka  <jh@suse.cz>
23091         * profile-count.h (profile_count::apply_probability): Fix
23092         handling of uninitialized probabilities, optimize scaling
23093         by probability 1.
23095 2023-07-27  Richard Biener  <rguenther@suse.de>
23097         PR tree-optimization/91838
23098         * gimple-match-head.cc: Include attribs.h and asan.h.
23099         * generic-match-head.cc: Likewise.
23100         * match.pd (([rl]shift @0 out-of-bounds) -> zero): New pattern.
23102 2023-07-27  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
23104         * config/riscv/riscv-modes.def (VECTOR_BOOL_MODE): Add VLS modes.
23105         (ADJUST_ALIGNMENT): Ditto.
23106         (ADJUST_PRECISION): Ditto.
23107         (VLS_MODES): Ditto.
23108         (VECTOR_MODE_WITH_PREFIX): Ditto.
23109         * config/riscv/riscv-opts.h (TARGET_VECTOR_VLS): New macro.
23110         * config/riscv/riscv-protos.h (riscv_v_ext_vls_mode_p): New function.
23111         * config/riscv/riscv-v.cc (INCLUDE_ALGORITHM): Add include.
23112         (legitimize_move): Enable basic VLS modes support.
23113         (get_vlmul): Ditto.
23114         (get_ratio): Ditto.
23115         (get_vector_mode): Ditto.
23116         * config/riscv/riscv-vector-switch.def (VLS_ENTRY): Add vls modes.
23117         * config/riscv/riscv.cc (riscv_v_ext_vls_mode_p): New function.
23118         (VLS_ENTRY): New macro.
23119         (riscv_v_ext_mode_p): Add vls modes.
23120         (riscv_get_v_regno_alignment): New function.
23121         (riscv_print_operand): Add vls modes.
23122         (riscv_hard_regno_nregs): Ditto.
23123         (riscv_hard_regno_mode_ok): Ditto.
23124         (riscv_regmode_natural_size): Ditto.
23125         (riscv_vectorize_preferred_vector_alignment): Ditto.
23126         * config/riscv/riscv.md: Ditto.
23127         * config/riscv/vector-iterators.md: Ditto.
23128         * config/riscv/vector.md: Ditto.
23129         * config/riscv/autovec-vls.md: New file.
23131 2023-07-27  Pan Li  <pan2.li@intel.com>
23133         * config/riscv/riscv_vector.h (enum RVV_CSR): Removed.
23134         (vread_csr): Ditto.
23135         (vwrite_csr): Ditto.
23137 2023-07-27  demin.han  <demin.han@starfivetech.com>
23139         * config/riscv/autovec.md: Delete which_alternative use in split
23141 2023-07-27  Richard Biener  <rguenther@suse.de>
23143         * tree-ssa-sink.cc (sink_code_in_bb): Remove recursion, instead
23144         use a worklist ...
23145         (pass_sink_code::execute): ... in the caller.
23147 2023-07-27  Kewen Lin  <linkw@linux.ibm.com>
23148             Richard Biener  <rguenther@suse.de>
23150         PR tree-optimization/110776
23151         * tree-vect-stmts.cc (vectorizable_load): Always cost VMAT_ELEMENTWISE
23152         as scalar load.
23154 2023-07-26  Xiao Zeng  <zengxiao@eswincomputing.com>
23156         * config/riscv/riscv.md: Include zicond.md
23157         * config/riscv/zicond.md: New file.
23159 2023-07-26  Xiao Zeng  <zengxiao@eswincomputing.com>
23161         * common/config/riscv/riscv-common.cc: New extension.
23162         * config/riscv/riscv-opts.h (MASK_ZICOND): New mask.
23163         (TARGET_ZICOND): New target.
23165 2023-07-26  Carl Love  <cel@us.ibm.com>
23167         * config/rs6000/rs6000-c.cc (find_instance): Add new parameter that
23168         specifies the number of built-in arguments to check.
23169         (altivec_resolve_overloaded_builtin): Update calls to find_instance
23170         to pass the number of built-in arguments to be checked.
23172 2023-07-26  David Faust  <david.faust@oracle.com>
23174         * config/bpf/bpf.opt (mv3-atomics): New option.
23175         * config/bpf/bpf.cc (bpf_option_override): Handle it here.
23176         * config/bpf/bpf.h (enum_reg_class): Add R0 class.
23177         (REG_CLASS_NAMES): Likewise.
23178         (REG_CLASS_CONTENTS): Likewise.
23179         (REGNO_REG_CLASS): Handle R0.
23180         * config/bpf/bpf.md (UNSPEC_XADD): Rename to UNSPEC_AADD.
23181         (UNSPEC_AAND): New unspec.
23182         (UNSPEC_AOR): Likewise.
23183         (UNSPEC_AXOR): Likewise.
23184         (UNSPEC_AFADD): Likewise.
23185         (UNSPEC_AFAND): Likewise.
23186         (UNSPEC_AFOR): Likewise.
23187         (UNSPEC_AFXOR): Likewise.
23188         (UNSPEC_AXCHG): Likewise.
23189         (UNSPEC_ACMPX): Likewise.
23190         (atomic_add<mode>): Use UNSPEC_AADD and atomic type attribute.
23191         Move to...
23192         * config/bpf/atomic.md: ...Here. New file.
23193         * config/bpf/constraints.md (t): New constraint for R0.
23194         * doc/invoke.texi (eBPF Options): Document -mv3-atomics.
23196 2023-07-26  Matthew Malcomson  <matthew.malcomson@arm.com>
23198         * tree-vect-stmts.cc (get_group_load_store_type): Reformat
23199         comment.
23201 2023-07-26  Carl Love  <cel@us.ibm.com>
23203         * config/rs6000/rs6000-builtins.def: Rename
23204         __builtin_altivec_vreplace_un_uv2di as __builtin_altivec_vreplace_un_udi
23205         __builtin_altivec_vreplace_un_uv4si as __builtin_altivec_vreplace_un_usi
23206         __builtin_altivec_vreplace_un_v2df as __builtin_altivec_vreplace_un_df
23207         __builtin_altivec_vreplace_un_v2di as __builtin_altivec_vreplace_un_di
23208         __builtin_altivec_vreplace_un_v4sf as __builtin_altivec_vreplace_un_sf
23209         __builtin_altivec_vreplace_un_v4si as __builtin_altivec_vreplace_un_si.
23210         Rename VREPLACE_UN_UV2DI as VREPLACE_UN_UDI, VREPLACE_UN_UV4SI as
23211         VREPLACE_UN_USI, VREPLACE_UN_V2DF as VREPLACE_UN_DF,
23212         VREPLACE_UN_V2DI as VREPLACE_UN_DI, VREPLACE_UN_V4SF as
23213         VREPLACE_UN_SF, VREPLACE_UN_V4SI as VREPLACE_UN_SI.
23214         Rename vreplace_un_v2di as vreplace_un_di, vreplace_un_v4si as
23215         vreplace_un_si, vreplace_un_v2df as vreplace_un_df,
23216         vreplace_un_v2di as vreplace_un_di, vreplace_un_v4sf as
23217         vreplace_un_sf, vreplace_un_v4si as vreplace_un_si.
23218         * config/rs6000/rs6000-c.cc (find_instance): Add case
23219         RS6000_OVLD_VEC_REPLACE_UN.
23220         * config/rs6000/rs6000-overload.def (__builtin_vec_replace_un):
23221         Fix first argument type.  Rename VREPLACE_UN_UV4SI as
23222         VREPLACE_UN_USI, VREPLACE_UN_V4SI as VREPLACE_UN_SI,
23223         VREPLACE_UN_UV2DI as VREPLACE_UN_UDI, VREPLACE_UN_V2DI as
23224         VREPLACE_UN_DI, VREPLACE_UN_V4SF as VREPLACE_UN_SF,
23225         VREPLACE_UN_V2DF as VREPLACE_UN_DF.
23226         * config/rs6000/vsx.md (REPLACE_ELT): Rename the mode_iterator
23227         REPLACE_ELT_V for vector modes.
23228         (REPLACE_ELT): New scalar mode iterator.
23229         (REPLACE_ELT_char): Add scalar attributes.
23230         (vreplace_un_<mode>): Change iterator and mode attribute.
23232 2023-07-26  David Malcolm  <dmalcolm@redhat.com>
23234         PR analyzer/104940
23235         * Makefile.in (ANALYZER_OBJS): Add analyzer/symbol.o.
23237 2023-07-26  Richard Biener  <rguenther@suse.de>
23239         PR tree-optimization/106081
23240         * tree-vect-slp.cc (vect_optimize_slp_pass::start_choosing_layouts):
23241         Assign layout -1 to splats.
23243 2023-07-26  Aldy Hernandez  <aldyh@redhat.com>
23245         * range-op-mixed.h (class operator_cast): Add update_bitmask.
23246         * range-op.cc (operator_cast::update_bitmask): New.
23247         (operator_cast::fold_range): Call update_bitmask.
23249 2023-07-26  Li Xu  <xuli1@eswincomputing.com>
23251         * config/riscv/riscv-vector-builtins.def (vfloat16mf4x2_t): Change
23252         scalar type to float16, eliminate warning.
23253         (vfloat16mf4x3_t): Ditto.
23254         (vfloat16mf4x4_t): Ditto.
23255         (vfloat16mf4x5_t): Ditto.
23256         (vfloat16mf4x6_t): Ditto.
23257         (vfloat16mf4x7_t): Ditto.
23258         (vfloat16mf4x8_t): Ditto.
23259         (vfloat16mf2x2_t): Ditto.
23260         (vfloat16mf2x3_t): Ditto.
23261         (vfloat16mf2x4_t): Ditto.
23262         (vfloat16mf2x5_t): Ditto.
23263         (vfloat16mf2x6_t): Ditto.
23264         (vfloat16mf2x7_t): Ditto.
23265         (vfloat16mf2x8_t): Ditto.
23266         (vfloat16m1x2_t): Ditto.
23267         (vfloat16m1x3_t): Ditto.
23268         (vfloat16m1x4_t): Ditto.
23269         (vfloat16m1x5_t): Ditto.
23270         (vfloat16m1x6_t): Ditto.
23271         (vfloat16m1x7_t): Ditto.
23272         (vfloat16m1x8_t): Ditto.
23273         (vfloat16m2x2_t): Ditto.
23274         (vfloat16m2x3_t): Ditto.
23275         (vfloat16m2x4_t): Ditto.
23276         (vfloat16m4x2_t): Ditto.
23277         * config/riscv/vector-iterators.md: add RVVM4x2DF in iterator V4T.
23278         * config/riscv/vector.md: add tuple mode in attr sew.
23280 2023-07-26  Uros Bizjak  <ubizjak@gmail.com>
23282         PR target/110762
23283         * config/i386/i386.md (plusminusmult): New code iterator.
23284         * config/i386/mmx.md (mmxdoublevecmode): New mode attribute.
23285         (movq_<mode>_to_sse): New expander.
23286         (<plusminusmult:insn>v2sf3): Macroize expander from addv2sf3,
23287         subv2sf3 and mulv2sf3 using plusminusmult code iterator.  Rewrite
23288         as a wrapper around V4SFmode operation.
23289         (mmx_addv2sf3): Change operand 1 and operand 2 predicates to
23290         nonimmediate_operand.
23291         (*mmx_addv2sf3): Remove SSE alternatives.  Change operand 1 and
23292         operand 2 predicates to nonimmediate_operand.
23293         (mmx_subv2sf3): Change operand 2 predicate to nonimmediate_operand.
23294         (mmx_subrv2sf3): Change operand 1 predicate to nonimmediate_operand.
23295         (*mmx_subv2sf3): Remove SSE alternatives.  Change operand 1 and
23296         operand 2 predicates to nonimmediate_operand.
23297         (mmx_mulv2sf3): Change operand 1 and operand 2 predicates to
23298         nonimmediate_operand.
23299         (*mmx_mulv2sf3): Remove SSE alternatives.  Change operand 1 and
23300         operand 2 predicates to nonimmediate_operand.
23301         (divv2sf3): Rewrite as a wrapper around V4SFmode operation.
23302         (<smaxmin:code>v2sf3): Ditto.
23303         (mmx_<smaxmin:code>v2sf3): Change operand 1 and operand 2
23304         predicates to nonimmediate_operand.
23305         (*mmx_<smaxmin:code>v2sf3): Remove SSE alternatives.  Change
23306         operand 1 and operand 2 predicates to nonimmediate_operand.
23307         (mmx_ieee_<ieee_maxmin>v2sf3): Ditto.
23308         (sqrtv2sf2): Rewrite as a wrapper around V4SFmode operation.
23309         (*mmx_haddv2sf3_low): Ditto.
23310         (*mmx_hsubv2sf3_low): Ditto.
23311         (vec_addsubv2sf3): Ditto.
23312         (*mmx_maskcmpv2sf3_comm): Remove.
23313         (*mmx_maskcmpv2sf3): Remove.
23314         (vec_cmpv2sfv2si): Rewrite as a wrapper around V4SFmode operation.
23315         (vcond<V2FI:mode>v2sf): Ditto.
23316         (fmav2sf4): Ditto.
23317         (fmsv2sf4): Ditto.
23318         (fnmav2sf4): Ditto.
23319         (fnmsv2sf4): Ditto.
23320         (fix_truncv2sfv2si2): Ditto.
23321         (fixuns_truncv2sfv2si2): Ditto.
23322         (mmx_fix_truncv2sfv2si2): Remove SSE alternatives.
23323         Change operand 1 predicate to nonimmediate_operand.
23324         (floatv2siv2sf2): Rewrite as a wrapper around V4SFmode operation.
23325         (floatunsv2siv2sf2): Ditto.
23326         (mmx_floatv2siv2sf2): Remove SSE alternatives.
23327         Change operand 1 predicate to nonimmediate_operand.
23328         (nearbyintv2sf2): Rewrite as a wrapper around V4SFmode operation.
23329         (rintv2sf2): Ditto.
23330         (lrintv2sfv2si2): Ditto.
23331         (ceilv2sf2): Ditto.
23332         (lceilv2sfv2si2): Ditto.
23333         (floorv2sf2): Ditto.
23334         (lfloorv2sfv2si2): Ditto.
23335         (btruncv2sf2): Ditto.
23336         (roundv2sf2): Ditto.
23337         (lroundv2sfv2si2): Ditto.
23338         (*mmx_roundv2sf2): Remove.
23340 2023-07-26  Jose E. Marchesi  <jose.marchesi@oracle.com>
23342         * config/bpf/bpf.md: Fix neg{SI,DI}2 insn.
23344 2023-07-26  Richard Biener  <rguenther@suse.de>
23346         PR tree-optimization/110799
23347         * tree-ssa-pre.cc (compute_avail): More thoroughly match
23348         up TBAA behavior of redundant loads.
23350 2023-07-26  Jakub Jelinek  <jakub@redhat.com>
23352         PR tree-optimization/110755
23353         * range-op-float.cc (frange_arithmetic): Change +0 result to -0
23354         for PLUS_EXPR or MINUS_EXPR if -frounding-math, inf is negative and
23355         it is exact op1 + (-op1) or op1 - op1.
23357 2023-07-26  Kewen Lin  <linkw@linux.ibm.com>
23359         PR target/110741
23360         * config/rs6000/vsx.md (define_insn xxeval): Correct vsx
23361         operands output with "x".
23363 2023-07-26  Aldy Hernandez  <aldyh@redhat.com>
23365         * range-op.cc (class operator_absu): Add update_bitmask.
23366         (operator_absu::update_bitmask): New.
23368 2023-07-26  Aldy Hernandez  <aldyh@redhat.com>
23370         * range-op-mixed.h (class operator_abs): Add update_bitmask.
23371         * range-op.cc (operator_abs::update_bitmask): New.
23373 2023-07-26  Aldy Hernandez  <aldyh@redhat.com>
23375         * range-op-mixed.h (class operator_bitwise_not): Add update_bitmask.
23376         * range-op.cc (operator_bitwise_not::update_bitmask): New.
23378 2023-07-26  Aldy Hernandez  <aldyh@redhat.com>
23380         * range-op.cc (update_known_bitmask): Handle unary operators.
23382 2023-07-26  Aldy Hernandez  <aldyh@redhat.com>
23384         * tree-ssa-ccp.cc (bit_value_unop): Initialize val when appropriate.
23386 2023-07-26  Jin Ma  <jinma@linux.alibaba.com>
23388         * config/riscv/riscv.md: Likewise.
23390 2023-07-26  Jan Hubicka  <jh@suse.cz>
23392         * profile-count.cc (profile_count::to_sreal_scale): Value is not know
23393         if we divide by zero.
23395 2023-07-25  David Faust  <david.faust@oracle.com>
23397         * config/bpf/bpf.cc (bpf_print_operand_address): Don't print
23398         enclosing parentheses for pseudo-C dialect.
23399         * config/bpf/bpf.md (zero_exdendhidi2): Add parentheses around
23400         operands of pseudo-C dialect output templates where needed.
23401         (zero_extendqidi2): Likewise.
23402         (zero_extendsidi2): Likewise.
23403         (*mov<MM:mode>): Likewise.
23405 2023-07-25  Aldy Hernandez  <aldyh@redhat.com>
23407         * tree-ssa-ccp.cc (value_mask_to_min_max): Make static.
23408         (bit_value_mult_const): Same.
23409         (get_individual_bits): Same.
23411 2023-07-25  Haochen Gui  <guihaoc@gcc.gnu.org>
23413         PR target/103605
23414         * config/rs6000/rs6000-builtin.cc (rs6000_gimple_fold_builtin): Gimple
23415         fold RS6000_BIF_XSMINDP and RS6000_BIF_XSMAXDP when fast-math is set.
23416         * config/rs6000/rs6000.md (FMINMAX): New int iterator.
23417         (minmax_op): New int attribute.
23418         (UNSPEC_FMAX, UNSPEC_FMIN): New unspecs.
23419         (f<minmax_op><mode>3): New pattern by UNSPEC_FMAX and UNSPEC_FMIN.
23420         * config/rs6000/rs6000-builtins.def (__builtin_vsx_xsmaxdp): Set
23421         pattern to fmaxdf3.
23422         (__builtin_vsx_xsmindp): Set pattern to fmindf3.
23424 2023-07-24  David Faust  <david.faust@oracle.com>
23426         * config/bpf/bpf.md (nop): Add pseudo-c asm dialect template.
23428 2023-07-24  Drew Ross  <drross@redhat.com>
23429             Jakub Jelinek  <jakub@redhat.com>
23431         PR middle-end/109986
23432         * generic-match-head.cc (bitwise_equal_p): New macro.
23433         * gimple-match-head.cc (bitwise_equal_p): New macro.
23434         (gimple_nop_convert): Declare.
23435         (gimple_bitwise_equal_p): Helper for bitwise_equal_p.
23436         * match.pd ((~X | Y) ^ X -> ~(X & Y)): New simplification.
23438 2023-07-24  Jeff Law  <jlaw@ventanamicro.com>
23440         * common/config/riscv/riscv-common.cc (riscv_subset_list::add): Use
23441         single quote rather than backquote in diagnostic.
23443 2023-07-24  Jose E. Marchesi  <jose.marchesi@oracle.com>
23445         PR target/110783
23446         * config/bpf/bpf.opt: New command-line option -msdiv.
23447         * config/bpf/bpf.md: Conditionalize sdiv/smod on bpf_has_sdiv.
23448         * config/bpf/bpf.cc (bpf_option_override): Initialize
23449         bpf_has_sdiv.
23450         * doc/invoke.texi (eBPF Options): Document -msdiv.
23452 2023-07-24  Jeff Law  <jlaw@ventanamicro.com>
23454         * config/riscv/riscv.cc (riscv_option_override): Spell out
23455         greater than and use cannot in diagnostic string.
23457 2023-07-24  Richard Biener  <rguenther@suse.de>
23459         * tree-vectorizer.h (_slp_tree::push_vec_def): Add.
23460         (_slp_tree::vec_stmts): Remove.
23461         (SLP_TREE_VEC_STMTS): Remove.
23462         * tree-vect-slp.cc (_slp_tree::push_vec_def): Define.
23463         (_slp_tree::_slp_tree): Adjust.
23464         (_slp_tree::~_slp_tree): Likewise.
23465         (vect_get_slp_vect_def): Simplify.
23466         (vect_get_slp_defs): Likewise.
23467         (vect_transform_slp_perm_load_1): Adjust.
23468         (vect_add_slp_permutation): Likewise.
23469         (vect_schedule_slp_node): Likewise.
23470         (vectorize_slp_instance_root_stmt): Likewise.
23471         (vect_schedule_scc): Likewise.
23472         * tree-vect-stmts.cc (vectorizable_bswap): Use push_vec_def.
23473         (vectorizable_call): Likewise.
23474         (vectorizable_call): Likewise.
23475         (vect_create_vectorized_demotion_stmts): Likewise.
23476         (vectorizable_conversion): Likewise.
23477         (vectorizable_assignment): Likewise.
23478         (vectorizable_shift): Likewise.
23479         (vectorizable_operation): Likewise.
23480         (vectorizable_load): Likewise.
23481         (vectorizable_condition): Likewise.
23482         (vectorizable_comparison): Likewise.
23483         * tree-vect-loop.cc (vect_create_epilog_for_reduction): Adjust.
23484         (vectorize_fold_left_reduction): Use push_vec_def.
23485         (vect_transform_reduction): Likewise.
23486         (vect_transform_cycle_phi): Likewise.
23487         (vectorizable_lc_phi): Likewise.
23488         (vectorizable_phi): Likewise.
23489         (vectorizable_recurr): Likewise.
23490         (vectorizable_induction): Likewise.
23491         (vectorizable_live_operation): Likewise.
23493 2023-07-24  Richard Biener  <rguenther@suse.de>
23495         * tree-ssa-loop.cc: Remove unused tree-vectorizer.h include.
23497 2023-07-24  Richard Biener  <rguenther@suse.de>
23499         * config/i386/i386-builtins.cc: Remove tree-vectorizer.h include.
23500         * config/i386/i386-expand.cc: Likewise.
23501         * config/i386/i386-features.cc: Likewise.
23502         * config/i386/i386-options.cc: Likewise.
23504 2023-07-24  Robin Dapp  <rdapp@ventanamicro.com>
23506         * tree-vect-stmts.cc (vectorizable_conversion): Handle
23507         more demotion/promotion for modifier == NONE.
23509 2023-07-24  Roger Sayle  <roger@nextmovesoftware.com>
23511         PR target/110787
23512         PR target/110790
23513         Revert patch.
23514         * config/i386/i386.md (extv<mode>): Use QImode for offsets.
23515         (extzv<mode>): Likewise.
23516         (insv<mode>): Likewise.
23517         (*testqi_ext_3): Likewise.
23518         (*btr<mode>_2): Likewise.
23519         (define_split): Likewise.
23520         (*btsq_imm): Likewise.
23521         (*btrq_imm): Likewise.
23522         (*btcq_imm): Likewise.
23523         (define_peephole2 x3): Likewise.
23524         (*bt<mode>): Likewise
23525         (*bt<mode>_mask): New define_insn_and_split.
23526         (*jcc_bt<mode>): Use QImode for offsets.
23527         (*jcc_bt<mode>_1): Delete obsolete pattern.
23528         (*jcc_bt<mode>_mask): Use QImode offsets.
23529         (*jcc_bt<mode>_mask_1): Likewise.
23530         (define_split): Likewise.
23531         (*bt<mode>_setcqi): Likewise.
23532         (*bt<mode>_setncqi): Likewise.
23533         (*bt<mode>_setnc<mode>): Likewise.
23534         (*bt<mode>_setncqi_2): Likewise.
23535         (*bt<mode>_setc<mode>_mask): New define_insn_and_split.
23536         (bmi2_bzhi_<mode>3): Use QImode offsets.
23537         (*bmi2_bzhi_<mode>3): Likewise.
23538         (*bmi2_bzhi_<mode>3_1): Likewise.
23539         (*bmi2_bzhi_<mode>3_1_ccz): Likewise.
23540         (@tbm_bextri_<mode>): Likewise.
23542 2023-07-24  Jose E. Marchesi  <jose.marchesi@oracle.com>
23544         * config/bpf/bpf-opts.h (enum bpf_kernel_version): Remove enum.
23545         * config/bpf/bpf.opt (mkernel): Remove option.
23546         * config/bpf/bpf.cc (bpf_target_macros): Do not define
23547         BPF_KERNEL_VERSION_CODE.
23549 2023-07-24  Jose E. Marchesi  <jose.marchesi@oracle.com>
23551         PR target/110786
23552         * config/bpf/bpf.opt (mcpu): Add ISA_V4 and make it the default.
23553         (mbswap): New option.
23554         * config/bpf/bpf-opts.h (enum bpf_isa_version): New value ISA_V4.
23555         * config/bpf/bpf.cc (bpf_option_override): Set bpf_has_bswap.
23556         * config/bpf/bpf.md: Use bswap instructions if available for
23557         bswap* insn, and fix constraint.
23558         * doc/invoke.texi (eBPF Options): Document -mcpu=v4 and -mbswap.
23560 2023-07-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
23562         * config/riscv/autovec.md (fold_left_plus_<mode>): New pattern.
23563         (mask_len_fold_left_plus_<mode>): Ditto.
23564         * config/riscv/riscv-protos.h (enum insn_type): New enum.
23565         (enum reduction_type): Ditto.
23566         (expand_reduction): Add in-order reduction.
23567         * config/riscv/riscv-v.cc (emit_nonvlmax_fp_reduction_insn): New function.
23568         (expand_reduction): Add in-order reduction.
23570 2023-07-24  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
23572         * tree-vect-loop.cc (get_masked_reduction_fn): Add mask_len_fold_left_plus.
23573         (vectorize_fold_left_reduction): Ditto.
23574         (vectorizable_reduction): Ditto.
23575         (vect_transform_reduction): Ditto.
23577 2023-07-24  Richard Biener  <rguenther@suse.de>
23579         PR tree-optimization/110777
23580         * tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_avail):
23581         Avoid propagating abnormals.
23583 2023-07-24  Richard Biener  <rguenther@suse.de>
23585         PR tree-optimization/110766
23586         * tree-scalar-evolution.cc
23587         (analyze_and_compute_bitwise_induction_effect): Check the PHI
23588         is defined in the loop header.
23590 2023-07-24  Kewen Lin  <linkw@linux.ibm.com>
23592         PR tree-optimization/110740
23593         * tree-vect-loop.cc (vect_analyze_loop_costing): Do not vectorize a
23594         loop with a single scalar iteration.
23596 2023-07-24  Pan Li  <pan2.li@intel.com>
23598         * config/riscv/riscv-vector-builtins-shapes.cc
23599         (struct alu_frm_def): Take range check.
23601 2023-07-22  Vineet Gupta  <vineetg@rivosinc.com>
23603         PR target/110748
23604         * config/riscv/predicates.md (const_0_operand): Add back
23605         const_double.
23607 2023-07-22  Roger Sayle  <roger@nextmovesoftware.com>
23609         * config/i386/i386-expand.cc (ix86_expand_move): Disable the
23610         64-bit insertions into TImode optimizations with -O0, unless
23611         the function has the "naked" attribute (for PR target/110533).
23613 2023-07-22  Andrew Pinski  <apinski@marvell.com>
23615         PR target/110778
23616         * rtl.h (extended_count): Change last argument type
23617         to bool.
23619 2023-07-22  Roger Sayle  <roger@nextmovesoftware.com>
23621         * config/i386/i386.md (extv<mode>): Use QImode for offsets.
23622         (extzv<mode>): Likewise.
23623         (insv<mode>): Likewise.
23624         (*testqi_ext_3): Likewise.
23625         (*btr<mode>_2): Likewise.
23626         (define_split): Likewise.
23627         (*btsq_imm): Likewise.
23628         (*btrq_imm): Likewise.
23629         (*btcq_imm): Likewise.
23630         (define_peephole2 x3): Likewise.
23631         (*bt<mode>): Likewise
23632         (*bt<mode>_mask): New define_insn_and_split.
23633         (*jcc_bt<mode>): Use QImode for offsets.
23634         (*jcc_bt<mode>_1): Delete obsolete pattern.
23635         (*jcc_bt<mode>_mask): Use QImode offsets.
23636         (*jcc_bt<mode>_mask_1): Likewise.
23637         (define_split): Likewise.
23638         (*bt<mode>_setcqi): Likewise.
23639         (*bt<mode>_setncqi): Likewise.
23640         (*bt<mode>_setnc<mode>): Likewise.
23641         (*bt<mode>_setncqi_2): Likewise.
23642         (*bt<mode>_setc<mode>_mask): New define_insn_and_split.
23643         (bmi2_bzhi_<mode>3): Use QImode offsets.
23644         (*bmi2_bzhi_<mode>3): Likewise.
23645         (*bmi2_bzhi_<mode>3_1): Likewise.
23646         (*bmi2_bzhi_<mode>3_1_ccz): Likewise.
23647         (@tbm_bextri_<mode>): Likewise.
23649 2023-07-22  Jeff Law  <jlaw@ventanamicro.com>
23651         * config/bfin/bfin.md (ones): Fix length computation.
23653 2023-07-22  Vladimir N. Makarov  <vmakarov@redhat.com>
23655         * lra-eliminations.cc (update_reg_eliminate): Fix the assert.
23656         (lra_update_fp2sp_elimination): Use HARD_FRAME_POINTER_REGNUM
23657         instead of FRAME_POINTER_REGNUM to spill pseudos.
23659 2023-07-21  Roger Sayle  <roger@nextmovesoftware.com>
23660             Richard Biener  <rguenther@suse.de>
23662         PR c/110699
23663         * gimplify.cc (gimplify_compound_lval):  If the array's type
23664         is error_mark_node then return GS_ERROR.
23666 2023-07-21  Cupertino Miranda  <cupertino.miranda@oracle.com>
23668         PR target/110770
23669         * config/bpf/bpf.opt: Added option -masm=<dialect>.
23670         * config/bpf/bpf-opts.h (enum bpf_asm_dialect): New type.
23671         * config/bpf/bpf.cc (bpf_print_register): New function.
23672         (bpf_print_register): Support pseudo-c syntax for registers.
23673         (bpf_print_operand_address): Likewise.
23674         * config/bpf/bpf.h (ASM_SPEC): handle -msasm.
23675         (ASSEMBLER_DIALECT): Define.
23676         * config/bpf/bpf.md: Added pseudo-c templates.
23677         * doc/invoke.texi (-masm=): New eBPF option item.
23679 2023-07-21  Cupertino Miranda  <cupertino.miranda@oracle.com>
23681         * config/bpf/bpf.md: fixed template for neg instruction.
23683 2023-07-21  Jan Hubicka  <jh@suse.cz>
23685         PR target/110727
23686         * tree-vect-loop.cc (scale_profile_for_vect_loop): Avoid scaling flat
23687         profiles by vectorization factor.
23688         (vect_transform_loop): Check for flat profiles.
23690 2023-07-21  Jan Hubicka  <jh@suse.cz>
23692         * cfgloop.h (maybe_flat_loop_profile): Declare
23693         * cfgloopanal.cc (maybe_flat_loop_profile): New function.
23694         * tree-cfg.cc (print_loop_info): Print info about flat profiles.
23696 2023-07-21  Jan Hubicka  <jh@suse.cz>
23698         * cfgloop.cc (get_estimated_loop_iterations): Use sreal::to_nearest_int
23699         * cfgloopanal.cc (expected_loop_iterations_unbounded): Likewise.
23700         * predict.cc (estimate_bb_frequencies): Likewise.
23701         * profile.cc (branch_prob): Likewise.
23702         * tree-ssa-loop-niter.cc (estimate_numbers_of_iterations): Likewise
23704 2023-07-21  Iain Sandoe  <iain@sandoe.co.uk>
23706         * config.in: Regenerate.
23707         * config/darwin.h (DARWIN_LD_DEMANGLE): New.
23708         (LINK_COMMAND_SPEC_A): Add demangle handling.
23709         * configure: Regenerate.
23710         * configure.ac: Detect linker support for '-demangle'.
23712 2023-07-21  Jan Hubicka  <jh@suse.cz>
23714         * sreal.cc (sreal::to_nearest_int): New.
23715         (sreal_verify_basics): Verify also to_nearest_int.
23716         (verify_aritmetics): Likewise.
23717         (sreal_verify_conversions): New.
23718         (sreal_cc_tests): Call sreal_verify_conversions.
23719         * sreal.h: (sreal::to_nearest_int): Declare
23721 2023-07-21  Jan Hubicka  <jh@suse.cz>
23723         * tree-ssa-loop-ch.cc (enum ch_decision): New enum.
23724         (should_duplicate_loop_header_p): Return info on profitability.
23725         (do_while_loop_p): Watch for constant conditionals.
23726         (update_profile_after_ch): Do not sanity check that all
23727         static exits are taken.
23728         (ch_base::copy_headers): Run on all loops.
23729         (pass_ch::process_loop_p): Improve heuristics by handling also
23730         do_while loop and duplicating shortest sequence containing all
23731         winning blocks.
23733 2023-07-21  Jan Hubicka  <jh@suse.cz>
23735         * tree-ssa-loop-niter.cc (finite_loop_p): Reorder to do cheap
23736         tests first; update finite_p flag.
23738 2023-07-21  Jan Hubicka  <jh@suse.cz>
23740         * cfgloop.cc (flow_loop_dump): Use print_loop_info.
23741         * cfgloop.h (print_loop_info): Declare.
23742         * tree-cfg.cc (print_loop_info): Break out from ...; add
23743         printing of missing fields and profile
23744         (print_loop): ... here.
23746 2023-07-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
23748         * config/riscv/riscv-v.cc (expand_gather_scatter): Remove redundant variables.
23750 2023-07-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
23752         * tree-vect-stmts.cc (check_load_store_for_partial_vectors): Change condition order.
23753         (vectorizable_operation): Ditto.
23755 2023-07-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
23757         * config/riscv/autovec.md: Align order of mask and len.
23758         * config/riscv/riscv-v.cc (expand_load_store): Ditto.
23759         (expand_gather_scatter): Ditto.
23760         * doc/md.texi: Ditto.
23761         * internal-fn.cc (add_len_and_mask_args): Ditto.
23762         (add_mask_and_len_args): Ditto.
23763         (expand_partial_load_optab_fn): Ditto.
23764         (expand_partial_store_optab_fn): Ditto.
23765         (expand_scatter_store_optab_fn): Ditto.
23766         (expand_gather_load_optab_fn): Ditto.
23767         (internal_fn_len_index): Ditto.
23768         (internal_fn_mask_index): Ditto.
23769         (internal_len_load_store_bias): Ditto.
23770         * tree-vect-stmts.cc (vectorizable_store): Ditto.
23771         (vectorizable_load): Ditto.
23773 2023-07-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
23775         * config/riscv/autovec.md (len_maskload<mode><vm>): Change LEN_MASK into MASK_LEN.
23776         (mask_len_load<mode><vm>): Ditto.
23777         (len_maskstore<mode><vm>): Ditto.
23778         (mask_len_store<mode><vm>): Ditto.
23779         (len_mask_gather_load<RATIO64:mode><RATIO64I:mode>): Ditto.
23780         (mask_len_gather_load<RATIO64:mode><RATIO64I:mode>): Ditto.
23781         (len_mask_gather_load<RATIO32:mode><RATIO32I:mode>): Ditto.
23782         (mask_len_gather_load<RATIO32:mode><RATIO32I:mode>): Ditto.
23783         (len_mask_gather_load<RATIO16:mode><RATIO16I:mode>): Ditto.
23784         (mask_len_gather_load<RATIO16:mode><RATIO16I:mode>): Ditto.
23785         (len_mask_gather_load<RATIO8:mode><RATIO8I:mode>): Ditto.
23786         (mask_len_gather_load<RATIO8:mode><RATIO8I:mode>): Ditto.
23787         (len_mask_gather_load<RATIO4:mode><RATIO4I:mode>): Ditto.
23788         (mask_len_gather_load<RATIO4:mode><RATIO4I:mode>): Ditto.
23789         (len_mask_gather_load<RATIO2:mode><RATIO2I:mode>): Ditto.
23790         (mask_len_gather_load<RATIO2:mode><RATIO2I:mode>): Ditto.
23791         (len_mask_gather_load<RATIO1:mode><RATIO1:mode>): Ditto.
23792         (mask_len_gather_load<RATIO1:mode><RATIO1:mode>): Ditto.
23793         (len_mask_scatter_store<RATIO64:mode><RATIO64I:mode>): Ditto.
23794         (mask_len_scatter_store<RATIO64:mode><RATIO64I:mode>): Ditto.
23795         (len_mask_scatter_store<RATIO32:mode><RATIO32I:mode>): Ditto.
23796         (mask_len_scatter_store<RATIO32:mode><RATIO32I:mode>): Ditto.
23797         (len_mask_scatter_store<RATIO16:mode><RATIO16I:mode>): Ditto.
23798         (mask_len_scatter_store<RATIO16:mode><RATIO16I:mode>): Ditto.
23799         (len_mask_scatter_store<RATIO8:mode><RATIO8I:mode>): Ditto.
23800         (mask_len_scatter_store<RATIO8:mode><RATIO8I:mode>): Ditto.
23801         (len_mask_scatter_store<RATIO4:mode><RATIO4I:mode>): Ditto.
23802         (mask_len_scatter_store<RATIO4:mode><RATIO4I:mode>): Ditto.
23803         (len_mask_scatter_store<RATIO2:mode><RATIO2I:mode>): Ditto.
23804         (mask_len_scatter_store<RATIO2:mode><RATIO2I:mode>): Ditto.
23805         (len_mask_scatter_store<RATIO1:mode><RATIO1:mode>): Ditto.
23806         (mask_len_scatter_store<RATIO1:mode><RATIO1:mode>): Ditto.
23807         * doc/md.texi: Ditto.
23808         * genopinit.cc (main): Ditto.
23809         (CMP_NAME): Ditto. Ditto.
23810         * gimple-fold.cc (arith_overflowed_p): Ditto.
23811         (gimple_fold_partial_load_store_mem_ref): Ditto.
23812         (gimple_fold_call): Ditto.
23813         * internal-fn.cc (len_maskload_direct): Ditto.
23814         (mask_len_load_direct): Ditto.
23815         (len_maskstore_direct): Ditto.
23816         (mask_len_store_direct): Ditto.
23817         (expand_call_mem_ref): Ditto.
23818         (expand_len_maskload_optab_fn): Ditto.
23819         (expand_mask_len_load_optab_fn): Ditto.
23820         (expand_len_maskstore_optab_fn): Ditto.
23821         (expand_mask_len_store_optab_fn): Ditto.
23822         (direct_len_maskload_optab_supported_p): Ditto.
23823         (direct_mask_len_load_optab_supported_p): Ditto.
23824         (direct_len_maskstore_optab_supported_p): Ditto.
23825         (direct_mask_len_store_optab_supported_p): Ditto.
23826         (internal_load_fn_p): Ditto.
23827         (internal_store_fn_p): Ditto.
23828         (internal_gather_scatter_fn_p): Ditto.
23829         (internal_fn_len_index): Ditto.
23830         (internal_fn_mask_index): Ditto.
23831         (internal_fn_stored_value_index): Ditto.
23832         (internal_len_load_store_bias): Ditto.
23833         * internal-fn.def (LEN_MASK_GATHER_LOAD): Ditto.
23834         (MASK_LEN_GATHER_LOAD): Ditto.
23835         (LEN_MASK_LOAD): Ditto.
23836         (MASK_LEN_LOAD): Ditto.
23837         (LEN_MASK_SCATTER_STORE): Ditto.
23838         (MASK_LEN_SCATTER_STORE): Ditto.
23839         (LEN_MASK_STORE): Ditto.
23840         (MASK_LEN_STORE): Ditto.
23841         * optabs-query.cc (supports_vec_gather_load_p): Ditto.
23842         (supports_vec_scatter_store_p): Ditto.
23843         * optabs-tree.cc (target_supports_mask_load_store_p): Ditto.
23844         (target_supports_len_load_store_p): Ditto.
23845         * optabs.def (OPTAB_CD): Ditto.
23846         * tree-ssa-alias.cc (ref_maybe_used_by_call_p_1): Ditto.
23847         (call_may_clobber_ref_p_1): Ditto.
23848         * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Ditto.
23849         (dse_optimize_stmt): Ditto.
23850         * tree-ssa-loop-ivopts.cc (get_mem_type_for_internal_fn): Ditto.
23851         (get_alias_ptr_type_for_ptr_address): Ditto.
23852         * tree-vect-data-refs.cc (vect_gather_scatter_fn_p): Ditto.
23853         * tree-vect-patterns.cc (vect_recog_gather_scatter_pattern): Ditto.
23854         * tree-vect-stmts.cc (check_load_store_for_partial_vectors): Ditto.
23855         (vect_get_strided_load_store_ops): Ditto.
23856         (vectorizable_store): Ditto.
23857         (vectorizable_load): Ditto.
23859 2023-07-21  Haochen Jiang  <haochen.jiang@intel.com>
23861         * config/i386/i386.opt: Fix a typo.
23863 2023-07-21  Richard Biener  <rguenther@suse.de>
23865         PR tree-optimization/88540
23866         * tree-ssa-phiopt.cc (minmax_replacement): Do not give up
23867         with NaNs but handle the simple case by if-converting to a
23868         COND_EXPR.
23870 2023-07-21  Andrew Pinski  <apinski@marvell.com>
23872         * match.pd (minmax<minmax<a,b>,a>->minmax<a,b>): New
23873         transformation.
23875 2023-07-21  Richard Biener  <rguenther@suse.de>
23877         PR tree-optimization/110742
23878         * tree-vect-slp.cc (vect_optimize_slp_pass::get_result_with_layout):
23879         Do not materialize an edge permutation in an external node with
23880         vector defs.
23881         (vect_slp_analyze_node_operations_1): Guard purely internal
23882         nodes better.
23884 2023-07-21  Jan Hubicka  <jh@suse.cz>
23886         * cfgloop.cc: Include sreal.h.
23887         (flow_loop_dump): Dump sreal iteration exsitmate.
23888         (get_estimated_loop_iterations): Update.
23889         * cfgloop.h (expected_loop_iterations_by_profile): Declare.
23890         * cfgloopanal.cc (expected_loop_iterations_by_profile): New function.
23891         (expected_loop_iterations_unbounded): Use new API.
23892         * cfgloopmanip.cc (scale_loop_profile): Use
23893         expected_loop_iterations_by_profile
23894         * predict.cc (pass_profile::execute): Likewise.
23895         * profile.cc (branch_prob): Likewise.
23896         * tree-ssa-loop-niter.cc: Include sreal.h.
23897         (estimate_numbers_of_iterations): Likewise
23899 2023-07-21  Kewen Lin  <linkw@linux.ibm.com>
23901         PR tree-optimization/110744
23902         * tree-ssa-sccvn.cc (vn_reference_lookup_3): Correct the index of bias
23903         operand for ifn IFN_LEN_STORE.
23905 2023-07-21  liuhongt  <hongtao.liu@intel.com>
23907         PR target/89701
23908         * common.opt: (fcf-protection=): Add EnumSet attribute to
23909         support combination of params.
23911 2023-07-21  David Malcolm  <dmalcolm@redhat.com>
23913         PR middle-end/110612
23914         * text-art/table.cc (table_geometry::table_geometry): Drop m_table
23915         field.
23916         (table_geometry::table_x_to_canvas_x): Add cast to comparison.
23917         (table_geometry::table_y_to_canvas_y): Likewise.
23918         * text-art/table.h (table_geometry::m_table): Drop unused field.
23919         * text-art/widget.h (wrapper_widget::update_child_alloc_rects):
23920         Add "override".
23922 2023-07-20  Uros Bizjak  <ubizjak@gmail.com>
23924         PR target/110717
23925         * config/i386/i386-features.cc
23926         (general_scalar_chain::compute_convert_gain): Calculate gain
23927         for extend higpart case.
23928         (general_scalar_chain::convert_op): Handle
23929         ASHIFTRT/ASHIFT combined RTX.
23930         (general_scalar_to_vector_candidate_p): Enable ASHIFTRT for
23931         SImode for SSE2 targets.  Handle ASHIFTRT/ASHIFT combined RTX.
23932         * config/i386/i386.md (*extend<dwi>2_doubleword_highpart):
23933         New define_insn_and_split pattern.
23934         (*extendv2di2_highpart_stv): Ditto.
23936 2023-07-20  Vladimir N. Makarov  <vmakarov@redhat.com>
23938         * lra-constraints.cc (simplify_operand_subreg): Check frame pointer
23939         simplification.
23941 2023-07-20  Andrew Pinski  <apinski@marvell.com>
23943         * combine.cc (dump_combine_stats): Remove.
23944         (dump_combine_total_stats): Remove.
23945         (total_attempts, total_merges, total_extras,
23946         total_successes): Remove.
23947         (combine_instructions): Don't increment total stats
23948         instead use statistics_counter_event.
23949         * dumpfile.cc (print_combine_total_stats): Remove.
23950         * dumpfile.h (print_combine_total_stats): Remove.
23951         (dump_combine_total_stats): Remove.
23952         * passes.cc (finish_optimization_passes):
23953         Don't call print_combine_total_stats.
23954         * rtl.h (dump_combine_total_stats): Remove.
23955         (dump_combine_stats): Remove.
23957 2023-07-20  Jan Hubicka  <jh@suse.cz>
23959         * tree-ssa-loop-ch.cc (should_duplicate_loop_header_p): Use BIT instead of TRUTH
23960         logical ops.
23962 2023-07-20  Martin Jambor  <mjambor@suse.cz>
23964         * doc/invoke.texi (analyzer-text-art-string-ellipsis-threshold): New.
23965         (analyzer-text-art-ideal-canvas-width): Likewise.
23966         (analyzer-text-art-string-ellipsis-head-len): Likewise.
23967         (analyzer-text-art-string-ellipsis-tail-len): Likewise.
23969 2023-07-20  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
23971         * tree-vect-stmts.cc (check_load_store_for_partial_vectors):
23972         Refine code structure.
23974 2023-07-20  Jan Hubicka  <jh@suse.cz>
23976         * tree-ssa-loop-ch.cc (edge_range_query): Rename to ...
23977         (get_range_query): ... this one; do
23978         (static_loop_exit): Add query parametr, turn ranger to reference.
23979         (loop_static_stmt_p): New function.
23980         (loop_static_op_p): New function.
23981         (loop_iv_derived_p): Remove.
23982         (loop_combined_static_and_iv_p): New function.
23983         (should_duplicate_loop_header_p): Discover combined onditionals;
23984         do not track iv derived; improve dumps.
23985         (pass_ch::execute): Fix whitespace.
23987 2023-07-20  Richard Biener  <rguenther@suse.de>
23989         PR tree-optimization/110204
23990         * tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_avail):
23991         Look through copies generated by PRE.
23993 2023-07-20  Matthew Malcomson  <matthew.malcomson@arm.com>
23995         * tree-vect-stmts.cc (get_group_load_store_type): Account for
23996         `gap` when checking if need to peel twice.
23998 2023-07-20  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
24000         PR middle-end/77928
24001         * doc/extend.texi: Document iseqsig builtin.
24002         * builtins.cc (fold_builtin_iseqsig): New function.
24003         (fold_builtin_2): Handle BUILT_IN_ISEQSIG.
24004         (is_inexpensive_builtin): Handle BUILT_IN_ISEQSIG.
24005         * builtins.def (BUILT_IN_ISEQSIG): New built-in.
24007 2023-07-20  Pan Li  <pan2.li@intel.com>
24009         * config/riscv/vector.md: Fix incorrect match_operand.
24011 2023-07-20  Roger Sayle  <roger@nextmovesoftware.com>
24013         * config/i386/i386-expand.cc (ix86_expand_move): Don't call
24014         force_reg, to use SUBREG rather than create a new pseudo when
24015         inserting DFmode fields into TImode with insvti_{high,low}part.
24016         * config/i386/i386.md (*concat<mode><dwi>3_3): Split into two
24017         define_insn_and_split...
24018         (*concatditi3_3): 64-bit implementation.  Provide alternative
24019         that allows register allocation to use SSE registers that is
24020         split into vec_concatv2di after reload.
24021         (*concatsidi3_3): 32-bit implementation.
24023 2023-07-20  Richard Biener  <rguenther@suse.de>
24025         PR middle-end/61747
24026         * internal-fn.cc (expand_vec_cond_optab_fn): When the
24027         value operands are equal to the original comparison operands
24028         preserve that equality by re-using the comparison expansion.
24029         * optabs.cc (emit_conditional_move): When the value operands
24030         are equal to the comparison operands and would be forced to
24031         a register by prepare_cmp_insn do so earlier, preserving the
24032         equality.
24034 2023-07-20  Pan Li  <pan2.li@intel.com>
24036         * config/riscv/vector.md: Align pattern format.
24038 2023-07-20  Haochen Jiang  <haochen.jiang@intel.com>
24040         * doc/invoke.texi: Remove AVX512VP2INTERSECT in
24041         Granite Rapids{, D} from documentation.
24043 2023-07-20  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
24045         * config/riscv/autovec.md
24046         (len_mask_gather_load<VNX16_QHSD:mode><VNX16_QHSDI:mode>):
24047         Refactor RVV machine modes.
24048         (len_mask_gather_load<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
24049         (len_mask_gather_load<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
24050         (len_mask_gather_load<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
24051         (len_mask_gather_load<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
24052         (len_mask_gather_load<mode><mode>): Ditto.
24053         (len_mask_gather_load<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
24054         (len_mask_scatter_store<VNX16_QHSD:mode><VNX16_QHSDI:mode>): Ditto.
24055         (len_mask_scatter_store<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
24056         (len_mask_scatter_store<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
24057         (len_mask_scatter_store<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
24058         (len_mask_scatter_store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
24059         (len_mask_scatter_store<mode><mode>): Ditto.
24060         (len_mask_scatter_store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
24061         * config/riscv/riscv-modes.def (VECTOR_BOOL_MODE): Ditto.
24062         (ADJUST_NUNITS): Ditto.
24063         (ADJUST_ALIGNMENT): Ditto.
24064         (ADJUST_BYTESIZE): Ditto.
24065         (ADJUST_PRECISION): Ditto.
24066         (RVV_MODES): Ditto.
24067         (RVV_WHOLE_MODES): Ditto.
24068         (RVV_FRACT_MODE): Ditto.
24069         (RVV_NF8_MODES): Ditto.
24070         (RVV_NF4_MODES): Ditto.
24071         (VECTOR_MODES_WITH_PREFIX): Ditto.
24072         (VECTOR_MODE_WITH_PREFIX): Ditto.
24073         (RVV_TUPLE_MODES): Ditto.
24074         (RVV_NF2_MODES): Ditto.
24075         (RVV_TUPLE_PARTIAL_MODES): Ditto.
24076         * config/riscv/riscv-v.cc (struct mode_vtype_group): Ditto.
24077         (ENTRY): Ditto.
24078         (TUPLE_ENTRY): Ditto.
24079         (get_vlmul): Ditto.
24080         (get_nf): Ditto.
24081         (get_ratio): Ditto.
24082         (preferred_simd_mode): Ditto.
24083         (autovectorize_vector_modes): Ditto.
24084         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TYPE): Ditto.
24085         * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE): Ditto.
24086         (vbool64_t): Ditto.
24087         (vbool32_t): Ditto.
24088         (vbool16_t): Ditto.
24089         (vbool8_t): Ditto.
24090         (vbool4_t): Ditto.
24091         (vbool2_t): Ditto.
24092         (vbool1_t): Ditto.
24093         (vint8mf8_t): Ditto.
24094         (vuint8mf8_t): Ditto.
24095         (vint8mf4_t): Ditto.
24096         (vuint8mf4_t): Ditto.
24097         (vint8mf2_t): Ditto.
24098         (vuint8mf2_t): Ditto.
24099         (vint8m1_t): Ditto.
24100         (vuint8m1_t): Ditto.
24101         (vint8m2_t): Ditto.
24102         (vuint8m2_t): Ditto.
24103         (vint8m4_t): Ditto.
24104         (vuint8m4_t): Ditto.
24105         (vint8m8_t): Ditto.
24106         (vuint8m8_t): Ditto.
24107         (vint16mf4_t): Ditto.
24108         (vuint16mf4_t): Ditto.
24109         (vint16mf2_t): Ditto.
24110         (vuint16mf2_t): Ditto.
24111         (vint16m1_t): Ditto.
24112         (vuint16m1_t): Ditto.
24113         (vint16m2_t): Ditto.
24114         (vuint16m2_t): Ditto.
24115         (vint16m4_t): Ditto.
24116         (vuint16m4_t): Ditto.
24117         (vint16m8_t): Ditto.
24118         (vuint16m8_t): Ditto.
24119         (vint32mf2_t): Ditto.
24120         (vuint32mf2_t): Ditto.
24121         (vint32m1_t): Ditto.
24122         (vuint32m1_t): Ditto.
24123         (vint32m2_t): Ditto.
24124         (vuint32m2_t): Ditto.
24125         (vint32m4_t): Ditto.
24126         (vuint32m4_t): Ditto.
24127         (vint32m8_t): Ditto.
24128         (vuint32m8_t): Ditto.
24129         (vint64m1_t): Ditto.
24130         (vuint64m1_t): Ditto.
24131         (vint64m2_t): Ditto.
24132         (vuint64m2_t): Ditto.
24133         (vint64m4_t): Ditto.
24134         (vuint64m4_t): Ditto.
24135         (vint64m8_t): Ditto.
24136         (vuint64m8_t): Ditto.
24137         (vfloat16mf4_t): Ditto.
24138         (vfloat16mf2_t): Ditto.
24139         (vfloat16m1_t): Ditto.
24140         (vfloat16m2_t): Ditto.
24141         (vfloat16m4_t): Ditto.
24142         (vfloat16m8_t): Ditto.
24143         (vfloat32mf2_t): Ditto.
24144         (vfloat32m1_t): Ditto.
24145         (vfloat32m2_t): Ditto.
24146         (vfloat32m4_t): Ditto.
24147         (vfloat32m8_t): Ditto.
24148         (vfloat64m1_t): Ditto.
24149         (vfloat64m2_t): Ditto.
24150         (vfloat64m4_t): Ditto.
24151         (vfloat64m8_t): Ditto.
24152         * config/riscv/riscv-vector-switch.def (ENTRY): Ditto.
24153         (TUPLE_ENTRY): Ditto.
24154         * config/riscv/riscv-vsetvl.cc (change_insn): Ditto.
24155         * config/riscv/riscv.cc (riscv_valid_lo_sum_p): Ditto.
24156         (riscv_v_adjust_nunits): Ditto.
24157         (riscv_v_adjust_bytesize): Ditto.
24158         (riscv_v_adjust_precision): Ditto.
24159         (riscv_convert_vector_bits): Ditto.
24160         * config/riscv/riscv.h (riscv_v_adjust_nunits): Ditto.
24161         * config/riscv/riscv.md: Ditto.
24162         * config/riscv/vector-iterators.md: Ditto.
24163         * config/riscv/vector.md
24164         (@pred_indexed_<order>store<VNX16_QHSD:mode><VNX16_QHSDI:mode>): Ditto.
24165         (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
24166         (@pred_indexed_<order>store<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
24167         (@pred_indexed_<order>store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
24168         (@pred_indexed_<order>store<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
24169         (@pred_indexed_<order>store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
24170         (@pred_indexed_<order>store<VNX128_Q:mode><VNX128_Q:mode>): Ditto.
24171         (@pred_indexed_<order>load<V1T:mode><V1I:mode>): Ditto.
24172         (@pred_indexed_<order>load<V1T:mode><VNX1_QHSDI:mode>): Ditto.
24173         (@pred_indexed_<order>load<V2T:mode><V2I:mode>): Ditto.
24174         (@pred_indexed_<order>load<V2T:mode><VNX2_QHSDI:mode>): Ditto.
24175         (@pred_indexed_<order>load<V4T:mode><V4I:mode>): Ditto.
24176         (@pred_indexed_<order>load<V4T:mode><VNX4_QHSDI:mode>): Ditto.
24177         (@pred_indexed_<order>load<V8T:mode><V8I:mode>): Ditto.
24178         (@pred_indexed_<order>load<V8T:mode><VNX8_QHSDI:mode>): Ditto.
24179         (@pred_indexed_<order>load<V16T:mode><V16I:mode>): Ditto.
24180         (@pred_indexed_<order>load<V16T:mode><VNX16_QHSI:mode>): Ditto.
24181         (@pred_indexed_<order>load<V32T:mode><V32I:mode>): Ditto.
24182         (@pred_indexed_<order>load<V32T:mode><VNX32_QHI:mode>): Ditto.
24183         (@pred_indexed_<order>load<V64T:mode><V64I:mode>): Ditto.
24184         (@pred_indexed_<order>store<V1T:mode><V1I:mode>): Ditto.
24185         (@pred_indexed_<order>store<V1T:mode><VNX1_QHSDI:mode>): Ditto.
24186         (@pred_indexed_<order>store<V2T:mode><V2I:mode>): Ditto.
24187         (@pred_indexed_<order>store<V2T:mode><VNX2_QHSDI:mode>): Ditto.
24188         (@pred_indexed_<order>store<V4T:mode><V4I:mode>): Ditto.
24189         (@pred_indexed_<order>store<V4T:mode><VNX4_QHSDI:mode>): Ditto.
24190         (@pred_indexed_<order>store<V8T:mode><V8I:mode>): Ditto.
24191         (@pred_indexed_<order>store<V8T:mode><VNX8_QHSDI:mode>): Ditto.
24192         (@pred_indexed_<order>store<V16T:mode><V16I:mode>): Ditto.
24193         (@pred_indexed_<order>store<V16T:mode><VNX16_QHSI:mode>): Ditto.
24194         (@pred_indexed_<order>store<V32T:mode><V32I:mode>): Ditto.
24195         (@pred_indexed_<order>store<V32T:mode><VNX32_QHI:mode>): Ditto.
24196         (@pred_indexed_<order>store<V64T:mode><V64I:mode>): Ditto.
24198 2023-07-19  Vladimir N. Makarov  <vmakarov@redhat.com>
24200         * lra-int.h (lra_update_fp2sp_elimination): New prototype.
24201         (lra_asm_insn_error): New prototype.
24202         * lra-spills.cc (remove_pseudos): Add check for pseudo slot memory
24203         existence.
24204         (lra_spill): Call lra_update_fp2sp_elimination.
24205         * lra-eliminations.cc: Remove trailing spaces.
24206         (elimination_fp2sp_occured_p): New static flag.
24207         (lra_eliminate_regs_1): Set the flag up.
24208         (update_reg_eliminate): Modify the assert for stack to frame
24209         pointer elimination.
24210         (lra_update_fp2sp_elimination): New function.
24211         (lra_eliminate): Clear flag elimination_fp2sp_occured_p.
24213 2023-07-19  Andrew Carlotti  <andrew.carlotti@arm.com>
24215         * config/aarch64/aarch64.h (TARGET_MEMTAG): Remove armv8.5
24216         dependency.
24217         * config/aarch64/arm_acle.h: Remove unnecessary armv8.x
24218         dependencies from target pragmas.
24219         * config/aarch64/arm_fp16.h (target): Likewise.
24220         * config/aarch64/arm_neon.h (target): Likewise.
24222 2023-07-19  Andrew Pinski  <apinski@marvell.com>
24224         PR tree-optimization/110252
24225         * tree-ssa-phiopt.cc (class auto_flow_sensitive): New class.
24226         (auto_flow_sensitive::auto_flow_sensitive): New constructor.
24227         (auto_flow_sensitive::~auto_flow_sensitive): New deconstructor.
24228         (match_simplify_replacement): Temporarily
24229         remove the flow sensitive info on the two statements that might
24230         be moved.
24232 2023-07-19  Andrew Pinski  <apinski@marvell.com>
24234         * gimple-fold.cc (fosa_unwind): Replace `vrange_storage *`
24235         with flow_sensitive_info_storage.
24236         (follow_outer_ssa_edges): Update how to save off the flow
24237         sensitive info.
24238         (maybe_fold_comparisons_from_match_pd): Update restoring
24239         of flow sensitive info.
24240         * tree-ssanames.cc (flow_sensitive_info_storage::save): New method.
24241         (flow_sensitive_info_storage::restore): New method.
24242         (flow_sensitive_info_storage::save_and_clear): New method.
24243         (flow_sensitive_info_storage::clear_storage): New method.
24244         * tree-ssanames.h (class flow_sensitive_info_storage): New class.
24246 2023-07-19  Andrew Pinski  <apinski@marvell.com>
24248         PR tree-optimization/110726
24249         * match.pd ((a|b)&(a==b),a|(a==b),(a&b)|(a==b)):
24250         Add checks to make sure the type was one bit precision
24251         intergal type.
24253 2023-07-19  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24255         * doc/md.texi: Add mask_len_fold_left_plus.
24256         * internal-fn.cc (mask_len_fold_left_direct): Ditto.
24257         (expand_mask_len_fold_left_optab_fn): Ditto.
24258         (direct_mask_len_fold_left_optab_supported_p): Ditto.
24259         * internal-fn.def (MASK_LEN_FOLD_LEFT_PLUS): Ditto.
24260         * optabs.def (OPTAB_D): Ditto.
24262 2023-07-19  Jakub Jelinek  <jakub@redhat.com>
24264         * tree-switch-conversion.h (class bit_test_cluster): Fix comment typo.
24266 2023-07-19  Jakub Jelinek  <jakub@redhat.com>
24268         PR tree-optimization/110731
24269         * wide-int.cc (wi::divmod_internal): Always unpack dividend and
24270         divisor as UNSIGNED regardless of sgn.
24272 2023-07-19  Lehua Ding  <lehua.ding@rivai.ai>
24274         * common/config/riscv/riscv-common.cc (riscv_supported_std_ext): Init.
24275         (standard_extensions_p): Add check.
24276         (riscv_subset_list::add): Just return NULL if it failed before.
24277         (riscv_subset_list::parse_std_ext): Continue parse when find a error
24278         (riscv_subset_list::parse): Just return NULL if it failed before.
24279         * config/riscv/riscv-subset.h (class riscv_subset_list): Add field.
24281 2023-07-19  Jan Beulich  <jbeulich@suse.com>
24283         * config/i386/i386-expand.cc (ix86_expand_vector_init_duplicate):
24284         Use gen_vec_set_0.
24285         (ix86_expand_vector_extract): Use gen_vec_extract_lo /
24286         gen_vec_extract_hi.
24287         (expand_vec_perm_broadcast_1): Use gen_vec_interleave_high /
24288         gen_vec_interleave_low. Rename local variable.
24290 2023-07-19  Jan Beulich  <jbeulich@suse.com>
24292         * config/i386/sse.md (vec_dupv2df<mask_name>): Add new AVX512F
24293         alternative. Move AVX512VL part of condition to new "enabled"
24294         attribute.
24296 2023-07-19  liuhongt  <hongtao.liu@intel.com>
24298         PR target/109504
24299         * config/i386/i386-builtins.cc
24300         (ix86_register_float16_builtin_type): Remove TARGET_SSE2.
24301         (ix86_register_bf16_builtin_type): Ditto.
24302         * config/i386/i386-c.cc (ix86_target_macros): When TARGET_SSE2
24303         isn't available, undef the macros which are used to check the
24304         backend support of the _Float16/__bf16 types when building
24305         libstdc++ and libgcc.
24306         * config/i386/i386.cc (construct_container): Issue errors for
24307         HFmode/BFmode when TARGET_SSE2 is not available.
24308         (function_value_32): Ditto.
24309         (ix86_scalar_mode_supported_p): Remove TARGET_SSE2 for HFmode/BFmode.
24310         (ix86_libgcc_floating_mode_supported_p): Ditto.
24311         (ix86_emit_support_tinfos): Adjust codes.
24312         (ix86_invalid_conversion): Return diagnostic message string
24313         when there's conversion from/to BF/HFmode w/o TARGET_SSE2.
24314         (ix86_invalid_unary_op): New function.
24315         (ix86_invalid_binary_op): Ditto.
24316         (TARGET_INVALID_UNARY_OP): Define.
24317         (TARGET_INVALID_BINARY_OP): Define.
24318         * config/i386/immintrin.h [__SSE2__]: Remove for fp16/bf16
24319         related instrinsics header files.
24320         * config/i386/i386.h (VALID_SSE2_TYPE_MODE): New macro.
24322 2023-07-18  Uros Bizjak  <ubizjak@gmail.com>
24324         * dwarf2asm.cc: Change FALSE to false.
24325         * dwarf2cfi.cc (execute_dwarf2_frame): Change return type to void.
24326         * dwarf2out.cc (matches_main_base): Change return type from
24327         int to bool.  Change "last_match" variable to bool.
24328         (dump_struct_debug): Change return type from int to bool.
24329         Change "matches" and "result" function arguments to bool.
24330         (is_pseudo_reg): Change return type from int to bool.
24331         (is_tagged_type): Ditto.
24332         (same_loc_p): Ditto.
24333         (same_dw_val_p): Change return type from int to bool and adjust
24334         function body accordingly.
24335         (same_attr_p): Ditto.
24336         (same_die_p): Ditto.
24337         (is_type_die): Ditto.
24338         (is_declaration_die): Ditto.
24339         (should_move_die_to_comdat): Ditto.
24340         (is_base_type): Ditto.
24341         (is_based_loc): Ditto.
24342         (local_scope_p): Ditto.
24343         (class_scope_p): Ditto.
24344         (class_or_namespace_scope_p): Ditto.
24345         (is_tagged_type): Ditto.
24346         (is_rust): Use void argument.
24347         (is_nested_in_subprogram): Change return type from int to bool.
24348         (contains_subprogram_definition): Ditto.
24349         (gen_struct_or_union_type_die): Change "nested", "complete"
24350         and "ns_decl" variables to bool.
24351         (is_naming_typedef_decl): Change FALSE to false.
24353 2023-07-18  Jan Hubicka  <jh@suse.cz>
24355         * tree-ssa-loop-ch.cc (edge_range_query): Take loop argument; be ready
24356         for queries not in headers.
24357         (static_loop_exit): Add basic blck parameter; update use of
24358         edge_range_query
24359         (should_duplicate_loop_header_p): Add ranger and static_exits
24360         parameter.  Do not account statements that will be optimized
24361         out after duplicaiton in overall size. Add ranger query to
24362         find static exits.
24363         (update_profile_after_ch):  Take static_exits has set instead of
24364         single eliminated_edge.
24365         (ch_base::copy_headers): Do all analysis in the first pass;
24366         remember invariant_exits and static_exits.
24368 2023-07-18  Jason Merrill  <jason@redhat.com>
24370         * fold-const.cc (native_interpret_aggregate): Skip empty fields.
24372 2023-07-18  Gaius Mulley  <gaiusmod2@gmail.com>
24374         * doc/gm2.texi (Semantic checking): Change example testwithptr
24375         to testnew6.
24377 2023-07-18  Richard Biener  <rguenther@suse.de>
24379         PR middle-end/105715
24380         * gimple-isel.cc (gimple_expand_vec_exprs): Merge into...
24381         (pass_gimple_isel::execute): ... this.  Duplicate
24382         comparison defs of COND_EXPRs.
24384 2023-07-18  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
24386         * config/riscv/riscv-selftests.cc (run_poly_int_selftests): Add more selftests.
24387         * config/riscv/riscv.cc (riscv_legitimize_poly_move): Dynamic adjust size of VLA vectors.
24388         (riscv_convert_vector_bits): Ditto.
24390 2023-07-18  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
24392         * config/riscv/autovec.md (vec_shl_insert_<mode>): New patterns.
24393         * config/riscv/riscv-v.cc (shuffle_compress_patterns): Fix bugs.
24395 2023-07-18  Juergen Christ  <jchrist@linux.ibm.com>
24397         * config/s390/vx-builtins.md: New vsel pattern.
24399 2023-07-18  liuhongt  <hongtao.liu@intel.com>
24401         PR target/110438
24402         * config/i386/sse.md (<mask_codefor>one_cmpl<mode>2<mask_name>):
24403         Remove # from assemble output.
24405 2023-07-18  liuhongt  <hongtao.liu@intel.com>
24407         PR target/110591
24408         * config/i386/sync.md (cmpccxadd_<mode>): Adjust the pattern
24409         to explicitly set FLAGS_REG like *cmp<mode>_1, also add extra
24410         3 define_peephole2 after the pattern.
24412 2023-07-18  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24414         * rtl-ssa/internals.inl: Fix when mode1 and mode2 are not ordred.
24416 2023-07-18  Pan Li  <pan2.li@intel.com>
24417             Juzhe-Zhong  <juzhe.zhong@rivai.ai>
24419         * config/riscv/riscv.cc (struct machine_function): Add new field.
24420         (riscv_static_frm_mode_p): New function.
24421         (riscv_emit_frm_mode_set): New function for emit FRM.
24422         (riscv_emit_mode_set): Extract function for FRM.
24423         (riscv_mode_needed): Fix the TODO.
24424         (riscv_mode_entry): Initial dynamic frm RTL.
24425         (riscv_mode_exit): Return DYN_EXIT.
24426         * config/riscv/riscv.md: Add rdfrm.
24427         * config/riscv/vector-iterators.md (unspecv): Add DYN_EXIT unspecv.
24428         * config/riscv/vector.md (frm_modee): Add new mode dyn_exit.
24429         (fsrm): Removed.
24430         (fsrmsi_backup): New pattern for swap.
24431         (fsrmsi_restore): New pattern for restore.
24432         (fsrmsi_restore_exit): New pattern for restore exit.
24433         (frrmsi): New pattern for backup.
24435 2023-07-17  Arsen Arsenović  <arsen@aarsen.me>
24437         * doc/extend.texi: Add @cindex on __auto_type.
24439 2023-07-17  Uros Bizjak  <ubizjak@gmail.com>
24441         * combine-stack-adj.cc (stack_memref_p): Change return type from
24442         int to bool and adjust function body accordingly.
24443         (rest_of_handle_stack_adjustments): Change return type to void.
24445 2023-07-17  Uros Bizjak  <ubizjak@gmail.com>
24447         * combine.cc (struct reg_stat_type): Change last_set_invalid to bool.
24448         (cant_combine_insn_p): Change return type from int to bool and adjust
24449         function body accordingly.
24450         (can_combine_p): Ditto.
24451         (combinable_i3pat): Ditto.  Change "i1_not_in_src" and "i0_not_in_src"
24452         function arguments from int to bool.
24453         (contains_muldiv): Change return type from int to bool and adjust
24454         function body accordingly.
24455         (try_combine): Ditto. Change "new_direct_jump" pointer function
24456         argument from int to bool.  Change "substed_i2", "substed_i1",
24457         "substed_i0", "added_sets_0", "added_sets_1", "added_sets_2",
24458         "i2dest_in_i2src", "i1dest_in_i1src", "i2dest_in_i1src",
24459         "i0dest_in_i0src", "i1dest_in_i0src", "i2dest_in_i0src",
24460         "i2dest_killed", "i1dest_killed", "i0dest_killed", "i1_feeds_i2_n",
24461         "i0_feeds_i2_n", "i0_feeds_i1_n", "i3_subst_into_i2", "have_mult",
24462         "swap_i2i3", "split_i2i3" and "changed_i3_dest" variables
24463         from int to bool.
24464         (subst): Change "in_dest", "in_cond" and "unique_copy" function
24465         arguments from int to bool.
24466         (combine_simplify_rtx): Change "in_dest" and "in_cond" function
24467         arguments from int to bool.
24468         (make_extraction): Change "unsignedp", "in_dest" and "in_compare"
24469         function argument from int to bool.
24470         (force_int_to_mode): Change "just_select" function argument
24471         from int to bool.  Change "next_select" variable to bool.
24472         (rtx_equal_for_field_assignment_p): Change return type from
24473         int to bool and adjust function body accordingly.
24474         (merge_outer_ops): Ditto.  Change "pcomp_p" pointer function
24475         argument from int to bool.
24476         (get_last_value_validate): Change return type from int to bool
24477         and adjust function body accordingly.
24478         (reg_dead_at_p): Ditto.
24479         (reg_bitfield_target_p): Ditto.
24480         (combine_instructions): Ditto.  Change "new_direct_jump"
24481         variable to bool.
24482         (can_combine_p): Change return type from int to bool
24483         and adjust function body accordingly.
24484         (likely_spilled_retval_p): Ditto.
24485         (can_change_dest_mode): Change "added_sets" function argument
24486         from int to bool.
24487         (find_split_point): Change "unsignedp" variable to bool.
24488         (simplify_if_then_else): Change "comparison_p" and "swapped"
24489         variables to bool.
24490         (simplify_set): Change "other_changed" variable to bool.
24491         (expand_compound_operation): Change "unsignedp" variable to bool.
24492         (force_to_mode): Change "just_select" function argument
24493         from int to bool.  Change "next_select" variable to bool.
24494         (extended_count): Change "unsignedp" function argument to bool.
24495         (simplify_shift_const_1): Change "complement_p" variable to bool.
24496         (simplify_comparison): Change "changed" variable to bool.
24497         (rest_of_handle_combine): Change return type to void.
24499 2023-07-17  Andre Vieira  <andre.simoesdiasvieira@arm.com>
24501         PR plugins/110610
24502         * Makefile.in (INTERNAL_FN_H): Add insn-opinit.h.
24504 2023-07-17  Senthil Kumar Selvaraj  <saaadhu@gcc.gnu.org>
24506         * ira.cc (setup_reg_class_relations): Continue
24507         if regclass cl3 is hard_reg_set_empty_p.
24509 2023-07-17  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
24511         * config/riscv/riscv.cc (riscv_option_override): Add sorry check.
24513 2023-07-17  Martin Jambor  <mjambor@suse.cz>
24515         * tree-ssa-loop-ivcanon.cc (try_peel_loop): Remove unused variable
24516         entry_count.
24518 2023-07-17  Aldy Hernandez  <aldyh@redhat.com>
24520         * tree-ssa-ccp.cc (ccp_finalize): Export value/mask known bits.
24522 2023-07-17  Lehua Ding  <lehua.ding@rivai.ai>
24524         PR target/110696
24525         * common/config/riscv/riscv-common.cc (riscv_subset_list::handle_implied_ext):
24526         recur add all implied extensions.
24527         (riscv_subset_list::check_implied_ext): Add new method.
24528         (riscv_subset_list::parse): Call checker check_implied_ext.
24529         * config/riscv/riscv-subset.h: Add new method.
24531 2023-07-17  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
24533         * config/riscv/autovec.md (reduc_plus_scal_<mode>): New pattern.
24534         (reduc_smax_scal_<mode>): Ditto.
24535         (reduc_umax_scal_<mode>): Ditto.
24536         (reduc_smin_scal_<mode>): Ditto.
24537         (reduc_umin_scal_<mode>): Ditto.
24538         (reduc_and_scal_<mode>): Ditto.
24539         (reduc_ior_scal_<mode>): Ditto.
24540         (reduc_xor_scal_<mode>): Ditto.
24541         * config/riscv/riscv-protos.h (enum insn_type): Add reduction.
24542         (expand_reduction): New function.
24543         * config/riscv/riscv-v.cc (emit_vlmax_reduction_insn): Ditto.
24544         (emit_vlmax_fp_reduction_insn): Ditto.
24545         (get_m1_mode): Ditto.
24546         (expand_cond_len_binop): Fix name.
24547         (expand_reduction): New function
24548         * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): Fix VSETVL BUG.
24549         (validate_change_or_fail): New function.
24550         (change_insn): Fix VSETVL BUG.
24551         (change_vsetvl_insn): Ditto.
24552         (pass_vsetvl::backward_demand_fusion): Ditto.
24553         (pass_vsetvl::df_post_optimization): Ditto.
24555 2023-07-17  Aldy Hernandez  <aldyh@redhat.com>
24557         * ipa-prop.cc (ipcp_update_bits): Export value/mask known bits.
24559 2023-07-17  Christoph Müllner  <christoph.muellner@vrull.eu>
24561         * config/riscv/riscv.cc (riscv_regno_ok_for_index_p):
24562         Remove parameter name from declaration of unused parameter.
24564 2023-07-17  Kewen Lin  <linkw@linux.ibm.com>
24566         PR tree-optimization/110652
24567         * tree-vect-stmts.cc (vectorizable_load): Initialize new_temp as
24568         NULL_TREE.
24570 2023-07-17  Richard Biener  <rguenther@suse.de>
24572         PR tree-optimization/110669
24573         * tree-scalar-evolution.cc (analyze_and_compute_bitop_with_inv_effect):
24574         Check we matched a header PHI.
24576 2023-07-17  Aldy Hernandez  <aldyh@redhat.com>
24578         * tree-ssanames.cc (set_bitmask): New.
24579         * tree-ssanames.h (set_bitmask): New.
24581 2023-07-17  Aldy Hernandez  <aldyh@redhat.com>
24583         * value-range.cc (irange_bitmask::verify_mask): Mask need not be
24584         normalized.
24585         * value-range.h (irange_bitmask::union_): Normalize beforehand.
24586         (irange_bitmask::intersect): Same.
24588 2023-07-17  Andrew Pinski  <apinski@marvell.com>
24590         PR tree-optimization/95923
24591         * match.pd ((a|b)&(a==b),a|(a==b),(a&b)|(a==b)): New transformation.
24593 2023-07-17  Roger Sayle  <roger@nextmovesoftware.com>
24595         * tree-if-conv.cc (predicate_scalar_phi): Make the arguments
24596         to the std::sort comparison lambda function const.
24598 2023-07-17  Andrew Pinski  <apinski@marvell.com>
24600         PR tree-optimization/110666
24601         * match.pd (A NEEQ (A NEEQ CST)): Fix Outer EQ case.
24603 2023-07-17  Mo, Zewei  <zewei.mo@intel.com>
24605         * common/config/i386/cpuinfo.h (get_intel_cpu): Handle Lunar Lake,
24606         Arrow Lake and Arrow Lake S.
24607         * common/config/i386/i386-common.cc:
24608         (processor_name): Add arrowlake.
24609         (processor_alias_table): Add arrow lake, arrow lake s and lunar
24610         lake.
24611         * common/config/i386/i386-cpuinfo.h (enum processor_subtypes):
24612         Add INTEL_COREI7_ARROWLAKE and INTEL_COREI7_ARROWLAKE_S.
24613         * config.gcc: Add -march=arrowlake and -march=arrowlake-s.
24614         * config/i386/driver-i386.cc (host_detect_local_cpu): Handle
24615         arrowlake-s.
24616         * config/i386/i386-c.cc (ix86_target_macros_internal): Add
24617         arrowlake.
24618         * config/i386/i386-options.cc (m_ARROWLAKE): New.
24619         (processor_cost_table): Add arrowlake.
24620         * config/i386/i386.h (enum processor_type):
24621         Add PROCESSOR_ARROWLAKE.
24622         * config/i386/x86-tune.def: Add m_ARROWLAKE.
24623         * doc/extend.texi: Add arrowlake and arrowlake-s.
24624         * doc/invoke.texi: Ditto.
24626 2023-07-17  Haochen Jiang  <haochen.jiang@intel.com>
24628         * config/i386/sse.md (VI2_AVX2): Delete V32HI since we actually
24629         have the same iterator. Also renaming all the occurence to
24630         VI2_AVX2_AVX512BW.
24631         (usdot_prod<mode>): New define_expand.
24632         (udot_prod<mode>): Ditto.
24634 2023-07-17  Haochen Jiang  <haochen.jiang@intel.com>
24636         * common/config/i386/cpuinfo.h (get_available_features):
24637         Detech SM4.
24638         * common/config/i386/i386-common.cc (OPTION_MASK_ISA2_SM4_SET,
24639         OPTION_MASK_ISA2_SM4_UNSET): New.
24640         (OPTION_MASK_ISA2_AVX_UNSET): Add SM4.
24641         (ix86_handle_option): Handle -msm4.
24642         * common/config/i386/i386-cpuinfo.h (enum processor_features):
24643         Add FEATURE_SM4.
24644         * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
24645         sm4.
24646         * config.gcc: Add sm4intrin.h.
24647         * config/i386/cpuid.h (bit_SM4): New.
24648         * config/i386/i386-builtin.def (BDESC): Add new builtins.
24649         * config/i386/i386-c.cc (ix86_target_macros_internal): Define
24650         __SM4__.
24651         * config/i386/i386-isa.def (SM4): Add DEF_PTA(SM4).
24652         * config/i386/i386-options.cc (isa2_opts): Add -msm4.
24653         (ix86_valid_target_attribute_inner_p): Handle sm4.
24654         * config/i386/i386.opt: Add option -msm4.
24655         * config/i386/immintrin.h: Include sm4intrin.h
24656         * config/i386/sse.md (vsm4key4_<mode>): New define insn.
24657         (vsm4rnds4_<mode>): Ditto.
24658         * doc/extend.texi: Document sm4.
24659         * doc/invoke.texi: Document -msm4.
24660         * doc/sourcebuild.texi: Document target sm4.
24661         * config/i386/sm4intrin.h: New file.
24663 2023-07-17  Haochen Jiang  <haochen.jiang@intel.com>
24665         * common/config/i386/cpuinfo.h (get_available_features):
24666         Detect SHA512.
24667         * common/config/i386/i386-common.cc (OPTION_MASK_ISA2_SHA512_SET,
24668         OPTION_MASK_ISA2_SHA512_UNSET): New.
24669         (OPTION_MASK_ISA2_AVX_UNSET): Add SHA512.
24670         (ix86_handle_option): Handle -msha512.
24671         * common/config/i386/i386-cpuinfo.h (enum processor_features):
24672         Add FEATURE_SHA512.
24673         * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
24674         sha512.
24675         * config.gcc: Add sha512intrin.h.
24676         * config/i386/cpuid.h (bit_SHA512): New.
24677         * config/i386/i386-builtin-types.def:
24678         Add DEF_FUNCTION_TYPE (V4DI, V4DI, V4DI, V2DI).
24679         * config/i386/i386-builtin.def (BDESC): Add new builtins.
24680         * config/i386/i386-c.cc (ix86_target_macros_internal): Define
24681         __SHA512__.
24682         * config/i386/i386-expand.cc (ix86_expand_args_builtin): Handle
24683         V4DI_FTYPE_V4DI_V4DI_V2DI and V4DI_FTYPE_V4DI_V2DI.
24684         * config/i386/i386-isa.def (SHA512): Add DEF_PTA(SHA512).
24685         * config/i386/i386-options.cc (isa2_opts): Add -msha512.
24686         (ix86_valid_target_attribute_inner_p): Handle sha512.
24687         * config/i386/i386.opt: Add option -msha512.
24688         * config/i386/immintrin.h: Include sha512intrin.h.
24689         * config/i386/sse.md (vsha512msg1): New define insn.
24690         (vsha512msg2): Ditto.
24691         (vsha512rnds2): Ditto.
24692         * doc/extend.texi: Document sha512.
24693         * doc/invoke.texi: Document -msha512.
24694         * doc/sourcebuild.texi: Document target sha512.
24695         * config/i386/sha512intrin.h: New file.
24697 2023-07-17  Haochen Jiang  <haochen.jiang@intel.com>
24699         * common/config/i386/cpuinfo.h (get_available_features):
24700         Detect SM3.
24701         * common/config/i386/i386-common.cc (OPTION_MASK_ISA2_SM3_SET,
24702         OPTION_MASK_ISA2_SM3_UNSET): New.
24703         (OPTION_MASK_ISA2_AVX_UNSET): Add SM3.
24704         (ix86_handle_option): Handle -msm3.
24705         * common/config/i386/i386-cpuinfo.h (enum processor_features):
24706         Add FEATURE_SM3.
24707         * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
24708         SM3.
24709         * config.gcc: Add sm3intrin.h
24710         * config/i386/cpuid.h (bit_SM3): New.
24711         * config/i386/i386-builtin-types.def:
24712         Add DEF_FUNCTION_TYPE (V4SI, V4SI, V4SI, V4SI, INT).
24713         * config/i386/i386-builtin.def (BDESC): Add new builtins.
24714         * config/i386/i386-c.cc (ix86_target_macros_internal): Define
24715         __SM3__.
24716         * config/i386/i386-expand.cc (ix86_expand_args_builtin): Handle
24717         V4SI_FTYPE_V4SI_V4SI_V4SI_INT.
24718         * config/i386/i386-isa.def (SM3): Add DEF_PTA(SM3).
24719         * config/i386/i386-options.cc (isa2_opts): Add -msm3.
24720         (ix86_valid_target_attribute_inner_p): Handle sm3.
24721         * config/i386/i386.opt: Add option -msm3.
24722         * config/i386/immintrin.h: Include sm3intrin.h.
24723         * config/i386/sse.md (vsm3msg1): New define insn.
24724         (vsm3msg2): Ditto.
24725         (vsm3rnds2): Ditto.
24726         * doc/extend.texi: Document sm3.
24727         * doc/invoke.texi: Document -msm3.
24728         * doc/sourcebuild.texi: Document target sm3.
24729         * config/i386/sm3intrin.h: New file.
24731 2023-07-17  Kong Lingling  <lingling.kong@intel.com>
24732             Haochen Jiang  <haochen.jiang@intel.com>
24734         * common/config/i386/cpuinfo.h (get_available_features): Detect
24735         avxvnniint16.
24736         * common/config/i386/i386-common.cc
24737         (OPTION_MASK_ISA2_AVXVNNIINT16_SET): New.
24738         (OPTION_MASK_ISA2_AVXVNNIINT16_UNSET): Ditto.
24739         (ix86_handle_option): Handle -mavxvnniint16.
24740         * common/config/i386/i386-cpuinfo.h (enum processor_features):
24741         Add FEATURE_AVXVNNIINT16.
24742         * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
24743         avxvnniint16.
24744         * config.gcc: Add avxvnniint16.h.
24745         * config/i386/avxvnniint16intrin.h: New file.
24746         * config/i386/cpuid.h (bit_AVXVNNIINT16): New.
24747         * config/i386/i386-builtin.def: Add new builtins.
24748         * config/i386/i386-c.cc (ix86_target_macros_internal): Define
24749         __AVXVNNIINT16__.
24750         * config/i386/i386-options.cc (isa2_opts): Add -mavxvnniint16.
24751         (ix86_valid_target_attribute_inner_p): Handle avxvnniint16intrin.h.
24752         * config/i386/i386-isa.def: Add DEF_PTA(AVXVNNIINT16).
24753         * config/i386/i386.opt: Add option -mavxvnniint16.
24754         * config/i386/immintrin.h: Include avxvnniint16.h.
24755         * config/i386/sse.md
24756         (vpdp<vpdpwprodtype>_<mode>): New define_insn.
24757         * doc/extend.texi: Document avxvnniint16.
24758         * doc/invoke.texi: Document -mavxvnniint16.
24759         * doc/sourcebuild.texi: Document target avxvnniint16.
24761 2023-07-16  Jan Hubicka  <jh@suse.cz>
24763         PR middle-end/110649
24764         * tree-vect-loop.cc (scale_profile_for_vect_loop): Rewrite.
24765         (vect_transform_loop): Move scale_profile_for_vect_loop after
24766         upper bound updates.
24768 2023-07-16  Jan Hubicka  <jh@suse.cz>
24770         PR tree-optimization/110649
24771         * tree-vect-loop.cc (optimize_mask_stores): Set correctly
24772         probability of the if-then-else construct.
24774 2023-07-16  Jan Hubicka  <jh@suse.cz>
24776         PR middle-end/110649
24777         * tree-ssa-loop-ivcanon.cc (try_peel_loop): Avoid double profile update.
24779 2023-07-15  Andrew Pinski  <apinski@marvell.com>
24781         * doc/contrib.texi: Update my entry.
24783 2023-07-15  John David Anglin  <danglin@gcc.gnu.org>
24785         * config/pa/pa.md: Define constants R1_REGNUM, R19_REGNUM and
24786         R27_REGNUM.
24787         (tgd_load): Restrict to !TARGET_64BIT. Use register constants.
24788         (tld_load): Likewise.
24789         (tgd_load_pic): Change to expander.
24790         (tld_load_pic, tld_offset_load, tp_load): Likewise.
24791         (tie_load_pic, tle_load): Likewise.
24792         (tgd_load_picsi, tgd_load_picdi): New.
24793         (tld_load_picsi, tld_load_picdi): New.
24794         (tld_offset_load<P:mode>): New.
24795         (tp_load<P:mode>): New.
24796         (tie_load_picsi, tie_load_picdi): New.
24797         (tle_load<P:mode>): New.
24799 2023-07-14  Christophe Lyon  <christophe.lyon@linaro.org>
24801         * config/arm/arm-mve-builtins-base.cc (vcmlaq, vcmlaq_rot90)
24802         (vcmlaq_rot180, vcmlaq_rot270): New.
24803         * config/arm/arm-mve-builtins-base.def (vcmlaq, vcmlaq_rot90)
24804         (vcmlaq_rot180, vcmlaq_rot270): New.
24805         * config/arm/arm-mve-builtins-base.h: (vcmlaq, vcmlaq_rot90)
24806         (vcmlaq_rot180, vcmlaq_rot270): New.
24807         * config/arm/arm-mve-builtins.cc
24808         (function_instance::has_inactive_argument): Handle vcmlaq,
24809         vcmlaq_rot90, vcmlaq_rot180, vcmlaq_rot270.
24810         * config/arm/arm_mve.h (vcmlaq): Delete.
24811         (vcmlaq_rot180): Delete.
24812         (vcmlaq_rot270): Delete.
24813         (vcmlaq_rot90): Delete.
24814         (vcmlaq_m): Delete.
24815         (vcmlaq_rot180_m): Delete.
24816         (vcmlaq_rot270_m): Delete.
24817         (vcmlaq_rot90_m): Delete.
24818         (vcmlaq_f16): Delete.
24819         (vcmlaq_rot180_f16): Delete.
24820         (vcmlaq_rot270_f16): Delete.
24821         (vcmlaq_rot90_f16): Delete.
24822         (vcmlaq_f32): Delete.
24823         (vcmlaq_rot180_f32): Delete.
24824         (vcmlaq_rot270_f32): Delete.
24825         (vcmlaq_rot90_f32): Delete.
24826         (vcmlaq_m_f32): Delete.
24827         (vcmlaq_m_f16): Delete.
24828         (vcmlaq_rot180_m_f32): Delete.
24829         (vcmlaq_rot180_m_f16): Delete.
24830         (vcmlaq_rot270_m_f32): Delete.
24831         (vcmlaq_rot270_m_f16): Delete.
24832         (vcmlaq_rot90_m_f32): Delete.
24833         (vcmlaq_rot90_m_f16): Delete.
24834         (__arm_vcmlaq_f16): Delete.
24835         (__arm_vcmlaq_rot180_f16): Delete.
24836         (__arm_vcmlaq_rot270_f16): Delete.
24837         (__arm_vcmlaq_rot90_f16): Delete.
24838         (__arm_vcmlaq_f32): Delete.
24839         (__arm_vcmlaq_rot180_f32): Delete.
24840         (__arm_vcmlaq_rot270_f32): Delete.
24841         (__arm_vcmlaq_rot90_f32): Delete.
24842         (__arm_vcmlaq_m_f32): Delete.
24843         (__arm_vcmlaq_m_f16): Delete.
24844         (__arm_vcmlaq_rot180_m_f32): Delete.
24845         (__arm_vcmlaq_rot180_m_f16): Delete.
24846         (__arm_vcmlaq_rot270_m_f32): Delete.
24847         (__arm_vcmlaq_rot270_m_f16): Delete.
24848         (__arm_vcmlaq_rot90_m_f32): Delete.
24849         (__arm_vcmlaq_rot90_m_f16): Delete.
24850         (__arm_vcmlaq): Delete.
24851         (__arm_vcmlaq_rot180): Delete.
24852         (__arm_vcmlaq_rot270): Delete.
24853         (__arm_vcmlaq_rot90): Delete.
24854         (__arm_vcmlaq_m): Delete.
24855         (__arm_vcmlaq_rot180_m): Delete.
24856         (__arm_vcmlaq_rot270_m): Delete.
24857         (__arm_vcmlaq_rot90_m): Delete.
24859 2023-07-14  Christophe Lyon  <christophe.lyon@linaro.org>
24861         * config/arm/arm_mve_builtins.def (vcmlaq_rot90_f)
24862         (vcmlaq_rot270_f, vcmlaq_rot180_f, vcmlaq_f): Add "_f" suffix.
24863         * config/arm/iterators.md (MVE_VCMLAQ_M): New.
24864         (mve_insn): Add vcmla.
24865         (rot): Add VCMLAQ_M_F, VCMLAQ_ROT90_M_F, VCMLAQ_ROT180_M_F,
24866         VCMLAQ_ROT270_M_F.
24867         (mve_rot): Add VCMLAQ_M_F, VCMLAQ_ROT90_M_F, VCMLAQ_ROT180_M_F,
24868         VCMLAQ_ROT270_M_F.
24869         * config/arm/mve.md (mve_vcmlaq<mve_rot><mode>): Rename into ...
24870         (@mve_<mve_insn>q<mve_rot>_f<mode>): ... this.
24871         (mve_vcmlaq_m_f<mode>, mve_vcmlaq_rot180_m_f<mode>)
24872         (mve_vcmlaq_rot270_m_f<mode>, mve_vcmlaq_rot90_m_f<mode>): Merge
24873         into ...
24874         (@mve_<mve_insn>q<mve_rot>_m_f<mode>): ... this.
24876 2023-07-14  Christophe Lyon  <christophe.lyon@linaro.org>
24878         * config/arm/arm-mve-builtins-base.cc (vcmulq, vcmulq_rot90)
24879         (vcmulq_rot180, vcmulq_rot270): New.
24880         * config/arm/arm-mve-builtins-base.def (vcmulq, vcmulq_rot90)
24881         (vcmulq_rot180, vcmulq_rot270): New.
24882         * config/arm/arm-mve-builtins-base.h: (vcmulq, vcmulq_rot90)
24883         (vcmulq_rot180, vcmulq_rot270): New.
24884         * config/arm/arm_mve.h (vcmulq_rot90): Delete.
24885         (vcmulq_rot270): Delete.
24886         (vcmulq_rot180): Delete.
24887         (vcmulq): Delete.
24888         (vcmulq_m): Delete.
24889         (vcmulq_rot180_m): Delete.
24890         (vcmulq_rot270_m): Delete.
24891         (vcmulq_rot90_m): Delete.
24892         (vcmulq_x): Delete.
24893         (vcmulq_rot90_x): Delete.
24894         (vcmulq_rot180_x): Delete.
24895         (vcmulq_rot270_x): Delete.
24896         (vcmulq_rot90_f16): Delete.
24897         (vcmulq_rot270_f16): Delete.
24898         (vcmulq_rot180_f16): Delete.
24899         (vcmulq_f16): Delete.
24900         (vcmulq_rot90_f32): Delete.
24901         (vcmulq_rot270_f32): Delete.
24902         (vcmulq_rot180_f32): Delete.
24903         (vcmulq_f32): Delete.
24904         (vcmulq_m_f32): Delete.
24905         (vcmulq_m_f16): Delete.
24906         (vcmulq_rot180_m_f32): Delete.
24907         (vcmulq_rot180_m_f16): Delete.
24908         (vcmulq_rot270_m_f32): Delete.
24909         (vcmulq_rot270_m_f16): Delete.
24910         (vcmulq_rot90_m_f32): Delete.
24911         (vcmulq_rot90_m_f16): Delete.
24912         (vcmulq_x_f16): Delete.
24913         (vcmulq_x_f32): Delete.
24914         (vcmulq_rot90_x_f16): Delete.
24915         (vcmulq_rot90_x_f32): Delete.
24916         (vcmulq_rot180_x_f16): Delete.
24917         (vcmulq_rot180_x_f32): Delete.
24918         (vcmulq_rot270_x_f16): Delete.
24919         (vcmulq_rot270_x_f32): Delete.
24920         (__arm_vcmulq_rot90_f16): Delete.
24921         (__arm_vcmulq_rot270_f16): Delete.
24922         (__arm_vcmulq_rot180_f16): Delete.
24923         (__arm_vcmulq_f16): Delete.
24924         (__arm_vcmulq_rot90_f32): Delete.
24925         (__arm_vcmulq_rot270_f32): Delete.
24926         (__arm_vcmulq_rot180_f32): Delete.
24927         (__arm_vcmulq_f32): Delete.
24928         (__arm_vcmulq_m_f32): Delete.
24929         (__arm_vcmulq_m_f16): Delete.
24930         (__arm_vcmulq_rot180_m_f32): Delete.
24931         (__arm_vcmulq_rot180_m_f16): Delete.
24932         (__arm_vcmulq_rot270_m_f32): Delete.
24933         (__arm_vcmulq_rot270_m_f16): Delete.
24934         (__arm_vcmulq_rot90_m_f32): Delete.
24935         (__arm_vcmulq_rot90_m_f16): Delete.
24936         (__arm_vcmulq_x_f16): Delete.
24937         (__arm_vcmulq_x_f32): Delete.
24938         (__arm_vcmulq_rot90_x_f16): Delete.
24939         (__arm_vcmulq_rot90_x_f32): Delete.
24940         (__arm_vcmulq_rot180_x_f16): Delete.
24941         (__arm_vcmulq_rot180_x_f32): Delete.
24942         (__arm_vcmulq_rot270_x_f16): Delete.
24943         (__arm_vcmulq_rot270_x_f32): Delete.
24944         (__arm_vcmulq_rot90): Delete.
24945         (__arm_vcmulq_rot270): Delete.
24946         (__arm_vcmulq_rot180): Delete.
24947         (__arm_vcmulq): Delete.
24948         (__arm_vcmulq_m): Delete.
24949         (__arm_vcmulq_rot180_m): Delete.
24950         (__arm_vcmulq_rot270_m): Delete.
24951         (__arm_vcmulq_rot90_m): Delete.
24952         (__arm_vcmulq_x): Delete.
24953         (__arm_vcmulq_rot90_x): Delete.
24954         (__arm_vcmulq_rot180_x): Delete.
24955         (__arm_vcmulq_rot270_x): Delete.
24957 2023-07-14  Christophe Lyon  <christophe.lyon@linaro.org>
24959         * config/arm/arm_mve_builtins.def (vcmulq_rot90_f)
24960         (vcmulq_rot270_f, vcmulq_rot180_f, vcmulq_f): Add "_f" suffix.
24961         * config/arm/iterators.md (MVE_VCADDQ_VCMULQ)
24962         (MVE_VCADDQ_VCMULQ_M): New.
24963         (mve_insn): Add vcmul.
24964         (rot): Add VCMULQ_M_F, VCMULQ_ROT90_M_F, VCMULQ_ROT180_M_F,
24965         VCMULQ_ROT270_M_F.
24966         (VCMUL): Delete.
24967         (mve_rot): Add VCMULQ_M_F, VCMULQ_ROT90_M_F, VCMULQ_ROT180_M_F,
24968         VCMULQ_ROT270_M_F.
24969         * config/arm/mve.md (mve_vcmulq<mve_rot><mode>): Merge into
24970         @mve_<mve_insn>q<mve_rot>_f<mode>.
24971         (mve_vcmulq_m_f<mode>, mve_vcmulq_rot180_m_f<mode>)
24972         (mve_vcmulq_rot270_m_f<mode>, mve_vcmulq_rot90_m_f<mode>): Merge
24973         into @mve_<mve_insn>q<mve_rot>_m_f<mode>.
24975 2023-07-14  Christophe Lyon  <christophe.lyon@linaro.org>
24977         * config/arm/arm-mve-builtins-base.cc (vcaddq_rot90)
24978         (vcaddq_rot270, vhcaddq_rot90, vhcaddq_rot270): New.
24979         * config/arm/arm-mve-builtins-base.def (vcaddq_rot90)
24980         (vcaddq_rot270, vhcaddq_rot90, vhcaddq_rot270): New.
24981         * config/arm/arm-mve-builtins-base.h: (vcaddq_rot90)
24982         (vcaddq_rot270, vhcaddq_rot90, vhcaddq_rot270): New.
24983         * config/arm/arm-mve-builtins-functions.h (class
24984         unspec_mve_function_exact_insn_rot): New.
24985         * config/arm/arm_mve.h (vcaddq_rot90): Delete.
24986         (vcaddq_rot270): Delete.
24987         (vhcaddq_rot90): Delete.
24988         (vhcaddq_rot270): Delete.
24989         (vcaddq_rot270_m): Delete.
24990         (vcaddq_rot90_m): Delete.
24991         (vhcaddq_rot270_m): Delete.
24992         (vhcaddq_rot90_m): Delete.
24993         (vcaddq_rot90_x): Delete.
24994         (vcaddq_rot270_x): Delete.
24995         (vhcaddq_rot90_x): Delete.
24996         (vhcaddq_rot270_x): Delete.
24997         (vcaddq_rot90_u8): Delete.
24998         (vcaddq_rot270_u8): Delete.
24999         (vhcaddq_rot90_s8): Delete.
25000         (vhcaddq_rot270_s8): Delete.
25001         (vcaddq_rot90_s8): Delete.
25002         (vcaddq_rot270_s8): Delete.
25003         (vcaddq_rot90_u16): Delete.
25004         (vcaddq_rot270_u16): Delete.
25005         (vhcaddq_rot90_s16): Delete.
25006         (vhcaddq_rot270_s16): Delete.
25007         (vcaddq_rot90_s16): Delete.
25008         (vcaddq_rot270_s16): Delete.
25009         (vcaddq_rot90_u32): Delete.
25010         (vcaddq_rot270_u32): Delete.
25011         (vhcaddq_rot90_s32): Delete.
25012         (vhcaddq_rot270_s32): Delete.
25013         (vcaddq_rot90_s32): Delete.
25014         (vcaddq_rot270_s32): Delete.
25015         (vcaddq_rot90_f16): Delete.
25016         (vcaddq_rot270_f16): Delete.
25017         (vcaddq_rot90_f32): Delete.
25018         (vcaddq_rot270_f32): Delete.
25019         (vcaddq_rot270_m_s8): Delete.
25020         (vcaddq_rot270_m_s32): Delete.
25021         (vcaddq_rot270_m_s16): Delete.
25022         (vcaddq_rot270_m_u8): Delete.
25023         (vcaddq_rot270_m_u32): Delete.
25024         (vcaddq_rot270_m_u16): Delete.
25025         (vcaddq_rot90_m_s8): Delete.
25026         (vcaddq_rot90_m_s32): Delete.
25027         (vcaddq_rot90_m_s16): Delete.
25028         (vcaddq_rot90_m_u8): Delete.
25029         (vcaddq_rot90_m_u32): Delete.
25030         (vcaddq_rot90_m_u16): Delete.
25031         (vhcaddq_rot270_m_s8): Delete.
25032         (vhcaddq_rot270_m_s32): Delete.
25033         (vhcaddq_rot270_m_s16): Delete.
25034         (vhcaddq_rot90_m_s8): Delete.
25035         (vhcaddq_rot90_m_s32): Delete.
25036         (vhcaddq_rot90_m_s16): Delete.
25037         (vcaddq_rot270_m_f32): Delete.
25038         (vcaddq_rot270_m_f16): Delete.
25039         (vcaddq_rot90_m_f32): Delete.
25040         (vcaddq_rot90_m_f16): Delete.
25041         (vcaddq_rot90_x_s8): Delete.
25042         (vcaddq_rot90_x_s16): Delete.
25043         (vcaddq_rot90_x_s32): Delete.
25044         (vcaddq_rot90_x_u8): Delete.
25045         (vcaddq_rot90_x_u16): Delete.
25046         (vcaddq_rot90_x_u32): Delete.
25047         (vcaddq_rot270_x_s8): Delete.
25048         (vcaddq_rot270_x_s16): Delete.
25049         (vcaddq_rot270_x_s32): Delete.
25050         (vcaddq_rot270_x_u8): Delete.
25051         (vcaddq_rot270_x_u16): Delete.
25052         (vcaddq_rot270_x_u32): Delete.
25053         (vhcaddq_rot90_x_s8): Delete.
25054         (vhcaddq_rot90_x_s16): Delete.
25055         (vhcaddq_rot90_x_s32): Delete.
25056         (vhcaddq_rot270_x_s8): Delete.
25057         (vhcaddq_rot270_x_s16): Delete.
25058         (vhcaddq_rot270_x_s32): Delete.
25059         (vcaddq_rot90_x_f16): Delete.
25060         (vcaddq_rot90_x_f32): Delete.
25061         (vcaddq_rot270_x_f16): Delete.
25062         (vcaddq_rot270_x_f32): Delete.
25063         (__arm_vcaddq_rot90_u8): Delete.
25064         (__arm_vcaddq_rot270_u8): Delete.
25065         (__arm_vhcaddq_rot90_s8): Delete.
25066         (__arm_vhcaddq_rot270_s8): Delete.
25067         (__arm_vcaddq_rot90_s8): Delete.
25068         (__arm_vcaddq_rot270_s8): Delete.
25069         (__arm_vcaddq_rot90_u16): Delete.
25070         (__arm_vcaddq_rot270_u16): Delete.
25071         (__arm_vhcaddq_rot90_s16): Delete.
25072         (__arm_vhcaddq_rot270_s16): Delete.
25073         (__arm_vcaddq_rot90_s16): Delete.
25074         (__arm_vcaddq_rot270_s16): Delete.
25075         (__arm_vcaddq_rot90_u32): Delete.
25076         (__arm_vcaddq_rot270_u32): Delete.
25077         (__arm_vhcaddq_rot90_s32): Delete.
25078         (__arm_vhcaddq_rot270_s32): Delete.
25079         (__arm_vcaddq_rot90_s32): Delete.
25080         (__arm_vcaddq_rot270_s32): Delete.
25081         (__arm_vcaddq_rot270_m_s8): Delete.
25082         (__arm_vcaddq_rot270_m_s32): Delete.
25083         (__arm_vcaddq_rot270_m_s16): Delete.
25084         (__arm_vcaddq_rot270_m_u8): Delete.
25085         (__arm_vcaddq_rot270_m_u32): Delete.
25086         (__arm_vcaddq_rot270_m_u16): Delete.
25087         (__arm_vcaddq_rot90_m_s8): Delete.
25088         (__arm_vcaddq_rot90_m_s32): Delete.
25089         (__arm_vcaddq_rot90_m_s16): Delete.
25090         (__arm_vcaddq_rot90_m_u8): Delete.
25091         (__arm_vcaddq_rot90_m_u32): Delete.
25092         (__arm_vcaddq_rot90_m_u16): Delete.
25093         (__arm_vhcaddq_rot270_m_s8): Delete.
25094         (__arm_vhcaddq_rot270_m_s32): Delete.
25095         (__arm_vhcaddq_rot270_m_s16): Delete.
25096         (__arm_vhcaddq_rot90_m_s8): Delete.
25097         (__arm_vhcaddq_rot90_m_s32): Delete.
25098         (__arm_vhcaddq_rot90_m_s16): Delete.
25099         (__arm_vcaddq_rot90_x_s8): Delete.
25100         (__arm_vcaddq_rot90_x_s16): Delete.
25101         (__arm_vcaddq_rot90_x_s32): Delete.
25102         (__arm_vcaddq_rot90_x_u8): Delete.
25103         (__arm_vcaddq_rot90_x_u16): Delete.
25104         (__arm_vcaddq_rot90_x_u32): Delete.
25105         (__arm_vcaddq_rot270_x_s8): Delete.
25106         (__arm_vcaddq_rot270_x_s16): Delete.
25107         (__arm_vcaddq_rot270_x_s32): Delete.
25108         (__arm_vcaddq_rot270_x_u8): Delete.
25109         (__arm_vcaddq_rot270_x_u16): Delete.
25110         (__arm_vcaddq_rot270_x_u32): Delete.
25111         (__arm_vhcaddq_rot90_x_s8): Delete.
25112         (__arm_vhcaddq_rot90_x_s16): Delete.
25113         (__arm_vhcaddq_rot90_x_s32): Delete.
25114         (__arm_vhcaddq_rot270_x_s8): Delete.
25115         (__arm_vhcaddq_rot270_x_s16): Delete.
25116         (__arm_vhcaddq_rot270_x_s32): Delete.
25117         (__arm_vcaddq_rot90_f16): Delete.
25118         (__arm_vcaddq_rot270_f16): Delete.
25119         (__arm_vcaddq_rot90_f32): Delete.
25120         (__arm_vcaddq_rot270_f32): Delete.
25121         (__arm_vcaddq_rot270_m_f32): Delete.
25122         (__arm_vcaddq_rot270_m_f16): Delete.
25123         (__arm_vcaddq_rot90_m_f32): Delete.
25124         (__arm_vcaddq_rot90_m_f16): Delete.
25125         (__arm_vcaddq_rot90_x_f16): Delete.
25126         (__arm_vcaddq_rot90_x_f32): Delete.
25127         (__arm_vcaddq_rot270_x_f16): Delete.
25128         (__arm_vcaddq_rot270_x_f32): Delete.
25129         (__arm_vcaddq_rot90): Delete.
25130         (__arm_vcaddq_rot270): Delete.
25131         (__arm_vhcaddq_rot90): Delete.
25132         (__arm_vhcaddq_rot270): Delete.
25133         (__arm_vcaddq_rot270_m): Delete.
25134         (__arm_vcaddq_rot90_m): Delete.
25135         (__arm_vhcaddq_rot270_m): Delete.
25136         (__arm_vhcaddq_rot90_m): Delete.
25137         (__arm_vcaddq_rot90_x): Delete.
25138         (__arm_vcaddq_rot270_x): Delete.
25139         (__arm_vhcaddq_rot90_x): Delete.
25140         (__arm_vhcaddq_rot270_x): Delete.
25142 2023-07-14  Christophe Lyon  <christophe.lyon@linaro.org>
25144         * config/arm/arm_mve_builtins.def (vcaddq_rot90_, vcaddq_rot270_)
25145         (vcaddq_rot90_f, vcaddq_rot90_f): Add "_" or "_f" suffix.
25146         * config/arm/iterators.md (mve_insn): Add vcadd, vhcadd.
25147         (isu): Add UNSPEC_VCADD90, UNSPEC_VCADD270, VCADDQ_ROT270_M_U,
25148         VCADDQ_ROT270_M_S, VCADDQ_ROT90_M_U, VCADDQ_ROT90_M_S,
25149         VHCADDQ_ROT90_M_S, VHCADDQ_ROT270_M_S, VHCADDQ_ROT90_S,
25150         VHCADDQ_ROT270_S.
25151         (rot): Add VCADDQ_ROT90_M_F, VCADDQ_ROT90_M_S, VCADDQ_ROT90_M_U,
25152         VCADDQ_ROT270_M_F, VCADDQ_ROT270_M_S, VCADDQ_ROT270_M_U,
25153         VHCADDQ_ROT90_S, VHCADDQ_ROT270_S, VHCADDQ_ROT90_M_S,
25154         VHCADDQ_ROT270_M_S.
25155         (mve_rot): Add VCADDQ_ROT90_M_F, VCADDQ_ROT90_M_S,
25156         VCADDQ_ROT90_M_U, VCADDQ_ROT270_M_F, VCADDQ_ROT270_M_S,
25157         VCADDQ_ROT270_M_U, VHCADDQ_ROT90_S, VHCADDQ_ROT270_S,
25158         VHCADDQ_ROT90_M_S, VHCADDQ_ROT270_M_S.
25159         (supf): Add VHCADDQ_ROT90_M_S, VHCADDQ_ROT270_M_S,
25160         VHCADDQ_ROT90_S, VHCADDQ_ROT270_S, UNSPEC_VCADD90,
25161         UNSPEC_VCADD270.
25162         (VCADDQ_ROT270_M): Delete.
25163         (VCADDQ_M_F VxCADDQ VxCADDQ_M): New.
25164         (VCADDQ_ROT90_M): Delete.
25165         * config/arm/mve.md (mve_vcaddq<mve_rot><mode>)
25166         (mve_vhcaddq_rot270_s<mode>, mve_vhcaddq_rot90_s<mode>): Merge
25167         into ...
25168         (@mve_<mve_insn>q<mve_rot>_<supf><mode>): ... this.
25169         (mve_vcaddq<mve_rot><mode>): Rename into ...
25170         (@mve_<mve_insn>q<mve_rot>_f<mode>): ... this
25171         (mve_vcaddq_rot270_m_<supf><mode>)
25172         (mve_vcaddq_rot90_m_<supf><mode>, mve_vhcaddq_rot270_m_s<mode>)
25173         (mve_vhcaddq_rot90_m_s<mode>): Merge into ...
25174         (@mve_<mve_insn>q<mve_rot>_m_<supf><mode>): ... this.
25175         (mve_vcaddq_rot270_m_f<mode>, mve_vcaddq_rot90_m_f<mode>): Merge
25176         into ...
25177         (@mve_<mve_insn>q<mve_rot>_m_f<mode>): ... this.
25179 2023-07-14  Roger Sayle  <roger@nextmovesoftware.com>
25181         PR target/110588
25182         * config/i386/i386.md (*bt<mode>_setcqi): Prefer string form
25183         preparation statement over braces for a single statement.
25184         (*bt<mode>_setncqi): Likewise.
25185         (*bt<mode>_setncqi_2): New define_insn_and_split.
25187 2023-07-14  Roger Sayle  <roger@nextmovesoftware.com>
25189         * config/i386/i386-expand.cc (ix86_expand_move): Generalize special
25190         case inserting of 64-bit values into a TImode register, to handle
25191         both DImode and DFmode using either *insvti_lowpart_1
25192         or *isnvti_highpart_1.
25194 2023-07-14  Uros Bizjak  <ubizjak@gmail.com>
25196         PR target/110206
25197         * fwprop.cc (contains_paradoxical_subreg_p): Move to ...
25198         * rtlanal.cc (contains_paradoxical_subreg_p): ... here.
25199         * rtlanal.h (contains_paradoxical_subreg_p): Add prototype.
25200         * cprop.cc (try_replace_reg): Do not set REG_EQUAL note
25201         when the original source contains a paradoxical subreg.
25203 2023-07-14  Jan Hubicka  <jh@suse.cz>
25205         * passes.cc (execute_function_todo): Remove
25206         TODO_rebuild_frequencies
25207         * passes.def: Add rebuild_frequencies pass.
25208         * predict.cc (estimate_bb_frequencies): Drop
25209         force parameter.
25210         (tree_estimate_probability): Update call of
25211         estimate_bb_frequencies.
25212         (rebuild_frequencies): Turn into a pass; verify CFG profile consistency
25213         first and do not rebuild if not necessary.
25214         (class pass_rebuild_frequencies): New.
25215         (make_pass_rebuild_frequencies): New.
25216         * profile-count.h: Add profile_count::very_large_p.
25217         * tree-inline.cc (optimize_inline_calls): Do not return
25218         TODO_rebuild_frequencies
25219         * tree-pass.h (TODO_rebuild_frequencies): Remove.
25220         (make_pass_rebuild_frequencies): Declare.
25222 2023-07-14  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
25224         * config/riscv/autovec.md (cond_len_fma<mode>): New pattern.
25225         * config/riscv/riscv-protos.h (enum insn_type): New enum.
25226         (expand_cond_len_ternop): New function.
25227         * config/riscv/riscv-v.cc (emit_nonvlmax_fp_ternary_tu_insn): Ditto.
25228         (expand_cond_len_ternop): Ditto.
25230 2023-07-14  Jose E. Marchesi  <jose.marchesi@oracle.com>
25232         PR target/110657
25233         * config/bpf/bpf.md: Enable instruction scheduling.
25235 2023-07-14  Tamar Christina  <tamar.christina@arm.com>
25237         PR tree-optimization/109154
25238         * tree-if-conv.cc (INCLUDE_ALGORITHM): Include.
25239         (struct bb_predicate): Add no_predicate_stmts.
25240         (set_bb_predicate): Increase predicate count.
25241         (set_bb_predicate_gimplified_stmts): Conditionally initialize
25242         no_predicate_stmts.
25243         (get_bb_num_predicate_stmts): New.
25244         (init_bb_predicate): Initialzie no_predicate_stmts.
25245         (release_bb_predicate): Cleanup no_predicate_stmts.
25246         (insert_gimplified_predicates): Preserve no_predicate_stmts.
25248 2023-07-14  Tamar Christina  <tamar.christina@arm.com>
25250         PR tree-optimization/109154
25251         * tree-if-conv.cc (gen_simplified_condition,
25252         gen_phi_nest_statement): New.
25253         (gen_phi_arg_condition, predicate_scalar_phi): Use it.
25255 2023-07-14  Richard Biener  <rguenther@suse.de>
25257         * gimple.h (gimple_phi_arg): New const overload.
25258         (gimple_phi_arg_def): Make gimple arg const.
25259         (gimple_phi_arg_def_from_edge): New inline function.
25260         * tree-phinodes.h (gimple_phi_arg_imm_use_ptr_from_edge):
25261         Likewise.
25262         * tree-ssa-operands.h (PHI_ARG_DEF_FROM_EDGE): Direct to
25263         new inline function.
25264         (PHI_ARG_DEF_PTR_FROM_EDGE): Likewise.
25266 2023-07-14  Monk Chiang  <monk.chiang@sifive.com>
25268         * common/config/riscv/riscv-common.cc:
25269         (riscv_implied_info): Add zihintntl item.
25270         (riscv_ext_version_table): Ditto.
25271         (riscv_ext_flag_table): Ditto.
25272         * config/riscv/riscv-opts.h (MASK_ZIHINTNTL): New macro.
25273         (TARGET_ZIHINTNTL): Ditto.
25275 2023-07-14  Die Li  <lidie@eswincomputing.com>
25277         * config/riscv/riscv.md: Remove redundant portion in and<mode>3.
25279 2023-07-14  Oleg Endo  <olegendo@gcc.gnu.org>
25281         PR target/101469
25282         * config/sh/sh.md (peephole2): Handle case where eliminated reg is also
25283         used by the address of the following memory operand.
25285 2023-07-13  Mikael Pettersson  <mikpelinux@gmail.com>
25287         PR target/107841
25288         * config/pdp11/pdp11.cc (pdp11_expand_epilogue): Also
25289         deallocate alloca-only frame.
25291 2023-07-13  Iain Sandoe  <iain@sandoe.co.uk>
25293         PR target/110624
25294         * config/darwin.h (DARWIN_PLATFORM_ID): New.
25295         (LINK_COMMAND_A): Use DARWIN_PLATFORM_ID to pass OS, OS version
25296         and SDK data to the static linker.
25298 2023-07-13  Carl Love  <cel@us.ibm.com>
25300         * config/rs6000/rs6000-builtins.def (__builtin_set_fpscr_rn): Update
25301         built-in definition return type.
25302         * config/rs6000/rs6000-c.cc (rs6000_target_modify_macros): Add check,
25303         define __SET_FPSCR_RN_RETURNS_FPSCR__ macro.
25304         * config/rs6000/rs6000.md (rs6000_set_fpscr_rn): Add return
25305         argument to return FPSCR fields.
25306         * doc/extend.texi (__builtin_set_fpscr_rn): Update description for
25307         the return value.  Add description for
25308         __SET_FPSCR_RN_RETURNS_FPSCR__ macro.
25310 2023-07-13  Uros Bizjak  <ubizjak@gmail.com>
25312         PR target/106966
25313         * config/alpha/alpha.cc (alpha_emit_set_long_const):
25314         Always use DImode when constructing long const.
25316 2023-07-13  Uros Bizjak  <ubizjak@gmail.com>
25318         * haifa-sched.cc: Change TRUE/FALSE to true/false.
25319         * ira.cc: Ditto.
25320         * lra-assigns.cc: Ditto.
25321         * lra-constraints.cc: Ditto.
25322         * sel-sched.cc: Ditto.
25324 2023-07-13  Andrew Pinski  <apinski@marvell.com>
25326         PR tree-optimization/110293
25327         PR tree-optimization/110539
25328         * match.pd: Expand the `x != (typeof x)(x == 0)`
25329         pattern to handle where the inner and outer comparsions
25330         are either `!=` or `==` and handle other constants
25331         than 0.
25333 2023-07-13  Vladimir N. Makarov  <vmakarov@redhat.com>
25335         PR middle-end/109520
25336         * lra-int.h (lra_insn_recog_data): Add member asm_reloads_num.
25337         (lra_asm_insn_error): New prototype.
25338         * lra.cc: Include rtl_error.h.
25339         (lra_set_insn_recog_data): Initialize asm_reloads_num.
25340         (lra_asm_insn_error): New func whose code is taken from ...
25341         * lra-assigns.cc (lra_split_hard_reg_for): ... here.  Use lra_asm_insn_error.
25342         * lra-constraints.cc (curr_insn_transform): Check reloads nummber for asm.
25344 2023-07-13  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
25346         * genmatch.cc (commutative_op): Add COND_LEN_*
25347         * internal-fn.cc (first_commutative_argument): Ditto.
25348         (CASE): Ditto.
25349         (get_unconditional_internal_fn): Ditto.
25350         (can_interpret_as_conditional_op_p): Ditto.
25351         (internal_fn_len_index): Ditto.
25352         * internal-fn.h (can_interpret_as_conditional_op_p): Ditt.
25353         * tree-ssa-math-opts.cc (convert_mult_to_fma_1): Ditto.
25354         (convert_mult_to_fma): Ditto.
25355         (math_opts_dom_walker::after_dom_children): Ditto.
25357 2023-07-13  Pan Li  <pan2.li@intel.com>
25359         * config/riscv/riscv.cc (vxrm_rtx): New static var.
25360         (frm_rtx): Ditto.
25361         (global_state_unknown_p): Removed.
25362         (riscv_entity_mode_after): Removed.
25363         (asm_insn_p): New function.
25364         (vxrm_unknown_p): New function for fixed-point.
25365         (riscv_vxrm_mode_after): Ditto.
25366         (frm_unknown_dynamic_p): New function for floating-point.
25367         (riscv_frm_mode_after): Ditto.
25368         (riscv_mode_after): Leverage new functions.
25370 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
25372         * tree-vect-stmts.cc (vect_model_load_cost): Remove.
25373         (vectorizable_load): Adjust the cost handling on VMAT_CONTIGUOUS without
25374         calling vect_model_load_cost.
25376 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
25378         * tree-vect-stmts.cc (vect_model_load_cost): Assert this function only
25379         handle memory_access_type VMAT_CONTIGUOUS, remove some
25380         VMAT_CONTIGUOUS_PERMUTE related handlings.
25381         (vectorizable_load): Adjust the cost handling on VMAT_CONTIGUOUS_PERMUTE
25382         without calling vect_model_load_cost.
25384 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
25386         * tree-vect-stmts.cc (vect_model_load_cost): Assert it won't get
25387         VMAT_CONTIGUOUS_REVERSE any more.
25388         (vectorizable_load): Adjust the costing handling on
25389         VMAT_CONTIGUOUS_REVERSE without calling vect_model_load_cost.
25391 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
25393         * tree-vect-stmts.cc (vectorizable_load): Adjust the cost handling on
25394         VMAT_LOAD_STORE_LANES without calling vect_model_load_cost.
25395         (vectorizable_load): Remove VMAT_LOAD_STORE_LANES related handling and
25396         assert it will never get VMAT_LOAD_STORE_LANES.
25398 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
25400         * tree-vect-stmts.cc (vectorizable_load): Adjust the cost handling on
25401         VMAT_GATHER_SCATTER without calling vect_model_load_cost.
25402         (vect_model_load_cost): Adjut the assertion on VMAT_GATHER_SCATTER,
25403         remove VMAT_GATHER_SCATTER related handlings and the related parameter
25404         gs_info.
25406 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
25408         * tree-vect-stmts.cc (vectorizable_load): Adjust the cost handling
25409         on VMAT_ELEMENTWISE and VMAT_STRIDED_SLP without calling
25410         vect_model_load_cost.
25411         (vect_model_load_cost): Assert it won't get VMAT_ELEMENTWISE and
25412         VMAT_STRIDED_SLP any more, and remove their related handlings.
25414 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
25416         * tree-vect-stmts.cc (hoist_defs_of_uses): Add one argument HOIST_P.
25417         (vectorizable_load): Adjust the handling on VMAT_INVARIANT to respect
25418         hoisting decision and without calling vect_model_load_cost.
25419         (vect_model_load_cost): Assert it won't get VMAT_INVARIANT any more
25420         and remove VMAT_INVARIANT related handlings.
25422 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
25424         * tree-vect-stmts.cc (vect_build_gather_load_calls): Add the handlings
25425         on costing with one extra argument cost_vec.
25426         (vectorizable_load): Adjust the call to vect_build_gather_load_calls.
25427         (vect_model_load_cost): Assert it won't get VMAT_GATHER_SCATTER with
25428         gs_info.decl set any more.
25430 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
25432         * tree-vect-stmts.cc (vectorizable_load): Move and duplicate the call
25433         to vect_model_load_cost down to some different transform paths
25434         according to the handlings of different vect_memory_access_types.
25436 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
25438         * tree.h (wi::from_mpz): Hide from GENERATOR_FILE.
25440 2023-07-13  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
25442         * config/riscv/autovec.md
25443         (len_mask_gather_load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): New pattern.
25444         (len_mask_gather_load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
25445         (len_mask_gather_load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
25446         (len_mask_gather_load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
25447         (len_mask_gather_load<VNX16_QHSD:mode><VNX16_QHSDI:mode>): Ditto.
25448         (len_mask_gather_load<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
25449         (len_mask_gather_load<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
25450         (len_mask_gather_load<mode><mode>): Ditto.
25451         (len_mask_scatter_store<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Ditto.
25452         (len_mask_scatter_store<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
25453         (len_mask_scatter_store<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
25454         (len_mask_scatter_store<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
25455         (len_mask_scatter_store<VNX16_QHSD:mode><VNX16_QHSDI:mode>): Ditto.
25456         (len_mask_scatter_store<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
25457         (len_mask_scatter_store<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
25458         (len_mask_scatter_store<mode><mode>): Ditto.
25459         * config/riscv/predicates.md (const_1_operand): New predicate.
25460         (vector_gs_scale_operand_16): Ditto.
25461         (vector_gs_scale_operand_32): Ditto.
25462         (vector_gs_scale_operand_64): Ditto.
25463         (vector_gs_extension_operand): Ditto.
25464         (vector_gs_scale_operand_16_rv32): Ditto.
25465         (vector_gs_scale_operand_32_rv32): Ditto.
25466         * config/riscv/riscv-protos.h (enum insn_type): Add gather/scatter.
25467         (expand_gather_scatter): New function.
25468         * config/riscv/riscv-v.cc (gen_const_vector_dup): Add gather/scatter.
25469         (emit_vlmax_masked_store_insn): New function.
25470         (emit_nonvlmax_masked_store_insn): Ditto.
25471         (modulo_sel_indices): Ditto.
25472         (expand_vec_perm): Fix SLP for gather/scatter.
25473         (prepare_gather_scatter): New function.
25474         (expand_gather_scatter): Ditto.
25475         * config/riscv/riscv.cc (riscv_legitimize_move): Fix bug of
25476         (subreg:SI (DI CONST_POLY_INT)).
25477         * config/riscv/vector-iterators.md: Add gather/scatter.
25478         * config/riscv/vector.md (vec_duplicate<mode>): Use "@" instead.
25479         (@vec_duplicate<mode>): Ditto.
25480         (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSDI:mode>):
25481         Fix name.
25482         (@pred_indexed_<order>store<VNX16_QHSD:mode><VNX16_QHSDI:mode>): Ditto.
25484 2023-07-12  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
25486         * config/riscv/autovec.md (cond_len_<optab><mode>): New pattern.
25487         * config/riscv/riscv-protos.h (enum insn_type): New enum.
25488         (expand_cond_len_binop): New function.
25489         * config/riscv/riscv-v.cc (emit_nonvlmax_tu_insn): Ditto.
25490         (emit_nonvlmax_fp_tu_insn): Ditto.
25491         (need_fp_rounding_p): Ditto.
25492         (expand_cond_len_binop): Ditto.
25493         * config/riscv/riscv.cc (riscv_preferred_else_value): Ditto.
25494         (TARGET_PREFERRED_ELSE_VALUE): New target hook.
25496 2023-07-12  Jan Hubicka  <jh@suse.cz>
25498         * tree-cfg.cc (gimple_duplicate_sese_region): Rename to ...
25499         (gimple_duplicate_seme_region): ... this; break out profile updating
25500         code to ...
25501         * tree-ssa-loop-ch.cc (update_profile_after_ch): ... here.
25502         (ch_base::copy_headers): Update.
25503         * tree-cfg.h (gimple_duplicate_sese_region): Rename to ...
25504         (gimple_duplicate_seme_region): ... this.
25506 2023-07-12  Aldy Hernandez  <aldyh@redhat.com>
25508         PR tree-optimization/107043
25509         * range-op.cc (operator_bitwise_and::op1_range): Update bitmask.
25511 2023-07-12  Aldy Hernandez  <aldyh@redhat.com>
25513         PR tree-optimization/107053
25514         * gimple-range-op.cc (cfn_popcount): Use known set bits.
25516 2023-07-12  Uros Bizjak  <ubizjak@gmail.com>
25518         * ira.cc (equiv_init_varies_p): Change return type from int to bool
25519         and adjust function body accordingly.
25520         (equiv_init_movable_p): Ditto.
25521         (memref_used_between_p): Ditto.
25522         * lra-constraints.cc (valid_address_p): Ditto.
25524 2023-07-12  Aldy Hernandez  <aldyh@redhat.com>
25526         * range-op.cc (irange_to_masked_value): Remove.
25527         (update_known_bitmask): Update irange value/mask pair instead of
25528         only updating nonzero bits.
25530 2023-07-12  Jan Hubicka  <jh@suse.cz>
25532         * tree-cfg.cc (gimple_duplicate_sese_region): Add ORIG_ELIMINATED_EDGES
25533         parameter and rewrite profile updating code to handle edges elimination.
25534         * tree-cfg.h (gimple_duplicate_sese_region): Update prototpe.
25535         * tree-ssa-loop-ch.cc (loop_invariant_op_p): New function.
25536         (loop_iv_derived_p): New function.
25537         (should_duplicate_loop_header_p): Track invariant exit edges; fix handling
25538         of PHIs and propagation of IV derived variables.
25539         (ch_base::copy_headers): Pass around the invariant edges hash set.
25541 2023-07-12  Uros Bizjak  <ubizjak@gmail.com>
25543         * ifcvt.cc (cond_exec_changed_p): Change variable to bool.
25544         (last_active_insn): Change "skip_use_p" function argument to bool.
25545         (noce_operand_ok): Change return type from int to bool.
25546         (find_cond_trap): Ditto.
25547         (block_jumps_and_fallthru_p): Change "fallthru_p" and
25548         "jump_p" variables to bool.
25549         (noce_find_if_block): Change return type from int to bool.
25550         (cond_exec_find_if_block): Ditto.
25551         (find_if_case_1): Ditto.
25552         (find_if_case_2): Ditto.
25553         (dead_or_predicable): Ditto. Change "reversep" function arg to bool.
25554         (block_jumps_and_fallthru): Rename from block_jumps_and_fallthru_p.
25555         (cond_exec_process_insns): Change return type from int to bool.
25556         Change "mod_ok" function arg to bool.
25557         (cond_exec_process_if_block): Change return type from int to bool.
25558         Change "do_multiple_p" function arg to bool.  Change "then_mod_ok"
25559         variable to bool.
25560         (noce_emit_store_flag): Change return type from int to bool.
25561         Change "reversep" function arg to bool.  Change "cond_complex"
25562         variable to bool.
25563         (noce_try_move): Change return type from int to bool.
25564         (noce_try_ifelse_collapse): Ditto.
25565         (noce_try_store_flag): Ditto. Change "reversep" variable to bool.
25566         (noce_try_addcc): Change return type from int to bool.  Change
25567         "subtract" variable to bool.
25568         (noce_try_store_flag_constants): Change return type from int to bool.
25569         (noce_try_store_flag_mask): Ditto.  Change "reversep" variable to bool.
25570         (noce_try_cmove): Change return type from int to bool.
25571         (noce_try_cmove_arith): Ditto. Change "is_mem" variable to bool.
25572         (noce_try_minmax): Change return type from int to bool.  Change
25573         "unsignedp" variable to bool.
25574         (noce_try_abs): Change return type from int to bool.  Change
25575         "negate" variable to bool.
25576         (noce_try_sign_mask): Change return type from int to bool.
25577         (noce_try_move): Ditto.
25578         (noce_try_store_flag_constants): Ditto.
25579         (noce_try_cmove): Ditto.
25580         (noce_try_cmove_arith): Ditto.
25581         (noce_try_minmax): Ditto.  Change "unsignedp" variable to bool.
25582         (noce_try_bitop): Change return type from int to bool.
25583         (noce_operand_ok): Ditto.
25584         (noce_convert_multiple_sets): Ditto.
25585         (noce_convert_multiple_sets_1): Ditto.
25586         (noce_process_if_block): Ditto.
25587         (check_cond_move_block): Ditto.
25588         (cond_move_process_if_block): Ditto. Change "success_p"
25589         variable to bool.
25590         (rest_of_handle_if_conversion): Change return type to void.
25592 2023-07-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
25594         * internal-fn.cc (FOR_EACH_CODE_MAPPING): Adapt for COND_LEN_* support.
25595         (CASE): Ditto.
25596         (get_conditional_len_internal_fn): New function.
25597         * internal-fn.h (get_conditional_len_internal_fn): Ditto.
25598         * tree-vect-stmts.cc (vectorizable_operation): Adapt for COND_LEN_*
25599         support.
25601 2023-07-12  Roger Sayle  <roger@nextmovesoftware.com>
25603         PR target/91681
25604         * config/i386/i386.md (*add<dwi>3_doubleword_concat_zext): Typo.
25606 2023-07-12  Roger Sayle  <roger@nextmovesoftware.com>
25608         PR target/91681
25609         * config/i386/i386.md (*add<dwi>3_doubleword_concat_zext): New
25610         define_insn_and_split derived from *add<dwi>3_doubleword_concat
25611         and *add<dwi>3_doubleword_zext.
25613 2023-07-12  Roger Sayle  <roger@nextmovesoftware.com>
25615         PR target/110598
25616         * config/i386/i386.md (peephole2): Check !reg_mentioned_p when
25617         optimizing rega = 0; rega op= regb for op in [XOR,IOR,PLUS].
25618         (peephole2): Simplify rega = 0; rega op= rega cases.
25620 2023-07-12  Roger Sayle  <roger@nextmovesoftware.com>
25622         * config/i386/i386-expand.cc (ix86_expand_int_compare): If
25623         testing a TImode SUBREG of a 128-bit vector register against
25624         zero, use a PTEST instruction instead of first moving it to
25625         a pair of scalar registers.
25627 2023-07-12  Robin Dapp  <rdapp@ventanamicro.com>
25629         * genopinit.cc (main): Adjust maximal number of optabs and
25630         machine modes.
25631         * gensupport.cc (find_optab): Shift optab by 20 and mode by
25632         10 bits.
25633         * optabs-query.h (optab_handler): Ditto.
25634         (convert_optab_handler): Ditto.
25636 2023-07-12  Richard Biener  <rguenther@suse.de>
25638         PR tree-optimization/110630
25639         * tree-vect-slp.cc (vect_add_slp_permutation): New
25640         offset parameter, honor that for the extract code generation.
25641         (vectorizable_slp_permutation_1): Handle offsetted identities.
25643 2023-07-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
25645         * config/riscv/autovec.md (smul<mode>3_highpart): New pattern.
25646         (umul<mode>3_highpart): Ditto.
25648 2023-07-12  Jan Beulich  <jbeulich@suse.com>
25650         * config/i386/i386.md (extendbfsf2_1): Add new AVX512F
25651         alternative. Adjust original last alternative's "prefix"
25652         attribute to maybe_evex.
25654 2023-07-12  Jan Beulich  <jbeulich@suse.com>
25656         * config/i386/sse.md (vec_dupv4sf): Make first alternative use
25657         vbroadcastss for AVX2. New AVX512F alternative.
25658         (*vec_dupv4si): New AVX2 and AVX512F alternatives using
25659         vpbroadcastd. Replace sselog1 by sseshuf1 in "type" attribute.
25661 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
25663         * config/riscv/peephole.md: Remove XThead* peephole passes.
25664         * config/riscv/thead.md: Include thead-peephole.md.
25665         * config/riscv/thead-peephole.md: New file.
25667 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
25669         * config/riscv/riscv-protos.h (riscv_regno_ok_for_index_p):
25670         New prototype.
25671         (riscv_index_reg_class): Likewise.
25672         * config/riscv/riscv.cc (riscv_regno_ok_for_index_p): New function.
25673         (riscv_index_reg_class): New function.
25674         * config/riscv/riscv.h (INDEX_REG_CLASS): Call new function
25675         riscv_index_reg_class().
25676         (REGNO_OK_FOR_INDEX_P): Call new function
25677         riscv_regno_ok_for_index_p().
25679 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
25681         * config/riscv/riscv-protos.h (enum riscv_address_type):
25682         New location of type definition.
25683         (struct riscv_address_info): Likewise.
25684         * config/riscv/riscv.cc (enum riscv_address_type):
25685         Old location of type definition.
25686         (struct riscv_address_info): Likewise.
25688 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
25690         * config/riscv/riscv.h (Xmode): New macro.
25692 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
25694         * config/riscv/riscv.cc (riscv_print_operand_address): Use
25695         output_addr_const rather than riscv_print_operand.
25697 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
25699         * config/riscv/thead.md: Adjust constraints of th_addsl.
25701 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
25703         * config/riscv/thead.cc (th_mempair_operands_p):
25704         Fix documentation of th_mempair_order_operands().
25706 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
25708         * config/riscv/thead.cc (th_mempair_save_regs):
25709         Emit REG_FRAME_RELATED_EXPR notes in prologue.
25711 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
25713         * config/riscv/riscv.md: No base-ISA extension splitter for XThead*.
25714         * config/riscv/thead.md (*extend<SHORT:mode><SUPERQI:mode>2_th_ext):
25715         New XThead extension INSN.
25716         (*zero_extendsidi2_th_extu): New XThead extension INSN.
25717         (*zero_extendhi<GPR:mode>2_th_extu): New XThead extension INSN.
25719 2023-07-12  liuhongt  <hongtao.liu@intel.com>
25721         PR target/110438
25722         PR target/110202
25723         * config/i386/predicates.md
25724         (int_float_vector_all_ones_operand): New predicate.
25725         * config/i386/sse.md (*vmov<mode>_constm1_pternlog_false_dep): New
25726         define_insn.
25727         (*<avx512>_cvtmask2<ssemodesuffix><mode>_pternlog_false_dep):
25728         Ditto.
25729         (*<avx512>_cvtmask2<ssemodesuffix><mode>_pternlog_false_dep):
25730         Ditto.
25731         (*<avx512>_cvtmask2<ssemodesuffix><mode>): Adjust to
25732         define_insn_and_split to avoid false dependence.
25733         (*<avx512>_cvtmask2<ssemodesuffix><mode>): Ditto.
25734         (<mask_codefor>one_cmpl<mode>2<mask_name>): Adjust constraint
25735         of operands 1 to '0' to avoid false dependence.
25736         (*andnot<mode>3): Ditto.
25737         (iornot<mode>3): Ditto.
25738         (*<nlogic><mode>3): Ditto.
25740 2023-07-12  Mo, Zewei  <zewei.mo@intel.com>
25742         * common/config/i386/cpuinfo.h
25743         (get_intel_cpu): Handle Granite Rapids D.
25744         * common/config/i386/i386-common.cc:
25745         (processor_alias_table): Add graniterapids-d.
25746         * common/config/i386/i386-cpuinfo.h
25747         (enum processor_subtypes): Add INTEL_COREI7_GRANITERAPIDS_D.
25748         * config.gcc: Add -march=graniterapids-d.
25749         * config/i386/driver-i386.cc (host_detect_local_cpu):
25750         Handle graniterapids-d.
25751         * config/i386/i386.h: (PTA_GRANITERAPIDS_D): New.
25752         * doc/extend.texi: Add graniterapids-d.
25753         * doc/invoke.texi: Ditto.
25755 2023-07-12  Haochen Jiang  <haochen.jiang@intel.com>
25757         * config/i386/i386-builtins.cc (ix86_init_mmx_sse_builtins):
25758         Add OPTION_MASK_ISA_AVX512VL.
25759         * config/i386/i386-expand.cc (ix86_check_builtin_isa_match):
25760         Ditto.
25762 2023-07-11  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
25764         * config/riscv/riscv-protos.h (enum insn_type): Add vcompress optimization.
25765         * config/riscv/riscv-v.cc (emit_vlmax_compress_insn): Ditto.
25766         (shuffle_compress_patterns): Ditto.
25767         (expand_vec_perm_const_1): Ditto.
25769 2023-07-11  Uros Bizjak  <ubizjak@gmail.com>
25771         * cfghooks.cc (verify_flow_info): Change "err" variable to bool.
25772         * cfghooks.h (struct cfg_hooks): Change return type of
25773         verify_flow_info from integer to bool.
25774         * cfgrtl.cc (can_delete_note_p): Change return type from int to bool.
25775         (can_delete_label_p): Ditto.
25776         (rtl_verify_flow_info): Change return type from int to bool
25777         and adjust function body accordingly.  Change "err" variable to bool.
25778         (rtl_verify_flow_info_1): Ditto.
25779         (free_bb_for_insn): Change return type to void.
25780         (rtl_merge_blocks): Change "b_empty" variable to bool.
25781         (try_redirect_by_replacing_jump): Change "fallthru" variable to bool.
25782         (verify_hot_cold_block_grouping): Change return type from int to bool.
25783         Change "err" variable to bool.
25784         (rtl_verify_edges): Ditto.
25785         (rtl_verify_bb_insns): Ditto.
25786         (rtl_verify_bb_pointers): Ditto.
25787         (rtl_verify_bb_insn_chain): Ditto.
25788         (rtl_verify_fallthru): Ditto.
25789         (rtl_verify_bb_layout): Ditto.
25790         (purge_all_dead_edges): Change "purged" variable to bool.
25791         * cfgrtl.h (free_bb_for_insn): Change return type from int to void.
25792         * postreload-gcse.cc (expr_hasher::equal): Change "equiv_p" to bool.
25793         (load_killed_in_block_p): Change return type from int to bool
25794         and adjust function body accordingly.
25795         (oprs_unchanged_p): Return true/false.
25796         (rest_of_handle_gcse2): Change return type to void.
25797         * tree-cfg.cc (gimple_verify_flow_info): Change return type from
25798         int to bool.  Change "err" variable to bool.
25800 2023-07-11  Gaius Mulley  <gaiusmod2@gmail.com>
25802         * doc/gm2.texi (-Wuninit-variable-checking=) New item.
25804 2023-07-11  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
25806         * doc/md.texi: Add COND_LEN_* operations for loop control with length.
25807         * internal-fn.cc (cond_len_unary_direct): Ditto.
25808         (cond_len_binary_direct): Ditto.
25809         (cond_len_ternary_direct): Ditto.
25810         (expand_cond_len_unary_optab_fn): Ditto.
25811         (expand_cond_len_binary_optab_fn): Ditto.
25812         (expand_cond_len_ternary_optab_fn): Ditto.
25813         (direct_cond_len_unary_optab_supported_p): Ditto.
25814         (direct_cond_len_binary_optab_supported_p): Ditto.
25815         (direct_cond_len_ternary_optab_supported_p): Ditto.
25816         * internal-fn.def (COND_LEN_ADD): Ditto.
25817         (COND_LEN_SUB): Ditto.
25818         (COND_LEN_MUL): Ditto.
25819         (COND_LEN_DIV): Ditto.
25820         (COND_LEN_MOD): Ditto.
25821         (COND_LEN_RDIV): Ditto.
25822         (COND_LEN_MIN): Ditto.
25823         (COND_LEN_MAX): Ditto.
25824         (COND_LEN_FMIN): Ditto.
25825         (COND_LEN_FMAX): Ditto.
25826         (COND_LEN_AND): Ditto.
25827         (COND_LEN_IOR): Ditto.
25828         (COND_LEN_XOR): Ditto.
25829         (COND_LEN_SHL): Ditto.
25830         (COND_LEN_SHR): Ditto.
25831         (COND_LEN_FMA): Ditto.
25832         (COND_LEN_FMS): Ditto.
25833         (COND_LEN_FNMA): Ditto.
25834         (COND_LEN_FNMS): Ditto.
25835         (COND_LEN_NEG): Ditto.
25836         * optabs.def (OPTAB_D): Ditto.
25838 2023-07-11  Richard Biener  <rguenther@suse.de>
25840         PR tree-optimization/110614
25841         * tree-vect-data-refs.cc (vect_supportable_dr_alignment):
25842         SLP splats are not suitable for re-align ops.
25844 2023-07-10  Peter Bergner  <bergner@linux.ibm.com>
25846         * config/rs6000/predicates.md (quad_memory_operand): Remove redundant
25847         MEM_P usage.
25848         (vsx_quad_dform_memory_operand): Likewise.
25850 2023-07-10  Uros Bizjak  <ubizjak@gmail.com>
25852         * reorg.cc (stop_search_p): Change return type from int to bool
25853         and adjust function body accordingly.
25854         (resource_conflicts_p): Ditto.
25855         (insn_references_resource_p): Change return type from int to bool.
25856         (insn_sets_resource_p): Ditto.
25857         (redirect_with_delay_slots_safe_p): Ditto.
25858         (condition_dominates_p): Change return type from int to bool
25859         and adjust function body accordingly.
25860         (redirect_with_delay_list_safe_p): Ditto.
25861         (check_annul_list_true_false): Ditto.  Change "annul_true_p"
25862         function argument to bool.
25863         (steal_delay_list_from_target): Change "pannul_p" function
25864         argument to bool pointer.  Change "must_annul" and "used_annul"
25865         variables from int to bool.
25866         (steal_delay_list_from_fallthrough): Ditto.
25867         (own_thread_p): Change return type from int to bool and adjust
25868         function body accordingly.  Change "allow_fallthrough" function
25869         argument to bool.
25870         (reorg_redirect_jump): Change return type from int to bool.
25871         (fill_simple_delay_slots): Change "non_jumps_p" function
25872         argument from int to bool.  Change "maybe_never" varible to bool.
25873         (fill_slots_from_thread): Change "likely", "thread_if_true" and
25874         "own_thread" function arguments to bool.  Change "lose" and
25875         "must_annul" variables to bool.
25876         (delete_from_delay_slot): Change "had_barrier" variable to bool.
25877         (try_merge_delay_insns): Change "annul_p" variable to bool.
25878         (fill_eager_delay_slots): Change "own_target" and "own_fallthrouhg"
25879         variables to bool.
25880         (rest_of_handle_delay_slots): Change return type from int to void
25881         and adjust function body accordingly.
25883 2023-07-10  Kito Cheng  <kito.cheng@sifive.com>
25885         * doc/extend.texi (RISC-V Operand Modifiers): New.
25887 2023-07-10  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
25889         * config/riscv/riscv-vsetvl.cc (add_label_notes): Remove it.
25890         (insert_insn_end_basic_block): Ditto.
25891         (pass_vsetvl::commit_vsetvls): Adapt for new helper function.
25892         * gcse.cc (insert_insn_end_basic_block):  Export as global function.
25893         * gcse.h (insert_insn_end_basic_block): Ditto.
25895 2023-07-10  Christophe Lyon   <christophe.lyon@linaro.org>
25897         PR target/110268
25898         * config/arm/arm-builtins.cc (arm_init_mve_builtins): Handle LTO.
25899         (arm_builtin_decl): Hahndle MVE builtins.
25900         * config/arm/arm-mve-builtins.cc (builtin_decl): New function.
25901         (add_unique_function): Fix handling of
25902         __ARM_MVE_PRESERVE_USER_NAMESPACE.
25903         (add_overloaded_function): Likewise.
25904         * config/arm/arm-protos.h (builtin_decl): New declaration.
25906 2023-07-10  Christophe Lyon  <christophe.lyon@linaro.org>
25908         * doc/sourcebuild.texi (arm_v8_1m_main_cde_mve_fp): Document.
25910 2023-07-10  Xi Ruoyao  <xry111@xry111.site>
25912         PR tree-optimization/110557
25913         * tree-vect-patterns.cc (vect_recog_bitfield_ref_pattern):
25914         Ensure the output sign-extended if necessary.
25916 2023-07-10  Roger Sayle  <roger@nextmovesoftware.com>
25918         * config/i386/i386.md (peephole2): Transform xchg insn with a
25919         REG_UNUSED note to a (simple) move.
25920         (*insvti_lowpart_1): New define_insn_and_split.
25921         (*insvdi_lowpart_1): Likewise.
25923 2023-07-10  Roger Sayle  <roger@nextmovesoftware.com>
25925         * config/i386/i386-features.cc (compute_convert_gain): Tweak
25926         gains/costs for ROTATE/ROTATERT by integer constant on AVX512VL.
25927         (general_scalar_chain::convert_rotate): On TARGET_AVX512F generate
25928         avx512vl_rolv2di or avx412vl_rolv4si when appropriate.
25930 2023-07-10  liuhongt  <hongtao.liu@intel.com>
25932         PR target/110170
25933         * config/i386/i386.md (*ieee_max<mode>3_1): New pre_reload
25934         splitter to detect fp max pattern.
25935         (*ieee_min<mode>3_1): Ditto, but for fp min pattern.
25937 2023-07-09  Jan Hubicka  <jh@suse.cz>
25939         * cfg.cc (check_bb_profile): Dump counts with relative frequency.
25940         (dump_edge_info): Likewise.
25941         (dump_bb_info): Likewise.
25942         * profile-count.cc (profile_count::dump): Add comma between quality and
25943         freq.
25945 2023-07-08  Jan Hubicka  <jh@suse.cz>
25947         PR tree-optimization/110600
25948         * cfgloopmanip.cc (scale_loop_profile): Add mising profile_dump check.
25950 2023-07-08  Jan Hubicka  <jh@suse.cz>
25952         PR middle-end/110590
25953         * cfgloopmanip.cc (scale_loop_profile): Avoid scaling exits within
25954         inner loops and be more careful about inconsistent profiles.
25955         (duplicate_loop_body_to_header_edge): Fix profile update when eliminated
25956         exit is followed by other exit.
25958 2023-07-08  Uros Bizjak  <ubizjak@gmail.com>
25960         * cprop.cc (reg_available_p): Change return type from int to bool.
25961         (reg_not_set_p): Ditto.
25962         (try_replace_reg): Ditto.  Change "success" variable to bool.
25963         (cprop_jump): Change return type from int to void
25964         and adjust function body accordingly.
25965         (constprop_register): Ditto.
25966         (cprop_insn): Ditto.  Change "changed" variable to bool.
25967         (local_cprop_pass): Change return type from int to void
25968         and adjust function body accordingly.
25969         (bypass_block): Ditto.  Change "change", "may_be_loop_header"
25970         and "removed_p" variables to bool.
25971         (bypass_conditional_jumps): Change return type from int to void
25972         and adjust function body accordingly.  Change "changed"
25973         variable to bool.
25974         (one_cprop_pass): Ditto.
25976 2023-07-08  Uros Bizjak  <ubizjak@gmail.com>
25978         * gcse.cc (expr_equiv_p): Change return type from int to bool.
25979         (oprs_unchanged_p): Change return type from int to void
25980         and adjust function body accordingly.
25981         (oprs_anticipatable_p): Ditto.
25982         (oprs_available_p): Ditto.
25983         (insert_expr_in_table): Ditto.  Change "antic_p" and "avail_p"
25984         arguments to bool. Change "found" variable to bool.
25985         (load_killed_in_block_p): Change return type from int to void and
25986         adjust function body accordingly.  Change "avail_p" argument to bool.
25987         (pre_expr_reaches_here_p): Change return type from int to void
25988         and adjust function body accordingly.
25989         (pre_delete): Ditto.  Change "changed" variable to bool.
25990         (pre_gcse): Change return type from int to void
25991         and adjust function body accordingly. Change "did_insert" and
25992         "changed" variables to bool.
25993         (one_pre_gcse_pass): Change return type from int to void
25994         and adjust function body accordingly.  Change "changed" variable
25995         to bool.
25996         (should_hoist_expr_to_dom): Change return type from int to void
25997         and adjust function body accordingly.  Change
25998         "visited_allocated_locally" variable to bool.
25999         (hoist_code): Change return type from int to void and adjust
26000         function body accordingly.  Change "changed" variable to bool.
26001         (one_code_hoisting_pass): Ditto.
26002         (pre_edge_insert): Change return type from int to void and adjust
26003         function body accordingly.  Change "did_insert" variable to bool.
26004         (pre_expr_reaches_here_p_work): Change return type from int to void
26005         and adjust function body accordingly.
26006         (simple_mem): Ditto.
26007         (want_to_gcse_p): Change return type from int to void
26008         and adjust function body accordingly.
26009         (can_assign_to_reg_without_clobbers_p): Update function body
26010         for bool return type.
26011         (hash_scan_set): Change "antic_p" and "avail_p" variables to bool.
26012         (pre_insert_copies): Change "added_copy" variable to bool.
26014 2023-07-08  Jonathan Wakely  <jwakely@redhat.com>
26016         PR c++/110595
26017         PR c++/110596
26018         * doc/invoke.texi (Warning Options): Fix typos.
26020 2023-07-07  Jan Hubicka  <jh@suse.cz>
26022         * profile-count.cc (profile_count::dump): Add FUN
26023         parameter; print relative frequency.
26024         (profile_count::debug): Update.
26025         * profile-count.h (profile_count::dump): Update
26026         prototype.
26028 2023-07-07  Roger Sayle  <roger@nextmovesoftware.com>
26030         PR target/43644
26031         PR target/110533
26032         * config/i386/i386-expand.cc (ix86_expand_move): Convert SETs of
26033         TImode destinations from paradoxical SUBREGs (setting the lowpart)
26034         into explicit zero extensions.  Use *insvti_highpart_1 instruction
26035         to set the highpart of a TImode destination.
26037 2023-07-07  Jan Hubicka  <jh@suse.cz>
26039         * predict.cc (force_edge_cold): Use
26040         set_edge_probability_and_rescale_others; improve dumps.
26042 2023-07-07  Jan Hubicka  <jh@suse.cz>
26044         * cfgloopmanip.cc (scale_loop_profile): Fix computation of count_in and scaling blocks
26045         after exit.
26046         * tree-vect-loop-manip.cc (vect_do_peeling): Scale loop profile of the epilogue if bound
26047         is known.
26049 2023-07-07  Juergen Christ  <jchrist@linux.ibm.com>
26051         * config/s390/s390.cc (vec_init): Fix default case
26053 2023-07-07  Vladimir N. Makarov  <vmakarov@redhat.com>
26055         * lra-assigns.cc (assign_by_spills): Add reload insns involving
26056         reload pseudos with non-refined class to be processed on the next
26057         sub-pass.
26058         * lra-constraints.cc (enough_allocatable_hard_regs_p): New func.
26059         (in_class_p): Use it.
26060         (print_curr_insn_alt): New func.
26061         (process_alt_operands): Use it.  Improve debug info.
26062         (curr_insn_transform): Use print_curr_insn_alt.  Refine reload
26063         pseudo class if it is not refined yet.
26065 2023-07-07  Aldy Hernandez  <aldyh@redhat.com>
26067         * value-range.cc (irange::get_bitmask_from_range): Return all the
26068         known bits for a singleton.
26069         (irange::set_range_from_bitmask): Set a range of a singleton when
26070         all bits are known.
26072 2023-07-07  Aldy Hernandez  <aldyh@redhat.com>
26074         * value-range.cc (irange::intersect): Leave normalization to
26075         caller.
26077 2023-07-07  Aldy Hernandez  <aldyh@redhat.com>
26079         * data-streamer-in.cc (streamer_read_value_range): Adjust for
26080         value/mask.
26081         * data-streamer-out.cc (streamer_write_vrange): Same.
26082         * range-op.cc (operator_cast::fold_range): Same.
26083         * value-range-pretty-print.cc
26084         (vrange_printer::print_irange_bitmasks): Same.
26085         * value-range-storage.cc (irange_storage::write_lengths_address):
26086         Same.
26087         (irange_storage::set_irange): Same.
26088         (irange_storage::get_irange): Same.
26089         (irange_storage::size): Same.
26090         (irange_storage::dump): Same.
26091         * value-range-storage.h: Same.
26092         * value-range.cc (debug): New.
26093         (irange_bitmask::dump): New.
26094         (add_vrange): Adjust for value/mask.
26095         (irange::operator=): Same.
26096         (irange::set): Same.
26097         (irange::verify_range): Same.
26098         (irange::operator==): Same.
26099         (irange::contains_p): Same.
26100         (irange::irange_single_pair_union): Same.
26101         (irange::union_): Same.
26102         (irange::intersect): Same.
26103         (irange::invert): Same.
26104         (irange::get_nonzero_bits_from_range): Rename to...
26105         (irange::get_bitmask_from_range): ...this.
26106         (irange::set_range_from_nonzero_bits): Rename to...
26107         (irange::set_range_from_bitmask): ...this.
26108         (irange::set_nonzero_bits): Rename to...
26109         (irange::update_bitmask): ...this.
26110         (irange::get_nonzero_bits): Rename to...
26111         (irange::get_bitmask): ...this.
26112         (irange::intersect_nonzero_bits): Rename to...
26113         (irange::intersect_bitmask): ...this.
26114         (irange::union_nonzero_bits): Rename to...
26115         (irange::union_bitmask): ...this.
26116         (irange_bitmask::verify_mask): New.
26117         * value-range.h (class irange_bitmask): New.
26118         (irange_bitmask::set_unknown): New.
26119         (irange_bitmask::unknown_p): New.
26120         (irange_bitmask::irange_bitmask): New.
26121         (irange_bitmask::get_precision): New.
26122         (irange_bitmask::get_nonzero_bits): New.
26123         (irange_bitmask::set_nonzero_bits): New.
26124         (irange_bitmask::operator==): New.
26125         (irange_bitmask::union_): New.
26126         (irange_bitmask::intersect): New.
26127         (class irange): Friend vrange_printer.
26128         (irange::varying_compatible_p): Adjust for bitmask.
26129         (irange::set_varying): Same.
26130         (irange::set_nonzero): Same.
26132 2023-07-07  Jan Beulich  <jbeulich@suse.com>
26134         * config/i386/sse.md (*vec_extractv2ti): Drop g modifiers.
26136 2023-07-07  Jan Beulich  <jbeulich@suse.com>
26138         * config/i386/sse.md (@vec_extract_hi_<mode>): Drop last
26139         alternative. Switch new last alternative's "isa" attribute to
26140         "avx512vl".
26141         (vec_extract_hi_v32qi): Likewise.
26143 2023-07-07  Pan Li  <pan2.li@intel.com>
26144             Robin Dapp  <rdapp@ventanamicro.com>
26146         * config/riscv/riscv.cc (riscv_emit_mode_set): Avoid emit insn
26147         when FRM_MODE_DYN.
26148         (riscv_mode_entry): Take FRM_MODE_DYN as entry mode.
26149         (riscv_mode_exit): Likewise for exit mode.
26150         (riscv_mode_needed): Likewise for needed mode.
26151         (riscv_mode_after): Likewise for after mode.
26153 2023-07-07  Pan Li  <pan2.li@intel.com>
26155         * config/riscv/vector.md: Fix typo.
26157 2023-07-06  Jan Hubicka  <jh@suse.cz>
26159         PR middle-end/25623
26160         * tree-ssa-loop-ch.cc (ch_base::copy_headers): Scale loop frequency to maximal number
26161         of iterations determined.
26162         * tree-ssa-loop-ivcanon.cc (try_unroll_loop_completely): Likewise.
26164 2023-07-06  Jan Hubicka  <jh@suse.cz>
26166         * cfgloopmanip.cc (scale_loop_profile): Rewrite exit edge
26167         probability update to be safe on loops with subloops.
26168         Make bound parameter to be iteration bound.
26169         * tree-ssa-loop-ivcanon.cc (try_peel_loop): Update call
26170         of scale_loop_profile.
26171         * tree-vect-loop-manip.cc (vect_do_peeling): Likewise.
26173 2023-07-06  Hao Liu OS  <hliu@os.amperecomputing.com>
26175         PR tree-optimization/110449
26176         * tree-vect-loop.cc (vectorizable_induction): use vec_n to replace
26177         vec_loop for the unrolled loop.
26179 2023-07-06  Jan Hubicka  <jh@suse.cz>
26181         * cfg.cc (set_edge_probability_and_rescale_others): New function.
26182         (update_bb_profile_for_threading): Use it; simplify the rest.
26183         * cfg.h (set_edge_probability_and_rescale_others): Declare.
26184         * profile-count.h (profile_probability::apply_scale): New.
26186 2023-07-06  Claudiu Zissulescu  <claziss@gmail.com>
26188         * doc/extend.texi (ARC Built-in Functions): Update documentation
26189         with missing builtins.
26191 2023-07-06  Richard Biener  <rguenther@suse.de>
26193         PR tree-optimization/110556
26194         * tree-ssa-tail-merge.cc (gimple_equal_p): Check
26195         assign code and all operands of non-stores.
26197 2023-07-06  Richard Biener  <rguenther@suse.de>
26199         PR tree-optimization/110563
26200         * tree-vectorizer.h (vect_determine_partial_vectors_and_peeling):
26201         Remove second argument.
26202         * tree-vect-loop.cc (vect_determine_partial_vectors_and_peeling):
26203         Remove for_epilogue_p argument.  Merge assert ...
26204         (vect_analyze_loop_2): ... with check done before determining
26205         partial vectors by moving it after.
26206         * tree-vect-loop-manip.cc (vect_do_peeling): Adjust.
26208 2023-07-06  Thomas Schwinge  <thomas@codesourcery.com>
26210         * ggc-common.cc (gt_pch_note_reorder, gt_pch_save): Tighten up a
26211         few things re 'reorder' option and strings.
26212         * stringpool.cc (gt_pch_p_S): This is now 'gcc_unreachable'.
26214 2023-07-06  Thomas Schwinge  <thomas@codesourcery.com>
26216         * gengtype-parse.cc: Clean up obsolete parametrized structs
26217         remnants.
26218         * gengtype.cc: Likewise.
26219         * gengtype.h: Likewise.
26221 2023-07-06  Thomas Schwinge  <thomas@codesourcery.com>
26223         * gengtype.cc (struct walk_type_data): Remove 'needs_cast_p'.
26224         Adjust all users.
26226 2023-07-06  Thomas Schwinge  <thomas@codesourcery.com>
26228         * gengtype-parse.cc (token_names): Add '"user"'.
26229         * gengtype.h (gty_token): Add 'UNUSED_PARAM_IS' for use with
26230         'FIRST_TOKEN_WITH_VALUE'.
26232 2023-07-06  Thomas Schwinge  <thomas@codesourcery.com>
26234         * doc/gty.texi (GTY Options) <string_length>: Enhance.
26236 2023-07-06  Thomas Schwinge  <thomas@codesourcery.com>
26238         * gengtype.cc (write_root, write_roots): Explicitly reject
26239         'string_length' option.
26240         * doc/gty.texi (GTY Options) <string_length>: Document.
26242 2023-07-06  Thomas Schwinge  <thomas@codesourcery.com>
26244         * ggc-internal.h (ggc_pch_count_object, ggc_pch_alloc_object)
26245         (ggc_pch_write_object): Remove 'bool is_string' argument.
26246         * ggc-common.cc: Adjust.
26247         * ggc-page.cc: Likewise.
26249 2023-07-06  Roger Sayle  <roger@nextmovesoftware.com>
26251         * dwarf2out.cc (mem_loc_descriptor): Handle COPYSIGN.
26253 2023-07-06  Hongyu Wang  <hongyu.wang@intel.com>
26255         * doc/extend.texi: Move x86 inlining rule to a new subsubsection
26256         and add description for inling of function with arch and tune
26257         attributes.
26259 2023-07-06  Richard Biener  <rguenther@suse.de>
26261         PR tree-optimization/110515
26262         * tree-ssa-pre.cc (compute_avail): Make code dealing
26263         with hoisting loads with different alias-sets more
26264         robust.
26266 2023-07-06  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
26268         * tree-vect-stmts.cc (vect_get_strided_load_store_ops): Fix ICE.
26270 2023-07-06  Hongyu Wang  <hongyu.wang@intel.com>
26272         * config/i386/i386.cc (ix86_can_inline_p): If callee has
26273         default arch=x86-64 and tune=generic, do not block the
26274         inlining to its caller. Also allow callee with different
26275         arch= to be inlined if it has always_inline attribute and
26276         it's ISA is subset of caller's.
26278 2023-07-06  liuhongt  <hongtao.liu@intel.com>
26280         * config/i386/i386.cc (ix86_rtx_costs): Adjust rtx_cost for
26281         DF/SFmode AND/IOR/XOR/ANDN operations.
26283 2023-07-06  Andrew Pinski  <apinski@marvell.com>
26285         PR middle-end/110554
26286         * tree-vect-generic.cc (expand_vector_condition): For comparisons,
26287         just build using boolean_type_node instead of the cond_type.
26288         For non-comparisons/non-scalar-bitmask, build a ` != 0` gimple
26289         that will feed into the COND_EXPR.
26291 2023-07-06  liuhongt  <hongtao.liu@intel.com>
26293         PR target/110170
26294         * config/i386/i386.md (movdf_internal): Disparage slightly for
26295         2 alternatives (r,v) and (v,r) by adding constraint modifier
26296         '?'.
26298 2023-07-06  Jeevitha Palanisamy  <jeevitha@linux.ibm.com>
26300         PR target/106907
26301         * config/rs6000/rs6000.cc (rs6000_expand_vector_extract): Remove redundant
26302         initialization of new_addr.
26304 2023-07-06  Hao Liu  <hliu@os.amperecomputing.com>
26306         PR tree-optimization/110474
26307         * tree-vect-loop.cc (vect_analyze_loop_2): unscale the VF by suggested
26308         unroll factor while selecting the epilog vect loop VF.
26310 2023-07-05  Andrew MacLeod  <amacleod@redhat.com>
26312         * gimple-range-gori.cc (compute_operand_range): Convert to a tail
26313         call.
26315 2023-07-05  Andrew MacLeod  <amacleod@redhat.com>
26317         * gimple-range-gori.cc (compute_operand_range): After calling
26318         compute_operand2_range, recursively call self if needed.
26319         (compute_operand2_range): Turn into a leaf function.
26320         (gori_compute::compute_operand1_and_operand2_range): Finish
26321         operand2 calculation.
26322         * gimple-range-gori.h (compute_operand2_range): Remove name param.
26324 2023-07-05  Andrew MacLeod  <amacleod@redhat.com>
26326         * gimple-range-gori.cc (compute_operand_range): After calling
26327         compute_operand1_range, recursively call self if needed.
26328         (compute_operand1_range): Turn into a leaf function.
26329         (gori_compute::compute_operand1_and_operand2_range): Finish
26330         operand1 calculation.
26331         * gimple-range-gori.h (compute_operand1_range): Remove name param.
26333 2023-07-05  Andrew MacLeod  <amacleod@redhat.com>
26335         * gimple-range-gori.cc (compute_operand_range): Check for
26336         operand interdependence when both op1 and op2 are computed.
26337         (compute_operand1_and_operand2_range): No checks required now.
26339 2023-07-05  Andrew MacLeod  <amacleod@redhat.com>
26341         * gimple-range-gori.cc (compute_operand_range): Check for
26342         a relation between op1 and op2 and use that instead.
26343         (compute_operand1_range): Don't look for a relation override.
26344         (compute_operand2_range): Ditto.
26346 2023-07-05  Jonathan Wakely  <jwakely@redhat.com>
26348         * doc/contrib.texi (Contributors): Update my entry.
26350 2023-07-05  Filip Kastl  <filip.kastl@gmail.com>
26352         * value-prof.cc (gimple_mod_subtract_transform): Correct edge
26353         prob calculation.
26355 2023-07-05  Uros Bizjak  <ubizjak@gmail.com>
26357         * sched-int.h (struct haifa_sched_info): Change can_schedule_ready_p,
26358         scehdule_more_p and contributes_to_priority indirect frunction
26359         type from int to bool.
26360         (no_real_insns_p): Change return type from int to bool.
26361         (contributes_to_priority): Ditto.
26362         * haifa-sched.cc (no_real_insns_p): Change return type from
26363         int to bool and adjust function body accordingly.
26364         * modulo-sched.cc (try_scheduling_node_in_cycle): Change "success"
26365         variable type from int to bool.
26366         (ps_insn_advance_column): Change return type from int to bool.
26367         (ps_has_conflicts): Ditto. Change "has_conflicts"
26368         variable type from int to bool.
26369         * sched-deps.cc (deps_may_trap_p): Change return type from int to bool.
26370         (conditions_mutex_p): Ditto.
26371         * sched-ebb.cc (schedule_more_p): Ditto.
26372         (ebb_contributes_to_priority): Change return type from
26373         int to bool and adjust function body accordingly.
26374         * sched-rgn.cc (is_cfg_nonregular): Ditto.
26375         (check_live_1): Ditto.
26376         (is_pfree): Ditto.
26377         (find_conditional_protection): Ditto.
26378         (is_conditionally_protected): Ditto.
26379         (is_prisky): Ditto.
26380         (is_exception_free): Ditto.
26381         (haifa_find_rgns): Change "unreachable" and "too_large_failure"
26382         variables from int to bool.
26383         (extend_rgns): Change "rescan" variable from int to bool.
26384         (check_live): Change return type from
26385         int to bool and adjust function body accordingly.
26386         (can_schedule_ready_p): Ditto.
26387         (schedule_more_p): Ditto.
26388         (contributes_to_priority): Ditto.
26390 2023-07-05  Robin Dapp  <rdapp@ventanamicro.com>
26392         * doc/md.texi: Document that vec_set and vec_extract must not
26393         fail.
26394         * gimple-isel.cc (gimple_expand_vec_set_expr): Rename this...
26395         (gimple_expand_vec_set_extract_expr): ...to this.
26396         (gimple_expand_vec_exprs): Call renamed function.
26397         * internal-fn.cc (vec_extract_direct): Add.
26398         (expand_vec_extract_optab_fn): New function to expand
26399         vec_extract optab.
26400         (direct_vec_extract_optab_supported_p): Add.
26401         * internal-fn.def (VEC_EXTRACT): Add.
26402         * optabs.cc (can_vec_extract_var_idx_p): New function.
26403         * optabs.h (can_vec_extract_var_idx_p): Declare.
26405 2023-07-05  Robin Dapp  <rdapp@ventanamicro.com>
26407         * config/riscv/autovec.md: Add gen_lowpart.
26409 2023-07-05  Robin Dapp  <rdapp@ventanamicro.com>
26411         * config/riscv/autovec.md: Allow register index operand.
26413 2023-07-05  Pan Li  <pan2.li@intel.com>
26415         * config/riscv/riscv-vector-builtins.cc
26416         (function_expander::use_exact_insn): Use FRM_DYN instead of const0.
26418 2023-07-05  Robin Dapp  <rdapp@ventanamicro.com>
26420         * config/riscv/autovec.md: Use float_truncate.
26422 2023-07-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
26424         * internal-fn.cc (internal_fn_len_index): Apply
26425         LEN_MASK_GATHER_LOAD/SCATTER_STORE into vectorizer.
26426         (internal_fn_mask_index): Ditto.
26427         * optabs-query.cc (supports_vec_gather_load_p): Ditto.
26428         (supports_vec_scatter_store_p): Ditto.
26429         * tree-vect-data-refs.cc (vect_gather_scatter_fn_p): Ditto.
26430         * tree-vect-patterns.cc (vect_recog_gather_scatter_pattern): Ditto.
26431         * tree-vect-stmts.cc (check_load_store_for_partial_vectors): Ditto.
26432         (vect_get_strided_load_store_ops): Ditto.
26433         (vectorizable_store): Ditto.
26434         (vectorizable_load): Ditto.
26436 2023-07-05  Robin Dapp  <rdapp@ventanamicro.com>
26437             Juzhe-Zhong  <juzhe.zhong@rivai.ai>
26439         * simplify-rtx.cc (native_encode_rtx): Ditto.
26440         (native_decode_vector_rtx): Ditto.
26441         (simplify_const_vector_byte_offset): Ditto.
26442         (simplify_const_vector_subreg): Ditto.
26443         * tree.cc (build_truth_vector_type_for_mode): Ditto.
26444         * varasm.cc (output_constant_pool_2): Ditto.
26446 2023-07-05  YunQiang Su  <yunqiang.su@cipunited.com>
26448         * config/mips/mips.cc (mips_expand_block_move): don't expand for
26449         r6 with -mno-unaligned-access option if one or both of src and
26450         dest are unaligned. restruct: return directly if length is not const.
26451         (mips_block_move_straight): emit_move if ISA_HAS_UNALIGNED_ACCESS.
26453 2023-07-05  Jan Beulich  <jbeulich@suse.com>
26455         PR target/100711
26456         * config/i386/sse.md: New splitters to simplify
26457         not;vec_duplicate as a singular vpternlog.
26458         (one_cmpl<mode>2): Allow broadcast for operand 1.
26459         (<mask_codefor>one_cmpl<mode>2<mask_name>): Likewise.
26461 2023-07-05  Jan Beulich  <jbeulich@suse.com>
26463         PR target/100711
26464         * config/i386/sse.md: New splitters to simplify
26465         not;vec_duplicate;{ior,xor} as vec_duplicate;{iornot,xnor}.
26467 2023-07-05  Jan Beulich  <jbeulich@suse.com>
26469         PR target/100711
26470         * config/i386/sse.md: Permit non-immediate operand 1 in AVX2
26471         form of splitter for PR target/100711.
26473 2023-07-05  Richard Biener  <rguenther@suse.de>
26475         PR middle-end/110541
26476         * tree.def (VEC_PERM_EXPR): Adjust documentation to reflect
26477         reality.
26479 2023-07-05  Jan Beulich  <jbeulich@suse.com>
26481         PR target/93768
26482         * config/i386/sse.md (*andnot<mode>3): Add new alternatives
26483         for memory form operand 1.
26485 2023-07-05  Jan Beulich  <jbeulich@suse.com>
26487         PR target/93768
26488         * config/i386/i386.cc (ix86_rtx_costs): Further special-case
26489         bitwise vector operations.
26490         * config/i386/sse.md (*iornot<mode>3): New insn.
26491         (*xnor<mode>3): Likewise.
26492         (*<nlogic><mode>3): Likewise.
26493         (andor): New code iterator.
26494         (nlogic): New code attribute.
26495         (ternlog_nlogic): Likewise.
26497 2023-07-05  Richard Biener  <rguenther@suse.de>
26499         * tree-vect-stmts.cc (vect_mark_relevant): Fix typo.
26501 2023-07-05  yulong  <shiyulong@iscas.ac.cn>
26503         * config/riscv/vector.md: Add float16 attr at sew、vlmul and ratio.
26505 2023-07-05  yulong  <shiyulong@iscas.ac.cn>
26507         * config/riscv/genrvv-type-indexer.cc (valid_type): Enable FP16 tuple.
26508         * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): New macro.
26509         (ADJUST_ALIGNMENT): Ditto.
26510         (RVV_TUPLE_PARTIAL_MODES): Ditto.
26511         (ADJUST_NUNITS): Ditto.
26512         * config/riscv/riscv-vector-builtins-types.def (vfloat16mf4x2_t):
26513         New types.
26514         (vfloat16mf4x3_t): Ditto.
26515         (vfloat16mf4x4_t): Ditto.
26516         (vfloat16mf4x5_t): Ditto.
26517         (vfloat16mf4x6_t): Ditto.
26518         (vfloat16mf4x7_t): Ditto.
26519         (vfloat16mf4x8_t): Ditto.
26520         (vfloat16mf2x2_t): Ditto.
26521         (vfloat16mf2x3_t): Ditto.
26522         (vfloat16mf2x4_t): Ditto.
26523         (vfloat16mf2x5_t): Ditto.
26524         (vfloat16mf2x6_t): Ditto.
26525         (vfloat16mf2x7_t): Ditto.
26526         (vfloat16mf2x8_t): Ditto.
26527         (vfloat16m1x2_t): Ditto.
26528         (vfloat16m1x3_t): Ditto.
26529         (vfloat16m1x4_t): Ditto.
26530         (vfloat16m1x5_t): Ditto.
26531         (vfloat16m1x6_t): Ditto.
26532         (vfloat16m1x7_t): Ditto.
26533         (vfloat16m1x8_t): Ditto.
26534         (vfloat16m2x2_t): Ditto.
26535         (vfloat16m2x3_t): Ditto.
26536         (vfloat16m2x4_t): Ditto.
26537         (vfloat16m4x2_t): Ditto.
26538         * config/riscv/riscv-vector-builtins.def (vfloat16mf4x2_t): New macro.
26539         (vfloat16mf4x3_t): Ditto.
26540         (vfloat16mf4x4_t): Ditto.
26541         (vfloat16mf4x5_t): Ditto.
26542         (vfloat16mf4x6_t): Ditto.
26543         (vfloat16mf4x7_t): Ditto.
26544         (vfloat16mf4x8_t): Ditto.
26545         (vfloat16mf2x2_t): Ditto.
26546         (vfloat16mf2x3_t): Ditto.
26547         (vfloat16mf2x4_t): Ditto.
26548         (vfloat16mf2x5_t): Ditto.
26549         (vfloat16mf2x6_t): Ditto.
26550         (vfloat16mf2x7_t): Ditto.
26551         (vfloat16mf2x8_t): Ditto.
26552         (vfloat16m1x2_t): Ditto.
26553         (vfloat16m1x3_t): Ditto.
26554         (vfloat16m1x4_t): Ditto.
26555         (vfloat16m1x5_t): Ditto.
26556         (vfloat16m1x6_t): Ditto.
26557         (vfloat16m1x7_t): Ditto.
26558         (vfloat16m1x8_t): Ditto.
26559         (vfloat16m2x2_t): Ditto.
26560         (vfloat16m2x3_t): Ditto.
26561         (vfloat16m2x4_t): Ditto.
26562         (vfloat16m4x2_t): Ditto.
26563         * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): New.
26564         * config/riscv/riscv.md: New.
26565         * config/riscv/vector-iterators.md: New.
26567 2023-07-04  Andrew Pinski  <apinski@marvell.com>
26569         PR tree-optimization/110487
26570         * match.pd (a !=/== CST1 ? CST2 : CST3): Always
26571         build a nonstandard integer and use that.
26573 2023-07-04  Andrew Pinski  <apinski@marvell.com>
26575         * match.pd (a?-1:0): Cast type an integer type
26576         rather the type before the negative.
26577         (a?0:-1): Likewise.
26579 2023-07-04  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
26581         * config/xtensa/xtensa.cc (machine_function, xtensa_expand_prologue):
26582         Change to use HARD_REG_BIT and its macros.
26583         * config/xtensa/xtensa.md
26584         (peephole2: regmove elimination during DFmode input reload):
26585         Likewise.
26587 2023-07-04  Richard Biener  <rguenther@suse.de>
26589         PR tree-optimization/110491
26590         * tree-ssa-phiopt.cc (match_simplify_replacement): Check
26591         whether the PHI args are possibly undefined before folding
26592         the COND_EXPR.
26594 2023-07-04  Pan Li  <pan2.li@intel.com>
26595             Thomas Schwinge  <thomas@codesourcery.com>
26597         * lto-streamer-in.cc (lto_input_mode_table): Stream in the mode
26598         bits for machine mode table.
26599         * lto-streamer-out.cc (lto_write_mode_table): Stream out the
26600         HOST machine mode bits.
26601         * lto-streamer.h (struct lto_file_decl_data): New fields mode_bits.
26602         * tree-streamer.cc (streamer_mode_table): Take MAX_MACHINE_MODE
26603         as the table size.
26604         * tree-streamer.h (streamer_mode_table): Ditto.
26605         (bp_pack_machine_mode): Take 1 << ceil_log2 (MAX_MACHINE_MODE)
26606         as the packing limit.
26607         (bp_unpack_machine_mode): Ditto with 'file_data->mode_bits'.
26609 2023-07-04  Thomas Schwinge  <thomas@codesourcery.com>
26611         * lto-streamer.h (class lto_input_block): Capture
26612         'lto_file_decl_data *file_data' instead of just
26613         'unsigned char *mode_table'.
26614         * ipa-devirt.cc (ipa_odr_read_section): Adjust.
26615         * ipa-fnsummary.cc (inline_read_section): Likewise.
26616         * ipa-icf.cc (sem_item_optimizer::read_section): Likewise.
26617         * ipa-modref.cc (read_section): Likewise.
26618         * ipa-prop.cc (ipa_prop_read_section, read_replacements_section):
26619         Likewise.
26620         * ipa-sra.cc (isra_read_summary_section): Likewise.
26621         * lto-cgraph.cc (input_cgraph_opt_section): Likewise.
26622         * lto-section-in.cc (lto_create_simple_input_block): Likewise.
26623         * lto-streamer-in.cc (lto_read_body_or_constructor)
26624         (lto_input_toplevel_asms): Likewise.
26625         * tree-streamer.h (bp_unpack_machine_mode): Likewise.
26627 2023-07-04  Richard Biener  <rguenther@suse.de>
26629         * tree-ssa-phiopt.cc (pass_phiopt::execute): Mark SSA undefs.
26630         (empty_bb_or_one_feeding_into_p): Check for them.
26631         * tree-ssa.h (gimple_uses_undefined_value_p): Remove.
26632         * tree-ssa.cc (gimple_uses_undefined_value_p): Likewise.
26634 2023-07-04  Richard Biener  <rguenther@suse.de>
26636         * tree-vect-loop.cc (vect_analyze_loop_costing): Remove
26637         check guarding scalar_niter underflow.
26639 2023-07-04  Hao Liu  <hliu@os.amperecomputing.com>
26641         PR tree-optimization/110531
26642         * tree-vect-loop.cc (vect_analyze_loop_1): initialize
26643         slp_done_for_suggested_uf to false.
26645 2023-07-04  Richard Biener  <rguenther@suse.de>
26647         PR tree-optimization/110228
26648         * tree-ssa-ifcombine.cc (pass_tree_ifcombine::execute):
26649         Mark SSA may-undefs.
26650         (bb_no_side_effects_p): Check stmt uses for undefs.
26652 2023-07-04  Richard Biener  <rguenther@suse.de>
26654         PR tree-optimization/110436
26655         * tree-vect-stmts.cc (vect_mark_relevant): Expand dumping,
26656         force live but not relevant pattern stmts relevant.
26658 2023-07-04  Lili Cui  <lili.cui@intel.com>
26660         * config/i386/i386.h: Add PTA_ENQCMD and PTA_UINTR to PTA_SIERRAFOREST.
26661         * doc/invoke.texi: Update new isa to march=sierraforest and grandridge.
26663 2023-07-04  Richard Biener  <rguenther@suse.de>
26665         PR middle-end/110495
26666         * tree.h (TREE_OVERFLOW): Do not mention VECTOR_CSTs
26667         since we do not set TREE_OVERFLOW on those since the
26668         introduction of VL vectors.
26669         * match.pd (x +- CST +- CST): For VECTOR_CST do not look
26670         at TREE_OVERFLOW to determine validity of association.
26672 2023-07-04  Richard Biener  <rguenther@suse.de>
26674         PR tree-optimization/110310
26675         * tree-vect-loop.cc (vect_determine_partial_vectors_and_peeling):
26676         Move costing part ...
26677         (vect_analyze_loop_costing): ... here.  Integrate better
26678         estimate for epilogues from ...
26679         (vect_analyze_loop_2): Call vect_determine_partial_vectors_and_peeling
26680         with actual epilogue status.
26681         * tree-vect-loop-manip.cc (vect_do_peeling): ... here and
26682         avoid cancelling epilogue vectorization.
26683         (vect_update_epilogue_niters): Remove.  No longer update
26684         epilogue LOOP_VINFO_NITERS.
26686 2023-07-04  Pan Li  <pan2.li@intel.com>
26688         Revert:
26689         2023-07-03  Pan Li  <pan2.li@intel.com>
26691         * config/riscv/vector.md: Fix typo.
26693 2023-07-04  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
26695         * doc/md.texi: Add len_mask_gather_load/len_mask_scatter_store.
26696         * internal-fn.cc (expand_scatter_store_optab_fn): Ditto.
26697         (expand_gather_load_optab_fn): Ditto.
26698         (internal_load_fn_p): Ditto.
26699         (internal_store_fn_p): Ditto.
26700         (internal_gather_scatter_fn_p): Ditto.
26701         (internal_fn_len_index): Ditto.
26702         (internal_fn_mask_index): Ditto.
26703         (internal_fn_stored_value_index): Ditto.
26704         * internal-fn.def (LEN_MASK_GATHER_LOAD): Ditto.
26705         (LEN_MASK_SCATTER_STORE): Ditto.
26706         * optabs.def (OPTAB_CD): Ditto.
26708 2023-07-04  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
26710         * config/riscv/riscv-vsetvl.cc
26711         (vector_insn_info::parse_insn): Add early break.
26713 2023-07-04  Hans-Peter Nilsson  <hp@axis.com>
26715         * config/cris/cris.md (CRIS_UNSPEC_SWAP_BITS): Remove.
26716         ("cris_swap_bits", "ctzsi2"): Use bitreverse instead.
26718 2023-07-04  Hans-Peter Nilsson  <hp@axis.com>
26720         * dwarf2out.cc (mem_loc_descriptor): Handle BITREVERSE.
26722 2023-07-03  Christoph Müllner  <christoph.muellner@vrull.eu>
26724         * common/config/riscv/riscv-common.cc: Add support for zvbb,
26725         zvbc, zvkg, zvkned, zvknha, zvknhb, zvksed, zvksh, zvkn,
26726         zvknc, zvkng, zvks, zvksc, zvksg, zvkt and the implied subsets.
26727         * config/riscv/arch-canonicalize: Add canonicalization info for
26728         zvkn, zvknc, zvkng, zvks, zvksc, zvksg.
26729         * config/riscv/riscv-opts.h (MASK_ZVBB): New macro.
26730         (MASK_ZVBC): Likewise.
26731         (TARGET_ZVBB): Likewise.
26732         (TARGET_ZVBC): Likewise.
26733         (MASK_ZVKG): Likewise.
26734         (MASK_ZVKNED): Likewise.
26735         (MASK_ZVKNHA): Likewise.
26736         (MASK_ZVKNHB): Likewise.
26737         (MASK_ZVKSED): Likewise.
26738         (MASK_ZVKSH): Likewise.
26739         (MASK_ZVKN): Likewise.
26740         (MASK_ZVKNC): Likewise.
26741         (MASK_ZVKNG): Likewise.
26742         (MASK_ZVKS): Likewise.
26743         (MASK_ZVKSC): Likewise.
26744         (MASK_ZVKSG): Likewise.
26745         (MASK_ZVKT): Likewise.
26746         (TARGET_ZVKG): Likewise.
26747         (TARGET_ZVKNED): Likewise.
26748         (TARGET_ZVKNHA): Likewise.
26749         (TARGET_ZVKNHB): Likewise.
26750         (TARGET_ZVKSED): Likewise.
26751         (TARGET_ZVKSH): Likewise.
26752         (TARGET_ZVKN): Likewise.
26753         (TARGET_ZVKNC): Likewise.
26754         (TARGET_ZVKNG): Likewise.
26755         (TARGET_ZVKS): Likewise.
26756         (TARGET_ZVKSC): Likewise.
26757         (TARGET_ZVKSG): Likewise.
26758         (TARGET_ZVKT): Likewise.
26759         * config/riscv/riscv.opt: Introduction of riscv_zv{b,k}_subext.
26761 2023-07-03  Andrew Pinski  <apinski@marvell.com>
26763         PR middle-end/110510
26764         * except.h (struct eh_landing_pad_d): Add chain_next GTY.
26766 2023-07-03  Iain Sandoe  <iain@sandoe.co.uk>
26768         * config/darwin.h: Avoid duplicate multiply_defined specs on
26769         earlier Darwin versions with shared libgcc.
26771 2023-07-03  Uros Bizjak  <ubizjak@gmail.com>
26773         * tree.h (tree_int_cst_equal): Change return type from int to bool.
26774         (operand_equal_for_phi_arg_p): Ditto.
26775         (tree_map_base_marked_p): Ditto.
26776         * tree.cc (contains_placeholder_p): Update function body
26777         for bool return type.
26778         (type_cache_hasher::equal): Ditto.
26779         (tree_map_base_hash): Change return type
26780         from int to void and adjust function body accordingly.
26781         (tree_int_cst_equal): Ditto.
26782         (operand_equal_for_phi_arg_p): Ditto.
26783         (get_narrower): Change "first" variable to bool.
26784         (cl_option_hasher::equal): Update function body for bool return type.
26785         * ggc.h (ggc_set_mark): Change return type from int to bool.
26786         (ggc_marked_p): Ditto.
26787         * ggc-page.cc (gt_ggc_mx): Change return type
26788         from int to void and adjust function body accordingly.
26789         (ggc_set_mark): Ditto.
26791 2023-07-03  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
26793         * config/riscv/autovec.md: Change order of
26794         LEN_MASK_LOAD/LEN_MASK_STORE/LEN_LOAD/LEN_STORE arguments.
26795         * config/riscv/riscv-v.cc (expand_load_store): Ditto.
26796         * doc/md.texi: Ditto.
26797         * gimple-fold.cc (gimple_fold_partial_load_store_mem_ref): Ditto.
26798         * internal-fn.cc (len_maskload_direct): Ditto.
26799         (len_maskstore_direct): Ditto.
26800         (add_len_and_mask_args): New function.
26801         (expand_partial_load_optab_fn): Change order of
26802         LEN_MASK_LOAD/LEN_MASK_STORE/LEN_LOAD/LEN_STORE arguments.
26803         (expand_partial_store_optab_fn): Ditto.
26804         (internal_fn_len_index): New function.
26805         (internal_fn_mask_index): Change order of
26806         LEN_MASK_LOAD/LEN_MASK_STORE/LEN_LOAD/LEN_STORE arguments.
26807         (internal_fn_stored_value_index): Ditto.
26808         (internal_len_load_store_bias): Ditto.
26809         * internal-fn.h (internal_fn_len_index): New function.
26810         * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Change order of
26811         LEN_MASK_LOAD/LEN_MASK_STORE/LEN_LOAD/LEN_STORE arguments.
26812         * tree-vect-stmts.cc (vectorizable_store): Ditto.
26813         (vectorizable_load): Ditto.
26815 2023-07-03  Gaius Mulley  <gaiusmod2@gmail.com>
26817         PR modula2/110125
26818         * doc/gm2.texi (Semantic checking): Include examples using
26819         -Wuninit-variable-checking.
26821 2023-07-03  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
26823         * config/riscv/autovec-opt.md (*double_widen_fnma<mode>): New pattern.
26824         (*single_widen_fnma<mode>): Ditto.
26825         (*double_widen_fms<mode>): Ditto.
26826         (*single_widen_fms<mode>): Ditto.
26827         (*double_widen_fnms<mode>): Ditto.
26828         (*single_widen_fnms<mode>): Ditto.
26830 2023-07-03  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
26832         * config/riscv/autovec-opt.md (@pred_single_widen_mul<any_extend:su><mode>): Change "@"
26833         into "*" in pattern name which simplifies build files.
26834         (*pred_single_widen_mul<any_extend:su><mode>): Ditto.
26835         (*pred_single_widen_mul<mode>): New pattern.
26837 2023-07-03  Richard Sandiford  <richard.sandiford@arm.com>
26839         * config/aarch64/aarch64-simd.md (vec_extract<mode><Vhalf>): Expect
26840         the index to be 0 or 1.
26842 2023-07-03  Lehua Ding  <lehua.ding@rivai.ai>
26844         Revert:
26845         2023-07-03  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
26847         * config/riscv/autovec-opt.md (*double_widen_fnma<mode>): New pattern.
26848         (*single_widen_fnma<mode>): Ditto.
26849         (*double_widen_fms<mode>): Ditto.
26850         (*single_widen_fms<mode>): Ditto.
26851         (*double_widen_fnms<mode>): Ditto.
26852         (*single_widen_fnms<mode>): Ditto.
26854 2023-07-03  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
26856         * config/riscv/autovec-opt.md (*double_widen_fnma<mode>): New pattern.
26857         (*single_widen_fnma<mode>): Ditto.
26858         (*double_widen_fms<mode>): Ditto.
26859         (*single_widen_fms<mode>): Ditto.
26860         (*double_widen_fnms<mode>): Ditto.
26861         (*single_widen_fnms<mode>): Ditto.
26863 2023-07-03  Pan Li  <pan2.li@intel.com>
26865         * config/riscv/vector.md: Fix typo.
26867 2023-07-03  Richard Biener  <rguenther@suse.de>
26869         PR tree-optimization/110506
26870         * tree-vect-patterns.cc (vect_recog_rotate_pattern): Re-order
26871         TYPE_PRECISION access with INTEGRAL_TYPE_P check.
26873 2023-07-03  Richard Biener  <rguenther@suse.de>
26875         PR tree-optimization/110506
26876         * tree-ssa-ccp.cc (get_value_for_expr): Check for integral
26877         type before relying on TYPE_PRECISION to produce a nonzero mask.
26879 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
26881         * config/mips/mips.md(*and<mode>3_mips16): Generates
26882         ZEB/ZEH instructions.
26884 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
26886         * config/mips/mips.cc(mips_9bit_offset_address_p): Restrict the
26887         address register to M16_REGS for MIPS16.
26888         (BUILTIN_AVAIL_MIPS16E2): Defined a new macro.
26889         (AVAIL_MIPS16E2_OR_NON_MIPS16): Same as above.
26890         (AVAIL_NON_MIPS16 (cache..)): Update to
26891         AVAIL_MIPS16E2_OR_NON_MIPS16.
26892         * config/mips/mips.h (ISA_HAS_CACHE): Add clause for ISA_HAS_MIPS16E2.
26893         * config/mips/mips.md (mips_cache): Mark as extended MIPS16.
26895 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
26897         * config/mips/mips.h(ISA_HAS_9BIT_DISPLACEMENT): Add clause
26898         for ISA_HAS_MIPS16E2.
26899         (ISA_HAS_SYNC): Same as above.
26900         (ISA_HAS_LL_SC): Same as above.
26902 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
26904         * config/mips/mips.cc(mips_expand_ins_as_unaligned_store):
26905         Add logics for generating instruction.
26906         * config/mips/mips.h(ISA_HAS_LWL_LWR): Add clause for ISA_HAS_MIPS16E2.
26907         * config/mips/mips.md(mov_<load>l): Generates instructions.
26908         (mov_<load>r): Same as above.
26909         (mov_<store>l): Adjusted for the conditions above.
26910         (mov_<store>r): Same as above.
26911         (mov_<store>l_mips16e2): Add machine description for `define_insn mov_<store>l_mips16e2`.
26912         (mov_<store>r_mips16e2): Add machine description for `define_insn mov_<store>r_mips16e2`.
26914 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
26916         * config/mips/mips.cc(mips_symbol_insns_1): Generates LUI instruction.
26917         (mips_const_insns): Same as above.
26918         (mips_output_move): Same as above.
26919         (mips_output_function_prologue): Same as above.
26920         * config/mips/mips.md: Same as above
26922 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
26924         * config/mips/constraints.md(Yz): New constraints for mips16e2.
26925         * config/mips/mips-protos.h(mips_bit_clear_p): Declared new function.
26926         (mips_bit_clear_info): Same as above.
26927         * config/mips/mips.cc(mips_bit_clear_info): New function for
26928         generating instructions.
26929         (mips_bit_clear_p): Same as above.
26930         * config/mips/mips.h(ISA_HAS_EXT_INS): Add clause for ISA_HAS_MIPS16E2.
26931         * config/mips/mips.md(extended_mips16): Generates EXT and INS instructions.
26932         (*and<mode>3): Generates INS instruction.
26933         (*and<mode>3_mips16): Generates EXT, INS and ANDI instructions.
26934         (ior<mode>3): Add logics for ORI instruction.
26935         (*ior<mode>3_mips16_asmacro): Generates ORI instrucion.
26936         (*ior<mode>3_mips16): Add logics for XORI instruction.
26937         (*xor<mode>3_mips16): Generates XORI instrucion.
26938         (*extzv<mode>): Add logics for EXT instruction.
26939         (*insv<mode>): Add logics for INS instruction.
26940         * config/mips/predicates.md(bit_clear_operand): New predicate for
26941         generating bitwise instructions.
26942         (and_reg_operand): Add logics for generating bitwise instructions.
26944 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
26946         * config/mips/mips.cc(mips_regno_mode_ok_for_base_p): Generate instructions
26947         that uses global pointer register.
26948         (mips16_unextended_reference_p): Same as above.
26949         (mips_pic_base_register): Same as above.
26950         (mips_init_relocs): Same as above.
26951         * config/mips/mips.h(MIPS16_GP_LOADS): Defined a new macro.
26952         (GLOBAL_POINTER_REGNUM): Moved to machine description `mips.md`.
26953         * config/mips/mips.md(GLOBAL_POINTER_REGNUM): Moved to here from above.
26954         (*lowsi_mips16_gp):New `define_insn *low<mode>_mips16`.
26956 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
26958         * config/mips/mips.h(ISA_HAS_CONDMOVE): Add condition for ISA_HAS_MIPS16E2.
26959         * config/mips/mips.md(*mov<GPR:mode>_on_<MOVECC:mode>): Add logics for MOVx insts.
26960         (*mov<GPR:mode>_on_<MOVECC:mode>_mips16e2): Generate MOVx instruction.
26961         (*mov<GPR:mode>_on_<GPR2:mode>_ne): Add logics for MOVx insts.
26962         (*mov<GPR:mode>_on_<GPR2:mode>_ne_mips16e2): Generate MOVx instruction.
26963         * config/mips/predicates.md(reg_or_0_operand_mips16e2): New predicate for MOVx insts.
26965 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
26967         * config/mips/mips.cc(mips_file_start): Add mips16e2 info
26968         for output file.
26969         * config/mips/mips.h(__mips_mips16e2): Defined a new
26970         predefine macro.
26971         (ISA_HAS_MIPS16E2): Defined a new macro.
26972         (ASM_SPEC): Pass mmips16e2 to the assembler.
26973         * config/mips/mips.opt: Add -m(no-)mips16e2 option.
26974         * config/mips/predicates.md: Add clause for TARGET_MIPS16E2.
26975         * doc/invoke.texi: Add -m(no-)mips16e2 option..
26977 2023-07-02  Jakub Jelinek  <jakub@redhat.com>
26979         PR tree-optimization/110508
26980         * tree-ssa-math-opts.cc (match_uaddc_usubc): Only replace re2 with
26981         REALPART_EXPR opf nlhs if re2 is non-NULL.
26983 2023-07-02  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
26985         * config/xtensa/xtensa.cc (xtensa_match_CLAMPS_imms_p):
26986         Simplify.
26987         * config/xtensa/xtensa.md (*xtensa_clamps):
26988         Add TARGET_MINMAX to the condition.
26990 2023-07-02  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
26992         * config/xtensa/xtensa.md (*eqne_INT_MIN):
26993         Add missing ":SI" to the match_operator.
26995 2023-07-02  Iain Sandoe  <iain@sandoe.co.uk>
26997         PR target/108743
26998         * config/darwin.opt: Add fconstant-cfstrings alias to
26999         mconstant-cfstrings.
27000         * doc/invoke.texi: Amend invocation descriptions to reflect
27001         that the fconstant-cfstrings is a target-option alias and to
27002         add the missing mconstant-cfstrings option description to the
27003         Darwin section.
27005 2023-07-01  Jan Hubicka  <jh@suse.cz>
27007         * tree-cfg.cc (gimple_duplicate_sese_region): Add elliminated_edge
27008         parmaeter; update profile.
27009         * tree-cfg.h (gimple_duplicate_sese_region): Update prototype.
27010         * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Rename to ...
27011         (static_loop_exit): ... this; return the edge to be elliminated.
27012         (ch_base::copy_headers): Handle profile updating for eliminated exits.
27014 2023-07-01  Roger Sayle  <roger@nextmovesoftware.com>
27016         * config/i386/i386-features.cc (compute_convert_gain): Provide
27017         gains/costs for ROTATE and ROTATERT (by an integer constant).
27018         (general_scalar_chain::convert_rotate): New helper function to
27019         convert a DImode or SImode rotation by an integer constant into
27020         SSE vector form.
27021         (general_scalar_chain::convert_insn): Call the new convert_rotate
27022         for ROTATE and ROTATERT.
27023         (general_scalar_to_vector_candidate_p): Consider ROTATE and
27024         ROTATERT to be candidates if the second operand is an integer
27025         constant, valid for a rotation (or shift) in the given mode.
27026         * config/i386/i386-features.h (general_scalar_chain): Add new
27027         helper method convert_rotate.
27029 2023-07-01  Jan Hubicka  <jh@suse.cz>
27031         PR tree-optimization/103680
27032         * cfg.cc (update_bb_profile_for_threading): Fix profile update;
27033         make message clearer.
27035 2023-06-30  Qing Zhao  <qing.zhao@oracle.com>
27037         PR tree-optimization/101832
27038         * tree-object-size.cc (addr_object_size): Handle structure/union type
27039         when it has flexible size.
27041 2023-06-30  Eric Botcazou  <ebotcazou@adacore.com>
27043         * gimple-fold.cc (fold_array_ctor_reference): Fix head comment.
27044         (fold_nonarray_ctor_reference): Likewise.  Specifically deal
27045         with integral bit-fields.
27046         (fold_ctor_reference): Make sure that the constructor uses the
27047         native storage order.
27049 2023-06-30  Jan Hubicka  <jh@suse.cz>
27051         PR middle-end/109849
27052         * predict.cc (estimate_bb_frequencies): Turn to static function.
27053         (expr_expected_value_1): Fix handling of binary expressions with
27054         predicted values.
27055         * predict.def (PRED_MALLOC_NONNULL): Move later in the priority queue.
27056         (PRED_BUILTIN_EXPECT_WITH_PROBABILITY): Move to almost top of the priority
27057         queue.
27058         * predict.h (estimate_bb_frequencies): No longer declare it.
27060 2023-06-30  Uros Bizjak  <ubizjak@gmail.com>
27062         * fold-const.h (multiple_of_p): Change return type from int to bool.
27063         * fold-const.cc (split_tree): Change negl_p, neg_litp_p,
27064         neg_conp_p and neg_var_p variables to bool.
27065         (const_binop): Change sat_p variable to bool.
27066         (merge_ranges): Change no_overlap variable to bool.
27067         (extract_muldiv_1): Change same_p variable to bool.
27068         (tree_swap_operands_p): Update function body for bool return type.
27069         (fold_truth_andor): Change commutative variable to bool.
27070         (multiple_of_p): Change return type
27071         from int to void and adjust function body accordingly.
27072         * optabs.h (expand_twoval_unop): Change return type from int to bool.
27073         (expand_twoval_binop): Ditto.
27074         (can_compare_p): Ditto.
27075         (have_add2_insn): Ditto.
27076         (have_addptr3_insn): Ditto.
27077         (have_sub2_insn): Ditto.
27078         (have_insn_for): Ditto.
27079         * optabs.cc (add_equal_note): Ditto.
27080         (widen_operand): Change no_extend argument from int to bool.
27081         (expand_binop): Ditto.
27082         (expand_twoval_unop): Change return type
27083         from int to void and adjust function body accordingly.
27084         (expand_twoval_binop): Ditto.
27085         (can_compare_p): Ditto.
27086         (have_add2_insn): Ditto.
27087         (have_addptr3_insn): Ditto.
27088         (have_sub2_insn): Ditto.
27089         (have_insn_for): Ditto.
27091 2023-06-30  Oluwatamilore Adebayo  <oluwatamilore.adebayo@arm.com>
27093         * config/aarch64/aarch64-simd.md
27094         (vec_widen_<su>abdl_lo_<mode>, vec_widen_<su>abdl_hi_<mode>):
27095         Expansions for abd vec widen optabs.
27096         (aarch64_<su>abdl<mode>_insn): VQW based abdl RTL.
27097         * config/aarch64/iterators.md (USMAX_EXT): Code attributes
27098         that give the appropriate extend RTL for the max RTL.
27100 2023-06-30  Oluwatamilore Adebayo  <oluwatamilore.adebayo@arm.com>
27102         * internal-fn.def (VEC_WIDEN_ABD): New internal hilo optab.
27103         * optabs.def (vec_widen_sabd_optab,
27104         vec_widen_sabd_hi_optab, vec_widen_sabd_lo_optab,
27105         vec_widen_sabd_odd_even, vec_widen_sabd_even_optab,
27106         vec_widen_uabd_optab,
27107         vec_widen_uabd_hi_optab, vec_widen_uabd_lo_optab,
27108         vec_widen_uabd_odd_even, vec_widen_uabd_even_optab):
27109         New optabs.
27110         * doc/md.texi: Document them.
27111         * tree-vect-patterns.cc (vect_recog_abd_pattern): Update to
27112         to build a VEC_WIDEN_ABD call if the input precision is smaller
27113         than the precision of the output.
27114         (vect_recog_widen_abd_pattern): Should an ABD expression be
27115         found preceeding an extension, replace the two with a
27116         VEC_WIDEN_ABD.
27118 2023-06-30  Pan Li  <pan2.li@intel.com>
27120         * config/riscv/vector.md: Refactor the common condition.
27122 2023-06-30  Richard Biener  <rguenther@suse.de>
27124         PR tree-optimization/110496
27125         * gimple-ssa-store-merging.cc (find_bswap_or_nop_1): Re-order
27126         verifying and TYPE_PRECISION query for the BIT_FIELD_REF case.
27128 2023-06-30  Richard Biener  <rguenther@suse.de>
27130         PR middle-end/110489
27131         * statistics.cc (curr_statistics_hash): Add argument
27132         indicating whether we should allocate the hash.
27133         (statistics_fini_pass): If the hash isn't allocated
27134         only print the summary header.
27136 2023-06-30  Segher Boessenkool  <segher@kernel.crashing.org>
27137             Thomas Schwinge  <thomas@codesourcery.com>
27139         * config/nvptx/nvptx.cc (TARGET_LRA_P): Remove.
27141 2023-06-30  Jovan Dmitrović  <jovan.dmitrovic@syrmia.com>
27143         PR target/109435
27144         * config/mips/mips.cc (mips_function_arg_alignment): Returns
27145         the alignment of function argument. In case of typedef type,
27146         it returns the aligment of the aliased type.
27147         (mips_function_arg_boundary): Relocated calculation of the
27148         aligment of function arguments.
27150 2023-06-29  Jan Hubicka  <jh@suse.cz>
27152         PR tree-optimization/109849
27153         * ipa-fnsummary.cc (decompose_param_expr): Skip
27154         functions returning its parameter.
27155         (set_cond_stmt_execution_predicate): Return early
27156         if predicate was constructed.
27158 2023-06-29  Qing Zhao  <qing.zhao@oracle.com>
27160         PR c/77650
27161         * doc/extend.texi: Document GCC extension on a structure containing
27162         a flexible array member to be a member of another structure.
27164 2023-06-29  Qing Zhao  <qing.zhao@oracle.com>
27166         * print-tree.cc (print_node): Print new bit type_include_flexarray.
27167         * tree-core.h (struct tree_type_common): Use bit no_named_args_stdarg_p
27168         as type_include_flexarray for RECORD_TYPE or UNION_TYPE.
27169         * tree-streamer-in.cc (unpack_ts_type_common_value_fields): Stream
27170         in bit no_named_args_stdarg_p properly for its corresponding type.
27171         * tree-streamer-out.cc (pack_ts_type_common_value_fields): Stream
27172         out bit no_named_args_stdarg_p properly for its corresponding type.
27173         * tree.h (TYPE_INCLUDES_FLEXARRAY): New macro TYPE_INCLUDES_FLEXARRAY.
27175 2023-06-29  Aldy Hernandez  <aldyh@redhat.com>
27177         * tree-vrp.cc (maybe_set_nonzero_bits): Move from here...
27178         * tree-ssa-dom.cc (maybe_set_nonzero_bits): ...to here.
27179         * tree-vrp.h (maybe_set_nonzero_bits): Remove.
27181 2023-06-29  Aldy Hernandez  <aldyh@redhat.com>
27183         * value-range.cc (frange::set): Do not call verify_range.
27184         (frange::normalize_kind): Verify range.
27185         (frange::union_nans): Do not call verify_range.
27186         (frange::union_): Same.
27187         (frange::intersect): Same.
27188         (irange::irange_single_pair_union): Call normalize_kind if
27189         necessary.
27190         (irange::union_): Same.
27191         (irange::intersect): Same.
27192         (irange::set_range_from_nonzero_bits): Verify range.
27193         (irange::set_nonzero_bits): Call normalize_kind if necessary.
27194         (irange::get_nonzero_bits): Tweak comment.
27195         (irange::intersect_nonzero_bits): Call normalize_kind if
27196         necessary.
27197         (irange::union_nonzero_bits): Same.
27198         * value-range.h (irange::normalize_kind): Verify range.
27200 2023-06-29  Uros Bizjak  <ubizjak@gmail.com>
27202         * cselib.h (rtx_equal_for_cselib_1):
27203         Change return type from int to bool.
27204         (references_value_p): Ditto.
27205         (rtx_equal_for_cselib_p): Ditto.
27206         * expr.h (can_store_by_pieces): Ditto.
27207         (try_casesi): Ditto.
27208         (try_tablejump): Ditto.
27209         (safe_from_p): Ditto.
27210         * sbitmap.h (bitmap_equal_p): Ditto.
27211         * cselib.cc (references_value_p): Change return type
27212         from int to void and adjust function body accordingly.
27213         (rtx_equal_for_cselib_1): Ditto.
27214         * expr.cc (is_aligning_offset): Ditto.
27215         (can_store_by_pieces): Ditto.
27216         (mostly_zeros_p): Ditto.
27217         (all_zeros_p): Ditto.
27218         (safe_from_p): Ditto.
27219         (is_aligning_offset): Ditto.
27220         (try_casesi): Ditto.
27221         (try_tablejump): Ditto.
27222         (store_constructor): Change "need_to_clear" and
27223         "const_bounds_p" variables to bool.
27224         * sbitmap.cc (bitmap_equal_p):  Change return type from int to bool.
27226 2023-06-29  Robin Dapp  <rdapp@ventanamicro.com>
27228         * tree-ssa-math-opts.cc (divmod_candidate_p): Use
27229         element_precision.
27231 2023-06-29  Richard Biener  <rguenther@suse.de>
27233         PR tree-optimization/110460
27234         * tree-vect-stmts.cc (get_related_vectype_for_scalar_type):
27235         Only allow integral, pointer and scalar float type scalar_type.
27237 2023-06-29  Lili Cui  <lili.cui@intel.com>
27239         PR tree-optimization/110148
27240         * tree-ssa-reassoc.cc (rewrite_expr_tree_parallel): Handle loop-carried
27241         ops in this function.
27243 2023-06-29  Richard Biener  <rguenther@suse.de>
27245         PR middle-end/110452
27246         * expr.cc (store_constructor): Handle uniform boolean
27247         vectors with integer mode specially.
27249 2023-06-29  Richard Biener  <rguenther@suse.de>
27251         PR middle-end/110461
27252         * match.pd (bitop (convert@2 @0) (convert?@3 @1)): Disable
27253         for VECTOR_TYPE_P.
27255 2023-06-29  Richard Sandiford  <richard.sandiford@arm.com>
27257         * vec.h (gt_pch_nx): Add overloads for va_gc_atomic.
27258         (array_slice): Relax va_gc constructor to handle all vectors
27259         with a vl_embed layout.
27261 2023-06-29  Pan Li  <pan2.li@intel.com>
27263         * config/riscv/riscv.cc (riscv_emit_mode_set): Add emit for FRM.
27264         (riscv_mode_needed): Likewise.
27265         (riscv_entity_mode_after): Likewise.
27266         (riscv_mode_after): Likewise.
27267         (riscv_mode_entry): Likewise.
27268         (riscv_mode_exit): Likewise.
27269         * config/riscv/riscv.h (NUM_MODES_FOR_MODE_SWITCHING): Add number
27270         for FRM.
27271         * config/riscv/riscv.md: Add FRM register.
27272         * config/riscv/vector-iterators.md: Add FRM type.
27273         * config/riscv/vector.md (frm_mode): Define new attr for FRM mode.
27274         (fsrm): Define new insn for fsrm instruction.
27276 2023-06-29  Pan Li  <pan2.li@intel.com>
27278         * config/riscv/riscv-protos.h (enum floating_point_rounding_mode):
27279         Add macro for static frm min and max.
27280         * config/riscv/riscv-vector-builtins-bases.cc
27281         (class binop_frm): New class for floating-point with frm.
27282         (BASE): Add vfadd for frm.
27283         * config/riscv/riscv-vector-builtins-bases.h: Likewise.
27284         * config/riscv/riscv-vector-builtins-functions.def
27285         (vfadd_frm): Likewise.
27286         * config/riscv/riscv-vector-builtins-shapes.cc
27287         (struct alu_frm_def): New struct for alu with frm.
27288         (SHAPE): Add alu with frm.
27289         * config/riscv/riscv-vector-builtins-shapes.h: Likewise.
27290         * config/riscv/riscv-vector-builtins.cc
27291         (function_checker::report_out_of_range_and_not): New function
27292         for report out of range and not val.
27293         (function_checker::require_immediate_range_or): New function
27294         for checking in range or one val.
27295         * config/riscv/riscv-vector-builtins.h: Add function decl.
27297 2023-06-29  Cui, Lili  <lili.cui@intel.com>
27299         * common/config/i386/cpuinfo.h (get_intel_cpu): Remove model value 0xa8
27300         from Rocketlake, move model value 0xbf from Alderlake to Raptorlake.
27302 2023-06-28  Hans-Peter Nilsson  <hp@axis.com>
27304         PR target/110144
27305         * config/cris/cris.cc (cris_postdbr_cmpelim): Don't apply PATTERN
27306         to insn before validating it.
27308 2023-06-28  Jan Hubicka  <jh@suse.cz>
27310         PR middle-end/110334
27311         * ipa-fnsummary.h (ipa_fn_summary): Add
27312         safe_to_inline_to_always_inline.
27313         * ipa-inline.cc (can_early_inline_edge_p): ICE
27314         if SSA is not built; do cycle checking for
27315         always_inline functions.
27316         (inline_always_inline_functions): Be recrusive;
27317         watch for cycles; do not updat overall summary.
27318         (early_inliner): Do not give up on always_inlines.
27319         * ipa-utils.cc (ipa_reverse_postorder): Do not skip
27320         always inlines.
27322 2023-06-28  Uros Bizjak  <ubizjak@gmail.com>
27324         * output.h (leaf_function_p): Change return type from int to bool.
27325         (final_forward_branch_p): Ditto.
27326         (only_leaf_regs_used): Ditto.
27327         (maybe_assemble_visibility): Ditto.
27328         * varasm.h (supports_one_only): Ditto.
27329         * rtl.h (compute_alignments): Change return type from int to void.
27330         * final.cc (app_on): Change return type from int to bool.
27331         (compute_alignments): Change return type from int to void
27332         and adjust function body accordingly.
27333         (shorten_branches):  Change "something_changed" variable
27334         type from int to bool.
27335         (leaf_function_p):  Change return type from int to bool
27336         and adjust function body accordingly.
27337         (final_forward_branch_p): Ditto.
27338         (only_leaf_regs_used): Ditto.
27339         * varasm.cc (contains_pointers_p): Change return type from
27340         int to bool and adjust function body accordingly.
27341         (compare_constant): Ditto.
27342         (maybe_assemble_visibility): Ditto.
27343         (supports_one_only): Ditto.
27345 2023-06-28  Manolis Tsamis  <manolis.tsamis@vrull.eu>
27347         PR debug/110308
27348         * regcprop.cc (maybe_mode_change): Check stack_pointer_rtx mode.
27349         (maybe_copy_reg_attrs): New function.
27350         (find_oldest_value_reg): Use maybe_copy_reg_attrs.
27351         (copyprop_hardreg_forward_1): Ditto.
27353 2023-06-28  Richard Biener  <rguenther@suse.de>
27355         PR tree-optimization/110434
27356         * tree-nrv.cc (pass_nrv::execute): Remove CLOBBERs of
27357         VAR we replace with <retval>.
27359 2023-06-28  Richard Biener  <rguenther@suse.de>
27361         PR tree-optimization/110451
27362         * tree-ssa-loop-im.cc (stmt_cost): [VEC_]COND_EXPR and
27363         tcc_comparison are expensive.
27365 2023-06-28  Roger Sayle  <roger@nextmovesoftware.com>
27367         * config/i386/i386-expand.cc (ix86_expand_branch): Also use ptest
27368         for TImode comparisons on 32-bit architectures.
27369         * config/i386/i386.md (cbranch<mode>4): Change from SDWIM to
27370         SWIM1248x to exclude/avoid TImode being conditional on -m64.
27371         (cbranchti4): New define_expand for TImode on both TARGET_64BIT
27372         and/or with TARGET_SSE4_1.
27373         * config/i386/predicates.md (ix86_timode_comparison_operator):
27374         New predicate that depends upon TARGET_64BIT.
27375         (ix86_timode_comparison_operand): Likewise.
27377 2023-06-28  Roger Sayle  <roger@nextmovesoftware.com>
27379         PR target/78794
27380         * config/i386/i386-features.cc (compute_convert_gain): Provide
27381         more accurate gains for conversion of scalar comparisons to
27382         PTEST.
27384 2023-06-28  Richard Biener  <rguenther@suse.de>
27386         PR tree-optimization/110443
27387         * tree-vect-slp.cc (vect_build_slp_tree_1): Reject non-grouped
27388         gather loads.
27390 2023-06-28  Haochen Gui  <guihaoc@gcc.gnu.org>
27392         * config/rs6000/rs6000.md (peephole2 for compare_and_move): New.
27393         (peephole2 for move_and_compare): New.
27394         (mode_iterator WORD): New.  Set the mode to SI/DImode by
27395         TARGET_POWERPC64.
27396         (*mov<mode>_internal2): Change the mode iterator from P to WORD.
27397         (split pattern for compare_and_move): Likewise.
27399 2023-06-28  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
27401         * config/riscv/autovec-opt.md (*double_widen_fma<mode>): New pattern.
27402         (*single_widen_fma<mode>): Ditto.
27404 2023-06-28  Haochen Gui  <guihaoc@gcc.gnu.org>
27406         PR target/104124
27407         * config/rs6000/altivec.md (*altivec_vupkhs<VU_char>_direct): Rename
27408         to...
27409         (altivec_vupkhs<VU_char>_direct): ...this.
27410         * config/rs6000/predicates.md (vspltisw_vupkhsw_constant_split): New
27411         predicate to test if a constant can be loaded with vspltisw and
27412         vupkhsw.
27413         (easy_vector_constant): Call vspltisw_vupkhsw_constant_p to Check if
27414         a vector constant can be synthesized with a vspltisw and a vupkhsw.
27415         * config/rs6000/rs6000-protos.h (vspltisw_vupkhsw_constant_p):
27416         Declare.
27417         * config/rs6000/rs6000.cc (vspltisw_vupkhsw_constant_p): New
27418         function to return true if OP mode is V2DI and can be synthesized
27419         with vupkhsw and vspltisw.
27420         * config/rs6000/vsx.md (*vspltisw_v2di_split): New insn to load up
27421         constants with vspltisw and vupkhsw.
27423 2023-06-28  Jan Hubicka  <jh@suse.cz>
27425         PR tree-optimization/110377
27426         * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Pass statement to
27427         the ranger query.
27428         (ipa_analyze_node): Enable ranger.
27430 2023-06-28  Richard Biener  <rguenther@suse.de>
27432         * tree.h (TYPE_PRECISION): Check for non-VECTOR_TYPE.
27433         (TYPE_PRECISION_RAW): Provide raw access to the precision
27434         field.
27435         * tree.cc (verify_type_variant): Compare TYPE_PRECISION_RAW.
27436         (gimple_canonical_types_compatible_p): Likewise.
27437         * tree-streamer-out.cc (pack_ts_type_common_value_fields):
27438         Stream TYPE_PRECISION_RAW.
27439         * tree-streamer-in.cc (unpack_ts_type_common_value_fields):
27440         Likewise.
27441         * lto-streamer-out.cc (hash_tree): Hash TYPE_PRECISION_RAW.
27443 2023-06-28  Alexandre Oliva  <oliva@adacore.com>
27445         * doc/extend.texi (zero-call-used-regs): Document leafy and
27446         variants thereof.
27447         * flag-types.h (zero_regs_flags): Add LEAFY_MODE, as well as
27448         LEAFY and variants.
27449         * function.cc (gen_call_ued_regs_seq): Set only_used for leaf
27450         functions in leafy mode.
27451         * opts.cc (zero_call_used_regs_opts): Add leafy and variants.
27453 2023-06-28  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
27455         * config/riscv/riscv-vector-builtins-bases.cc: Adapt expand.
27456         * config/riscv/vector.md (@pred_single_widen_<plus_minus:optab><mode>):
27457         Remove.
27458         (@pred_single_widen_add<mode>): New pattern.
27459         (@pred_single_widen_sub<mode>): New pattern.
27461 2023-06-28  liuhongt  <hongtao.liu@intel.com>
27463         * config/i386/i386.cc (ix86_invalid_conversion): New function.
27464         (TARGET_INVALID_CONVERSION): Define as
27465         ix86_invalid_conversion.
27467 2023-06-27  Robin Dapp  <rdapp@ventanamicro.com>
27469         * config/riscv/autovec.md (<optab><vnconvert><mode>2): New
27470         expander.
27471         (<float_cvt><vnconvert><mode>2): Ditto.
27472         (<optab><mode><vnconvert>2): Ditto.
27473         (<float_cvt><mode><vnconvert>2): Ditto.
27474         * config/riscv/vector-iterators.md: Add vnconvert.
27476 2023-06-27  Robin Dapp  <rdapp@ventanamicro.com>
27478         * config/riscv/autovec.md (extend<v_double_trunc><mode>2): New
27479         expander.
27480         (extend<v_quad_trunc><mode>2): Ditto.
27481         (trunc<mode><v_double_trunc>2): Ditto.
27482         (trunc<mode><v_quad_trunc>2): Ditto.
27483         * config/riscv/vector-iterators.md: Add VQEXTF and HF to
27484         V_QUAD_TRUNC and v_quad_trunc.
27486 2023-06-27  Robin Dapp  <rdapp@ventanamicro.com>
27488         * config/riscv/autovec.md (<float_cvt><vconvert><mode>2): New
27489         expander.
27491 2023-06-27  Robin Dapp  <rdapp@ventanamicro.com>
27493         * config/riscv/autovec.md (copysign<mode>3): Add expander.
27494         (xorsign<mode>3): Ditto.
27495         * config/riscv/riscv-vector-builtins-bases.cc (class vfsgnjn):
27496         New class.
27497         * config/riscv/vector-iterators.md (copysign): Remove ncopysign.
27498         (xorsign): Ditto.
27499         (n): Ditto.
27500         (x): Ditto.
27501         * config/riscv/vector.md (@pred_ncopysign<mode>): Split off.
27502         (@pred_ncopysign<mode>_scalar): Ditto.
27504 2023-06-27  Robin Dapp  <rdapp@ventanamicro.com>
27506         * config/riscv/autovec.md: VF_AUTO -> VF.
27507         * config/riscv/vector-iterators.md: Introduce VF_ZVFHMIN,
27508         VWEXTF_ZVFHMIN and use TARGET_ZVFH in VWCONVERTI, VHF and
27509         VHF_LMUL1.
27510         * config/riscv/vector.md: Use new iterators.
27512 2023-06-27  Robin Dapp  <rdapp@ventanamicro.com>
27514         * match.pd: Use element_mode and check if target supports
27515         operation with new type.
27517 2023-06-27  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
27519         * config/aarch64/aarch64-sve-builtins-base.cc
27520         (svdupq_impl::fold_nonconst_dupq): New method.
27521         (svdupq_impl::fold): Call fold_nonconst_dupq.
27523 2023-06-27  Andrew Pinski  <apinski@marvell.com>
27525         PR middle-end/110420
27526         PR middle-end/103979
27527         PR middle-end/98619
27528         * gimplify.cc (gimplify_asm_expr): Mark asm with labels as volatile.
27530 2023-06-27  Aldy Hernandez  <aldyh@redhat.com>
27532         * ipa-cp.cc (decide_whether_version_node): Adjust comment.
27533         * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Adjust
27534         for Value_Range.
27535         (set_switch_stmt_execution_predicate): Same.
27536         * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Same.
27538 2023-06-27  Aldy Hernandez  <aldyh@redhat.com>
27540         * ipa-prop.cc (struct ipa_vr_ggc_hash_traits): Adjust for use with
27541         ipa_vr instead of value_range.
27542         (gt_pch_nx): Same.
27543         (gt_ggc_mx): Same.
27544         (ipa_get_value_range): Same.
27545         * value-range.cc (gt_pch_nx): Move to ipa-prop.cc and adjust for
27546         ipa_vr.
27547         (gt_ggc_mx): Same.
27549 2023-06-27  Aldy Hernandez  <aldyh@redhat.com>
27551         * ipa-cp.cc (ipa_vr_operation_and_type_effects): New.
27552         * ipa-prop.cc (ipa_get_value_range): Adjust for ipa_vr.
27553         (ipa_set_jfunc_vr): Take a range.
27554         (ipa_compute_jump_functions_for_edge): Pass range to
27555         ipa_set_jfunc_vr.
27556         (ipa_write_jump_function): Call streamer write helper.
27557         (ipa_read_jump_function): Call streamer read helper.
27558         * ipa-prop.h (class ipa_vr): Change m_vr to an ipa_vr.
27560 2023-06-27  Richard Sandiford  <richard.sandiford@arm.com>
27562         * gengtype-parse.cc (consume_until_comma_or_eos): Parse "= { ... }"
27563         as a probable initializer rather than a probable complete statement.
27565 2023-06-27  Richard Biener  <rguenther@suse.de>
27567         PR tree-optimization/96208
27568         * tree-vect-slp.cc (vect_build_slp_tree_1): Allow
27569         a non-grouped load if it is the same for all lanes.
27570         (vect_build_slp_tree_2): Handle not grouped loads.
27571         (vect_optimize_slp_pass::remove_redundant_permutations):
27572         Likewise.
27573         (vect_transform_slp_perm_load_1): Likewise.
27574         * tree-vect-stmts.cc (vect_model_load_cost): Likewise.
27575         (get_group_load_store_type): Likewise.  Handle
27576         invariant accesses.
27577         (vectorizable_load): Likewise.
27579 2023-06-27  liuhongt  <hongtao.liu@intel.com>
27581         PR rtl-optimization/110237
27582         * config/i386/sse.md (<avx512>_store<mode>_mask): Refine with
27583         UNSPEC_MASKMOV.
27584         (maskstore<mode><avx512fmaskmodelower): Ditto.
27585         (*<avx512>_store<mode>_mask): New define_insn, it's renamed
27586         from original <avx512>_store<mode>_mask.
27588 2023-06-27  liuhongt  <hongtao.liu@intel.com>
27590         * config/i386/i386-features.cc (pass_insert_vzeroupper:gate):
27591         Move flag_expensive_optimizations && !optimize_size to ..
27592         * config/i386/i386-options.cc (ix86_option_override_internal):
27593         .. this, it makes -mvzeroupper independent of optimization
27594         level, but still keeps the behavior of architecture
27595         tuning(emit_vzeroupper) unchanged.
27597 2023-06-27  liuhongt  <hongtao.liu@intel.com>
27599         PR target/82735
27600         * config/i386/i386.cc (ix86_avx_u127_mode_needed): Don't emit
27601         vzeroupper for vzeroupper call_insn.
27603 2023-06-27  Andrew Pinski  <apinski@marvell.com>
27605         * doc/extend.texi (__builtin_alloca_with_align_and_max): Fix
27606         defbuiltin usage.
27608 2023-06-27  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
27610         * config/riscv/riscv-v.cc (expand_const_vector): Fix stepped vector
27611         with base != 0.
27613 2023-06-26  Andrew Pinski  <apinski@marvell.com>
27615         * doc/extend.texi (access attribute): Add
27616         cindex for it.
27617         (interrupt/interrupt_handler attribute):
27618         Likewise.
27620 2023-06-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
27622         * config/aarch64/aarch64-simd.md (aarch64_sqrshrun_n<mode>_insn):
27623         Use <DWI> instead of <V2XWIDE>.
27624         (aarch64_sqrshrun_n<mode>): Likewise.
27626 2023-06-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
27628         * config/aarch64/aarch64-protos.h (aarch64_const_vec_rsra_rnd_imm_p):
27629         Rename to...
27630         (aarch64_rnd_imm_p): ... This.
27631         * config/aarch64/predicates.md (aarch64_simd_rsra_rnd_imm_vec):
27632         Rename to...
27633         (aarch64_int_rnd_operand): ... This.
27634         (aarch64_simd_rshrn_imm_vec): Delete.
27635         * config/aarch64/aarch64-simd.md (aarch64_<sra_op>rsra_n<mode>_insn):
27636         Adjust for the above.
27637         (aarch64_<sra_op>rshr_n<mode><vczle><vczbe>_insn): Likewise.
27638         (*aarch64_<shrn_op>rshrn_n<mode>_insn): Likewise.
27639         (*aarch64_sqrshrun_n<mode>_insn<vczle><vczbe>): Likewise.
27640         (aarch64_sqrshrun_n<mode>_insn): Likewise.
27641         (aarch64_<shrn_op>rshrn2_n<mode>_insn_le): Likewise.
27642         (aarch64_<shrn_op>rshrn2_n<mode>_insn_be): Likewise.
27643         (aarch64_sqrshrun2_n<mode>_insn_le): Likewise.
27644         (aarch64_sqrshrun2_n<mode>_insn_be): Likewise.
27645         * config/aarch64/aarch64.cc (aarch64_const_vec_rsra_rnd_imm_p):
27646         Rename to...
27647         (aarch64_rnd_imm_p): ... This.
27649 2023-06-26  Andreas Krebbel  <krebbel@linux.ibm.com>
27651         * config/s390/s390.cc (s390_encode_section_info): Set
27652         SYMBOL_FLAG_SET_NOTALIGN2 only if the symbol has explicitely been
27653         misaligned.
27655 2023-06-26  Jan Hubicka  <jh@suse.cz>
27657         PR tree-optimization/109849
27658         * tree-ssa-dce.cc (make_forwarders_with_degenerate_phis): Fix profile
27659         count of newly constructed forwarder block.
27661 2023-06-26  Andrew Carlotti  <andrew.carlotti@arm.com>
27663         * doc/optinfo.texi: Fix "steam" -> "stream".
27665 2023-06-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
27667         * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Add LEN_MASK_STORE and
27668         fix LEN_STORE.
27669         (dse_optimize_stmt): Add LEN_MASK_STORE.
27671 2023-06-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
27673         * gimple-fold.cc (gimple_fold_partial_load_store_mem_ref): Fix gimple
27674         fold of LOAD/STORE with length.
27676 2023-06-26  Andrew MacLeod  <amacleod@redhat.com>
27678         * gimple-range-gori.cc (compute_operand1_and_operand2_range):
27679         Check for interdependence between operands 1 and 2.
27681 2023-06-26  Richard Sandiford  <richard.sandiford@arm.com>
27683         * tree-vect-stmts.cc (vectorizable_conversion): Take multi_step_cvt
27684         into account when costing non-widening/truncating conversions.
27686 2023-06-26  Richard Biener  <rguenther@suse.de>
27688         PR tree-optimization/110381
27689         * tree-vect-slp.cc (vect_optimize_slp_pass::start_choosing_layouts):
27690         Materialize permutes before fold-left reductions.
27692 2023-06-26  Pan Li  <pan2.li@intel.com>
27694         * config/riscv/riscv-vector-builtins-bases.h: Remove duplicated decl.
27696 2023-06-26  Richard Biener  <rguenther@suse.de>
27698         * varasm.cc (initializer_constant_valid_p_1): Also
27699         constrain the type of value to be scalar integral
27700         before dispatching to narrowing_initializer_constant_valid_p.
27702 2023-06-26  Richard Biener  <rguenther@suse.de>
27704         * tree-ssa-scopedtables.cc (hashable_expr_equal_p):
27705         Use element_precision.
27707 2023-06-26  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
27709         * config/riscv/autovec.md (vcond<V:mode><VI:mode>): Remove redundant
27710         vcond patterns.
27711         (vcondu<V:mode><VI:mode>): Ditto.
27712         * config/riscv/riscv-protos.h (expand_vcond): Ditto.
27713         * config/riscv/riscv-v.cc (expand_vcond): Ditto.
27715 2023-06-26  Richard Biener  <rguenther@suse.de>
27717         PR tree-optimization/110392
27718         * gimple-predicate-analysis.cc (uninit_analysis::is_use_guarded):
27719         Do early exits on true/false predicate only after normalization.
27721 2023-06-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
27723         * tree-ssa-sccvn.cc (vn_reference_lookup_3): Change name "len" into
27724         "length".
27726 2023-06-26  Roger Sayle  <roger@nextmovesoftware.com>
27728         * config/i386/i386.md (peephole2): Simplify zeroing a register
27729         followed by an IOR, XOR or PLUS operation on it, into a move.
27730         (*ashl<dwi>3_doubleword_highpart): New define_insn_and_split to
27731         eliminate (and hide from reload) unnecessary word to doubleword
27732         extensions that are followed by left shifts by sufficiently large,
27733         but valid, bit counts.
27735 2023-06-26  liuhongt  <hongtao.liu@intel.com>
27737         PR tree-optimization/110371
27738         PR tree-optimization/110018
27739         * tree-vect-stmts.cc (vectorizable_conversion): Use cvt_op to
27740         save intermediate type operand instead of "subtle" vec_dest
27741         for case NONE.
27743 2023-06-26  liuhongt  <hongtao.liu@intel.com>
27745         PR tree-optimization/110371
27746         PR tree-optimization/110018
27747         * tree-vect-stmts.cc (vectorizable_conversion): Don't use
27748         intermiediate type for FIX_TRUNC_EXPR when ftrapping-math.
27750 2023-06-26  Hongyu Wang  <hongyu.wang@intel.com>
27752         * config/i386/i386-options.cc (ix86_valid_target_attribute_tree):
27753         Override tune_string with arch_string if tune_string is not
27754         explicitly specified.
27756 2023-06-25  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
27758         * config/riscv/riscv-vsetvl.cc (vector_insn_info::parse_insn): Ehance
27759         AVL propagation.
27760         * config/riscv/riscv-vsetvl.h: New function.
27762 2023-06-25  Li Xu  <xuli1@eswincomputing.com>
27764         * config/riscv/riscv-vector-builtins-bases.cc: change emit_insn to
27765         emit_move_insn
27767 2023-06-25  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
27769         * config/riscv/autovec.md (len_load_<mode>): Remove.
27770         (len_maskload<mode><vm>): Remove.
27771         (len_store_<mode>): New pattern.
27772         (len_maskstore<mode><vm>): New pattern.
27773         * config/riscv/predicates.md (autovec_length_operand): New predicate.
27774         * config/riscv/riscv-protos.h (enum insn_type): New enum.
27775         (expand_load_store): New function.
27776         * config/riscv/riscv-v.cc (emit_vlmax_masked_insn): Ditto.
27777         (emit_nonvlmax_masked_insn): Ditto.
27778         (expand_load_store): Ditto.
27779         * config/riscv/riscv-vector-builtins.cc
27780         (function_expander::use_contiguous_store_insn): Add avl_type operand
27781         into pred_store.
27782         * config/riscv/vector.md: Ditto.
27784 2023-06-25  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
27786         * internal-fn.cc (expand_partial_store_optab_fn): Fix bug of BIAS
27787         argument index.
27789 2023-06-25  Pan Li  <pan2.li@intel.com>
27791         * config/riscv/vector.md: Revert.
27793 2023-06-25  Pan Li  <pan2.li@intel.com>
27795         * config/riscv/genrvv-type-indexer.cc (valid_type): Revert changes.
27796         * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): Ditto.
27797         (ADJUST_ALIGNMENT): Ditto.
27798         (RVV_TUPLE_PARTIAL_MODES): Ditto.
27799         (ADJUST_NUNITS): Ditto.
27800         * config/riscv/riscv-vector-builtins-types.def (vfloat16mf4x2_t): Ditto.
27801         (vfloat16mf4x3_t): Ditto.
27802         (vfloat16mf4x4_t): Ditto.
27803         (vfloat16mf4x5_t): Ditto.
27804         (vfloat16mf4x6_t): Ditto.
27805         (vfloat16mf4x7_t): Ditto.
27806         (vfloat16mf4x8_t): Ditto.
27807         (vfloat16mf2x2_t): Ditto.
27808         (vfloat16mf2x3_t): Ditto.
27809         (vfloat16mf2x4_t): Ditto.
27810         (vfloat16mf2x5_t): Ditto.
27811         (vfloat16mf2x6_t): Ditto.
27812         (vfloat16mf2x7_t): Ditto.
27813         (vfloat16mf2x8_t): Ditto.
27814         (vfloat16m1x2_t): Ditto.
27815         (vfloat16m1x3_t): Ditto.
27816         (vfloat16m1x4_t): Ditto.
27817         (vfloat16m1x5_t): Ditto.
27818         (vfloat16m1x6_t): Ditto.
27819         (vfloat16m1x7_t): Ditto.
27820         (vfloat16m1x8_t): Ditto.
27821         (vfloat16m2x2_t): Ditto.
27822         (vfloat16m2x3_t): Diito.
27823         (vfloat16m2x4_t): Diito.
27824         (vfloat16m4x2_t): Diito.
27825         * config/riscv/riscv-vector-builtins.def (vfloat16mf4x2_t): Ditto.
27826         (vfloat16mf4x3_t): Ditto.
27827         (vfloat16mf4x4_t): Ditto.
27828         (vfloat16mf4x5_t): Ditto.
27829         (vfloat16mf4x6_t): Ditto.
27830         (vfloat16mf4x7_t): Ditto.
27831         (vfloat16mf4x8_t): Ditto.
27832         (vfloat16mf2x2_t): Ditto.
27833         (vfloat16mf2x3_t): Ditto.
27834         (vfloat16mf2x4_t): Ditto.
27835         (vfloat16mf2x5_t): Ditto.
27836         (vfloat16mf2x6_t): Ditto.
27837         (vfloat16mf2x7_t): Ditto.
27838         (vfloat16mf2x8_t): Ditto.
27839         (vfloat16m1x2_t): Ditto.
27840         (vfloat16m1x3_t): Ditto.
27841         (vfloat16m1x4_t): Ditto.
27842         (vfloat16m1x5_t): Ditto.
27843         (vfloat16m1x6_t): Ditto.
27844         (vfloat16m1x7_t): Ditto.
27845         (vfloat16m1x8_t): Ditto.
27846         (vfloat16m2x2_t): Ditto.
27847         (vfloat16m2x3_t): Ditto.
27848         (vfloat16m2x4_t): Ditto.
27849         (vfloat16m4x2_t): Ditto.
27850         * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): Ditto.
27851         * config/riscv/riscv.md: Ditto.
27852         * config/riscv/vector-iterators.md: Ditto.
27854 2023-06-25  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
27856         * gimple-fold.cc (arith_overflowed_p): Apply LEN_MASK_{LOAD,STORE}.
27857         (gimple_fold_partial_load_store_mem_ref): Ditto.
27858         (gimple_fold_partial_store): Ditto.
27859         (gimple_fold_call): Ditto.
27861 2023-06-25  liuhongt  <hongtao.liu@intel.com>
27863         PR target/110309
27864         * config/i386/sse.md (maskload<mode><avx512fmaskmodelower>):
27865         Refine pattern with UNSPEC_MASKLOAD.
27866         (maskload<mode><avx512fmaskmodelower>): Ditto.
27867         (*<avx512>_load<mode>_mask): Extend mode iterator to
27868         VI12HFBF_AVX512VL.
27869         (*<avx512>_load<mode>): Ditto.
27871 2023-06-25  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
27873         * tree-ssa-alias.cc (call_may_clobber_ref_p_1): Add LEN_MASK_STORE.
27875 2023-06-25  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
27877         * tree-ssa-alias.cc (ref_maybe_used_by_call_p_1): Apply
27878         LEN_MASK_{LOAD,STORE}
27880 2023-06-25  yulong  <shiyulong@iscas.ac.cn>
27882         * config/riscv/vector.md: Add float16 attr at sew、vlmul and ratio.
27884 2023-06-24  Roger Sayle  <roger@nextmovesoftware.com>
27886         * config/i386/i386.md (*<code>qi_ext<mode>_3): New define_insn.
27888 2023-06-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
27890         * config/riscv/autovec.md (*fma<mode>): set clobber to Pmode in expand stage.
27891         (*fma<VI:mode><P:mode>): Ditto.
27892         (*fnma<mode>): Ditto.
27893         (*fnma<VI:mode><P:mode>): Ditto.
27895 2023-06-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
27897         * config/riscv/autovec.md (fma<mode>4): New pattern.
27898         (*fma<mode>): Ditto.
27899         (fnma<mode>4): Ditto.
27900         (*fnma<mode>): Ditto.
27901         (fms<mode>4): Ditto.
27902         (*fms<mode>): Ditto.
27903         (fnms<mode>4): Ditto.
27904         (*fnms<mode>): Ditto.
27905         * config/riscv/riscv-protos.h (emit_vlmax_fp_ternary_insn):
27906         New function.
27907         * config/riscv/riscv-v.cc (emit_vlmax_fp_ternary_insn): Ditto.
27908         * config/riscv/vector.md: Fix attribute bug.
27910 2023-06-24  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
27912         * tree-ssa-loop-ivopts.cc (get_mem_type_for_internal_fn):
27913         Apply LEN_MASK_{LOAD,STORE}.
27915 2023-06-24  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
27917         * tree-ssa-loop-ivopts.cc (get_alias_ptr_type_for_ptr_address):
27918         Add LEN_MASK_{LOAD,STORE}.
27920 2023-06-24  David Malcolm  <dmalcolm@redhat.com>
27922         * diagnostic-format-sarif.cc: Add #define INCLUDE_VECTOR.
27923         * diagnostic.cc: Likewise.
27924         * text-art/box-drawing.cc: Likewise.
27925         * text-art/canvas.cc: Likewise.
27926         * text-art/ruler.cc: Likewise.
27927         * text-art/selftests.cc: Likewise.
27928         * text-art/selftests.h (text_art::canvas): New forward decl.
27929         * text-art/style.cc: Add #define INCLUDE_VECTOR.
27930         * text-art/styled-string.cc: Likewise.
27931         * text-art/table.cc: Likewise.
27932         * text-art/table.h: Remove #include <vector>.
27933         * text-art/theme.cc: Add #define INCLUDE_VECTOR.
27934         * text-art/types.h: Check that INCLUDE_VECTOR is defined.
27935         Remove #include of <vector> and <string>.
27936         * text-art/widget.cc: Add #define INCLUDE_VECTOR.
27937         * text-art/widget.h: Remove #include <vector>.
27939 2023-06-24  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
27941         * internal-fn.cc (expand_partial_store_optab_fn): Adapt for LEN_MASK_STORE.
27942         (internal_load_fn_p): Add LEN_MASK_LOAD.
27943         (internal_store_fn_p): Add LEN_MASK_STORE.
27944         (internal_fn_mask_index): Add LEN_MASK_{LOAD,STORE}.
27945         (internal_fn_stored_value_index): Add LEN_MASK_STORE.
27946         (internal_len_load_store_bias):  Add LEN_MASK_{LOAD,STORE}.
27947         * optabs-tree.cc (can_vec_mask_load_store_p): Adapt for LEN_MASK_{LOAD,STORE}.
27948         (get_len_load_store_mode): Ditto.
27949         * optabs-tree.h (can_vec_mask_load_store_p): Ditto.
27950         (get_len_load_store_mode): Ditto.
27951         * tree-vect-stmts.cc (check_load_store_for_partial_vectors): Ditto.
27952         (get_all_ones_mask): New function.
27953         (vectorizable_store): Apply LEN_MASK_{LOAD,STORE} into vectorizer.
27954         (vectorizable_load): Ditto.
27956 2023-06-23  Marek Polacek  <polacek@redhat.com>
27958         * doc/cpp.texi (__cplusplus): Document value for -std=c++26 and
27959         -std=gnu++26.  Document that for C++23, its value is 202302L.
27960         * doc/invoke.texi: Document -std=c++26 and -std=gnu++26.
27961         * dwarf2out.cc (highest_c_language): Handle GNU C++26.
27962         (gen_compile_unit_die): Likewise.
27964 2023-06-23  Jan Hubicka  <jh@suse.cz>
27966         * tree-ssa-phiprop.cc (propagate_with_phi): Compute post dominators on
27967         demand.
27968         (pass_phiprop::execute): Do not compute it here; return
27969         update_ssa_only_virtuals if something changed.
27970         (pass_data_phiprop): Remove TODO_update_ssa from todos.
27972 2023-06-23   Michael Meissner  <meissner@linux.ibm.com>
27973             Aaron Sawdey   <acsawdey@linux.ibm.com>
27975         PR target/105325
27976         * config/rs6000/genfusion.pl (gen_ld_cmpi_p10_one): Fix problems that
27977         allowed prefixed lwa to be generated.
27978         * config/rs6000/fusion.md: Regenerate.
27979         * config/rs6000/predicates.md (ds_form_mem_operand): Delete.
27980         * config/rs6000/rs6000.md (prefixed attribute): Add support for load
27981         plus compare immediate fused insns.
27982         (maybe_prefixed): Likewise.
27984 2023-06-23  Roger Sayle  <roger@nextmovesoftware.com>
27986         * simplify-rtx.cc (simplify_subreg):  Optimize lowpart SUBREGs
27987         of ASHIFT to const0_rtx with sufficiently large shift count.
27988         Optimize highpart SUBREGs of ASHIFT as the shift operand when
27989         the shift count is the correct offset.  Optimize SUBREGs of
27990         multi-word logic operations if the SUBREGs of both operands
27991         can be simplified.
27993 2023-06-23  Richard Biener  <rguenther@suse.de>
27995         * varasm.cc (initializer_constant_valid_p_1): Only
27996         allow conversions between scalar floating point types.
27998 2023-06-23  Richard Biener  <rguenther@suse.de>
28000         * tree-vect-stmts.cc (vectorizable_assignment):
28001         Properly handle non-integral operands when analyzing
28002         conversions.
28004 2023-06-23  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
28006         PR tree-optimization/110280
28007         * match.pd (vec_perm_expr(v, v, mask) -> v): Explicitly build vector
28008         using build_vector_from_val with the element of input operand, and
28009         mask's type if operand and mask's types don't match.
28011 2023-06-23  Richard Biener  <rguenther@suse.de>
28013         * fold-const.cc (tree_simple_nonnegative_warnv_p): Guard
28014         the truth_value_p case with !VECTOR_TYPE_P.
28016 2023-06-23  Richard Biener  <rguenther@suse.de>
28018         * tree-vect-patterns.cc (vect_look_through_possible_promotion):
28019         Exit early when the type isn't scalar integral.
28021 2023-06-23  Richard Biener  <rguenther@suse.de>
28023         * match.pd ((outertype)((innertype0)a+(innertype1)b)
28024         -> ((newtype)a+(newtype)b)): Use element_precision
28025         where appropriate.
28027 2023-06-23  Richard Biener  <rguenther@suse.de>
28029         * fold-const.cc (fold_binary_loc): Use element_precision
28030         when trying (double)float1 CMP (double)float2 to
28031         float1 CMP float2 simplification.
28032         * match.pd: Likewise.
28034 2023-06-23  Richard Biener  <rguenther@suse.de>
28036         * tree-vect-stmts.cc (vectorizable_load): Avoid useless
28037         copies of VMAT_INVARIANT vectorized stmts, fix SLP support.
28039 2023-06-23  Richard Biener  <rguenther@suse.de>
28041         * tree-vect-stmts.cc (vector_vector_composition_type):
28042         Handle composition of a vector from a number of elements that
28043         happens to match its number of lanes.
28045 2023-06-22  Marek Polacek  <polacek@redhat.com>
28047         * configure.ac (--enable-host-bind-now): New check.  Add
28048         -Wl,-z,now to LD_PICFLAG if --enable-host-bind-now.
28049         * configure: Regenerate.
28050         * doc/install.texi: Document --enable-host-bind-now.
28052 2023-06-22  Di Zhao OS  <dizhao@os.amperecomputing.com>
28054         * config/aarch64/aarch64.cc: Change fma_reassoc_width for ampere1.
28056 2023-06-22  Richard Biener  <rguenther@suse.de>
28058         PR tree-optimization/110332
28059         * tree-ssa-phiprop.cc (propagate_with_phi): Always
28060         check aliasing with edge inserted loads.
28062 2023-06-22  Roger Sayle  <roger@nextmovesoftware.com>
28063             Uros Bizjak  <ubizjak@gmail.com>
28065         * config/i386/i386-expand.cc (ix86_expand_sse_ptest): Recognize
28066         expansion of ptestc with equal operands as producing const1_rtx.
28067         * config/i386/i386.cc (ix86_rtx_costs): Provide accurate cost
28068         estimates of UNSPEC_PTEST, where the ptest performs the PAND
28069         or PAND of its operands.
28070         * config/i386/sse.md (define_split): Transform CCCmode UNSPEC_PTEST
28071         of reg_equal_p operands into an x86_stc instruction.
28072         (define_split): Split pandn/ptestz/set{n?}e into ptestc/set{n?}c.
28073         (define_split): Similar to above for strict_low_part destinations.
28074         (define_split): Split pandn/ptestz/j{n?}e into ptestc/j{n?}c.
28076 2023-06-22  David Malcolm  <dmalcolm@redhat.com>
28078         PR analyzer/106626
28079         * Makefile.in (ANALYZER_OBJS): Add analyzer/access-diagram.o.
28080         * doc/invoke.texi (Wanalyzer-out-of-bounds): Add description of
28081         text art.
28082         (fanalyzer-debug-text-art): New.
28084 2023-06-22  David Malcolm  <dmalcolm@redhat.com>
28086         * Makefile.in (OBJS-libcommon): Add text-art/box-drawing.o,
28087         text-art/canvas.o, text-art/ruler.o, text-art/selftests.o,
28088         text-art/style.o, text-art/styled-string.o, text-art/table.o,
28089         text-art/theme.o, and text-art/widget.o.
28090         * color-macros.h (COLOR_FG_BRIGHT_BLACK): New.
28091         (COLOR_FG_BRIGHT_RED): New.
28092         (COLOR_FG_BRIGHT_GREEN): New.
28093         (COLOR_FG_BRIGHT_YELLOW): New.
28094         (COLOR_FG_BRIGHT_BLUE): New.
28095         (COLOR_FG_BRIGHT_MAGENTA): New.
28096         (COLOR_FG_BRIGHT_CYAN): New.
28097         (COLOR_FG_BRIGHT_WHITE): New.
28098         (COLOR_BG_BRIGHT_BLACK): New.
28099         (COLOR_BG_BRIGHT_RED): New.
28100         (COLOR_BG_BRIGHT_GREEN): New.
28101         (COLOR_BG_BRIGHT_YELLOW): New.
28102         (COLOR_BG_BRIGHT_BLUE): New.
28103         (COLOR_BG_BRIGHT_MAGENTA): New.
28104         (COLOR_BG_BRIGHT_CYAN): New.
28105         (COLOR_BG_BRIGHT_WHITE): New.
28106         * common.opt (fdiagnostics-text-art-charset=): New option.
28107         (diagnostic-text-art.h): New SourceInclude.
28108         (diagnostic_text_art_charset) New Enum and EnumValues.
28109         * configure: Regenerate.
28110         * configure.ac (gccdepdir): Add text-art to loop.
28111         * diagnostic-diagram.h: New file.
28112         * diagnostic-format-json.cc (json_emit_diagram): New.
28113         (diagnostic_output_format_init_json): Wire it up to
28114         context->m_diagrams.m_emission_cb.
28115         * diagnostic-format-sarif.cc: Include "diagnostic-diagram.h" and
28116         "text-art/canvas.h".
28117         (sarif_result::on_nested_diagnostic): Move code to...
28118         (sarif_result::add_related_location): ...this new function.
28119         (sarif_result::on_diagram): New.
28120         (sarif_builder::emit_diagram): New.
28121         (sarif_builder::make_message_object_for_diagram): New.
28122         (sarif_emit_diagram): New.
28123         (diagnostic_output_format_init_sarif): Set
28124         context->m_diagrams.m_emission_cb to sarif_emit_diagram.
28125         * diagnostic-text-art.h: New file.
28126         * diagnostic.cc: Include "diagnostic-text-art.h",
28127         "diagnostic-diagram.h", and "text-art/theme.h".
28128         (diagnostic_initialize): Initialize context->m_diagrams and
28129         call diagnostics_text_art_charset_init.
28130         (diagnostic_finish): Clean up context->m_diagrams.m_theme.
28131         (diagnostic_emit_diagram): New.
28132         (diagnostics_text_art_charset_init): New.
28133         * diagnostic.h (text_art::theme): New forward decl.
28134         (class diagnostic_diagram): Likewise.
28135         (diagnostic_context::m_diagrams): New field.
28136         (diagnostic_emit_diagram): New decl.
28137         * doc/invoke.texi (Diagnostic Message Formatting Options): Add
28138         -fdiagnostics-text-art-charset=.
28139         (-fdiagnostics-plain-output): Add
28140         -fdiagnostics-text-art-charset=none.
28141         * gcc.cc: Include "diagnostic-text-art.h".
28142         (driver_handle_option): Handle OPT_fdiagnostics_text_art_charset_.
28143         * opts-common.cc (decode_cmdline_options_to_array): Add
28144         "-fdiagnostics-text-art-charset=none" to expanded_args for
28145         -fdiagnostics-plain-output.
28146         * opts.cc: Include "diagnostic-text-art.h".
28147         (common_handle_option): Handle OPT_fdiagnostics_text_art_charset_.
28148         * pretty-print.cc (pp_unicode_character): New.
28149         * pretty-print.h (pp_unicode_character): New decl.
28150         * selftest-run-tests.cc: Include "text-art/selftests.h".
28151         (selftest::run_tests): Call text_art_tests.
28152         * text-art/box-drawing-chars.inc: New file, generated by
28153         contrib/unicode/gen-box-drawing-chars.py.
28154         * text-art/box-drawing.cc: New file.
28155         * text-art/box-drawing.h: New file.
28156         * text-art/canvas.cc: New file.
28157         * text-art/canvas.h: New file.
28158         * text-art/ruler.cc: New file.
28159         * text-art/ruler.h: New file.
28160         * text-art/selftests.cc: New file.
28161         * text-art/selftests.h: New file.
28162         * text-art/style.cc: New file.
28163         * text-art/styled-string.cc: New file.
28164         * text-art/table.cc: New file.
28165         * text-art/table.h: New file.
28166         * text-art/theme.cc: New file.
28167         * text-art/theme.h: New file.
28168         * text-art/types.h: New file.
28169         * text-art/widget.cc: New file.
28170         * text-art/widget.h: New file.
28172 2023-06-21  Uros Bizjak  <ubizjak@gmail.com>
28174         * function.h (emit_initial_value_sets):
28175         Change return type from int to void.
28176         (aggregate_value_p): Change return type from int to bool.
28177         (prologue_contains): Ditto.
28178         (epilogue_contains): Ditto.
28179         (prologue_epilogue_contains): Ditto.
28180         * function.cc (temp_slot): Make "in_use" variable bool.
28181         (make_slot_available): Update for changed "in_use" variable.
28182         (assign_stack_temp_for_type): Ditto.
28183         (emit_initial_value_sets): Change return type from int to void
28184         and update function body accordingly.
28185         (instantiate_virtual_regs): Ditto.
28186         (rest_of_handle_thread_prologue_and_epilogue): Ditto.
28187         (safe_insn_predicate): Change return type from int to bool.
28188         (aggregate_value_p): Change return type from int to bool
28189         and update function body accordingly.
28190         (prologue_contains): Change return type from int to bool.
28191         (prologue_epilogue_contains): Ditto.
28193 2023-06-21  Alexander Monakov  <amonakov@ispras.ru>
28195         * common.opt (fp_contract_mode) [on]: Remove fallback.
28196         * config/sh/sh.md (*fmasf4): Correct flag_fp_contract_mode test.
28197         * doc/invoke.texi (-ffp-contract): Update.
28198         * trans-mem.cc (diagnose_tm_1): Skip internal function calls.
28200 2023-06-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
28202         * config/aarch64/aarch64-sve.md (mask_gather_load<mode><v_int_container>):
28203         Add alternatives to prefer to avoid same input and output Z register.
28204         (mask_gather_load<mode><v_int_container>): Likewise.
28205         (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise.
28206         (*mask_gather_load<mode><v_int_container>_sxtw): Likewise.
28207         (*mask_gather_load<mode><v_int_container>_uxtw): Likewise.
28208         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>):
28209         Likewise.
28210         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
28211         Likewise.
28212         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
28213         <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked): Likewise.
28214         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
28215         <SVE_2BHSI:mode>_sxtw): Likewise.
28216         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
28217         <SVE_2BHSI:mode>_uxtw): Likewise.
28218         (@aarch64_ldff1_gather<mode>): Likewise.
28219         (@aarch64_ldff1_gather<mode>): Likewise.
28220         (*aarch64_ldff1_gather<mode>_sxtw): Likewise.
28221         (*aarch64_ldff1_gather<mode>_uxtw): Likewise.
28222         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode>
28223         <VNx4_NARROW:mode>): Likewise.
28224         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
28225         <VNx2_NARROW:mode>): Likewise.
28226         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
28227         <VNx2_NARROW:mode>_sxtw): Likewise.
28228         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
28229         <VNx2_NARROW:mode>_uxtw): Likewise.
28230         * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): Likewise.
28231         (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode>
28232         <SVE_PARTIAL_I:mode>): Likewise.
28234 2023-06-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
28236         * config/aarch64/aarch64-sve.md (mask_gather_load<mode><v_int_container>):
28237         Convert to compact alternatives syntax.
28238         (mask_gather_load<mode><v_int_container>): Likewise.
28239         (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise.
28240         (*mask_gather_load<mode><v_int_container>_sxtw): Likewise.
28241         (*mask_gather_load<mode><v_int_container>_uxtw): Likewise.
28242         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>):
28243         Likewise.
28244         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
28245         Likewise.
28246         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
28247         <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked): Likewise.
28248         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
28249         <SVE_2BHSI:mode>_sxtw): Likewise.
28250         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
28251         <SVE_2BHSI:mode>_uxtw): Likewise.
28252         (@aarch64_ldff1_gather<mode>): Likewise.
28253         (@aarch64_ldff1_gather<mode>): Likewise.
28254         (*aarch64_ldff1_gather<mode>_sxtw): Likewise.
28255         (*aarch64_ldff1_gather<mode>_uxtw): Likewise.
28256         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode>
28257         <VNx4_NARROW:mode>): Likewise.
28258         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
28259         <VNx2_NARROW:mode>): Likewise.
28260         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
28261         <VNx2_NARROW:mode>_sxtw): Likewise.
28262         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
28263         <VNx2_NARROW:mode>_uxtw): Likewise.
28264         * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): Likewise.
28265         (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode>
28266         <SVE_PARTIAL_I:mode>): Likewise.
28268 2023-06-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
28270         Revert:
28271         2023-06-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
28273         * config/aarch64/aarch64-sve.md (mask_gather_load<mode><v_int_container>):
28274         Convert to compact alternatives syntax.
28275         (mask_gather_load<mode><v_int_container>): Likewise.
28276         (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise.
28277         (*mask_gather_load<mode><v_int_container>_sxtw): Likewise.
28278         (*mask_gather_load<mode><v_int_container>_uxtw): Likewise.
28279         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>):
28280         Likewise.
28281         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
28282         Likewise.
28283         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
28284         <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked): Likewise.
28285         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
28286         <SVE_2BHSI:mode>_sxtw): Likewise.
28287         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
28288         <SVE_2BHSI:mode>_uxtw): Likewise.
28289         (@aarch64_ldff1_gather<mode>): Likewise.
28290         (@aarch64_ldff1_gather<mode>): Likewise.
28291         (*aarch64_ldff1_gather<mode>_sxtw): Likewise.
28292         (*aarch64_ldff1_gather<mode>_uxtw): Likewise.
28293         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode>
28294         <VNx4_NARROW:mode>): Likewise.
28295         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
28296         <VNx2_NARROW:mode>): Likewise.
28297         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
28298         <VNx2_NARROW:mode>_sxtw): Likewise.
28299         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
28300         <VNx2_NARROW:mode>_uxtw): Likewise.
28301         * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): Likewise.
28302         (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode>
28303         <SVE_PARTIAL_I:mode>): Likewise.
28305 2023-06-21  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
28307         * optabs-query.cc (can_vec_mask_load_store_p): Move to optabs-tree.cc.
28308         (get_len_load_store_mode): Ditto.
28309         * optabs-query.h (can_vec_mask_load_store_p): Move to optabs-tree.h.
28310         (get_len_load_store_mode): Ditto.
28311         * optabs-tree.cc (can_vec_mask_load_store_p): New function.
28312         (get_len_load_store_mode): Ditto.
28313         * optabs-tree.h (can_vec_mask_load_store_p): Ditto.
28314         (get_len_load_store_mode): Ditto.
28315         * tree-if-conv.cc: include optabs-tree instead of optabs-query
28317 2023-06-21  Richard Biener  <rguenther@suse.de>
28319         * tree-ssa-loop-ivopts.cc (add_iv_candidate_for_use): Use
28320         split_constant_offset for the POINTER_PLUS_EXPR case.
28322 2023-06-21  Richard Biener  <rguenther@suse.de>
28324         * tree-ssa-loop-ivopts.cc (record_group_use): Use
28325         split_constant_offset.
28327 2023-06-21  Richard Biener  <rguenther@suse.de>
28329         * tree-loop-distribution.cc (classify_builtin_st): Use
28330         split_constant_offset.
28331         * tree-ssa-loop-ivopts.h (strip_offset): Remove.
28332         * tree-ssa-loop-ivopts.cc (strip_offset): Make static.
28334 2023-06-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
28336         * config/aarch64/aarch64-sve.md (mask_gather_load<mode><v_int_container>):
28337         Convert to compact alternatives syntax.
28338         (mask_gather_load<mode><v_int_container>): Likewise.
28339         (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise.
28340         (*mask_gather_load<mode><v_int_container>_sxtw): Likewise.
28341         (*mask_gather_load<mode><v_int_container>_uxtw): Likewise.
28342         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>):
28343         Likewise.
28344         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
28345         Likewise.
28346         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
28347         <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked): Likewise.
28348         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
28349         <SVE_2BHSI:mode>_sxtw): Likewise.
28350         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
28351         <SVE_2BHSI:mode>_uxtw): Likewise.
28352         (@aarch64_ldff1_gather<mode>): Likewise.
28353         (@aarch64_ldff1_gather<mode>): Likewise.
28354         (*aarch64_ldff1_gather<mode>_sxtw): Likewise.
28355         (*aarch64_ldff1_gather<mode>_uxtw): Likewise.
28356         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode>
28357         <VNx4_NARROW:mode>): Likewise.
28358         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
28359         <VNx2_NARROW:mode>): Likewise.
28360         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
28361         <VNx2_NARROW:mode>_sxtw): Likewise.
28362         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
28363         <VNx2_NARROW:mode>_uxtw): Likewise.
28364         * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): Likewise.
28365         (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode>
28366         <SVE_PARTIAL_I:mode>): Likewise.
28368 2023-06-21  Tamar Christina  <tamar.christina@arm.com>
28370         PR other/110329
28371         * doc/md.texi: Replace backslashchar.
28373 2023-06-21  Richard Biener  <rguenther@suse.de>
28375         * config/i386/i386.cc (ix86_vector_costs::finish_cost):
28376         Overload.  For masked main loops make sure the vectorization
28377         factor isn't more than double the number of iterations.
28379 2023-06-21  Jan Beulich  <jbeulich@suse.com>
28381         * config/i386/i386-expand.cc (ix86_expand_copysign): Request
28382         value duplication by ix86_build_signbit_mask() when AVX512F and
28383         not HFmode.
28384         * config/i386/sse.md (*<avx512>_vternlog<mode>_all): Convert to
28385         2-alternative form. Adjust "mode" attribute. Add "enabled"
28386         attribute.
28387         (*<avx512>_vpternlog<mode>_1): Also permit when TARGET_AVX512F
28388         && !TARGET_PREFER_AVX256.
28389         (*<avx512>_vpternlog<mode>_2): Likewise.
28390         (*<avx512>_vpternlog<mode>_3): Likewise.
28392 2023-06-21  liuhongt  <hongtao.liu@intel.com>
28394         PR target/110018
28395         * tree-vect-stmts.cc (vectorizable_conversion): Use
28396         intermiediate integer type for float_expr/fix_trunc_expr when
28397         direct optab is not existed.
28399 2023-06-20  Tamar Christina  <tamar.christina@arm.com>
28401         PR bootstrap/110324
28402         * gensupport.cc (convert_syntax): Explicitly check for RTX code.
28404 2023-06-20  Richard Sandiford  <richard.sandiford@arm.com>
28406         * config/aarch64/aarch64.md (stack_tie): Hard-code the first
28407         register operand to the stack pointer.  Require the second register
28408         operand to have the number specified in a separate const_int operand.
28409         * config/aarch64/aarch64.cc (aarch64_emit_stack_tie): New function.
28410         (aarch64_allocate_and_probe_stack_space): Use it.
28411         (aarch64_expand_prologue, aarch64_expand_epilogue): Likewise.
28412         (aarch64_expand_epilogue): Likewise.
28414 2023-06-20  Jakub Jelinek  <jakub@redhat.com>
28416         PR middle-end/79173
28417         * tree-ssa-math-opts.cc (match_uaddc_usubc): Remember lhs of
28418         IMAGPART_EXPR of arg2/arg3 and use that as arg3 if it has the right
28419         type.
28421 2023-06-20  Uros Bizjak  <ubizjak@gmail.com>
28423         * calls.h (setjmp_call_p): Change return type from int to bool.
28424         * calls.cc (struct arg_data): Change "pass_on_stack" to bool.
28425         (store_one_arg): Change return type from int to bool
28426         and adjust function body accordingly.  Change "sibcall_failure"
28427         variable to bool.
28428         (finalize_must_preallocate): Ditto.  Change *must_preallocate pointer
28429         argument  to bool.  Change "partial_seen" variable to bool.
28430         (load_register_parameters):  Change *sibcall_failure
28431         pointer argument to bool.
28432         (check_sibcall_argument_overlap_1): Change return type from int to bool
28433         and adjust function body accordingly.
28434         (check_sibcall_argument_overlap):  Ditto.  Change
28435         "mark_stored_args_map" argument to bool.
28436         (emit_call_1): Change "already_popped" variable to bool.
28437         (setjmp_call_p): Change return type from int to bool
28438         and adjust function body accordingly.
28439         (initialize_argument_information): Change *must_preallocate
28440         pointer argument to bool.
28441         (expand_call): Change "pcc_struct_value", "must_preallocate"
28442         and "sibcall_failure" variables to bool.
28443         (emit_library_call_value_1): Change "pcc_struct_value"
28444         variable to bool.
28446 2023-06-20  Martin Jambor  <mjambor@suse.cz>
28448         PR ipa/110276
28449         * ipa-sra.cc (struct caller_issues): New field there_is_one.
28450         (check_for_caller_issues): Set it.
28451         (check_all_callers_for_issues): Check it.
28453 2023-06-20  Martin Jambor  <mjambor@suse.cz>
28455         * ipa-prop.h (ipa_uid_to_idx_map_elt): New type.
28456         (struct ipcp_transformation): Rearrange members according to
28457         C++ class coding convention, add m_uid_to_idx,
28458         get_param_index and maybe_create_parm_idx_map.
28459         * ipa-cp.cc (ipcp_transformation::get_param_index): New function.
28460         (compare_uids): Likewise.
28461         (ipcp_transformation::maype_create_parm_idx_map): Likewise.
28462         * ipa-prop.cc (ipcp_get_parm_bits): Use get_param_index.
28463         (ipcp_update_bits): Accept TS as a parameter, assume it is not NULL.
28464         (ipcp_update_vr): Likewise.
28465         (ipcp_transform_function): Call, maybe_create_parm_idx_map of TS, bail
28466         out quickly if empty, pass it to ipcp_update_bits and ipcp_update_vr.
28468 2023-06-20  Carl Love  <cel@us.ibm.com>
28470         * config/rs6000/rs6000-builtin.cc (rs6000_expand_builtin):
28471         Rename CODE_FOR_xsxsigqp_tf to CODE_FOR_xsxsigqp_tf_ti.
28472         Rename CODE_FOR_xsxsigqp_kf to CODE_FOR_xsxsigqp_kf_ti.
28473         Rename CCDE_FOR_xsxexpqp_tf to CODE_FOR_xsxexpqp_tf_di.
28474         Rename CODE_FOR_xsxexpqp_kf to CODE_FOR_xsxexpqp_kf_di.
28475         (CODE_FOR_xsxexpqp_kf_v2di, CODE_FOR_xsxsigqp_kf_v1ti,
28476         CODE_FOR_xsiexpqp_kf_v2di): Add case statements.
28477         * config/rs6000/rs6000-builtins.def
28478         (__builtin_vsx_scalar_extract_exp_to_vec,
28479         __builtin_vsx_scalar_extract_sig_to_vec,
28480         __builtin_vsx_scalar_insert_exp_vqp): Add new builtin definitions.
28481         Rename xsxexpqp_kf, xsxsigqp_kf, xsiexpqp_kf to xsexpqp_kf_di,
28482         xsxsigqp_kf_ti, xsiexpqp_kf_di respectively.
28483         * config/rs6000/rs6000-c.cc (altivec_resolve_overloaded_builtin):
28484         Update case RS6000_OVLD_VEC_VSIE to handle MODE_VECTOR_INT for new
28485         overloaded instance. Update comments.
28486         * config/rs6000/rs6000-overload.def
28487         (__builtin_vec_scalar_insert_exp): Add new overload definition with
28488         vector arguments.
28489         (scalar_extract_exp_to_vec, scalar_extract_sig_to_vec): New
28490         overloaded definitions.
28491         * config/rs6000/vsx.md (V2DI_DI): New mode iterator.
28492         (DI_to_TI): New mode attribute.
28493         Rename xsxexpqp_<mode> to sxexpqp_<IEEE128:mode>_<V2DI_DI:mode>.
28494         Rename xsxsigqp_<mode> to xsxsigqp_<IEEE128:mode>_<VEC_TI:mode>.
28495         Rename xsiexpqp_<mode> to xsiexpqp_<IEEE128:mode>_<V2DI_DI:mode>.
28496         * doc/extend.texi (scalar_extract_exp_to_vec,
28497         scalar_extract_sig_to_vec): Add documentation for new builtins.
28498         (scalar_insert_exp): Add new overloaded builtin definition.
28500 2023-06-20  Li Xu  <xuli1@eswincomputing.com>
28502         * config/riscv/riscv.cc (riscv_regmode_natural_size): set the natural
28503         size of vector mask mode to one rvv register.
28505 2023-06-20  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
28507         * config/riscv/riscv-v.cc (expand_const_vector): Optimize codegen.
28509 2023-06-20  Lehua Ding  <lehua.ding@rivai.ai>
28511         * config/riscv/riscv.cc (riscv_arg_has_vector): Add default
28512         switch handler.
28514 2023-06-20  Richard Biener  <rguenther@suse.de>
28516         * tree-ssa-dse.cc (dse_classify_store): When we found
28517         no defs and the basic-block with the original definition
28518         ends in __builtin_unreachable[_trap] the store is dead.
28520 2023-06-20  Richard Biener  <rguenther@suse.de>
28522         * tree-ssa-phiprop.cc (phiprop_insert_phi): For simple loads
28523         keep the virtual SSA form up-to-date.
28525 2023-06-20  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
28527         * config/aarch64/aarch64-simd.md (*aarch64_addp_same_reg<mode>):
28528         New define_insn_and_split.
28530 2023-06-20  Tamar Christina  <tamar.christina@arm.com>
28532         * config/aarch64/aarch64.md (*mov<mode>_aarch64): Drop test comment.
28534 2023-06-20  Jan Beulich  <jbeulich@suse.com>
28536         * config/i386/sse.md (vec_dupv2di): Correct %vmovddup input
28537         constraint. Add new AVX512F alternative.
28539 2023-06-20  Richard Biener  <rguenther@suse.de>
28541         PR debug/110295
28542         * dwarf2out.cc (process_scope_var): Continue processing
28543         the decl after setting a parent in case the existing DIE
28544         was in limbo.
28546 2023-06-20  Lehua Ding  <lehua.ding@rivai.ai>
28548         * config/riscv/riscv.cc (riscv_scalable_vector_type_p): Delete.
28549         (riscv_arg_has_vector): Simplify.
28550         (riscv_pass_in_vector_p): Adjust warning message.
28552 2023-06-19  Jin Ma  <jinma@linux.alibaba.com>
28554         * config/riscv/riscv.cc (riscv_compute_frame_info): Allocate frame for FCSR.
28555         (riscv_for_each_saved_reg): Save and restore FCSR in interrupt functions.
28556         * config/riscv/riscv.md (riscv_frcsr): New patterns.
28557         (riscv_fscsr): Likewise.
28559 2023-06-19  Toru Kisuki  <tkisuki@tachyum.com>
28561         PR rtl-optimization/110305
28562         * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
28563         Handle HONOR_SNANS for x + 0.0.
28565 2023-06-19  Jan Hubicka  <jh@suse.cz>
28567         PR tree-optimization/109811
28568         PR tree-optimization/109849
28569         * passes.def: Add phiprop to early optimization passes.
28570         * tree-ssa-phiprop.cc: Allow clonning.
28572 2023-06-19  Tamar Christina  <tamar.christina@arm.com>
28574         * config/aarch64/aarch64.md (arches): Add nosimd.
28575         (*mov<mode>_aarch64, *movsi_aarch64, *movdi_aarch64): Rewrite to
28576         compact syntax.
28578 2023-06-19  Tamar Christina  <tamar.christina@arm.com>
28579             Omar Tahir  <Omar.Tahir2@arm.com>
28581         * gensupport.cc (class conlist, add_constraints, add_attributes,
28582         skip_spaces, expect_char, preprocess_compact_syntax,
28583         parse_section_layout, parse_section, convert_syntax): New.
28584         (process_rtx): Check for conversion.
28585         * genoutput.cc (process_template): Check for unresolved iterators.
28586         (class data): Add compact_syntax_p.
28587         (gen_insn): Use it.
28588         * gensupport.h (compact_syntax): New.
28589         (hash-set.h): Include.
28590         * doc/md.texi: Document it.
28592 2023-06-19  Uros Bizjak  <ubizjak@gmail.com>
28594         * recog.h (check_asm_operands): Change return type from int to bool.
28595         (insn_invalid_p): Ditto.
28596         (verify_changes): Ditto.
28597         (apply_change_group): Ditto.
28598         (constrain_operands): Ditto.
28599         (constrain_operands_cached): Ditto.
28600         (validate_replace_rtx_subexp): Ditto.
28601         (validate_replace_rtx): Ditto.
28602         (validate_replace_rtx_part): Ditto.
28603         (validate_replace_rtx_part_nosimplify): Ditto.
28604         (added_clobbers_hard_reg_p): Ditto.
28605         (peep2_regno_dead_p): Ditto.
28606         (peep2_reg_dead_p): Ditto.
28607         (store_data_bypass_p): Ditto.
28608         (if_test_bypass_p): Ditto.
28609         * rtl.h (split_all_insns_noflow): Change
28610         return type from unsigned int to void.
28611         * genemit.cc (output_added_clobbers_hard_reg_p): Change return type
28612         of generated added_clobbers_hard_reg_p from int to bool and adjust
28613         function body accordingly.  Change "used" variable type from
28614         int to bool.
28615         * recog.cc (check_asm_operands): Change return type
28616         from int to bool and adjust function body accordingly.
28617         (insn_invalid_p): Ditto.  Change "is_asm" variable to bool.
28618         (verify_changes): Change return type from int to bool.
28619         (apply_change_group): Change return type from int to bool
28620         and adjust function body accordingly.
28621         (validate_replace_rtx_subexp): Change return type from int to bool.
28622         (validate_replace_rtx): Ditto.
28623         (validate_replace_rtx_part): Ditto.
28624         (validate_replace_rtx_part_nosimplify): Ditto.
28625         (constrain_operands_cached): Ditto.
28626         (constrain_operands): Ditto.  Change "lose" and "win"
28627         variables type from int to bool.
28628         (split_all_insns_noflow): Change return type from unsigned int
28629         to void and adjust function body accordingly.
28630         (peep2_regno_dead_p): Change return type from int to bool.
28631         (peep2_reg_dead_p): Ditto.
28632         (peep2_find_free_register): Change "success"
28633         variable type from int to bool
28634         (store_data_bypass_p_1): Change return type from int to bool.
28635         (store_data_bypass_p): Ditto.
28637 2023-06-19  Li Xu  <xuli1@eswincomputing.com>
28639         * config/riscv/vector-iterators.md: zvfh/zvfhmin depends on the
28640         Zve32f extension.
28642 2023-06-19  Pan Li  <pan2.li@intel.com>
28644         PR target/110299
28645         * config/riscv/riscv-vector-builtins-bases.cc: Adjust expand for
28646         modes.
28647         * config/riscv/vector-iterators.md: Remove VWLMUL1, VWLMUL1_ZVE64,
28648         VWLMUL1_ZVE32, VI_ZVE64, VI_ZVE32, VWI, VWI_ZVE64, VWI_ZVE32,
28649         VF_ZVE63 and VF_ZVE32.
28650         * config/riscv/vector.md
28651         (@pred_widen_reduc_plus<v_su><mode><vwlmul1>): Removed.
28652         (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve64>): Ditto.
28653         (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve32>): Ditto.
28654         (@pred_widen_reduc_plus<order><mode><vwlmul1>): Ditto.
28655         (@pred_widen_reduc_plus<order><mode><vwlmul1_zve64>): Ditto.
28656         (@pred_widen_reduc_plus<v_su><VQI:mode><VHI_LMUL1:mode>): New pattern.
28657         (@pred_widen_reduc_plus<v_su><VHI:mode><VSI_LMUL1:mode>): Ditto.
28658         (@pred_widen_reduc_plus<v_su><VSI:mode><VDI_LMUL1:mode>): Ditto.
28659         (@pred_widen_reduc_plus<order><VHF:mode><VSF_LMUL1:mode>): Ditto.
28660         (@pred_widen_reduc_plus<order><VSF:mode><VDF_LMUL1:mode>): Ditto.
28662 2023-06-19  Pan Li  <pan2.li@intel.com>
28664         PR target/110277
28665         * config/riscv/riscv-vector-builtins-bases.cc: Adjust expand for
28666         ret_mode.
28667         * config/riscv/vector-iterators.md: Add VHF, VSF, VDF,
28668         VHF_LMUL1, VSF_LMUL1, VDF_LMUL1, and remove unused attr.
28669         * config/riscv/vector.md (@pred_reduc_<reduc><mode><vlmul1>): Removed.
28670         (@pred_reduc_<reduc><mode><vlmul1_zve64>): Ditto.
28671         (@pred_reduc_<reduc><mode><vlmul1_zve32>): Ditto.
28672         (@pred_reduc_plus<order><mode><vlmul1>): Ditto.
28673         (@pred_reduc_plus<order><mode><vlmul1_zve32>): Ditto.
28674         (@pred_reduc_plus<order><mode><vlmul1_zve64>): Ditto.
28675         (@pred_reduc_<reduc><VHF:mode><VHF_LMUL1:mode>): New pattern.
28676         (@pred_reduc_<reduc><VSF:mode><VSF_LMUL1:mode>): Ditto.
28677         (@pred_reduc_<reduc><VDF:mode><VDF_LMUL1:mode>): Ditto.
28678         (@pred_reduc_plus<order><VHF:mode><VHF_LMUL1:mode>): Ditto.
28679         (@pred_reduc_plus<order><VSF:mode><VSF_LMUL1:mode>): Ditto.
28680         (@pred_reduc_plus<order><VDF:mode><VDF_LMUL1:mode>): Ditto.
28682 2023-06-19  Andrew Stubbs  <ams@codesourcery.com>
28684         * config/gcn/gcn.cc (gcn_expand_divmod_libfunc): New function.
28685         (gcn_init_libfuncs): Add div and mod functions for all modes.
28686         Add placeholders for divmod functions.
28687         (TARGET_EXPAND_DIVMOD_LIBFUNC): Define.
28689 2023-06-19  Andrew Stubbs  <ams@codesourcery.com>
28691         * tree-vect-generic.cc: Include optabs-libfuncs.h.
28692         (get_compute_type): Check optab_libfunc.
28693         * tree-vect-stmts.cc: Include optabs-libfuncs.h.
28694         (vectorizable_operation): Check optab_libfunc.
28696 2023-06-19  Andrew Stubbs  <ams@codesourcery.com>
28698         * config/gcn/gcn-protos.h (vgpr_4reg_mode_p): New function.
28699         * config/gcn/gcn-valu.md (V_4REG, V_4REG_ALT): New iterators.
28700         (V_MOV, V_MOV_ALT): Likewise.
28701         (scalar_mode, SCALAR_MODE): Add TImode.
28702         (vnsi, VnSI, vndi, VnDI): Likewise.
28703         (vec_merge, vec_merge_with_clobber, vec_merge_with_vcc): Use V_MOV.
28704         (mov<mode>, mov<mode>_unspec): Use V_MOV.
28705         (*mov<mode>_4reg): New insn.
28706         (mov<mode>_exec): New 4reg variant.
28707         (mov<mode>_sgprbase): Likewise.
28708         (reload_in<mode>, reload_out<mode>): Use V_MOV.
28709         (vec_set<mode>): Likewise.
28710         (vec_duplicate<mode><exec>): New 4reg variant.
28711         (vec_extract<mode><scalar_mode>): Likewise.
28712         (vec_extract<V_ALL:mode><V_ALL_ALT:mode>): Rename to ...
28713         (vec_extract<V_MOV:mode><V_MOV_ALT:mode>): ... this, and use V_MOV.
28714         (vec_extract<V_4REG:mode><V_4REG_ALT:mode>_nop): New 4reg variant.
28715         (fold_extract_last_<mode>): Use V_MOV.
28716         (vec_init<V_ALL:mode><V_ALL_ALT:mode>): Rename to ...
28717         (vec_init<V_MOV:mode><V_MOV_ALT:mode>): ... this, and use V_MOV.
28718         (gather_load<mode><vnsi>, gather<mode>_expr<exec>,
28719         gather<mode>_insn_1offset<exec>, gather<mode>_insn_1offset_ds<exec>,
28720         gather<mode>_insn_2offsets<exec>): Use V_MOV.
28721         (scatter_store<mode><vnsi>, scatter<mode>_expr<exec_scatter>,
28722         scatter<mode>_insn_1offset<exec_scatter>,
28723         scatter<mode>_insn_1offset_ds<exec_scatter>,
28724         scatter<mode>_insn_2offsets<exec_scatter>): Likewise.
28725         (maskload<mode>di, maskstore<mode>di, mask_gather_load<mode><vnsi>,
28726         mask_scatter_store<mode><vnsi>): Likewise.
28727         * config/gcn/gcn.cc (gcn_class_max_nregs): Use vgpr_4reg_mode_p.
28728         (gcn_hard_regno_mode_ok): Likewise.
28729         (GEN_VNM): Add TImode support.
28730         (USE_TI): New macro. Separate TImode operations from non-TImode ones.
28731         (gcn_vector_mode_supported_p): Add V64TImode, V32TImode, V16TImode,
28732         V8TImode, and V2TImode.
28733         (print_operand):  Add 'J' and 'K' print codes.
28735 2023-06-19  Richard Biener  <rguenther@suse.de>
28737         PR tree-optimization/110298
28738         * tree-ssa-loop-ivcanon.cc (tree_unroll_loops_completely):
28739         Clear number of iterations info before cleaning up the CFG.
28741 2023-06-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
28743         * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
28744         Simplify vec_concat of lowpart subreg and high part vec_select.
28746 2023-06-19  Tobias Burnus  <tobias@codesourcery.com>
28748         * doc/invoke.texi (-foffload-options): Remove '-O3' from the examples.
28750 2023-06-19  Richard Sandiford  <richard.sandiford@arm.com>
28752         * tree-vect-loop-manip.cc (vect_set_loop_condition_partial_vectors):
28753         Handle null niters_skip.
28755 2023-06-19  Richard Biener  <rguenther@suse.de>
28757         * config/aarch64/aarch64.cc
28758         (aarch64_vector_costs::analyze_loop_vinfo): Fix reference
28759         to LOOP_VINFO_MASKS.
28761 2023-06-19  Senthil Kumar Selvaraj  <saaadhu@gcc.gnu.org>
28763         PR target/105523
28764         * common/config/avr/avr-common.cc: Remove setting
28765         of OPT_fdelete_null_pointer_checks.
28766         * config/avr/avr.cc (avr_option_override): Clear
28767         flag_delete_null_pointer_checks if zero_address_valid.
28768         (avr_addr_space_zero_address_valid): New function.
28769         (TARGET_ADDR_SPACE_ZERO_ADDRESS_VALID): Provide target
28770         hook.
28772 2023-06-19  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
28773             Robin Dapp  <rdapp.gcc@gmail.com>
28775         * doc/md.texi: Add len_mask{load,store}.
28776         * genopinit.cc (main): Ditto.
28777         (CMP_NAME): Ditto.
28778         * internal-fn.cc (len_maskload_direct): Ditto.
28779         (len_maskstore_direct): Ditto.
28780         (expand_call_mem_ref): Ditto.
28781         (expand_partial_load_optab_fn): Ditto.
28782         (expand_len_maskload_optab_fn): Ditto.
28783         (expand_partial_store_optab_fn): Ditto.
28784         (expand_len_maskstore_optab_fn): Ditto.
28785         (direct_len_maskload_optab_supported_p): Ditto.
28786         (direct_len_maskstore_optab_supported_p): Ditto.
28787         * internal-fn.def (LEN_MASK_LOAD): Ditto.
28788         (LEN_MASK_STORE): Ditto.
28789         * optabs.def (OPTAB_CD): Ditto.
28791 2023-06-19  Robin Dapp  <rdapp@ventanamicro.com>
28793         * config/riscv/autovec.md (<optab><mode>2): Add unop expanders.
28795 2023-06-19  Robin Dapp  <rdapp@ventanamicro.com>
28797         * config/riscv/autovec.md (<optab><mode>3): Implement binop
28798         expander.
28799         * config/riscv/riscv-protos.h (emit_vlmax_fp_insn): Declare.
28800         (enum vxrm_field_enum): Rename this...
28801         (enum fixed_point_rounding_mode): ...to this.
28802         (enum frm_field_enum): Rename this...
28803         (enum floating_point_rounding_mode): ...to this.
28804         * config/riscv/riscv-v.cc (emit_vlmax_fp_insn): New function
28805         * config/riscv/riscv.cc (riscv_const_insns): Clarify const
28806         vector handling.
28807         (riscv_libgcc_floating_mode_supported_p): Adjust comment.
28808         (riscv_excess_precision): Do not convert to float for ZVFH.
28809         * config/riscv/vector-iterators.md: Add VF_AUTO iterator.
28811 2023-06-19  Robin Dapp  <rdapp@ventanamicro.com>
28813         * config/riscv/vector-iterators.md: Add VI_QH iterator.
28814         * config/riscv/autovec-opt.md
28815         (@pred_extract_first_sextdi<mode>): New vmv.x.s pattern
28816         that includes sign extension.
28817         (@pred_extract_first_sextsi<mode>): Dito for SImode.
28819 2023-06-19  Robin Dapp  <rdapp@ventanamicro.com>
28821         * config/riscv/autovec.md (vec_set<mode>): Implement.
28822         (vec_extract<mode><vel>): Implement.
28823         * config/riscv/riscv-protos.h (enum insn_type): Add slide insn.
28824         (emit_vlmax_slide_insn): Declare.
28825         (emit_nonvlmax_slide_tu_insn): Declare.
28826         (emit_scalar_move_insn): Export.
28827         (emit_nonvlmax_integer_move_insn): Export.
28828         * config/riscv/riscv-v.cc (emit_vlmax_slide_insn): New function.
28829         (emit_nonvlmax_slide_tu_insn): New function.
28830         (emit_vlmax_masked_mu_insn): No change.
28831         (emit_vlmax_integer_move_insn): Export.
28833 2023-06-19  Richard Biener  <rguenther@suse.de>
28835         * tree-vectorizer.h (enum vect_partial_vector_style): New.
28836         (_loop_vec_info::partial_vector_style): Likewise.
28837         (LOOP_VINFO_PARTIAL_VECTORS_STYLE): Likewise.
28838         (rgroup_controls::compare_type): Add.
28839         (vec_loop_masks): Change from a typedef to auto_vec<>
28840         to a structure.
28841         * tree-vect-loop-manip.cc (vect_set_loop_condition_partial_vectors):
28842         Adjust.  Convert niters_skip to compare_type.
28843         (vect_set_loop_condition_partial_vectors_avx512): New function
28844         implementing the AVX512 partial vector codegen.
28845         (vect_set_loop_condition): Dispatch to the correct
28846         vect_set_loop_condition_partial_vectors_* function based on
28847         LOOP_VINFO_PARTIAL_VECTORS_STYLE.
28848         (vect_prepare_for_masked_peels): Compute LOOP_VINFO_MASK_SKIP_NITERS
28849         in the original niter type.
28850         * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): Initialize
28851         partial_vector_style.
28852         (can_produce_all_loop_masks_p): Adjust.
28853         (vect_verify_full_masking): Produce the rgroup_controls vector
28854         here.  Set LOOP_VINFO_PARTIAL_VECTORS_STYLE on success.
28855         (vect_verify_full_masking_avx512): New function implementing
28856         verification of AVX512 style masking.
28857         (vect_verify_loop_lens): Set LOOP_VINFO_PARTIAL_VECTORS_STYLE.
28858         (vect_analyze_loop_2): Also try AVX512 style masking.
28859         Adjust condition.
28860         (vect_estimate_min_profitable_iters): Implement AVX512 style
28861         mask producing cost.
28862         (vect_record_loop_mask): Do not build the rgroup_controls
28863         vector here but record masks in a hash-set.
28864         (vect_get_loop_mask): Implement AVX512 style mask query,
28865         complementing the existing while_ult style.
28867 2023-06-19  Richard Biener  <rguenther@suse.de>
28869         * tree-vectorizer.h (vect_get_loop_mask): Add loop_vec_info
28870         argument.
28871         * tree-vect-loop.cc (vect_get_loop_mask): Likewise.
28872         (vectorize_fold_left_reduction): Adjust.
28873         (vect_transform_reduction): Likewise.
28874         (vectorizable_live_operation): Likewise.
28875         * tree-vect-stmts.cc (vectorizable_call): Likewise.
28876         (vectorizable_operation): Likewise.
28877         (vectorizable_store): Likewise.
28878         (vectorizable_load): Likewise.
28879         (vectorizable_condition): Likewise.
28881 2023-06-19  Senthil Kumar Selvaraj  <saaadhu@gcc.gnu.org>
28883         PR target/110086
28884         * config/avr/avr.opt (mgas-isr-prologues, mmain-is-OS_task):
28885         Add Optimization option property.
28887 2023-06-19  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
28889         * config/xtensa/xtensa.cc (xtensa_constantsynth_2insn):
28890         Add new pattern for the abovementioned case.
28892 2023-06-19  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
28894         * config/xtensa/xtensa.cc
28895         (TARGET_MEMORY_MOVE_COST, xtensa_memory_move_cost): Remove.
28897 2023-06-19  Jiufu Guo  <guojiufu@linux.ibm.com>
28899         * config/rs6000/rs6000.cc (TARGET_CONST_ANCHOR): New define.
28901 2023-06-19  Jiufu Guo  <guojiufu@linux.ibm.com>
28903         * cse.cc (try_const_anchors): Check SCALAR_INT_MODE.
28905 2023-06-19  liuhongt  <hongtao.liu@intel.com>
28907         PR target/110235
28908         * config/i386/sse.md (<sse2_avx2>_packsswb<mask_name>):
28909         Substitute with ..
28910         (sse2_packsswb<mask_name>): .. this, ..
28911         (avx2_packsswb<mask_name>): .. this and ..
28912         (avx512bw_packsswb<mask_name>): .. this.
28913         (<sse2_avx2>_packssdw<mask_name>): Substitute with ..
28914         (sse2_packssdw<mask_name>): .. this, ..
28915         (avx2_packssdw<mask_name>): .. this and ..
28916         (avx512bw_packssdw<mask_name>): .. this.
28918 2023-06-19  liuhongt  <hongtao.liu@intel.com>
28920         PR target/110235
28921         * config/i386/i386-expand.cc (ix86_split_mmx_pack): Use
28922         UNSPEC_US_TRUNCATE instead of original us_truncate for
28923         packusdw/packuswb.
28924         * config/i386/mmx.md (mmx_pack<s_trunsuffix>swb): Substitute
28925         with ..
28926         (mmx_packsswb): .. this and ..
28927         (mmx_packuswb): .. this.
28928         (mmx_packusdw): Use UNSPEC_US_TRUNCATE instead of original
28929         us_truncate.
28930         (s_trunsuffix): Removed code iterator.
28931         (any_s_truncate): Ditto.
28932         * config/i386/sse.md (<sse2_avx2>_packuswb<mask_name>): Use
28933         UNSPEC_US_TRUNCATE instead of original us_truncate.
28934         (<sse4_1_avx2>_packusdw<mask_name>): Ditto.
28935         * config/i386/i386.md (UNSPEC_US_TRUNCATE): New unspec_c_enum.
28937 2023-06-18  Pan Li  <pan2.li@intel.com>
28939         * config/riscv/riscv-vector-builtins-bases.cc: Fix one typo.
28941 2023-06-18  Uros Bizjak  <ubizjak@gmail.com>
28943         * rtl.h (*rtx_equal_p_callback_function):
28944         Change return type from int to bool.
28945         (rtx_equal_p): Ditto.
28946         (*hash_rtx_callback_function): Ditto.
28947         * rtl.cc (rtx_equal_p): Change return type from int to bool
28948         and adjust function body accordingly.
28949         * early-remat.cc (scratch_equal): Ditto.
28950         * sel-sched-ir.cc (skip_unspecs_callback): Ditto.
28951         (hash_with_unspec_callback): Ditto.
28953 2023-06-18  Jeff Law  <jlaw@ventanamicro.com>
28955         * config/arc/arc.md (movqi_insn): Allow certain constants to
28956         be stored into memory in the pattern's condition.
28957         (movsf_insn): Similarly.
28959 2023-06-18  Honza  <jh@ryzen3.suse.cz>
28961         PR tree-optimization/109849
28962         * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Add new parameter
28963         ES; handle ipa_predicate::not_sra_candidate.
28964         (evaluate_properties_for_edge): Pass es to
28965         evaluate_conditions_for_known_args.
28966         (ipa_fn_summary_t::duplicate): Handle sra candidates.
28967         (dump_ipa_call_summary): Dump points_to_possible_sra_candidate.
28968         (load_or_store_of_ptr_parameter): New function.
28969         (points_to_possible_sra_candidate_p): New function.
28970         (analyze_function_body): Initialize points_to_possible_sra_candidate;
28971         determine sra predicates.
28972         (estimate_ipcp_clone_size_and_time): Update call of
28973         evaluate_conditions_for_known_args.
28974         (remap_edge_params): Update points_to_possible_sra_candidate.
28975         (read_ipa_call_summary): Stream points_to_possible_sra_candidate
28976         (write_ipa_call_summary): Likewise.
28977         * ipa-predicate.cc (ipa_predicate::add_clause): Handle not_sra_candidate.
28978         (dump_condition): Dump it.
28979         * ipa-predicate.h (struct inline_param_summary): Add
28980         points_to_possible_sra_candidate.
28982 2023-06-18  Roger Sayle  <roger@nextmovesoftware.com>
28984         * config/i386/i386-expand.cc (ix86_expand_carry): New helper
28985         function for setting the carry flag.
28986         (ix86_expand_builtin) <handlecarry>: Use it here.
28987         * config/i386/i386-protos.h (ix86_expand_carry): Prototype here.
28988         * config/i386/i386.md (uaddc<mode>5): Use ix86_expand_carry.
28989         (usubc<mode>5): Likewise.
28991 2023-06-18  Roger Sayle  <roger@nextmovesoftware.com>
28993         * config/i386/i386.md (*concat<mode><dwi>3_1): Use QImode
28994         for the immediate constant shift count.
28995         (*concat<mode><dwi>3_2): Likewise.
28996         (*concat<mode><dwi>3_3): Likewise.
28997         (*concat<mode><dwi>3_4): Likewise.
28998         (*concat<mode><dwi>3_5): Likewise.
28999         (*concat<mode><dwi>3_6): Likewise.
29001 2023-06-18  Uros Bizjak  <ubizjak@gmail.com>
29003         * cse.cc (hash_rtx_cb): Rename to hash_rtx.
29004         (hash_rtx): Remove.
29005         * early-remat.cc (remat_candidate_hasher::equal): Update
29006         to call rtx_equal_p with rtx_equal_p_callback_function argument.
29007         * rtl.cc (rtx_equal_p_cb): Rename to rtx_equal_p.
29008         (rtx_equal_p): Remove.
29009         * rtl.h (rtx_equal_p): Add rtx_equal_p_callback_function
29010         argument with NULL default value.
29011         (rtx_equal_p_cb): Remove function declaration.
29012         (hash_rtx_cb): Ditto.
29013         (hash_rtx): Add hash_rtx_callback_function argument
29014         with NULL default value.
29015         * sel-sched-ir.cc (free_nop_pool): Update function comment.
29016         (skip_unspecs_callback): Ditto.
29017         (vinsn_init): Update to call hash_rtx with
29018         hash_rtx_callback_function argument.
29019         (vinsn_equal_p): Ditto.
29021 2023-06-18  yulong  <shiyulong@iscas.ac.cn>
29023         * config/riscv/genrvv-type-indexer.cc (valid_type): Enable FP16 tuple.
29024         * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): New macro.
29025         (ADJUST_ALIGNMENT): Ditto.
29026         (RVV_TUPLE_PARTIAL_MODES): Ditto.
29027         (ADJUST_NUNITS): Ditto.
29028         * config/riscv/riscv-vector-builtins-types.def (vfloat16mf4x2_t):
29029         New types.
29030         (vfloat16mf4x3_t): Ditto.
29031         (vfloat16mf4x4_t): Ditto.
29032         (vfloat16mf4x5_t): Ditto.
29033         (vfloat16mf4x6_t): Ditto.
29034         (vfloat16mf4x7_t): Ditto.
29035         (vfloat16mf4x8_t): Ditto.
29036         (vfloat16mf2x2_t): Ditto.
29037         (vfloat16mf2x3_t): Ditto.
29038         (vfloat16mf2x4_t): Ditto.
29039         (vfloat16mf2x5_t): Ditto.
29040         (vfloat16mf2x6_t): Ditto.
29041         (vfloat16mf2x7_t): Ditto.
29042         (vfloat16mf2x8_t): Ditto.
29043         (vfloat16m1x2_t): Ditto.
29044         (vfloat16m1x3_t): Ditto.
29045         (vfloat16m1x4_t): Ditto.
29046         (vfloat16m1x5_t): Ditto.
29047         (vfloat16m1x6_t): Ditto.
29048         (vfloat16m1x7_t): Ditto.
29049         (vfloat16m1x8_t): Ditto.
29050         (vfloat16m2x2_t): Ditto.
29051         (vfloat16m2x3_t): Ditto.
29052         (vfloat16m2x4_t): Ditto.
29053         (vfloat16m4x2_t): Ditto.
29054         * config/riscv/riscv-vector-builtins.def (vfloat16mf4x2_t): New macro.
29055         (vfloat16mf4x3_t): Ditto.
29056         (vfloat16mf4x4_t): Ditto.
29057         (vfloat16mf4x5_t): Ditto.
29058         (vfloat16mf4x6_t): Ditto.
29059         (vfloat16mf4x7_t): Ditto.
29060         (vfloat16mf4x8_t): Ditto.
29061         (vfloat16mf2x2_t): Ditto.
29062         (vfloat16mf2x3_t): Ditto.
29063         (vfloat16mf2x4_t): Ditto.
29064         (vfloat16mf2x5_t): Ditto.
29065         (vfloat16mf2x6_t): Ditto.
29066         (vfloat16mf2x7_t): Ditto.
29067         (vfloat16mf2x8_t): Ditto.
29068         (vfloat16m1x2_t): Ditto.
29069         (vfloat16m1x3_t): Ditto.
29070         (vfloat16m1x4_t): Ditto.
29071         (vfloat16m1x5_t): Ditto.
29072         (vfloat16m1x6_t): Ditto.
29073         (vfloat16m1x7_t): Ditto.
29074         (vfloat16m1x8_t): Ditto.
29075         (vfloat16m2x2_t): Ditto.
29076         (vfloat16m2x3_t): Ditto.
29077         (vfloat16m2x4_t): Ditto.
29078         (vfloat16m4x2_t): Ditto.
29079         * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): New.
29080         * config/riscv/riscv.md: New.
29081         * config/riscv/vector-iterators.md: New.
29083 2023-06-17  Roger Sayle  <roger@nextmovesoftware.com>
29085         * config/i386/i386-expand.cc (ix86_expand_move): Check that OP1 is
29086         CONST_WIDE_INT_P before calling ix86_convert_wide_int_to_broadcast.
29087         Generalize special case for converting TImode to V1TImode to handle
29088         all 128-bit vector conversions.
29090 2023-06-17  Costas Argyris  <costas.argyris@gmail.com>
29092         * gcc-ar.cc (main): Refactor to slightly reduce code
29093         duplication.  Avoid unnecessary elements in nargv.
29095 2023-06-16  Pan Li  <pan2.li@intel.com>
29097         PR target/110265
29098         * config/riscv/riscv-vector-builtins-bases.cc: Add ret_mode for
29099         integer reduction expand.
29100         * config/riscv/vector-iterators.md: Add VQI, VHI, VSI and VDI,
29101         and the LMUL1 attr respectively.
29102         * config/riscv/vector.md
29103         (@pred_reduc_<reduc><mode><vlmul1>): Removed.
29104         (@pred_reduc_<reduc><mode><vlmul1_zve64>): Likewise.
29105         (@pred_reduc_<reduc><mode><vlmul1_zve32>): Likewise.
29106         (@pred_reduc_<reduc><VQI:mode><VQI_LMUL1:mode>): New pattern.
29107         (@pred_reduc_<reduc><VHI:mode><VHI_LMUL1:mode>): Likewise.
29108         (@pred_reduc_<reduc><VSI:mode><VSI_LMUL1:mode>): Likewise.
29109         (@pred_reduc_<reduc><VDI:mode><VDI_LMUL1:mode>): Likewise.
29111 2023-06-16  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
29113         PR target/110264
29114         * config/riscv/riscv-vsetvl.cc (insert_vsetvl): Fix bug.
29116 2023-06-16  Jakub Jelinek  <jakub@redhat.com>
29118         PR middle-end/79173
29119         * builtin-types.def (BT_FN_UINT_UINT_UINT_UINT_UINTPTR,
29120         BT_FN_ULONG_ULONG_ULONG_ULONG_ULONGPTR,
29121         BT_FN_ULONGLONG_ULONGLONG_ULONGLONG_ULONGLONG_ULONGLONGPTR): New
29122         types.
29123         * builtins.def (BUILT_IN_ADDC, BUILT_IN_ADDCL, BUILT_IN_ADDCLL,
29124         BUILT_IN_SUBC, BUILT_IN_SUBCL, BUILT_IN_SUBCLL): New builtins.
29125         * builtins.cc (fold_builtin_addc_subc): New function.
29126         (fold_builtin_varargs): Handle BUILT_IN_{ADD,SUB}C{,L,LL}.
29127         * doc/extend.texi (__builtin_addc, __builtin_subc): Document.
29129 2023-06-16  Jakub Jelinek  <jakub@redhat.com>
29131         PR tree-optimization/110271
29132         * tree-ssa-math-opts.cc (math_opts_dom_walker::after_dom_children)
29133         <case PLUS_EXPR>: Ignore return value from match_arith_overflow,
29134         instead call match_uaddc_usubc only if gsi_stmt (gsi) is still stmt.
29136 2023-06-16  Martin Jambor  <mjambor@suse.cz>
29138         * configure: Regenerate.
29140 2023-06-16  Roger Sayle  <roger@nextmovesoftware.com>
29141             Uros Bizjak  <ubizjak@gmail.com>
29143         PR target/31985
29144         * config/i386/i386.md (*add<dwi>3_doubleword_concat): New
29145         define_insn_and_split combine *add<dwi>3_doubleword with
29146         a *concat<mode><dwi>3 for more efficient lowering after reload.
29148 2023-06-16  Vladimir N. Makarov  <vmakarov@redhat.com>
29150         * ira-lives.cc: Include except.h.
29151         (process_bb_node_lives): Ignore conflicts from cleanup exceptions
29152         when the pseudo does not live at the exception landing pad.
29154 2023-06-16  Alex Coplan  <alex.coplan@arm.com>
29156         * doc/invoke.texi: Document -Welaborated-enum-base.
29158 2023-06-16  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
29160         * config/aarch64/aarch64-simd-builtins.def (shrn2_n): Rename builtins to...
29161         (ushrn2_n): ... This.
29162         (sqshrn2_n): Rename builtins to...
29163         (ssqshrn2_n): ... This.
29164         (uqshrn2_n): Rename builtins to...
29165         (uqushrn2_n): ... This.
29166         * config/aarch64/arm_neon.h (vqshrn_high_n_s16): Adjust for the above.
29167         (vqshrn_high_n_s32): Likewise.
29168         (vqshrn_high_n_s64): Likewise.
29169         (vqshrn_high_n_u16): Likewise.
29170         (vqshrn_high_n_u32): Likewise.
29171         (vqshrn_high_n_u64): Likewise.
29172         (vshrn_high_n_s16): Likewise.
29173         (vshrn_high_n_s32): Likewise.
29174         (vshrn_high_n_s64): Likewise.
29175         (vshrn_high_n_u16): Likewise.
29176         (vshrn_high_n_u32): Likewise.
29177         (vshrn_high_n_u64): Likewise.
29178         * config/aarch64/aarch64-simd.md (aarch64_<shrn_op>shrn2_n<mode>_insn_le):
29179         Rename to...
29180         (aarch64_<shrn_op><sra_op>shrn2_n<mode>_insn_le): ... This.
29181         Use SHIFTRT iterator and AARCH64_VALID_SHRN_OP check.
29182         (aarch64_<shrn_op>shrn2_n<mode>_insn_be): Rename to...
29183         (aarch64_<shrn_op><sra_op>shrn2_n<mode>_insn_be): ... This.
29184         Use SHIFTRT iterator and AARCH64_VALID_SHRN_OP check.
29185         (aarch64_<shrn_op>shrn2_n<mode>): Rename to...
29186         (aarch64_<shrn_op><sra_op>shrn2_n<mode>): ... This.
29187         Update expander for the above.
29189 2023-06-16  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
29191         * config/aarch64/aarch64-simd-builtins.def (shrn2): Rename builtins to...
29192         (shrn2_n): ... This.
29193         (rshrn2): Rename builtins to...
29194         (rshrn2_n): ... This.
29195         * config/aarch64/arm_neon.h (vrshrn_high_n_s16): Adjust for the above.
29196         (vrshrn_high_n_s32): Likewise.
29197         (vrshrn_high_n_s64): Likewise.
29198         (vrshrn_high_n_u16): Likewise.
29199         (vrshrn_high_n_u32): Likewise.
29200         (vrshrn_high_n_u64): Likewise.
29201         (vshrn_high_n_s16): Likewise.
29202         (vshrn_high_n_s32): Likewise.
29203         (vshrn_high_n_s64): Likewise.
29204         (vshrn_high_n_u16): Likewise.
29205         (vshrn_high_n_u32): Likewise.
29206         (vshrn_high_n_u64): Likewise.
29207         * config/aarch64/aarch64-simd.md (*aarch64_<srn_op>shrn<mode>2_vect_le):
29208         Delete.
29209         (*aarch64_<srn_op>shrn<mode>2_vect_be): Likewise.
29210         (aarch64_shrn2<mode>_insn_le): Likewise.
29211         (aarch64_shrn2<mode>_insn_be): Likewise.
29212         (aarch64_shrn2<mode>): Likewise.
29213         (aarch64_rshrn2<mode>_insn_le): Likewise.
29214         (aarch64_rshrn2<mode>_insn_be): Likewise.
29215         (aarch64_rshrn2<mode>): Likewise.
29216         (aarch64_<sur>q<r>shr<u>n2_n<mode>_insn_le): Likewise.
29217         (aarch64_<shrn_op>shrn2_n<mode>_insn_le): New define_insn.
29218         (aarch64_<sur>q<r>shr<u>n2_n<mode>_insn_be): Delete.
29219         (aarch64_<shrn_op>shrn2_n<mode>_insn_be): New define_insn.
29220         (aarch64_<sur>q<r>shr<u>n2_n<mode>): Delete.
29221         (aarch64_<shrn_op>shrn2_n<mode>): New define_expand.
29222         (aarch64_<shrn_op>rshrn2_n<mode>_insn_le): New define_insn.
29223         (aarch64_<shrn_op>rshrn2_n<mode>_insn_be): New define_insn.
29224         (aarch64_<shrn_op>rshrn2_n<mode>): New define_expand.
29225         (aarch64_sqshrun2_n<mode>_insn_le): New define_insn.
29226         (aarch64_sqshrun2_n<mode>_insn_be): New define_insn.
29227         (aarch64_sqshrun2_n<mode>): New define_expand.
29228         (aarch64_sqrshrun2_n<mode>_insn_le): New define_insn.
29229         (aarch64_sqrshrun2_n<mode>_insn_be): New define_insn.
29230         (aarch64_sqrshrun2_n<mode>): New define_expand.
29231         * config/aarch64/iterators.md (UNSPEC_SQSHRUN, UNSPEC_SQRSHRUN,
29232         UNSPEC_SQSHRN, UNSPEC_UQSHRN, UNSPEC_SQRSHRN, UNSPEC_UQRSHRN):
29233         Delete unspec values.
29234         (VQSHRN_N): Delete int iterator.
29236 2023-06-16  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
29238         * config/aarch64/aarch64.h (AARCH64_VALID_SHRN_OP): Define.
29239         * config/aarch64/aarch64-simd.md
29240         (*aarch64_<shrn_op>shrn_n<mode>_insn<vczle><vczbe>): Rename to...
29241         (*aarch64_<shrn_op><shrn_s>shrn_n<mode>_insn<vczle><vczbe>): ... This.
29242         Use SHIFTRT iterator and add AARCH64_VALID_SHRN_OP to condition.
29243         * config/aarch64/iterators.md (shrn_s): New code attribute.
29245 2023-06-16  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
29247         * config/aarch64/aarch64-simd.md (aarch64_<sur>q<r>shr<u>n_n<mode>):
29248         Rename to...
29249         (aarch64_<shrn_op>shrn_n<mode>): ... This.  Reimplement with RTL codes.
29250         (*aarch64_<shrn_op>rshrn_n<mode>_insn): New define_insn.
29251         (aarch64_sqrshrun_n<mode>_insn): Likewise.
29252         (aarch64_sqshrun_n<mode>_insn): Likewise.
29253         (aarch64_<shrn_op>rshrn_n<mode>): New define_expand.
29254         (aarch64_sqshrun_n<mode>): Likewise.
29255         (aarch64_sqrshrun_n<mode>): Likewise.
29256         * config/aarch64/iterators.md (V2XWIDE): Add HI and SI modes.
29258 2023-06-16  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
29260         * config/aarch64/aarch64-simd-builtins.def (shrn): Rename builtins to...
29261         (shrn_n): ... This.
29262         (rshrn): Rename builtins to...
29263         (rshrn_n): ... This.
29264         * config/aarch64/arm_neon.h (vshrn_n_s16): Adjust for the above.
29265         (vshrn_n_s32): Likewise.
29266         (vshrn_n_s64): Likewise.
29267         (vshrn_n_u16): Likewise.
29268         (vshrn_n_u32): Likewise.
29269         (vshrn_n_u64): Likewise.
29270         (vrshrn_n_s16): Likewise.
29271         (vrshrn_n_s32): Likewise.
29272         (vrshrn_n_s64): Likewise.
29273         (vrshrn_n_u16): Likewise.
29274         (vrshrn_n_u32): Likewise.
29275         (vrshrn_n_u64): Likewise.
29276         * config/aarch64/aarch64-simd.md
29277         (*aarch64_<srn_op>shrn<mode><vczle><vczbe>): Delete.
29278         (aarch64_shrn<mode>): Likewise.
29279         (aarch64_rshrn<mode><vczle><vczbe>_insn): Likewise.
29280         (aarch64_rshrn<mode>): Likewise.
29281         (aarch64_<sur>q<r>shr<u>n_n<mode>_insn<vczle><vczbe>): Likewise.
29282         (aarch64_<sur>q<r>shr<u>n_n<mode>): Likewise.
29283         (*aarch64_<shrn_op>shrn_n<mode>_insn<vczle><vczbe>): New define_insn.
29284         (*aarch64_<shrn_op>rshrn_n<mode>_insn<vczle><vczbe>): Likewise.
29285         (*aarch64_sqshrun_n<mode>_insn<vczle><vczbe>): Likewise.
29286         (*aarch64_sqrshrun_n<mode>_insn<vczle><vczbe>): Likewise.
29287         (aarch64_<shrn_op>shrn_n<mode>): New define_expand.
29288         (aarch64_<shrn_op>rshrn_n<mode>): Likewise.
29289         (aarch64_sqshrun_n<mode>): Likewise.
29290         (aarch64_sqrshrun_n<mode>): Likewise.
29291         * config/aarch64/iterators.md (ALL_TRUNC): New code iterator.
29292         (TRUNCEXTEND): New code attribute.
29293         (TRUNC_SHIFT): Likewise.
29294         (shrn_op): Likewise.
29295         * config/aarch64/predicates.md (aarch64_simd_umax_quarter_mode):
29296         New predicate.
29298 2023-06-16  Pan Li  <pan2.li@intel.com>
29300         * config/riscv/riscv-vsetvl.cc
29301         (pass_vsetvl::global_eliminate_vsetvl_insn): Initialize var by NULL.
29303 2023-06-16  Richard Biener  <rguenther@suse.de>
29305         PR tree-optimization/110278
29306         * match.pd (uns < (typeof uns)(uns != 0) -> false): New.
29307         (x != (typeof x)(x == 0) -> true): Likewise.
29309 2023-06-16  Pali Rohár  <pali@kernel.org>
29311         * config/i386/mingw-w64.h (CPP_SPEC): Adjust for -mcrtdll=.
29312         (REAL_LIBGCC_SPEC): New define.
29313         * config/i386/mingw.opt: Add mcrtdll=
29314         * config/i386/mingw32.h (CPP_SPEC): Adjust for -mcrtdll=.
29315         (REAL_LIBGCC_SPEC): Adjust for -mcrtdll=.
29316         (STARTFILE_SPEC): Adjust for -mcrtdll=.
29317         * doc/invoke.texi: Add mcrtdll= documentation.
29319 2023-06-16  Simon Dardis  <simon.dardis@imgtec.com>
29321         * config/mips/mips.cc (enum mips_code_readable_setting):New enmu.
29322         (mips_handle_code_readable_attr):New static function.
29323         (mips_get_code_readable_attr):New static enum function.
29324         (mips_set_current_function):Set the code_readable mode.
29325         (mips_option_override):Same as above.
29326         * doc/extend.texi:Document code_readable.
29328 2023-06-16  Richard Biener  <rguenther@suse.de>
29330         PR tree-optimization/110269
29331         * fold-const.cc (fold_binary_loc): Merge x != 0 folding
29332         with tree_expr_nonzero_p ...
29333         * match.pd (cmp (convert? addr@0) integer_zerop): With this
29334         pattern.
29336 2023-06-15  Marek Polacek  <polacek@redhat.com>
29338         * Makefile.in: Set LD_PICFLAG.  Use it.  Set enable_host_pie.
29339         Remove NO_PIE_CFLAGS and NO_PIE_FLAG.  Pass LD_PICFLAG to
29340         ALL_LINKERFLAGS.  Use the "pic" build of libiberty if --enable-host-pie.
29341         * configure.ac (--enable-host-shared): Don't set PICFLAG here.
29342         (--enable-host-pie): New check.  Set PICFLAG and LD_PICFLAG after this
29343         check.
29344         * configure: Regenerate.
29345         * doc/install.texi: Document --enable-host-pie.
29347 2023-06-15  Manolis Tsamis  <manolis.tsamis@vrull.eu>
29349         * regcprop.cc (maybe_mode_change): Enable stack pointer
29350         propagation.
29352 2023-06-15  Andrew MacLeod  <amacleod@redhat.com>
29354         PR tree-optimization/110266
29355         * gimple-range-fold.cc (adjust_imagpart_expr): Check for integer
29356         complex type.
29357         (adjust_realpart_expr): Ditto.
29359 2023-06-15  Jan Beulich  <jbeulich@suse.com>
29361         * config/i386/sse.md (<avx512>_vec_dup<mode><mask_name>): Use
29362         vmovddup.
29364 2023-06-15  Jan Beulich  <jbeulich@suse.com>
29366         * config/i386/constraints.md: Mention k and r for B.
29368 2023-06-15  Lulu Cheng  <chenglulu@loongson.cn>
29369             Andrew Pinski  <apinski@marvell.com>
29371         PR target/110136
29372         * config/loongarch/loongarch.md: Modify the register constraints for template
29373         "jumptable" and "indirect_jump" from "r" to "e".
29375 2023-06-15  Xi Ruoyao  <xry111@xry111.site>
29377         * config/loongarch/loongarch-tune.h (loongarch_align): New
29378         struct.
29379         * config/loongarch/loongarch-def.h (loongarch_cpu_align): New
29380         array.
29381         * config/loongarch/loongarch-def.c (loongarch_cpu_align): Define
29382         the array.
29383         * config/loongarch/loongarch.cc
29384         (loongarch_option_override_internal): Set the value of
29385         -falign-functions= if -falign-functions is enabled but no value
29386         is given.  Likewise for -falign-labels=.
29388 2023-06-15  Jakub Jelinek  <jakub@redhat.com>
29390         PR middle-end/79173
29391         * internal-fn.def (UADDC, USUBC): New internal functions.
29392         * internal-fn.cc (expand_UADDC, expand_USUBC): New functions.
29393         (commutative_ternary_fn_p): Return true also for IFN_UADDC.
29394         * optabs.def (uaddc5_optab, usubc5_optab): New optabs.
29395         * tree-ssa-math-opts.cc (uaddc_cast, uaddc_ne0, uaddc_is_cplxpart,
29396         match_uaddc_usubc): New functions.
29397         (math_opts_dom_walker::after_dom_children): Call match_uaddc_usubc
29398         for PLUS_EXPR, MINUS_EXPR, BIT_IOR_EXPR and BIT_XOR_EXPR unless
29399         other optimizations have been successful for those.
29400         * gimple-fold.cc (gimple_fold_call): Handle IFN_UADDC and IFN_USUBC.
29401         * fold-const-call.cc (fold_const_call): Likewise.
29402         * gimple-range-fold.cc (adjust_imagpart_expr): Likewise.
29403         * tree-ssa-dce.cc (eliminate_unnecessary_stmts): Likewise.
29404         * doc/md.texi (uaddc<mode>5, usubc<mode>5): Document new named
29405         patterns.
29406         * config/i386/i386.md (uaddc<mode>5, usubc<mode>5): New
29407         define_expand patterns.
29408         (*setcc_qi_addqi3_cconly_overflow_1_<mode>, *setccc): Split
29409         into NOTE_INSN_DELETED note rather than nop instruction.
29410         (*setcc_qi_negqi_ccc_1_<mode>, *setcc_qi_negqi_ccc_2_<mode>):
29411         Likewise.
29413 2023-06-15  Jakub Jelinek  <jakub@redhat.com>
29415         PR middle-end/79173
29416         * config/i386/i386.md (subborrow<mode>): Add alternative with
29417         memory destination and add for it define_peephole2
29418         TARGET_READ_MODIFY_WRITE/-Os patterns to prefer using memory
29419         destination in these patterns.
29421 2023-06-15  Jakub Jelinek  <jakub@redhat.com>
29423         PR middle-end/79173
29424         * config/i386/i386.md (*sub<mode>_3, @add<mode>3_carry,
29425         addcarry<mode>, @sub<mode>3_carry, *add<mode>3_cc_overflow_1): Add
29426         define_peephole2 TARGET_READ_MODIFY_WRITE/-Os patterns to prefer
29427         using memory destination in these patterns.
29429 2023-06-15  Jakub Jelinek  <jakub@redhat.com>
29431         * gimple-fold.cc (gimple_fold_call): Move handling of arg0
29432         as well as arg1 INTEGER_CSTs for .UBSAN_CHECK_{ADD,SUB,MUL}
29433         and .{ADD,SUB,MUL}_OVERFLOW calls from here...
29434         * fold-const-call.cc (fold_const_call): ... here.
29436 2023-06-15  Oluwatamilore Adebayo  <oluwatamilore.adebayo@arm.com>
29438         * config/aarch64/aarch64-simd.md (aarch64_<su>abd<mode>):
29439         Rename to <su>abd<mode>3.
29440         * config/aarch64/aarch64-sve.md (<su>abd<mode>_3): Rename
29441         to <su>abd<mode>3.
29443 2023-06-15  Oluwatamilore Adebayo  <oluwatamilore.adebayo@arm.com>
29445         * doc/md.texi (sabd, uabd): Document them.
29446         * internal-fn.def (ABD): Use new optab.
29447         * optabs.def (sabd_optab, uabd_optab): New optabs,
29448         * tree-vect-patterns.cc (vect_recog_absolute_difference):
29449         Recognize the following idiom abs (a - b).
29450         (vect_recog_sad_pattern): Refactor to use
29451         vect_recog_absolute_difference.
29452         (vect_recog_abd_pattern): Use patterns found by
29453         vect_recog_absolute_difference to build a new ABD
29454         internal call.
29456 2023-06-15  chenxiaolong  <chenxl04200420@163.com>
29458         * config/loongarch/loongarch.h (LARCH_CALL_RATIO): Modify the value
29459         of macro LARCH_CALL_RATIO on LoongArch to make it perform optimally.
29461 2023-06-15  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
29463         * config/riscv/riscv-v.cc (shuffle_merge_patterns): New pattern.
29464         (expand_vec_perm_const_1): Add merge optmization.
29466 2023-06-15  Lehua Ding  <lehua.ding@rivai.ai>
29468         PR target/110119
29469         * config/riscv/riscv.cc (riscv_get_arg_info): Return NULL_RTX for vector mode
29470         (riscv_pass_by_reference): Return true for vector mode
29472 2023-06-15  Pan Li  <pan2.li@intel.com>
29474         * config/riscv/autovec-opt.md: Align the predictor sytle.
29475         * config/riscv/autovec.md: Ditto.
29477 2023-06-15  Pan Li  <pan2.li@intel.com>
29479         * config/riscv/riscv-v.cc (rvv_builder::get_merge_scalar_mask):
29480         Take elen instead of scalar BITS_PER_WORD.
29481         (expand_vector_init_merge_repeating_sequence): Use inner_bits_size
29482         instead of scaler BITS_PER_WORD.
29484 2023-06-14  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
29486         * config/moxie/uclinux.h (MFWRAP_SPEC): Remove
29488 2023-06-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
29490         * config/aarch64/aarch64-sve-builtins-base.cc (svlast_impl::fold):
29491         Fix signed comparison warning in loop from npats to enelts.
29493 2023-06-14  Thomas Schwinge  <thomas@codesourcery.com>
29495         * gcc.cc (driver_handle_option): Forward host '-lgfortran', '-lm'
29496         to offloading compilation.
29497         * config/gcn/mkoffload.cc (main): Adjust.
29498         * config/nvptx/mkoffload.cc (main): Likewise.
29499         * doc/invoke.texi (foffload-options): Update example.
29501 2023-06-14  liuhongt  <hongtao.liu@intel.com>
29503         PR target/110227
29504         * config/i386/sse.md (mov<mode>_internal>): Use x instead of v
29505         for alternative 2 since there's no evex version for vpcmpeqd
29506         ymm, ymm, ymm.
29508 2023-06-13  Jeff Law  <jlaw@ventanamicro.com>
29510         * gcc.cc (LINK_COMMAND_SPEC): Remove mudflap spec handling.
29512 2023-06-13  Jeff Law  <jlaw@ventanamicro.com>
29514         * config/sh/divtab.cc: Remove.
29516 2023-06-13  Jakub Jelinek  <jakub@redhat.com>
29518         * config/i386/i386.cc (standard_sse_constant_opcode): Remove
29519         superfluous spaces around \t for vpcmpeqd.
29521 2023-06-13  Roger Sayle  <roger@nextmovesoftware.com>
29523         * expr.cc (store_constructor) <case VECTOR_TYPE>: Don't bother
29524         clearing vectors with only a single element.  Set CLEARED if the
29525         vector was initialized to zero.
29527 2023-06-13  Lehua Ding  <lehua.ding@rivai.ai>
29529         * config/riscv/riscv-v.cc (struct mode_vtype_group): Remove duplicate
29530         #include.
29531         (ENTRY): Undef.
29532         (TUPLE_ENTRY): Undef.
29534 2023-06-13  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
29536         * config/riscv/riscv-v.cc (rvv_builder::single_step_npatterns_p): Add comment.
29537         (shuffle_generic_patterns): Ditto.
29538         (expand_vec_perm_const_1): Ditto.
29540 2023-06-13  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
29542         * config/riscv/riscv-v.cc (emit_vlmax_decompress_insn): Fix bug.
29543         (shuffle_decompress_patterns): Ditto.
29545 2023-06-13  Richard Biener  <rguenther@suse.de>
29547         * tree-ssa-loop-ch.cc (ch_base::copy_headers): Free loop BBs.
29549 2023-06-13  Yanzhang Wang  <yanzhang.wang@intel.com>
29550             Kito Cheng  <kito.cheng@sifive.com>
29552         * config/riscv/riscv-protos.h (riscv_init_cumulative_args): Set
29553         warning flag if func is not builtin
29554         * config/riscv/riscv.cc
29555         (riscv_scalable_vector_type_p): Determine whether the type is scalable vector.
29556         (riscv_arg_has_vector): Determine whether the arg is vector type.
29557         (riscv_pass_in_vector_p): Check the vector type param is passed by value.
29558         (riscv_init_cumulative_args): The same as header.
29559         (riscv_get_arg_info): Add the checking.
29560         (riscv_function_value): Check the func return and set warning flag
29561         * config/riscv/riscv.h (INIT_CUMULATIVE_ARGS): Add a flag to
29562         determine whether warning psabi or not.
29564 2023-06-13  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
29566         * config/arm/arm-opts.h (enum arm_tp_type): Remove TP_CP15.
29567         Add TP_TPIDRURW, TP_TPIDRURO, TP_TPIDRPRW values.
29568         * config/arm/arm-protos.h (arm_output_load_tpidr): Declare prototype.
29569         * config/arm/arm.cc (arm_option_reconfigure_globals): Replace TP_CP15
29570         with TP_TPIDRURO.
29571         (arm_output_load_tpidr): Define.
29572         * config/arm/arm.h (TARGET_HARD_TP): Define in terms of TARGET_SOFT_TP.
29573         * config/arm/arm.md (load_tp_hard): Call arm_output_load_tpidr to output
29574         assembly.
29575         (reload_tp_hard): Likewise.
29576         * config/arm/arm.opt (tpidrurw, tpidruro, tpidrprw): New values for
29577         arm_tp_type.
29578         * doc/invoke.texi (Arm Options, mtp): Document new values.
29580 2023-06-13  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
29582         PR target/108779
29583         * config/aarch64/aarch64-opts.h (enum aarch64_tp_reg): Add
29584         AARCH64_TPIDRRO_EL0 value.
29585         * config/aarch64/aarch64.cc (aarch64_output_load_tp): Define.
29586         * config/aarch64/aarch64.opt (tpidr_el0, tpidr_el1, tpidr_el2,
29587         tpidr_el3, tpidrro_el3): New accepted values to -mtp=.
29588         * doc/invoke.texi (AArch64 Options): Document new -mtp= options.
29590 2023-06-13  Alexandre Oliva  <oliva@adacore.com>
29592         * range-op-float.cc (frange_nextafter): Drop inline.
29593         (frelop_early_resolve): Add static.
29594         (frange_float): Likewise.
29596 2023-06-13  Richard Biener  <rguenther@suse.de>
29598         PR middle-end/110232
29599         * fold-const.cc (native_interpret_vector): Use TYPE_SIZE_UNIT
29600         to check whether the buffer covers the whole vector.
29602 2023-06-13  Richard Biener  <rguenther@suse.de>
29604         * tree-ssa-alias.cc (ref_maybe_used_by_call_p_1): For
29605         .MASK_LOAD and friends set the size of the access to unknown.
29607 2023-06-13  Tejas Belagod  <tbelagod@arm.com>
29609         PR target/96339
29610         * config/aarch64/aarch64-sve-builtins-base.cc (svlast_impl::fold): Fold sve
29611         calls that have a constant input predicate vector.
29612         (svlast_impl::is_lasta): Query to check if intrinsic is svlasta.
29613         (svlast_impl::is_lastb): Query to check if intrinsic is svlastb.
29614         (svlast_impl::vect_all_same): Check if all vector elements are equal.
29616 2023-06-13  Andi Kleen  <ak@linux.intel.com>
29618         * config/i386/gcc-auto-profile: Regenerate.
29620 2023-06-13  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
29622         * config/riscv/vector-iterators.md: Fix requirement.
29624 2023-06-13  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
29626         * config/riscv/riscv-v.cc (emit_vlmax_decompress_insn): New function.
29627         (shuffle_decompress_patterns): New function.
29628         (expand_vec_perm_const_1): Add decompress optimization.
29630 2023-06-12  Jeff Law  <jlaw@ventanamicro.com>
29632         PR rtl-optimization/101188
29633         * postreload.cc (reload_cse_move2add_invalidate): New function,
29634         extracted from...
29635         (reload_cse_move2add): Call reload_cse_move2add_invalidate.
29637 2023-06-12  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
29639         * config/aarch64/aarch64.cc (aarch64_expand_vector_init): Tweak condition
29640         if (n_var == n_elts && n_elts <= 16) to allow a single constant,
29641         and if maxv == 1, use constant element for duplicating into register.
29643 2023-06-12  Tobias Burnus  <tobias@codesourcery.com>
29645         * gimplify.cc (gimplify_adjust_omp_clauses_1): Use
29646         GOMP_MAP_FORCE_PRESENT for 'present alloc' implicit mapping.
29647         (gimplify_adjust_omp_clauses): Change
29648         GOMP_MAP_PRESENT_{TO,TOFROM,FROM,ALLOC} to the equivalent
29649         GOMP_MAP_FORCE_PRESENT.
29650         * omp-low.cc (lower_omp_target): Remove handling of no-longer valid
29651         GOMP_MAP_PRESENT_{TO,TOFROM,FROM,ALLOC}; update map kinds used for
29652         to/from clauses with present modifier.
29654 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
29656         PR tree-optimization/110205
29657         * range-op-float.cc (range_operator::fold_range): Add default FII
29658         fold routine.
29659         * range-op-mixed.h (class operator_gt): Add missing final overrides.
29660         * range-op.cc (range_op_handler::fold_range): Add RO_FII case.
29661         (operator_lshift ::update_bitmask): Add final override.
29662         (operator_rshift ::update_bitmask): Add final override.
29663         * range-op.h (range_operator::fold_range): Add FII prototype.
29665 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
29667         * gimple-range-op.cc (gimple_range_op_handler::maybe_non_standard):
29668         Use range_op_handler directly.
29669         * range-op.cc (range_op_handler::range_op_handler): Unsigned
29670         param instead of tree-code.
29671         (ptr_op_widen_plus_signed): Delete.
29672         (ptr_op_widen_plus_unsigned): Delete.
29673         (ptr_op_widen_mult_signed): Delete.
29674         (ptr_op_widen_mult_unsigned): Delete.
29675         (range_op_table::initialize_integral_ops): Add new opcodes.
29676         * range-op.h (range_op_handler): Use unsigned.
29677         (OP_WIDEN_MULT_SIGNED): New.
29678         (OP_WIDEN_MULT_UNSIGNED): New.
29679         (OP_WIDEN_PLUS_SIGNED): New.
29680         (OP_WIDEN_PLUS_UNSIGNED): New.
29681         (RANGE_OP_TABLE_SIZE): New.
29682         (range_op_table::operator []): Use unsigned.
29683         (range_op_table::set): Use unsigned.
29684         (m_range_tree): Make unsigned.
29685         (ptr_op_widen_mult_signed): Remove.
29686         (ptr_op_widen_mult_unsigned): Remove.
29687         (ptr_op_widen_plus_signed): Remove.
29688         (ptr_op_widen_plus_unsigned): Remove.
29690 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
29692         * gimple-range-op.cc (gimple_range_op_handler): Set m_operator
29693         manually as there is no access to the default operator.
29694         (cfn_copysign::fold_range): Don't check for validity.
29695         (cfn_ubsan::fold_range): Ditto.
29696         (gimple_range_op_handler::maybe_builtin_call): Don't set to NULL.
29697         * range-op.cc (default_operator): New.
29698         (range_op_handler::range_op_handler): Use default_operator
29699         instead of NULL.
29700         (range_op_handler::operator bool): Move from header, compare
29701         against default operator.
29702         (range_op_handler::range_op): New.
29703         * range-op.h (range_op_handler::operator bool): Move.
29705 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
29707         * range-op.cc (unified_table): Delete.
29708         (range_op_table operator_table): Instantiate.
29709         (range_op_table::range_op_table): Rename from unified_table.
29710         (range_op_handler::range_op_handler): Use range_op_table.
29711         * range-op.h (range_op_table::operator []): Inline.
29712         (range_op_table::set): Inline.
29714 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
29716         * gimple-range-gori.cc (gori_compute::condexpr_adjust): Do not
29717         pass type.
29718         * gimple-range-op.cc (get_code): Rename from get_code_and_type
29719         and simplify.
29720         (gimple_range_op_handler::supported_p): No need for type.
29721         (gimple_range_op_handler::gimple_range_op_handler): Ditto.
29722         (cfn_copysign::fold_range): Ditto.
29723         (cfn_ubsan::fold_range): Ditto.
29724         * ipa-cp.cc (ipa_vr_operation_and_type_effects): Ditto.
29725         * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Ditto.
29726         * range-op-float.cc (operator_plus::op1_range): Ditto.
29727         (operator_mult::op1_range): Ditto.
29728         (range_op_float_tests): Ditto.
29729         * range-op.cc (get_op_handler): Remove.
29730         (range_op_handler::set_op_handler): Remove.
29731         (operator_plus::op1_range): No need for type.
29732         (operator_minus::op1_range): Ditto.
29733         (operator_mult::op1_range): Ditto.
29734         (operator_exact_divide::op1_range): Ditto.
29735         (operator_cast::op1_range): Ditto.
29736         (perator_bitwise_not::fold_range): Ditto.
29737         (operator_negate::fold_range): Ditto.
29738         * range-op.h (range_op_handler::range_op_handler): Remove type param.
29739         (range_cast): No need for type.
29740         (range_op_table::operator[]): Check for enum_code >= 0.
29741         * tree-data-ref.cc (compute_distributive_range): No need for type.
29742         * tree-ssa-loop-unswitch.cc (unswitch_predicate): Ditto.
29743         * value-query.cc (range_query::get_tree_range): Ditto.
29744         * value-relation.cc (relation_oracle::validate_relation): Ditto.
29745         * vr-values.cc (range_of_var_in_loop): Ditto.
29746         (simplify_using_ranges::fold_cond_with_ops): Ditto.
29748 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
29750         * range-op-mixed.h (operator_max): Remove final.
29751         * range-op-ptr.cc (pointer_table::pointer_table): Remove MAX_EXPR.
29752         (pointer_table::pointer_table): Remove.
29753         (class hybrid_max_operator): New.
29754         (range_op_table::initialize_pointer_ops): Add hybrid_max_operator.
29755         * range-op.cc (pointer_tree_table): Remove.
29756         (unified_table::unified_table): Comment out MAX_EXPR.
29757         (get_op_handler): Remove check of pointer table.
29758         * range-op.h (class pointer_table): Remove.
29760 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
29762         * range-op-mixed.h (operator_min): Remove final.
29763         * range-op-ptr.cc (pointer_table::pointer_table): Remove MIN_EXPR.
29764         (class hybrid_min_operator): New.
29765         (range_op_table::initialize_pointer_ops): Add hybrid_min_operator.
29766         * range-op.cc (unified_table::unified_table): Comment out MIN_EXPR.
29768 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
29770         * range-op-mixed.h (operator_bitwise_or): Remove final.
29771         * range-op-ptr.cc (pointer_table::pointer_table): Remove BIT_IOR_EXPR.
29772         (class hybrid_or_operator): New.
29773         (range_op_table::initialize_pointer_ops): Add hybrid_or_operator.
29774         * range-op.cc (unified_table::unified_table): Comment out BIT_IOR_EXPR.
29776 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
29778         * range-op-mixed.h (operator_bitwise_and): Remove final.
29779         * range-op-ptr.cc (pointer_table::pointer_table): Remove BIT_AND_EXPR.
29780         (class hybrid_and_operator): New.
29781         (range_op_table::initialize_pointer_ops): Add hybrid_and_operator.
29782         * range-op.cc (unified_table::unified_table): Comment out BIT_AND_EXPR.
29784 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
29786         * Makefile.in (OBJS): Add range-op-ptr.o.
29787         * range-op-mixed.h (update_known_bitmask): Move prototype here.
29788         (minus_op1_op2_relation_effect): Move prototype here.
29789         (wi_includes_zero_p): Move function to here.
29790         (wi_zero_p): Ditto.
29791         * range-op.cc (update_known_bitmask): Remove static.
29792         (wi_includes_zero_p): Move to header.
29793         (wi_zero_p): Move to header.
29794         (minus_op1_op2_relation_effect): Remove static.
29795         (operator_pointer_diff): Move class and routines to range-op-ptr.cc.
29796         (pointer_plus_operator): Ditto.
29797         (pointer_min_max_operator): Ditto.
29798         (pointer_and_operator): Ditto.
29799         (pointer_or_operator): Ditto.
29800         (pointer_table): Ditto.
29801         (range_op_table::initialize_pointer_ops): Ditto.
29802         * range-op-ptr.cc: New.
29804 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
29806         * range-op-mixed.h (class operator_max): Move from...
29807         * range-op.cc (unified_table::unified_table): Add MAX_EXPR.
29808         (get_op_handler): Remove the integral table.
29809         (class operator_max): Move from here.
29810         (integral_table::integral_table): Delete.
29811         * range-op.h (class integral_table): Delete.
29813 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
29815         * range-op-mixed.h (class operator_min): Move from...
29816         * range-op.cc (unified_table::unified_table): Add MIN_EXPR.
29817         (class operator_min): Move from here.
29818         (integral_table::integral_table): Remove MIN_EXPR.
29820 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
29822         * range-op-mixed.h (class operator_bitwise_or): Move from...
29823         * range-op.cc (unified_table::unified_table): Add BIT_IOR_EXPR.
29824         (class operator_bitwise_or): Move from here.
29825         (integral_table::integral_table): Remove BIT_IOR_EXPR.
29827 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
29829         * range-op-mixed.h (class operator_bitwise_and): Move from...
29830         * range-op.cc (unified_table::unified_table): Add BIT_AND_EXPR.
29831         (get_op_handler): Check for a pointer table entry first.
29832         (class operator_bitwise_and): Move from here.
29833         (integral_table::integral_table): Remove BIT_AND_EXPR.
29835 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
29837         * range-op-mixed.h (class operator_bitwise_xor): Move from...
29838         * range-op.cc (unified_table::unified_table): Add BIT_XOR_EXPR.
29839         (class operator_bitwise_xor): Move from here.
29840         (integral_table::integral_table): Remove BIT_XOR_EXPR.
29841         (pointer_table::pointer_table): Remove BIT_XOR_EXPR.
29843 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
29845         * range-op-mixed.h (class operator_bitwise_not): Move from...
29846         * range-op.cc (unified_table::unified_table): Add BIT_NOT_EXPR.
29847         (class operator_bitwise_not): Move from here.
29848         (integral_table::integral_table): Remove BIT_NOT_EXPR.
29849         (pointer_table::pointer_table): Remove BIT_NOT_EXPR.
29851 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
29853         * range-op-mixed.h (class operator_addr_expr): Move from...
29854         * range-op.cc (unified_table::unified_table): Add ADDR_EXPR.
29855         (class operator_addr_expr): Move from here.
29856         (integral_table::integral_table): Remove ADDR_EXPR.
29857         (pointer_table::pointer_table): Remove ADDR_EXPR.
29859 2023-06-12  Pan Li  <pan2.li@intel.com>
29861         * config/riscv/riscv-vector-builtins-types.def
29862         (vfloat16m1_t): Add type to lmul1 ops.
29863         (vfloat16m2_t): Likewise.
29864         (vfloat16m4_t): Likewise.
29866 2023-06-12  Richard Biener  <rguenther@suse.de>
29868         * tree-ssa-alias.cc (call_may_clobber_ref_p_1): For
29869         .MASK_STORE and friend set the size of the access to
29870         unknown.
29872 2023-06-12  Tamar Christina  <tamar.christina@arm.com>
29874         * config.in: Regenerate.
29875         * configure: Regenerate.
29876         * configure.ac: Remove DEFAULT_MATCHPD_PARTITIONS.
29878 2023-06-12  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
29880         * config/riscv/autovec-opt.md
29881         (*v<any_shiftrt:optab><any_extend:optab>trunc<mode>): New pattern.
29882         (*<any_shiftrt:optab>trunc<mode>): Ditto.
29883         * config/riscv/autovec.md (<optab><mode>3): Change to
29884         define_insn_and_split.
29885         (v<optab><mode>3): Ditto.
29886         (trunc<mode><v_double_trunc>2): Ditto.
29888 2023-06-12  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
29890         * simplify-rtx.cc (simplify_const_unary_operation):
29891         Handle US_TRUNCATE, SS_TRUNCATE.
29893 2023-06-12  Eric Botcazou  <ebotcazou@adacore.com>
29895         PR modula2/109952
29896         * doc/gm2.texi (Standard procedures): Fix Next link.
29898 2023-06-12  Tamar Christina  <tamar.christina@arm.com>
29900         * config.in: Regenerate.
29902 2023-06-12  Andre Vieira  <andre.simoesdiasvieira@arm.com>
29904         PR middle-end/110142
29905         * tree-vect-patterns.cc (vect_recog_widen_op_pattern): Don't pass
29906         subtype to vect_widened_op_tree and remove subtype parameter, also
29907         remove superfluous overloaded function definition.
29908         (vect_recog_widen_plus_pattern): Remove subtype parameter and dont pass
29909         to call to vect_recog_widen_op_pattern.
29910         (vect_recog_widen_minus_pattern): Likewise.
29912 2023-06-12  liuhongt  <hongtao.liu@intel.com>
29914         * config/i386/sse.md (vec_pack<floatprefix>_float_<mode>): New expander.
29915         (vec_unpack_<fixprefix>fix_trunc_lo_<mode>): Ditto.
29916         (vec_unpack_<fixprefix>fix_trunc_hi_<mode>): Ditto.
29917         (vec_unpacks_lo_<mode>): Ditto.
29918         (vec_unpacks_hi_<mode>): Ditto.
29919         (sse_movlhps_<mode>): New define_insn.
29920         (ssse3_palignr<mode>_perm): Extend to V_128H.
29921         (V_128H): New mode iterator.
29922         (ssepackPHmode): New mode attribute.
29923         (vunpck_extract_mode): Ditto.
29924         (vpckfloat_concat_mode): Extend to VxSI/VxSF for _Float16.
29925         (vpckfloat_temp_mode): Ditto.
29926         (vpckfloat_op_mode): Ditto.
29927         (vunpckfixt_mode): Extend to VxHF.
29928         (vunpckfixt_model): Ditto.
29929         (vunpckfixt_extract_mode): Ditto.
29931 2023-06-12  Richard Biener  <rguenther@suse.de>
29933         PR middle-end/110200
29934         * genmatch.cc (expr::gen_transform): Put braces around
29935         the if arm for the (convert ...) short-cut.
29937 2023-06-12  Kewen Lin  <linkw@linux.ibm.com>
29939         PR target/109932
29940         * config/rs6000/rs6000-builtins.def (__builtin_pack_vector_int128,
29941         __builtin_unpack_vector_int128): Move from stanza power7 to vsx.
29943 2023-06-12  Kewen Lin  <linkw@linux.ibm.com>
29945         PR target/110011
29946         * config/rs6000/rs6000.cc (output_toc): Use the mode of the 128-bit
29947         floating constant itself for real_to_target call.
29949 2023-06-12  Pan Li  <pan2.li@intel.com>
29951         * config/riscv/riscv-vector-builtins-types.def
29952         (vfloat16mf4_t): Add type to X2/X4/X8/X16/X32 vlmul ext ops.
29953         (vfloat16mf2_t): Ditto.
29954         (vfloat16m1_t): Ditto.
29955         (vfloat16m2_t): Ditto.
29956         (vfloat16m4_t): Ditto.
29958 2023-06-12  David Edelsohn  <dje.gcc@gmail.com>
29960         * config/rs6000/rs6000-logue.cc (rs6000_stack_info):
29961         Do not require a stack frame when debugging is enabled for AIX.
29963 2023-06-11  Georg-Johann Lay  <avr@gjlay.de>
29965         * config/avr/avr.md (adjust_len) [insv_notbit_0, insv_notbit_7]:
29966         Remove attribute values.
29967         (insv_notbit): New post-reload insn.
29968         (*insv.not-shiftrt_split, *insv.xor1-bit.0_split)
29969         (*insv.not-bit.0_split, *insv.not-bit.7_split)
29970         (*insv.xor-extract_split): Split to insv_notbit.
29971         (*insv.not-shiftrt, *insv.xor1-bit.0, *insv.not-bit.0, *insv.not-bit.7)
29972         (*insv.xor-extract): Remove post-reload insns.
29973         * config/avr/avr.cc (avr_out_insert_notbit) [bitno]: Remove parameter.
29974         (avr_adjust_insn_length): Adjust call of avr_out_insert_notbit.
29975         [ADJUST_LEN_INSV_NOTBIT_0, ADJUST_LEN_INSV_NOTBIT_7]: Remove cases.
29976         * config/avr/avr-protos.h (avr_out_insert_notbit): Adjust prototype.
29978 2023-06-11  Georg-Johann Lay  <avr@gjlay.de>
29980         PR target/109907
29981         * config/avr/avr.md (adjust_len) [extr, extr_not]: New elements.
29982         (MSB, SIZE): New mode attributes.
29983         (any_shift): New code iterator.
29984         (*lshr<mode>3_split, *lshr<mode>3, lshr<mode>3)
29985         (*lshr<mode>3_const_split): Add constraint alternative for
29986         the case of shift-offset = MSB.  Ditch "length" attribute.
29987         (extzv<mode): New. replaces extzv.  Adjust following patterns.
29988         Use avr_out_extr, avr_out_extr_not to print asm.
29989         (*extzv.subreg.<mode>, *extzv.<mode>.subreg, *extzv.xor)
29990         (*extzv<mode>.ge, *neg.ashiftrt<mode>.msb, *extzv.io.lsr7): New.
29991         * config/avr/constraints.md (C15, C23, C31, Yil): New
29992         * config/avr/predicates.md (reg_or_low_io_operand)
29993         (const7_operand, reg_or_low_io_operand)
29994         (const15_operand, const_0_to_15_operand)
29995         (const23_operand, const_0_to_23_operand)
29996         (const31_operand, const_0_to_31_operand): New.
29997         * config/avr/avr-protos.h (avr_out_extr, avr_out_extr_not): New.
29998         * config/avr/avr.cc (avr_out_extr, avr_out_extr_not): New funcs.
29999         (lshrqi3_out, lshrhi3_out, lshrpsi3_out, lshrsi3_out): Adjust
30000         MSB case to new insn constraint "r" for operands[1].
30001         (avr_adjust_insn_length) [ADJUST_LEN_EXTR_NOT, ADJUST_LEN_EXTR]:
30002         Handle these cases.
30003         (avr_rtx_costs_1): Adjust cost for a new pattern.
30005 2023-06-11  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
30007         * config/riscv/riscv-vsetvl.cc (available_occurrence_p): Enhance user vsetvl optimization.
30008         (vector_insn_info::parse_insn): Add rtx_insn parse.
30009         (pass_vsetvl::local_eliminate_vsetvl_insn): Enhance user vsetvl optimization.
30010         (get_first_vsetvl): New function.
30011         (pass_vsetvl::global_eliminate_vsetvl_insn): Ditto.
30012         (pass_vsetvl::cleanup_insns): Remove it.
30013         (pass_vsetvl::ssa_post_optimization): New function.
30014         (has_no_uses): Ditto.
30015         (pass_vsetvl::propagate_avl): Remove it.
30016         (pass_vsetvl::df_post_optimization): New function.
30017         (pass_vsetvl::lazy_vsetvl): Rework Phase 5 && Phase 6.
30018         * config/riscv/riscv-vsetvl.h: Adapt declaration.
30020 2023-06-10  Aldy Hernandez  <aldyh@redhat.com>
30022         * ipa-cp.cc (ipcp_vr_lattice::init): Take type argument.
30023         (ipcp_vr_lattice::print): Call dump method.
30024         (ipcp_vr_lattice::meet_with): Adjust for m_vr being a
30025         Value_Range.
30026         (ipcp_vr_lattice::meet_with_1): Make argument a reference.
30027         (ipcp_vr_lattice::set_to_bottom): Set varying for an unsupported
30028         range.
30029         (initialize_node_lattices): Pass type when appropriate.
30030         (ipa_vr_operation_and_type_effects): Make type agnostic.
30031         (ipa_value_range_from_jfunc): Same.
30032         (propagate_vr_across_jump_function): Same.
30033         * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
30034         (evaluate_properties_for_edge): Same.
30035         * ipa-prop.cc (ipa_vr::get_vrange): Same.
30036         (ipcp_update_vr): Same.
30037         * ipa-prop.h (ipa_value_range_from_jfunc): Same.
30038         (ipa_range_set_and_normalize): Same.
30040 2023-06-10  Georg-Johann Lay  <avr@gjlay.de>
30042         PR target/109650
30043         PR target/92729
30044         * config/avr/avr-passes.def (avr_pass_ifelse): Insert new pass.
30045         * config/avr/avr.cc (avr_pass_ifelse): New RTL pass.
30046         (avr_pass_data_ifelse): New pass_data for it.
30047         (make_avr_pass_ifelse, avr_redundant_compare, avr_cbranch_cost)
30048         (avr_canonicalize_comparison, avr_out_plus_set_ZN)
30049         (avr_out_cmp_ext): New functions.
30050         (compare_condtition): Make sure REG_CC dies in the branch insn.
30051         (avr_rtx_costs_1): Add computation of cbranch costs.
30052         (avr_adjust_insn_length) [ADJUST_LEN_ADD_SET_ZN, ADJUST_LEN_CMP_ZEXT]:
30053         [ADJUST_LEN_CMP_SEXT]Handle them.
30054         (TARGET_CANONICALIZE_COMPARISON): New define.
30055         (avr_simplify_comparison_p, compare_diff_p, avr_compare_pattern)
30056         (avr_reorg_remove_redundant_compare, avr_reorg): Remove functions.
30057         (TARGET_MACHINE_DEPENDENT_REORG): Remove define.
30058         * config/avr/avr-protos.h (avr_simplify_comparison_p): Remove proto.
30059         (make_avr_pass_ifelse, avr_out_plus_set_ZN, cc_reg_rtx)
30060         (avr_out_cmp_zext): New Protos
30061         * config/avr/avr.md (branch, difficult_branch): Don't split insns.
30062         (*cbranchhi.zero-extend.0", *cbranchhi.zero-extend.1")
30063         (*swapped_tst<mode>, *add.for.eqne.<mode>): New insns.
30064         (*cbranch<mode>4): Rename to cbranch<mode>4_insn.
30065         (define_peephole): Add dead_or_set_regno_p(insn,REG_CC) as needed.
30066         (define_deephole2): Add peep2_regno_dead_p(*,REG_CC) as needed.
30067         Add new RTL peepholes for decrement-and-branch and *swapped_tst<mode>.
30068         Rework signtest-and-branch peepholes for *sbrx_branch<mode>.
30069         (adjust_len) [add_set_ZN, cmp_zext]: New.
30070         (QIPSI): New mode iterator.
30071         (ALLs1, ALLs2, ALLs4, ALLs234): New mode iterators.
30072         (gelt): New code iterator.
30073         (gelt_eqne): New code attribute.
30074         (rvbranch, *rvbranch, difficult_rvbranch, *difficult_rvbranch)
30075         (branch_unspec, *negated_tst<mode>, *reversed_tst<mode>)
30076         (*cmpqi_sign_extend): Remove insns.
30077         (define_c_enum "unspec") [UNSPEC_IDENTITY]: Remove.
30078         * config/avr/avr-dimode.md (cbranch<mode>4): Canonicalize comparisons.
30079         * config/avr/predicates.md (scratch_or_d_register_operand): New.
30080         * config/avr/constraints.md (Yxx): New constraint.
30082 2023-06-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
30084         * config/riscv/autovec.md (select_vl<mode>): New pattern.
30085         * config/riscv/riscv-protos.h (expand_select_vl): New function.
30086         * config/riscv/riscv-v.cc (expand_select_vl): Ditto.
30088 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
30090         * range-op-float.cc (foperator_mult_div_base): Delete.
30091         (foperator_mult_div_base::find_range): Make static local function.
30092         (foperator_mult): Remove.  Move prototypes to range-op-mixed.h
30093         (operator_mult::op1_range): Rename from foperator_mult.
30094         (operator_mult::op2_range): Ditto.
30095         (operator_mult::rv_fold): Ditto.
30096         (float_table::float_table): Remove MULT_EXPR.
30097         (class foperator_div): Inherit from range_operator.
30098         (float_table::float_table): Delete.
30099         * range-op-mixed.h (class operator_mult): Combined from integer
30100         and float files.
30101         * range-op.cc (float_tree_table): Delete.
30102         (op_mult): New object.
30103         (unified_table::unified_table): Add MULT_EXPR.
30104         (get_op_handler): Do not check float table any longer.
30105         (class cross_product_operator): Move to range-op-mixed.h.
30106         (class operator_mult): Move to range-op-mixed.h.
30107         (integral_table::integral_table): Remove MULT_EXPR.
30108         (pointer_table::pointer_table): Remove MULT_EXPR.
30109         * range-op.h (float_table): Remove.
30111 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
30113         * range-op-float.cc (foperator_negate): Remove.  Move prototypes
30114         to range-op-mixed.h
30115         (operator_negate::fold_range): Rename from foperator_negate.
30116         (operator_negate::op1_range): Ditto.
30117         (float_table::float_table): Remove NEGATE_EXPR.
30118         * range-op-mixed.h (class operator_negate): Combined from integer
30119         and float files.
30120         * range-op.cc (op_negate): New object.
30121         (unified_table::unified_table): Add NEGATE_EXPR.
30122         (class operator_negate): Move to range-op-mixed.h.
30123         (integral_table::integral_table): Remove NEGATE_EXPR.
30124         (pointer_table::pointer_table): Remove NEGATE_EXPR.
30126 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
30128         * range-op-float.cc (foperator_minus): Remove.  Move prototypes
30129         to range-op-mixed.h
30130         (operator_minus::fold_range): Rename from foperator_minus.
30131         (operator_minus::op1_range): Ditto.
30132         (operator_minus::op2_range): Ditto.
30133         (operator_minus::rv_fold): Ditto.
30134         (float_table::float_table): Remove MINUS_EXPR.
30135         * range-op-mixed.h (class operator_minus): Combined from integer
30136         and float files.
30137         * range-op.cc (op_minus): New object.
30138         (unified_table::unified_table): Add MINUS_EXPR.
30139         (class operator_minus): Move to range-op-mixed.h.
30140         (integral_table::integral_table): Remove MINUS_EXPR.
30141         (pointer_table::pointer_table): Remove MINUS_EXPR.
30143 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
30145         * range-op-float.cc (foperator_abs): Remove.  Move prototypes
30146         to range-op-mixed.h
30147         (operator_abs::fold_range): Rename from foperator_abs.
30148         (operator_abs::op1_range): Ditto.
30149         (float_table::float_table): Remove ABS_EXPR.
30150         * range-op-mixed.h (class operator_abs): Combined from integer
30151         and float files.
30152         * range-op.cc (op_abs): New object.
30153         (unified_table::unified_table): Add ABS_EXPR.
30154         (class operator_abs): Move to range-op-mixed.h.
30155         (integral_table::integral_table): Remove ABS_EXPR.
30156         (pointer_table::pointer_table): Remove ABS_EXPR.
30158 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
30160         * range-op-float.cc (foperator_plus): Remove.  Move prototypes
30161         to range-op-mixed.h
30162         (operator_plus::fold_range): Rename from foperator_plus.
30163         (operator_plus::op1_range): Ditto.
30164         (operator_plus::op2_range): Ditto.
30165         (operator_plus::rv_fold): Ditto.
30166         (float_table::float_table): Remove PLUS_EXPR.
30167         * range-op-mixed.h (class operator_plus): Combined from integer
30168         and float files.
30169         * range-op.cc (op_plus): New object.
30170         (unified_table::unified_table): Add PLUS_EXPR.
30171         (class operator_plus): Move to range-op-mixed.h.
30172         (integral_table::integral_table): Remove PLUS_EXPR.
30173         (pointer_table::pointer_table): Remove PLUS_EXPR.
30175 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
30177         * range-op-mixed.h (class operator_cast): Combined from integer
30178         and float files.
30179         * range-op.cc (op_cast): New object.
30180         (unified_table::unified_table): Add op_cast
30181         (class operator_cast): Move to range-op-mixed.h.
30182         (integral_table::integral_table): Remove op_cast
30183         (pointer_table::pointer_table): Remove op_cast.
30185 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
30187         * range-op-float.cc (operator_cst::fold_range): New.
30188         * range-op-mixed.h (class operator_cst): Move from integer file.
30189         * range-op.cc (op_cst): New object.
30190         (unified_table::unified_table): Add op_cst. Also use for REAL_CST.
30191         (class operator_cst): Move to range-op-mixed.h.
30192         (integral_table::integral_table): Remove op_cst.
30193         (pointer_table::pointer_table): Remove op_cst.
30195 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
30197         * range-op-float.cc (foperator_identity): Remove.  Move prototypes
30198         to range-op-mixed.h
30199         (operator_identity::fold_range): Rename from foperator_identity.
30200         (operator_identity::op1_range): Ditto.
30201         (float_table::float_table): Remove fop_identity.
30202         * range-op-mixed.h (class operator_identity): Combined from integer
30203         and float files.
30204         * range-op.cc (op_identity): New object.
30205         (unified_table::unified_table): Add op_identity.
30206         (class operator_identity): Move to range-op-mixed.h.
30207         (integral_table::integral_table): Remove identity.
30208         (pointer_table::pointer_table): Remove identity.
30210 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
30212         * range-op-float.cc (foperator_ge): Remove.  Move prototypes
30213         to range-op-mixed.h
30214         (operator_ge::fold_range): Rename from foperator_ge.
30215         (operator_ge::op1_range): Ditto.
30216         (float_table::float_table): Remove GE_EXPR.
30217         * range-op-mixed.h (class operator_ge): Combined from integer
30218         and float files.
30219         * range-op.cc (op_ge): New object.
30220         (unified_table::unified_table): Add GE_EXPR.
30221         (class operator_ge): Move to range-op-mixed.h.
30222         (ge_op1_op2_relation): Fold into
30223         operator_ge::op1_op2_relation.
30224         (integral_table::integral_table): Remove GE_EXPR.
30225         (pointer_table::pointer_table): Remove GE_EXPR.
30226         * range-op.h (ge_op1_op2_relation): Delete.
30228 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
30230         * range-op-float.cc (foperator_gt): Remove.  Move prototypes
30231         to range-op-mixed.h
30232         (operator_gt::fold_range): Rename from foperator_gt.
30233         (operator_gt::op1_range): Ditto.
30234         (float_table::float_table): Remove GT_EXPR.
30235         * range-op-mixed.h (class operator_gt): Combined from integer
30236         and float files.
30237         * range-op.cc (op_gt): New object.
30238         (unified_table::unified_table): Add GT_EXPR.
30239         (class operator_gt): Move to range-op-mixed.h.
30240         (gt_op1_op2_relation): Fold into
30241         operator_gt::op1_op2_relation.
30242         (integral_table::integral_table): Remove GT_EXPR.
30243         (pointer_table::pointer_table): Remove GT_EXPR.
30244         * range-op.h (gt_op1_op2_relation): Delete.
30246 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
30248         * range-op-float.cc (foperator_le): Remove.  Move prototypes
30249         to range-op-mixed.h
30250         (operator_le::fold_range): Rename from foperator_le.
30251         (operator_le::op1_range): Ditto.
30252         (float_table::float_table): Remove LE_EXPR.
30253         * range-op-mixed.h (class operator_le): Combined from integer
30254         and float files.
30255         * range-op.cc (op_le): New object.
30256         (unified_table::unified_table): Add LE_EXPR.
30257         (class operator_le): Move to range-op-mixed.h.
30258         (le_op1_op2_relation): Fold into
30259         operator_le::op1_op2_relation.
30260         (integral_table::integral_table): Remove LE_EXPR.
30261         (pointer_table::pointer_table): Remove LE_EXPR.
30262         * range-op.h (le_op1_op2_relation): Delete.
30264 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
30266         * range-op-float.cc (foperator_lt): Remove.  Move prototypes
30267         to range-op-mixed.h
30268         (operator_lt::fold_range): Rename from foperator_lt.
30269         (operator_lt::op1_range): Ditto.
30270         (float_table::float_table): Remove LT_EXPR.
30271         * range-op-mixed.h (class operator_lt): Combined from integer
30272         and float files.
30273         * range-op.cc (op_lt): New object.
30274         (unified_table::unified_table): Add LT_EXPR.
30275         (class operator_lt): Move to range-op-mixed.h.
30276         (lt_op1_op2_relation): Fold into
30277         operator_lt::op1_op2_relation.
30278         (integral_table::integral_table): Remove LT_EXPR.
30279         (pointer_table::pointer_table): Remove LT_EXPR.
30280         * range-op.h (lt_op1_op2_relation): Delete.
30282 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
30284         * range-op-float.cc (foperator_not_equal): Remove.  Move prototypes
30285         to range-op-mixed.h
30286         (operator_equal::fold_range): Rename from foperator_not_equal.
30287         (operator_equal::op1_range): Ditto.
30288         (float_table::float_table): Remove NE_EXPR.
30289         * range-op-mixed.h (class operator_not_equal): Combined from integer
30290         and float files.
30291         * range-op.cc (op_equal): New object.
30292         (unified_table::unified_table): Add NE_EXPR.
30293         (class operator_not_equal): Move to range-op-mixed.h.
30294         (not_equal_op1_op2_relation): Fold into
30295         operator_not_equal::op1_op2_relation.
30296         (integral_table::integral_table): Remove NE_EXPR.
30297         (pointer_table::pointer_table): Remove NE_EXPR.
30298         * range-op.h (not_equal_op1_op2_relation): Delete.
30300 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
30302         * range-op-float.cc (foperator_equal): Remove.  Move prototypes
30303         to range-op-mixed.h
30304         (operator_equal::fold_range): Rename from foperator_equal.
30305         (operator_equal::op1_range): Ditto.
30306         (float_table::float_table): Remove EQ_EXPR.
30307         * range-op-mixed.h (class operator_equal): Combined from integer
30308         and float files.
30309         * range-op.cc (op_equal): New object.
30310         (unified_table::unified_table): Add EQ_EXPR.
30311         (class operator_equal): Move to range-op-mixed.h.
30312         (equal_op1_op2_relation): Fold into
30313         operator_equal::op1_op2_relation.
30314         (integral_table::integral_table): Remove EQ_EXPR.
30315         (pointer_table::pointer_table): Remove EQ_EXPR.
30316         * range-op.h (equal_op1_op2_relation): Delete.
30318 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
30320         * range-op-float.cc (class float_table): Move to header.
30321         (float_table::float_table): Move float only operators to...
30322         (range_op_table::initialize_float_ops): Here.
30323         * range-op-mixed.h: New.
30324         * range-op.cc (integral_tree_table, pointer_tree_table): Moved
30325         to top of file.
30326         (float_tree_table): Moved from range-op-float.cc.
30327         (unified_tree_table): New.
30328         (unified_table::unified_table): New.  Call initialize routines.
30329         (get_op_handler): Check unified table first.
30330         (range_op_handler::range_op_handler): Handle no type constructor.
30331         (integral_table::integral_table): Move integral only operators to...
30332         (range_op_table::initialize_integral_ops): Here.
30333         (pointer_table::pointer_table): Move pointer only operators to...
30334         (range_op_table::initialize_pointer_ops): Here.
30335         * range-op.h (enum bool_range_state): Move to range-op-mixed.h.
30336         (get_bool_state): Ditto.
30337         (empty_range_varying): Ditto.
30338         (relop_early_resolve): Ditto.
30339         (class range_op_table): Add new init methods for range types.
30340         (class integral_table): Move declaration to here.
30341         (class pointer_table): Move declaration to here.
30342         (class float_table): Move declaration to here.
30344 2023-06-09  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
30345             Richard Sandiford <richard.sandiford@arm.com>
30346             Richard Biener  <rguenther@suse.de>
30348         * doc/md.texi: Add SELECT_VL support.
30349         * internal-fn.def (SELECT_VL): Ditto.
30350         * optabs.def (OPTAB_D): Ditto.
30351         * tree-vect-loop-manip.cc (vect_set_loop_controls_directly): Ditto.
30352         * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): Ditto.
30353         * tree-vect-stmts.cc (get_select_vl_data_ref_ptr): Ditto.
30354         (vectorizable_store): Ditto.
30355         (vectorizable_load): Ditto.
30356         * tree-vectorizer.h (LOOP_VINFO_USING_SELECT_VL_P): Ditto.
30358 2023-06-09  Andrew MacLeod  <amacleod@redhat.com>
30360         PR ipa/109886
30361         * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Check param
30362         type as well.
30364 2023-06-09  Andrew MacLeod  <amacleod@redhat.com>
30366         * range-op.cc (range_cast): Move to...
30367         * range-op.h (range_cast): Here and add generic a version.
30369 2023-06-09  Marek Polacek  <polacek@redhat.com>
30371         PR c/39589
30372         PR c++/96868
30373         * doc/invoke.texi: Clarify that -Wmissing-field-initializers doesn't
30374         warn about designated initializers in C only.
30376 2023-06-09  Andrew Pinski  <apinski@marvell.com>
30378         PR tree-optimization/97711
30379         PR tree-optimization/110155
30380         * match.pd ((zero_one == 0) ? y : z <op> y): Add plus to the op.
30381         ((zero_one != 0) ? z <op> y : y): Likewise.
30383 2023-06-09  Andrew Pinski  <apinski@marvell.com>
30385         * match.pd ((zero_one ==/!= 0) ? y : z <op> y): Use
30386         multiply rather than negation/bit_and.
30388 2023-06-09  Andrew Pinski  <apinski@marvell.com>
30390         * match.pd (`X & -Y -> X * Y`): Allow for truncation
30391         and the same type for unsigned types.
30393 2023-06-09  Andrew Pinski  <apinski@marvell.com>
30395         PR tree-optimization/110165
30396         PR tree-optimization/110166
30397         * match.pd (zero_one_valued_p): Don't accept
30398         signed 1-bit integers.
30400 2023-06-09  Richard Biener  <rguenther@suse.de>
30402         * match.pd (two conversions in a row): Use element_precision
30403         to DTRT for VECTOR_TYPE.
30405 2023-06-09  Pan Li  <pan2.li@intel.com>
30407         * config/riscv/riscv.md (enabled): Move to another place, and
30408         add fp_vector_disabled to the cond.
30409         (fp_vector_disabled): New attr defined for disabling fp.
30410         * config/riscv/vector-iterators.md: Fix V_WHOLE and V_FRACT.
30412 2023-06-09  Pan Li  <pan2.li@intel.com>
30414         * config/riscv/riscv-protos.h (enum frm_field_enum): Adjust
30415         literal to int.
30417 2023-06-09  liuhongt  <hongtao.liu@intel.com>
30419         PR target/110108
30420         * config/i386/i386.cc (ix86_gimple_fold_builtin): Explicitly
30421         view_convert_expr mask to signed type when folding pblendvb
30422         builtins.
30424 2023-06-09  liuhongt  <hongtao.liu@intel.com>
30426         PR target/110108
30427         * config/i386/i386.cc (ix86_gimple_fold_builtin): Fold
30428         _mm{,256,512}_abs_{epi8,epi16,epi32,epi64} into gimple
30429         ABSU_EXPR + VCE, don't fold _mm_abs_{pi8,pi16,pi32} w/o
30430         TARGET_64BIT.
30431         * config/i386/i386-builtin.def: Replace CODE_FOR_nothing with
30432         real codename for __builtin_ia32_pabs{b,w,d}.
30434 2023-06-08  Andrew MacLeod  <amacleod@redhat.com>
30436         * gimple-range-op.cc
30437         (gimple_range_op_handler::gimple_range_op_handler): Adjust.
30438         (gimple_range_op_handler::maybe_builtin_call): Adjust.
30439         * gimple-range-op.h (operand1, operand2): Use m_operator.
30440         * range-op.cc (integral_table, pointer_table): Relocate.
30441         (get_op_handler): Rename from get_handler and handle all types.
30442         (range_op_handler::range_op_handler): Relocate.
30443         (range_op_handler::set_op_handler): Relocate and adjust.
30444         (range_op_handler::range_op_handler): Relocate.
30445         (dispatch_trio): New.
30446         (RO_III, RO_IFI, RO_IFF, RO_FFF, RO_FIF, RO_FII): New consts.
30447         (range_op_handler::dispatch_kind): New.
30448         (range_op_handler::fold_range): Relocate and Use new dispatch value.
30449         (range_op_handler::op1_range): Ditto.
30450         (range_op_handler::op2_range): Ditto.
30451         (range_op_handler::lhs_op1_relation): Ditto.
30452         (range_op_handler::lhs_op2_relation): Ditto.
30453         (range_op_handler::op1_op2_relation): Ditto.
30454         (range_op_handler::set_op_handler): Use m_operator member.
30455         * range-op.h (range_op_handler::operator bool): Use m_operator.
30456         (range_op_handler::dispatch_kind): New.
30457         (range_op_handler::m_valid): Delete.
30458         (range_op_handler::m_int): Delete
30459         (range_op_handler::m_float): Delete
30460         (range_op_handler::m_operator): New.
30461         (range_op_table::operator[]): Relocate from .cc file.
30462         (range_op_table::set): Ditto.
30463         * value-range.h (class vrange): Make range_op_handler a friend.
30465 2023-06-08  Andrew MacLeod  <amacleod@redhat.com>
30467         * gimple-range-op.cc (cfn_constant_float_p): Change base class.
30468         (cfn_pass_through_arg1): Adjust using statemenmt.
30469         (cfn_signbit): Change base class, adjust using statement.
30470         (cfn_copysign): Ditto.
30471         (cfn_sqrt): Ditto.
30472         (cfn_sincos): Ditto.
30473         * range-op-float.cc (fold_range): Change class to range_operator.
30474         (rv_fold): Ditto.
30475         (op1_range): Ditto
30476         (op2_range): Ditto
30477         (lhs_op1_relation): Ditto.
30478         (lhs_op2_relation): Ditto.
30479         (op1_op2_relation): Ditto.
30480         (foperator_*): Ditto.
30481         (class float_table): New.  Inherit from range_op_table.
30482         (floating_tree_table) Change to range_op_table pointer.
30483         (class floating_op_table): Delete.
30484         * range-op.cc (operator_equal): Adjust using statement.
30485         (operator_not_equal): Ditto.
30486         (operator_lt, operator_le, operator_gt, operator_ge): Ditto.
30487         (operator_minus, operator_cast): Ditto.
30488         (operator_bitwise_and, pointer_plus_operator): Ditto.
30489         (get_float_handle): Change return type.
30490         * range-op.h (range_operator_float): Delete.  Relocate all methods
30491         into class range_operator.
30492         (range_op_handler::m_float): Change type to range_operator.
30493         (floating_op_table): Delete.
30494         (floating_tree_table): Change type.
30496 2023-06-08  Andrew MacLeod  <amacleod@redhat.com>
30498         * range-op.cc (range_operator::fold_range): Call virtual routine.
30499         (range_operator::update_bitmask): New.
30500         (operator_equal::update_bitmask): New.
30501         (operator_not_equal::update_bitmask): New.
30502         (operator_lt::update_bitmask): New.
30503         (operator_le::update_bitmask): New.
30504         (operator_gt::update_bitmask): New.
30505         (operator_ge::update_bitmask): New.
30506         (operator_ge::update_bitmask): New.
30507         (operator_plus::update_bitmask): New.
30508         (operator_minus::update_bitmask): New.
30509         (operator_pointer_diff::update_bitmask): New.
30510         (operator_min::update_bitmask): New.
30511         (operator_max::update_bitmask): New.
30512         (operator_mult::update_bitmask): New.
30513         (operator_div:operator_div):New.
30514         (operator_div::update_bitmask): New.
30515         (operator_div::m_code): New member.
30516         (operator_exact_divide::operator_exact_divide): New constructor.
30517         (operator_lshift::update_bitmask): New.
30518         (operator_rshift::update_bitmask): New.
30519         (operator_bitwise_and::update_bitmask): New.
30520         (operator_bitwise_or::update_bitmask): New.
30521         (operator_bitwise_xor::update_bitmask): New.
30522         (operator_trunc_mod::update_bitmask): New.
30523         (op_ident, op_unknown, op_ptr_min_max): New.
30524         (op_nop, op_convert): Delete.
30525         (op_ssa, op_paren, op_obj_type): Delete.
30526         (op_realpart, op_imagpart): Delete.
30527         (op_ptr_min, op_ptr_max): Delete.
30528         (pointer_plus_operator:update_bitmask): New.
30529         (range_op_table::set): Do not use m_code.
30530         (integral_table::integral_table): Adjust to single instances.
30531         * range-op.h (range_operator::range_operator): Delete.
30532         (range_operator::m_code): Delete.
30533         (range_operator::update_bitmask): New.
30535 2023-06-08  Andrew MacLeod  <amacleod@redhat.com>
30537         * range-op-float.cc (range_operator_float::fold_range): Return
30538         NAN of the result type.
30540 2023-06-08  Jakub Jelinek  <jakub@redhat.com>
30542         * optabs.cc (expand_ffs): Add forward declaration.
30543         (expand_doubleword_clz): Rename to ...
30544         (expand_doubleword_clz_ctz_ffs): ... this.  Add UNOPTAB argument,
30545         handle also doubleword CTZ and FFS in addition to CLZ.
30546         (expand_unop): Adjust caller.  Also call it for doubleword
30547         ctz_optab and ffs_optab.
30549 2023-06-08  Jakub Jelinek  <jakub@redhat.com>
30551         PR target/110152
30552         * config/i386/i386-expand.cc (ix86_expand_vector_init_general): For
30553         n_words == 2 recurse with mmx_ok as first argument rather than false.
30555 2023-06-07  Roger Sayle  <roger@nextmovesoftware.com>
30557         * wide-int.cc (wi::bitreverse_large): Use HOST_WIDE_INT_1U to
30558         avoid sign extension/undefined behaviour when setting each bit.
30560 2023-06-07  Roger Sayle  <roger@nextmovesoftware.com>
30561             Uros Bizjak  <ubizjak@gmail.com>
30563         * config/i386/i386-expand.cc (ix86_expand_builtin) <handlecarry>:
30564         Use new x86_stc instruction when the carry flag must be set.
30565         * config/i386/i386.cc (ix86_cc_mode): Use CCCmode for *x86_cmc.
30566         (ix86_rtx_costs): Provide accurate rtx_costs for *x86_cmc.
30567         * config/i386/i386.h (TARGET_SLOW_STC): New define.
30568         * config/i386/i386.md (UNSPEC_STC): New UNSPEC for stc.
30569         (x86_stc): New define_insn.
30570         (define_peephole2): Convert x86_stc into alternate implementation
30571         on pentium4 without -Os when a QImode register is available.
30572         (*x86_cmc): New define_insn.
30573         (define_peephole2): Convert *x86_cmc into alternate implementation
30574         on pentium4 without -Os when a QImode register is available.
30575         (*setccc): New define_insn_and_split for a no-op CCCmode move.
30576         (*setcc_qi_negqi_ccc_1_<mode>): New define_insn_and_split to
30577         recognize (and eliminate) the carry flag being copied to itself.
30578         (*setcc_qi_negqi_ccc_2_<mode>): Likewise.
30579         * config/i386/x86-tune.def (X86_TUNE_SLOW_STC): New tuning flag.
30581 2023-06-07  Andrew Pinski  <apinski@marvell.com>
30583         * match.pd: Fix comment for the
30584         `(zero_one ==/!= 0) ? y : z <op> y` patterns.
30586 2023-06-07  Jeff Law  <jlaw@ventanamicro.com>
30587             Jeff Law   <jlaw@ventanamicro.com>
30589         * config/riscv/bitmanip.md (rotrdi3, rotrsi3, rotlsi3): New expanders.
30590         (rotrsi3_sext): Expose generator.
30591         (rotlsi3 pattern): Hide generator.
30592         * config/riscv/riscv-protos.h (riscv_emit_binary): New function
30593         declaration.
30594         * config/riscv/riscv.cc (riscv_emit_binary): Removed static
30595         * config/riscv/riscv.md (addsi3, subsi3, negsi2): Hide generator.
30596         (mulsi3, <optab>si3): Likewise.
30597         (addsi3, subsi3, negsi2, mulsi3, <optab>si3): New expanders.
30598         (addv<mode>4, subv<mode>4, mulv<mode>4): Use riscv_emit_binary.
30599         (<u>mulsidi3): Likewise.
30600         (addsi3_extended, subsi3_extended, negsi2_extended): Expose generator.
30601         (mulsi3_extended, <optab>si3_extended): Likewise.
30602         (splitter for shadd feeding divison): Update RTL pattern to account
30603         for changes in how 32 bit ops are expanded for TARGET_64BIT.
30604         * loop-iv.cc (get_biv_step_1): Process src of extension when it PLUS.
30606 2023-06-07  Dimitar Dimitrov  <dimitar@dinux.eu>
30608         PR target/109725
30609         * config/riscv/riscv.cc (riscv_print_operand): Calculate
30610         memmodel only when it is valid.
30612 2023-06-07  Dimitar Dimitrov  <dimitar@dinux.eu>
30614         * config/riscv/riscv.cc (riscv_const_insns): Recursively call
30615         for constant element of a vector.
30617 2023-06-07  Jakub Jelinek  <jakub@redhat.com>
30619         * match.pd (zero_one_valued_p): Don't handle integer_zerop specially,
30620         instead compare tree_nonzero_bits <= 1U rather than just == 1.
30622 2023-06-07  Alex Coplan  <alex.coplan@arm.com>
30624         PR target/110132
30625         * config/aarch64/aarch64-builtins.cc (aarch64_general_simulate_builtin):
30626         New. Use it ...
30627         (aarch64_init_ls64_builtins): ... here. Switch to declaring public ACLE
30628         names for builtins.
30629         (aarch64_general_init_builtins): Ensure we invoke the arm_acle.h
30630         setup if in_lto_p, just like we do for SVE.
30631         * config/aarch64/arm_acle.h: (__arm_ld64b): Delete.
30632         (__arm_st64b): Delete.
30633         (__arm_st64bv): Delete.
30634         (__arm_st64bv0): Delete.
30636 2023-06-07  Alex Coplan  <alex.coplan@arm.com>
30638         PR target/110100
30639         * config/aarch64/aarch64-builtins.cc (aarch64_expand_builtin_ls64):
30640         Use input operand for the destination address.
30641         * config/aarch64/aarch64.md (st64b): Fix constraint on address
30642         operand.
30644 2023-06-07  Alex Coplan  <alex.coplan@arm.com>
30646         PR target/110100
30647         * config/aarch64/aarch64-builtins.cc (aarch64_init_ls64_builtins_types):
30648         Replace eight consecutive spaces with tabs.
30649         (aarch64_init_ls64_builtins): Likewise.
30650         (aarch64_expand_builtin_ls64): Likewise.
30651         * config/aarch64/aarch64.md (ld64b): Likewise.
30652         (st64b): Likewise.
30653         (st64bv): Likewise
30654         (st64bv0): Likewise.
30656 2023-06-07  Vladimir N. Makarov  <vmakarov@redhat.com>
30658         * ira-costs.cc: (find_costs_and_classes): Constrain classes of pic
30659         offset table pseudo to a general reg subset.
30661 2023-06-07  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
30663         * config/aarch64/aarch64-simd.md (aarch64_sqmovun<mode><vczle><vczbe>):
30664         Rename to...
30665         (*aarch64_sqmovun<mode>_insn<vczle><vczbe>): ... This.  Reimplement
30666         with RTL codes.
30667         (aarch64_sqmovun<mode> [SD_HSDI]): Reimplement with RTL codes.
30668         (aarch64_sqxtun2<mode>_le): Likewise.
30669         (aarch64_sqxtun2<mode>_be): Likewise.
30670         (aarch64_sqxtun2<mode>): Adjust for the above.
30671         (aarch64_sqmovun<mode>): New define_expand.
30672         * config/aarch64/iterators.md (UNSPEC_SQXTUN): Delete.
30673         (half_mask): New mode attribute.
30674         * config/aarch64/predicates.md (aarch64_simd_umax_half_mode):
30675         New predicate.
30677 2023-06-07  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
30679         * config/aarch64/aarch64-simd.md (aarch64_addp<mode><vczle><vczbe>):
30680         Reimplement as...
30681         (aarch64_addp<mode>_insn): ... This...
30682         (aarch64_addp<mode><vczle><vczbe>_insn): ... And this.
30683         (aarch64_addp<mode>): New define_expand.
30685 2023-06-07  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
30687         * config/riscv/riscv-protos.h (expand_vec_perm_const): New function.
30688         * config/riscv/riscv-v.cc
30689         (rvv_builder::can_duplicate_repeating_sequence_p): Support POLY
30690         handling.
30691         (rvv_builder::single_step_npatterns_p): New function.
30692         (rvv_builder::npatterns_all_equal_p): Ditto.
30693         (const_vec_all_in_range_p): Support POLY handling.
30694         (gen_const_vector_dup): Ditto.
30695         (emit_vlmax_gather_insn): Add vrgatherei16.
30696         (emit_vlmax_masked_gather_mu_insn): Ditto.
30697         (expand_const_vector): Add VLA SLP const vector support.
30698         (expand_vec_perm): Support POLY.
30699         (struct expand_vec_perm_d): New struct.
30700         (shuffle_generic_patterns): New function.
30701         (expand_vec_perm_const_1): Ditto.
30702         (expand_vec_perm_const): Ditto.
30703         * config/riscv/riscv.cc (riscv_vectorize_vec_perm_const): Ditto.
30704         (TARGET_VECTORIZE_VEC_PERM_CONST): New targethook.
30706 2023-06-07  Andrew Pinski  <apinski@marvell.com>
30708         PR middle-end/110117
30709         * expr.cc (expand_single_bit_test): Handle
30710         const_int from expand_expr.
30712 2023-06-07  Andrew Pinski  <apinski@marvell.com>
30714         * expr.cc (do_store_flag): Rearrange the
30715         TER code so that it overrides the nonzero bits
30716         info if we had `a & POW2`.
30718 2023-06-07  Andrew Pinski  <apinski@marvell.com>
30720         PR tree-optimization/110134
30721         * match.pd (-A CMP -B -> B CMP A): Allow EQ/NE for all integer
30722         types.
30723         (-A CMP CST -> B CMP (-CST)): Likewise.
30725 2023-06-07  Andrew Pinski  <apinski@marvell.com>
30727         PR tree-optimization/89263
30728         PR tree-optimization/99069
30729         PR tree-optimization/20083
30730         PR tree-optimization/94898
30731         * match.pd: Add patterns to optimize `a ? onezero : onezero` with
30732         one of the operands are constant.
30734 2023-06-07  Andrew Pinski  <apinski@marvell.com>
30736         * match.pd (zero_one_valued_p): Match 0 integer constant
30737         too.
30739 2023-06-07  Pan Li  <pan2.li@intel.com>
30741         * config/riscv/riscv-vector-builtins-types.def
30742         (vfloat32mf2_t): Take RVV_REQUIRE_ELEN_FP_16 as requirement.
30743         (vfloat32m1_t): Ditto.
30744         (vfloat32m2_t): Ditto.
30745         (vfloat32m4_t): Ditto.
30746         (vfloat32m8_t): Ditto.
30747         (vint16mf4_t): Ditto.
30748         (vint16mf2_t): Ditto.
30749         (vint16m1_t): Ditto.
30750         (vint16m2_t): Ditto.
30751         (vint16m4_t): Ditto.
30752         (vint16m8_t): Ditto.
30753         (vuint16mf4_t): Ditto.
30754         (vuint16mf2_t): Ditto.
30755         (vuint16m1_t): Ditto.
30756         (vuint16m2_t): Ditto.
30757         (vuint16m4_t): Ditto.
30758         (vuint16m8_t): Ditto.
30759         (vint32mf2_t): Ditto.
30760         (vint32m1_t): Ditto.
30761         (vint32m2_t): Ditto.
30762         (vint32m4_t): Ditto.
30763         (vint32m8_t): Ditto.
30764         (vuint32mf2_t): Ditto.
30765         (vuint32m1_t): Ditto.
30766         (vuint32m2_t): Ditto.
30767         (vuint32m4_t): Ditto.
30768         (vuint32m8_t): Ditto.
30770 2023-06-07  Jason Merrill  <jason@redhat.com>
30772         PR c++/58487
30773         * doc/invoke.texi: Document it.
30775 2023-06-06  Roger Sayle  <roger@nextmovesoftware.com>
30777         * doc/rtl.texi (bitreverse, copysign): Document new RTX codes.
30778         * rtl.def (BITREVERSE, COPYSIGN): Define new RTX codes.
30779         * simplify-rtx.cc (simplify_unary_operation_1): Optimize
30780         NOT (BITREVERSE x) as BITREVERSE (NOT x).
30781         Optimize POPCOUNT (BITREVERSE x) as POPCOUNT x.
30782         Optimize PARITY (BITREVERSE x) as PARITY x.
30783         Optimize BITREVERSE (BITREVERSE x) as x.
30784         (simplify_const_unary_operation) <case BITREVERSE>: Evaluate
30785         BITREVERSE of a constant integer at compile-time.
30786         (simplify_binary_operation_1) <case COPYSIGN>:  Optimize
30787         COPY_SIGN (x, x) as x.  Optimize COPYSIGN (x, C) as ABS x
30788         or NEG (ABS x) for constant C.  Optimize COPYSIGN (ABS x, y)
30789         and COPYSIGN (NEG x, y) as COPYSIGN (x, y).
30790         Optimize COPYSIGN (x, ABS y) as ABS x.
30791         Optimize COPYSIGN (COPYSIGN (x, y), z) as COPYSIGN (x, z).
30792         Optimize COPYSIGN (x, COPYSIGN (y, z)) as COPYSIGN (x, z).
30793         (simplify_const_binary_operation): Evaluate COPYSIGN of constant
30794         arguments at compile-time.
30796 2023-06-06  Uros Bizjak  <ubizjak@gmail.com>
30798         * rtl.h (function_invariant_p): Change return type from int to bool.
30799         * reload1.cc (function_invariant_p): Change return type from
30800         int to bool and adjust function body accordingly.
30802 2023-06-06  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
30804         * config/riscv/autovec-opt.md (*<optab>_fma<mode>): New pattern.
30805         (*single_<optab>mult_plus<mode>): Ditto.
30806         (*double_<optab>mult_plus<mode>): Ditto.
30807         (*sign_zero_extend_fma): Ditto.
30808         (*zero_sign_extend_fma): Ditto.
30809         * config/riscv/riscv-protos.h (enum insn_type): New enum.
30811 2023-06-06  Kwok Cheung Yeung  <kcy@codesourcery.com>
30812             Tobias Burnus  <tobias@codesourcery.com>
30814         * gimplify.cc (omp_notice_variable): Apply GOVD_MAP_ALLOC_ONLY flag
30815         and defaultmap flags if the defaultmap has GOVD_MAP_FORCE_PRESENT flag
30816         set.
30817         (omp_get_attachment): Handle map clauses with 'present' modifier.
30818         (omp_group_base): Likewise.
30819         (gimplify_scan_omp_clauses): Reorder present maps to come first.
30820         Set GOVD flags for present defaultmaps.
30821         (gimplify_adjust_omp_clauses_1): Set map kind for present defaultmaps.
30822         * omp-low.cc (scan_sharing_clauses): Handle 'always, present' map
30823         clauses.
30824         (lower_omp_target): Handle map clauses with 'present' modifier.
30825         Handle 'to' and 'from' clauses with 'present'.
30826         * tree-core.h (enum omp_clause_defaultmap_kind): Add
30827         OMP_CLAUSE_DEFAULTMAP_PRESENT defaultmap kind.
30828         * tree-pretty-print.cc (dump_omp_clause): Handle 'map', 'to' and
30829         'from' clauses with 'present' modifier.  Handle present defaultmap.
30830         * tree.h (OMP_CLAUSE_MOTION_PRESENT): New #define.
30832 2023-06-06  Segher Boessenkool  <segher@kernel.crashing.org>
30834         * config/rs6000/genfusion.pl: Delete some dead code.
30836 2023-06-06  Segher Boessenkool  <segher@kernel.crashing.org>
30838         * config/rs6000/genfusion.pl (gen_ld_cmpi_p10_one): New, rewritten and
30839         split out from...
30840         (gen_ld_cmpi_p10): ... this.
30842 2023-06-06  Jeevitha Palanisamy  <jeevitha@linux.ibm.com>
30844         PR target/106907
30845         * config/rs6000/rs6000.cc (vec_const_128bit_to_bytes): Remove
30846         duplicate expression.
30848 2023-06-06  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
30850         * config/aarch64/aarch64-builtins.cc (aarch64_general_gimple_fold_builtin):
30851         Handle unsigned reduc_plus_scal_ builtins.
30852         * config/aarch64/aarch64-simd-builtins.def (addp): Delete DImode instances.
30853         * config/aarch64/aarch64-simd.md (aarch64_addpdi): Delete.
30854         * config/aarch64/arm_neon.h (vpaddd_s64): Reimplement with
30855         __builtin_aarch64_reduc_plus_scal_v2di.
30856         (vpaddd_u64): Reimplement with __builtin_aarch64_reduc_plus_scal_v2di_uu.
30858 2023-06-06  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
30860         * config/aarch64/aarch64-simd.md (aarch64_<sur>shr_n<mode>): Delete.
30861         (aarch64_<sra_op>rshr_n<mode><vczle><vczbe>_insn): New define_insn.
30862         (aarch64_<sra_op>rshr_n<mode>): New define_expand.
30864 2023-06-06  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
30866         * config/aarch64/aarch64-simd.md (aarch64_shrn<mode>_insn_le): Delete.
30867         (aarch64_shrn<mode>_insn_be): Delete.
30868         (*aarch64_<srn_op>shrn<mode>_vect):  Rename to...
30869         (*aarch64_<srn_op>shrn<mode><vczle><vczbe>): ... This.
30870         (aarch64_shrn<mode>): Remove reference to the above deleted patterns.
30871         (aarch64_rshrn<mode>_insn_le): Delete.
30872         (aarch64_rshrn<mode>_insn_be): Delete.
30873         (aarch64_rshrn<mode><vczle><vczbe>_insn): New define_insn.
30874         (aarch64_rshrn<mode>): Remove references to the above deleted patterns.
30876 2023-06-06  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
30878         * config/aarch64/aarch64-protos.h (aarch64_parallel_select_half_p):
30879         Define prototype.
30880         (aarch64_pars_overlap_p): Likewise.
30881         * config/aarch64/aarch64-simd.md (aarch64_<su>addlv<mode>):
30882         Express in terms of UNSPEC_ADDV.
30883         (*aarch64_<su>addlv<VDQV_L:mode>_ze<GPI:mode>): Likewise.
30884         (*aarch64_<su>addlv<mode>_reduction): Define.
30885         (*aarch64_uaddlv<mode>_reduction_2): Likewise.
30886         * config/aarch64/aarch64.cc     (aarch64_parallel_select_half_p): Define.
30887         (aarch64_pars_overlap_p): Likewise.
30888         * config/aarch64/iterators.md (UNSPEC_SADDLV, UNSPEC_UADDLV): Delete.
30889         (VQUADW): New mode attribute.
30890         (VWIDE2X_S): Likewise.
30891         (USADDLV): Delete.
30892         (su): Delete handling of UNSPEC_SADDLV, UNSPEC_UADDLV.
30893         * config/aarch64/predicates.md (vect_par_cnst_select_half): Define.
30895 2023-06-06  Richard Biener  <rguenther@suse.de>
30897         PR middle-end/110055
30898         * gimplify.cc (gimplify_target_expr): Do not emit
30899         CLOBBERs for variables which have static storage duration
30900         after gimplifying their initializers.
30902 2023-06-06  Richard Biener  <rguenther@suse.de>
30904         PR tree-optimization/109143
30905         * tree-ssa-structalias.cc (solution_set_expand): Avoid
30906         one bitmap iteration and optimize bit range setting.
30908 2023-06-06  Hans-Peter Nilsson  <hp@axis.com>
30910         PR bootstrap/110120
30911         * postreload.cc (reload_cse_move2add, move2add_use_add2_insn): Use
30912         XVECEXP, not XEXP, to access first item of a PARALLEL.
30914 2023-06-06  Pan Li  <pan2.li@intel.com>
30916         * config/riscv/riscv-vector-builtins-types.def
30917         (vfloat16mf4_t): Add vfloat16mf4_t to WF operations.
30918         (vfloat16mf2_t): Likewise.
30919         (vfloat16m1_t): Likewise.
30920         (vfloat16m2_t): Likewise.
30921         (vfloat16m4_t): Likewise.
30922         (vfloat16m8_t): Likewise.
30923         * config/riscv/vector-iterators.md: Add FP=16 to VWF, VWF_ZVE64,
30924         VWLMUL1, VWLMUL1_ZVE64, vwlmul1 and vwlmul1_zve64.
30926 2023-06-06  Fei Gao  <gaofei@eswincomputing.com>
30928         * config/riscv/riscv.cc (riscv_adjust_libcall_cfi_prologue): Use Pmode
30929         for cfi reg/mem machmode
30930         (riscv_adjust_libcall_cfi_epilogue): Use Pmode for cfi reg machmode
30932 2023-06-06  Li Xu  <xuli1@eswincomputing.com>
30934         * config/riscv/vector-iterators.md:
30935         Fix 'REQUIREMENT' for machine_mode 'MODE'.
30936         * config/riscv/vector.md (@pred_indexed_<order>store<VNX16_QHS:mode>
30937         <VNX16_QHSI:mode>): change VNX16_QHSI to VNX16_QHSDI.
30938         (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSDI:mode>): Ditto.
30940 2023-06-06  Pan Li  <pan2.li@intel.com>
30942         * config/riscv/vector-iterators.md: Fix typo in mode attr.
30944 2023-06-05  Andre Vieira  <andre.simoesdiasvieira@arm.com>
30945             Joel Hutton  <joel.hutton@arm.com>
30947         * doc/generic.texi: Remove old tree codes.
30948         * expr.cc (expand_expr_real_2): Remove old tree code cases.
30949         * gimple-pretty-print.cc (dump_binary_rhs): Likewise.
30950         * optabs-tree.cc (optab_for_tree_code): Likewise.
30951         (supportable_half_widening_operation): Likewise.
30952         * tree-cfg.cc (verify_gimple_assign_binary): Likewise.
30953         * tree-inline.cc (estimate_operator_cost): Likewise.
30954         (op_symbol_code): Likewise.
30955         * tree-vect-data-refs.cc (vect_get_smallest_scalar_type): Likewise.
30956         (vect_analyze_data_ref_accesses): Likewise.
30957         * tree-vect-generic.cc (expand_vector_operations_1): Likewise.
30958         * cfgexpand.cc (expand_debug_expr): Likewise.
30959         * tree-vect-stmts.cc (vectorizable_conversion): Likewise.
30960         (supportable_widening_operation): Likewise.
30961         * gimple-range-op.cc (gimple_range_op_handler::maybe_non_standard):
30962         Likewise.
30963         * optabs.def (vec_widen_ssubl_hi_optab, vec_widen_ssubl_lo_optab,
30964         vec_widen_saddl_hi_optab, vec_widen_saddl_lo_optab,
30965         vec_widen_usubl_hi_optab, vec_widen_usubl_lo_optab,
30966         vec_widen_uaddl_hi_optab, vec_widen_uaddl_lo_optab): Remove optabs.
30967         * tree-pretty-print.cc (dump_generic_node): Remove tree code definition.
30968         * tree.def (WIDEN_PLUS_EXPR, WIDEN_MINUS_EXPR, VEC_WIDEN_PLUS_HI_EXPR,
30969         VEC_WIDEN_PLUS_LO_EXPR, VEC_WIDEN_MINUS_HI_EXPR,
30970         VEC_WIDEN_MINUS_LO_EXPR): Likewise.
30972 2023-06-05  Andre Vieira  <andre.simoesdiasvieira@arm.com>
30973             Joel Hutton  <joel.hutton@arm.com>
30974             Tamar Christina  <tamar.christina@arm.com>
30976         * config/aarch64/aarch64-simd.md (vec_widen_<su>addl_lo_<mode>): Rename
30977         this ...
30978         (vec_widen_<su>add_lo_<mode>): ... to this.
30979         (vec_widen_<su>addl_hi_<mode>): Rename this ...
30980         (vec_widen_<su>add_hi_<mode>): ... to this.
30981         (vec_widen_<su>subl_lo_<mode>): Rename this ...
30982         (vec_widen_<su>sub_lo_<mode>): ... to this.
30983         (vec_widen_<su>subl_hi_<mode>): Rename this ...
30984         (vec_widen_<su>sub_hi_<mode>): ...to this.
30985         * doc/generic.texi: Document new IFN codes.
30986         * internal-fn.cc (lookup_hilo_internal_fn): Add lookup function.
30987         (commutative_binary_fn_p): Add widen_plus fn's.
30988         (widening_fn_p): New function.
30989         (narrowing_fn_p): New function.
30990         (direct_internal_fn_optab): Change visibility.
30991         * internal-fn.def (DEF_INTERNAL_WIDENING_OPTAB_FN): Macro to define an
30992         internal_fn that expands into multiple internal_fns for widening.
30993         (IFN_VEC_WIDEN_PLUS, IFN_VEC_WIDEN_PLUS_HI, IFN_VEC_WIDEN_PLUS_LO,
30994         IFN_VEC_WIDEN_PLUS_EVEN, IFN_VEC_WIDEN_PLUS_ODD,
30995         IFN_VEC_WIDEN_MINUS, IFN_VEC_WIDEN_MINUS_HI,
30996         IFN_VEC_WIDEN_MINUS_LO, IFN_VEC_WIDEN_MINUS_ODD,
30997         IFN_VEC_WIDEN_MINUS_EVEN): Define widening  plus,minus functions.
30998         * internal-fn.h (direct_internal_fn_optab): Declare new prototype.
30999         (lookup_hilo_internal_fn): Likewise.
31000         (widening_fn_p): Likewise.
31001         (Narrowing_fn_p): Likewise.
31002         * optabs.cc (commutative_optab_p): Add widening plus optabs.
31003         * optabs.def (OPTAB_D): Define widen add, sub optabs.
31004         * tree-vect-patterns.cc (vect_recog_widen_op_pattern): Support
31005         patterns with a hi/lo or even/odd split.
31006         (vect_recog_sad_pattern): Refactor to use new IFN codes.
31007         (vect_recog_widen_plus_pattern): Likewise.
31008         (vect_recog_widen_minus_pattern): Likewise.
31009         (vect_recog_average_pattern): Likewise.
31010         * tree-vect-stmts.cc (vectorizable_conversion): Add support for
31011         _HILO IFNs.
31012         (supportable_widening_operation): Likewise.
31013         * tree.def (WIDEN_SUM_EXPR): Update example to use new IFNs.
31015 2023-06-05  Andre Vieira  <andre.simoesdiasvieira@arm.com>
31016             Joel Hutton  <joel.hutton@arm.com>
31018         * tree-vect-patterns.cc: Add include for gimple-iterator.
31019         (vect_recog_widen_op_pattern): Refactor to use code_helper.
31020         (vect_gimple_build): New function.
31021         * tree-vect-stmts.cc (simple_integer_narrowing): Refactor to use
31022         code_helper.
31023         (vectorizable_call): Likewise.
31024         (vect_gen_widened_results_half): Likewise.
31025         (vect_create_vectorized_demotion_stmts): Likewise.
31026         (vect_create_vectorized_promotion_stmts): Likewise.
31027         (vect_create_half_widening_stmts): Likewise.
31028         (vectorizable_conversion): Likewise.
31029         (supportable_widening_operation): Likewise.
31030         (supportable_narrowing_operation): Likewise.
31031         * tree-vectorizer.h (supportable_widening_operation): Change
31032         prototype to use code_helper.
31033         (supportable_narrowing_operation): Likewise.
31034         (vect_gimple_build): New function prototype.
31035         * tree.h (code_helper::safe_as_tree_code): New function.
31036         (code_helper::safe_as_fn_code): New function.
31038 2023-06-05  Roger Sayle  <roger@nextmovesoftware.com>
31040         * wide-int.cc (wi::bitreverse_large): New function implementing
31041         bit reversal of an integer.
31042         * wide-int.h (wi::bitreverse): New (template) function prototype.
31043         (bitreverse_large): Prototype helper function/implementation.
31044         (wi::bitreverse): New template wrapper around bitreverse_large.
31046 2023-06-05  Uros Bizjak  <ubizjak@gmail.com>
31048         * rtl.h (print_rtl_single): Change return type from int to void.
31049         (print_rtl_single_with_indent): Ditto.
31050         * print-rtl.h (class rtx_writer): Ditto.  Change m_sawclose to bool.
31051         * print-rtl.cc (rtx_writer::rtx_writer): Update for m_sawclose change.
31052         (rtx_writer::print_rtx_operand_code_0): Ditto.
31053         (rtx_writer::print_rtx_operand_codes_E_and_V): Ditto.
31054         (rtx_writer::print_rtx_operand_code_i): Ditto.
31055         (rtx_writer::print_rtx_operand_code_u): Ditto.
31056         (rtx_writer::print_rtx_operand): Ditto.
31057         (rtx_writer::print_rtx): Ditto.
31058         (rtx_writer::finish_directive): Ditto.
31059         (print_rtl_single): Change return type from int to void
31060         and adjust function body accordingly.
31061         (rtx_writer::print_rtl_single_with_indent): Ditto.
31063 2023-06-05  Uros Bizjak  <ubizjak@gmail.com>
31065         * rtl.h (reg_classes_intersect_p): Change return type from int to bool.
31066         (reg_class_subset_p): Ditto.
31067         * reginfo.cc (reg_classes_intersect_p): Ditto.
31068         (reg_class_subset_p): Ditto.
31070 2023-06-05  Pan Li  <pan2.li@intel.com>
31072         * config/riscv/riscv-vector-builtins-types.def
31073         (vfloat32mf2_t): New type for DEF_RVV_WEXTF_OPS.
31074         (vfloat32m1_t): Ditto.
31075         (vfloat32m2_t): Ditto.
31076         (vfloat32m4_t): Ditto.
31077         (vfloat32m8_t): Ditto.
31078         (vint16mf4_t): New type for DEF_RVV_CONVERT_I_OPS.
31079         (vint16mf2_t): Ditto.
31080         (vint16m1_t): Ditto.
31081         (vint16m2_t): Ditto.
31082         (vint16m4_t): Ditto.
31083         (vint16m8_t): Ditto.
31084         (vuint16mf4_t): New type for DEF_RVV_CONVERT_U_OPS.
31085         (vuint16mf2_t): Ditto.
31086         (vuint16m1_t): Ditto.
31087         (vuint16m2_t): Ditto.
31088         (vuint16m4_t): Ditto.
31089         (vuint16m8_t): Ditto.
31090         (vint32mf2_t): New type for DEF_RVV_WCONVERT_I_OPS.
31091         (vint32m1_t): Ditto.
31092         (vint32m2_t): Ditto.
31093         (vint32m4_t): Ditto.
31094         (vint32m8_t): Ditto.
31095         (vuint32mf2_t): New type for DEF_RVV_WCONVERT_U_OPS.
31096         (vuint32m1_t): Ditto.
31097         (vuint32m2_t): Ditto.
31098         (vuint32m4_t): Ditto.
31099         (vuint32m8_t): Ditto.
31100         * config/riscv/vector-iterators.md: Add FP=16 support for V,
31101         VWCONVERTI, VCONVERT, VNCONVERT, VMUL1 and vlmul1.
31103 2023-06-05  Andrew Pinski  <apinski@marvell.com>
31105         PR bootstrap/110085
31106         * Makefile.in (clean): Remove the removing of
31107         MULTILIB_DIR/MULTILIB_OPTIONS directories.
31109 2023-06-05  YunQiang Su  <yunqiang.su@cipunited.com>
31111         * config/mips/mips-protos.h (mips_emit_speculation_barrier): New
31112         prototype.
31113         * config/mips/mips.cc (speculation_barrier_libfunc): New static
31114         variable.
31115         (mips_init_libfuncs): Initialize it.
31116         (mips_emit_speculation_barrier): New function.
31117         * config/mips/mips.md (speculation_barrier): Call
31118         mips_emit_speculation_barrier.
31120 2023-06-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
31122         * config/riscv/riscv-v.cc (class rvv_builder): Reorganize functions.
31123         (rvv_builder::can_duplicate_repeating_sequence_p): Ditto.
31124         (rvv_builder::repeating_sequence_use_merge_profitable_p): Ditto.
31125         (rvv_builder::get_merged_repeating_sequence): Ditto.
31126         (rvv_builder::get_merge_scalar_mask): Ditto.
31127         (emit_scalar_move_insn): Ditto.
31128         (emit_vlmax_integer_move_insn): Ditto.
31129         (emit_nonvlmax_integer_move_insn): Ditto.
31130         (emit_vlmax_gather_insn): Ditto.
31131         (emit_vlmax_masked_gather_mu_insn): Ditto.
31132         (get_repeating_sequence_dup_machine_mode): Ditto.
31134 2023-06-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
31136         * config/riscv/autovec.md: Split arguments.
31137         * config/riscv/riscv-protos.h (expand_vec_perm): Ditto.
31138         * config/riscv/riscv-v.cc (expand_vec_perm): Ditto.
31140 2023-06-04  Andrew Pinski  <apinski@marvell.com>
31142         * expr.cc (do_store_flag): Improve for single bit testing
31143         not against zero but against that single bit.
31145 2023-06-04  Andrew Pinski  <apinski@marvell.com>
31147         * expr.cc (do_store_flag): Extend the one bit checking case
31148         to handle the case where we don't have an and but rather still
31149         one bit is known to be non-zero.
31151 2023-06-04  Jeff Law  <jlaw@ventanamicro.com>
31153         * config/h8300/constraints.md (Zz): Make this a normal
31154         constraint.
31155         * config/h8300/h8300.cc (TARGET_LRA_P): Remove.
31156         * config/h8300/logical.md (H8/SX bit patterns): Remove.
31158 2023-06-04  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
31160         * config/xtensa/xtensa.md (*btrue_INT_MIN, *eqne_INT_MIN):
31161         New insn_and_split patterns.
31163 2023-06-04  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
31165         PR target/110109
31166         * config/riscv/riscv-vector-builtins-bases.cc: Change expand approach.
31167         * config/riscv/vector.md (@vlmul_extx2<mode>): Remove it.
31168         (@vlmul_extx4<mode>): Ditto.
31169         (@vlmul_extx8<mode>): Ditto.
31170         (@vlmul_extx16<mode>): Ditto.
31171         (@vlmul_extx32<mode>): Ditto.
31172         (@vlmul_extx64<mode>): Ditto.
31173         (*vlmul_extx2<mode>): Ditto.
31174         (*vlmul_extx4<mode>): Ditto.
31175         (*vlmul_extx8<mode>): Ditto.
31176         (*vlmul_extx16<mode>): Ditto.
31177         (*vlmul_extx32<mode>): Ditto.
31178         (*vlmul_extx64<mode>): Ditto.
31180 2023-06-04  Pan Li  <pan2.li@intel.com>
31182         * config/riscv/riscv-vector-builtins-types.def
31183         (vfloat32mf2_t): Add vfloat32mf2_t type to vfncvt.f.f.w operations.
31184         (vfloat32m1_t): Likewise.
31185         (vfloat32m2_t): Likewise.
31186         (vfloat32m4_t): Likewise.
31187         (vfloat32m8_t): Likewise.
31188         * config/riscv/riscv-vector-builtins.def: Fix typo in comments.
31189         * config/riscv/vector-iterators.md: Add single to half machine
31190         mode conversion.
31192 2023-06-04  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
31194         * config/riscv/autovec-opt.md (*<optab>not<mode>): Move to autovec-opt.md.
31195         (*n<optab><mode>): Ditto.
31196         * config/riscv/autovec.md (*<optab>not<mode>): Ditto.
31197         (*n<optab><mode>): Ditto.
31198         * config/riscv/vector.md: Ditto.
31200 2023-06-04  Roger Sayle  <roger@nextmovesoftware.com>
31202         PR target/110083
31203         * config/i386/i386-features.cc (scalar_chain::convert_compare):
31204         Update or delete REG_EQUAL notes, converting CONST_INT and
31205         CONST_WIDE_INT immediate operands to a suitable CONST_VECTOR.
31207 2023-06-04  Jason Merrill  <jason@redhat.com>
31209         PR c++/97720
31210         * tree-eh.cc (lower_resx): Pass the exception pointer to the
31211         failure_decl.
31212         * except.h: Tweak comment.
31214 2023-06-04  Hans-Peter Nilsson  <hp@axis.com>
31216         * postreload.cc (move2add_use_add2_insn): Handle
31217         trivial single_sets.  Rename variable PAT to SET.
31218         (move2add_use_add3_insn, reload_cse_move2add): Similar.
31220 2023-06-04  Pan Li  <pan2.li@intel.com>
31222         * config/riscv/riscv-vector-builtins-types.def
31223         (vfloat16mf4_t): Add the float16 type to DEF_RVV_F_OPS.
31224         (vfloat16mf2_t): Likewise.
31225         (vfloat16m1_t): Likewise.
31226         (vfloat16m2_t): Likewise.
31227         (vfloat16m4_t): Likewise.
31228         (vfloat16m8_t): Likewise.
31229         * config/riscv/riscv.md: Add vfloat16*_t to attr mode.
31230         * config/riscv/vector-iterators.md: Add vfloat16*_t machine mode
31231         to V, V_WHOLE, V_FRACT, VINDEX, VM, VEL and sew.
31232         * config/riscv/vector.md: Add vfloat16*_t machine mode to sew,
31233         vlmul and ratio.
31235 2023-06-03  Fei Gao  <gaofei@eswincomputing.com>
31237         * config/riscv/riscv.cc (riscv_expand_epilogue): fix cfi issue with
31238         correct offset.
31240 2023-06-03  Die Li  <lidie@eswincomputing.com>
31242         * config/riscv/thead.md (*th_cond_gpr_mov<GPR:mode><GPR2:mode>): Delete.
31244 2023-06-03  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
31246         * config/riscv/predicates.md: Change INTVAL into UINTVAL.
31248 2023-06-03  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
31250         * config/riscv/vector.md: Add vector-opt.md.
31251         * config/riscv/autovec-opt.md: New file.
31253 2023-06-03  liuhongt  <hongtao.liu@intel.com>
31255         PR tree-optimization/110067
31256         * gimple-ssa-store-merging.cc (find_bswap_or_nop): Don't try
31257         bswap + rotate when TYPE_PRECISION(n->type) > n->range.
31259 2023-06-03  liuhongt  <hongtao.liu@intel.com>
31261         PR target/92658
31262         * config/i386/mmx.md (truncv2hiv2qi2): New define_insn.
31263         (truncv2si<mode>2): Ditto.
31265 2023-06-02  Andrew Pinski  <apinski@marvell.com>
31267         PR rtl-optimization/102733
31268         * dse.cc (store_info): Add addrspace field.
31269         (record_store): Record the address space
31270         and check to make sure they are the same.
31272 2023-06-02  Andrew Pinski  <apinski@marvell.com>
31274         PR rtl-optimization/110042
31275         * ifcvt.cc (bbs_ok_for_cmove_arith): Allow paradoxical subregs.
31276         (bb_valid_for_noce_process_p): Strip the subreg for the SET_DEST.
31278 2023-06-02  Iain Sandoe  <iain@sandoe.co.uk>
31280         PR target/110044
31281         * config/rs6000/rs6000.cc (darwin_rs6000_special_round_type_align):
31282         Make sure that we do not have a cap on field alignment before altering
31283         the struct layout based on the type alignment of the first entry.
31285 2023-06-02  David Faust  <david.faust@oracle.com>
31287         PR debug/110073
31288         * btfout.cc (btf_absolute_func_id): New function.
31289         (btf_asm_func_type): Call it here.  Change index parameter from
31290         size_t to ctf_id_t.  Use PRIu64 formatter.
31292 2023-06-02  Alex Coplan  <alex.coplan@arm.com>
31294         * btfout.cc (btf_asm_type): Use PRIu64 instead of %lu for uint64_t.
31295         (btf_asm_datasec_type): Likewise.
31297 2023-06-02  Carl Love  <cel@us.ibm.com>
31299         * config/rs6000/rs6000-builtins.def (__builtin_altivec_tr_stxvrhx,
31300         __builtin_altivec_tr_stxvrwx): Fix type of third argument.
31302 2023-06-02  Jason Merrill  <jason@redhat.com>
31304         PR c++/110070
31305         PR c++/105838
31306         * tree.h (DECL_MERGEABLE): New.
31307         * tree-core.h (struct tree_decl_common): Mention it.
31308         * gimplify.cc (gimplify_init_constructor): Check it.
31309         * cgraph.cc (symtab_node::address_can_be_compared_p): Likewise.
31310         * varasm.cc (categorize_decl_for_section): Likewise.
31312 2023-06-02  Uros Bizjak  <ubizjak@gmail.com>
31314         * rtl.h (stack_regs_mentioned): Change return type from int to bool.
31315         * reg-stack.cc (struct_block_info_def): Change "done" to bool.
31316         (stack_regs_mentioned_p): Change return type from int to bool
31317         and adjust function body accordingly.
31318         (stack_regs_mentioned): Ditto.
31319         (check_asm_stack_operands): Ditto.  Change "malformed_asm"
31320         variable to bool.
31321         (move_for_stack_reg): Recode handling of control_flow_insn_deleted.
31322         (swap_rtx_condition_1): Change return type from int to bool
31323         and adjust function body accordingly.  Change "r" variable to bool.
31324         (swap_rtx_condition): Change return type from int to bool
31325         and adjust function body accordingly.
31326         (subst_stack_regs_pat): Recode handling of control_flow_insn_deleted.
31327         (subst_stack_regs): Ditto.
31328         (convert_regs_entry): Change return type from int to bool and adjust
31329         function body accordingly.  Change "inserted" variable to bool.
31330         (convert_regs_1): Recode handling of control_flow_insn_deleted.
31331         (convert_regs_2): Recode handling of cfg_altered.
31332         (convert_regs): Ditto.  Change "inserted" variable to bool.
31334 2023-06-02  Jason Merrill  <jason@redhat.com>
31336         PR c++/95226
31337         * varasm.cc (output_constant) [REAL_TYPE]: Check that sizes match.
31338         (initializer_constant_valid_p_1): Compare float precision.
31340 2023-06-02  Alexander Monakov  <amonakov@ispras.ru>
31342         * doc/extend.texi (Vector Extensions): Clarify bitwise shift
31343         semantics.
31345 2023-06-02  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
31347         * tree-vect-loop-manip.cc (vect_set_loop_controls_directly): Change decrement IV flow.
31348         (vect_set_loop_condition_partial_vectors): Ditto.
31350 2023-06-02  Georg-Johann Lay  <avr@gjlay.de>
31352         PR target/110088
31353         * config/avr/avr.md: Add an RTL peephole to optimize operations on
31354         non-LD_REGS after a move from LD_REGS.
31355         (piaop): New code iterator.
31357 2023-06-02  Thomas Schwinge  <thomas@codesourcery.com>
31359         PR testsuite/66005
31360         * doc/install.texi: Document (optional) Perl usage for parallel
31361         testing of libgomp.
31363 2023-06-02  Thomas Schwinge  <thomas@codesourcery.com>
31365         PR bootstrap/82856
31366         * doc/install.texi (Perl): Back to requiring "Perl version 5.6.1 (or
31367         later)".
31369 2023-06-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
31370             KuanLin Chen  <best124612@gmail.com>
31372         * config/riscv/riscv-vector-builtins-bases.cc: Add _mu overloaded intrinsics.
31373         * config/riscv/riscv-vector-builtins-shapes.cc (struct fault_load_def): Ditto.
31375 2023-06-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
31377         * config/riscv/riscv-v.cc (expand_vec_series): Optimize reverse series index vector.
31379 2023-06-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
31381         * config/riscv/predicates.md: Change INTVAL into UINTVAL.
31383 2023-06-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
31385         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_VXRM_ENUM): Add
31386         __RISCV_ prefix.
31387         (DEF_RVV_FRM_ENUM): Ditto.
31389 2023-06-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
31391         * config/riscv/riscv-vector-builtins-bases.cc: Change vwadd.wv/vwsub.wv
31392         intrinsic API expander
31393         * config/riscv/vector.md
31394         (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>): Remove it.
31395         (@pred_single_widen_sub<any_extend:su><mode>): New pattern.
31396         (@pred_single_widen_add<any_extend:su><mode>): New pattern.
31398 2023-06-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
31400         * config/riscv/autovec.md (vec_perm<mode>): New pattern.
31401         * config/riscv/predicates.md (vector_perm_operand): New predicate.
31402         * config/riscv/riscv-protos.h (enum insn_type): New enum.
31403         (expand_vec_perm): New function.
31404         * config/riscv/riscv-v.cc (const_vec_all_in_range_p): Ditto.
31405         (gen_const_vector_dup): Ditto.
31406         (emit_vlmax_gather_insn): Ditto.
31407         (emit_vlmax_masked_gather_mu_insn): Ditto.
31408         (expand_vec_perm): Ditto.
31410 2023-06-01  Jason Merrill  <jason@redhat.com>
31412         * doc/invoke.texi (-Wpedantic): Improve clarity.
31414 2023-06-01  Uros Bizjak  <ubizjak@gmail.com>
31416         * rtl.h (exp_equiv_p): Change return type from int to bool.
31417         * cse.cc (mention_regs): Change return type from int to bool
31418         and adjust function body accordingly.
31419         (exp_equiv_p): Ditto.
31420         (insert_regs): Ditto. Change "modified" function argument to bool
31421         and update usage accordingly.
31422         (record_jump_cond): Remove always zero "reversed_nonequality"
31423         function argument and update usage accordingly.
31424         (fold_rtx): Change "changed" variable to bool.
31425         (record_jump_equiv): Remove unneeded "reversed_nonequality" variable.
31426         (is_dead_reg): Change return type from int to bool.
31428 2023-06-01  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
31430         * config/xtensa/xtensa.md (adddi3, subdi3):
31431         New RTL generation patterns implemented according to the instruc-
31432         tion idioms described in the Xtensa ISA reference manual (p. 600).
31434 2023-06-01  Roger Sayle  <roger@nextmovesoftware.com>
31435             Uros Bizjak  <ubizjak@gmail.com>
31437         PR target/109973
31438         * config/i386/i386-builtin.def (__builtin_ia32_ptestz128): Use new
31439         CODE_for_sse4_1_ptestzv2di.
31440         (__builtin_ia32_ptestc128): Use new CODE_for_sse4_1_ptestcv2di.
31441         (__builtin_ia32_ptestz256): Use new CODE_for_avx_ptestzv4di.
31442         (__builtin_ia32_ptestc256): Use new CODE_for_avx_ptestcv4di.
31443         * config/i386/i386-expand.cc (ix86_expand_branch): Use CCZmode
31444         when expanding UNSPEC_PTEST to compare against zero.
31445         * config/i386/i386-features.cc (scalar_chain::convert_compare):
31446         Likewise generate CCZmode UNSPEC_PTESTs when converting comparisons.
31447         (general_scalar_chain::convert_insn): Use CCZmode for COMPARE result.
31448         (timode_scalar_chain::convert_insn): Use CCZmode for COMPARE result.
31449         * config/i386/i386-protos.h (ix86_match_ptest_ccmode): Prototype.
31450         * config/i386/i386.cc (ix86_match_ptest_ccmode): New predicate to
31451         check for suitable matching modes for the UNSPEC_PTEST pattern.
31452         * config/i386/sse.md (define_split): When splitting UNSPEC_MOVMSK
31453         to UNSPEC_PTEST, preserve the FLAG_REG mode as CCZ.
31454         (*<sse4_1>_ptest<mode>): Add asterisk to hide define_insn.  Remove
31455         ":CC" mode of FLAGS_REG, instead use ix86_match_ptest_ccmode.
31456         (<sse4_1>_ptestz<mode>): New define_expand to specify CCZ.
31457         (<sse4_1>_ptestc<mode>): New define_expand to specify CCC.
31458         (<sse4_1>_ptest<mode>): A define_expand using CC to preserve the
31459         current behavior.
31460         (*ptest<mode>_and): Specify CCZ to only perform this optimization
31461         when only the Z flag is required.
31463 2023-06-01  Jonathan Wakely  <jwakely@redhat.com>
31465         PR target/109954
31466         * doc/invoke.texi (x86 Options): Fix description of -m32 option.
31468 2023-06-01  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
31470         * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<VDMOV:mode>):
31471         Add =r,m and =r,m alternatives.
31472         (load_pair<DREG:mode><DREG2:mode>): Likewise.
31473         (vec_store_pair<DREG:mode><DREG2:mode>): Likewise.
31475 2023-06-01  Pan Li  <pan2.li@intel.com>
31477         * common/config/riscv/riscv-common.cc: Add FP_16 mask to zvfhmin
31478         and zvfh.
31479         * config/riscv/genrvv-type-indexer.cc (valid_type): Allow FP16.
31480         (main): Disable FP16 tuple.
31481         * config/riscv/riscv-opts.h (MASK_VECTOR_ELEN_FP_16): New macro.
31482         (TARGET_VECTOR_ELEN_FP_16): Ditto.
31483         * config/riscv/riscv-vector-builtins.cc (check_required_extensions):
31484         Add FP16.
31485         * config/riscv/riscv-vector-builtins.def (vfloat16mf4_t): New type.
31486         (vfloat16mf2_t): Ditto.
31487         (vfloat16m1_t): Ditto.
31488         (vfloat16m2_t): Ditto.
31489         (vfloat16m4_t): Ditto.
31490         (vfloat16m8_t): Ditto.
31491         * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_ELEN_FP_16):
31492         New macro.
31493         * config/riscv/riscv-vector-switch.def (ENTRY): Allow FP16
31494         machine mode based on TARGET_VECTOR_ELEN_FP_16.
31496 2023-06-01  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
31498         * config/riscv/riscv-vector-builtins.cc (register_frm): New function.
31499         (DEF_RVV_FRM_ENUM): New macro.
31500         (handle_pragma_vector): Add FRM enum
31501         * config/riscv/riscv-vector-builtins.def (DEF_RVV_FRM_ENUM): New macro.
31502         (RNE): Ditto.
31503         (RTZ): Ditto.
31504         (RDN): Ditto.
31505         (RUP): Ditto.
31506         (RMM): Ditto.
31508 2023-05-31  Roger Sayle  <roger@nextmovesoftware.com>
31509             Richard Sandiford  <richard.sandiford@arm.com>
31511         * fold-const-call.cc (fold_const_call_ss) <CFN_BUILT_IN_BSWAP*>:
31512         Update call to wi::bswap.
31513         * simplify-rtx.cc (simplify_const_unary_operation) <case BSWAP>:
31514         Update call to wi::bswap.
31515         * tree-ssa-ccp.cc (evaluate_stmt) <case BUILT_IN_BSWAP*>:
31516         Update calls to wi::bswap.
31517         * wide-int.cc (wide_int_storage::bswap): Remove/rename to...
31518         (wi::bswap_large): New function, with revised API.
31519         * wide-int.h (wi::bswap): New (template) function prototype.
31520         (wide_int_storage::bswap): Remove method.
31521         (sext_large, zext_large): Consistent indentation/line wrapping.
31522         (bswap_large): Prototype helper function containing implementation.
31523         (wi::bswap): New template wrapper around bswap_large.
31525 2023-05-31  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
31527         PR target/99195
31528         * config/aarch64/aarch64-simd.md (<sur>dot_prod<vsi2qi>): Rename to...
31529         (<sur>dot_prod<vsi2qi><vczle><vczbe>): ... This.
31530         (usdot_prod<vsi2qi>): Rename to...
31531         (usdot_prod<vsi2qi><vczle><vczbe>): ... This.
31532         (aarch64_<sur>dot_lane<vsi2qi>): Rename to...
31533         (aarch64_<sur>dot_lane<vsi2qi><vczle><vczbe>): ... This.
31534         (aarch64_<sur>dot_laneq<vsi2qi>): Rename to...
31535         (aarch64_<sur>dot_laneq<vsi2qi><vczle><vczbe>): ... This.
31536         (aarch64_<DOTPROD_I8MM:sur>dot_lane<VB:isquadop><VS:vsi2qi>): Rename to...
31537         (aarch64_<DOTPROD_I8MM:sur>dot_lane<VB:isquadop><VS:vsi2qi><vczle><vczbe>):
31538         ... This.
31540 2023-05-31  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
31542         PR target/99195
31543         * config/aarch64/aarch64-simd.md (aarch64_sq<r>dmulh<mode>): Rename to...
31544         (aarch64_sq<r>dmulh<mode><vczle><vczbe>): ... This.
31545         (aarch64_sq<r>dmulh_n<mode>): Rename to...
31546         (aarch64_sq<r>dmulh_n<mode><vczle><vczbe>): ... This.
31547         (aarch64_sq<r>dmulh_lane<mode>): Rename to...
31548         (aarch64_sq<r>dmulh_lane<mode><vczle><vczbe>): ... This.
31549         (aarch64_sq<r>dmulh_laneq<mode>): Rename to...
31550         (aarch64_sq<r>dmulh_laneq<mode><vczle><vczbe>): ... This.
31551         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h<mode>): Rename to...
31552         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h<mode><vczle><vczbe>): ... This.
31553         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_lane<mode>): Rename to...
31554         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_lane<mode><vczle><vczbe>): ... This.
31555         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_laneq<mode>): Rename to...
31556         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_laneq<mode><vczle><vczbe>): ... This.
31558 2023-05-31  David Faust  <david.faust@oracle.com>
31560         * btfout.cc (btf_kind_names): New.
31561         (btf_kind_name): New.
31562         (btf_absolute_var_id): New utility function.
31563         (btf_relative_var_id): Likewise.
31564         (btf_relative_func_id): Likewise.
31565         (btf_absolute_datasec_id): Likewise.
31566         (btf_asm_type_ref): New.
31567         (btf_asm_type): Update asm comments and use btf_asm_type_ref ().
31568         (btf_asm_array): Likewise. Accept ctf_container_ref parameter.
31569         (btf_asm_varent): Likewise.
31570         (btf_asm_func_arg): Likewise.
31571         (btf_asm_datasec_entry): Likewise.
31572         (btf_asm_datasec_type): Likewise.
31573         (btf_asm_func_type): Likewise. Add index parameter.
31574         (btf_asm_enum_const): Likewise.
31575         (btf_asm_sou_member): Likewise.
31576         (output_btf_vars): Update btf_asm_* call accordingly.
31577         (output_asm_btf_sou_fields): Likewise.
31578         (output_asm_btf_enum_list): Likewise.
31579         (output_asm_btf_func_args_list): Likewise.
31580         (output_asm_btf_vlen_bytes): Likewise.
31581         (output_btf_func_types): Add ctf_container_ref parameter.
31582         Pass it to btf_asm_func_type.
31583         (output_btf_datasec_types): Update btf_asm_datsec_type call similarly.
31584         (btf_output): Update output_btf_func_types call similarly.
31586 2023-05-31  David Faust  <david.faust@oracle.com>
31588         * btfout.cc (btf_asm_type): Add dedicated cases for BTF_KIND_ARRAY
31589         and BTF_KIND_FWD which do not use the size/type field at all.
31591 2023-05-31  Uros Bizjak  <ubizjak@gmail.com>
31593         * rtl.h (subreg_lowpart_p): Change return type from int to bool.
31594         (active_insn_p): Ditto.
31595         (in_sequence_p): Ditto.
31596         (unshare_all_rtl): Change return type from int to void.
31597         * emit-rtl.h (mem_expr_equal_p): Change return type from int to bool.
31598         * emit-rtl.cc (subreg_lowpart_p): Change return type from int to bool
31599         and adjust function body accordingly.
31600         (mem_expr_equal_p): Ditto.
31601         (unshare_all_rtl): Change return type from int to void
31602         and adjust function body accordingly.
31603         (verify_rtx_sharing): Remove unneeded return.
31604         (active_insn_p): Change return type from int to bool
31605         and adjust function body accordingly.
31606         (in_sequence_p): Ditto.
31608 2023-05-31  Uros Bizjak  <ubizjak@gmail.com>
31610         * rtl.h (true_dependence): Change return type from int to bool.
31611         (canon_true_dependence): Ditto.
31612         (read_dependence): Ditto.
31613         (anti_dependence): Ditto.
31614         (canon_anti_dependence): Ditto.
31615         (output_dependence): Ditto.
31616         (canon_output_dependence): Ditto.
31617         (may_alias_p): Ditto.
31618         * alias.h (alias_sets_conflict_p): Ditto.
31619         (alias_sets_must_conflict_p): Ditto.
31620         (objects_must_conflict_p): Ditto.
31621         (nonoverlapping_memrefs_p): Ditto.
31622         * alias.cc (rtx_equal_for_memref_p): Remove forward declaration.
31623         (record_set): Ditto.
31624         (base_alias_check): Ditto.
31625         (find_base_value): Ditto.
31626         (mems_in_disjoint_alias_sets_p): Ditto.
31627         (get_alias_set_entry): Ditto.
31628         (decl_for_component_ref): Ditto.
31629         (write_dependence_p): Ditto.
31630         (memory_modified_1): Ditto.
31631         (mems_in_disjoint_alias_set_p): Change return type from int to bool
31632         and adjust function body accordingly.
31633         (alias_sets_conflict_p): Ditto.
31634         (alias_sets_must_conflict_p): Ditto.
31635         (objects_must_conflict_p): Ditto.
31636         (rtx_equal_for_memref_p): Ditto.
31637         (base_alias_check): Ditto.
31638         (read_dependence): Ditto.
31639         (nonoverlapping_memrefs_p): Ditto.
31640         (true_dependence_1): Ditto.
31641         (true_dependence): Ditto.
31642         (canon_true_dependence): Ditto.
31643         (write_dependence_p): Ditto.
31644         (anti_dependence): Ditto.
31645         (canon_anti_dependence): Ditto.
31646         (output_dependence): Ditto.
31647         (canon_output_dependence): Ditto.
31648         (may_alias_p): Ditto.
31649         (init_alias_analysis): Change "changed" variable to bool.
31651 2023-05-31  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
31653         * config/riscv/autovec.md (<optab><v_double_trunc><mode>2): Change
31654         expand into define_insn_and_split.
31656 2023-05-31  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
31658         * config/riscv/vector.md: Remove FRM.
31660 2023-05-31  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
31662         * config/riscv/vector.md: Remove FRM.
31664 2023-05-31  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
31666         * config/riscv/vector.md: Remove FRM.
31668 2023-05-31  Christophe Lyon  <christophe.lyon@linaro.org>
31670         PR target/110039
31671         * config/aarch64/aarch64.md (aarch64_rev16si2_alt3): New
31672         pattern.
31674 2023-05-31  Richard Biener  <rguenther@suse.de>
31676         PR ipa/109983
31677         PR tree-optimization/109143
31678         * tree-ssa-structalias.cc (struct topo_info): Remove.
31679         (init_topo_info): Likewise.
31680         (free_topo_info): Likewise.
31681         (compute_topo_order): Simplify API, put the component
31682         with ESCAPED last so it's processed first.
31683         (topo_visit): Adjust.
31684         (solve_graph): Likewise.
31686 2023-05-31  Richard Biener  <rguenther@suse.de>
31688         * tree-ssa-structalias.cc (constraint_stats::num_avoided_edges):
31689         New.
31690         (add_graph_edge): Count redundant edges we avoid to create.
31691         (dump_sa_stats): Dump them.
31692         (ipa_pta_execute): Do not dump generating constraints when
31693         we are not dumping them.
31695 2023-05-31  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
31697         * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<VDMOV:mode>): Rewrite
31698         output template to avoid explicit switch on which_alternative.
31699         (*aarch64_simd_mov<VQMOV:mode>): Likewise.
31700         (and<mode>3): Likewise.
31701         (ior<mode>3): Likewise.
31702         * config/aarch64/aarch64.md (*mov<mode>_aarch64): Likewise.
31704 2023-05-31  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
31706         * config/xtensa/predicates.md (xtensa_bit_join_operator):
31707         New predicate.
31708         * config/xtensa/xtensa.md (ior_op): Remove.
31709         (*shlrd_reg): Rename from "*shlrd_reg_<code>", and add the
31710         insn_and_split pattern of the same name to express and capture
31711         the bit-combining operation with both sides swapped.
31712         In addition, replace use of code iterator with new operator
31713         predicate.
31714         (*shlrd_const, *shlrd_per_byte):
31715         Likewise regarding the code iterator.
31717 2023-05-31  Cui, Lili  <lili.cui@intel.com>
31719         PR tree-optimization/110038
31720         * params.opt: Add a limit on tree-reassoc-width.
31721         * tree-ssa-reassoc.cc
31722         (rewrite_expr_tree_parallel): Add width limit.
31724 2023-05-31  Pan Li  <pan2.li@intel.com>
31726         * common/config/riscv/riscv-common.cc:
31727         (riscv_implied_info): Add zvfh item.
31728         (riscv_ext_version_table): Ditto.
31729         (riscv_ext_flag_table): Ditto.
31730         * config/riscv/riscv-opts.h (MASK_ZVFH): New macro.
31731         (TARGET_ZVFH): Ditto.
31733 2023-05-30  liuhongt  <hongtao.liu@intel.com>
31735         PR tree-optimization/108804
31736         * tree-vect-patterns.cc (vect_get_range_info): Remove static.
31737         * tree-vect-stmts.cc (vect_create_vectorized_demotion_stmts):
31738         Add new parameter narrow_src_p.
31739         (vectorizable_conversion): Enhance NARROW FLOAT_EXPR
31740         vectorization by truncating to lower precision.
31741         * tree-vectorizer.h (vect_get_range_info): New declare.
31743 2023-05-30  Vladimir N. Makarov  <vmakarov@redhat.com>
31745         * lra-int.h (lra_update_sp_offset): Add the prototype.
31746         * lra.cc (setup_sp_offset): Change the return type.  Use
31747         lra_update_sp_offset.
31748         * lra-eliminations.cc (lra_update_sp_offset): New function.
31749         (lra_process_new_insns): Push the current insn to reprocess if the
31750         input reload changes sp offset.
31752 2023-05-30  Uros Bizjak  <ubizjak@gmail.com>
31754         PR target/110041
31755         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
31756         Fix misleading identation.
31758 2023-05-30  Uros Bizjak  <ubizjak@gmail.com>
31760         * rtl.h (comparison_dominates_p): Change return type from int to bool.
31761         (condjump_p): Ditto.
31762         (any_condjump_p): Ditto.
31763         (any_uncondjump_p): Ditto.
31764         (simplejump_p): Ditto.
31765         (returnjump_p): Ditto.
31766         (eh_returnjump_p): Ditto.
31767         (onlyjump_p): Ditto.
31768         (invert_jump_1): Ditto.
31769         (invert_jump): Ditto.
31770         (rtx_renumbered_equal_p): Ditto.
31771         (redirect_jump_1): Ditto.
31772         (redirect_jump): Ditto.
31773         (condjump_in_parallel_p): Ditto.
31774         * jump.cc (invert_exp_1): Adjust forward declaration.
31775         (comparison_dominates_p): Change return type from int to bool
31776         and adjust function body accordingly.
31777         (simplejump_p): Ditto.
31778         (condjump_p): Ditto.
31779         (condjump_in_parallel_p): Ditto.
31780         (any_uncondjump_p): Ditto.
31781         (any_condjump_p): Ditto.
31782         (returnjump_p): Ditto.
31783         (eh_returnjump_p): Ditto.
31784         (onlyjump_p): Ditto.
31785         (redirect_jump_1): Ditto.
31786         (redirect_jump): Ditto.
31787         (invert_exp_1): Ditto.
31788         (invert_jump_1): Ditto.
31789         (invert_jump): Ditto.
31790         (rtx_renumbered_equal_p): Ditto.
31792 2023-05-30  Andrew Pinski  <apinski@marvell.com>
31794         * fold-const.cc (minmax_from_comparison): Add support for NE_EXPR.
31795         * match.pd ((cond (cmp (convert1? x) c1) (convert2? x) c2) pattern):
31796         Add ne as a possible cmp.
31797         ((a CMP b) ? minmax<a, c> : minmax<b, c> pattern): Likewise.
31799 2023-05-30  Andrew Pinski  <apinski@marvell.com>
31801         * match.pd (`(a CMP CST1) ? max<a,CST2> : a`): New
31802         pattern.
31804 2023-05-30  Roger Sayle  <roger@nextmovesoftware.com>
31806         * simplify-rtx.cc (simplify_binary_operation_1) <AND>: Use wide-int
31807         instead of HWI_COMPUTABLE_MODE_P and UINTVAL in transformation of
31808         (and (extend X) C) as (zero_extend (and X C)), to also optimize
31809         modes wider than HOST_WIDE_INT.
31811 2023-05-30  Roger Sayle  <roger@nextmovesoftware.com>
31813         PR target/107172
31814         * simplify-rtx.cc (simplify_const_relational_operation): Return
31815         early if we have a MODE_CC comparison that isn't a COMPARE against
31816         const0_rtx.
31818 2023-05-30  Robin Dapp  <rdapp@ventanamicro.com>
31820         * config/riscv/riscv.cc (riscv_const_insns): Allow
31821         const_vec_duplicates.
31823 2023-05-30  liuhongt  <hongtao.liu@intel.com>
31825         PR middle-end/108938
31826         * gimple-ssa-store-merging.cc (is_bswap_or_nop_p): New
31827         function, cut from original find_bswap_or_nop function.
31828         (find_bswap_or_nop): Add a new parameter, detect bswap +
31829         rotate and save rotate result in the new parameter.
31830         (bswap_replace): Add a new parameter to indicate rotate and
31831         generate rotate stmt if needed.
31832         (maybe_optimize_vector_constructor): Adjust for new rotate
31833         parameter in the upper 2 functions.
31834         (pass_optimize_bswap::execute): Ditto.
31835         (imm_store_chain_info::output_merged_store): Ditto.
31837 2023-05-30  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
31839         * config/aarch64/aarch64-simd.md (aarch64_<sur>adalp<mode>): Delete.
31840         (aarch64_<su>adalp<mode>): New define_expand.
31841         (*aarch64_<su>adalp<mode><vczle><vczbe>_insn): New define_insn.
31842         (aarch64_<su>addlp<mode>): Convert to define_expand.
31843         (*aarch64_<su>addlp<mode><vczle><vczbe>_insn): New define_insn.
31844         * config/aarch64/iterators.md (UNSPEC_SADDLP, UNSPEC_UADDLP): Delete.
31845         (ADALP): Likewise.
31846         (USADDLP): Likewise.
31847         * config/aarch64/predicates.md (vect_par_cnst_even_or_odd_half): Define.
31849 2023-05-30  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
31851         * config/aarch64/aarch64-builtins.cc (VAR1): Move to after inclusion of
31852         aarch64-builtin-iterators.h.  Add definition to remap shadd, uhadd,
31853         srhadd, urhadd builtin codes for standard optab ones.
31854         * config/aarch64/aarch64-simd.md (<u>avg<mode>3_floor): Rename to...
31855         (<su_optab>avg<mode>3_floor): ... This.  Expand to RTL codes rather than
31856         unspec.
31857         (<u>avg<mode>3_ceil): Rename to...
31858         (<su_optab>avg<mode>3_ceil): ... This.  Expand to RTL codes rather than
31859         unspec.
31860         (aarch64_<su>hsub<mode>): New define_expand.
31861         (aarch64_<sur>h<addsub><mode><vczle><vczbe>): Split into...
31862         (*aarch64_<su>h<ADDSUB:optab><mode><vczle><vczbe>_insn): ... This...
31863         (*aarch64_<su>rhadd<mode><vczle><vczbe>_insn): ... And this.
31865 2023-05-30  Andreas Schwab  <schwab@suse.de>
31867         PR target/110036
31868         * config/riscv/riscv.cc (riscv_asan_shadow_offset): Update to
31869         match libsanitizer.
31871 2023-05-30  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
31873         * config/aarch64/aarch64-modes.def (V16HI, V8SI, V4DI, V2TI): New modes.
31874         * config/aarch64/aarch64-protos.h (aarch64_const_vec_rnd_cst_p):
31875         Declare prototype.
31876         (aarch64_const_vec_rsra_rnd_imm_p): Likewise.
31877         * config/aarch64/aarch64-simd.md (*aarch64_simd_sra<mode>): Rename to...
31878         (aarch64_<sra_op>sra_n<mode>_insn): ... This.
31879         (aarch64_<sra_op>rsra_n<mode>_insn): New define_insn.
31880         (aarch64_<sra_op>sra_n<mode>): New define_expand.
31881         (aarch64_<sra_op>rsra_n<mode>): Likewise.
31882         (aarch64_<sur>sra_n<mode>): Rename to...
31883         (aarch64_<sur>sra_ndi): ... This.
31884         * config/aarch64/aarch64.cc (aarch64_classify_vector_mode): Add
31885         any_target_p argument.
31886         (aarch64_extract_vec_duplicate_wide_int): Define.
31887         (aarch64_const_vec_rsra_rnd_imm_p): Likewise.
31888         (aarch64_const_vec_rnd_cst_p): Likewise.
31889         (aarch64_vector_mode_supported_any_target_p): Likewise.
31890         (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Likewise.
31891         * config/aarch64/iterators.md (UNSPEC_SRSRA, UNSPEC_URSRA): Delete.
31892         (VSRA): Adjust for the above.
31893         (sur): Likewise.
31894         (V2XWIDE): New mode_attr.
31895         (vec_or_offset): Likewise.
31896         (SHIFTEXTEND): Likewise.
31897         * config/aarch64/predicates.md (aarch64_simd_rsra_rnd_imm_vec): New
31898         predicate.
31899         * doc/tm.texi (TARGET_VECTOR_MODE_SUPPORTED_P): Adjust description to
31900         clarify that it applies to current target options.
31901         (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Document.
31902         * doc/tm.texi.in: Regenerate.
31903         * stor-layout.cc (mode_for_vector): Check
31904         vector_mode_supported_any_target_p when iterating through vector modes.
31905         * target.def (TARGET_VECTOR_MODE_SUPPORTED_P): Adjust description to
31906         clarify that it applies to current target options.
31907         (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Define.
31909 2023-05-30  Lili Cui  <lili.cui@intel.com>
31911         PR tree-optimization/98350
31912         * tree-ssa-reassoc.cc
31913         (rewrite_expr_tree_parallel): Rewrite this function.
31914         (rank_ops_for_fma): New.
31915         (reassociate_bb): Handle new function.
31917 2023-05-30  Uros Bizjak  <ubizjak@gmail.com>
31919         * rtl.h (rtx_addr_can_trap_p): Change return type from int to bool.
31920         (rtx_unstable_p): Ditto.
31921         (reg_mentioned_p): Ditto.
31922         (reg_referenced_p): Ditto.
31923         (reg_used_between_p): Ditto.
31924         (reg_set_between_p): Ditto.
31925         (modified_between_p): Ditto.
31926         (no_labels_between_p): Ditto.
31927         (modified_in_p): Ditto.
31928         (reg_set_p): Ditto.
31929         (multiple_sets): Ditto.
31930         (set_noop_p): Ditto.
31931         (noop_move_p): Ditto.
31932         (reg_overlap_mentioned_p): Ditto.
31933         (dead_or_set_p): Ditto.
31934         (dead_or_set_regno_p): Ditto.
31935         (find_reg_fusage): Ditto.
31936         (find_regno_fusage): Ditto.
31937         (side_effects_p): Ditto.
31938         (volatile_refs_p): Ditto.
31939         (volatile_insn_p): Ditto.
31940         (may_trap_p_1): Ditto.
31941         (may_trap_p): Ditto.
31942         (may_trap_or_fault_p): Ditto.
31943         (computed_jump_p): Ditto.
31944         (auto_inc_p): Ditto.
31945         (loc_mentioned_in_p): Ditto.
31946         * rtlanal.cc (computed_jump_p_1): Adjust forward declaration.
31947         (rtx_unstable_p): Change return type from int to bool
31948         and adjust function body accordingly.
31949         (rtx_addr_can_trap_p): Ditto.
31950         (reg_mentioned_p): Ditto.
31951         (no_labels_between_p): Ditto.
31952         (reg_used_between_p): Ditto.
31953         (reg_referenced_p): Ditto.
31954         (reg_set_between_p): Ditto.
31955         (reg_set_p): Ditto.
31956         (modified_between_p): Ditto.
31957         (modified_in_p): Ditto.
31958         (multiple_sets): Ditto.
31959         (set_noop_p): Ditto.
31960         (noop_move_p): Ditto.
31961         (reg_overlap_mentioned_p): Ditto.
31962         (dead_or_set_p): Ditto.
31963         (dead_or_set_regno_p): Ditto.
31964         (find_reg_fusage): Ditto.
31965         (find_regno_fusage): Ditto.
31966         (remove_node_from_insn_list): Ditto.
31967         (volatile_insn_p): Ditto.
31968         (volatile_refs_p): Ditto.
31969         (side_effects_p): Ditto.
31970         (may_trap_p_1): Ditto.
31971         (may_trap_p): Ditto.
31972         (may_trap_or_fault_p): Ditto.
31973         (computed_jump_p): Ditto.
31974         (auto_inc_p): Ditto.
31975         (loc_mentioned_in_p): Ditto.
31976         * combine.cc (can_combine_p): Update indirect function.
31978 2023-05-30  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
31980         * config/riscv/autovec.md (<optab><mode><vconvert>2): New pattern.
31981         * config/riscv/iterators.md: New attribute.
31982         * config/riscv/vector-iterators.md: New attribute.
31984 2023-05-30  From: Juzhe-Zhong  <juzhe.zhong@rivai.ai>
31986         * config/riscv/riscv.md: Fix signed and unsigned comparison
31987         warning.
31989 2023-05-30  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
31991         * config/riscv/autovec.md (fnma<mode>4): New pattern.
31992         (*fnma<mode>): Ditto.
31994 2023-05-29  Die Li  <lidie@eswincomputing.com>
31996         * config/riscv/riscv.cc (riscv_expand_conditional_move_onesided):
31997         Delete.
31998         (riscv_expand_conditional_move):  Reuse the TARGET_SFB_ALU expand
31999         process for TARGET_XTHEADCONDMOV
32001 2023-05-29  Uros Bizjak  <ubizjak@gmail.com>
32003         PR target/110021
32004         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2): Also require
32005         TARGET_AVX512BW to generate truncv16hiv16qi2.
32007 2023-05-29  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
32009         * config/riscv/riscv.md (and<mode>3): New expander.
32010         (*and<mode>3) New pattern.
32011         * config/riscv/predicates.md (arith_operand_or_mode_mask): New
32012         predicate.
32014 2023-05-29  Pan Li  <pan2.li@intel.com>
32016         * config/riscv/riscv-v.cc (emit_vlmax_insn): Remove unnecessary
32017         comments and rename local variables.
32018         (emit_nonvlmax_insn): Diito.
32019         (emit_vlmax_merge_insn): Ditto.
32020         (emit_vlmax_cmp_insn): Ditto.
32021         (emit_vlmax_cmp_mu_insn): Ditto.
32022         (emit_scalar_move_insn): Ditto.
32024 2023-05-29  Pan Li  <pan2.li@intel.com>
32026         * config/riscv/riscv-v.cc (emit_vlmax_insn): Eliminate the
32027         magic number.
32028         (emit_nonvlmax_insn): Ditto.
32029         (emit_vlmax_merge_insn): Ditto.
32030         (emit_vlmax_cmp_insn): Ditto.
32031         (emit_vlmax_cmp_mu_insn): Ditto.
32032         (expand_vec_series): Ditto.
32034 2023-05-29  Pan Li  <pan2.li@intel.com>
32036         * config/riscv/riscv-protos.h (enum insn_type): New type.
32037         * config/riscv/riscv-v.cc (RVV_INSN_OPERANDS_MAX): New macro.
32038         (rvv_builder::can_duplicate_repeating_sequence_p): Align the referenced
32039         class member.
32040         (rvv_builder::get_merged_repeating_sequence): Ditto.
32041         (rvv_builder::repeating_sequence_use_merge_profitable_p): New function
32042         to evaluate the optimization cost.
32043         (rvv_builder::get_merge_scalar_mask): New function to get the merge
32044         mask.
32045         (emit_scalar_move_insn): New function to emit vmv.s.x.
32046         (emit_vlmax_integer_move_insn): New function to emit vlmax vmv.v.x.
32047         (emit_nonvlmax_integer_move_insn): New function to emit nonvlmax
32048         vmv.v.x.
32049         (get_repeating_sequence_dup_machine_mode): New function to get the dup
32050         machine mode.
32051         (expand_vector_init_merge_repeating_sequence): New function to perform
32052         the optimization.
32053         (expand_vec_init): Add this vector init optimization.
32054         * config/riscv/riscv.h (BITS_PER_WORD): New macro.
32056 2023-05-29  Eric Botcazou  <ebotcazou@adacore.com>
32058         * tree-ssa-loop-manip.cc (create_iv): Try harder to find a SLOC to
32059         put onto the increment when it is inserted after the position.
32061 2023-05-29  Eric Botcazou  <ebotcazou@adacore.com>
32063         * match.pd ((T)P - (T)(P + A) -> -(T) A): Avoid artificial overflow
32064         on constants.
32066 2023-05-29  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
32068         * config/riscv/riscv-vsetvl.cc (source_equal_p): Fix ICE.
32070 2023-05-29  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
32072         * config/riscv/autovec.md (fma<mode>4): New pattern.
32073         (*fma<mode>): Ditto.
32074         * config/riscv/riscv-protos.h (enum insn_type): New enum.
32075         (emit_vlmax_ternary_insn): New function.
32076         * config/riscv/riscv-v.cc (emit_vlmax_ternary_insn): Ditto.
32078 2023-05-29  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
32080         * config/riscv/vector.md: Fix vimuladd instruction bug.
32082 2023-05-29  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
32084         * config/riscv/riscv.cc (global_state_unknown_p): New function.
32085         (riscv_mode_after): Fix incorrect VXM.
32087 2023-05-29  Pan Li  <pan2.li@intel.com>
32089         * common/config/riscv/riscv-common.cc:
32090         (riscv_implied_info): Add zvfhmin item.
32091         (riscv_ext_version_table): Ditto.
32092         (riscv_ext_flag_table): Ditto.
32093         * config/riscv/riscv-opts.h (MASK_ZVFHMIN): New macro.
32094         (TARGET_ZFHMIN): Align indent.
32095         (TARGET_ZFH): Ditto.
32096         (TARGET_ZVFHMIN): New macro.
32098 2023-05-27  liuhongt  <hongtao.liu@intel.com>
32100         PR target/100711
32101         * config/i386/sse.md (*andnot<mode>3): Extend below splitter
32102         to VI_AVX2 to cover more modes.
32104 2023-05-27  liuhongt  <hongtao.liu@intel.com>
32106         * config/i386/x86-tune.def (X86_TUNE_AVOID_FALSE_DEP_FOR_BMI):
32107         Remove ATOM and ICELAKE(and later) core processors.
32109 2023-05-26  Robin Dapp  <rdapp@ventanamicro.com>
32111         * config/riscv/autovec.md (<optab><mode>2): Add vneg/vnot.
32112         (abs<mode>2): Add.
32113         * config/riscv/riscv-protos.h (emit_vlmax_masked_mu_insn):
32114         Declare.
32115         * config/riscv/riscv-v.cc (emit_vlmax_masked_mu_insn): New
32116         function.
32118 2023-05-26  Robin Dapp  <rdapp@ventanamicro.com>
32119             Juzhe Zhong  <juzhe.zhong@rivai.ai>
32121         * config/riscv/autovec.md (<optab><v_double_trunc><mode>2): New
32122         expander.
32123         (<optab><v_quad_trunc><mode>2): Dito.
32124         (<optab><v_oct_trunc><mode>2): Dito.
32125         (trunc<mode><v_double_trunc>2): Dito.
32126         (trunc<mode><v_quad_trunc>2): Dito.
32127         (trunc<mode><v_oct_trunc>2): Dito.
32128         * config/riscv/riscv-protos.h (vectorize_related_mode): Define.
32129         (autovectorize_vector_modes): Define.
32130         * config/riscv/riscv-v.cc (vectorize_related_mode): Implement
32131         hook.
32132         (autovectorize_vector_modes): Implement hook.
32133         * config/riscv/riscv.cc (riscv_autovectorize_vector_modes):
32134         Implement target hook.
32135         (riscv_vectorize_related_mode): Implement target hook.
32136         (TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_MODES): Define.
32137         (TARGET_VECTORIZE_RELATED_MODE): Define.
32138         * config/riscv/vector-iterators.md: Add lowercase versions of
32139         mode_attr iterators.
32141 2023-05-26  Andrew Stubbs  <ams@codesourcery.com>
32142             Tobias Burnus  <tobias@codesourcery.com>
32144         * config/gcn/gcn-hsa.h (XNACKOPT): New macro.
32145         (ASM_SPEC): Use XNACKOPT.
32146         * config/gcn/gcn-opts.h (enum sram_ecc_type): Rename to ...
32147         (enum hsaco_attr_type): ... this, and generalize the names.
32148         (TARGET_XNACK): New macro.
32149         * config/gcn/gcn.cc (gcn_option_override): Update to sorry for all
32150         but -mxnack=off.
32151         (output_file_start): Update xnack handling.
32152         (gcn_hsa_declare_function_name): Use TARGET_XNACK.
32153         * config/gcn/gcn.opt (-mxnack): Add the "on/off/any" syntax.
32154         (sram_ecc_type): Rename to ...
32155         (hsaco_attr_type: ... this.)
32156         * config/gcn/mkoffload.cc (SET_XNACK_ANY): New macro.
32157         (TEST_XNACK): Delete.
32158         (TEST_XNACK_ANY): New macro.
32159         (TEST_XNACK_ON): New macro.
32160         (main): Support the new -mxnack=on/off/any syntax.
32161         * doc/invoke.texi (-mxnack): Update for new syntax.
32163 2023-05-26  Andrew Pinski  <apinski@marvell.com>
32165         * genmatch.cc (emit_debug_printf): New function.
32166         (dt_simplify::gen_1): Emit printf into the code
32167         before the `return true` or returning the folded result
32168         instead of emitting it always.
32170 2023-05-26  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
32172         * config/xtensa/xtensa-protos.h
32173         (xtensa_expand_block_set_unrolled_loop,
32174         xtensa_expand_block_set_small_loop): Remove.
32175         (xtensa_expand_block_set): New prototype.
32176         * config/xtensa/xtensa.cc
32177         (xtensa_expand_block_set_libcall): New subfunction.
32178         (xtensa_expand_block_set_unrolled_loop,
32179         xtensa_expand_block_set_small_loop): Rewrite as subfunctions.
32180         (xtensa_expand_block_set): New function that calls the above
32181         subfunctions.
32182         * config/xtensa/xtensa.md (memsetsi): Change to invoke only
32183         xtensa_expand_block_set().
32185 2023-05-26  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
32187         * config/xtensa/xtensa-protos.h (xtensa_m1_or_1_thru_15):
32188         New prototype.
32189         * config/xtensa/xtensa.cc (xtensa_m1_or_1_thru_15):
32190         New function.
32191         * config/xtensa/constraints.md (O):
32192         Change to use the above function.
32193         * config/xtensa/xtensa.md (*subsi3_from_const):
32194         New insn_and_split pattern.
32196 2023-05-26  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
32198         * config/xtensa/xtensa.md (*extzvsi-1bit_ashlsi3):
32199         Retract excessive line folding, and correct the value of
32200         the "length" insn attribute related to TARGET_DENSITY.
32201         (*extzvsi-1bit_addsubx): Ditto.
32203 2023-05-26  Uros Bizjak  <ubizjak@gmail.com>
32205         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi):
32206         Do not disable call to ix86_expand_vecop_qihi2.
32208 2023-05-26  liuhongt  <hongtao.liu@intel.com>
32210         PR target/109610
32211         PR target/109858
32212         * ira-costs.cc (scan_one_insn): Only use NO_REGS in cost
32213         calculation when !hard_regno_mode_ok for GENERAL_REGS and
32214         mode, otherwise still use GENERAL_REGS.
32216 2023-05-26  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
32218         * config/riscv/riscv.cc (vector_zero_call_used_regs): Add
32219         explict VL and drop VL in ops.
32221 2023-05-25  Jin Ma  <jinma@linux.alibaba.com>
32223         * sched-deps.cc (sched_macro_fuse_insns): Insns should not be fusion
32224         in different BB blocks.
32226 2023-05-25  Uros Bizjak  <ubizjak@gmail.com>
32228         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
32229         Rewrite to expand to 2x-wider (e.g. V16QI -> V16HImode)
32230         instructions when available.  Emulate truncation via
32231         ix86_expand_vec_perm_const_1 when native truncate insn
32232         is not available.
32233         (ix86_expand_vecop_qihi_partial) <case MULT>: Use pmovzx
32234         when available.  Trivially rename some variables.
32235         (ix86_expand_vecop_qihi): Unconditionally call ix86_expand_vecop_qihi2.
32236         * config/i386/i386.cc (ix86_multiplication_cost): Rewrite cost
32237         calculation of V*QImode emulations to account for generation of
32238         2x-wider mode instructions.
32239         (ix86_shift_rotate_cost): Update cost calculation of V*QImode
32240         emulations to account for generation of 2x-wider mode instructions.
32242 2023-05-25  Georg-Johann Lay  <avr@gjlay.de>
32244         PR target/104327
32245         * config/avr/avr.cc (avr_can_inline_p): New static function.
32246         (TARGET_CAN_INLINE_P): Define to that function.
32248 2023-05-25  Georg-Johann Lay  <avr@gjlay.de>
32250         PR target/82931
32251         * config/avr/avr.md (*movbitqi.0): Rename to *movbit<mode>.0-6.
32252         Handle any bit position and use mode QISI.
32253         * config/avr/avr.cc (avr_rtx_costs_1) [IOR]: Return a cost
32254         of 2 insns for bit-transfer of respective style.
32256 2023-05-25  Christophe Lyon  <christophe.lyon@linaro.org>
32258         * config/arm/iterators.md (MVE_6): Remove.
32259         * config/arm/mve.md: Replace MVE_6 with MVE_5.
32261 2023-05-25  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
32262             Richard Sandiford  <richard.sandiford@arm.com>
32264         * tree-vect-loop-manip.cc (vect_adjust_loop_lens_control): New
32265         function.
32266         (vect_set_loop_controls_directly): Add decrement IV support.
32267         (vect_set_loop_condition_partial_vectors): Ditto.
32268         * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): New
32269         variable.
32270         * tree-vectorizer.h (LOOP_VINFO_USING_DECREMENTING_IV_P): New
32271         macro.
32273 2023-05-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
32275         PR target/99195
32276         * config/aarch64/aarch64-simd.md (aarch64_fcadd<rot><mode>): Rename to...
32277         (aarch64_fcadd<rot><mode><vczle><vczbe>): ... This.
32278         Fix canonicalization of PLUS operands.
32279         (aarch64_fcmla<rot><mode>): Rename to...
32280         (aarch64_fcmla<rot><mode><vczle><vczbe>): ... This.
32281         Fix canonicalization of PLUS operands.
32282         (aarch64_fcmla_lane<rot><mode>): Rename to...
32283         (aarch64_fcmla_lane<rot><mode><vczle><vczbe>): ... This.
32284         Fix canonicalization of PLUS operands.
32285         (aarch64_fcmla_laneq<rot>v4hf): Rename to...
32286         (aarch64_fcmla_laneq<rot>v4hf<vczle><vczbe>): ... This.
32287         Fix canonicalization of PLUS operands.
32288         (aarch64_fcmlaq_lane<rot><mode>): Fix canonicalization of PLUS operands.
32290 2023-05-25  Chris Sidebottom  <chris.sidebottom@arm.com>
32292         * config/arm/arm.md (rbitsi2): Rename to...
32293         (arm_rbit): ... This.
32294         (ctzsi2): Adjust for the above.
32295         (arm_rev16si2): Convert to define_expand.
32296         (arm_rev16si2_alt1): New pattern.
32297         (arm_rev16si2_alt): Rename to...
32298         (*arm_rev16si2_alt2): ... This.
32299         * config/arm/arm_acle.h (__ror, __rorl, __rorll, __clz, __clzl, __clzll,
32300         __cls, __clsl, __clsll, __revsh, __rev, __revl, __revll, __rev16,
32301         __rev16l, __rev16ll, __rbit, __rbitl, __rbitll): Define intrinsics.
32302         * config/arm/arm_acle_builtins.def (rbit, rev16si2): Define builtins.
32304 2023-05-25  Alex Coplan  <alex.coplan@arm.com>
32306         PR target/109800
32307         * config/arm/arm.md (movdf): Generate temporary pseudo in DImode
32308         instead of DFmode.
32309         * config/arm/vfp.md (no_literal_pool_df_immediate): Rather than punning an
32310         lvalue DFmode pseudo into DImode, use a DImode pseudo and pun it into
32311         DFmode as an rvalue.
32313 2023-05-25  Richard Biener  <rguenther@suse.de>
32315         PR target/109955
32316         * tree-vect-stmts.cc (vectorizable_condition): For
32317         embedded comparisons also handle the case when the target
32318         only provides vec_cmp and vcond_mask.
32320 2023-05-25  Claudiu Zissulescu  <claziss@gmail.com>
32322         * config/arc/arc.cc (arc_call_tls_get_addr): Simplify access using
32323         TLS Local Dynamic.
32325 2023-05-25  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
32327         * config/aarch64/aarch64.cc (scalar_move_insn_p): New function.
32328         (seq_cost_ignoring_scalar_moves): Likewise.
32329         (aarch64_expand_vector_init): Call seq_cost_ignoring_scalar_moves.
32331 2023-05-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
32333         * config/aarch64/arm_neon.h (vcage_f64): Reimplement with builtins.
32334         (vcage_f32): Likewise.
32335         (vcages_f32): Likewise.
32336         (vcageq_f32): Likewise.
32337         (vcaged_f64): Likewise.
32338         (vcageq_f64): Likewise.
32339         (vcagts_f32): Likewise.
32340         (vcagt_f32): Likewise.
32341         (vcagt_f64): Likewise.
32342         (vcagtq_f32): Likewise.
32343         (vcagtd_f64): Likewise.
32344         (vcagtq_f64): Likewise.
32345         (vcale_f32): Likewise.
32346         (vcale_f64): Likewise.
32347         (vcaled_f64): Likewise.
32348         (vcales_f32): Likewise.
32349         (vcaleq_f32): Likewise.
32350         (vcaleq_f64): Likewise.
32351         (vcalt_f32): Likewise.
32352         (vcalt_f64): Likewise.
32353         (vcaltd_f64): Likewise.
32354         (vcaltq_f32): Likewise.
32355         (vcaltq_f64): Likewise.
32356         (vcalts_f32): Likewise.
32358 2023-05-25  Hu, Lin1  <lin1.hu@intel.com>
32360         PR target/109173
32361         PR target/109174
32362         * config/i386/avx512bwintrin.h (_mm512_srli_epi16): Change type from
32363         int to const int or const int to const unsigned int.
32364         (_mm512_mask_srli_epi16): Ditto.
32365         (_mm512_slli_epi16): Ditto.
32366         (_mm512_mask_slli_epi16): Ditto.
32367         (_mm512_maskz_slli_epi16): Ditto.
32368         (_mm512_srai_epi16): Ditto.
32369         (_mm512_mask_srai_epi16): Ditto.
32370         (_mm512_maskz_srai_epi16): Ditto.
32371         * config/i386/avx512fintrin.h (_mm512_slli_epi64): Ditto.
32372         (_mm512_mask_slli_epi64): Ditto.
32373         (_mm512_maskz_slli_epi64): Ditto.
32374         (_mm512_srli_epi64): Ditto.
32375         (_mm512_mask_srli_epi64): Ditto.
32376         (_mm512_maskz_srli_epi64): Ditto.
32377         (_mm512_srai_epi64): Ditto.
32378         (_mm512_mask_srai_epi64): Ditto.
32379         (_mm512_maskz_srai_epi64): Ditto.
32380         (_mm512_slli_epi32): Ditto.
32381         (_mm512_mask_slli_epi32): Ditto.
32382         (_mm512_maskz_slli_epi32): Ditto.
32383         (_mm512_srli_epi32): Ditto.
32384         (_mm512_mask_srli_epi32): Ditto.
32385         (_mm512_maskz_srli_epi32): Ditto.
32386         (_mm512_srai_epi32): Ditto.
32387         (_mm512_mask_srai_epi32): Ditto.
32388         (_mm512_maskz_srai_epi32): Ditto.
32389         * config/i386/avx512vlbwintrin.h (_mm256_mask_srai_epi16): Ditto.
32390         (_mm256_maskz_srai_epi16): Ditto.
32391         (_mm_mask_srai_epi16): Ditto.
32392         (_mm_maskz_srai_epi16): Ditto.
32393         (_mm256_mask_slli_epi16): Ditto.
32394         (_mm256_maskz_slli_epi16): Ditto.
32395         (_mm_mask_slli_epi16): Ditto.
32396         (_mm_maskz_slli_epi16): Ditto.
32397         (_mm_maskz_srli_epi16): Ditto.
32398         * config/i386/avx512vlintrin.h (_mm256_mask_srli_epi32): Ditto.
32399         (_mm256_maskz_srli_epi32): Ditto.
32400         (_mm_mask_srli_epi32): Ditto.
32401         (_mm_maskz_srli_epi32): Ditto.
32402         (_mm256_mask_srli_epi64): Ditto.
32403         (_mm256_maskz_srli_epi64): Ditto.
32404         (_mm_mask_srli_epi64): Ditto.
32405         (_mm_maskz_srli_epi64): Ditto.
32406         (_mm256_mask_srai_epi32): Ditto.
32407         (_mm256_maskz_srai_epi32): Ditto.
32408         (_mm_mask_srai_epi32): Ditto.
32409         (_mm_maskz_srai_epi32): Ditto.
32410         (_mm256_srai_epi64): Ditto.
32411         (_mm256_mask_srai_epi64): Ditto.
32412         (_mm256_maskz_srai_epi64): Ditto.
32413         (_mm_srai_epi64): Ditto.
32414         (_mm_mask_srai_epi64): Ditto.
32415         (_mm_maskz_srai_epi64): Ditto.
32416         (_mm_mask_slli_epi32): Ditto.
32417         (_mm_maskz_slli_epi32): Ditto.
32418         (_mm_mask_slli_epi64): Ditto.
32419         (_mm_maskz_slli_epi64): Ditto.
32420         (_mm256_mask_slli_epi32): Ditto.
32421         (_mm256_maskz_slli_epi32): Ditto.
32422         (_mm256_mask_slli_epi64): Ditto.
32423         (_mm256_maskz_slli_epi64): Ditto.
32425 2023-05-25  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
32427         * config/riscv/vector.md: Remove FRM_REGNUM dependency in rtz
32428         instructions.
32430 2023-05-25  Aldy Hernandez  <aldyh@redhat.com>
32432         * data-streamer-in.cc (streamer_read_value_range): Handle NANs.
32433         * data-streamer-out.cc (streamer_write_vrange): Same.
32434         * value-range.h (class vrange): Make streamer_write_vrange a friend.
32436 2023-05-25  Aldy Hernandez  <aldyh@redhat.com>
32438         * value-query.cc (range_query::get_tree_range): Set NAN directly
32439         if necessary.
32440         * value-range.cc (frange::set): Assert that bounds are not NAN.
32442 2023-05-25  Aldy Hernandez  <aldyh@redhat.com>
32444         * value-range.cc (add_vrange): Handle known NANs.
32446 2023-05-25  Aldy Hernandez  <aldyh@redhat.com>
32448         * value-range.h (frange::set_nan): New.
32450 2023-05-25  Alexandre Oliva  <oliva@adacore.com>
32452         PR target/100106
32453         * emit-rtl.cc (validate_subreg): Reject a SUBREG of a MEM that
32454         requires stricter alignment than MEM's.
32456 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
32458         PR tree-optimization/107822
32459         PR tree-optimization/107986
32460         * Makefile.in (OBJS): Add gimple-range-phi.o.
32461         * gimple-range-cache.h (ranger_cache::m_estimate): New
32462         phi_analyzer pointer member.
32463         * gimple-range-fold.cc (fold_using_range::range_of_phi): Use
32464         phi_analyzer if no loop info is available.
32465         * gimple-range-phi.cc: New file.
32466         * gimple-range-phi.h: New file.
32467         * tree-vrp.cc (execute_ranger_vrp): Utililze a phi_analyzer.
32469 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
32471         * gimple-range-fold.cc (fur_list::fur_list): Add range_query param
32472         to contructors.
32473         (fold_range): Add range_query parameter.
32474         (fur_relation::fur_relation): New.
32475         (fur_relation::trio): New.
32476         (fur_relation::register_relation): New.
32477         (fold_relations): New.
32478         * gimple-range-fold.h (fold_range): Adjust prototypes.
32479         (fold_relations): New.
32481 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
32483         * gimple-range-cache.cc (ssa_cache::range_of_expr): New.
32484         * gimple-range-cache.h (class ssa_cache): Inherit from range_query.
32485         (ranger_cache::const_query): New.
32486         * gimple-range.cc (gimple_ranger::const_query): New.
32487         * gimple-range.h (gimple_ranger::const_query): New prototype.
32489 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
32491         * gimple-range-cache.cc (ssa_cache::dump): Use get_range.
32492         (ssa_cache::dump_range_query): Delete.
32493         (ssa_lazy_cache::dump_range_query): Delete.
32494         (ssa_lazy_cache::get_range): Move from header file.
32495         (ssa_lazy_cache::clear_range): ditto.
32496         (ssa_lazy_cache::clear): Ditto.
32497         * gimple-range-cache.h (class ssa_cache): Virtualize.
32498         (class ssa_lazy_cache): Inherit and virtualize.
32500 2023-05-24  Aldy Hernandez  <aldyh@redhat.com>
32502         * value-range.h (vrange::kind): Remove.
32504 2023-05-24  Roger Sayle  <roger@nextmovesoftware.com>
32506         PR middle-end/109840
32507         * match.pd <popcount optimizations>: Preserve zero-extension when
32508         optimizing popcount((T)bswap(x)) and popcount((T)rotate(x,y)) as
32509         popcount((T)x), so the popcount's argument keeps the same type.
32510         <parity optimizations>:  Likewise preserve extensions when
32511         simplifying parity((T)bswap(x)) and parity((T)rotate(x,y)) as
32512         parity((T)x), so that the parity's argument type is the same.
32514 2023-05-24  Aldy Hernandez  <aldyh@redhat.com>
32516         * ipa-cp.cc (ipa_value_range_from_jfunc): Use new ipa_vr API.
32517         (ipcp_store_vr_results): Same.
32518         * ipa-prop.cc (ipa_vr::ipa_vr): New.
32519         (ipa_vr::get_vrange): New.
32520         (ipa_vr::set_unknown): New.
32521         (ipa_vr::streamer_read): New.
32522         (ipa_vr::streamer_write): New.
32523         (write_ipcp_transformation_info): Use new ipa_vr API.
32524         (read_ipcp_transformation_info): Same.
32525         (ipa_vr::nonzero_p): Delete.
32526         (ipcp_update_vr): Use new ipa_vr API.
32527         * ipa-prop.h (class ipa_vr): Provide an API and hide internals.
32528         * ipa-sra.cc (zap_useless_ipcp_results): Use new ipa_vr API.
32530 2023-05-24  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
32532         * config/mcore/mcore.cc (output_inline_const) Make buffer smaller to
32533         silence overflow warnings later on.
32535 2023-05-24  Uros Bizjak  <ubizjak@gmail.com>
32537         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
32538         Remove handling of V8QImode.
32539         * config/i386/mmx.md (v<insn>v8qi3): Move from sse.md.
32540         Call ix86_expand_vecop_qihi_partial.  Enable for TARGET_MMX_WITH_SSE.
32541         (v<insn>v4qi3): Ditto.
32542         * config/i386/sse.md (v<insn>v8qi3): Remove.
32544 2023-05-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
32546         PR target/99195
32547         * config/aarch64/aarch64-simd.md (aarch64_simd_lshr<mode>): Rename to...
32548         (aarch64_simd_lshr<mode><vczle><vczbe>): ... This.
32549         (aarch64_simd_ashr<mode>): Rename to...
32550         (aarch64_simd_ashr<mode><vczle><vczbe>): ... This.
32551         (aarch64_simd_imm_shl<mode>): Rename to...
32552         (aarch64_simd_imm_shl<mode><vczle><vczbe>): ... This.
32553         (aarch64_simd_reg_sshl<mode>): Rename to...
32554         (aarch64_simd_reg_sshl<mode><vczle><vczbe>): ... This.
32555         (aarch64_simd_reg_shl<mode>_unsigned): Rename to...
32556         (aarch64_simd_reg_shl<mode>_unsigned<vczle><vczbe>): ... This.
32557         (aarch64_simd_reg_shl<mode>_signed): Rename to...
32558         (aarch64_simd_reg_shl<mode>_signed<vczle><vczbe>): ... This.
32559         (vec_shr_<mode>): Rename to...
32560         (vec_shr_<mode><vczle><vczbe>): ... This.
32561         (aarch64_<sur>shl<mode>): Rename to...
32562         (aarch64_<sur>shl<mode><vczle><vczbe>): ... This.
32563         (aarch64_<sur>q<r>shl<mode>): Rename to...
32564         (aarch64_<sur>q<r>shl<mode><vczle><vczbe>): ... This.
32566 2023-05-24  Richard Biener  <rguenther@suse.de>
32568         PR target/109944
32569         * config/i386/i386-expand.cc (ix86_expand_vector_init_general):
32570         Perform final vector composition using
32571         ix86_expand_vector_init_general instead of setting
32572         the highpart and lowpart which causes spilling.
32574 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
32576         PR tree-optimization/109695
32577         * gimple-range-cache.cc (ranger_cache::get_global_range): Add
32578         changed param.
32579         * gimple-range-cache.h (ranger_cache::get_global_range): Ditto.
32580         * gimple-range.cc (gimple_ranger::range_of_stmt): Pass changed
32581         flag to set_global_range.
32582         (gimple_ranger::prefill_stmt_dependencies): Ditto.
32584 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
32586         PR tree-optimization/109695
32587         * gimple-range-cache.cc (temporal_cache::temporal_value): Return
32588         a positive int.
32589         (temporal_cache::current_p): Check always_current method.
32590         (temporal_cache::set_always_current): Add param and set value
32591         appropriately.
32592         (temporal_cache::always_current_p): New.
32593         (ranger_cache::get_global_range): Adjust.
32594         (ranger_cache::set_global_range): set always current first.
32596 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
32598         PR tree-optimization/109695
32599         * gimple-range-cache.cc (ranger_cache::get_global_range): Call
32600         fold_range with global query to choose an initial value.
32602 2023-05-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
32604         * config/riscv/riscv-protos.h (enum frm_field_enum): Add FRM_
32605         prefix.
32607 2023-05-24  Richard Biener  <rguenther@suse.de>
32609         PR tree-optimization/109849
32610         * tree-ssa-pre.cc (do_hoist_insertion): Do not intersect
32611         expressions but take the first sets.
32613 2023-05-24  Gaius Mulley  <gaiusmod2@gmail.com>
32615         PR modula2/109952
32616         * doc/gm2.texi (High procedure function): New node.
32617         (Using): New menu entry for High procedure function.
32619 2023-05-24  Richard Sandiford  <richard.sandiford@arm.com>
32621         PR rtl-optimization/109940
32622         * early-remat.cc (postorder_index): Rename to...
32623         (rpo_index): ...this.
32624         (compare_candidates): Sort by decreasing rpo_index rather than
32625         increasing postorder_index.
32626         (early_remat::sort_candidates): Calculate the forward RPO from
32627         DF_FORWARD.
32628         (early_remat::local_phase): Follow forward RPO using DF_FORWARD,
32629         rather than DF_BACKWARD in reverse.
32631 2023-05-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
32633         PR target/109939
32634         * config/arm/arm-builtins.cc (SAT_BINOP_UNSIGNED_IMM_QUALIFIERS): Use
32635         qualifier_none for the return operand.
32637 2023-05-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
32639         * config/riscv/autovec.md (<optab><mode>3): New pattern.
32640         (one_cmpl<mode>2): Ditto.
32641         (*<optab>not<mode>): Ditto.
32642         (*n<optab><mode>): Ditto.
32643         * config/riscv/riscv-v.cc (expand_vec_cmp_float): Change to
32644         one_cmpl.
32646 2023-05-24  Kewen Lin  <linkw@linux.ibm.com>
32648         * tree-vect-slp.cc (vect_transform_slp_perm_load_1): Adjust the
32649         calculation on n_perms by considering nvectors_per_build.
32651 2023-05-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
32652             Richard Sandiford  <richard.sandiford@arm.com>
32654         * config/riscv/autovec.md (@vcond_mask_<mode><vm>): New pattern.
32655         (vec_cmp<mode><vm>): New pattern.
32656         (vec_cmpu<mode><vm>): New pattern.
32657         (vcond<V:mode><VI:mode>): New pattern.
32658         (vcondu<V:mode><VI:mode>): New pattern.
32659         * config/riscv/riscv-protos.h (enum insn_type): Add new enum.
32660         (emit_vlmax_merge_insn): New function.
32661         (emit_vlmax_cmp_insn): Ditto.
32662         (emit_vlmax_cmp_mu_insn): Ditto.
32663         (expand_vec_cmp): Ditto.
32664         (expand_vec_cmp_float): Ditto.
32665         (expand_vcond): Ditto.
32666         * config/riscv/riscv-v.cc (emit_vlmax_merge_insn): Ditto.
32667         (emit_vlmax_cmp_insn): Ditto.
32668         (emit_vlmax_cmp_mu_insn): Ditto.
32669         (get_cmp_insn_code): Ditto.
32670         (expand_vec_cmp): Ditto.
32671         (expand_vec_cmp_float): Ditto.
32672         (expand_vcond): Ditto.
32674 2023-05-24  Pan Li  <pan2.li@intel.com>
32676         * config/riscv/genrvv-type-indexer.cc (main): Add
32677         unsigned_eew*_lmul1_interpret for indexer.
32678         * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
32679         Register vuint*m1_t interpret function.
32680         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_UNSIGNED_EEW8_LMUL1_INTERPRET_OPS):
32681         New macro for vuint8m1_t.
32682         (DEF_RVV_UNSIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
32683         (DEF_RVV_UNSIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
32684         (DEF_RVV_UNSIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
32685         (vbool1_t): Add to unsigned_eew*_interpret_ops.
32686         (vbool2_t): Likewise.
32687         (vbool4_t): Likewise.
32688         (vbool8_t): Likewise.
32689         (vbool16_t): Likewise.
32690         (vbool32_t): Likewise.
32691         (vbool64_t): Likewise.
32692         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_UNSIGNED_EEW8_LMUL1_INTERPRET_OPS):
32693         New macro for vuint*m1_t.
32694         (DEF_RVV_UNSIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
32695         (DEF_RVV_UNSIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
32696         (DEF_RVV_UNSIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
32697         (required_extensions_p): Add vuint*m1_t interpret case.
32698         * config/riscv/riscv-vector-builtins.def (unsigned_eew8_lmul1_interpret):
32699         Add vuint*m1_t interpret to base type.
32700         (unsigned_eew16_lmul1_interpret): Likewise.
32701         (unsigned_eew32_lmul1_interpret): Likewise.
32702         (unsigned_eew64_lmul1_interpret): Likewise.
32704 2023-05-24  Pan Li  <pan2.li@intel.com>
32706         * config/riscv/genrvv-type-indexer.cc (EEW_SIZE_LIST): New macro
32707         for the eew size list.
32708         (LMUL1_LOG2): New macro for the log2 value of lmul=1.
32709         (main): Add signed_eew*_lmul1_interpret for indexer.
32710         * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
32711         Register vint*m1_t interpret function.
32712         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_SIGNED_EEW8_LMUL1_INTERPRET_OPS):
32713         New macro for vint8m1_t.
32714         (DEF_RVV_SIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
32715         (DEF_RVV_SIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
32716         (DEF_RVV_SIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
32717         (vbool1_t): Add to signed_eew*_interpret_ops.
32718         (vbool2_t): Likewise.
32719         (vbool4_t): Likewise.
32720         (vbool8_t): Likewise.
32721         (vbool16_t): Likewise.
32722         (vbool32_t): Likewise.
32723         (vbool64_t): Likewise.
32724         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_SIGNED_EEW8_LMUL1_INTERPRET_OPS):
32725         New macro for vint*m1_t.
32726         (DEF_RVV_SIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
32727         (DEF_RVV_SIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
32728         (DEF_RVV_SIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
32729         (required_extensions_p): Add vint8m1_t interpret case.
32730         * config/riscv/riscv-vector-builtins.def (signed_eew8_lmul1_interpret):
32731         Add vint*m1_t interpret to base type.
32732         (signed_eew16_lmul1_interpret): Likewise.
32733         (signed_eew32_lmul1_interpret): Likewise.
32734         (signed_eew64_lmul1_interpret): Likewise.
32736 2023-05-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
32738         * config/riscv/autovec.md: Adjust for new interface.
32739         * config/riscv/riscv-protos.h (emit_vlmax_insn): Add VL operand.
32740         (emit_nonvlmax_insn): Add AVL operand.
32741         * config/riscv/riscv-v.cc (emit_vlmax_insn): Add VL operand.
32742         (emit_nonvlmax_insn): Add AVL operand.
32743         (sew64_scalar_helper): Adjust for new interface.
32744         (expand_tuple_move): Ditto.
32745         * config/riscv/vector.md: Ditto.
32747 2023-05-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
32749         * config/riscv/riscv-v.cc (expand_vec_series): Remove magic number.
32750         (expand_const_vector): Ditto.
32751         (legitimize_move): Ditto.
32752         (sew64_scalar_helper): Ditto.
32753         (expand_tuple_move): Ditto.
32754         (expand_vector_init_insert_elems): Ditto.
32755         * config/riscv/riscv.cc (vector_zero_call_used_regs): Ditto.
32757 2023-05-24  liuhongt  <hongtao.liu@intel.com>
32759         PR target/109900
32760         * config/i386/i386.cc (ix86_gimple_fold_builtin): Fold
32761         _mm{,256,512}_abs_{epi8,epi16,epi32,epi64} and
32762         _mm_abs_{pi8,pi16,pi32} into gimple ABS_EXPR.
32763         (ix86_masked_all_ones): Handle 64-bit mask.
32764         * config/i386/i386-builtin.def: Replace icode of related
32765         non-mask simd abs builtins with CODE_FOR_nothing.
32767 2023-05-23  Martin Uecker  <uecker@tugraz.at>
32769         PR c/109450
32770         * function.cc (gimplify_parm_type): Remove function.
32771         (gimplify_parameters): Call gimplify_type_sizes.
32773 2023-05-23  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
32775         * config/xtensa/xtensa.md (*addsubx): Rename from '*addx',
32776         and change to also accept '*subx' pattern.
32777         (*subx): Remove.
32779 2023-05-23  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
32781         * config/xtensa/predicates.md (addsub_operator): New.
32782         * config/xtensa/xtensa.md (*extzvsi-1bit_ashlsi3,
32783         *extzvsi-1bit_addsubx): New insn_and_split patterns.
32784         * config/xtensa/xtensa.cc (xtensa_rtx_costs):
32785         Add a special case about ifcvt 'noce_try_cmove()' to handle
32786         constant loads that do not fit into signed 12 bits in the
32787         patterns added above.
32789 2023-05-23  Richard Biener  <rguenther@suse.de>
32791         PR tree-optimization/109747
32792         * tree-vect-slp.cc (vect_prologue_cost_for_slp): Pass down
32793         the SLP node only once to the cost hook.
32795 2023-05-23  Georg-Johann Lay  <avr@gjlay.de>
32797         * config/avr/avr.cc (avr_insn_cost): New static function.
32798         (TARGET_INSN_COST): Define to that function.
32800 2023-05-23  Richard Biener  <rguenther@suse.de>
32802         PR target/109944
32803         * config/i386/i386.cc (ix86_vector_costs::add_stmt_cost):
32804         For vector construction or splats apply GPR->XMM move
32805         costing.  QImode memory can be handled directly only
32806         with SSE4.1 pinsrb.
32808 2023-05-23  Richard Biener  <rguenther@suse.de>
32810         PR tree-optimization/108752
32811         * tree-vect-stmts.cc (vectorizable_operation): For bit
32812         operations with generic word_mode vectors do not cost
32813         an extra stmt.  For plus, minus and negate also cost the
32814         constant materialization.
32816 2023-05-23  Uros Bizjak  <ubizjak@gmail.com>
32818         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi_partial):
32819         Call ix86_expand_vec_shift_qihi_constant for shifts
32820         with constant count operand.
32821         * config/i386/i386.cc (ix86_shift_rotate_cost):
32822         Handle V4QImode and V8QImode.
32823         * config/i386/mmx.md (<insn>v8qi3): New insn pattern.
32824         (<insn>v4qi3): Ditto.
32826 2023-05-23  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
32828         * config/riscv/vector.md: Add mode.
32830 2023-05-23  Aldy Hernandez  <aldyh@redhat.com>
32832         PR tree-optimization/109934
32833         * value-range.cc (irange::invert): Remove buggy special case.
32835 2023-05-23  Richard Biener  <rguenther@suse.de>
32837         * tree-ssa-pre.cc (compute_antic_aux): Dump the correct
32838         ANTIC_OUT.
32840 2023-05-23  Richard Sandiford  <richard.sandiford@arm.com>
32842         PR target/109632
32843         * config/aarch64/aarch64.cc (aarch64_modes_tieable_p): Allow
32844         subregs between any scalars that are 64 bits or smaller.
32845         * config/aarch64/iterators.md (SUBDI_BITS): New int iterator.
32846         (bits_etype): New int attribute.
32847         * config/aarch64/aarch64.md (*insv_reg<mode>_<SUBDI_BITS>)
32848         (*aarch64_bfi<GPI:mode><ALLX:mode>_<SUBDI_BITS>): New patterns.
32849         (*aarch64_bfidi<ALLX:mode>_subreg_<SUBDI_BITS>): Likewise.
32851 2023-05-23  Richard Sandiford  <richard.sandiford@arm.com>
32853         * doc/md.texi: Document that <FOO> can be used to refer to the
32854         numerical value of an int iterator FOO.  Tweak other parts of
32855         the int iterator documentation.
32856         * read-rtl.cc (iterator_group::has_self_attr): New field.
32857         (map_attr_string): When has_self_attr is true, make <FOO>
32858         expand to the current value of iterator FOO.
32859         (initialize_iterators): Set has_self_attr for int iterators.
32861 2023-05-23  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
32863         * config/riscv/autovec.md: Refactor the framework of RVV auto-vectorization.
32864         * config/riscv/riscv-protos.h (RVV_MISC_OP_NUM): Ditto.
32865         (RVV_UNOP_NUM): New macro.
32866         (RVV_BINOP_NUM): Ditto.
32867         (legitimize_move): Refactor the framework of RVV auto-vectorization.
32868         (emit_vlmax_op): Ditto.
32869         (emit_vlmax_reg_op): Ditto.
32870         (emit_len_op): Ditto.
32871         (emit_len_binop): Ditto.
32872         (emit_vlmax_tany_many): Ditto.
32873         (emit_nonvlmax_tany_many): Ditto.
32874         (sew64_scalar_helper): Ditto.
32875         (expand_tuple_move): Ditto.
32876         * config/riscv/riscv-v.cc (emit_pred_op): Ditto.
32877         (emit_pred_binop): Ditto.
32878         (emit_vlmax_op): Ditto.
32879         (emit_vlmax_tany_many): New function.
32880         (emit_len_op): Remove.
32881         (emit_nonvlmax_tany_many): New function.
32882         (emit_vlmax_reg_op): Remove.
32883         (emit_len_binop): Ditto.
32884         (emit_index_op): Ditto.
32885         (expand_vec_series): Refactor the framework of RVV auto-vectorization.
32886         (expand_const_vector): Ditto.
32887         (legitimize_move): Ditto.
32888         (sew64_scalar_helper): Ditto.
32889         (expand_tuple_move): Ditto.
32890         (expand_vector_init_insert_elems): Ditto.
32891         * config/riscv/riscv.cc (vector_zero_call_used_regs): Ditto.
32892         * config/riscv/vector.md: Ditto.
32894 2023-05-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
32896         PR target/109855
32897         * config/aarch64/aarch64-simd.md (add_vec_concat_subst_le): Add predicate
32898         and constraint for operand 0.
32899         (add_vec_concat_subst_be): Likewise.
32901 2023-05-23  Richard Biener  <rguenther@suse.de>
32903         PR tree-optimization/109849
32904         * tree-ssa-pre.cc (do_hoist_insertion): Compute ANTIC_OUT
32905         and use that to determine what to hoist.
32907 2023-05-23  Eric Botcazou  <ebotcazou@adacore.com>
32909         * fold-const.cc (native_encode_initializer) <CONSTRUCTOR>: Apply the
32910         specific treatment for bit-fields only if they have an integral type
32911         and filter out non-integral bit-fields that do not start and end on
32912         a byte boundary.
32914 2023-05-23  Aldy Hernandez  <aldyh@redhat.com>
32916         PR tree-optimization/109920
32917         * value-range.h (RESIZABLE>::~int_range): Use delete[].
32919 2023-05-22  Uros Bizjak  <ubizjak@gmail.com>
32921         * config/i386/i386.cc (ix86_shift_rotate_cost): Correct
32922         calcuation of integer vector mode costs to reflect generated
32923         instruction sequences of different integer vector modes and
32924         different target ABIs.  Remove "speed" function argument.
32925         (ix86_rtx_costs): Update call for removed function argument.
32926         (ix86_vector_costs::add_stmt_cost): Ditto.
32928 2023-05-22  Aldy Hernandez  <aldyh@redhat.com>
32930         * value-range.h (class Value_Range): Implement set_zero,
32931         set_nonzero, and nonzero_p.
32933 2023-05-22  Uros Bizjak  <ubizjak@gmail.com>
32935         * config/i386/i386.cc (ix86_multiplication_cost): Add
32936         the cost of a memory read to the cost of V?QImode sequences.
32938 2023-05-22  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
32940         * config/riscv/riscv-v.cc: Add "m_" prefix.
32942 2023-05-22  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
32944         * tree-vect-loop.cc (vect_get_loop_len): Fix issue for
32945         multiple-rgroup of length.
32946         * tree-vect-stmts.cc (vectorizable_store): Ditto.
32947         (vectorizable_load): Ditto.
32948         * tree-vectorizer.h (vect_get_loop_len): Ditto.
32950 2023-05-22  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
32952         * config/riscv/riscv.cc (riscv_const_insns): Reorganize the
32953         codes.
32955 2023-05-22  Kewen Lin  <linkw@linux.ibm.com>
32957         * tree-vect-slp.cc (vect_transform_slp_perm_load_1): Refactor the
32958         handling for the case index == count.
32960 2023-05-21  Georg-Johann Lay  <avr@gjlay.de>
32962         PR target/90622
32963         * config/avr/avr.cc (avr_fold_builtin) [AVR_BUILTIN_INSERT_BITS]:
32964         Don't fold to XOR / AND / XOR if just one bit is copied to the
32965         same position.
32967 2023-05-21  Roger Sayle  <roger@nextmovesoftware.com>
32969         * config/nvptx/nvptx.cc (nvptx_expand_brev): Expand target
32970         builtin for bit reversal using brev instruction.
32971         (enum nvptx_builtins): Add NVPTX_BUILTIN_BREV and
32972         NVPTX_BUILTIN_BREVLL.
32973         (nvptx_init_builtins): Define "brev" and "brevll".
32974         (nvptx_expand_builtin): Expand NVPTX_BUILTIN_BREV and
32975         NVPTX_BUILTIN_BREVLL via nvptx_expand_brev function.
32976         * doc/extend.texi (Nvidia PTX Builtin-in Functions): New
32977         section, document __builtin_nvptx_brev{,ll}.
32979 2023-05-21  Jakub Jelinek  <jakub@redhat.com>
32981         PR tree-optimization/109505
32982         * match.pd ((x | CST1) & CST2 -> (x & CST2) | (CST1 & CST2),
32983         Combine successive equal operations with constants,
32984         (A +- CST1) +- CST2 -> A + CST3, (CST1 - A) +- CST2 -> CST3 - A,
32985         CST1 - (CST2 - A) -> CST3 + A): Use ! on ops with 2 CONSTANT_CLASS_P
32986         operands.
32988 2023-05-21  Andrew Pinski  <apinski@marvell.com>
32990         * expr.cc (expand_single_bit_test): Correct bitpos for big-endian.
32992 2023-05-21  Pan Li  <pan2.li@intel.com>
32994         * config/riscv/genrvv-type-indexer.cc (BOOL_SIZE_LIST): Add the
32995         rest bool size, aka 2, 4, 8, 16, 32, 64.
32996         * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
32997         Register vbool[2|4|8|16|32|64] interpret function.
32998         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_BOOL2_INTERPRET_OPS):
32999         New macro for vbool2_t.
33000         (DEF_RVV_BOOL4_INTERPRET_OPS): Likewise.
33001         (DEF_RVV_BOOL8_INTERPRET_OPS): Likewise.
33002         (DEF_RVV_BOOL16_INTERPRET_OPS): Likewise.
33003         (DEF_RVV_BOOL32_INTERPRET_OPS): Likewise.
33004         (DEF_RVV_BOOL64_INTERPRET_OPS): Likewise.
33005         (vint8m1_t): Add the type to bool[2|4|8|16|32|64]_interpret_ops.
33006         (vint16m1_t): Likewise.
33007         (vint32m1_t): Likewise.
33008         (vint64m1_t): Likewise.
33009         (vuint8m1_t): Likewise.
33010         (vuint16m1_t): Likewise.
33011         (vuint32m1_t): Likewise.
33012         (vuint64m1_t): Likewise.
33013         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_BOOL2_INTERPRET_OPS):
33014         New macro for vbool2_t.
33015         (DEF_RVV_BOOL4_INTERPRET_OPS): Likewise.
33016         (DEF_RVV_BOOL8_INTERPRET_OPS): Likewise.
33017         (DEF_RVV_BOOL16_INTERPRET_OPS): Likewise.
33018         (DEF_RVV_BOOL32_INTERPRET_OPS): Likewise.
33019         (DEF_RVV_BOOL64_INTERPRET_OPS): Likewise.
33020         (required_extensions_p): Add vbool[2|4|8|16|32|64] interpret case.
33021         * config/riscv/riscv-vector-builtins.def (bool2_interpret): Add
33022         vbool2_t interprect to base type.
33023         (bool4_interpret): Likewise.
33024         (bool8_interpret): Likewise.
33025         (bool16_interpret): Likewise.
33026         (bool32_interpret): Likewise.
33027         (bool64_interpret): Likewise.
33029 2023-05-21  Andrew Pinski  <apinski@marvell.com>
33031         PR middle-end/109919
33032         * expr.cc (expand_single_bit_test): Don't use the
33033         target for expand_expr.
33035 2023-05-20  Gerald Pfeifer  <gerald@pfeifer.com>
33037         * doc/install.texi (Specific): Remove de facto empty alpha*-*-*
33038         section.
33040 2023-05-20  Pan Li  <pan2.li@intel.com>
33042         * mode-switching.cc (entity_map): Initialize the array to zero.
33043         (bb_info): Ditto.
33045 2023-05-20  Triffid Hunter  <triffid.hunter@gmail.com>
33047         PR target/105753
33048         * config/avr/avr.md (divmodpsi, udivmodpsi, divmodsi, udivmodsi):
33049         Remove superfluous "parallel" in insn pattern.
33050         ([u]divmod<mode>4): Tidy code.  Use gcc_unreachable() instead of
33051         printing error text to assembly.
33053 2023-05-20  Andrew Pinski  <apinski@marvell.com>
33055         * expr.cc (fold_single_bit_test): Rename to ...
33056         (expand_single_bit_test): This and expand directly.
33057         (do_store_flag): Update for the rename function.
33059 2023-05-20  Andrew Pinski  <apinski@marvell.com>
33061         * expr.cc (fold_single_bit_test): Use BIT_FIELD_REF
33062         instead of shift/and.
33064 2023-05-20  Andrew Pinski  <apinski@marvell.com>
33066         * expr.cc (fold_single_bit_test): Add an assert
33067         and simplify based on code being NE_EXPR or EQ_EXPR.
33069 2023-05-20  Andrew Pinski  <apinski@marvell.com>
33071         * expr.cc (fold_single_bit_test): Take inner and bitnum
33072         instead of arg0 and arg1. Update the code.
33073         (do_store_flag): Don't create a tree when calling
33074         fold_single_bit_test instead just call it with the bitnum
33075         and the inner tree.
33077 2023-05-20  Andrew Pinski  <apinski@marvell.com>
33079         * expr.cc (fold_single_bit_test): Use get_def_for_expr
33080         instead of checking the inner's code.
33082 2023-05-20  Andrew Pinski  <apinski@marvell.com>
33084         * expr.cc (fold_single_bit_test_into_sign_test): Inline into ...
33085         (fold_single_bit_test): This and simplify.
33087 2023-05-20  Andrew Pinski  <apinski@marvell.com>
33089         * fold-const.cc (fold_single_bit_test_into_sign_test): Move to
33090         expr.cc.
33091         (fold_single_bit_test): Likewise.
33092         * expr.cc (fold_single_bit_test_into_sign_test): Move from fold-const.cc
33093         (fold_single_bit_test): Likewise and make static.
33094         * fold-const.h (fold_single_bit_test): Remove declaration.
33096 2023-05-20  Die Li  <lidie@eswincomputing.com>
33098         * config/riscv/riscv.cc (riscv_expand_conditional_move): Fix mode
33099         checking.
33101 2023-05-20  Raphael Moreira Zinsly  <rzinsly@ventanamicro.com>
33103         * config/riscv/bitmanip.md (branch<X:mode>_bext): New split pattern.
33105 2023-05-20  Raphael Moreira Zinsly  <rzinsly@ventanamicro.com>
33107         PR target/106888
33108         * config/riscv/bitmanip.md
33109         (<bitmanip_optab>disi2): Match with any_extend.
33110         (<bitmanip_optab>disi2_sext): New pattern to match
33111         with sign extend using an ANDI instruction.
33113 2023-05-19  Nathan Sidwell  <nathan@acm.org>
33115         PR other/99451
33116         * opts.h (handle_deferred_dump_options): Declare.
33117         * opts-global.cc (handle_common_deferred_options): Do not handle
33118         dump options here.
33119         (handle_deferred_dump_options): New.
33120         * toplev.cc (toplev::main): Call it after plugin init.
33122 2023-05-19  Joern Rennecke  <joern.rennecke@embecosm.com>
33124         * config/riscv/constraints.md (DsS, DsD): Restore agreement
33125         with shiftm1 mode attribute.
33127 2023-05-19  Andrew Pinski  <apinski@marvell.com>
33129         PR driver/33980
33130         * gcc.cc (default_compilers["@c-header"]): Add %w
33131         after the --output-pch.
33133 2023-05-19  Vineet Gupta  <vineetg@rivosinc.com>
33135         * config/riscv/riscv.cc (riscv_split_integer): if loval is equal
33136         to hival, ASHIFT the corresponding regs.
33138 2023-05-19  Robin Dapp  <rdapp@ventanamicro.com>
33140         * config/riscv/riscv.cc (riscv_const_insns): Remove else.
33142 2023-05-19  Jakub Jelinek  <jakub@redhat.com>
33144         PR tree-optimization/105776
33145         * tree-ssa-math-opts.cc (arith_overflow_check_p): If cast_stmt is
33146         non-NULL, allow division statement to have a cast as single imm use
33147         rather than comparison/condition.
33148         (match_arith_overflow): In that case remove the cast stmt in addition
33149         to the division statement.
33151 2023-05-19  Jakub Jelinek  <jakub@redhat.com>
33153         PR tree-optimization/101856
33154         * tree-ssa-math-opts.cc (match_arith_overflow): Pattern detect
33155         unsigned __builtin_mul_overflow_p even when umulv4_optab doesn't
33156         support it but umul_highpart_optab does.
33158 2023-05-19  Eric Botcazou  <ebotcazou@adacore.com>
33160         * varasm.cc (output_constructor_bitfield): Call tree_to_uhwi instead
33161         of tree_to_shwi on array indices.  Minor tweaks.
33163 2023-05-18  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
33165         * alias.cc (ref_all_alias_ptr_type_p): Use _P() defines from tree.h.
33166         * attribs.cc (diag_attr_exclusions): Ditto.
33167         (decl_attributes): Ditto.
33168         (build_type_attribute_qual_variant): Ditto.
33169         * builtins.cc (fold_builtin_carg): Ditto.
33170         (fold_builtin_next_arg): Ditto.
33171         (do_mpc_arg2): Ditto.
33172         * cfgexpand.cc (expand_return): Ditto.
33173         * cgraph.h (decl_in_symtab_p): Ditto.
33174         (symtab_node::get_create): Ditto.
33175         * dwarf2out.cc (base_type_die): Ditto.
33176         (implicit_ptr_descriptor): Ditto.
33177         (gen_array_type_die): Ditto.
33178         (gen_type_die_with_usage): Ditto.
33179         (optimize_location_into_implicit_ptr): Ditto.
33180         * expr.cc (do_store_flag): Ditto.
33181         * fold-const.cc (negate_expr_p): Ditto.
33182         (fold_negate_expr_1): Ditto.
33183         (fold_convert_const): Ditto.
33184         (fold_convert_loc): Ditto.
33185         (constant_boolean_node): Ditto.
33186         (fold_binary_op_with_conditional_arg): Ditto.
33187         (build_fold_addr_expr_with_type_loc): Ditto.
33188         (fold_comparison): Ditto.
33189         (fold_checksum_tree): Ditto.
33190         (tree_unary_nonnegative_warnv_p): Ditto.
33191         (integer_valued_real_unary_p): Ditto.
33192         (fold_read_from_constant_string): Ditto.
33193         * gcc-rich-location.cc (maybe_range_label_for_tree_type_mismatch::get_text): Ditto.
33194         * gimple-expr.cc (useless_type_conversion_p): Ditto.
33195         (is_gimple_reg): Ditto.
33196         (is_gimple_asm_val): Ditto.
33197         (mark_addressable): Ditto.
33198         * gimple-expr.h (is_gimple_variable): Ditto.
33199         (virtual_operand_p): Ditto.
33200         * gimple-ssa-warn-access.cc (pass_waccess::check_dangling_stores): Ditto.
33201         * gimplify.cc (gimplify_bind_expr): Ditto.
33202         (gimplify_return_expr): Ditto.
33203         (gimple_add_padding_init_for_auto_var): Ditto.
33204         (gimplify_addr_expr): Ditto.
33205         (omp_add_variable): Ditto.
33206         (omp_notice_variable): Ditto.
33207         (omp_get_base_pointer): Ditto.
33208         (omp_strip_components_and_deref): Ditto.
33209         (omp_strip_indirections): Ditto.
33210         (omp_accumulate_sibling_list): Ditto.
33211         (omp_build_struct_sibling_lists): Ditto.
33212         (gimplify_adjust_omp_clauses_1): Ditto.
33213         (gimplify_adjust_omp_clauses): Ditto.
33214         (gimplify_omp_for): Ditto.
33215         (goa_lhs_expr_p): Ditto.
33216         (gimplify_one_sizepos): Ditto.
33217         * graphite-scop-detection.cc (scop_detection::graphite_can_represent_scev): Ditto.
33218         * ipa-devirt.cc (odr_types_equivalent_p): Ditto.
33219         * ipa-prop.cc (ipa_set_jf_constant): Ditto.
33220         (propagate_controlled_uses): Ditto.
33221         * ipa-sra.cc (type_prevails_p): Ditto.
33222         (scan_expr_access): Ditto.
33223         * optabs-tree.cc (optab_for_tree_code): Ditto.
33224         * toplev.cc (wrapup_global_declaration_1): Ditto.
33225         * trans-mem.cc (transaction_invariant_address_p): Ditto.
33226         * tree-cfg.cc (verify_types_in_gimple_reference): Ditto.
33227         (verify_gimple_comparison): Ditto.
33228         (verify_gimple_assign_binary): Ditto.
33229         (verify_gimple_assign_single): Ditto.
33230         * tree-complex.cc (get_component_ssa_name): Ditto.
33231         * tree-emutls.cc (lower_emutls_2): Ditto.
33232         * tree-inline.cc (copy_tree_body_r): Ditto.
33233         (estimate_move_cost): Ditto.
33234         (copy_decl_for_dup_finish): Ditto.
33235         * tree-nested.cc (convert_nonlocal_omp_clauses): Ditto.
33236         (note_nonlocal_vla_type): Ditto.
33237         (convert_local_omp_clauses): Ditto.
33238         (remap_vla_decls): Ditto.
33239         (fixup_vla_decls): Ditto.
33240         * tree-parloops.cc (loop_has_vector_phi_nodes): Ditto.
33241         * tree-pretty-print.cc (print_declaration): Ditto.
33242         (print_call_name): Ditto.
33243         * tree-sra.cc (compare_access_positions): Ditto.
33244         * tree-ssa-alias.cc (compare_type_sizes): Ditto.
33245         * tree-ssa-ccp.cc (get_default_value): Ditto.
33246         * tree-ssa-coalesce.cc (populate_coalesce_list_for_outofssa): Ditto.
33247         * tree-ssa-dom.cc (reduce_vector_comparison_to_scalar_comparison): Ditto.
33248         * tree-ssa-forwprop.cc (can_propagate_from): Ditto.
33249         * tree-ssa-propagate.cc (may_propagate_copy): Ditto.
33250         * tree-ssa-sccvn.cc (fully_constant_vn_reference_p): Ditto.
33251         * tree-ssa-sink.cc (statement_sink_location): Ditto.
33252         * tree-ssa-structalias.cc (type_must_have_pointers): Ditto.
33253         * tree-ssa-ter.cc (find_replaceable_in_bb): Ditto.
33254         * tree-ssa-uninit.cc (warn_uninit): Ditto.
33255         * tree-ssa.cc (maybe_rewrite_mem_ref_base): Ditto.
33256         (non_rewritable_mem_ref_base): Ditto.
33257         * tree-streamer-in.cc (lto_input_ts_type_non_common_tree_pointers): Ditto.
33258         * tree-streamer-out.cc (write_ts_type_non_common_tree_pointers): Ditto.
33259         * tree-vect-generic.cc (do_binop): Ditto.
33260         (do_cond): Ditto.
33261         * tree-vect-stmts.cc (vect_init_vector): Ditto.
33262         * tree-vector-builder.h (tree_vector_builder::note_representative): Ditto.
33263         * tree.cc (sign_mask_for): Ditto.
33264         (verify_type_variant): Ditto.
33265         (gimple_canonical_types_compatible_p): Ditto.
33266         (verify_type): Ditto.
33267         * ubsan.cc (get_ubsan_type_info_for_type): Ditto.
33268         * var-tracking.cc (prepare_call_arguments): Ditto.
33269         (vt_add_function_parameters): Ditto.
33270         * varasm.cc (decode_addr_const): Ditto.
33272 2023-05-18  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
33274         * omp-low.cc (scan_sharing_clauses): Use _P() defines from tree.h.
33275         (lower_reduction_clauses): Ditto.
33276         (lower_send_clauses): Ditto.
33277         (lower_omp_task_reductions): Ditto.
33278         * omp-oacc-neuter-broadcast.cc (install_var_field): Ditto.
33279         (worker_single_copy): Ditto.
33280         * omp-offload.cc (oacc_rewrite_var_decl): Ditto.
33281         * omp-simd-clone.cc (plausible_type_for_simd_clone): Ditto.
33283 2023-05-18  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
33285         * lto-streamer-in.cc (lto_input_var_decl_ref): Use _P defines from
33286         tree.h.
33287         (lto_read_body_or_constructor): Ditto.
33288         * lto-streamer-out.cc (tree_is_indexable): Ditto.
33289         (lto_output_var_decl_ref): Ditto.
33290         (DFS::DFS_write_tree_body): Ditto.
33291         (wrap_refs): Ditto.
33292         (write_symbol_extension_info): Ditto.
33294 2023-05-18  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
33296         * config/aarch64/aarch64.cc (aarch64_short_vector_p): Use _P
33297         defines from tree.h.
33298         (aarch64_mangle_type): Ditto.
33299         * config/alpha/alpha.cc (alpha_in_small_data_p): Ditto.
33300         (alpha_gimplify_va_arg_1): Ditto.
33301         * config/arc/arc.cc (arc_encode_section_info): Ditto.
33302         (arc_is_aux_reg_p): Ditto.
33303         (arc_is_uncached_mem_p): Ditto.
33304         (arc_handle_aux_attribute): Ditto.
33305         * config/arm/arm.cc (arm_handle_isr_attribute): Ditto.
33306         (arm_handle_cmse_nonsecure_call): Ditto.
33307         (arm_set_default_type_attributes): Ditto.
33308         (arm_is_segment_info_known): Ditto.
33309         (arm_mangle_type): Ditto.
33310         * config/arm/unknown-elf.h (IN_NAMED_SECTION_P): Ditto.
33311         * config/avr/avr.cc (avr_lookup_function_attribute1): Ditto.
33312         (avr_decl_absdata_p): Ditto.
33313         (avr_insert_attributes): Ditto.
33314         (avr_section_type_flags): Ditto.
33315         (avr_encode_section_info): Ditto.
33316         * config/bfin/bfin.cc (bfin_handle_l2_attribute): Ditto.
33317         * config/bpf/bpf.cc (bpf_core_compute): Ditto.
33318         * config/c6x/c6x.cc (c6x_in_small_data_p): Ditto.
33319         * config/csky/csky.cc (csky_handle_isr_attribute): Ditto.
33320         (csky_mangle_type): Ditto.
33321         * config/darwin-c.cc (darwin_pragma_unused): Ditto.
33322         * config/darwin.cc (is_objc_metadata): Ditto.
33323         * config/epiphany/epiphany.cc (epiphany_function_ok_for_sibcall): Ditto.
33324         * config/epiphany/epiphany.h (ROUND_TYPE_ALIGN): Ditto.
33325         * config/frv/frv.cc (frv_emit_movsi): Ditto.
33326         * config/gcn/gcn-tree.cc (gcn_lockless_update): Ditto.
33327         * config/gcn/gcn.cc (gcn_asm_output_symbol_ref): Ditto.
33328         * config/h8300/h8300.cc (h8300_encode_section_info): Ditto.
33329         * config/i386/i386-expand.cc: Ditto.
33330         * config/i386/i386.cc (type_natural_mode): Ditto.
33331         (ix86_function_arg): Ditto.
33332         (ix86_data_alignment): Ditto.
33333         (ix86_local_alignment): Ditto.
33334         (ix86_simd_clone_compute_vecsize_and_simdlen): Ditto.
33335         * config/i386/winnt-cxx.cc (i386_pe_type_dllimport_p): Ditto.
33336         (i386_pe_type_dllexport_p): Ditto.
33337         (i386_pe_adjust_class_at_definition): Ditto.
33338         * config/i386/winnt.cc (i386_pe_determine_dllimport_p): Ditto.
33339         (i386_pe_binds_local_p): Ditto.
33340         (i386_pe_section_type_flags): Ditto.
33341         * config/ia64/ia64.cc (ia64_encode_section_info): Ditto.
33342         (ia64_gimplify_va_arg): Ditto.
33343         (ia64_in_small_data_p): Ditto.
33344         * config/iq2000/iq2000.cc (iq2000_function_arg): Ditto.
33345         * config/lm32/lm32.cc (lm32_in_small_data_p): Ditto.
33346         * config/loongarch/loongarch.cc (loongarch_handle_model_attribute): Ditto.
33347         * config/m32c/m32c.cc (m32c_insert_attributes): Ditto.
33348         * config/mcore/mcore.cc (mcore_mark_dllimport): Ditto.
33349         (mcore_encode_section_info): Ditto.
33350         * config/microblaze/microblaze.cc (microblaze_elf_in_small_data_p): Ditto.
33351         * config/mips/mips.cc (mips_output_aligned_decl_common): Ditto.
33352         * config/mmix/mmix.cc (mmix_encode_section_info): Ditto.
33353         * config/nvptx/nvptx.cc (nvptx_encode_section_info): Ditto.
33354         (pass_in_memory): Ditto.
33355         (nvptx_generate_vector_shuffle): Ditto.
33356         (nvptx_lockless_update): Ditto.
33357         * config/pa/pa.cc (pa_function_arg_padding): Ditto.
33358         (pa_function_value): Ditto.
33359         (pa_function_arg): Ditto.
33360         * config/pa/pa.h (IN_NAMED_SECTION_P): Ditto.
33361         (TEXT_SPACE_P): Ditto.
33362         * config/pa/som.h (MAKE_DECL_ONE_ONLY): Ditto.
33363         * config/pdp11/pdp11.cc (pdp11_return_in_memory): Ditto.
33364         * config/riscv/riscv.cc (riscv_in_small_data_p): Ditto.
33365         (riscv_mangle_type): Ditto.
33366         * config/rl78/rl78.cc (rl78_insert_attributes): Ditto.
33367         (rl78_addsi3_internal): Ditto.
33368         * config/rs6000/aix.h (ROUND_TYPE_ALIGN): Ditto.
33369         * config/rs6000/darwin.h (ROUND_TYPE_ALIGN): Ditto.
33370         * config/rs6000/freebsd64.h (ROUND_TYPE_ALIGN): Ditto.
33371         * config/rs6000/linux64.h (ROUND_TYPE_ALIGN): Ditto.
33372         * config/rs6000/rs6000-call.cc (rs6000_function_arg_boundary): Ditto.
33373         (rs6000_function_arg_advance_1): Ditto.
33374         (rs6000_function_arg): Ditto.
33375         (rs6000_pass_by_reference): Ditto.
33376         * config/rs6000/rs6000-logue.cc (rs6000_function_ok_for_sibcall): Ditto.
33377         * config/rs6000/rs6000.cc (rs6000_data_alignment): Ditto.
33378         (rs6000_set_default_type_attributes): Ditto.
33379         (rs6000_elf_in_small_data_p): Ditto.
33380         (IN_NAMED_SECTION): Ditto.
33381         (rs6000_xcoff_encode_section_info): Ditto.
33382         (rs6000_function_value): Ditto.
33383         (invalid_arg_for_unprototyped_fn): Ditto.
33384         * config/s390/s390-c.cc (s390_fn_types_compatible): Ditto.
33385         (s390_vec_n_elem): Ditto.
33386         * config/s390/s390.cc (s390_check_type_for_vector_abi): Ditto.
33387         (s390_function_arg_integer): Ditto.
33388         (s390_return_in_memory): Ditto.
33389         (s390_encode_section_info): Ditto.
33390         * config/sh/sh.cc (sh_gimplify_va_arg_expr): Ditto.
33391         (sh_function_value): Ditto.
33392         * config/sol2.cc (solaris_insert_attributes): Ditto.
33393         * config/sparc/sparc.cc (function_arg_slotno): Ditto.
33394         * config/sparc/sparc.h (ROUND_TYPE_ALIGN): Ditto.
33395         * config/stormy16/stormy16.cc (xstormy16_encode_section_info): Ditto.
33396         (xstormy16_handle_below100_attribute): Ditto.
33397         * config/v850/v850.cc (v850_encode_section_info): Ditto.
33398         (v850_insert_attributes): Ditto.
33399         * config/visium/visium.cc (visium_pass_by_reference): Ditto.
33400         (visium_return_in_memory): Ditto.
33401         * config/xtensa/xtensa.cc (xtensa_multibss_section_type_flags): Ditto.
33403 2023-05-18  Uros Bizjak  <ubizjak@gmail.com>
33405         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi_partial): New.
33406         (ix86_expand_vecop_qihi): Add op2vec bool variable.
33407         Do not set REG_EQUAL note.
33408         * config/i386/i386-protos.h (ix86_expand_vecop_qihi_partial):
33409         Add prototype.
33410         * config/i386/i386.cc (ix86_multiplication_cost): Handle
33411         V4QImode and V8QImode.
33412         * config/i386/mmx.md (mulv8qi3): New expander.
33413         (mulv4qi3): Ditto.
33414         * config/i386/sse.md (mulv8qi3): Remove.
33416 2023-05-18  Georg-Johann Lay  <avr@gjlay.de>
33418         * config/avr/gen-avr-mmcu-specs.cc: Remove stale */ after // comment.
33420 2023-05-18  Jonathan Wakely  <jwakely@redhat.com>
33422         PR bootstrap/105831
33423         * config.gcc: Use = operator instead of ==.
33425 2023-05-18  Michael Bäuerle  <micha@NetBSD.org>
33427         PR bootstrap/105831
33428         * config/nvptx/gen-opt.sh: Use = operator instead of ==.
33429         * configure.ac: Likewise.
33430         * configure: Regenerate.
33432 2023-05-18  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
33434         * config/arm/arm_mve.h: (__ARM_mve_typeid): Add more pointer types.
33435         (__ARM_mve_coerce1): Remove.
33436         (__ARM_mve_coerce2): Remove.
33437         (__ARM_mve_coerce3): Remove.
33438         (__ARM_mve_coerce_i_scalar): New.
33439         (__ARM_mve_coerce_s8_ptr): New.
33440         (__ARM_mve_coerce_u8_ptr): New.
33441         (__ARM_mve_coerce_s16_ptr): New.
33442         (__ARM_mve_coerce_u16_ptr): New.
33443         (__ARM_mve_coerce_s32_ptr): New.
33444         (__ARM_mve_coerce_u32_ptr): New.
33445         (__ARM_mve_coerce_s64_ptr): New.
33446         (__ARM_mve_coerce_u64_ptr): New.
33447         (__ARM_mve_coerce_f_scalar): New.
33448         (__ARM_mve_coerce_f16_ptr): New.
33449         (__ARM_mve_coerce_f32_ptr): New.
33450         (__arm_vst4q): Change _coerce_ overloads.
33451         (__arm_vbicq): Change _coerce_ overloads.
33452         (__arm_vld1q): Change _coerce_ overloads.
33453         (__arm_vld1q_z): Change _coerce_ overloads.
33454         (__arm_vld2q): Change _coerce_ overloads.
33455         (__arm_vld4q): Change _coerce_ overloads.
33456         (__arm_vldrhq_gather_offset): Change _coerce_ overloads.
33457         (__arm_vldrhq_gather_offset_z): Change _coerce_ overloads.
33458         (__arm_vldrhq_gather_shifted_offset): Change _coerce_ overloads.
33459         (__arm_vldrhq_gather_shifted_offset_z): Change _coerce_ overloads.
33460         (__arm_vldrwq_gather_offset): Change _coerce_ overloads.
33461         (__arm_vldrwq_gather_offset_z): Change _coerce_ overloads.
33462         (__arm_vldrwq_gather_shifted_offset): Change _coerce_ overloads.
33463         (__arm_vldrwq_gather_shifted_offset_z): Change _coerce_ overloads.
33464         (__arm_vst1q_p): Change _coerce_ overloads.
33465         (__arm_vst2q): Change _coerce_ overloads.
33466         (__arm_vst1q): Change _coerce_ overloads.
33467         (__arm_vstrhq): Change _coerce_ overloads.
33468         (__arm_vstrhq_p): Change _coerce_ overloads.
33469         (__arm_vstrhq_scatter_offset_p): Change _coerce_ overloads.
33470         (__arm_vstrhq_scatter_offset): Change _coerce_ overloads.
33471         (__arm_vstrhq_scatter_shifted_offset_p): Change _coerce_ overloads.
33472         (__arm_vstrhq_scatter_shifted_offset): Change _coerce_ overloads.
33473         (__arm_vstrwq_p): Change _coerce_ overloads.
33474         (__arm_vstrwq): Change _coerce_ overloads.
33475         (__arm_vstrwq_scatter_offset): Change _coerce_ overloads.
33476         (__arm_vstrwq_scatter_offset_p): Change _coerce_ overloads.
33477         (__arm_vstrwq_scatter_shifted_offset): Change _coerce_ overloads.
33478         (__arm_vstrwq_scatter_shifted_offset_p): Change _coerce_ overloads.
33479         (__arm_vsetq_lane): Change _coerce_ overloads.
33480         (__arm_vldrbq_gather_offset): Change _coerce_ overloads.
33481         (__arm_vdwdupq_x_u8): Change _coerce_ overloads.
33482         (__arm_vdwdupq_x_u16): Change _coerce_ overloads.
33483         (__arm_vdwdupq_x_u32): Change _coerce_ overloads.
33484         (__arm_viwdupq_x_u8): Change _coerce_ overloads.
33485         (__arm_viwdupq_x_u16): Change _coerce_ overloads.
33486         (__arm_viwdupq_x_u32): Change _coerce_ overloads.
33487         (__arm_vidupq_x_u8): Change _coerce_ overloads.
33488         (__arm_vddupq_x_u8): Change _coerce_ overloads.
33489         (__arm_vidupq_x_u16): Change _coerce_ overloads.
33490         (__arm_vddupq_x_u16): Change _coerce_ overloads.
33491         (__arm_vidupq_x_u32): Change _coerce_ overloads.
33492         (__arm_vddupq_x_u32): Change _coerce_ overloads.
33493         (__arm_vldrdq_gather_offset): Change _coerce_ overloads.
33494         (__arm_vldrdq_gather_offset_z): Change _coerce_ overloads.
33495         (__arm_vldrdq_gather_shifted_offset): Change _coerce_ overloads.
33496         (__arm_vldrdq_gather_shifted_offset_z): Change _coerce_ overloads.
33497         (__arm_vldrbq_gather_offset_z): Change _coerce_ overloads.
33498         (__arm_vidupq_u16): Change _coerce_ overloads.
33499         (__arm_vidupq_u32): Change _coerce_ overloads.
33500         (__arm_vidupq_u8): Change _coerce_ overloads.
33501         (__arm_vddupq_u16): Change _coerce_ overloads.
33502         (__arm_vddupq_u32): Change _coerce_ overloads.
33503         (__arm_vddupq_u8): Change _coerce_ overloads.
33504         (__arm_viwdupq_m): Change _coerce_ overloads.
33505         (__arm_viwdupq_u16): Change _coerce_ overloads.
33506         (__arm_viwdupq_u32): Change _coerce_ overloads.
33507         (__arm_viwdupq_u8): Change _coerce_ overloads.
33508         (__arm_vdwdupq_m): Change _coerce_ overloads.
33509         (__arm_vdwdupq_u16): Change _coerce_ overloads.
33510         (__arm_vdwdupq_u32): Change _coerce_ overloads.
33511         (__arm_vdwdupq_u8): Change _coerce_ overloads.
33512         (__arm_vstrbq): Change _coerce_ overloads.
33513         (__arm_vstrbq_p): Change _coerce_ overloads.
33514         (__arm_vstrbq_scatter_offset_p): Change _coerce_ overloads.
33515         (__arm_vstrdq_scatter_offset_p): Change _coerce_ overloads.
33516         (__arm_vstrdq_scatter_offset): Change _coerce_ overloads.
33517         (__arm_vstrdq_scatter_shifted_offset_p): Change _coerce_ overloads.
33518         (__arm_vstrdq_scatter_shifted_offset): Change _coerce_ overloads.
33520 2023-05-18  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
33522         * config/arm/arm_mve.h (__arm_vbicq): Change coerce on
33523         scalar constant.
33525 2023-05-18  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
33527         * config/arm/arm_mve.h (__arm_vadcq_s32): Fix arithmetic.
33528         (__arm_vadcq_u32): Likewise.
33529         (__arm_vadcq_m_s32): Likewise.
33530         (__arm_vadcq_m_u32): Likewise.
33531         (__arm_vsbcq_s32): Likewise.
33532         (__arm_vsbcq_u32): Likewise.
33533         (__arm_vsbcq_m_s32): Likewise.
33534         (__arm_vsbcq_m_u32): Likewise.
33535         * config/arm/mve.md (get_fpscr_nzcvqc): Make unspec_volatile.
33537 2023-05-18  Andrea Corallo  <andrea.corallo@arm.com>
33539         * config/arm/mve.md (mve_vrndq_m_f<mode>, mve_vrev64q_f<mode>)
33540         (mve_vrev32q_fv8hf, mve_vcvttq_f32_f16v4sf)
33541         (mve_vcvtbq_f32_f16v4sf, mve_vcvtq_to_f_<supf><mode>)
33542         (mve_vrev64q_<supf><mode>, mve_vcvtq_from_f_<supf><mode>)
33543         (mve_vmovltq_<supf><mode>, mve_vmovlbq_<supf><mode>)
33544         (mve_vcvtpq_<supf><mode>, mve_vcvtnq_<supf><mode>)
33545         (mve_vcvtmq_<supf><mode>, mve_vcvtaq_<supf><mode>)
33546         (mve_vmvnq_n_<supf><mode>, mve_vrev16q_<supf>v16qi)
33547         (mve_vctp<MVE_vctp>q<MVE_vpred>, mve_vbrsrq_n_f<mode>)
33548         (mve_vbrsrq_n_<supf><mode>, mve_vandq_f<mode>, mve_vbicq_f<mode>)
33549         (mve_vctp<MVE_vctp>q_m<MVE_vpred>, mve_vcvtbq_f16_f32v8hf)
33550         (mve_vcvttq_f16_f32v8hf, mve_veorq_f<mode>)
33551         (mve_vmlaldavxq_s<mode>, mve_vmlsldavq_s<mode>)
33552         (mve_vmlsldavxq_s<mode>, mve_vornq_f<mode>, mve_vorrq_f<mode>)
33553         (mve_vrmlaldavhxq_sv4si, mve_vcvtq_m_to_f_<supf><mode>)
33554         (mve_vshlcq_<supf><mode>, mve_vmvnq_m_<supf><mode>)
33555         (mve_vpselq_<supf><mode>, mve_vcvtbq_m_f16_f32v8hf)
33556         (mve_vcvtbq_m_f32_f16v4sf, mve_vcvttq_m_f16_f32v8hf)
33557         (mve_vcvttq_m_f32_f16v4sf, mve_vmlaldavq_p_<supf><mode>)
33558         (mve_vmlsldavaq_s<mode>, mve_vmlsldavaxq_s<mode>)
33559         (mve_vmlsldavq_p_s<mode>, mve_vmlsldavxq_p_s<mode>)
33560         (mve_vmvnq_m_n_<supf><mode>, mve_vorrq_m_n_<supf><mode>)
33561         (mve_vpselq_f<mode>, mve_vrev32q_m_fv8hf)
33562         (mve_vrev32q_m_<supf><mode>, mve_vrev64q_m_f<mode>)
33563         (mve_vrmlaldavhaxq_sv4si, mve_vrmlaldavhxq_p_sv4si)
33564         (mve_vrmlsldavhaxq_sv4si, mve_vrmlsldavhq_p_sv4si)
33565         (mve_vrmlsldavhxq_p_sv4si, mve_vrev16q_m_<supf>v16qi)
33566         (mve_vrmlaldavhq_p_<supf>v4si, mve_vrmlsldavhaq_sv4si)
33567         (mve_vandq_m_<supf><mode>, mve_vbicq_m_<supf><mode>)
33568         (mve_veorq_m_<supf><mode>, mve_vornq_m_<supf><mode>)
33569         (mve_vorrq_m_<supf><mode>, mve_vandq_m_f<mode>)
33570         (mve_vbicq_m_f<mode>, mve_veorq_m_f<mode>, mve_vornq_m_f<mode>)
33571         (mve_vorrq_m_f<mode>)
33572         (mve_vstrdq_scatter_shifted_offset_p_<supf>v2di_insn)
33573         (mve_vstrdq_scatter_shifted_offset_<supf>v2di_insn)
33574         (mve_vstrdq_scatter_base_wb_p_<supf>v2di) : Fix spacing and
33575         capitalization in the emitted asm.
33577 2023-05-18  Andrea Corallo  <andrea.corallo@arm.com>
33579         * config/arm/constraints.md (mve_vldrd_immediate): Move it to
33580         predicates.md.
33581         (Ri): Move constraint definition from predicates.md.
33582         (Rl): Define new constraint.
33583         * config/arm/mve.md (mve_vstrwq_scatter_base_wb_p_<supf>v4si): Add
33584         missing constraint.
33585         (mve_vstrwq_scatter_base_wb_p_fv4sf): Add missing Up constraint
33586         for op 1, use mve_vstrw_immediate predicate and Rl constraint for
33587         op 2. Fix asm output spacing.
33588         (mve_vstrdq_scatter_base_wb_p_<supf>v2di): Add missing constraint.
33589         * config/arm/predicates.md (Ri) Move constraint to constraints.md
33590         (mve_vldrd_immediate): Move it from
33591         constraints.md.
33592         (mve_vstrw_immediate): New predicate.
33594 2023-05-18  Pan Li  <pan2.li@intel.com>
33595             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
33596             Kito Cheng  <kito.cheng@sifive.com>
33597             Richard Biener  <rguenther@suse.de>
33598             Richard Sandiford  <richard.sandiford@arm.com>
33600         * combine.cc (struct reg_stat_type): Extend machine_mode to 16 bits.
33601         * cse.cc (struct qty_table_elem): Extend machine_mode to 16 bits
33602         (struct table_elt): Extend machine_mode to 16 bits.
33603         (struct set): Ditto.
33604         * genmodes.cc (emit_mode_wider): Extend type from char to short.
33605         (emit_mode_complex): Ditto.
33606         (emit_mode_inner): Ditto.
33607         (emit_class_narrowest_mode): Ditto.
33608         * genopinit.cc (main): Extend the machine_mode limit.
33609         * ira-int.h (struct ira_allocno): Extend machine_mode to 16 bits and
33610         re-ordered the struct fields for padding.
33611         * machmode.h (MACHINE_MODE_BITSIZE): New macro.
33612         (GET_MODE_2XWIDER_MODE): Extend type from char to short.
33613         (get_mode_alignment): Extend type from char to short.
33614         * ree.cc (struct ext_modified): Extend machine_mode to 16 bits and
33615         removed the ATTRIBUTE_PACKED.
33616         * rtl-ssa/accesses.h: Extend machine_mode to 16 bits, narrow
33617         * rtl-ssa/internals.inl (rtl_ssa::access_info): Adjust the assignment.
33618         m_kind to 2 bits and remove m_spare.
33619         * rtl.h (RTX_CODE_BITSIZE): New macro.
33620         (struct rtx_def): Swap both the bit size and location between the
33621         rtx_code and the machine_mode.
33622         (subreg_shape::unique_id): Extend the machine_mode limit.
33623         * rtlanal.h: Extend machine_mode to 16 bits.
33624         * tree-core.h (struct tree_type_common): Extend machine_mode to 16
33625         bits and re-ordered the struct fields for padding.
33626         (struct tree_decl_common): Extend machine_mode to 16 bits.
33628 2023-05-17  Jin Ma  <jinma@linux.alibaba.com>
33630         * genrecog.cc (print_nonbool_test): Fix type error of
33631         switch (SUBREG_BYTE (op))'.
33633 2023-05-17  Jin Ma  <jinma@linux.alibaba.com>
33635         * common/config/riscv/riscv-common.cc: Remove
33636         trailing spaces on lines.
33637         * config/riscv/riscv.cc (riscv_legitimize_move): Likewise.
33638         * config/riscv/riscv.h (enum reg_class): Likewise.
33639         * config/riscv/riscv.md: Likewise.
33641 2023-05-17  John David Anglin  <danglin@gcc.gnu.org>
33643         * config/pa/pa.md (clear_cache): New.
33645 2023-05-17  Arsen Arsenović  <arsen@aarsen.me>
33647         * doc/extend.texi (C++ Concepts) <forall>: Remove extraneous
33648         parenthesis.  Fix misnamed index entry.
33649         <concept>: Fix misnamed index entry.
33651 2023-05-17  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
33653         * config/riscv/riscv.md (*<optab><GPR:mode>3_mask): New pattern,
33654         combined from ...
33655         (*<optab>si3_mask, *<optab>di3_mask): Here.
33656         (*<optab>si3_mask_1, *<optab>di3_mask_1): And here.
33657         * config/riscv/bitmanip.md (*<bitmanip_optab><GPR:mode>3_mask): New
33658         pattern.
33659         (*<bitmanip_optab>si3_sext_mask): Likewise.
33660         * config/riscv/iterators.md (shiftm1): Use const_si_mask_operand
33661         and const_di_mask_operand.
33662         (bitmanip_rotate): New iterator.
33663         (bitmanip_optab): Add rotates.
33664         * config/riscv/predicates.md (const_si_mask_operand): Renamed
33665         from const31_operand.  Generalize to handle more mask constants.
33666         (const_di_mask_operand): Similarly.
33668 2023-05-17  Jakub Jelinek  <jakub@redhat.com>
33670         PR c++/109884
33671         * config/i386/i386-builtin-types.def (FLOAT128): Use
33672         float128t_type_node rather than float128_type_node.
33674 2023-05-17  Alexander Monakov  <amonakov@ispras.ru>
33676         * tree-ssa-math-opts.cc (convert_mult_to_fma): Enable only for
33677         FP_CONTRACT_FAST (no functional change).
33679 2023-05-17  Uros Bizjak  <ubizjak@gmail.com>
33681         * config/i386/i386.cc (ix86_multiplication_cost): Correct
33682         calcuation of integer vector mode costs to reflect generated
33683         instruction sequences of different integer vector modes and
33684         different target ABIs.
33686 2023-05-17  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
33688         * config/riscv/riscv-opts.h (enum riscv_entity): New enum.
33689         * config/riscv/riscv.cc (riscv_emit_mode_set): New function.
33690         (riscv_mode_needed): Ditto.
33691         (riscv_mode_after): Ditto.
33692         (riscv_mode_entry): Ditto.
33693         (riscv_mode_exit): Ditto.
33694         (riscv_mode_priority): Ditto.
33695         (TARGET_MODE_EMIT): New target hook.
33696         (TARGET_MODE_NEEDED): Ditto.
33697         (TARGET_MODE_AFTER): Ditto.
33698         (TARGET_MODE_ENTRY): Ditto.
33699         (TARGET_MODE_EXIT): Ditto.
33700         (TARGET_MODE_PRIORITY): Ditto.
33701         * config/riscv/riscv.h (OPTIMIZE_MODE_SWITCHING): Ditto.
33702         (NUM_MODES_FOR_MODE_SWITCHING): Ditto.
33703         * config/riscv/riscv.md: Add csrwvxrm.
33704         * config/riscv/vector.md (rnu,rne,rdn,rod,none): New attribute.
33705         (vxrmsi): New pattern.
33707 2023-05-17  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
33709         * config/riscv/riscv-vector-builtins-bases.cc: Introduce rounding mode.
33710         * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
33711         (struct narrow_alu_def): Ditto.
33712         * config/riscv/riscv-vector-builtins.cc (function_builder::apply_predication): Ditto.
33713         (function_expander::use_exact_insn): Ditto.
33714         * config/riscv/riscv-vector-builtins.h (function_checker::arg_num): New function.
33715         (function_base::has_rounding_mode_operand_p): New function.
33717 2023-05-17  Andrew Pinski  <apinski@marvell.com>
33719         * tree-ssa-forwprop.cc (simplify_builtin_call): Check
33720         against 0 instead of calling integer_zerop.
33722 2023-05-17  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
33724         * config/riscv/riscv-vector-builtins.cc (register_vxrm): New function.
33725         (DEF_RVV_VXRM_ENUM): New macro.
33726         (handle_pragma_vector): Add vxrm enum register.
33727         * config/riscv/riscv-vector-builtins.def (DEF_RVV_VXRM_ENUM): New macro.
33728         (RNU): Ditto.
33729         (RNE): Ditto.
33730         (RDN): Ditto.
33731         (ROD): Ditto.
33733 2023-05-17  Aldy Hernandez  <aldyh@redhat.com>
33735         * value-range.h (Value_Range::operator=): New.
33737 2023-05-17  Aldy Hernandez  <aldyh@redhat.com>
33739         * value-range.cc (vrange::operator=): Add a stub to copy
33740         unsupported ranges.
33741         * value-range.h (is_a <unsupported_range>): New.
33742         (Value_Range::operator=): Support copying unsupported ranges.
33744 2023-05-17  Aldy Hernandez  <aldyh@redhat.com>
33746         * data-streamer-in.cc (streamer_read_real_value): New.
33747         (streamer_read_value_range): New.
33748         * data-streamer-out.cc (streamer_write_real_value): New.
33749         (streamer_write_vrange): New.
33750         * data-streamer.h (streamer_write_vrange): New.
33751         (streamer_read_value_range): New.
33753 2023-05-17  Jonathan Wakely  <jwakely@redhat.com>
33755         PR c++/109532
33756         * doc/invoke.texi (Code Gen Options): Note that -fshort-enums
33757         is ignored for a fixed underlying type.
33758         (C++ Dialect Options): Likewise for -fstrict-enums.
33760 2023-05-17  Tobias Burnus  <tobias@codesourcery.com>
33762         * gimplify.cc (gimplify_scan_omp_clauses): Remove Fortran
33763         special case.
33765 2023-05-17  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
33767         * config/s390/s390.cc (TARGET_ATOMIC_ALIGN_FOR_MODE):
33768         New.
33769         (s390_atomic_align_for_mode): New.
33771 2023-05-17  Jakub Jelinek  <jakub@redhat.com>
33773         * wide-int.cc (wi::from_array): Add missing closing paren in function
33774         comment.
33776 2023-05-17  Kewen Lin  <linkw@linux.ibm.com>
33778         * tree-vect-loop.cc (vect_analyze_loop_1): Don't retry analysis with
33779         suggested unroll factor once the previous analysis fails.
33781 2023-05-17  Pan Li  <pan2.li@intel.com>
33783         * config/riscv/genrvv-type-indexer.cc (BOOL_SIZE_LIST): New
33784         macro.
33785         (main): Add bool1 to the type indexer.
33786         * config/riscv/riscv-vector-builtins-functions.def
33787         (vreinterpret): Register vbool1 interpret function.
33788         * config/riscv/riscv-vector-builtins-types.def
33789         (DEF_RVV_BOOL1_INTERPRET_OPS): New macro.
33790         (vint8m1_t): Add the type to bool1_interpret_ops.
33791         (vint16m1_t): Ditto.
33792         (vint32m1_t): Ditto.
33793         (vint64m1_t): Ditto.
33794         (vuint8m1_t): Ditto.
33795         (vuint16m1_t): Ditto.
33796         (vuint32m1_t): Ditto.
33797         (vuint64m1_t): Ditto.
33798         * config/riscv/riscv-vector-builtins.cc
33799         (DEF_RVV_BOOL1_INTERPRET_OPS): New macro.
33800         (required_extensions_p): Add bool1 interpret case.
33801         * config/riscv/riscv-vector-builtins.def
33802         (bool1_interpret): Add bool1 interpret to base type.
33803         * config/riscv/vector.md (@vreinterpret<mode>): Add new expand
33804         with VB dest for vreinterpret.
33806 2023-05-17  Jiufu Guo  <guojiufu@linux.ibm.com>
33808         PR target/106708
33809         * config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Support building
33810         constants through "lis; xoris".
33812 2023-05-16  Ajit Kumar Agarwal  <aagarwa1@linux.ibm.com>
33814         * common/config/rs6000/rs6000-common.cc: Add REE pass as a
33815         default rs6000 target pass for O2 and above.
33816         * doc/invoke.texi: Document -free
33818 2023-05-16  Kito Cheng  <kito.cheng@sifive.com>
33820         * common/config/riscv/riscv-common.cc (riscv_compute_multilib):
33821         Fix wrong select_kind...
33823 2023-05-16  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
33825         * config/s390/s390-protos.h (s390_expand_setmem): Change
33826         function signature.
33827         * config/s390/s390.cc (s390_expand_setmem): For memset's less
33828         than or equal to 256 byte do not perform a libc call.
33829         * config/s390/s390.md: Change expander into a version which
33830         takes 8 operands.
33832 2023-05-16  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
33834         * config/s390/s390-protos.h (s390_expand_movmem): New.
33835         * config/s390/s390.cc (s390_expand_movmem): New.
33836         * config/s390/s390.md (movmem<mode>): New.
33837         (*mvcrl): New.
33838         (mvcrl): New.
33840 2023-05-16  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
33842         * config/s390/s390-protos.h (s390_expand_cpymem): Change
33843         function signature.
33844         * config/s390/s390.cc (s390_expand_cpymem): For memcpy's less
33845         than or equal to 256 byte do not perform a libc call.
33846         (s390_expand_insv): Adapt new function signature of
33847         s390_expand_cpymem.
33848         * config/s390/s390.md: Change expander into a version which
33849         takes 8 operands.
33851 2023-05-16  Andrew Pinski  <apinski@marvell.com>
33853         PR tree-optimization/109424
33854         * match.pd: Add patterns for min/max of zero_one_valued
33855         values to `&`/`|`.
33857 2023-05-16  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
33859         * config/riscv/riscv-protos.h (enum frm_field_enum): New enum.
33860         * config/riscv/riscv-vector-builtins.cc
33861         (function_expander::use_ternop_insn): Add default rounding mode.
33862         (function_expander::use_widen_ternop_insn): Ditto.
33863         * config/riscv/riscv.cc (riscv_hard_regno_nregs): Add FRM REGNUM.
33864         (riscv_hard_regno_mode_ok): Ditto.
33865         (riscv_conditional_register_usage): Ditto.
33866         * config/riscv/riscv.h (DWARF_FRAME_REGNUM): Ditto.
33867         (FRM_REG_P): Ditto.
33868         (RISCV_DWARF_FRM): Ditto.
33869         * config/riscv/riscv.md: Ditto.
33870         * config/riscv/vector-iterators.md: split no frm and has frm operations.
33871         * config/riscv/vector.md (@pred_<optab><mode>_scalar): New pattern.
33872         (@pred_<optab><mode>): Ditto.
33874 2023-05-15  Aldy Hernandez  <aldyh@redhat.com>
33876         PR tree-optimization/109695
33877         * value-range.cc (irange::operator=): Resize range.
33878         (irange::union_): Same.
33879         (irange::intersect): Same.
33880         (irange::invert): Same.
33881         (int_range_max): Default to 3 sub-ranges and resize as needed.
33882         * value-range.h (irange::maybe_resize): New.
33883         (~int_range): New.
33884         (int_range::int_range): Adjust for resizing.
33885         (int_range::operator=): Same.
33887 2023-05-15  Aldy Hernandez  <aldyh@redhat.com>
33889         * ipa-cp.cc (ipcp_vr_lattice::meet_with_1): Avoid unnecessary
33890         range copying
33891         * value-range.cc (irange::union_nonzero_bits): Return TRUE only
33892         when range changed.
33894 2023-05-15  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
33896         * config/riscv/riscv-protos.h (enum vxrm_field_enum): New enum.
33897         * config/riscv/riscv-vector-builtins.cc
33898         (function_expander::use_exact_insn): Add default rounding mode operand.
33899         * config/riscv/riscv.cc (riscv_hard_regno_nregs): Add VXRM_REGNUM.
33900         (riscv_hard_regno_mode_ok): Ditto.
33901         (riscv_conditional_register_usage): Ditto.
33902         * config/riscv/riscv.h (DWARF_FRAME_REGNUM): Ditto.
33903         (VXRM_REG_P): Ditto.
33904         (RISCV_DWARF_VXRM): Ditto.
33905         * config/riscv/riscv.md: Ditto.
33906         * config/riscv/vector.md: Ditto
33908 2023-05-15  Pan Li  <pan2.li@intel.com>
33910         * optabs.cc (maybe_gen_insn): Add case to generate instruction
33911         that has 11 operands.
33913 2023-05-15  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
33915         * config/aarch64/aarch64.cc (aarch64_rtx_costs, NEG case): Add costing
33916         logic for vector modes.
33918 2023-05-15  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
33920         PR target/99195
33921         * config/aarch64/aarch64-simd.md (aarch64_cm<optab><mode>): Rename to...
33922         (aarch64_cm<optab><mode><vczle><vczbe>): ... This.
33923         (aarch64_cmtst<mode>): Rename to...
33924         (aarch64_cmtst<mode><vczle><vczbe>): ... This.
33925         (*aarch64_cmtst_same_<mode>): Rename to...
33926         (*aarch64_cmtst_same_<mode><vczle><vczbe>): ... This.
33927         (*aarch64_cmtstdi): Rename to...
33928         (*aarch64_cmtstdi<vczle><vczbe>): ... This.
33929         (aarch64_fac<optab><mode>): Rename to...
33930         (aarch64_fac<optab><mode><vczle><vczbe>): ... This.
33932 2023-05-15  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
33934         PR target/99195
33935         * config/aarch64/aarch64-simd.md (aarch64_s<optab><mode>): Rename to...
33936         (aarch64_s<optab><mode><vczle><vczbe>): ... This.
33938 2023-05-15  Pan Li  <pan2.li@intel.com>
33939             Juzhe-Zhong  <juzhe.zhong@rivai.ai>
33940             kito-cheng  <kito.cheng@sifive.com>
33942         * config/riscv/riscv-v.cc (const_vlmax_p): New function for
33943         deciding the mode is constant or not.
33944         (set_len_and_policy): Optimize VLS-VLMAX code gen to vsetivli.
33946 2023-05-15  Richard Biener  <rguenther@suse.de>
33948         PR tree-optimization/109848
33949         * tree-ssa-forwprop.cc (pass_forwprop::execute): Put the
33950         TARGET_MEM_REF address preparation before the store, not
33951         before the CTOR.
33953 2023-05-15  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
33955         * config/riscv/riscv.cc
33956         (riscv_vectorize_preferred_vector_alignment): New function.
33957         (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): New target hook.
33959 2023-05-14  Andrew Pinski  <apinski@marvell.com>
33961         PR tree-optimization/109829
33962         * match.pd: Add pattern for `signbit(x) !=/== 0 ? x : -x`.
33964 2023-05-14  Uros Bizjak  <ubizjak@gmail.com>
33966         PR target/109807
33967         * config/i386/i386.cc: Revert the 2023-05-11 change.
33968         (ix86_widen_mult_cost): Return high value instead of
33969         ICEing for unsupported modes.
33971 2023-05-14  Ard Biesheuvel  <ardb@kernel.org>
33973         * config/i386/i386.cc (x86_function_profiler): Take
33974         ix86_direct_extern_access into account when generating calls
33975         to __fentry__()
33977 2023-05-14  Pan Li  <pan2.li@intel.com>
33979         * config/riscv/riscv-vector-builtins.cc (required_extensions_p):
33980         Refactor the or pattern to switch cases.
33982 2023-05-13  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
33984         * config/aarch64/aarch64.cc (aarch64_expand_vector_init_fallback): Rename
33985         aarch64_expand_vector_init to this, and remove  interleaving case.
33986         Recursively call aarch64_expand_vector_init_fallback, instead of
33987         aarch64_expand_vector_init.
33988         (aarch64_unzip_vector_init): New function.
33989         (aarch64_expand_vector_init): Likewise.
33991 2023-05-13  Kito Cheng  <kito.cheng@sifive.com>
33993         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::cleanup_insns):
33994         Pull out function call from the gcc_assert.
33996 2023-05-13  Kito Cheng  <kito.cheng@sifive.com>
33998         * config/riscv/riscv-vsetvl.cc (vlmul_to_str): New.
33999         (policy_to_str): New.
34000         (vector_insn_info::dump): Use vlmul_to_str and policy_to_str.
34002 2023-05-13  Andrew Pinski  <apinski@marvell.com>
34004         PR tree-optimization/109834
34005         * match.pd (popcount(bswap(x))->popcount(x)): Fix up unsigned type checking.
34006         (popcount(rotate(x,y))->popcount(x)): Likewise.
34008 2023-05-12  Uros Bizjak  <ubizjak@gmail.com>
34010         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2): Also
34011         reject ymm instructions for TARGET_PREFER_AVX128.  Use generic
34012         gen_extend_insn to generate zero/sign extension instructions.
34013         Fix comments.
34014         (ix86_expand_vecop_qihi): Initialize interleave functions
34015         for MULT code only.  Fix comments.
34017 2023-05-12  Uros Bizjak  <ubizjak@gmail.com>
34019         PR target/109797
34020         * config/i386/mmx.md (mulv2si3): Remove expander.
34021         (mulv2si3): Rename insn pattern from *mulv2si.
34023 2023-05-12  Tobias Burnus  <tobias@codesourcery.com>
34025         PR libstdc++/109816
34026         * lto-cgraph.cc (output_symtab): Guard lto_output_toplevel_asms by
34027         '!lto_stream_offload_p'.
34029 2023-05-12  Kito Cheng  <kito.cheng@sifive.com>
34030             Juzhe-Zhong  <juzhe.zhong@rivai.ai>
34032         PR target/109743
34033         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::get_vsetvl_at_end): New.
34034         (local_avl_compatible_p): New.
34035         (pass_vsetvl::local_eliminate_vsetvl_insn): Enhance local optimizations
34036         for LCM, rewrite as a backward algorithm.
34037         (pass_vsetvl::cleanup_insns): Use new local_eliminate_vsetvl_insn
34038         interface, handle a BB at once.
34040 2023-05-12  Richard Biener  <rguenther@suse.de>
34042         PR tree-optimization/64731
34043         * tree-ssa-forwprop.cc (pass_forwprop::execute): Also
34044         handle TARGET_MEM_REF destinations of stores from vector
34045         CTORs.
34047 2023-05-12  Richard Biener  <rguenther@suse.de>
34049         PR tree-optimization/109791
34050         * match.pd (minus (convert ADDR_EXPR@0) (convert (pointer_plus @1 @2))):
34051         New pattern.
34052         (minus (convert (pointer_plus @1 @2)) (convert ADDR_EXPR@0)):
34053         Likewise.
34055 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
34057         * config/arm/arm-mve-builtins-base.cc (vsriq): New.
34058         * config/arm/arm-mve-builtins-base.def (vsriq): New.
34059         * config/arm/arm-mve-builtins-base.h (vsriq): New.
34060         * config/arm/arm-mve-builtins.cc
34061         (function_instance::has_inactive_argument): Handle vsriq.
34062         * config/arm/arm_mve.h (vsriq): Remove.
34063         (vsriq_m): Remove.
34064         (vsriq_n_u8): Remove.
34065         (vsriq_n_s8): Remove.
34066         (vsriq_n_u16): Remove.
34067         (vsriq_n_s16): Remove.
34068         (vsriq_n_u32): Remove.
34069         (vsriq_n_s32): Remove.
34070         (vsriq_m_n_s8): Remove.
34071         (vsriq_m_n_u8): Remove.
34072         (vsriq_m_n_s16): Remove.
34073         (vsriq_m_n_u16): Remove.
34074         (vsriq_m_n_s32): Remove.
34075         (vsriq_m_n_u32): Remove.
34076         (__arm_vsriq_n_u8): Remove.
34077         (__arm_vsriq_n_s8): Remove.
34078         (__arm_vsriq_n_u16): Remove.
34079         (__arm_vsriq_n_s16): Remove.
34080         (__arm_vsriq_n_u32): Remove.
34081         (__arm_vsriq_n_s32): Remove.
34082         (__arm_vsriq_m_n_s8): Remove.
34083         (__arm_vsriq_m_n_u8): Remove.
34084         (__arm_vsriq_m_n_s16): Remove.
34085         (__arm_vsriq_m_n_u16): Remove.
34086         (__arm_vsriq_m_n_s32): Remove.
34087         (__arm_vsriq_m_n_u32): Remove.
34088         (__arm_vsriq): Remove.
34089         (__arm_vsriq_m): Remove.
34091 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
34093         * config/arm/iterators.md (mve_insn): Add vsri.
34094         * config/arm/mve.md (mve_vsriq_n_<supf><mode>): Rename into ...
34095         (@mve_<mve_insn>q_n_<supf><mode>): .,. this.
34096         (mve_vsriq_m_n_<supf><mode>): Rename into ...
34097         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
34099 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
34101         * config/arm/arm-mve-builtins-shapes.cc (ternary_rshift): New.
34102         * config/arm/arm-mve-builtins-shapes.h (ternary_rshift): New.
34104 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
34106         * config/arm/arm-mve-builtins-base.cc (vsliq): New.
34107         * config/arm/arm-mve-builtins-base.def (vsliq): New.
34108         * config/arm/arm-mve-builtins-base.h (vsliq): New.
34109         * config/arm/arm-mve-builtins.cc
34110         (function_instance::has_inactive_argument): Handle vsliq.
34111         * config/arm/arm_mve.h (vsliq): Remove.
34112         (vsliq_m): Remove.
34113         (vsliq_n_u8): Remove.
34114         (vsliq_n_s8): Remove.
34115         (vsliq_n_u16): Remove.
34116         (vsliq_n_s16): Remove.
34117         (vsliq_n_u32): Remove.
34118         (vsliq_n_s32): Remove.
34119         (vsliq_m_n_s8): Remove.
34120         (vsliq_m_n_s32): Remove.
34121         (vsliq_m_n_s16): Remove.
34122         (vsliq_m_n_u8): Remove.
34123         (vsliq_m_n_u32): Remove.
34124         (vsliq_m_n_u16): Remove.
34125         (__arm_vsliq_n_u8): Remove.
34126         (__arm_vsliq_n_s8): Remove.
34127         (__arm_vsliq_n_u16): Remove.
34128         (__arm_vsliq_n_s16): Remove.
34129         (__arm_vsliq_n_u32): Remove.
34130         (__arm_vsliq_n_s32): Remove.
34131         (__arm_vsliq_m_n_s8): Remove.
34132         (__arm_vsliq_m_n_s32): Remove.
34133         (__arm_vsliq_m_n_s16): Remove.
34134         (__arm_vsliq_m_n_u8): Remove.
34135         (__arm_vsliq_m_n_u32): Remove.
34136         (__arm_vsliq_m_n_u16): Remove.
34137         (__arm_vsliq): Remove.
34138         (__arm_vsliq_m): Remove.
34140 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
34142         * config/arm/iterators.md (mve_insn>): Add vsli.
34143         * config/arm/mve.md (mve_vsliq_n_<supf><mode>): Rename into ...
34144         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
34145         (mve_vsliq_m_n_<supf><mode>): Rename into ...
34146         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
34148 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
34150         * config/arm/arm-mve-builtins-shapes.cc (ternary_lshift): New.
34151         * config/arm/arm-mve-builtins-shapes.h (ternary_lshift): New.
34153 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
34155         * config/arm/arm-mve-builtins-base.cc (vpselq): New.
34156         * config/arm/arm-mve-builtins-base.def (vpselq): New.
34157         * config/arm/arm-mve-builtins-base.h (vpselq): New.
34158         * config/arm/arm_mve.h (vpselq): Remove.
34159         (vpselq_u8): Remove.
34160         (vpselq_s8): Remove.
34161         (vpselq_u16): Remove.
34162         (vpselq_s16): Remove.
34163         (vpselq_u32): Remove.
34164         (vpselq_s32): Remove.
34165         (vpselq_u64): Remove.
34166         (vpselq_s64): Remove.
34167         (vpselq_f16): Remove.
34168         (vpselq_f32): Remove.
34169         (__arm_vpselq_u8): Remove.
34170         (__arm_vpselq_s8): Remove.
34171         (__arm_vpselq_u16): Remove.
34172         (__arm_vpselq_s16): Remove.
34173         (__arm_vpselq_u32): Remove.
34174         (__arm_vpselq_s32): Remove.
34175         (__arm_vpselq_u64): Remove.
34176         (__arm_vpselq_s64): Remove.
34177         (__arm_vpselq_f16): Remove.
34178         (__arm_vpselq_f32): Remove.
34179         (__arm_vpselq): Remove.
34181 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
34183         * config/arm/arm-mve-builtins-shapes.cc (vpsel): New.
34184         * config/arm/arm-mve-builtins-shapes.h (vpsel): New.
34186 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
34188         * config/arm/arm.cc (arm_expand_vcond): Use gen_mve_q instead of
34189         gen_mve_vpselq.
34190         * config/arm/iterators.md (MVE_VPSELQ_F): New.
34191         (mve_insn): Add vpsel.
34192         * config/arm/mve.md (@mve_vpselq_<supf><mode>): Rename into ...
34193         (@mve_<mve_insn>q_<supf><mode>): ... this.
34194         (@mve_vpselq_f<mode>): Rename into ...
34195         (@mve_<mve_insn>q_f<mode>): ... this.
34197 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
34199         * config/arm/arm-mve-builtins-base.cc (vfmaq, vfmasq, vfmsq): New.
34200         * config/arm/arm-mve-builtins-base.def (vfmaq, vfmasq, vfmsq): New.
34201         * config/arm/arm-mve-builtins-base.h (vfmaq, vfmasq, vfmsq): New.
34202         * config/arm/arm-mve-builtins.cc
34203         (function_instance::has_inactive_argument): Handle vfmaq, vfmasq,
34204         vfmsq.
34205         * config/arm/arm_mve.h (vfmaq): Remove.
34206         (vfmasq): Remove.
34207         (vfmsq): Remove.
34208         (vfmaq_m): Remove.
34209         (vfmasq_m): Remove.
34210         (vfmsq_m): Remove.
34211         (vfmaq_f16): Remove.
34212         (vfmaq_n_f16): Remove.
34213         (vfmasq_n_f16): Remove.
34214         (vfmsq_f16): Remove.
34215         (vfmaq_f32): Remove.
34216         (vfmaq_n_f32): Remove.
34217         (vfmasq_n_f32): Remove.
34218         (vfmsq_f32): Remove.
34219         (vfmaq_m_f32): Remove.
34220         (vfmaq_m_f16): Remove.
34221         (vfmaq_m_n_f32): Remove.
34222         (vfmaq_m_n_f16): Remove.
34223         (vfmasq_m_n_f32): Remove.
34224         (vfmasq_m_n_f16): Remove.
34225         (vfmsq_m_f32): Remove.
34226         (vfmsq_m_f16): Remove.
34227         (__arm_vfmaq_f16): Remove.
34228         (__arm_vfmaq_n_f16): Remove.
34229         (__arm_vfmasq_n_f16): Remove.
34230         (__arm_vfmsq_f16): Remove.
34231         (__arm_vfmaq_f32): Remove.
34232         (__arm_vfmaq_n_f32): Remove.
34233         (__arm_vfmasq_n_f32): Remove.
34234         (__arm_vfmsq_f32): Remove.
34235         (__arm_vfmaq_m_f32): Remove.
34236         (__arm_vfmaq_m_f16): Remove.
34237         (__arm_vfmaq_m_n_f32): Remove.
34238         (__arm_vfmaq_m_n_f16): Remove.
34239         (__arm_vfmasq_m_n_f32): Remove.
34240         (__arm_vfmasq_m_n_f16): Remove.
34241         (__arm_vfmsq_m_f32): Remove.
34242         (__arm_vfmsq_m_f16): Remove.
34243         (__arm_vfmaq): Remove.
34244         (__arm_vfmasq): Remove.
34245         (__arm_vfmsq): Remove.
34246         (__arm_vfmaq_m): Remove.
34247         (__arm_vfmasq_m): Remove.
34248         (__arm_vfmsq_m): Remove.
34250 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
34252         * config/arm/iterators.md (MVE_FP_M_BINARY): Add VFMAQ_M_F,
34253         VFMSQ_M_F.
34254         (MVE_FP_M_N_BINARY): Add VFMAQ_M_N_F, VFMASQ_M_N_F.
34255         (MVE_VFMxQ_F, MVE_VFMAxQ_N_F): New.
34256         (mve_insn): Add vfma, vfmas, vfms.
34257         * config/arm/mve.md (mve_vfmaq_f<mode>, mve_vfmsq_f<mode>): Merge
34258         into ...
34259         (@mve_<mve_insn>q_f<mode>): ... this.
34260         (mve_vfmaq_n_f<mode>, mve_vfmasq_n_f<mode>): Merge into ...
34261         (@mve_<mve_insn>q_n_f<mode>): ... this.
34262         (mve_vfmaq_m_f<mode>, mve_vfmsq_m_f<mode>): Merge into
34263         @mve_<mve_insn>q_m_f<mode>.
34264         (mve_vfmaq_m_n_f<mode>, mve_vfmasq_m_n_f<mode>): Merge into
34265         @mve_<mve_insn>q_m_n_f<mode>.
34267 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
34269         * config/arm/arm-mve-builtins-shapes.cc (ternary_opt_n): New.
34270         * config/arm/arm-mve-builtins-shapes.h (ternary_opt_n): New.
34272 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
34274         * config/arm/arm-mve-builtins-base.cc
34275         (FUNCTION_WITH_RTX_M_N_NO_F): New.
34276         (vmvnq): New.
34277         * config/arm/arm-mve-builtins-base.def (vmvnq): New.
34278         * config/arm/arm-mve-builtins-base.h (vmvnq): New.
34279         * config/arm/arm_mve.h (vmvnq): Remove.
34280         (vmvnq_m): Remove.
34281         (vmvnq_x): Remove.
34282         (vmvnq_s8): Remove.
34283         (vmvnq_s16): Remove.
34284         (vmvnq_s32): Remove.
34285         (vmvnq_n_s16): Remove.
34286         (vmvnq_n_s32): Remove.
34287         (vmvnq_u8): Remove.
34288         (vmvnq_u16): Remove.
34289         (vmvnq_u32): Remove.
34290         (vmvnq_n_u16): Remove.
34291         (vmvnq_n_u32): Remove.
34292         (vmvnq_m_u8): Remove.
34293         (vmvnq_m_s8): Remove.
34294         (vmvnq_m_u16): Remove.
34295         (vmvnq_m_s16): Remove.
34296         (vmvnq_m_u32): Remove.
34297         (vmvnq_m_s32): Remove.
34298         (vmvnq_m_n_s16): Remove.
34299         (vmvnq_m_n_u16): Remove.
34300         (vmvnq_m_n_s32): Remove.
34301         (vmvnq_m_n_u32): Remove.
34302         (vmvnq_x_s8): Remove.
34303         (vmvnq_x_s16): Remove.
34304         (vmvnq_x_s32): Remove.
34305         (vmvnq_x_u8): Remove.
34306         (vmvnq_x_u16): Remove.
34307         (vmvnq_x_u32): Remove.
34308         (vmvnq_x_n_s16): Remove.
34309         (vmvnq_x_n_s32): Remove.
34310         (vmvnq_x_n_u16): Remove.
34311         (vmvnq_x_n_u32): Remove.
34312         (__arm_vmvnq_s8): Remove.
34313         (__arm_vmvnq_s16): Remove.
34314         (__arm_vmvnq_s32): Remove.
34315         (__arm_vmvnq_n_s16): Remove.
34316         (__arm_vmvnq_n_s32): Remove.
34317         (__arm_vmvnq_u8): Remove.
34318         (__arm_vmvnq_u16): Remove.
34319         (__arm_vmvnq_u32): Remove.
34320         (__arm_vmvnq_n_u16): Remove.
34321         (__arm_vmvnq_n_u32): Remove.
34322         (__arm_vmvnq_m_u8): Remove.
34323         (__arm_vmvnq_m_s8): Remove.
34324         (__arm_vmvnq_m_u16): Remove.
34325         (__arm_vmvnq_m_s16): Remove.
34326         (__arm_vmvnq_m_u32): Remove.
34327         (__arm_vmvnq_m_s32): Remove.
34328         (__arm_vmvnq_m_n_s16): Remove.
34329         (__arm_vmvnq_m_n_u16): Remove.
34330         (__arm_vmvnq_m_n_s32): Remove.
34331         (__arm_vmvnq_m_n_u32): Remove.
34332         (__arm_vmvnq_x_s8): Remove.
34333         (__arm_vmvnq_x_s16): Remove.
34334         (__arm_vmvnq_x_s32): Remove.
34335         (__arm_vmvnq_x_u8): Remove.
34336         (__arm_vmvnq_x_u16): Remove.
34337         (__arm_vmvnq_x_u32): Remove.
34338         (__arm_vmvnq_x_n_s16): Remove.
34339         (__arm_vmvnq_x_n_s32): Remove.
34340         (__arm_vmvnq_x_n_u16): Remove.
34341         (__arm_vmvnq_x_n_u32): Remove.
34342         (__arm_vmvnq): Remove.
34343         (__arm_vmvnq_m): Remove.
34344         (__arm_vmvnq_x): Remove.
34346 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
34348         * config/arm/iterators.md (mve_insn): Add vmvn.
34349         * config/arm/mve.md (mve_vmvnq_n_<supf><mode>): Rename into ...
34350         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
34351         (mve_vmvnq_m_<supf><mode>): Rename into ...
34352         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
34353         (mve_vmvnq_m_n_<supf><mode>): Rename into ...
34354         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
34356 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
34358         * config/arm/arm-mve-builtins-shapes.cc (mvn): New.
34359         * config/arm/arm-mve-builtins-shapes.h (mvn): New.
34361 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
34363         * config/arm/arm-mve-builtins-base.cc (vbrsrq): New.
34364         * config/arm/arm-mve-builtins-base.def (vbrsrq): New.
34365         * config/arm/arm-mve-builtins-base.h (vbrsrq): New.
34366         * config/arm/arm_mve.h (vbrsrq): Remove.
34367         (vbrsrq_m): Remove.
34368         (vbrsrq_x): Remove.
34369         (vbrsrq_n_f16): Remove.
34370         (vbrsrq_n_f32): Remove.
34371         (vbrsrq_n_u8): Remove.
34372         (vbrsrq_n_s8): Remove.
34373         (vbrsrq_n_u16): Remove.
34374         (vbrsrq_n_s16): Remove.
34375         (vbrsrq_n_u32): Remove.
34376         (vbrsrq_n_s32): Remove.
34377         (vbrsrq_m_n_s8): Remove.
34378         (vbrsrq_m_n_s32): Remove.
34379         (vbrsrq_m_n_s16): Remove.
34380         (vbrsrq_m_n_u8): Remove.
34381         (vbrsrq_m_n_u32): Remove.
34382         (vbrsrq_m_n_u16): Remove.
34383         (vbrsrq_m_n_f32): Remove.
34384         (vbrsrq_m_n_f16): Remove.
34385         (vbrsrq_x_n_s8): Remove.
34386         (vbrsrq_x_n_s16): Remove.
34387         (vbrsrq_x_n_s32): Remove.
34388         (vbrsrq_x_n_u8): Remove.
34389         (vbrsrq_x_n_u16): Remove.
34390         (vbrsrq_x_n_u32): Remove.
34391         (vbrsrq_x_n_f16): Remove.
34392         (vbrsrq_x_n_f32): Remove.
34393         (__arm_vbrsrq_n_u8): Remove.
34394         (__arm_vbrsrq_n_s8): Remove.
34395         (__arm_vbrsrq_n_u16): Remove.
34396         (__arm_vbrsrq_n_s16): Remove.
34397         (__arm_vbrsrq_n_u32): Remove.
34398         (__arm_vbrsrq_n_s32): Remove.
34399         (__arm_vbrsrq_m_n_s8): Remove.
34400         (__arm_vbrsrq_m_n_s32): Remove.
34401         (__arm_vbrsrq_m_n_s16): Remove.
34402         (__arm_vbrsrq_m_n_u8): Remove.
34403         (__arm_vbrsrq_m_n_u32): Remove.
34404         (__arm_vbrsrq_m_n_u16): Remove.
34405         (__arm_vbrsrq_x_n_s8): Remove.
34406         (__arm_vbrsrq_x_n_s16): Remove.
34407         (__arm_vbrsrq_x_n_s32): Remove.
34408         (__arm_vbrsrq_x_n_u8): Remove.
34409         (__arm_vbrsrq_x_n_u16): Remove.
34410         (__arm_vbrsrq_x_n_u32): Remove.
34411         (__arm_vbrsrq_n_f16): Remove.
34412         (__arm_vbrsrq_n_f32): Remove.
34413         (__arm_vbrsrq_m_n_f32): Remove.
34414         (__arm_vbrsrq_m_n_f16): Remove.
34415         (__arm_vbrsrq_x_n_f16): Remove.
34416         (__arm_vbrsrq_x_n_f32): Remove.
34417         (__arm_vbrsrq): Remove.
34418         (__arm_vbrsrq_m): Remove.
34419         (__arm_vbrsrq_x): Remove.
34421 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
34423         * config/arm/iterators.md (MVE_VBRSR_M_N_FP, MVE_VBRSR_N_FP): New.
34424         (mve_insn): Add vbrsr.
34425         * config/arm/mve.md (mve_vbrsrq_n_f<mode>): Rename into ...
34426         (@mve_<mve_insn>q_n_f<mode>): ... this.
34427         (mve_vbrsrq_n_<supf><mode>): Rename into ...
34428         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
34429         (mve_vbrsrq_m_n_<supf><mode>): Rename into ...
34430         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
34431         (mve_vbrsrq_m_n_f<mode>): Rename into ...
34432         (@mve_<mve_insn>q_m_n_f<mode>): ... this.
34434 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
34436         * config/arm/arm-mve-builtins-shapes.cc (binary_imm32): New.
34437         * config/arm/arm-mve-builtins-shapes.h (binary_imm32): New.
34439 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
34441         * config/arm/arm-mve-builtins-base.cc (vqshluq): New.
34442         * config/arm/arm-mve-builtins-base.def (vqshluq): New.
34443         * config/arm/arm-mve-builtins-base.h (vqshluq): New.
34444         * config/arm/arm_mve.h (vqshluq): Remove.
34445         (vqshluq_m): Remove.
34446         (vqshluq_n_s8): Remove.
34447         (vqshluq_n_s16): Remove.
34448         (vqshluq_n_s32): Remove.
34449         (vqshluq_m_n_s8): Remove.
34450         (vqshluq_m_n_s16): Remove.
34451         (vqshluq_m_n_s32): Remove.
34452         (__arm_vqshluq_n_s8): Remove.
34453         (__arm_vqshluq_n_s16): Remove.
34454         (__arm_vqshluq_n_s32): Remove.
34455         (__arm_vqshluq_m_n_s8): Remove.
34456         (__arm_vqshluq_m_n_s16): Remove.
34457         (__arm_vqshluq_m_n_s32): Remove.
34458         (__arm_vqshluq): Remove.
34459         (__arm_vqshluq_m): Remove.
34461 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
34463         * config/arm/iterators.md (mve_insn): Add vqshlu.
34464         (supf): Add VQSHLUQ_M_N_S, VQSHLUQ_N_S.
34465         (VQSHLUQ_M_N, VQSHLUQ_N): New.
34466         * config/arm/mve.md (mve_vqshluq_n_s<mode>): Change name into ...
34467         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
34468         (mve_vqshluq_m_n_s<mode>): Change name into ...
34469         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
34471 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
34473         * config/arm/arm-mve-builtins-shapes.cc
34474         (binary_lshift_unsigned): New.
34475         * config/arm/arm-mve-builtins-shapes.h
34476         (binary_lshift_unsigned): New.
34478 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
34480         * config/arm/arm-mve-builtins-base.cc (vrmlaldavhaq)
34481         (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
34482         * config/arm/arm-mve-builtins-base.def (vrmlaldavhaq)
34483         (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
34484         * config/arm/arm-mve-builtins-base.h (vrmlaldavhaq)
34485         (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
34486         * config/arm/arm-mve-builtins-functions.h: Handle vrmlaldavhaq,
34487         vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq.
34488         * config/arm/arm_mve.h (vrmlaldavhaq): Remove.
34489         (vrmlaldavhaxq): Remove.
34490         (vrmlsldavhaq): Remove.
34491         (vrmlsldavhaxq): Remove.
34492         (vrmlaldavhaq_p): Remove.
34493         (vrmlaldavhaxq_p): Remove.
34494         (vrmlsldavhaq_p): Remove.
34495         (vrmlsldavhaxq_p): Remove.
34496         (vrmlaldavhaq_s32): Remove.
34497         (vrmlaldavhaq_u32): Remove.
34498         (vrmlaldavhaxq_s32): Remove.
34499         (vrmlsldavhaq_s32): Remove.
34500         (vrmlsldavhaxq_s32): Remove.
34501         (vrmlaldavhaq_p_s32): Remove.
34502         (vrmlaldavhaq_p_u32): Remove.
34503         (vrmlaldavhaxq_p_s32): Remove.
34504         (vrmlsldavhaq_p_s32): Remove.
34505         (vrmlsldavhaxq_p_s32): Remove.
34506         (__arm_vrmlaldavhaq_s32): Remove.
34507         (__arm_vrmlaldavhaq_u32): Remove.
34508         (__arm_vrmlaldavhaxq_s32): Remove.
34509         (__arm_vrmlsldavhaq_s32): Remove.
34510         (__arm_vrmlsldavhaxq_s32): Remove.
34511         (__arm_vrmlaldavhaq_p_s32): Remove.
34512         (__arm_vrmlaldavhaq_p_u32): Remove.
34513         (__arm_vrmlaldavhaxq_p_s32): Remove.
34514         (__arm_vrmlsldavhaq_p_s32): Remove.
34515         (__arm_vrmlsldavhaxq_p_s32): Remove.
34516         (__arm_vrmlaldavhaq): Remove.
34517         (__arm_vrmlaldavhaxq): Remove.
34518         (__arm_vrmlsldavhaq): Remove.
34519         (__arm_vrmlsldavhaxq): Remove.
34520         (__arm_vrmlaldavhaq_p): Remove.
34521         (__arm_vrmlaldavhaxq_p): Remove.
34522         (__arm_vrmlsldavhaq_p): Remove.
34523         (__arm_vrmlsldavhaxq_p): Remove.
34525 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
34527         * config/arm/iterators.md (MVE_VRMLxLDAVHAxQ)
34528         (MVE_VRMLxLDAVHAxQ_P): New.
34529         (mve_insn): Add vrmlaldavha, vrmlaldavhax, vrmlsldavha,
34530         vrmlsldavhax.
34531         (supf): Add VRMLALDAVHAXQ_P_S, VRMLALDAVHAXQ_S, VRMLSLDAVHAQ_P_S,
34532         VRMLSLDAVHAQ_S, VRMLSLDAVHAXQ_P_S, VRMLSLDAVHAXQ_S,
34533         VRMLALDAVHAQ_P_S.
34534         * config/arm/mve.md (mve_vrmlaldavhaq_<supf>v4si)
34535         (mve_vrmlaldavhaxq_sv4si, mve_vrmlsldavhaxq_sv4si)
34536         (mve_vrmlsldavhaq_sv4si): Merge into ...
34537         (@mve_<mve_insn>q_<supf>v4si): ... this.
34538         (mve_vrmlaldavhaq_p_sv4si, mve_vrmlaldavhaq_p_uv4si)
34539         (mve_vrmlaldavhaxq_p_sv4si, mve_vrmlsldavhaq_p_sv4si)
34540         (mve_vrmlsldavhaxq_p_sv4si): Merge into ...
34541         (@mve_<mve_insn>q_p_<supf>v4si): ... this.
34543 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
34545         * config/arm/arm-mve-builtins-base.cc (vqdmullbq, vqdmulltq): New.
34546         * config/arm/arm-mve-builtins-base.def (vqdmullbq, vqdmulltq):
34547         New.
34548         * config/arm/arm-mve-builtins-base.h (vqdmullbq, vqdmulltq): New.
34549         * config/arm/arm_mve.h (vqdmulltq): Remove.
34550         (vqdmullbq): Remove.
34551         (vqdmullbq_m): Remove.
34552         (vqdmulltq_m): Remove.
34553         (vqdmulltq_s16): Remove.
34554         (vqdmulltq_n_s16): Remove.
34555         (vqdmullbq_s16): Remove.
34556         (vqdmullbq_n_s16): Remove.
34557         (vqdmulltq_s32): Remove.
34558         (vqdmulltq_n_s32): Remove.
34559         (vqdmullbq_s32): Remove.
34560         (vqdmullbq_n_s32): Remove.
34561         (vqdmullbq_m_n_s32): Remove.
34562         (vqdmullbq_m_n_s16): Remove.
34563         (vqdmullbq_m_s32): Remove.
34564         (vqdmullbq_m_s16): Remove.
34565         (vqdmulltq_m_n_s32): Remove.
34566         (vqdmulltq_m_n_s16): Remove.
34567         (vqdmulltq_m_s32): Remove.
34568         (vqdmulltq_m_s16): Remove.
34569         (__arm_vqdmulltq_s16): Remove.
34570         (__arm_vqdmulltq_n_s16): Remove.
34571         (__arm_vqdmullbq_s16): Remove.
34572         (__arm_vqdmullbq_n_s16): Remove.
34573         (__arm_vqdmulltq_s32): Remove.
34574         (__arm_vqdmulltq_n_s32): Remove.
34575         (__arm_vqdmullbq_s32): Remove.
34576         (__arm_vqdmullbq_n_s32): Remove.
34577         (__arm_vqdmullbq_m_n_s32): Remove.
34578         (__arm_vqdmullbq_m_n_s16): Remove.
34579         (__arm_vqdmullbq_m_s32): Remove.
34580         (__arm_vqdmullbq_m_s16): Remove.
34581         (__arm_vqdmulltq_m_n_s32): Remove.
34582         (__arm_vqdmulltq_m_n_s16): Remove.
34583         (__arm_vqdmulltq_m_s32): Remove.
34584         (__arm_vqdmulltq_m_s16): Remove.
34585         (__arm_vqdmulltq): Remove.
34586         (__arm_vqdmullbq): Remove.
34587         (__arm_vqdmullbq_m): Remove.
34588         (__arm_vqdmulltq_m): Remove.
34590 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
34592         * config/arm/iterators.md (MVE_VQDMULLxQ, MVE_VQDMULLxQ_M)
34593         (MVE_VQDMULLxQ_M_N, MVE_VQDMULLxQ_N): New.
34594         (mve_insn): Add vqdmullb, vqdmullt.
34595         (supf): Add VQDMULLBQ_S, VQDMULLBQ_M_S, VQDMULLBQ_M_N_S,
34596         VQDMULLBQ_N_S, VQDMULLTQ_S, VQDMULLTQ_M_S, VQDMULLTQ_M_N_S,
34597         VQDMULLTQ_N_S.
34598         * config/arm/mve.md (mve_vqdmullbq_n_s<mode>)
34599         (mve_vqdmulltq_n_s<mode>): Merge into ...
34600         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
34601         (mve_vqdmullbq_s<mode>, mve_vqdmulltq_s<mode>): Merge into ...
34602         (@mve_<mve_insn>q_<supf><mode>): ... this.
34603         (mve_vqdmullbq_m_n_s<mode>, mve_vqdmulltq_m_n_s<mode>): Merge into
34604         ...
34605         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
34606         (mve_vqdmullbq_m_s<mode>, mve_vqdmulltq_m_s<mode>): Merge into ...
34607         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
34609 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
34611         * config/arm/arm-mve-builtins-shapes.cc (binary_widen_opt_n): New.
34612         * config/arm/arm-mve-builtins-shapes.h (binary_widen_opt_n): New.
34614 2023-05-12  Kito Cheng  <kito.cheng@sifive.com>
34616         * common/config/riscv/riscv-common.cc (riscv_select_multilib_by_abi):
34617         Drop unused parameter.
34618         (riscv_select_multilib): Ditto.
34619         (riscv_compute_multilib): Update call site of
34620         riscv_select_multilib_by_abi and riscv_select_multilib_by_abi.
34622 2023-05-12  Juzhe Zhong  <juzhe.zhong@rivai.ai>
34624         * config/riscv/autovec.md (vec_init<mode><vel>): New pattern.
34625         * config/riscv/riscv-protos.h (expand_vec_init): New function.
34626         * config/riscv/riscv-v.cc (class rvv_builder): New class.
34627         (rvv_builder::can_duplicate_repeating_sequence_p): New function.
34628         (rvv_builder::get_merged_repeating_sequence): Ditto.
34629         (expand_vector_init_insert_elems): Ditto.
34630         (expand_vec_init): Ditto.
34631         * config/riscv/vector-iterators.md: New attribute.
34633 2023-05-12  Haochen Gui  <guihaoc@gcc.gnu.org>
34635         * config/rs6000/rs6000-builtins.def
34636         (__builtin_vsx_scalar_insert_exp): Replace bif-pattern from xsiexpdp
34637         to xsiexpdp_di.
34638         (__builtin_vsx_scalar_insert_exp_dp): Replace bif-pattern from
34639         xsiexpdpf to xsiexpdpf_di.
34640         * config/rs6000/vsx.md (xsiexpdp): Rename to...
34641         (xsiexpdp_<mode>): ..., set the mode of second operand to GPR and
34642         replace TARGET_64BIT with TARGET_POWERPC64.
34643         (xsiexpdpf): Rename to...
34644         (xsiexpdpf_<mode>): ..., set the mode of second operand to GPR and
34645         replace TARGET_64BIT with TARGET_POWERPC64.
34647 2023-05-12  Haochen Gui  <guihaoc@gcc.gnu.org>
34649         * config/rs6000/rs6000-builtins.def
34650         (__builtin_vsx_scalar_extract_sig): Set return type to const signed
34651         long long.
34652         * config/rs6000/vsx.md (xsxsigdp): Replace TARGET_64BIT with
34653         TARGET_POWERPC64.
34655 2023-05-12  Haochen Gui  <guihaoc@gcc.gnu.org>
34657         * config/rs6000/rs6000-builtins.def
34658         (__builtin_vsx_scalar_extract_exp): Set return type to const signed
34659         int and set its bif-pattern to xsxexpdp_si, move it from power9-64
34660         to power9 catalog.
34661         * config/rs6000/vsx.md (xsxexpdp): Rename to ...
34662         (xsxexpdp_<mode>): ..., set mode of operand 0 to GPR and remove
34663         TARGET_64BIT check.
34664         * doc/extend.texi (scalar_extract_exp): Remove 64-bit environment
34665         requirement when it has a 64-bit argument.
34667 2023-05-12  Pan Li  <pan2.li@intel.com>
34668             Richard Sandiford  <richard.sandiford@arm.com>
34669             Richard Biener  <rguenther@suse.de>
34670             Jakub Jelinek  <jakub@redhat.com>
34672         * mux-utils.h: Add overload operator == and != for pointer_mux.
34673         * var-tracking.cc: Included mux-utils.h for pointer_tmux.
34674         (decl_or_value): Changed from void * to pointer_mux<tree_node, rtx_def>.
34675         (dv_is_decl_p): Reconciled to the new type, aka pointer_mux.
34676         (dv_as_decl): Ditto.
34677         (dv_as_opaque): Removed due to unnecessary.
34678         (struct variable_hasher): Take decl_or_value as compare_type.
34679         (variable_hasher::equal): Diito.
34680         (dv_from_decl): Reconciled to the new type, aka pointer_mux.
34681         (dv_from_value): Ditto.
34682         (attrs_list_member):  Ditto.
34683         (vars_copy): Ditto.
34684         (var_reg_decl_set): Ditto.
34685         (var_reg_delete_and_set): Ditto.
34686         (find_loc_in_1pdv): Ditto.
34687         (canonicalize_values_star): Ditto.
34688         (variable_post_merge_new_vals): Ditto.
34689         (dump_onepart_variable_differences): Ditto.
34690         (variable_different_p): Ditto.
34691         (set_slot_part): Ditto.
34692         (clobber_slot_part): Ditto.
34693         (clobber_variable_part): Ditto.
34695 2023-05-11  mtsamis  <manolis.tsamis@vrull.eu>
34697         * match.pd: simplify vector shift + bit_and + multiply.
34699 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
34701         * config/arm/arm-mve-builtins-base.cc (vmlaq, vmlasq, vqdmlahq)
34702         (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
34703         * config/arm/arm-mve-builtins-base.def (vmlaq, vmlasq, vqdmlahq)
34704         (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
34705         * config/arm/arm-mve-builtins-base.h (vmlaq, vmlasq, vqdmlahq)
34706         (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
34707         * config/arm/arm-mve-builtins.cc
34708         (function_instance::has_inactive_argument): Handle vmlaq, vmlasq,
34709         vqdmlahq, vqdmlashq, vqrdmlahq, vqrdmlashq.
34710         * config/arm/arm_mve.h (vqrdmlashq): Remove.
34711         (vqrdmlahq): Remove.
34712         (vqdmlashq): Remove.
34713         (vqdmlahq): Remove.
34714         (vmlasq): Remove.
34715         (vmlaq): Remove.
34716         (vmlaq_m): Remove.
34717         (vmlasq_m): Remove.
34718         (vqdmlashq_m): Remove.
34719         (vqdmlahq_m): Remove.
34720         (vqrdmlahq_m): Remove.
34721         (vqrdmlashq_m): Remove.
34722         (vmlasq_n_u8): Remove.
34723         (vmlaq_n_u8): Remove.
34724         (vqrdmlashq_n_s8): Remove.
34725         (vqrdmlahq_n_s8): Remove.
34726         (vqdmlahq_n_s8): Remove.
34727         (vqdmlashq_n_s8): Remove.
34728         (vmlasq_n_s8): Remove.
34729         (vmlaq_n_s8): Remove.
34730         (vmlasq_n_u16): Remove.
34731         (vmlaq_n_u16): Remove.
34732         (vqrdmlashq_n_s16): Remove.
34733         (vqrdmlahq_n_s16): Remove.
34734         (vqdmlashq_n_s16): Remove.
34735         (vqdmlahq_n_s16): Remove.
34736         (vmlasq_n_s16): Remove.
34737         (vmlaq_n_s16): Remove.
34738         (vmlasq_n_u32): Remove.
34739         (vmlaq_n_u32): Remove.
34740         (vqrdmlashq_n_s32): Remove.
34741         (vqrdmlahq_n_s32): Remove.
34742         (vqdmlashq_n_s32): Remove.
34743         (vqdmlahq_n_s32): Remove.
34744         (vmlasq_n_s32): Remove.
34745         (vmlaq_n_s32): Remove.
34746         (vmlaq_m_n_s8): Remove.
34747         (vmlaq_m_n_s32): Remove.
34748         (vmlaq_m_n_s16): Remove.
34749         (vmlaq_m_n_u8): Remove.
34750         (vmlaq_m_n_u32): Remove.
34751         (vmlaq_m_n_u16): Remove.
34752         (vmlasq_m_n_s8): Remove.
34753         (vmlasq_m_n_s32): Remove.
34754         (vmlasq_m_n_s16): Remove.
34755         (vmlasq_m_n_u8): Remove.
34756         (vmlasq_m_n_u32): Remove.
34757         (vmlasq_m_n_u16): Remove.
34758         (vqdmlashq_m_n_s8): Remove.
34759         (vqdmlashq_m_n_s32): Remove.
34760         (vqdmlashq_m_n_s16): Remove.
34761         (vqdmlahq_m_n_s8): Remove.
34762         (vqdmlahq_m_n_s32): Remove.
34763         (vqdmlahq_m_n_s16): Remove.
34764         (vqrdmlahq_m_n_s8): Remove.
34765         (vqrdmlahq_m_n_s32): Remove.
34766         (vqrdmlahq_m_n_s16): Remove.
34767         (vqrdmlashq_m_n_s8): Remove.
34768         (vqrdmlashq_m_n_s32): Remove.
34769         (vqrdmlashq_m_n_s16): Remove.
34770         (__arm_vmlasq_n_u8): Remove.
34771         (__arm_vmlaq_n_u8): Remove.
34772         (__arm_vqrdmlashq_n_s8): Remove.
34773         (__arm_vqdmlashq_n_s8): Remove.
34774         (__arm_vqrdmlahq_n_s8): Remove.
34775         (__arm_vqdmlahq_n_s8): Remove.
34776         (__arm_vmlasq_n_s8): Remove.
34777         (__arm_vmlaq_n_s8): Remove.
34778         (__arm_vmlasq_n_u16): Remove.
34779         (__arm_vmlaq_n_u16): Remove.
34780         (__arm_vqrdmlashq_n_s16): Remove.
34781         (__arm_vqdmlashq_n_s16): Remove.
34782         (__arm_vqrdmlahq_n_s16): Remove.
34783         (__arm_vqdmlahq_n_s16): Remove.
34784         (__arm_vmlasq_n_s16): Remove.
34785         (__arm_vmlaq_n_s16): Remove.
34786         (__arm_vmlasq_n_u32): Remove.
34787         (__arm_vmlaq_n_u32): Remove.
34788         (__arm_vqrdmlashq_n_s32): Remove.
34789         (__arm_vqdmlashq_n_s32): Remove.
34790         (__arm_vqrdmlahq_n_s32): Remove.
34791         (__arm_vqdmlahq_n_s32): Remove.
34792         (__arm_vmlasq_n_s32): Remove.
34793         (__arm_vmlaq_n_s32): Remove.
34794         (__arm_vmlaq_m_n_s8): Remove.
34795         (__arm_vmlaq_m_n_s32): Remove.
34796         (__arm_vmlaq_m_n_s16): Remove.
34797         (__arm_vmlaq_m_n_u8): Remove.
34798         (__arm_vmlaq_m_n_u32): Remove.
34799         (__arm_vmlaq_m_n_u16): Remove.
34800         (__arm_vmlasq_m_n_s8): Remove.
34801         (__arm_vmlasq_m_n_s32): Remove.
34802         (__arm_vmlasq_m_n_s16): Remove.
34803         (__arm_vmlasq_m_n_u8): Remove.
34804         (__arm_vmlasq_m_n_u32): Remove.
34805         (__arm_vmlasq_m_n_u16): Remove.
34806         (__arm_vqdmlahq_m_n_s8): Remove.
34807         (__arm_vqdmlahq_m_n_s32): Remove.
34808         (__arm_vqdmlahq_m_n_s16): Remove.
34809         (__arm_vqrdmlahq_m_n_s8): Remove.
34810         (__arm_vqrdmlahq_m_n_s32): Remove.
34811         (__arm_vqrdmlahq_m_n_s16): Remove.
34812         (__arm_vqrdmlashq_m_n_s8): Remove.
34813         (__arm_vqrdmlashq_m_n_s32): Remove.
34814         (__arm_vqrdmlashq_m_n_s16): Remove.
34815         (__arm_vqdmlashq_m_n_s8): Remove.
34816         (__arm_vqdmlashq_m_n_s16): Remove.
34817         (__arm_vqdmlashq_m_n_s32): Remove.
34818         (__arm_vmlasq): Remove.
34819         (__arm_vmlaq): Remove.
34820         (__arm_vqrdmlashq): Remove.
34821         (__arm_vqdmlashq): Remove.
34822         (__arm_vqrdmlahq): Remove.
34823         (__arm_vqdmlahq): Remove.
34824         (__arm_vmlaq_m): Remove.
34825         (__arm_vmlasq_m): Remove.
34826         (__arm_vqdmlahq_m): Remove.
34827         (__arm_vqrdmlahq_m): Remove.
34828         (__arm_vqrdmlashq_m): Remove.
34829         (__arm_vqdmlashq_m): Remove.
34831 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
34833         * config/arm/iterators.md (MVE_VMLxQ_N): New.
34834         (mve_insn): Add vmla, vmlas, vqdmlah, vqdmlash, vqrdmlah,
34835         vqrdmlash.
34836         (supf): Add VQDMLAHQ_N_S, VQDMLASHQ_N_S, VQRDMLAHQ_N_S,
34837         VQRDMLASHQ_N_S.
34838         * config/arm/mve.md (mve_vmlaq_n_<supf><mode>)
34839         (mve_vmlasq_n_<supf><mode>, mve_vqdmlahq_n_<supf><mode>)
34840         (mve_vqdmlashq_n_<supf><mode>, mve_vqrdmlahq_n_<supf><mode>)
34841         (mve_vqrdmlashq_n_<supf><mode>): Merge into ...
34842         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
34844 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
34846         * config/arm/arm-mve-builtins-shapes.cc (ternary_n): New.
34847         * config/arm/arm-mve-builtins-shapes.h (ternary_n): New.
34849 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
34851         * config/arm/arm-mve-builtins-base.cc (vqdmladhq, vqdmladhxq)
34852         (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
34853         (vqrdmlsdhxq): New.
34854         * config/arm/arm-mve-builtins-base.def (vqdmladhq, vqdmladhxq)
34855         (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
34856         (vqrdmlsdhxq): New.
34857         * config/arm/arm-mve-builtins-base.h (vqdmladhq, vqdmladhxq)
34858         (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
34859         (vqrdmlsdhxq): New.
34860         * config/arm/arm-mve-builtins.cc
34861         (function_instance::has_inactive_argument): Handle vqrdmladhq,
34862         vqrdmladhxq, vqrdmlsdhq, vqrdmlsdhxq vqdmladhq, vqdmladhxq,
34863         vqdmlsdhq, vqdmlsdhxq.
34864         * config/arm/arm_mve.h (vqrdmlsdhxq): Remove.
34865         (vqrdmlsdhq): Remove.
34866         (vqrdmladhxq): Remove.
34867         (vqrdmladhq): Remove.
34868         (vqdmlsdhxq): Remove.
34869         (vqdmlsdhq): Remove.
34870         (vqdmladhxq): Remove.
34871         (vqdmladhq): Remove.
34872         (vqdmladhq_m): Remove.
34873         (vqdmladhxq_m): Remove.
34874         (vqdmlsdhq_m): Remove.
34875         (vqdmlsdhxq_m): Remove.
34876         (vqrdmladhq_m): Remove.
34877         (vqrdmladhxq_m): Remove.
34878         (vqrdmlsdhq_m): Remove.
34879         (vqrdmlsdhxq_m): Remove.
34880         (vqrdmlsdhxq_s8): Remove.
34881         (vqrdmlsdhq_s8): Remove.
34882         (vqrdmladhxq_s8): Remove.
34883         (vqrdmladhq_s8): Remove.
34884         (vqdmlsdhxq_s8): Remove.
34885         (vqdmlsdhq_s8): Remove.
34886         (vqdmladhxq_s8): Remove.
34887         (vqdmladhq_s8): Remove.
34888         (vqrdmlsdhxq_s16): Remove.
34889         (vqrdmlsdhq_s16): Remove.
34890         (vqrdmladhxq_s16): Remove.
34891         (vqrdmladhq_s16): Remove.
34892         (vqdmlsdhxq_s16): Remove.
34893         (vqdmlsdhq_s16): Remove.
34894         (vqdmladhxq_s16): Remove.
34895         (vqdmladhq_s16): Remove.
34896         (vqrdmlsdhxq_s32): Remove.
34897         (vqrdmlsdhq_s32): Remove.
34898         (vqrdmladhxq_s32): Remove.
34899         (vqrdmladhq_s32): Remove.
34900         (vqdmlsdhxq_s32): Remove.
34901         (vqdmlsdhq_s32): Remove.
34902         (vqdmladhxq_s32): Remove.
34903         (vqdmladhq_s32): Remove.
34904         (vqdmladhq_m_s8): Remove.
34905         (vqdmladhq_m_s32): Remove.
34906         (vqdmladhq_m_s16): Remove.
34907         (vqdmladhxq_m_s8): Remove.
34908         (vqdmladhxq_m_s32): Remove.
34909         (vqdmladhxq_m_s16): Remove.
34910         (vqdmlsdhq_m_s8): Remove.
34911         (vqdmlsdhq_m_s32): Remove.
34912         (vqdmlsdhq_m_s16): Remove.
34913         (vqdmlsdhxq_m_s8): Remove.
34914         (vqdmlsdhxq_m_s32): Remove.
34915         (vqdmlsdhxq_m_s16): Remove.
34916         (vqrdmladhq_m_s8): Remove.
34917         (vqrdmladhq_m_s32): Remove.
34918         (vqrdmladhq_m_s16): Remove.
34919         (vqrdmladhxq_m_s8): Remove.
34920         (vqrdmladhxq_m_s32): Remove.
34921         (vqrdmladhxq_m_s16): Remove.
34922         (vqrdmlsdhq_m_s8): Remove.
34923         (vqrdmlsdhq_m_s32): Remove.
34924         (vqrdmlsdhq_m_s16): Remove.
34925         (vqrdmlsdhxq_m_s8): Remove.
34926         (vqrdmlsdhxq_m_s32): Remove.
34927         (vqrdmlsdhxq_m_s16): Remove.
34928         (__arm_vqrdmlsdhxq_s8): Remove.
34929         (__arm_vqrdmlsdhq_s8): Remove.
34930         (__arm_vqrdmladhxq_s8): Remove.
34931         (__arm_vqrdmladhq_s8): Remove.
34932         (__arm_vqdmlsdhxq_s8): Remove.
34933         (__arm_vqdmlsdhq_s8): Remove.
34934         (__arm_vqdmladhxq_s8): Remove.
34935         (__arm_vqdmladhq_s8): Remove.
34936         (__arm_vqrdmlsdhxq_s16): Remove.
34937         (__arm_vqrdmlsdhq_s16): Remove.
34938         (__arm_vqrdmladhxq_s16): Remove.
34939         (__arm_vqrdmladhq_s16): Remove.
34940         (__arm_vqdmlsdhxq_s16): Remove.
34941         (__arm_vqdmlsdhq_s16): Remove.
34942         (__arm_vqdmladhxq_s16): Remove.
34943         (__arm_vqdmladhq_s16): Remove.
34944         (__arm_vqrdmlsdhxq_s32): Remove.
34945         (__arm_vqrdmlsdhq_s32): Remove.
34946         (__arm_vqrdmladhxq_s32): Remove.
34947         (__arm_vqrdmladhq_s32): Remove.
34948         (__arm_vqdmlsdhxq_s32): Remove.
34949         (__arm_vqdmlsdhq_s32): Remove.
34950         (__arm_vqdmladhxq_s32): Remove.
34951         (__arm_vqdmladhq_s32): Remove.
34952         (__arm_vqdmladhq_m_s8): Remove.
34953         (__arm_vqdmladhq_m_s32): Remove.
34954         (__arm_vqdmladhq_m_s16): Remove.
34955         (__arm_vqdmladhxq_m_s8): Remove.
34956         (__arm_vqdmladhxq_m_s32): Remove.
34957         (__arm_vqdmladhxq_m_s16): Remove.
34958         (__arm_vqdmlsdhq_m_s8): Remove.
34959         (__arm_vqdmlsdhq_m_s32): Remove.
34960         (__arm_vqdmlsdhq_m_s16): Remove.
34961         (__arm_vqdmlsdhxq_m_s8): Remove.
34962         (__arm_vqdmlsdhxq_m_s32): Remove.
34963         (__arm_vqdmlsdhxq_m_s16): Remove.
34964         (__arm_vqrdmladhq_m_s8): Remove.
34965         (__arm_vqrdmladhq_m_s32): Remove.
34966         (__arm_vqrdmladhq_m_s16): Remove.
34967         (__arm_vqrdmladhxq_m_s8): Remove.
34968         (__arm_vqrdmladhxq_m_s32): Remove.
34969         (__arm_vqrdmladhxq_m_s16): Remove.
34970         (__arm_vqrdmlsdhq_m_s8): Remove.
34971         (__arm_vqrdmlsdhq_m_s32): Remove.
34972         (__arm_vqrdmlsdhq_m_s16): Remove.
34973         (__arm_vqrdmlsdhxq_m_s8): Remove.
34974         (__arm_vqrdmlsdhxq_m_s32): Remove.
34975         (__arm_vqrdmlsdhxq_m_s16): Remove.
34976         (__arm_vqrdmlsdhxq): Remove.
34977         (__arm_vqrdmlsdhq): Remove.
34978         (__arm_vqrdmladhxq): Remove.
34979         (__arm_vqrdmladhq): Remove.
34980         (__arm_vqdmlsdhxq): Remove.
34981         (__arm_vqdmlsdhq): Remove.
34982         (__arm_vqdmladhxq): Remove.
34983         (__arm_vqdmladhq): Remove.
34984         (__arm_vqdmladhq_m): Remove.
34985         (__arm_vqdmladhxq_m): Remove.
34986         (__arm_vqdmlsdhq_m): Remove.
34987         (__arm_vqdmlsdhxq_m): Remove.
34988         (__arm_vqrdmladhq_m): Remove.
34989         (__arm_vqrdmladhxq_m): Remove.
34990         (__arm_vqrdmlsdhq_m): Remove.
34991         (__arm_vqrdmlsdhxq_m): Remove.
34993 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
34995         * config/arm/iterators.md (MVE_VQxDMLxDHxQ_S): New.
34996         (mve_insn): Add vqdmladh, vqdmladhx, vqdmlsdh, vqdmlsdhx,
34997         vqrdmladh, vqrdmladhx, vqrdmlsdh, vqrdmlsdhx.
34998         (supf): Add VQDMLADHQ_S, VQDMLADHXQ_S, VQDMLSDHQ_S, VQDMLSDHXQ_S,
34999         VQRDMLADHQ_S,VQRDMLADHXQ_S, VQRDMLSDHQ_S, VQRDMLSDHXQ_S.
35000         * config/arm/mve.md (mve_vqrdmladhq_s<mode>)
35001         (mve_vqrdmladhxq_s<mode>, mve_vqrdmlsdhq_s<mode>)
35002         (mve_vqrdmlsdhxq_s<mode>, mve_vqdmlsdhxq_s<mode>)
35003         (mve_vqdmlsdhq_s<mode>, mve_vqdmladhxq_s<mode>)
35004         (mve_vqdmladhq_s<mode>): Merge into ...
35005         (@mve_<mve_insn>q_<supf><mode>): ... this.
35007 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
35009         * config/arm/arm-mve-builtins-shapes.cc (ternary): New.
35010         * config/arm/arm-mve-builtins-shapes.h (ternary): New.
35012 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
35014         * config/arm/arm-mve-builtins-base.cc (vmlaldavaq, vmlaldavaxq)
35015         (vmlsldavaq, vmlsldavaxq): New.
35016         * config/arm/arm-mve-builtins-base.def (vmlaldavaq, vmlaldavaxq)
35017         (vmlsldavaq, vmlsldavaxq): New.
35018         * config/arm/arm-mve-builtins-base.h (vmlaldavaq, vmlaldavaxq)
35019         (vmlsldavaq, vmlsldavaxq): New.
35020         * config/arm/arm_mve.h (vmlaldavaq): Remove.
35021         (vmlaldavaxq): Remove.
35022         (vmlsldavaq): Remove.
35023         (vmlsldavaxq): Remove.
35024         (vmlaldavaq_p): Remove.
35025         (vmlaldavaxq_p): Remove.
35026         (vmlsldavaq_p): Remove.
35027         (vmlsldavaxq_p): Remove.
35028         (vmlaldavaq_s16): Remove.
35029         (vmlaldavaxq_s16): Remove.
35030         (vmlsldavaq_s16): Remove.
35031         (vmlsldavaxq_s16): Remove.
35032         (vmlaldavaq_u16): Remove.
35033         (vmlaldavaq_s32): Remove.
35034         (vmlaldavaxq_s32): Remove.
35035         (vmlsldavaq_s32): Remove.
35036         (vmlsldavaxq_s32): Remove.
35037         (vmlaldavaq_u32): Remove.
35038         (vmlaldavaq_p_s32): Remove.
35039         (vmlaldavaq_p_s16): Remove.
35040         (vmlaldavaq_p_u32): Remove.
35041         (vmlaldavaq_p_u16): Remove.
35042         (vmlaldavaxq_p_s32): Remove.
35043         (vmlaldavaxq_p_s16): Remove.
35044         (vmlsldavaq_p_s32): Remove.
35045         (vmlsldavaq_p_s16): Remove.
35046         (vmlsldavaxq_p_s32): Remove.
35047         (vmlsldavaxq_p_s16): Remove.
35048         (__arm_vmlaldavaq_s16): Remove.
35049         (__arm_vmlaldavaxq_s16): Remove.
35050         (__arm_vmlsldavaq_s16): Remove.
35051         (__arm_vmlsldavaxq_s16): Remove.
35052         (__arm_vmlaldavaq_u16): Remove.
35053         (__arm_vmlaldavaq_s32): Remove.
35054         (__arm_vmlaldavaxq_s32): Remove.
35055         (__arm_vmlsldavaq_s32): Remove.
35056         (__arm_vmlsldavaxq_s32): Remove.
35057         (__arm_vmlaldavaq_u32): Remove.
35058         (__arm_vmlaldavaq_p_s32): Remove.
35059         (__arm_vmlaldavaq_p_s16): Remove.
35060         (__arm_vmlaldavaq_p_u32): Remove.
35061         (__arm_vmlaldavaq_p_u16): Remove.
35062         (__arm_vmlaldavaxq_p_s32): Remove.
35063         (__arm_vmlaldavaxq_p_s16): Remove.
35064         (__arm_vmlsldavaq_p_s32): Remove.
35065         (__arm_vmlsldavaq_p_s16): Remove.
35066         (__arm_vmlsldavaxq_p_s32): Remove.
35067         (__arm_vmlsldavaxq_p_s16): Remove.
35068         (__arm_vmlaldavaq): Remove.
35069         (__arm_vmlaldavaxq): Remove.
35070         (__arm_vmlsldavaq): Remove.
35071         (__arm_vmlsldavaxq): Remove.
35072         (__arm_vmlaldavaq_p): Remove.
35073         (__arm_vmlaldavaxq_p): Remove.
35074         (__arm_vmlsldavaq_p): Remove.
35075         (__arm_vmlsldavaxq_p): Remove.
35077 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
35079         * config/arm/iterators.md (MVE_VMLxLDAVAxQ, MVE_VMLxLDAVAxQ_P):
35080         New.
35081         (mve_insn): Add vmlaldava, vmlaldavax, vmlsldava, vmlsldavax.
35082         (supf): Add VMLALDAVAXQ_P_S, VMLALDAVAXQ_S, VMLSLDAVAQ_P_S,
35083         VMLSLDAVAQ_S, VMLSLDAVAXQ_P_S, VMLSLDAVAXQ_S.
35084         * config/arm/mve.md (mve_vmlaldavaq_<supf><mode>)
35085         (mve_vmlsldavaq_s<mode>, mve_vmlsldavaxq_s<mode>)
35086         (mve_vmlaldavaxq_s<mode>): Merge into ...
35087         (@mve_<mve_insn>q_<supf><mode>): ... this.
35088         (mve_vmlaldavaq_p_<supf><mode>, mve_vmlaldavaxq_p_<supf><mode>)
35089         (mve_vmlsldavaq_p_s<mode>, mve_vmlsldavaxq_p_s<mode>): Merge into
35090         ...
35091         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
35093 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
35095         * config/arm/arm-mve-builtins-shapes.cc (binary_acca_int64): New.
35096         * config/arm/arm-mve-builtins-shapes.h (binary_acca_int64): New.
35098 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
35100         * config/arm/arm-mve-builtins-base.cc (vrmlaldavhq, vrmlaldavhxq)
35101         (vrmlsldavhq, vrmlsldavhxq): New.
35102         * config/arm/arm-mve-builtins-base.def (vrmlaldavhq, vrmlaldavhxq)
35103         (vrmlsldavhq, vrmlsldavhxq): New.
35104         * config/arm/arm-mve-builtins-base.h (vrmlaldavhq, vrmlaldavhxq)
35105         (vrmlsldavhq, vrmlsldavhxq): New.
35106         * config/arm/arm-mve-builtins-functions.h
35107         (unspec_mve_function_exact_insn_pred_p): Handle vrmlaldavhq,
35108         vrmlaldavhxq, vrmlsldavhq, vrmlsldavhxq.
35109         * config/arm/arm_mve.h (vrmlaldavhq): Remove.
35110         (vrmlsldavhxq): Remove.
35111         (vrmlsldavhq): Remove.
35112         (vrmlaldavhxq): Remove.
35113         (vrmlaldavhq_p): Remove.
35114         (vrmlaldavhxq_p): Remove.
35115         (vrmlsldavhq_p): Remove.
35116         (vrmlsldavhxq_p): Remove.
35117         (vrmlaldavhq_u32): Remove.
35118         (vrmlsldavhxq_s32): Remove.
35119         (vrmlsldavhq_s32): Remove.
35120         (vrmlaldavhxq_s32): Remove.
35121         (vrmlaldavhq_s32): Remove.
35122         (vrmlaldavhq_p_s32): Remove.
35123         (vrmlaldavhxq_p_s32): Remove.
35124         (vrmlsldavhq_p_s32): Remove.
35125         (vrmlsldavhxq_p_s32): Remove.
35126         (vrmlaldavhq_p_u32): Remove.
35127         (__arm_vrmlaldavhq_u32): Remove.
35128         (__arm_vrmlsldavhxq_s32): Remove.
35129         (__arm_vrmlsldavhq_s32): Remove.
35130         (__arm_vrmlaldavhxq_s32): Remove.
35131         (__arm_vrmlaldavhq_s32): Remove.
35132         (__arm_vrmlaldavhq_p_s32): Remove.
35133         (__arm_vrmlaldavhxq_p_s32): Remove.
35134         (__arm_vrmlsldavhq_p_s32): Remove.
35135         (__arm_vrmlsldavhxq_p_s32): Remove.
35136         (__arm_vrmlaldavhq_p_u32): Remove.
35137         (__arm_vrmlaldavhq): Remove.
35138         (__arm_vrmlsldavhxq): Remove.
35139         (__arm_vrmlsldavhq): Remove.
35140         (__arm_vrmlaldavhxq): Remove.
35141         (__arm_vrmlaldavhq_p): Remove.
35142         (__arm_vrmlaldavhxq_p): Remove.
35143         (__arm_vrmlsldavhq_p): Remove.
35144         (__arm_vrmlsldavhxq_p): Remove.
35146 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
35148         * config/arm/iterators.md (MVE_VRMLxLDAVxQ, MVE_VRMLxLDAVHxQ_P):
35149         New.
35150         (mve_insn): Add vrmlaldavh, vrmlaldavhx, vrmlsldavh, vrmlsldavhx.
35151         (supf): Add VRMLALDAVHXQ_P_S, VRMLALDAVHXQ_S, VRMLSLDAVHQ_P_S,
35152         VRMLSLDAVHQ_S, VRMLSLDAVHXQ_P_S, VRMLSLDAVHXQ_S.
35153         * config/arm/mve.md (mve_vrmlaldavhxq_sv4si)
35154         (mve_vrmlsldavhq_sv4si, mve_vrmlsldavhxq_sv4si)
35155         (mve_vrmlaldavhq_<supf>v4si): Merge into ...
35156         (@mve_<mve_insn>q_<supf>v4si): ... this.
35157         (mve_vrmlaldavhxq_p_sv4si, mve_vrmlsldavhq_p_sv4si)
35158         (mve_vrmlsldavhxq_p_sv4si, mve_vrmlaldavhq_p_<supf>v4si): Merge
35159         into ...
35160         (@mve_<mve_insn>q_p_<supf>v4si): ... this.
35162 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
35164         * config/arm/arm-mve-builtins-base.cc (vmlaldavq, vmlaldavxq)
35165         (vmlsldavq, vmlsldavxq): New.
35166         * config/arm/arm-mve-builtins-base.def (vmlaldavq, vmlaldavxq)
35167         (vmlsldavq, vmlsldavxq): New.
35168         * config/arm/arm-mve-builtins-base.h (vmlaldavq, vmlaldavxq)
35169         (vmlsldavq, vmlsldavxq): New.
35170         * config/arm/arm_mve.h (vmlaldavq): Remove.
35171         (vmlsldavxq): Remove.
35172         (vmlsldavq): Remove.
35173         (vmlaldavxq): Remove.
35174         (vmlaldavq_p): Remove.
35175         (vmlaldavxq_p): Remove.
35176         (vmlsldavq_p): Remove.
35177         (vmlsldavxq_p): Remove.
35178         (vmlaldavq_u16): Remove.
35179         (vmlsldavxq_s16): Remove.
35180         (vmlsldavq_s16): Remove.
35181         (vmlaldavxq_s16): Remove.
35182         (vmlaldavq_s16): Remove.
35183         (vmlaldavq_u32): Remove.
35184         (vmlsldavxq_s32): Remove.
35185         (vmlsldavq_s32): Remove.
35186         (vmlaldavxq_s32): Remove.
35187         (vmlaldavq_s32): Remove.
35188         (vmlaldavq_p_s16): Remove.
35189         (vmlaldavxq_p_s16): Remove.
35190         (vmlsldavq_p_s16): Remove.
35191         (vmlsldavxq_p_s16): Remove.
35192         (vmlaldavq_p_u16): Remove.
35193         (vmlaldavq_p_s32): Remove.
35194         (vmlaldavxq_p_s32): Remove.
35195         (vmlsldavq_p_s32): Remove.
35196         (vmlsldavxq_p_s32): Remove.
35197         (vmlaldavq_p_u32): Remove.
35198         (__arm_vmlaldavq_u16): Remove.
35199         (__arm_vmlsldavxq_s16): Remove.
35200         (__arm_vmlsldavq_s16): Remove.
35201         (__arm_vmlaldavxq_s16): Remove.
35202         (__arm_vmlaldavq_s16): Remove.
35203         (__arm_vmlaldavq_u32): Remove.
35204         (__arm_vmlsldavxq_s32): Remove.
35205         (__arm_vmlsldavq_s32): Remove.
35206         (__arm_vmlaldavxq_s32): Remove.
35207         (__arm_vmlaldavq_s32): Remove.
35208         (__arm_vmlaldavq_p_s16): Remove.
35209         (__arm_vmlaldavxq_p_s16): Remove.
35210         (__arm_vmlsldavq_p_s16): Remove.
35211         (__arm_vmlsldavxq_p_s16): Remove.
35212         (__arm_vmlaldavq_p_u16): Remove.
35213         (__arm_vmlaldavq_p_s32): Remove.
35214         (__arm_vmlaldavxq_p_s32): Remove.
35215         (__arm_vmlsldavq_p_s32): Remove.
35216         (__arm_vmlsldavxq_p_s32): Remove.
35217         (__arm_vmlaldavq_p_u32): Remove.
35218         (__arm_vmlaldavq): Remove.
35219         (__arm_vmlsldavxq): Remove.
35220         (__arm_vmlsldavq): Remove.
35221         (__arm_vmlaldavxq): Remove.
35222         (__arm_vmlaldavq_p): Remove.
35223         (__arm_vmlaldavxq_p): Remove.
35224         (__arm_vmlsldavq_p): Remove.
35225         (__arm_vmlsldavxq_p): Remove.
35227 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
35229         * config/arm/iterators.md (MVE_VMLxLDAVxQ, MVE_VMLxLDAVxQ_P): New.
35230         (mve_insn): Add vmlaldav, vmlaldavx, vmlsldav, vmlsldavx.
35231         (supf): Add VMLALDAVXQ_S, VMLSLDAVQ_S, VMLSLDAVXQ_S,
35232         VMLALDAVXQ_P_S, VMLSLDAVQ_P_S, VMLSLDAVXQ_P_S.
35233         * config/arm/mve.md (mve_vmlaldavq_<supf><mode>)
35234         (mve_vmlaldavxq_s<mode>, mve_vmlsldavq_s<mode>)
35235         (mve_vmlsldavxq_s<mode>): Merge into ...
35236         (@mve_<mve_insn>q_<supf><mode>): ... this.
35237         (mve_vmlaldavq_p_<supf><mode>, mve_vmlaldavxq_p_s<mode>)
35238         (mve_vmlsldavq_p_s<mode>, mve_vmlsldavxq_p_s<mode>): Merge into
35239         ...
35240         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
35242 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
35244         * config/arm/arm-mve-builtins-shapes.cc (binary_acc_int64): New.
35245         * config/arm/arm-mve-builtins-shapes.h (binary_acc_int64): New.
35247 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
35249         * config/arm/arm-mve-builtins-base.cc (vabavq): New.
35250         * config/arm/arm-mve-builtins-base.def (vabavq): New.
35251         * config/arm/arm-mve-builtins-base.h (vabavq): New.
35252         * config/arm/arm_mve.h (vabavq): Remove.
35253         (vabavq_p): Remove.
35254         (vabavq_s8): Remove.
35255         (vabavq_s16): Remove.
35256         (vabavq_s32): Remove.
35257         (vabavq_u8): Remove.
35258         (vabavq_u16): Remove.
35259         (vabavq_u32): Remove.
35260         (vabavq_p_s8): Remove.
35261         (vabavq_p_u8): Remove.
35262         (vabavq_p_s16): Remove.
35263         (vabavq_p_u16): Remove.
35264         (vabavq_p_s32): Remove.
35265         (vabavq_p_u32): Remove.
35266         (__arm_vabavq_s8): Remove.
35267         (__arm_vabavq_s16): Remove.
35268         (__arm_vabavq_s32): Remove.
35269         (__arm_vabavq_u8): Remove.
35270         (__arm_vabavq_u16): Remove.
35271         (__arm_vabavq_u32): Remove.
35272         (__arm_vabavq_p_s8): Remove.
35273         (__arm_vabavq_p_u8): Remove.
35274         (__arm_vabavq_p_s16): Remove.
35275         (__arm_vabavq_p_u16): Remove.
35276         (__arm_vabavq_p_s32): Remove.
35277         (__arm_vabavq_p_u32): Remove.
35278         (__arm_vabavq): Remove.
35279         (__arm_vabavq_p): Remove.
35281 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
35283         * config/arm/iterators.md (mve_insn): Add vabav.
35284         * config/arm/mve.md (mve_vabavq_<supf><mode>): Rename into ...
35285         (@mve_<mve_insn>q_<supf><mode>): ... this,.
35286         (mve_vabavq_p_<supf><mode>): Rename into ...
35287         (@mve_<mve_insn>q_p_<supf><mode>): ... this,.
35289 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
35291         * config/arm/arm-mve-builtins-base.cc (vmladavaxq, vmladavaq)
35292         (vmlsdavaq, vmlsdavaxq): New.
35293         * config/arm/arm-mve-builtins-base.def (vmladavaxq, vmladavaq)
35294         (vmlsdavaq, vmlsdavaxq): New.
35295         * config/arm/arm-mve-builtins-base.h (vmladavaxq, vmladavaq)
35296         (vmlsdavaq, vmlsdavaxq): New.
35297         * config/arm/arm_mve.h (vmladavaq): Remove.
35298         (vmlsdavaxq): Remove.
35299         (vmlsdavaq): Remove.
35300         (vmladavaxq): Remove.
35301         (vmladavaq_p): Remove.
35302         (vmladavaxq_p): Remove.
35303         (vmlsdavaq_p): Remove.
35304         (vmlsdavaxq_p): Remove.
35305         (vmladavaq_u8): Remove.
35306         (vmlsdavaxq_s8): Remove.
35307         (vmlsdavaq_s8): Remove.
35308         (vmladavaxq_s8): Remove.
35309         (vmladavaq_s8): Remove.
35310         (vmladavaq_u16): Remove.
35311         (vmlsdavaxq_s16): Remove.
35312         (vmlsdavaq_s16): Remove.
35313         (vmladavaxq_s16): Remove.
35314         (vmladavaq_s16): Remove.
35315         (vmladavaq_u32): Remove.
35316         (vmlsdavaxq_s32): Remove.
35317         (vmlsdavaq_s32): Remove.
35318         (vmladavaxq_s32): Remove.
35319         (vmladavaq_s32): Remove.
35320         (vmladavaq_p_s8): Remove.
35321         (vmladavaq_p_s32): Remove.
35322         (vmladavaq_p_s16): Remove.
35323         (vmladavaq_p_u8): Remove.
35324         (vmladavaq_p_u32): Remove.
35325         (vmladavaq_p_u16): Remove.
35326         (vmladavaxq_p_s8): Remove.
35327         (vmladavaxq_p_s32): Remove.
35328         (vmladavaxq_p_s16): Remove.
35329         (vmlsdavaq_p_s8): Remove.
35330         (vmlsdavaq_p_s32): Remove.
35331         (vmlsdavaq_p_s16): Remove.
35332         (vmlsdavaxq_p_s8): Remove.
35333         (vmlsdavaxq_p_s32): Remove.
35334         (vmlsdavaxq_p_s16): Remove.
35335         (__arm_vmladavaq_u8): Remove.
35336         (__arm_vmlsdavaxq_s8): Remove.
35337         (__arm_vmlsdavaq_s8): Remove.
35338         (__arm_vmladavaxq_s8): Remove.
35339         (__arm_vmladavaq_s8): Remove.
35340         (__arm_vmladavaq_u16): Remove.
35341         (__arm_vmlsdavaxq_s16): Remove.
35342         (__arm_vmlsdavaq_s16): Remove.
35343         (__arm_vmladavaxq_s16): Remove.
35344         (__arm_vmladavaq_s16): Remove.
35345         (__arm_vmladavaq_u32): Remove.
35346         (__arm_vmlsdavaxq_s32): Remove.
35347         (__arm_vmlsdavaq_s32): Remove.
35348         (__arm_vmladavaxq_s32): Remove.
35349         (__arm_vmladavaq_s32): Remove.
35350         (__arm_vmladavaq_p_s8): Remove.
35351         (__arm_vmladavaq_p_s32): Remove.
35352         (__arm_vmladavaq_p_s16): Remove.
35353         (__arm_vmladavaq_p_u8): Remove.
35354         (__arm_vmladavaq_p_u32): Remove.
35355         (__arm_vmladavaq_p_u16): Remove.
35356         (__arm_vmladavaxq_p_s8): Remove.
35357         (__arm_vmladavaxq_p_s32): Remove.
35358         (__arm_vmladavaxq_p_s16): Remove.
35359         (__arm_vmlsdavaq_p_s8): Remove.
35360         (__arm_vmlsdavaq_p_s32): Remove.
35361         (__arm_vmlsdavaq_p_s16): Remove.
35362         (__arm_vmlsdavaxq_p_s8): Remove.
35363         (__arm_vmlsdavaxq_p_s32): Remove.
35364         (__arm_vmlsdavaxq_p_s16): Remove.
35365         (__arm_vmladavaq): Remove.
35366         (__arm_vmlsdavaxq): Remove.
35367         (__arm_vmlsdavaq): Remove.
35368         (__arm_vmladavaxq): Remove.
35369         (__arm_vmladavaq_p): Remove.
35370         (__arm_vmladavaxq_p): Remove.
35371         (__arm_vmlsdavaq_p): Remove.
35372         (__arm_vmlsdavaxq_p): Remove.
35374 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
35376         * config/arm/arm-mve-builtins-shapes.cc (binary_acca_int32): New.
35377         * config/arm/arm-mve-builtins-shapes.h  (binary_acca_int32): New.
35379 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
35381         * config/arm/arm-mve-builtins-base.cc (vmladavq, vmladavxq)
35382         (vmlsdavq, vmlsdavxq): New.
35383         * config/arm/arm-mve-builtins-base.def (vmladavq, vmladavxq)
35384         (vmlsdavq, vmlsdavxq): New.
35385         * config/arm/arm-mve-builtins-base.h (vmladavq, vmladavxq)
35386         (vmlsdavq, vmlsdavxq): New.
35387         * config/arm/arm_mve.h (vmladavq): Remove.
35388         (vmlsdavxq): Remove.
35389         (vmlsdavq): Remove.
35390         (vmladavxq): Remove.
35391         (vmladavq_p): Remove.
35392         (vmlsdavxq_p): Remove.
35393         (vmlsdavq_p): Remove.
35394         (vmladavxq_p): Remove.
35395         (vmladavq_u8): Remove.
35396         (vmlsdavxq_s8): Remove.
35397         (vmlsdavq_s8): Remove.
35398         (vmladavxq_s8): Remove.
35399         (vmladavq_s8): Remove.
35400         (vmladavq_u16): Remove.
35401         (vmlsdavxq_s16): Remove.
35402         (vmlsdavq_s16): Remove.
35403         (vmladavxq_s16): Remove.
35404         (vmladavq_s16): Remove.
35405         (vmladavq_u32): Remove.
35406         (vmlsdavxq_s32): Remove.
35407         (vmlsdavq_s32): Remove.
35408         (vmladavxq_s32): Remove.
35409         (vmladavq_s32): Remove.
35410         (vmladavq_p_u8): Remove.
35411         (vmlsdavxq_p_s8): Remove.
35412         (vmlsdavq_p_s8): Remove.
35413         (vmladavxq_p_s8): Remove.
35414         (vmladavq_p_s8): Remove.
35415         (vmladavq_p_u16): Remove.
35416         (vmlsdavxq_p_s16): Remove.
35417         (vmlsdavq_p_s16): Remove.
35418         (vmladavxq_p_s16): Remove.
35419         (vmladavq_p_s16): Remove.
35420         (vmladavq_p_u32): Remove.
35421         (vmlsdavxq_p_s32): Remove.
35422         (vmlsdavq_p_s32): Remove.
35423         (vmladavxq_p_s32): Remove.
35424         (vmladavq_p_s32): Remove.
35425         (__arm_vmladavq_u8): Remove.
35426         (__arm_vmlsdavxq_s8): Remove.
35427         (__arm_vmlsdavq_s8): Remove.
35428         (__arm_vmladavxq_s8): Remove.
35429         (__arm_vmladavq_s8): Remove.
35430         (__arm_vmladavq_u16): Remove.
35431         (__arm_vmlsdavxq_s16): Remove.
35432         (__arm_vmlsdavq_s16): Remove.
35433         (__arm_vmladavxq_s16): Remove.
35434         (__arm_vmladavq_s16): Remove.
35435         (__arm_vmladavq_u32): Remove.
35436         (__arm_vmlsdavxq_s32): Remove.
35437         (__arm_vmlsdavq_s32): Remove.
35438         (__arm_vmladavxq_s32): Remove.
35439         (__arm_vmladavq_s32): Remove.
35440         (__arm_vmladavq_p_u8): Remove.
35441         (__arm_vmlsdavxq_p_s8): Remove.
35442         (__arm_vmlsdavq_p_s8): Remove.
35443         (__arm_vmladavxq_p_s8): Remove.
35444         (__arm_vmladavq_p_s8): Remove.
35445         (__arm_vmladavq_p_u16): Remove.
35446         (__arm_vmlsdavxq_p_s16): Remove.
35447         (__arm_vmlsdavq_p_s16): Remove.
35448         (__arm_vmladavxq_p_s16): Remove.
35449         (__arm_vmladavq_p_s16): Remove.
35450         (__arm_vmladavq_p_u32): Remove.
35451         (__arm_vmlsdavxq_p_s32): Remove.
35452         (__arm_vmlsdavq_p_s32): Remove.
35453         (__arm_vmladavxq_p_s32): Remove.
35454         (__arm_vmladavq_p_s32): Remove.
35455         (__arm_vmladavq): Remove.
35456         (__arm_vmlsdavxq): Remove.
35457         (__arm_vmlsdavq): Remove.
35458         (__arm_vmladavxq): Remove.
35459         (__arm_vmladavq_p): Remove.
35460         (__arm_vmlsdavxq_p): Remove.
35461         (__arm_vmlsdavq_p): Remove.
35462         (__arm_vmladavxq_p): Remove.
35464 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
35466         * config/arm/iterators.md (MVE_VMLxDAVQ, MVE_VMLxDAVQ_P)
35467         (MVE_VMLxDAVAQ, MVE_VMLxDAVAQ_P): New.
35468         (mve_insn): Add vmladava, vmladavax, vmladav, vmladavx, vmlsdava,
35469         vmlsdavax, vmlsdav, vmlsdavx.
35470         (supf): Add VMLADAVAXQ_P_S, VMLADAVAXQ_S, VMLADAVXQ_P_S,
35471         VMLADAVXQ_S, VMLSDAVAQ_P_S, VMLSDAVAQ_S, VMLSDAVAXQ_P_S,
35472         VMLSDAVAXQ_S, VMLSDAVQ_P_S, VMLSDAVQ_S, VMLSDAVXQ_P_S,
35473         VMLSDAVXQ_S.
35474         * config/arm/mve.md (mve_vmladavq_<supf><mode>)
35475         (mve_vmladavxq_s<mode>, mve_vmlsdavq_s<mode>)
35476         (mve_vmlsdavxq_s<mode>): Merge into ...
35477         (@mve_<mve_insn>q_<supf><mode>): ... this.
35478         (mve_vmlsdavaq_s<mode>, mve_vmladavaxq_s<mode>)
35479         (mve_vmlsdavaxq_s<mode>, mve_vmladavaq_<supf><mode>): Merge into
35480         ...
35481         (@mve_<mve_insn>q_<supf><mode>): ... this.
35482         (mve_vmladavq_p_<supf><mode>, mve_vmladavxq_p_s<mode>)
35483         (mve_vmlsdavq_p_s<mode>, mve_vmlsdavxq_p_s<mode>): Merge into ...
35484         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
35485         (mve_vmladavaq_p_<supf><mode>, mve_vmladavaxq_p_s<mode>)
35486         (mve_vmlsdavaq_p_s<mode>, mve_vmlsdavaxq_p_s<mode>): Merge into
35487         ...
35488         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
35490 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
35492         * config/arm/arm-mve-builtins-shapes.cc (binary_acc_int32): New.
35493         * config/arm/arm-mve-builtins-shapes.h (binary_acc_int32): New.
35495 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
35497         * config/arm/arm-mve-builtins-base.cc (vaddlvaq): New.
35498         * config/arm/arm-mve-builtins-base.def (vaddlvaq): New.
35499         * config/arm/arm-mve-builtins-base.h (vaddlvaq): New.
35500         * config/arm/arm_mve.h (vaddlvaq): Remove.
35501         (vaddlvaq_p): Remove.
35502         (vaddlvaq_u32): Remove.
35503         (vaddlvaq_s32): Remove.
35504         (vaddlvaq_p_s32): Remove.
35505         (vaddlvaq_p_u32): Remove.
35506         (__arm_vaddlvaq_u32): Remove.
35507         (__arm_vaddlvaq_s32): Remove.
35508         (__arm_vaddlvaq_p_s32): Remove.
35509         (__arm_vaddlvaq_p_u32): Remove.
35510         (__arm_vaddlvaq): Remove.
35511         (__arm_vaddlvaq_p): Remove.
35513 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
35515         * config/arm/arm-mve-builtins-shapes.cc (unary_widen_acc): New.
35516         * config/arm/arm-mve-builtins-shapes.h (unary_widen_acc): New.
35518 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
35520         * config/arm/iterators.md (mve_insn): Add vaddlva.
35521         * config/arm/mve.md (mve_vaddlvaq_<supf>v4si): Rename into ...
35522         (@mve_<mve_insn>q_<supf>v4si): ... this.
35523         (mve_vaddlvaq_p_<supf>v4si): Rename into ...
35524         (@mve_<mve_insn>q_p_<supf>v4si): ... this.
35526 2023-05-11  Uros Bizjak  <ubizjak@gmail.com>
35528         PR target/109807
35529         * config/i386/i386.cc (ix86_widen_mult_cost):
35530         Handle V4HImode and V2SImode.
35532 2023-05-11  Andrew Pinski  <apinski@marvell.com>
35534         * tree-ssa-dce.cc (simple_dce_from_worklist): For ssa names
35535         defined by a phi node with more than one uses, allow for the
35536         only uses are in that same defining statement.
35538 2023-05-11  Robin Dapp  <rdapp@ventanamicro.com>
35540         * config/riscv/riscv.cc (riscv_const_insns): Add permissible
35541         vector constants.
35543 2023-05-11  Pan Li  <pan2.li@intel.com>
35545         * config/riscv/vector.md: Add comments for simplifying to vmset.
35547 2023-05-11  Robin Dapp  <rdapp@ventanamicro.com>
35549         * config/riscv/autovec.md (<optab><mode>3): Add scalar shift
35550         pattern.
35551         (v<optab><mode>3): Add vector shift pattern.
35552         * config/riscv/vector-iterators.md: New iterator.
35554 2023-05-11  Robin Dapp  <rdapp@ventanamicro.com>
35556         * config/riscv/autovec.md: Use renamed functions.
35557         * config/riscv/riscv-protos.h (emit_vlmax_op): Rename.
35558         (emit_vlmax_reg_op): To this.
35559         (emit_nonvlmax_op): Rename.
35560         (emit_len_op): To this.
35561         (emit_nonvlmax_binop): Rename.
35562         (emit_len_binop): To this.
35563         * config/riscv/riscv-v.cc (emit_pred_op): Add default parameter.
35564         (emit_pred_binop): Remove vlmax_p.
35565         (emit_vlmax_op): Rename.
35566         (emit_vlmax_reg_op): To this.
35567         (emit_nonvlmax_op): Rename.
35568         (emit_len_op): To this.
35569         (emit_nonvlmax_binop): Rename.
35570         (emit_len_binop): To this.
35571         (sew64_scalar_helper): Use renamed functions.
35572         (expand_tuple_move): Use renamed functions.
35573         * config/riscv/riscv.cc (vector_zero_call_used_regs): Use
35574         renamed functions.
35575         * config/riscv/vector.md: Use renamed functions.
35577 2023-05-11  Robin Dapp  <rdapp@ventanamicro.com>
35578             Michael Collison  <collison@rivosinc.com>
35580         * config/riscv/autovec.md (<optab><mode>3): Add integer binops.
35581         * config/riscv/riscv-protos.h (emit_nonvlmax_binop): Declare.
35582         * config/riscv/riscv-v.cc (emit_pred_op): New function.
35583         (set_expander_dest_and_mask): New function.
35584         (emit_pred_binop): New function.
35585         (emit_nonvlmax_binop): New function.
35587 2023-05-11  Pan Li  <pan2.li@intel.com>
35589         * cfgloopmanip.cc (create_empty_loop_on_edge): Add PLUS_EXPR.
35590         * gimple-loop-interchange.cc
35591         (tree_loop_interchange::map_inductions_to_loop): Ditto.
35592         * tree-ssa-loop-ivcanon.cc (create_canonical_iv): Ditto.
35593         * tree-ssa-loop-ivopts.cc (create_new_iv): Ditto.
35594         * tree-ssa-loop-manip.cc (create_iv): Ditto.
35595         (tree_transform_and_unroll_loop): Ditto.
35596         (canonicalize_loop_ivs): Ditto.
35597         * tree-ssa-loop-manip.h (create_iv): Ditto.
35598         * tree-vect-data-refs.cc (vect_create_data_ref_ptr): Ditto.
35599         * tree-vect-loop-manip.cc (vect_set_loop_controls_directly):
35600         Ditto.
35601         (vect_set_loop_condition_normal): Ditto.
35602         * tree-vect-loop.cc (vect_create_epilog_for_reduction): Ditto.
35603         * tree-vect-stmts.cc (vectorizable_store): Ditto.
35604         (vectorizable_load): Ditto.
35606 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
35608         * config/arm/arm-mve-builtins-base.cc (vmovlbq, vmovltq): New.
35609         * config/arm/arm-mve-builtins-base.def (vmovlbq, vmovltq): New.
35610         * config/arm/arm-mve-builtins-base.h (vmovlbq, vmovltq): New.
35611         * config/arm/arm_mve.h (vmovlbq): Remove.
35612         (vmovltq): Remove.
35613         (vmovlbq_m): Remove.
35614         (vmovltq_m): Remove.
35615         (vmovlbq_x): Remove.
35616         (vmovltq_x): Remove.
35617         (vmovlbq_s8): Remove.
35618         (vmovlbq_s16): Remove.
35619         (vmovltq_s8): Remove.
35620         (vmovltq_s16): Remove.
35621         (vmovltq_u8): Remove.
35622         (vmovltq_u16): Remove.
35623         (vmovlbq_u8): Remove.
35624         (vmovlbq_u16): Remove.
35625         (vmovlbq_m_s8): Remove.
35626         (vmovltq_m_s8): Remove.
35627         (vmovlbq_m_u8): Remove.
35628         (vmovltq_m_u8): Remove.
35629         (vmovlbq_m_s16): Remove.
35630         (vmovltq_m_s16): Remove.
35631         (vmovlbq_m_u16): Remove.
35632         (vmovltq_m_u16): Remove.
35633         (vmovlbq_x_s8): Remove.
35634         (vmovlbq_x_s16): Remove.
35635         (vmovlbq_x_u8): Remove.
35636         (vmovlbq_x_u16): Remove.
35637         (vmovltq_x_s8): Remove.
35638         (vmovltq_x_s16): Remove.
35639         (vmovltq_x_u8): Remove.
35640         (vmovltq_x_u16): Remove.
35641         (__arm_vmovlbq_s8): Remove.
35642         (__arm_vmovlbq_s16): Remove.
35643         (__arm_vmovltq_s8): Remove.
35644         (__arm_vmovltq_s16): Remove.
35645         (__arm_vmovltq_u8): Remove.
35646         (__arm_vmovltq_u16): Remove.
35647         (__arm_vmovlbq_u8): Remove.
35648         (__arm_vmovlbq_u16): Remove.
35649         (__arm_vmovlbq_m_s8): Remove.
35650         (__arm_vmovltq_m_s8): Remove.
35651         (__arm_vmovlbq_m_u8): Remove.
35652         (__arm_vmovltq_m_u8): Remove.
35653         (__arm_vmovlbq_m_s16): Remove.
35654         (__arm_vmovltq_m_s16): Remove.
35655         (__arm_vmovlbq_m_u16): Remove.
35656         (__arm_vmovltq_m_u16): Remove.
35657         (__arm_vmovlbq_x_s8): Remove.
35658         (__arm_vmovlbq_x_s16): Remove.
35659         (__arm_vmovlbq_x_u8): Remove.
35660         (__arm_vmovlbq_x_u16): Remove.
35661         (__arm_vmovltq_x_s8): Remove.
35662         (__arm_vmovltq_x_s16): Remove.
35663         (__arm_vmovltq_x_u8): Remove.
35664         (__arm_vmovltq_x_u16): Remove.
35665         (__arm_vmovlbq): Remove.
35666         (__arm_vmovltq): Remove.
35667         (__arm_vmovlbq_m): Remove.
35668         (__arm_vmovltq_m): Remove.
35669         (__arm_vmovlbq_x): Remove.
35670         (__arm_vmovltq_x): Remove.
35672 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
35674         * config/arm/arm-mve-builtins-shapes.cc (unary_widen): New.
35675         * config/arm/arm-mve-builtins-shapes.h (unary_widen): New.
35677 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
35679         * config/arm/iterators.md (mve_insn): Add vmovlb, vmovlt.
35680         (VMOVLBQ, VMOVLTQ): Merge into ...
35681         (VMOVLxQ): ... this.
35682         (VMOVLTQ_M, VMOVLBQ_M): Merge into ...
35683         (VMOVLxQ_M): ... this.
35684         * config/arm/mve.md (mve_vmovltq_<supf><mode>)
35685         (mve_vmovlbq_<supf><mode>): Merge into ...
35686         (@mve_<mve_insn>q_<supf><mode>): ... this.
35687         (mve_vmovlbq_m_<supf><mode>, mve_vmovltq_m_<supf><mode>): Merge
35688         into ...
35689         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
35691 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
35693         * config/arm/arm-mve-builtins-base.cc (vaddlvq): New.
35694         * config/arm/arm-mve-builtins-base.def (vaddlvq): New.
35695         * config/arm/arm-mve-builtins-base.h (vaddlvq): New.
35696         * config/arm/arm-mve-builtins-functions.h
35697         (unspec_mve_function_exact_insn_pred_p): Handle vaddlvq.
35698         * config/arm/arm_mve.h (vaddlvq): Remove.
35699         (vaddlvq_p): Remove.
35700         (vaddlvq_s32): Remove.
35701         (vaddlvq_u32): Remove.
35702         (vaddlvq_p_s32): Remove.
35703         (vaddlvq_p_u32): Remove.
35704         (__arm_vaddlvq_s32): Remove.
35705         (__arm_vaddlvq_u32): Remove.
35706         (__arm_vaddlvq_p_s32): Remove.
35707         (__arm_vaddlvq_p_u32): Remove.
35708         (__arm_vaddlvq): Remove.
35709         (__arm_vaddlvq_p): Remove.
35711 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
35713         * config/arm/iterators.md (mve_insn): Add vaddlv.
35714         * config/arm/mve.md (mve_vaddlvq_<supf>v4si): Rename into ...
35715         (@mve_<mve_insn>q_<supf>v4si): ... this.
35716         (mve_vaddlvq_p_<supf>v4si): Rename into ...
35717         (@mve_<mve_insn>q_p_<supf>v4si): ... this.
35719 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
35721         * config/arm/arm-mve-builtins-shapes.cc (unary_acc): New.
35722         * config/arm/arm-mve-builtins-shapes.h (unary_acc): New.
35724 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
35726         * config/arm/arm-mve-builtins-base.cc (vaddvaq): New.
35727         * config/arm/arm-mve-builtins-base.def (vaddvaq): New.
35728         * config/arm/arm-mve-builtins-base.h (vaddvaq): New.
35729         * config/arm/arm_mve.h (vaddvaq): Remove.
35730         (vaddvaq_p): Remove.
35731         (vaddvaq_u8): Remove.
35732         (vaddvaq_s8): Remove.
35733         (vaddvaq_u16): Remove.
35734         (vaddvaq_s16): Remove.
35735         (vaddvaq_u32): Remove.
35736         (vaddvaq_s32): Remove.
35737         (vaddvaq_p_u8): Remove.
35738         (vaddvaq_p_s8): Remove.
35739         (vaddvaq_p_u16): Remove.
35740         (vaddvaq_p_s16): Remove.
35741         (vaddvaq_p_u32): Remove.
35742         (vaddvaq_p_s32): Remove.
35743         (__arm_vaddvaq_u8): Remove.
35744         (__arm_vaddvaq_s8): Remove.
35745         (__arm_vaddvaq_u16): Remove.
35746         (__arm_vaddvaq_s16): Remove.
35747         (__arm_vaddvaq_u32): Remove.
35748         (__arm_vaddvaq_s32): Remove.
35749         (__arm_vaddvaq_p_u8): Remove.
35750         (__arm_vaddvaq_p_s8): Remove.
35751         (__arm_vaddvaq_p_u16): Remove.
35752         (__arm_vaddvaq_p_s16): Remove.
35753         (__arm_vaddvaq_p_u32): Remove.
35754         (__arm_vaddvaq_p_s32): Remove.
35755         (__arm_vaddvaq): Remove.
35756         (__arm_vaddvaq_p): Remove.
35758 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
35760         * config/arm/arm-mve-builtins-shapes.cc (unary_int32_acc): New.
35761         * config/arm/arm-mve-builtins-shapes.h (unary_int32_acc): New.
35763 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
35765         * config/arm/iterators.md (mve_insn): Add vaddva.
35766         * config/arm/mve.md (mve_vaddvaq_<supf><mode>): Rename into ...
35767         (@mve_<mve_insn>q_<supf><mode>): ... this.
35768         (mve_vaddvaq_p_<supf><mode>): Rename into ...
35769         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
35771 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
35773         * config/arm/arm-mve-builtins-base.cc (vaddvq): New.
35774         * config/arm/arm-mve-builtins-base.def (vaddvq): New.
35775         * config/arm/arm-mve-builtins-base.h (vaddvq): New.
35776         * config/arm/arm_mve.h (vaddvq): Remove.
35777         (vaddvq_p): Remove.
35778         (vaddvq_s8): Remove.
35779         (vaddvq_s16): Remove.
35780         (vaddvq_s32): Remove.
35781         (vaddvq_u8): Remove.
35782         (vaddvq_u16): Remove.
35783         (vaddvq_u32): Remove.
35784         (vaddvq_p_u8): Remove.
35785         (vaddvq_p_s8): Remove.
35786         (vaddvq_p_u16): Remove.
35787         (vaddvq_p_s16): Remove.
35788         (vaddvq_p_u32): Remove.
35789         (vaddvq_p_s32): Remove.
35790         (__arm_vaddvq_s8): Remove.
35791         (__arm_vaddvq_s16): Remove.
35792         (__arm_vaddvq_s32): Remove.
35793         (__arm_vaddvq_u8): Remove.
35794         (__arm_vaddvq_u16): Remove.
35795         (__arm_vaddvq_u32): Remove.
35796         (__arm_vaddvq_p_u8): Remove.
35797         (__arm_vaddvq_p_s8): Remove.
35798         (__arm_vaddvq_p_u16): Remove.
35799         (__arm_vaddvq_p_s16): Remove.
35800         (__arm_vaddvq_p_u32): Remove.
35801         (__arm_vaddvq_p_s32): Remove.
35802         (__arm_vaddvq): Remove.
35803         (__arm_vaddvq_p): Remove.
35805 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
35807         * config/arm/arm-mve-builtins-shapes.cc (unary_int32): New.
35808         * config/arm/arm-mve-builtins-shapes.h (unary_int32): New.
35810 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
35812         * config/arm/iterators.md (mve_insn): Add vaddv.
35813         * config/arm/mve.md (@mve_vaddvq_<supf><mode>): Rename into ...
35814         (@mve_<mve_insn>q_<supf><mode>): ... this.
35815         (mve_vaddvq_p_<supf><mode>): Rename into ...
35816         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
35817         * config/arm/vec-common.md: Use gen_mve_q instead of
35818         gen_mve_vaddvq.
35820 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
35822         * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N): New.
35823         (vdupq): New.
35824         * config/arm/arm-mve-builtins-base.def (vdupq): New.
35825         * config/arm/arm-mve-builtins-base.h: (vdupq): New.
35826         * config/arm/arm_mve.h (vdupq_n): Remove.
35827         (vdupq_m): Remove.
35828         (vdupq_n_f16): Remove.
35829         (vdupq_n_f32): Remove.
35830         (vdupq_n_s8): Remove.
35831         (vdupq_n_s16): Remove.
35832         (vdupq_n_s32): Remove.
35833         (vdupq_n_u8): Remove.
35834         (vdupq_n_u16): Remove.
35835         (vdupq_n_u32): Remove.
35836         (vdupq_m_n_u8): Remove.
35837         (vdupq_m_n_s8): Remove.
35838         (vdupq_m_n_u16): Remove.
35839         (vdupq_m_n_s16): Remove.
35840         (vdupq_m_n_u32): Remove.
35841         (vdupq_m_n_s32): Remove.
35842         (vdupq_m_n_f16): Remove.
35843         (vdupq_m_n_f32): Remove.
35844         (vdupq_x_n_s8): Remove.
35845         (vdupq_x_n_s16): Remove.
35846         (vdupq_x_n_s32): Remove.
35847         (vdupq_x_n_u8): Remove.
35848         (vdupq_x_n_u16): Remove.
35849         (vdupq_x_n_u32): Remove.
35850         (vdupq_x_n_f16): Remove.
35851         (vdupq_x_n_f32): Remove.
35852         (__arm_vdupq_n_s8): Remove.
35853         (__arm_vdupq_n_s16): Remove.
35854         (__arm_vdupq_n_s32): Remove.
35855         (__arm_vdupq_n_u8): Remove.
35856         (__arm_vdupq_n_u16): Remove.
35857         (__arm_vdupq_n_u32): Remove.
35858         (__arm_vdupq_m_n_u8): Remove.
35859         (__arm_vdupq_m_n_s8): Remove.
35860         (__arm_vdupq_m_n_u16): Remove.
35861         (__arm_vdupq_m_n_s16): Remove.
35862         (__arm_vdupq_m_n_u32): Remove.
35863         (__arm_vdupq_m_n_s32): Remove.
35864         (__arm_vdupq_x_n_s8): Remove.
35865         (__arm_vdupq_x_n_s16): Remove.
35866         (__arm_vdupq_x_n_s32): Remove.
35867         (__arm_vdupq_x_n_u8): Remove.
35868         (__arm_vdupq_x_n_u16): Remove.
35869         (__arm_vdupq_x_n_u32): Remove.
35870         (__arm_vdupq_n_f16): Remove.
35871         (__arm_vdupq_n_f32): Remove.
35872         (__arm_vdupq_m_n_f16): Remove.
35873         (__arm_vdupq_m_n_f32): Remove.
35874         (__arm_vdupq_x_n_f16): Remove.
35875         (__arm_vdupq_x_n_f32): Remove.
35876         (__arm_vdupq_n): Remove.
35877         (__arm_vdupq_m): Remove.
35879 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
35881         * config/arm/arm-mve-builtins-shapes.cc (unary_n): New.
35882         * config/arm/arm-mve-builtins-shapes.h (unary_n): New.
35884 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
35886         * config/arm/iterators.md (MVE_FP_M_N_VDUPQ_ONLY)
35887         (MVE_FP_N_VDUPQ_ONLY): New.
35888         (mve_insn): Add vdupq.
35889         * config/arm/mve.md (mve_vdupq_n_f<mode>): Rename into ...
35890         (@mve_<mve_insn>q_n_f<mode>): ... this.
35891         (mve_vdupq_n_<supf><mode>): Rename into ...
35892         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
35893         (mve_vdupq_m_n_<supf><mode>): Rename into ...
35894         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
35895         (mve_vdupq_m_n_f<mode>): Rename into ...
35896         (@mve_<mve_insn>q_m_n_f<mode>): ... this.
35898 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
35900         * config/arm/arm-mve-builtins-base.cc (vrev16q, vrev32q, vrev64q):
35901         New.
35902         * config/arm/arm-mve-builtins-base.def (vrev16q, vrev32q)
35903         (vrev64q): New.
35904         * config/arm/arm-mve-builtins-base.h (vrev16q, vrev32q)
35905         (vrev64q): New.
35906         * config/arm/arm_mve.h (vrev16q): Remove.
35907         (vrev32q): Remove.
35908         (vrev64q): Remove.
35909         (vrev64q_m): Remove.
35910         (vrev16q_m): Remove.
35911         (vrev32q_m): Remove.
35912         (vrev16q_x): Remove.
35913         (vrev32q_x): Remove.
35914         (vrev64q_x): Remove.
35915         (vrev64q_f16): Remove.
35916         (vrev64q_f32): Remove.
35917         (vrev32q_f16): Remove.
35918         (vrev16q_s8): Remove.
35919         (vrev32q_s8): Remove.
35920         (vrev32q_s16): Remove.
35921         (vrev64q_s8): Remove.
35922         (vrev64q_s16): Remove.
35923         (vrev64q_s32): Remove.
35924         (vrev64q_u8): Remove.
35925         (vrev64q_u16): Remove.
35926         (vrev64q_u32): Remove.
35927         (vrev32q_u8): Remove.
35928         (vrev32q_u16): Remove.
35929         (vrev16q_u8): Remove.
35930         (vrev64q_m_u8): Remove.
35931         (vrev64q_m_s8): Remove.
35932         (vrev64q_m_u16): Remove.
35933         (vrev64q_m_s16): Remove.
35934         (vrev64q_m_u32): Remove.
35935         (vrev64q_m_s32): Remove.
35936         (vrev16q_m_s8): Remove.
35937         (vrev32q_m_f16): Remove.
35938         (vrev16q_m_u8): Remove.
35939         (vrev32q_m_s8): Remove.
35940         (vrev64q_m_f16): Remove.
35941         (vrev32q_m_u8): Remove.
35942         (vrev32q_m_s16): Remove.
35943         (vrev64q_m_f32): Remove.
35944         (vrev32q_m_u16): Remove.
35945         (vrev16q_x_s8): Remove.
35946         (vrev16q_x_u8): Remove.
35947         (vrev32q_x_s8): Remove.
35948         (vrev32q_x_s16): Remove.
35949         (vrev32q_x_u8): Remove.
35950         (vrev32q_x_u16): Remove.
35951         (vrev64q_x_s8): Remove.
35952         (vrev64q_x_s16): Remove.
35953         (vrev64q_x_s32): Remove.
35954         (vrev64q_x_u8): Remove.
35955         (vrev64q_x_u16): Remove.
35956         (vrev64q_x_u32): Remove.
35957         (vrev32q_x_f16): Remove.
35958         (vrev64q_x_f16): Remove.
35959         (vrev64q_x_f32): Remove.
35960         (__arm_vrev16q_s8): Remove.
35961         (__arm_vrev32q_s8): Remove.
35962         (__arm_vrev32q_s16): Remove.
35963         (__arm_vrev64q_s8): Remove.
35964         (__arm_vrev64q_s16): Remove.
35965         (__arm_vrev64q_s32): Remove.
35966         (__arm_vrev64q_u8): Remove.
35967         (__arm_vrev64q_u16): Remove.
35968         (__arm_vrev64q_u32): Remove.
35969         (__arm_vrev32q_u8): Remove.
35970         (__arm_vrev32q_u16): Remove.
35971         (__arm_vrev16q_u8): Remove.
35972         (__arm_vrev64q_m_u8): Remove.
35973         (__arm_vrev64q_m_s8): Remove.
35974         (__arm_vrev64q_m_u16): Remove.
35975         (__arm_vrev64q_m_s16): Remove.
35976         (__arm_vrev64q_m_u32): Remove.
35977         (__arm_vrev64q_m_s32): Remove.
35978         (__arm_vrev16q_m_s8): Remove.
35979         (__arm_vrev16q_m_u8): Remove.
35980         (__arm_vrev32q_m_s8): Remove.
35981         (__arm_vrev32q_m_u8): Remove.
35982         (__arm_vrev32q_m_s16): Remove.
35983         (__arm_vrev32q_m_u16): Remove.
35984         (__arm_vrev16q_x_s8): Remove.
35985         (__arm_vrev16q_x_u8): Remove.
35986         (__arm_vrev32q_x_s8): Remove.
35987         (__arm_vrev32q_x_s16): Remove.
35988         (__arm_vrev32q_x_u8): Remove.
35989         (__arm_vrev32q_x_u16): Remove.
35990         (__arm_vrev64q_x_s8): Remove.
35991         (__arm_vrev64q_x_s16): Remove.
35992         (__arm_vrev64q_x_s32): Remove.
35993         (__arm_vrev64q_x_u8): Remove.
35994         (__arm_vrev64q_x_u16): Remove.
35995         (__arm_vrev64q_x_u32): Remove.
35996         (__arm_vrev64q_f16): Remove.
35997         (__arm_vrev64q_f32): Remove.
35998         (__arm_vrev32q_f16): Remove.
35999         (__arm_vrev32q_m_f16): Remove.
36000         (__arm_vrev64q_m_f16): Remove.
36001         (__arm_vrev64q_m_f32): Remove.
36002         (__arm_vrev32q_x_f16): Remove.
36003         (__arm_vrev64q_x_f16): Remove.
36004         (__arm_vrev64q_x_f32): Remove.
36005         (__arm_vrev16q): Remove.
36006         (__arm_vrev32q): Remove.
36007         (__arm_vrev64q): Remove.
36008         (__arm_vrev64q_m): Remove.
36009         (__arm_vrev16q_m): Remove.
36010         (__arm_vrev32q_m): Remove.
36011         (__arm_vrev16q_x): Remove.
36012         (__arm_vrev32q_x): Remove.
36013         (__arm_vrev64q_x): Remove.
36015 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
36017         * config/arm/iterators.md (MVE_V8HF, MVE_V16QI)
36018         (MVE_FP_VREV64Q_ONLY, MVE_FP_M_VREV64Q_ONLY, MVE_FP_VREV32Q_ONLY)
36019         (MVE_FP_M_VREV32Q_ONLY): New iterators.
36020         (mve_insn): Add vrev16q, vrev32q, vrev64q.
36021         * config/arm/mve.md (mve_vrev64q_f<mode>): Rename into ...
36022         (@mve_<mve_insn>q_f<mode>): ... this
36023         (mve_vrev32q_fv8hf): Rename into @mve_<mve_insn>q_f<mode>.
36024         (mve_vrev64q_<supf><mode>): Rename into ...
36025         (@mve_<mve_insn>q_<supf><mode>): ... this.
36026         (mve_vrev32q_<supf><mode>): Rename into
36027         @mve_<mve_insn>q_<supf><mode>.
36028         (mve_vrev16q_<supf>v16qi): Rename into
36029         @mve_<mve_insn>q_<supf><mode>.
36030         (mve_vrev64q_m_<supf><mode>): Rename into
36031         @mve_<mve_insn>q_m_<supf><mode>.
36032         (mve_vrev32q_m_fv8hf): Rename into @mve_<mve_insn>q_m_f<mode>.
36033         (mve_vrev32q_m_<supf><mode>): Rename into
36034         @mve_<mve_insn>q_m_<supf><mode>.
36035         (mve_vrev64q_m_f<mode>): Rename into @mve_<mve_insn>q_m_f<mode>.
36036         (mve_vrev16q_m_<supf>v16qi): Rename into
36037         @mve_<mve_insn>q_m_<supf><mode>.
36039 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
36041         * config/arm/arm-mve-builtins-base.cc (vcmpeqq, vcmpneq, vcmpgeq)
36042         (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
36043         * config/arm/arm-mve-builtins-base.def (vcmpeqq, vcmpneq, vcmpgeq)
36044         (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
36045         * config/arm/arm-mve-builtins-base.h (vcmpeqq, vcmpneq, vcmpgeq)
36046         (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
36047         * config/arm/arm-mve-builtins-functions.h (class
36048         unspec_based_mve_function_exact_insn_vcmp): New.
36049         * config/arm/arm-mve-builtins.cc
36050         (function_instance::has_inactive_argument): Handle vcmp.
36051         * config/arm/arm_mve.h (vcmpneq): Remove.
36052         (vcmphiq): Remove.
36053         (vcmpeqq): Remove.
36054         (vcmpcsq): Remove.
36055         (vcmpltq): Remove.
36056         (vcmpleq): Remove.
36057         (vcmpgtq): Remove.
36058         (vcmpgeq): Remove.
36059         (vcmpneq_m): Remove.
36060         (vcmphiq_m): Remove.
36061         (vcmpeqq_m): Remove.
36062         (vcmpcsq_m): Remove.
36063         (vcmpcsq_m_n): Remove.
36064         (vcmpltq_m): Remove.
36065         (vcmpleq_m): Remove.
36066         (vcmpgtq_m): Remove.
36067         (vcmpgeq_m): Remove.
36068         (vcmpneq_s8): Remove.
36069         (vcmpneq_s16): Remove.
36070         (vcmpneq_s32): Remove.
36071         (vcmpneq_u8): Remove.
36072         (vcmpneq_u16): Remove.
36073         (vcmpneq_u32): Remove.
36074         (vcmpneq_n_u8): Remove.
36075         (vcmphiq_u8): Remove.
36076         (vcmphiq_n_u8): Remove.
36077         (vcmpeqq_u8): Remove.
36078         (vcmpeqq_n_u8): Remove.
36079         (vcmpcsq_u8): Remove.
36080         (vcmpcsq_n_u8): Remove.
36081         (vcmpneq_n_s8): Remove.
36082         (vcmpltq_s8): Remove.
36083         (vcmpltq_n_s8): Remove.
36084         (vcmpleq_s8): Remove.
36085         (vcmpleq_n_s8): Remove.
36086         (vcmpgtq_s8): Remove.
36087         (vcmpgtq_n_s8): Remove.
36088         (vcmpgeq_s8): Remove.
36089         (vcmpgeq_n_s8): Remove.
36090         (vcmpeqq_s8): Remove.
36091         (vcmpeqq_n_s8): Remove.
36092         (vcmpneq_n_u16): Remove.
36093         (vcmphiq_u16): Remove.
36094         (vcmphiq_n_u16): Remove.
36095         (vcmpeqq_u16): Remove.
36096         (vcmpeqq_n_u16): Remove.
36097         (vcmpcsq_u16): Remove.
36098         (vcmpcsq_n_u16): Remove.
36099         (vcmpneq_n_s16): Remove.
36100         (vcmpltq_s16): Remove.
36101         (vcmpltq_n_s16): Remove.
36102         (vcmpleq_s16): Remove.
36103         (vcmpleq_n_s16): Remove.
36104         (vcmpgtq_s16): Remove.
36105         (vcmpgtq_n_s16): Remove.
36106         (vcmpgeq_s16): Remove.
36107         (vcmpgeq_n_s16): Remove.
36108         (vcmpeqq_s16): Remove.
36109         (vcmpeqq_n_s16): Remove.
36110         (vcmpneq_n_u32): Remove.
36111         (vcmphiq_u32): Remove.
36112         (vcmphiq_n_u32): Remove.
36113         (vcmpeqq_u32): Remove.
36114         (vcmpeqq_n_u32): Remove.
36115         (vcmpcsq_u32): Remove.
36116         (vcmpcsq_n_u32): Remove.
36117         (vcmpneq_n_s32): Remove.
36118         (vcmpltq_s32): Remove.
36119         (vcmpltq_n_s32): Remove.
36120         (vcmpleq_s32): Remove.
36121         (vcmpleq_n_s32): Remove.
36122         (vcmpgtq_s32): Remove.
36123         (vcmpgtq_n_s32): Remove.
36124         (vcmpgeq_s32): Remove.
36125         (vcmpgeq_n_s32): Remove.
36126         (vcmpeqq_s32): Remove.
36127         (vcmpeqq_n_s32): Remove.
36128         (vcmpneq_n_f16): Remove.
36129         (vcmpneq_f16): Remove.
36130         (vcmpltq_n_f16): Remove.
36131         (vcmpltq_f16): Remove.
36132         (vcmpleq_n_f16): Remove.
36133         (vcmpleq_f16): Remove.
36134         (vcmpgtq_n_f16): Remove.
36135         (vcmpgtq_f16): Remove.
36136         (vcmpgeq_n_f16): Remove.
36137         (vcmpgeq_f16): Remove.
36138         (vcmpeqq_n_f16): Remove.
36139         (vcmpeqq_f16): Remove.
36140         (vcmpneq_n_f32): Remove.
36141         (vcmpneq_f32): Remove.
36142         (vcmpltq_n_f32): Remove.
36143         (vcmpltq_f32): Remove.
36144         (vcmpleq_n_f32): Remove.
36145         (vcmpleq_f32): Remove.
36146         (vcmpgtq_n_f32): Remove.
36147         (vcmpgtq_f32): Remove.
36148         (vcmpgeq_n_f32): Remove.
36149         (vcmpgeq_f32): Remove.
36150         (vcmpeqq_n_f32): Remove.
36151         (vcmpeqq_f32): Remove.
36152         (vcmpeqq_m_f16): Remove.
36153         (vcmpeqq_m_f32): Remove.
36154         (vcmpneq_m_u8): Remove.
36155         (vcmpneq_m_n_u8): Remove.
36156         (vcmphiq_m_u8): Remove.
36157         (vcmphiq_m_n_u8): Remove.
36158         (vcmpeqq_m_u8): Remove.
36159         (vcmpeqq_m_n_u8): Remove.
36160         (vcmpcsq_m_u8): Remove.
36161         (vcmpcsq_m_n_u8): Remove.
36162         (vcmpneq_m_s8): Remove.
36163         (vcmpneq_m_n_s8): Remove.
36164         (vcmpltq_m_s8): Remove.
36165         (vcmpltq_m_n_s8): Remove.
36166         (vcmpleq_m_s8): Remove.
36167         (vcmpleq_m_n_s8): Remove.
36168         (vcmpgtq_m_s8): Remove.
36169         (vcmpgtq_m_n_s8): Remove.
36170         (vcmpgeq_m_s8): Remove.
36171         (vcmpgeq_m_n_s8): Remove.
36172         (vcmpeqq_m_s8): Remove.
36173         (vcmpeqq_m_n_s8): Remove.
36174         (vcmpneq_m_u16): Remove.
36175         (vcmpneq_m_n_u16): Remove.
36176         (vcmphiq_m_u16): Remove.
36177         (vcmphiq_m_n_u16): Remove.
36178         (vcmpeqq_m_u16): Remove.
36179         (vcmpeqq_m_n_u16): Remove.
36180         (vcmpcsq_m_u16): Remove.
36181         (vcmpcsq_m_n_u16): Remove.
36182         (vcmpneq_m_s16): Remove.
36183         (vcmpneq_m_n_s16): Remove.
36184         (vcmpltq_m_s16): Remove.
36185         (vcmpltq_m_n_s16): Remove.
36186         (vcmpleq_m_s16): Remove.
36187         (vcmpleq_m_n_s16): Remove.
36188         (vcmpgtq_m_s16): Remove.
36189         (vcmpgtq_m_n_s16): Remove.
36190         (vcmpgeq_m_s16): Remove.
36191         (vcmpgeq_m_n_s16): Remove.
36192         (vcmpeqq_m_s16): Remove.
36193         (vcmpeqq_m_n_s16): Remove.
36194         (vcmpneq_m_u32): Remove.
36195         (vcmpneq_m_n_u32): Remove.
36196         (vcmphiq_m_u32): Remove.
36197         (vcmphiq_m_n_u32): Remove.
36198         (vcmpeqq_m_u32): Remove.
36199         (vcmpeqq_m_n_u32): Remove.
36200         (vcmpcsq_m_u32): Remove.
36201         (vcmpcsq_m_n_u32): Remove.
36202         (vcmpneq_m_s32): Remove.
36203         (vcmpneq_m_n_s32): Remove.
36204         (vcmpltq_m_s32): Remove.
36205         (vcmpltq_m_n_s32): Remove.
36206         (vcmpleq_m_s32): Remove.
36207         (vcmpleq_m_n_s32): Remove.
36208         (vcmpgtq_m_s32): Remove.
36209         (vcmpgtq_m_n_s32): Remove.
36210         (vcmpgeq_m_s32): Remove.
36211         (vcmpgeq_m_n_s32): Remove.
36212         (vcmpeqq_m_s32): Remove.
36213         (vcmpeqq_m_n_s32): Remove.
36214         (vcmpeqq_m_n_f16): Remove.
36215         (vcmpgeq_m_f16): Remove.
36216         (vcmpgeq_m_n_f16): Remove.
36217         (vcmpgtq_m_f16): Remove.
36218         (vcmpgtq_m_n_f16): Remove.
36219         (vcmpleq_m_f16): Remove.
36220         (vcmpleq_m_n_f16): Remove.
36221         (vcmpltq_m_f16): Remove.
36222         (vcmpltq_m_n_f16): Remove.
36223         (vcmpneq_m_f16): Remove.
36224         (vcmpneq_m_n_f16): Remove.
36225         (vcmpeqq_m_n_f32): Remove.
36226         (vcmpgeq_m_f32): Remove.
36227         (vcmpgeq_m_n_f32): Remove.
36228         (vcmpgtq_m_f32): Remove.
36229         (vcmpgtq_m_n_f32): Remove.
36230         (vcmpleq_m_f32): Remove.
36231         (vcmpleq_m_n_f32): Remove.
36232         (vcmpltq_m_f32): Remove.
36233         (vcmpltq_m_n_f32): Remove.
36234         (vcmpneq_m_f32): Remove.
36235         (vcmpneq_m_n_f32): Remove.
36236         (__arm_vcmpneq_s8): Remove.
36237         (__arm_vcmpneq_s16): Remove.
36238         (__arm_vcmpneq_s32): Remove.
36239         (__arm_vcmpneq_u8): Remove.
36240         (__arm_vcmpneq_u16): Remove.
36241         (__arm_vcmpneq_u32): Remove.
36242         (__arm_vcmpneq_n_u8): Remove.
36243         (__arm_vcmphiq_u8): Remove.
36244         (__arm_vcmphiq_n_u8): Remove.
36245         (__arm_vcmpeqq_u8): Remove.
36246         (__arm_vcmpeqq_n_u8): Remove.
36247         (__arm_vcmpcsq_u8): Remove.
36248         (__arm_vcmpcsq_n_u8): Remove.
36249         (__arm_vcmpneq_n_s8): Remove.
36250         (__arm_vcmpltq_s8): Remove.
36251         (__arm_vcmpltq_n_s8): Remove.
36252         (__arm_vcmpleq_s8): Remove.
36253         (__arm_vcmpleq_n_s8): Remove.
36254         (__arm_vcmpgtq_s8): Remove.
36255         (__arm_vcmpgtq_n_s8): Remove.
36256         (__arm_vcmpgeq_s8): Remove.
36257         (__arm_vcmpgeq_n_s8): Remove.
36258         (__arm_vcmpeqq_s8): Remove.
36259         (__arm_vcmpeqq_n_s8): Remove.
36260         (__arm_vcmpneq_n_u16): Remove.
36261         (__arm_vcmphiq_u16): Remove.
36262         (__arm_vcmphiq_n_u16): Remove.
36263         (__arm_vcmpeqq_u16): Remove.
36264         (__arm_vcmpeqq_n_u16): Remove.
36265         (__arm_vcmpcsq_u16): Remove.
36266         (__arm_vcmpcsq_n_u16): Remove.
36267         (__arm_vcmpneq_n_s16): Remove.
36268         (__arm_vcmpltq_s16): Remove.
36269         (__arm_vcmpltq_n_s16): Remove.
36270         (__arm_vcmpleq_s16): Remove.
36271         (__arm_vcmpleq_n_s16): Remove.
36272         (__arm_vcmpgtq_s16): Remove.
36273         (__arm_vcmpgtq_n_s16): Remove.
36274         (__arm_vcmpgeq_s16): Remove.
36275         (__arm_vcmpgeq_n_s16): Remove.
36276         (__arm_vcmpeqq_s16): Remove.
36277         (__arm_vcmpeqq_n_s16): Remove.
36278         (__arm_vcmpneq_n_u32): Remove.
36279         (__arm_vcmphiq_u32): Remove.
36280         (__arm_vcmphiq_n_u32): Remove.
36281         (__arm_vcmpeqq_u32): Remove.
36282         (__arm_vcmpeqq_n_u32): Remove.
36283         (__arm_vcmpcsq_u32): Remove.
36284         (__arm_vcmpcsq_n_u32): Remove.
36285         (__arm_vcmpneq_n_s32): Remove.
36286         (__arm_vcmpltq_s32): Remove.
36287         (__arm_vcmpltq_n_s32): Remove.
36288         (__arm_vcmpleq_s32): Remove.
36289         (__arm_vcmpleq_n_s32): Remove.
36290         (__arm_vcmpgtq_s32): Remove.
36291         (__arm_vcmpgtq_n_s32): Remove.
36292         (__arm_vcmpgeq_s32): Remove.
36293         (__arm_vcmpgeq_n_s32): Remove.
36294         (__arm_vcmpeqq_s32): Remove.
36295         (__arm_vcmpeqq_n_s32): Remove.
36296         (__arm_vcmpneq_m_u8): Remove.
36297         (__arm_vcmpneq_m_n_u8): Remove.
36298         (__arm_vcmphiq_m_u8): Remove.
36299         (__arm_vcmphiq_m_n_u8): Remove.
36300         (__arm_vcmpeqq_m_u8): Remove.
36301         (__arm_vcmpeqq_m_n_u8): Remove.
36302         (__arm_vcmpcsq_m_u8): Remove.
36303         (__arm_vcmpcsq_m_n_u8): Remove.
36304         (__arm_vcmpneq_m_s8): Remove.
36305         (__arm_vcmpneq_m_n_s8): Remove.
36306         (__arm_vcmpltq_m_s8): Remove.
36307         (__arm_vcmpltq_m_n_s8): Remove.
36308         (__arm_vcmpleq_m_s8): Remove.
36309         (__arm_vcmpleq_m_n_s8): Remove.
36310         (__arm_vcmpgtq_m_s8): Remove.
36311         (__arm_vcmpgtq_m_n_s8): Remove.
36312         (__arm_vcmpgeq_m_s8): Remove.
36313         (__arm_vcmpgeq_m_n_s8): Remove.
36314         (__arm_vcmpeqq_m_s8): Remove.
36315         (__arm_vcmpeqq_m_n_s8): Remove.
36316         (__arm_vcmpneq_m_u16): Remove.
36317         (__arm_vcmpneq_m_n_u16): Remove.
36318         (__arm_vcmphiq_m_u16): Remove.
36319         (__arm_vcmphiq_m_n_u16): Remove.
36320         (__arm_vcmpeqq_m_u16): Remove.
36321         (__arm_vcmpeqq_m_n_u16): Remove.
36322         (__arm_vcmpcsq_m_u16): Remove.
36323         (__arm_vcmpcsq_m_n_u16): Remove.
36324         (__arm_vcmpneq_m_s16): Remove.
36325         (__arm_vcmpneq_m_n_s16): Remove.
36326         (__arm_vcmpltq_m_s16): Remove.
36327         (__arm_vcmpltq_m_n_s16): Remove.
36328         (__arm_vcmpleq_m_s16): Remove.
36329         (__arm_vcmpleq_m_n_s16): Remove.
36330         (__arm_vcmpgtq_m_s16): Remove.
36331         (__arm_vcmpgtq_m_n_s16): Remove.
36332         (__arm_vcmpgeq_m_s16): Remove.
36333         (__arm_vcmpgeq_m_n_s16): Remove.
36334         (__arm_vcmpeqq_m_s16): Remove.
36335         (__arm_vcmpeqq_m_n_s16): Remove.
36336         (__arm_vcmpneq_m_u32): Remove.
36337         (__arm_vcmpneq_m_n_u32): Remove.
36338         (__arm_vcmphiq_m_u32): Remove.
36339         (__arm_vcmphiq_m_n_u32): Remove.
36340         (__arm_vcmpeqq_m_u32): Remove.
36341         (__arm_vcmpeqq_m_n_u32): Remove.
36342         (__arm_vcmpcsq_m_u32): Remove.
36343         (__arm_vcmpcsq_m_n_u32): Remove.
36344         (__arm_vcmpneq_m_s32): Remove.
36345         (__arm_vcmpneq_m_n_s32): Remove.
36346         (__arm_vcmpltq_m_s32): Remove.
36347         (__arm_vcmpltq_m_n_s32): Remove.
36348         (__arm_vcmpleq_m_s32): Remove.
36349         (__arm_vcmpleq_m_n_s32): Remove.
36350         (__arm_vcmpgtq_m_s32): Remove.
36351         (__arm_vcmpgtq_m_n_s32): Remove.
36352         (__arm_vcmpgeq_m_s32): Remove.
36353         (__arm_vcmpgeq_m_n_s32): Remove.
36354         (__arm_vcmpeqq_m_s32): Remove.
36355         (__arm_vcmpeqq_m_n_s32): Remove.
36356         (__arm_vcmpneq_n_f16): Remove.
36357         (__arm_vcmpneq_f16): Remove.
36358         (__arm_vcmpltq_n_f16): Remove.
36359         (__arm_vcmpltq_f16): Remove.
36360         (__arm_vcmpleq_n_f16): Remove.
36361         (__arm_vcmpleq_f16): Remove.
36362         (__arm_vcmpgtq_n_f16): Remove.
36363         (__arm_vcmpgtq_f16): Remove.
36364         (__arm_vcmpgeq_n_f16): Remove.
36365         (__arm_vcmpgeq_f16): Remove.
36366         (__arm_vcmpeqq_n_f16): Remove.
36367         (__arm_vcmpeqq_f16): Remove.
36368         (__arm_vcmpneq_n_f32): Remove.
36369         (__arm_vcmpneq_f32): Remove.
36370         (__arm_vcmpltq_n_f32): Remove.
36371         (__arm_vcmpltq_f32): Remove.
36372         (__arm_vcmpleq_n_f32): Remove.
36373         (__arm_vcmpleq_f32): Remove.
36374         (__arm_vcmpgtq_n_f32): Remove.
36375         (__arm_vcmpgtq_f32): Remove.
36376         (__arm_vcmpgeq_n_f32): Remove.
36377         (__arm_vcmpgeq_f32): Remove.
36378         (__arm_vcmpeqq_n_f32): Remove.
36379         (__arm_vcmpeqq_f32): Remove.
36380         (__arm_vcmpeqq_m_f16): Remove.
36381         (__arm_vcmpeqq_m_f32): Remove.
36382         (__arm_vcmpeqq_m_n_f16): Remove.
36383         (__arm_vcmpgeq_m_f16): Remove.
36384         (__arm_vcmpgeq_m_n_f16): Remove.
36385         (__arm_vcmpgtq_m_f16): Remove.
36386         (__arm_vcmpgtq_m_n_f16): Remove.
36387         (__arm_vcmpleq_m_f16): Remove.
36388         (__arm_vcmpleq_m_n_f16): Remove.
36389         (__arm_vcmpltq_m_f16): Remove.
36390         (__arm_vcmpltq_m_n_f16): Remove.
36391         (__arm_vcmpneq_m_f16): Remove.
36392         (__arm_vcmpneq_m_n_f16): Remove.
36393         (__arm_vcmpeqq_m_n_f32): Remove.
36394         (__arm_vcmpgeq_m_f32): Remove.
36395         (__arm_vcmpgeq_m_n_f32): Remove.
36396         (__arm_vcmpgtq_m_f32): Remove.
36397         (__arm_vcmpgtq_m_n_f32): Remove.
36398         (__arm_vcmpleq_m_f32): Remove.
36399         (__arm_vcmpleq_m_n_f32): Remove.
36400         (__arm_vcmpltq_m_f32): Remove.
36401         (__arm_vcmpltq_m_n_f32): Remove.
36402         (__arm_vcmpneq_m_f32): Remove.
36403         (__arm_vcmpneq_m_n_f32): Remove.
36404         (__arm_vcmpneq): Remove.
36405         (__arm_vcmphiq): Remove.
36406         (__arm_vcmpeqq): Remove.
36407         (__arm_vcmpcsq): Remove.
36408         (__arm_vcmpltq): Remove.
36409         (__arm_vcmpleq): Remove.
36410         (__arm_vcmpgtq): Remove.
36411         (__arm_vcmpgeq): Remove.
36412         (__arm_vcmpneq_m): Remove.
36413         (__arm_vcmphiq_m): Remove.
36414         (__arm_vcmpeqq_m): Remove.
36415         (__arm_vcmpcsq_m): Remove.
36416         (__arm_vcmpltq_m): Remove.
36417         (__arm_vcmpleq_m): Remove.
36418         (__arm_vcmpgtq_m): Remove.
36419         (__arm_vcmpgeq_m): Remove.
36421 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
36423         * config/arm/arm-mve-builtins-shapes.cc (cmp): New.
36424         * config/arm/arm-mve-builtins-shapes.h (cmp): New.
36426 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
36428         * config/arm/iterators.md (MVE_CMP_M, MVE_CMP_M_F, MVE_CMP_M_N)
36429         (MVE_CMP_M_N_F, mve_cmp_op1): New.
36430         (isu): Add VCMP*
36431         (supf): Likewise.
36432         * config/arm/mve.md (mve_vcmp<mve_cmp_op>q_n_<mode>): Rename into ...
36433         (@mve_vcmp<mve_cmp_op>q_n_<mode>): ... this.
36434         (mve_vcmpeqq_m_f<mode>, mve_vcmpgeq_m_f<mode>)
36435         (mve_vcmpgtq_m_f<mode>, mve_vcmpleq_m_f<mode>)
36436         (mve_vcmpltq_m_f<mode>, mve_vcmpneq_m_f<mode>): Merge into ...
36437         (@mve_vcmp<mve_cmp_op1>q_m_f<mode>): ... this.
36438         (mve_vcmpcsq_m_u<mode>, mve_vcmpeqq_m_<supf><mode>)
36439         (mve_vcmpgeq_m_s<mode>, mve_vcmpgtq_m_s<mode>)
36440         (mve_vcmphiq_m_u<mode>, mve_vcmpleq_m_s<mode>)
36441         (mve_vcmpltq_m_s<mode>, mve_vcmpneq_m_<supf><mode>): Merge into
36442         ...
36443         (@mve_vcmp<mve_cmp_op1>q_m_<supf><mode>): ... this.
36444         (mve_vcmpcsq_m_n_u<mode>, mve_vcmpeqq_m_n_<supf><mode>)
36445         (mve_vcmpgeq_m_n_s<mode>, mve_vcmpgtq_m_n_s<mode>)
36446         (mve_vcmphiq_m_n_u<mode>, mve_vcmpleq_m_n_s<mode>)
36447         (mve_vcmpltq_m_n_s<mode>, mve_vcmpneq_m_n_<supf><mode>): Merge
36448         into ...
36449         (@mve_vcmp<mve_cmp_op1>q_m_n_<supf><mode>): ... this.
36450         (mve_vcmpeqq_m_n_f<mode>, mve_vcmpgeq_m_n_f<mode>)
36451         (mve_vcmpgtq_m_n_f<mode>, mve_vcmpleq_m_n_f<mode>)
36452         (mve_vcmpltq_m_n_f<mode>, mve_vcmpneq_m_n_f<mode>): Merge into ...
36453         (@mve_vcmp<mve_cmp_op1>q_m_n_f<mode>): ... this.
36455 2023-05-11  Roger Sayle  <roger@nextmovesoftware.com>
36457         * match.pd <popcount optimizations>: Simplify popcount(X|Y) +
36458         popcount(X&Y) as popcount(X)+popcount(Y).  Likewise, simplify
36459         popcount(X)+popcount(Y)-popcount(X&Y) as popcount(X|Y), and
36460         vice versa.
36462 2023-05-11  Roger Sayle  <roger@nextmovesoftware.com>
36464         * match.pd <popcount optimizations>: Simplify popcount(bswap(x))
36465         as popcount(x).  Simplify popcount(rotate(x,y)) as popcount(x).
36466         <parity optimizations>:  Simplify parity(bswap(x)) as parity(x).
36467         Simplify parity(rotate(x,y)) as parity(x).
36469 2023-05-11  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
36471         * config/riscv/autovec.md (@vec_series<mode>): New pattern
36472         * config/riscv/riscv-protos.h (expand_vec_series): New function.
36473         * config/riscv/riscv-v.cc (emit_binop): Ditto.
36474         (emit_index_op): Ditto.
36475         (expand_vec_series): Ditto.
36476         (expand_const_vector): Add series vector handling.
36477         * config/riscv/riscv.cc (riscv_const_insns): Enable series vector for testing.
36479 2023-05-10  Roger Sayle  <roger@nextmovesoftware.com>
36481         * config/i386/i386.md (*concat<mode><dwi>3_1): Use preferred
36482         [(const_int 0)] idiom, instead of [(clobber (const_int 0))].
36483         (*concat<mode><dwi>3_2): Likewise.
36484         (*concat<mode><dwi>3_3): Likewise.
36485         (*concat<mode><dwi>3_4): Likewise.
36486         (*concat<mode><dwi>3_5): Likewise.
36487         (*concat<mode><dwi>3_6): Likewise.
36488         (*concat<mode><dwi>3_7): Likewise.
36490 2023-05-10  Uros Bizjak  <ubizjak@gmail.com>
36492         PR target/92658
36493         * config/i386/mmx.md (sse4_1_<code>v2qiv2si2): New insn pattern.
36494         (<insn>v4qiv4hi2): New expander.
36495         (<insn>v2hiv2si2): Ditto.
36496         (<insn>v2qiv2si2): Ditto.
36497         (<insn>v2qiv2hi2): Ditto.
36499 2023-05-10  Jeff Law  <jlaw@ventanamicro>
36501         * config/h8300/constraints.md (Q): Make this a special memory
36502         constraint.
36503         (Zz): Similarly.
36505 2023-05-10  Jakub Jelinek  <jakub@redhat.com>
36507         PR fortran/109788
36508         * ipa-prop.cc (ipa_get_callee_param_type): Don't return TREE_VALUE (t)
36509         if t is void_list_node.
36511 2023-05-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
36513         * config/aarch64/aarch64-simd.md (aarch64_sqmovun<mode>_insn_le): Delete.
36514         (aarch64_sqmovun<mode>_insn_be): Delete.
36515         (aarch64_sqmovun<mode><vczle><vczbe>): New define_insn.
36516         (aarch64_sqmovun<mode>): Delete expander.
36518 2023-05-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
36520         PR target/99195
36521         * config/aarch64/aarch64-simd.md (aarch64_<PERMUTE:perm_insn><mode>):
36522         Rename to...
36523         (aarch64_<PERMUTE:perm_insn><mode><vczle><vczbe>): ... This.
36524         (aarch64_rev<REVERSE:rev_op><mode>): Rename to...
36525         (aarch64_rev<REVERSE:rev_op><mode><vczle><vczbe>): ... This.
36527 2023-05-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
36529         PR target/99195
36530         * config/aarch64/aarch64-simd.md (aarch64_<su_optab>q<addsub><mode>):
36531         Rename to...
36532         (aarch64_<su_optab>q<addsub><mode><vczle><vczbe>): ... This.
36533         (aarch64_<sur>qadd<mode>): Rename to...
36534         (aarch64_<sur>qadd<mode><vczle><vczbe>): ... This.
36536 2023-05-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
36538         * config/aarch64/aarch64-simd.md
36539         (aarch64_<sur>q<r>shr<u>n_n<mode>_insn_le): Delete.
36540         (aarch64_<sur>q<r>shr<u>n_n<mode>_insn_be): Delete.
36541         (aarch64_<sur>q<r>shr<u>n_n<mode>_insn<vczle><vczbe>): New define_insn.
36542         (aarch64_<sur>q<r>shr<u>n_n<mode>): Simplify expander.
36544 2023-05-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
36546         PR target/99195
36547         * config/aarch64/aarch64-simd.md (aarch64_xtn<mode>_insn_le): Delete.
36548         (aarch64_xtn<mode>_insn_be): Likewise.
36549         (trunc<mode><Vnarrowq>2): Rename to...
36550         (trunc<mode><Vnarrowq>2<vczle><vczbe>): ... This.
36551         (aarch64_xtn<mode>): Move under the above.  Just emit the truncate RTL.
36552         (aarch64_<su>qmovn<mode>): Likewise.
36553         (aarch64_<su>qmovn<mode><vczle><vczbe>): New define_insn.
36554         (aarch64_<su>qmovn<mode>_insn_le): Delete.
36555         (aarch64_<su>qmovn<mode>_insn_be): Likewise.
36557 2023-05-10  Li Xu  <xuli1@eswincomputing.com>
36559         * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): For vfmv.f.s/vmv.x.s
36560         intruction replace null avl with (const_int 0).
36562 2023-05-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
36564         * config/riscv/riscv.cc (riscv_support_vector_misalignment): Fix
36565         incorrect codes.
36567 2023-05-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
36569         PR target/109773
36570         * config/riscv/riscv-vsetvl.cc (avl_source_has_vsetvl_p): New function.
36571         (source_equal_p): Fix dead loop in vsetvl avl checking.
36573 2023-05-10  Hans-Peter Nilsson  <hp@axis.com>
36575         * config/cris/cris.cc (cris_postdbr_cmpelim): Correct mode
36576         of modeadjusted_dccr.
36578 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
36580         * config/arm/arm-mve-builtins-base.cc (vmaxaq, vminaq): New.
36581         * config/arm/arm-mve-builtins-base.def (vmaxaq, vminaq): New.
36582         * config/arm/arm-mve-builtins-base.h (vmaxaq, vminaq): New.
36583         * config/arm/arm-mve-builtins.cc
36584         (function_instance::has_inactive_argument): Handle vmaxaq and
36585         vminaq.
36586         * config/arm/arm_mve.h (vminaq): Remove.
36587         (vmaxaq): Remove.
36588         (vminaq_m): Remove.
36589         (vmaxaq_m): Remove.
36590         (vminaq_s8): Remove.
36591         (vmaxaq_s8): Remove.
36592         (vminaq_s16): Remove.
36593         (vmaxaq_s16): Remove.
36594         (vminaq_s32): Remove.
36595         (vmaxaq_s32): Remove.
36596         (vminaq_m_s8): Remove.
36597         (vmaxaq_m_s8): Remove.
36598         (vminaq_m_s16): Remove.
36599         (vmaxaq_m_s16): Remove.
36600         (vminaq_m_s32): Remove.
36601         (vmaxaq_m_s32): Remove.
36602         (__arm_vminaq_s8): Remove.
36603         (__arm_vmaxaq_s8): Remove.
36604         (__arm_vminaq_s16): Remove.
36605         (__arm_vmaxaq_s16): Remove.
36606         (__arm_vminaq_s32): Remove.
36607         (__arm_vmaxaq_s32): Remove.
36608         (__arm_vminaq_m_s8): Remove.
36609         (__arm_vmaxaq_m_s8): Remove.
36610         (__arm_vminaq_m_s16): Remove.
36611         (__arm_vmaxaq_m_s16): Remove.
36612         (__arm_vminaq_m_s32): Remove.
36613         (__arm_vmaxaq_m_s32): Remove.
36614         (__arm_vminaq): Remove.
36615         (__arm_vmaxaq): Remove.
36616         (__arm_vminaq_m): Remove.
36617         (__arm_vmaxaq_m): Remove.
36619 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
36621         * config/arm/iterators.md (MVE_VMAXAVMINAQ, MVE_VMAXAVMINAQ_M):
36622         New.
36623         (mve_insn): Add vmaxa, vmina.
36624         (supf): Add VMAXAQ_S, VMAXAQ_M_S, VMINAQ_S, VMINAQ_M_S.
36625         * config/arm/mve.md (mve_vmaxaq_s<mode>, mve_vminaq_s<mode>):
36626         Merge into ...
36627         (@mve_<mve_insn>q_<supf><mode>): ... this.
36628         (mve_vmaxaq_m_s<mode>, mve_vminaq_m_s<mode>): Merge into ...
36629         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
36631 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
36633         * config/arm/arm-mve-builtins-shapes.cc (binary_maxamina): New.
36634         * config/arm/arm-mve-builtins-shapes.h (binary_maxamina): New.
36636 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
36638         * config/arm/arm-mve-builtins-base.cc (vmaxnmaq, vminnmaq): New.
36639         * config/arm/arm-mve-builtins-base.def (vmaxnmaq, vminnmaq): New.
36640         * config/arm/arm-mve-builtins-base.h (vmaxnmaq, vminnmaq): New.
36641         * config/arm/arm-mve-builtins.cc
36642         (function_instance::has_inactive_argument): Handle vmaxnmaq and
36643         vminnmaq.
36644         * config/arm/arm_mve.h (vminnmaq): Remove.
36645         (vmaxnmaq): Remove.
36646         (vmaxnmaq_m): Remove.
36647         (vminnmaq_m): Remove.
36648         (vminnmaq_f16): Remove.
36649         (vmaxnmaq_f16): Remove.
36650         (vminnmaq_f32): Remove.
36651         (vmaxnmaq_f32): Remove.
36652         (vmaxnmaq_m_f16): Remove.
36653         (vminnmaq_m_f16): Remove.
36654         (vmaxnmaq_m_f32): Remove.
36655         (vminnmaq_m_f32): Remove.
36656         (__arm_vminnmaq_f16): Remove.
36657         (__arm_vmaxnmaq_f16): Remove.
36658         (__arm_vminnmaq_f32): Remove.
36659         (__arm_vmaxnmaq_f32): Remove.
36660         (__arm_vmaxnmaq_m_f16): Remove.
36661         (__arm_vminnmaq_m_f16): Remove.
36662         (__arm_vmaxnmaq_m_f32): Remove.
36663         (__arm_vminnmaq_m_f32): Remove.
36664         (__arm_vminnmaq): Remove.
36665         (__arm_vmaxnmaq): Remove.
36666         (__arm_vmaxnmaq_m): Remove.
36667         (__arm_vminnmaq_m): Remove.
36669 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
36671         * config/arm/iterators.md (MVE_VMAXNMA_VMINNMAQ)
36672         (MVE_VMAXNMA_VMINNMAQ_M): New.
36673         (mve_insn): Add vmaxnma, vminnma.
36674         * config/arm/mve.md (mve_vmaxnmaq_f<mode>, mve_vminnmaq_f<mode>):
36675         Merge into ...
36676         (@mve_<mve_insn>q_f<mode>): ... this.
36677         (mve_vmaxnmaq_m_f<mode>, mve_vminnmaq_m_f<mode>): Merge into ...
36678         (@mve_<mve_insn>q_m_f<mode>): ... this.
36680 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
36682         * config/arm/arm-mve-builtins-base.cc (FUNCTION_PRED_P_F): New.
36683         (vmaxnmavq, vmaxnmvq, vminnmavq, vminnmvq): New.
36684         * config/arm/arm-mve-builtins-base.def (vmaxnmavq, vmaxnmvq)
36685         (vminnmavq, vminnmvq): New.
36686         * config/arm/arm-mve-builtins-base.h (vmaxnmavq, vmaxnmvq)
36687         (vminnmavq, vminnmvq): New.
36688         * config/arm/arm_mve.h (vminnmvq): Remove.
36689         (vminnmavq): Remove.
36690         (vmaxnmvq): Remove.
36691         (vmaxnmavq): Remove.
36692         (vmaxnmavq_p): Remove.
36693         (vmaxnmvq_p): Remove.
36694         (vminnmavq_p): Remove.
36695         (vminnmvq_p): Remove.
36696         (vminnmvq_f16): Remove.
36697         (vminnmavq_f16): Remove.
36698         (vmaxnmvq_f16): Remove.
36699         (vmaxnmavq_f16): Remove.
36700         (vminnmvq_f32): Remove.
36701         (vminnmavq_f32): Remove.
36702         (vmaxnmvq_f32): Remove.
36703         (vmaxnmavq_f32): Remove.
36704         (vmaxnmavq_p_f16): Remove.
36705         (vmaxnmvq_p_f16): Remove.
36706         (vminnmavq_p_f16): Remove.
36707         (vminnmvq_p_f16): Remove.
36708         (vmaxnmavq_p_f32): Remove.
36709         (vmaxnmvq_p_f32): Remove.
36710         (vminnmavq_p_f32): Remove.
36711         (vminnmvq_p_f32): Remove.
36712         (__arm_vminnmvq_f16): Remove.
36713         (__arm_vminnmavq_f16): Remove.
36714         (__arm_vmaxnmvq_f16): Remove.
36715         (__arm_vmaxnmavq_f16): Remove.
36716         (__arm_vminnmvq_f32): Remove.
36717         (__arm_vminnmavq_f32): Remove.
36718         (__arm_vmaxnmvq_f32): Remove.
36719         (__arm_vmaxnmavq_f32): Remove.
36720         (__arm_vmaxnmavq_p_f16): Remove.
36721         (__arm_vmaxnmvq_p_f16): Remove.
36722         (__arm_vminnmavq_p_f16): Remove.
36723         (__arm_vminnmvq_p_f16): Remove.
36724         (__arm_vmaxnmavq_p_f32): Remove.
36725         (__arm_vmaxnmvq_p_f32): Remove.
36726         (__arm_vminnmavq_p_f32): Remove.
36727         (__arm_vminnmvq_p_f32): Remove.
36728         (__arm_vminnmvq): Remove.
36729         (__arm_vminnmavq): Remove.
36730         (__arm_vmaxnmvq): Remove.
36731         (__arm_vmaxnmavq): Remove.
36732         (__arm_vmaxnmavq_p): Remove.
36733         (__arm_vmaxnmvq_p): Remove.
36734         (__arm_vminnmavq_p): Remove.
36735         (__arm_vminnmvq_p): Remove.
36736         (__arm_vmaxnmavq_m): Remove.
36737         (__arm_vmaxnmvq_m): Remove.
36739 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
36741         * config/arm/arm-mve-builtins-functions.h
36742         (unspec_mve_function_exact_insn_pred_p): Use code_for_mve_q_p_f.
36744 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
36746         * config/arm/iterators.md (MVE_VMAXNMxV_MINNMxVQ)
36747         (MVE_VMAXNMxV_MINNMxVQ_P): New.
36748         (mve_insn): Add vmaxnmav, vmaxnmv, vminnmav, vminnmv.
36749         * config/arm/mve.md (mve_vmaxnmavq_f<mode>, mve_vmaxnmvq_f<mode>)
36750         (mve_vminnmavq_f<mode>, mve_vminnmvq_f<mode>): Merge into ...
36751         (@mve_<mve_insn>q_f<mode>): ... this.
36752         (mve_vmaxnmavq_p_f<mode>, mve_vmaxnmvq_p_f<mode>)
36753         (mve_vminnmavq_p_f<mode>, mve_vminnmvq_p_f<mode>): Merge into ...
36754         (@mve_<mve_insn>q_p_f<mode>): ... this.
36756 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
36758         * config/arm/arm-mve-builtins-base.cc (vmaxnmq, vminnmq): New.
36759         * config/arm/arm-mve-builtins-base.def (vmaxnmq, vminnmq): New.
36760         * config/arm/arm-mve-builtins-base.h (vmaxnmq, vminnmq): New.
36761         * config/arm/arm_mve.h (vminnmq): Remove.
36762         (vmaxnmq): Remove.
36763         (vmaxnmq_m): Remove.
36764         (vminnmq_m): Remove.
36765         (vminnmq_x): Remove.
36766         (vmaxnmq_x): Remove.
36767         (vminnmq_f16): Remove.
36768         (vmaxnmq_f16): Remove.
36769         (vminnmq_f32): Remove.
36770         (vmaxnmq_f32): Remove.
36771         (vmaxnmq_m_f32): Remove.
36772         (vmaxnmq_m_f16): Remove.
36773         (vminnmq_m_f32): Remove.
36774         (vminnmq_m_f16): Remove.
36775         (vminnmq_x_f16): Remove.
36776         (vminnmq_x_f32): Remove.
36777         (vmaxnmq_x_f16): Remove.
36778         (vmaxnmq_x_f32): Remove.
36779         (__arm_vminnmq_f16): Remove.
36780         (__arm_vmaxnmq_f16): Remove.
36781         (__arm_vminnmq_f32): Remove.
36782         (__arm_vmaxnmq_f32): Remove.
36783         (__arm_vmaxnmq_m_f32): Remove.
36784         (__arm_vmaxnmq_m_f16): Remove.
36785         (__arm_vminnmq_m_f32): Remove.
36786         (__arm_vminnmq_m_f16): Remove.
36787         (__arm_vminnmq_x_f16): Remove.
36788         (__arm_vminnmq_x_f32): Remove.
36789         (__arm_vmaxnmq_x_f16): Remove.
36790         (__arm_vmaxnmq_x_f32): Remove.
36791         (__arm_vminnmq): Remove.
36792         (__arm_vmaxnmq): Remove.
36793         (__arm_vmaxnmq_m): Remove.
36794         (__arm_vminnmq_m): Remove.
36795         (__arm_vminnmq_x): Remove.
36796         (__arm_vmaxnmq_x): Remove.
36798 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
36800         * config/arm/iterators.md (MAX_MIN_F): New.
36801         (MVE_FP_M_BINARY): Add VMAXNMQ_M_F, VMINNMQ_M_F.
36802         (mve_insn): Add vmaxnm, vminnm.
36803         (max_min_f_str): New.
36804         * config/arm/mve.md (mve_vmaxnmq_f<mode>, mve_vminnmq_f<mode>):
36805         Merge into ...
36806         (@mve_<max_min_f_str>q_f<mode>): ... this.
36807         (mve_vmaxnmq_m_f<mode>, mve_vminnmq_m_f<mode>): Merge into ...
36808         (@mve_<mve_insn>q_m_f<mode>): ... this.
36810 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
36812         * config/arm/vec-common.md (smin<mode>3): Use VDQWH iterator.
36813         (smax<mode>3): Likewise.
36815 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
36817         * config/arm/arm-mve-builtins-base.cc (FUNCTION_PRED_P_S_U)
36818         (FUNCTION_PRED_P_S): New.
36819         (vmaxavq, vminavq, vmaxvq, vminvq): New.
36820         * config/arm/arm-mve-builtins-base.def (vmaxavq, vminavq, vmaxvq)
36821         (vminvq): New.
36822         * config/arm/arm-mve-builtins-base.h (vmaxavq, vminavq, vmaxvq)
36823         (vminvq): New.
36824         * config/arm/arm_mve.h (vminvq): Remove.
36825         (vmaxvq): Remove.
36826         (vminvq_p): Remove.
36827         (vmaxvq_p): Remove.
36828         (vminvq_u8): Remove.
36829         (vmaxvq_u8): Remove.
36830         (vminvq_s8): Remove.
36831         (vmaxvq_s8): Remove.
36832         (vminvq_u16): Remove.
36833         (vmaxvq_u16): Remove.
36834         (vminvq_s16): Remove.
36835         (vmaxvq_s16): Remove.
36836         (vminvq_u32): Remove.
36837         (vmaxvq_u32): Remove.
36838         (vminvq_s32): Remove.
36839         (vmaxvq_s32): Remove.
36840         (vminvq_p_u8): Remove.
36841         (vmaxvq_p_u8): Remove.
36842         (vminvq_p_s8): Remove.
36843         (vmaxvq_p_s8): Remove.
36844         (vminvq_p_u16): Remove.
36845         (vmaxvq_p_u16): Remove.
36846         (vminvq_p_s16): Remove.
36847         (vmaxvq_p_s16): Remove.
36848         (vminvq_p_u32): Remove.
36849         (vmaxvq_p_u32): Remove.
36850         (vminvq_p_s32): Remove.
36851         (vmaxvq_p_s32): Remove.
36852         (__arm_vminvq_u8): Remove.
36853         (__arm_vmaxvq_u8): Remove.
36854         (__arm_vminvq_s8): Remove.
36855         (__arm_vmaxvq_s8): Remove.
36856         (__arm_vminvq_u16): Remove.
36857         (__arm_vmaxvq_u16): Remove.
36858         (__arm_vminvq_s16): Remove.
36859         (__arm_vmaxvq_s16): Remove.
36860         (__arm_vminvq_u32): Remove.
36861         (__arm_vmaxvq_u32): Remove.
36862         (__arm_vminvq_s32): Remove.
36863         (__arm_vmaxvq_s32): Remove.
36864         (__arm_vminvq_p_u8): Remove.
36865         (__arm_vmaxvq_p_u8): Remove.
36866         (__arm_vminvq_p_s8): Remove.
36867         (__arm_vmaxvq_p_s8): Remove.
36868         (__arm_vminvq_p_u16): Remove.
36869         (__arm_vmaxvq_p_u16): Remove.
36870         (__arm_vminvq_p_s16): Remove.
36871         (__arm_vmaxvq_p_s16): Remove.
36872         (__arm_vminvq_p_u32): Remove.
36873         (__arm_vmaxvq_p_u32): Remove.
36874         (__arm_vminvq_p_s32): Remove.
36875         (__arm_vmaxvq_p_s32): Remove.
36876         (__arm_vminvq): Remove.
36877         (__arm_vmaxvq): Remove.
36878         (__arm_vminvq_p): Remove.
36879         (__arm_vmaxvq_p): Remove.
36880         (vminavq): Remove.
36881         (vmaxavq): Remove.
36882         (vminavq_p): Remove.
36883         (vmaxavq_p): Remove.
36884         (vminavq_s8): Remove.
36885         (vmaxavq_s8): Remove.
36886         (vminavq_s16): Remove.
36887         (vmaxavq_s16): Remove.
36888         (vminavq_s32): Remove.
36889         (vmaxavq_s32): Remove.
36890         (vminavq_p_s8): Remove.
36891         (vmaxavq_p_s8): Remove.
36892         (vminavq_p_s16): Remove.
36893         (vmaxavq_p_s16): Remove.
36894         (vminavq_p_s32): Remove.
36895         (vmaxavq_p_s32): Remove.
36896         (__arm_vminavq_s8): Remove.
36897         (__arm_vmaxavq_s8): Remove.
36898         (__arm_vminavq_s16): Remove.
36899         (__arm_vmaxavq_s16): Remove.
36900         (__arm_vminavq_s32): Remove.
36901         (__arm_vmaxavq_s32): Remove.
36902         (__arm_vminavq_p_s8): Remove.
36903         (__arm_vmaxavq_p_s8): Remove.
36904         (__arm_vminavq_p_s16): Remove.
36905         (__arm_vmaxavq_p_s16): Remove.
36906         (__arm_vminavq_p_s32): Remove.
36907         (__arm_vmaxavq_p_s32): Remove.
36908         (__arm_vminavq): Remove.
36909         (__arm_vmaxavq): Remove.
36910         (__arm_vminavq_p): Remove.
36911         (__arm_vmaxavq_p): Remove.
36913 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
36915         * config/arm/iterators.md (MVE_VMAXVQ_VMINVQ, MVE_VMAXVQ_VMINVQ_P): New.
36916         (mve_insn): Add vmaxav, vmaxv, vminav, vminv.
36917         (supf): Add VMAXAVQ_S, VMAXAVQ_P_S, VMINAVQ_S, VMINAVQ_P_S.
36918         * config/arm/mve.md (mve_vmaxavq_s<mode>, mve_vmaxvq_<supf><mode>)
36919         (mve_vminavq_s<mode>, mve_vminvq_<supf><mode>): Merge into ...
36920         (@mve_<mve_insn>q_<supf><mode>): ... this.
36921         (mve_vmaxavq_p_s<mode>, mve_vmaxvq_p_<supf><mode>)
36922         (mve_vminavq_p_s<mode>, mve_vminvq_p_<supf><mode>): Merge into ...
36923         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
36925 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
36927         * config/arm/arm-mve-builtins-functions.h (class
36928         unspec_mve_function_exact_insn_pred_p): New.
36930 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
36932         * config/arm/arm-mve-builtins-shapes.cc (binary_maxavminav): New.
36933         * config/arm/arm-mve-builtins-shapes.h (binary_maxavminav): New.
36935 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
36937         * config/arm/arm-mve-builtins-shapes.cc (binary_maxvminv): New.
36938         * config/arm/arm-mve-builtins-shapes.h (binary_maxvminv): New.
36940 2023-05-09  Richard Sandiford  <richard.sandiford@arm.com>
36942         * config/aarch64/aarch64-protos.h (aarch64_adjust_reg_alloc_order):
36943         Declare.
36944         * config/aarch64/aarch64.h (REG_ALLOC_ORDER): Define.
36945         (ADJUST_REG_ALLOC_ORDER): Likewise.
36946         * config/aarch64/aarch64.cc (aarch64_adjust_reg_alloc_order): New
36947         function.
36948         * config/aarch64/aarch64-sve.md (*vcond_mask_<mode><vpred>): Use
36949         Upa rather than Upl for unpredicated movprfx alternatives.
36951 2023-05-09  Jeff Law  <jlaw@ventanamicro>
36953         * config/h8300/testcompare.md: Add peephole2 which uses a memory
36954         load to set flags, thus eliminating a compare against zero.
36956 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
36958         * config/arm/arm-mve-builtins-base.cc (vshllbq, vshlltq): New.
36959         * config/arm/arm-mve-builtins-base.def (vshllbq, vshlltq): New.
36960         * config/arm/arm-mve-builtins-base.h (vshllbq, vshlltq): New.
36961         * config/arm/arm_mve.h (vshlltq): Remove.
36962         (vshllbq): Remove.
36963         (vshllbq_m): Remove.
36964         (vshlltq_m): Remove.
36965         (vshllbq_x): Remove.
36966         (vshlltq_x): Remove.
36967         (vshlltq_n_u8): Remove.
36968         (vshllbq_n_u8): Remove.
36969         (vshlltq_n_s8): Remove.
36970         (vshllbq_n_s8): Remove.
36971         (vshlltq_n_u16): Remove.
36972         (vshllbq_n_u16): Remove.
36973         (vshlltq_n_s16): Remove.
36974         (vshllbq_n_s16): Remove.
36975         (vshllbq_m_n_s8): Remove.
36976         (vshllbq_m_n_s16): Remove.
36977         (vshllbq_m_n_u8): Remove.
36978         (vshllbq_m_n_u16): Remove.
36979         (vshlltq_m_n_s8): Remove.
36980         (vshlltq_m_n_s16): Remove.
36981         (vshlltq_m_n_u8): Remove.
36982         (vshlltq_m_n_u16): Remove.
36983         (vshllbq_x_n_s8): Remove.
36984         (vshllbq_x_n_s16): Remove.
36985         (vshllbq_x_n_u8): Remove.
36986         (vshllbq_x_n_u16): Remove.
36987         (vshlltq_x_n_s8): Remove.
36988         (vshlltq_x_n_s16): Remove.
36989         (vshlltq_x_n_u8): Remove.
36990         (vshlltq_x_n_u16): Remove.
36991         (__arm_vshlltq_n_u8): Remove.
36992         (__arm_vshllbq_n_u8): Remove.
36993         (__arm_vshlltq_n_s8): Remove.
36994         (__arm_vshllbq_n_s8): Remove.
36995         (__arm_vshlltq_n_u16): Remove.
36996         (__arm_vshllbq_n_u16): Remove.
36997         (__arm_vshlltq_n_s16): Remove.
36998         (__arm_vshllbq_n_s16): Remove.
36999         (__arm_vshllbq_m_n_s8): Remove.
37000         (__arm_vshllbq_m_n_s16): Remove.
37001         (__arm_vshllbq_m_n_u8): Remove.
37002         (__arm_vshllbq_m_n_u16): Remove.
37003         (__arm_vshlltq_m_n_s8): Remove.
37004         (__arm_vshlltq_m_n_s16): Remove.
37005         (__arm_vshlltq_m_n_u8): Remove.
37006         (__arm_vshlltq_m_n_u16): Remove.
37007         (__arm_vshllbq_x_n_s8): Remove.
37008         (__arm_vshllbq_x_n_s16): Remove.
37009         (__arm_vshllbq_x_n_u8): Remove.
37010         (__arm_vshllbq_x_n_u16): Remove.
37011         (__arm_vshlltq_x_n_s8): Remove.
37012         (__arm_vshlltq_x_n_s16): Remove.
37013         (__arm_vshlltq_x_n_u8): Remove.
37014         (__arm_vshlltq_x_n_u16): Remove.
37015         (__arm_vshlltq): Remove.
37016         (__arm_vshllbq): Remove.
37017         (__arm_vshllbq_m): Remove.
37018         (__arm_vshlltq_m): Remove.
37019         (__arm_vshllbq_x): Remove.
37020         (__arm_vshlltq_x): Remove.
37022 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
37024         * config/arm/iterators.md (mve_insn): Add vshllb, vshllt.
37025         (VSHLLBQ_N, VSHLLTQ_N): Remove.
37026         (VSHLLxQ_N): New.
37027         (VSHLLBQ_M_N, VSHLLTQ_M_N): Remove.
37028         (VSHLLxQ_M_N): New.
37029         * config/arm/mve.md (mve_vshllbq_n_<supf><mode>)
37030         (mve_vshlltq_n_<supf><mode>): Merge into ...
37031         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
37032         (mve_vshllbq_m_n_<supf><mode>, mve_vshlltq_m_n_<supf><mode>):
37033         Merge into ...
37034         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
37036 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
37038         * config/arm/arm-mve-builtins-shapes.cc (binary_widen_n): New.
37039         * config/arm/arm-mve-builtins-shapes.h (binary_widen_n): New.
37041 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
37043         * config/arm/arm-mve-builtins-base.cc (vmovnbq, vmovntq, vqmovnbq)
37044         (vqmovntq, vqmovunbq, vqmovuntq): New.
37045         * config/arm/arm-mve-builtins-base.def (vmovnbq, vmovntq)
37046         (vqmovnbq, vqmovntq, vqmovunbq, vqmovuntq): New.
37047         * config/arm/arm-mve-builtins-base.h (vmovnbq, vmovntq, vqmovnbq)
37048         (vqmovntq, vqmovunbq, vqmovuntq): New.
37049         * config/arm/arm-mve-builtins.cc
37050         (function_instance::has_inactive_argument): Handle vmovnbq,
37051         vmovntq, vqmovnbq, vqmovntq, vqmovunbq, vqmovuntq.
37052         * config/arm/arm_mve.h (vqmovntq): Remove.
37053         (vqmovnbq): Remove.
37054         (vqmovnbq_m): Remove.
37055         (vqmovntq_m): Remove.
37056         (vqmovntq_u16): Remove.
37057         (vqmovnbq_u16): Remove.
37058         (vqmovntq_s16): Remove.
37059         (vqmovnbq_s16): Remove.
37060         (vqmovntq_u32): Remove.
37061         (vqmovnbq_u32): Remove.
37062         (vqmovntq_s32): Remove.
37063         (vqmovnbq_s32): Remove.
37064         (vqmovnbq_m_s16): Remove.
37065         (vqmovntq_m_s16): Remove.
37066         (vqmovnbq_m_u16): Remove.
37067         (vqmovntq_m_u16): Remove.
37068         (vqmovnbq_m_s32): Remove.
37069         (vqmovntq_m_s32): Remove.
37070         (vqmovnbq_m_u32): Remove.
37071         (vqmovntq_m_u32): Remove.
37072         (__arm_vqmovntq_u16): Remove.
37073         (__arm_vqmovnbq_u16): Remove.
37074         (__arm_vqmovntq_s16): Remove.
37075         (__arm_vqmovnbq_s16): Remove.
37076         (__arm_vqmovntq_u32): Remove.
37077         (__arm_vqmovnbq_u32): Remove.
37078         (__arm_vqmovntq_s32): Remove.
37079         (__arm_vqmovnbq_s32): Remove.
37080         (__arm_vqmovnbq_m_s16): Remove.
37081         (__arm_vqmovntq_m_s16): Remove.
37082         (__arm_vqmovnbq_m_u16): Remove.
37083         (__arm_vqmovntq_m_u16): Remove.
37084         (__arm_vqmovnbq_m_s32): Remove.
37085         (__arm_vqmovntq_m_s32): Remove.
37086         (__arm_vqmovnbq_m_u32): Remove.
37087         (__arm_vqmovntq_m_u32): Remove.
37088         (__arm_vqmovntq): Remove.
37089         (__arm_vqmovnbq): Remove.
37090         (__arm_vqmovnbq_m): Remove.
37091         (__arm_vqmovntq_m): Remove.
37092         (vmovntq): Remove.
37093         (vmovnbq): Remove.
37094         (vmovnbq_m): Remove.
37095         (vmovntq_m): Remove.
37096         (vmovntq_u16): Remove.
37097         (vmovnbq_u16): Remove.
37098         (vmovntq_s16): Remove.
37099         (vmovnbq_s16): Remove.
37100         (vmovntq_u32): Remove.
37101         (vmovnbq_u32): Remove.
37102         (vmovntq_s32): Remove.
37103         (vmovnbq_s32): Remove.
37104         (vmovnbq_m_s16): Remove.
37105         (vmovntq_m_s16): Remove.
37106         (vmovnbq_m_u16): Remove.
37107         (vmovntq_m_u16): Remove.
37108         (vmovnbq_m_s32): Remove.
37109         (vmovntq_m_s32): Remove.
37110         (vmovnbq_m_u32): Remove.
37111         (vmovntq_m_u32): Remove.
37112         (__arm_vmovntq_u16): Remove.
37113         (__arm_vmovnbq_u16): Remove.
37114         (__arm_vmovntq_s16): Remove.
37115         (__arm_vmovnbq_s16): Remove.
37116         (__arm_vmovntq_u32): Remove.
37117         (__arm_vmovnbq_u32): Remove.
37118         (__arm_vmovntq_s32): Remove.
37119         (__arm_vmovnbq_s32): Remove.
37120         (__arm_vmovnbq_m_s16): Remove.
37121         (__arm_vmovntq_m_s16): Remove.
37122         (__arm_vmovnbq_m_u16): Remove.
37123         (__arm_vmovntq_m_u16): Remove.
37124         (__arm_vmovnbq_m_s32): Remove.
37125         (__arm_vmovntq_m_s32): Remove.
37126         (__arm_vmovnbq_m_u32): Remove.
37127         (__arm_vmovntq_m_u32): Remove.
37128         (__arm_vmovntq): Remove.
37129         (__arm_vmovnbq): Remove.
37130         (__arm_vmovnbq_m): Remove.
37131         (__arm_vmovntq_m): Remove.
37132         (vqmovuntq): Remove.
37133         (vqmovunbq): Remove.
37134         (vqmovunbq_m): Remove.
37135         (vqmovuntq_m): Remove.
37136         (vqmovuntq_s16): Remove.
37137         (vqmovunbq_s16): Remove.
37138         (vqmovuntq_s32): Remove.
37139         (vqmovunbq_s32): Remove.
37140         (vqmovunbq_m_s16): Remove.
37141         (vqmovuntq_m_s16): Remove.
37142         (vqmovunbq_m_s32): Remove.
37143         (vqmovuntq_m_s32): Remove.
37144         (__arm_vqmovuntq_s16): Remove.
37145         (__arm_vqmovunbq_s16): Remove.
37146         (__arm_vqmovuntq_s32): Remove.
37147         (__arm_vqmovunbq_s32): Remove.
37148         (__arm_vqmovunbq_m_s16): Remove.
37149         (__arm_vqmovuntq_m_s16): Remove.
37150         (__arm_vqmovunbq_m_s32): Remove.
37151         (__arm_vqmovuntq_m_s32): Remove.
37152         (__arm_vqmovuntq): Remove.
37153         (__arm_vqmovunbq): Remove.
37154         (__arm_vqmovunbq_m): Remove.
37155         (__arm_vqmovuntq_m): Remove.
37157 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
37159         * config/arm/iterators.md (MVE_MOVN, MVE_MOVN_M): New.
37160         (mve_insn): Add vmovnb, vmovnt, vqmovnb, vqmovnt, vqmovunb,
37161         vqmovunt.
37162         (isu): Likewise.
37163         (supf): Add VQMOVUNBQ_M_S, VQMOVUNBQ_S, VQMOVUNTQ_M_S,
37164         VQMOVUNTQ_S.
37165         * config/arm/mve.md (mve_vmovnbq_<supf><mode>)
37166         (mve_vmovntq_<supf><mode>, mve_vqmovnbq_<supf><mode>)
37167         (mve_vqmovntq_<supf><mode>, mve_vqmovunbq_s<mode>)
37168         (mve_vqmovuntq_s<mode>): Merge into ...
37169         (@mve_<mve_insn>q_<supf><mode>): ... this.
37170         (mve_vmovnbq_m_<supf><mode>, mve_vmovntq_m_<supf><mode>)
37171         (mve_vqmovnbq_m_<supf><mode>, mve_vqmovntq_m_<supf><mode>)
37172         (mve_vqmovunbq_m_s<mode>, mve_vqmovuntq_m_s<mode>): Merge into ...
37173         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
37175 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
37177         * config/arm/arm-mve-builtins-shapes.cc (binary_move_narrow): New.
37178         (binary_move_narrow_unsigned): New.
37179         * config/arm/arm-mve-builtins-shapes.h (binary_move_narrow): New.
37180         (binary_move_narrow_unsigned): New.
37182 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
37184         * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_F): New.
37185         (vrndaq, vrndmq, vrndnq, vrndpq, vrndq, vrndxq): New.
37186         * config/arm/arm-mve-builtins-base.def (vrndaq, vrndmq, vrndnq)
37187         (vrndpq, vrndq, vrndxq): New.
37188         * config/arm/arm-mve-builtins-base.h (vrndaq, vrndmq, vrndnq)
37189         (vrndpq, vrndq, vrndxq): New.
37190         * config/arm/arm_mve.h (vrndxq): Remove.
37191         (vrndq): Remove.
37192         (vrndpq): Remove.
37193         (vrndnq): Remove.
37194         (vrndmq): Remove.
37195         (vrndaq): Remove.
37196         (vrndaq_m): Remove.
37197         (vrndmq_m): Remove.
37198         (vrndnq_m): Remove.
37199         (vrndpq_m): Remove.
37200         (vrndq_m): Remove.
37201         (vrndxq_m): Remove.
37202         (vrndq_x): Remove.
37203         (vrndnq_x): Remove.
37204         (vrndmq_x): Remove.
37205         (vrndpq_x): Remove.
37206         (vrndaq_x): Remove.
37207         (vrndxq_x): Remove.
37208         (vrndxq_f16): Remove.
37209         (vrndxq_f32): Remove.
37210         (vrndq_f16): Remove.
37211         (vrndq_f32): Remove.
37212         (vrndpq_f16): Remove.
37213         (vrndpq_f32): Remove.
37214         (vrndnq_f16): Remove.
37215         (vrndnq_f32): Remove.
37216         (vrndmq_f16): Remove.
37217         (vrndmq_f32): Remove.
37218         (vrndaq_f16): Remove.
37219         (vrndaq_f32): Remove.
37220         (vrndaq_m_f16): Remove.
37221         (vrndmq_m_f16): Remove.
37222         (vrndnq_m_f16): Remove.
37223         (vrndpq_m_f16): Remove.
37224         (vrndq_m_f16): Remove.
37225         (vrndxq_m_f16): Remove.
37226         (vrndaq_m_f32): Remove.
37227         (vrndmq_m_f32): Remove.
37228         (vrndnq_m_f32): Remove.
37229         (vrndpq_m_f32): Remove.
37230         (vrndq_m_f32): Remove.
37231         (vrndxq_m_f32): Remove.
37232         (vrndq_x_f16): Remove.
37233         (vrndq_x_f32): Remove.
37234         (vrndnq_x_f16): Remove.
37235         (vrndnq_x_f32): Remove.
37236         (vrndmq_x_f16): Remove.
37237         (vrndmq_x_f32): Remove.
37238         (vrndpq_x_f16): Remove.
37239         (vrndpq_x_f32): Remove.
37240         (vrndaq_x_f16): Remove.
37241         (vrndaq_x_f32): Remove.
37242         (vrndxq_x_f16): Remove.
37243         (vrndxq_x_f32): Remove.
37244         (__arm_vrndxq_f16): Remove.
37245         (__arm_vrndxq_f32): Remove.
37246         (__arm_vrndq_f16): Remove.
37247         (__arm_vrndq_f32): Remove.
37248         (__arm_vrndpq_f16): Remove.
37249         (__arm_vrndpq_f32): Remove.
37250         (__arm_vrndnq_f16): Remove.
37251         (__arm_vrndnq_f32): Remove.
37252         (__arm_vrndmq_f16): Remove.
37253         (__arm_vrndmq_f32): Remove.
37254         (__arm_vrndaq_f16): Remove.
37255         (__arm_vrndaq_f32): Remove.
37256         (__arm_vrndaq_m_f16): Remove.
37257         (__arm_vrndmq_m_f16): Remove.
37258         (__arm_vrndnq_m_f16): Remove.
37259         (__arm_vrndpq_m_f16): Remove.
37260         (__arm_vrndq_m_f16): Remove.
37261         (__arm_vrndxq_m_f16): Remove.
37262         (__arm_vrndaq_m_f32): Remove.
37263         (__arm_vrndmq_m_f32): Remove.
37264         (__arm_vrndnq_m_f32): Remove.
37265         (__arm_vrndpq_m_f32): Remove.
37266         (__arm_vrndq_m_f32): Remove.
37267         (__arm_vrndxq_m_f32): Remove.
37268         (__arm_vrndq_x_f16): Remove.
37269         (__arm_vrndq_x_f32): Remove.
37270         (__arm_vrndnq_x_f16): Remove.
37271         (__arm_vrndnq_x_f32): Remove.
37272         (__arm_vrndmq_x_f16): Remove.
37273         (__arm_vrndmq_x_f32): Remove.
37274         (__arm_vrndpq_x_f16): Remove.
37275         (__arm_vrndpq_x_f32): Remove.
37276         (__arm_vrndaq_x_f16): Remove.
37277         (__arm_vrndaq_x_f32): Remove.
37278         (__arm_vrndxq_x_f16): Remove.
37279         (__arm_vrndxq_x_f32): Remove.
37280         (__arm_vrndxq): Remove.
37281         (__arm_vrndq): Remove.
37282         (__arm_vrndpq): Remove.
37283         (__arm_vrndnq): Remove.
37284         (__arm_vrndmq): Remove.
37285         (__arm_vrndaq): Remove.
37286         (__arm_vrndaq_m): Remove.
37287         (__arm_vrndmq_m): Remove.
37288         (__arm_vrndnq_m): Remove.
37289         (__arm_vrndpq_m): Remove.
37290         (__arm_vrndq_m): Remove.
37291         (__arm_vrndxq_m): Remove.
37292         (__arm_vrndq_x): Remove.
37293         (__arm_vrndnq_x): Remove.
37294         (__arm_vrndmq_x): Remove.
37295         (__arm_vrndpq_x): Remove.
37296         (__arm_vrndaq_x): Remove.
37297         (__arm_vrndxq_x): Remove.
37299 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
37301         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_N_NO_U_F): New.
37302         (vabsq, vnegq, vclsq, vclzq, vqabsq, vqnegq): New.
37303         * config/arm/arm-mve-builtins-base.def (vabsq, vnegq, vclsq)
37304         (vclzq, vqabsq, vqnegq): New.
37305         * config/arm/arm-mve-builtins-base.h (vabsq, vnegq, vclsq, vclzq)
37306         (vqabsq, vqnegq): New.
37307         * config/arm/arm_mve.h (vabsq): Remove.
37308         (vabsq_m): Remove.
37309         (vabsq_x): Remove.
37310         (vabsq_f16): Remove.
37311         (vabsq_f32): Remove.
37312         (vabsq_s8): Remove.
37313         (vabsq_s16): Remove.
37314         (vabsq_s32): Remove.
37315         (vabsq_m_s8): Remove.
37316         (vabsq_m_s16): Remove.
37317         (vabsq_m_s32): Remove.
37318         (vabsq_m_f16): Remove.
37319         (vabsq_m_f32): Remove.
37320         (vabsq_x_s8): Remove.
37321         (vabsq_x_s16): Remove.
37322         (vabsq_x_s32): Remove.
37323         (vabsq_x_f16): Remove.
37324         (vabsq_x_f32): Remove.
37325         (__arm_vabsq_s8): Remove.
37326         (__arm_vabsq_s16): Remove.
37327         (__arm_vabsq_s32): Remove.
37328         (__arm_vabsq_m_s8): Remove.
37329         (__arm_vabsq_m_s16): Remove.
37330         (__arm_vabsq_m_s32): Remove.
37331         (__arm_vabsq_x_s8): Remove.
37332         (__arm_vabsq_x_s16): Remove.
37333         (__arm_vabsq_x_s32): Remove.
37334         (__arm_vabsq_f16): Remove.
37335         (__arm_vabsq_f32): Remove.
37336         (__arm_vabsq_m_f16): Remove.
37337         (__arm_vabsq_m_f32): Remove.
37338         (__arm_vabsq_x_f16): Remove.
37339         (__arm_vabsq_x_f32): Remove.
37340         (__arm_vabsq): Remove.
37341         (__arm_vabsq_m): Remove.
37342         (__arm_vabsq_x): Remove.
37343         (vnegq): Remove.
37344         (vnegq_m): Remove.
37345         (vnegq_x): Remove.
37346         (vnegq_f16): Remove.
37347         (vnegq_f32): Remove.
37348         (vnegq_s8): Remove.
37349         (vnegq_s16): Remove.
37350         (vnegq_s32): Remove.
37351         (vnegq_m_s8): Remove.
37352         (vnegq_m_s16): Remove.
37353         (vnegq_m_s32): Remove.
37354         (vnegq_m_f16): Remove.
37355         (vnegq_m_f32): Remove.
37356         (vnegq_x_s8): Remove.
37357         (vnegq_x_s16): Remove.
37358         (vnegq_x_s32): Remove.
37359         (vnegq_x_f16): Remove.
37360         (vnegq_x_f32): Remove.
37361         (__arm_vnegq_s8): Remove.
37362         (__arm_vnegq_s16): Remove.
37363         (__arm_vnegq_s32): Remove.
37364         (__arm_vnegq_m_s8): Remove.
37365         (__arm_vnegq_m_s16): Remove.
37366         (__arm_vnegq_m_s32): Remove.
37367         (__arm_vnegq_x_s8): Remove.
37368         (__arm_vnegq_x_s16): Remove.
37369         (__arm_vnegq_x_s32): Remove.
37370         (__arm_vnegq_f16): Remove.
37371         (__arm_vnegq_f32): Remove.
37372         (__arm_vnegq_m_f16): Remove.
37373         (__arm_vnegq_m_f32): Remove.
37374         (__arm_vnegq_x_f16): Remove.
37375         (__arm_vnegq_x_f32): Remove.
37376         (__arm_vnegq): Remove.
37377         (__arm_vnegq_m): Remove.
37378         (__arm_vnegq_x): Remove.
37379         (vclsq): Remove.
37380         (vclsq_m): Remove.
37381         (vclsq_x): Remove.
37382         (vclsq_s8): Remove.
37383         (vclsq_s16): Remove.
37384         (vclsq_s32): Remove.
37385         (vclsq_m_s8): Remove.
37386         (vclsq_m_s16): Remove.
37387         (vclsq_m_s32): Remove.
37388         (vclsq_x_s8): Remove.
37389         (vclsq_x_s16): Remove.
37390         (vclsq_x_s32): Remove.
37391         (__arm_vclsq_s8): Remove.
37392         (__arm_vclsq_s16): Remove.
37393         (__arm_vclsq_s32): Remove.
37394         (__arm_vclsq_m_s8): Remove.
37395         (__arm_vclsq_m_s16): Remove.
37396         (__arm_vclsq_m_s32): Remove.
37397         (__arm_vclsq_x_s8): Remove.
37398         (__arm_vclsq_x_s16): Remove.
37399         (__arm_vclsq_x_s32): Remove.
37400         (__arm_vclsq): Remove.
37401         (__arm_vclsq_m): Remove.
37402         (__arm_vclsq_x): Remove.
37403         (vclzq): Remove.
37404         (vclzq_m): Remove.
37405         (vclzq_x): Remove.
37406         (vclzq_s8): Remove.
37407         (vclzq_s16): Remove.
37408         (vclzq_s32): Remove.
37409         (vclzq_u8): Remove.
37410         (vclzq_u16): Remove.
37411         (vclzq_u32): Remove.
37412         (vclzq_m_u8): Remove.
37413         (vclzq_m_s8): Remove.
37414         (vclzq_m_u16): Remove.
37415         (vclzq_m_s16): Remove.
37416         (vclzq_m_u32): Remove.
37417         (vclzq_m_s32): Remove.
37418         (vclzq_x_s8): Remove.
37419         (vclzq_x_s16): Remove.
37420         (vclzq_x_s32): Remove.
37421         (vclzq_x_u8): Remove.
37422         (vclzq_x_u16): Remove.
37423         (vclzq_x_u32): Remove.
37424         (__arm_vclzq_s8): Remove.
37425         (__arm_vclzq_s16): Remove.
37426         (__arm_vclzq_s32): Remove.
37427         (__arm_vclzq_u8): Remove.
37428         (__arm_vclzq_u16): Remove.
37429         (__arm_vclzq_u32): Remove.
37430         (__arm_vclzq_m_u8): Remove.
37431         (__arm_vclzq_m_s8): Remove.
37432         (__arm_vclzq_m_u16): Remove.
37433         (__arm_vclzq_m_s16): Remove.
37434         (__arm_vclzq_m_u32): Remove.
37435         (__arm_vclzq_m_s32): Remove.
37436         (__arm_vclzq_x_s8): Remove.
37437         (__arm_vclzq_x_s16): Remove.
37438         (__arm_vclzq_x_s32): Remove.
37439         (__arm_vclzq_x_u8): Remove.
37440         (__arm_vclzq_x_u16): Remove.
37441         (__arm_vclzq_x_u32): Remove.
37442         (__arm_vclzq): Remove.
37443         (__arm_vclzq_m): Remove.
37444         (__arm_vclzq_x): Remove.
37445         (vqabsq): Remove.
37446         (vqnegq): Remove.
37447         (vqnegq_m): Remove.
37448         (vqabsq_m): Remove.
37449         (vqabsq_s8): Remove.
37450         (vqabsq_s16): Remove.
37451         (vqabsq_s32): Remove.
37452         (vqnegq_s8): Remove.
37453         (vqnegq_s16): Remove.
37454         (vqnegq_s32): Remove.
37455         (vqnegq_m_s8): Remove.
37456         (vqabsq_m_s8): Remove.
37457         (vqnegq_m_s16): Remove.
37458         (vqabsq_m_s16): Remove.
37459         (vqnegq_m_s32): Remove.
37460         (vqabsq_m_s32): Remove.
37461         (__arm_vqabsq_s8): Remove.
37462         (__arm_vqabsq_s16): Remove.
37463         (__arm_vqabsq_s32): Remove.
37464         (__arm_vqnegq_s8): Remove.
37465         (__arm_vqnegq_s16): Remove.
37466         (__arm_vqnegq_s32): Remove.
37467         (__arm_vqnegq_m_s8): Remove.
37468         (__arm_vqabsq_m_s8): Remove.
37469         (__arm_vqnegq_m_s16): Remove.
37470         (__arm_vqabsq_m_s16): Remove.
37471         (__arm_vqnegq_m_s32): Remove.
37472         (__arm_vqabsq_m_s32): Remove.
37473         (__arm_vqabsq): Remove.
37474         (__arm_vqnegq): Remove.
37475         (__arm_vqnegq_m): Remove.
37476         (__arm_vqabsq_m): Remove.
37478 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
37480         * config/arm/iterators.md (MVE_INT_M_UNARY, MVE_INT_UNARY)
37481         (MVE_FP_UNARY, MVE_FP_M_UNARY): New.
37482         (mve_insn): Add vabs, vcls, vclz, vneg, vqabs, vqneg, vrnda,
37483         vrndm, vrndn, vrndp, vrnd, vrndx.
37484         (isu): Add VABSQ_M_S, VCLSQ_M_S, VCLZQ_M_S, VCLZQ_M_U, VNEGQ_M_S,
37485         VQABSQ_M_S, VQNEGQ_M_S.
37486         (mve_mnemo): New.
37487         * config/arm/mve.md (mve_vrndq_m_f<mode>, mve_vrndxq_f<mode>)
37488         (mve_vrndq_f<mode>, mve_vrndpq_f<mode>, mve_vrndnq_f<mode>)
37489         (mve_vrndmq_f<mode>, mve_vrndaq_f<mode>): Merge into ...
37490         (@mve_<mve_insn>q_f<mode>): ... this.
37491         (mve_vnegq_f<mode>, mve_vabsq_f<mode>): Merge into ...
37492         (mve_v<absneg_str>q_f<mode>): ... this.
37493         (mve_vnegq_s<mode>, mve_vabsq_s<mode>): Merge into ...
37494         (mve_v<absneg_str>q_s<mode>): ... this.
37495         (mve_vclsq_s<mode>, mve_vqnegq_s<mode>, mve_vqabsq_s<mode>): Merge into ...
37496         (@mve_<mve_insn>q_<supf><mode>): ... this.
37497         (mve_vabsq_m_s<mode>, mve_vclsq_m_s<mode>)
37498         (mve_vclzq_m_<supf><mode>, mve_vnegq_m_s<mode>)
37499         (mve_vqabsq_m_s<mode>, mve_vqnegq_m_s<mode>): Merge into ...
37500         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
37501         (mve_vabsq_m_f<mode>, mve_vnegq_m_f<mode>, mve_vrndaq_m_f<mode>)
37502         (mve_vrndmq_m_f<mode>, mve_vrndnq_m_f<mode>, mve_vrndpq_m_f<mode>)
37503         (mve_vrndxq_m_f<mode>): Merge into ...
37504         (@mve_<mve_insn>q_m_f<mode>): ... this.
37506 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
37508         * config/arm/arm-mve-builtins-shapes.cc (unary): New.
37509         * config/arm/arm-mve-builtins-shapes.h (unary): New.
37511 2023-05-09  Jakub Jelinek  <jakub@redhat.com>
37513         * mux-utils.h: Fix comment typo, avoides -> avoids.
37515 2023-05-09  Jakub Jelinek  <jakub@redhat.com>
37517         PR tree-optimization/109778
37518         * wide-int.h (wi::lrotate, wi::rrotate): Call wi::lrshift on
37519         wi::zext (x, width) rather than x if width != precision, rather
37520         than using wi::zext (right, width) after the shift.
37521         * tree-ssa-ccp.cc (bit_value_binop): Call wi::ext on the results
37522         of wi::lrotate or wi::rrotate.
37524 2023-05-09  Alexander Monakov  <amonakov@ispras.ru>
37526         * genmatch.cc (get_out_file): Make static and rename to ...
37527         (choose_output): ... this. Reimplement. Update all uses ...
37528         (decision_tree::gen): ... here and ...
37529         (main): ... here.
37531 2023-05-09  Alexander Monakov  <amonakov@ispras.ru>
37533         * genmatch.cc (showUsage): Reimplement as ...
37534         (usage): ...this.  Adjust all uses.
37535         (main): Print usage when no arguments.  Add missing 'return 1'.
37537 2023-05-09  Alexander Monakov  <amonakov@ispras.ru>
37539         * genmatch.cc (header_file): Make static.
37540         (emit_func): Rename to...
37541         (fp_decl): ... this.  Adjust all uses.
37542         (fp_decl_done): New function.  Use it...
37543         (decision_tree::gen): ... here and...
37544         (write_predicate): ... here.
37545         (main): Adjust.
37547 2023-05-09  Richard Sandiford  <richard.sandiford@arm.com>
37549         * ira-conflicts.cc (can_use_same_reg_p): Skip over non-matching
37550         earlyclobbers.
37552 2023-05-08  Roger Sayle  <roger@nextmovesoftware.com>
37553             Uros Bizjak  <ubizjak@gmail.com>
37555         * config/i386/i386.md (any_or_plus): Move definition earlier.
37556         (*insvti_highpart_1): New define_insn_and_split to overwrite
37557         (insv) the highpart of a TImode register/memory.
37559 2023-05-08  Eugene Rozenfeld  <erozen@microsoft.com>
37561         * auto-profile.cc (auto_profile): Check todo from early_inline
37562         to see if cleanup_tree_vfg needs to be called.
37563         (early_inline): Return todo from early_inliner.
37565 2023-05-08  Kito Cheng  <kito.cheng@sifive.com>
37567         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::get_vector_info):
37568         New.
37569         (pass_vsetvl::get_block_info): New.
37570         (pass_vsetvl::update_vector_info): New.
37571         (pass_vsetvl::simple_vsetvl): Use get_vector_info.
37572         (pass_vsetvl::compute_local_backward_infos): Ditto.
37573         (pass_vsetvl::transfer_before): Ditto.
37574         (pass_vsetvl::transfer_after): Ditto.
37575         (pass_vsetvl::emit_local_forward_vsetvls): Ditto.
37576         (pass_vsetvl::local_eliminate_vsetvl_insn): Ditto.
37577         (pass_vsetvl::cleanup_insns): Ditto.
37578         (pass_vsetvl::compute_local_backward_infos): Use
37579         update_vector_info.
37581 2023-05-08  Jeff Law  <jlaw@ventanamicro>
37583         * config/stormy16/stormy16.md (zero_extendhisi2): Fix length.
37585 2023-05-08  Richard Biener  <rguenther@suse.de>
37586             Michael Meissner  <meissner@linux.ibm.com>
37588         PR middle-end/108623
37589         * tree-core.h (tree_type_common): Bump up precision field to 16 bits.
37590         Align bit fields > 1 bit to at least an 8-bit boundary.
37592 2023-05-08  Andrew Pinski  <apinski@marvell.com>
37594         PR tree-optimization/109424
37595         PR tree-optimization/59424
37596         * tree-ssa-phiopt.cc (factor_out_conditional_conversion): Rename to ...
37597         (factor_out_conditional_operation): This and add support for all unary
37598         operations.
37599         (pass_phiopt::execute): Update call to factor_out_conditional_conversion
37600         to call factor_out_conditional_operation instead.
37602 2023-05-08  Andrew Pinski  <apinski@marvell.com>
37604         * tree-ssa-phiopt.cc (pass_phiopt::execute): Loop
37605         over factor_out_conditional_conversion.
37607 2023-05-08  Andrew Pinski  <apinski@marvell.com>
37609         PR tree-optimization/49959
37610         PR tree-optimization/103771
37611         * tree-ssa-phiopt.cc (pass_phiopt::execute): Support
37612         Diamond shapped bb form for factor_out_conditional_conversion.
37614 2023-05-08  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
37616         * config/riscv/autovec.md (movmisalign<mode>): New pattern.
37617         * config/riscv/riscv-protos.h (riscv_vector_mask_mode_p): Delete.
37618         (riscv_vector_get_mask_mode): Ditto.
37619         (get_mask_policy_no_pred): Ditto.
37620         (get_tail_policy_no_pred): Ditto.
37621         (get_mask_mode): New function.
37622         * config/riscv/riscv-v.cc (get_mask_policy_no_pred): Delete.
37623         (get_tail_policy_no_pred): Ditto.
37624         (riscv_vector_mask_mode_p): Ditto.
37625         (riscv_vector_get_mask_mode): Ditto.
37626         (get_mask_mode): New function.
37627         * config/riscv/riscv-vector-builtins.cc (use_real_merge_p): Remove
37628         global extern.
37629         (get_tail_policy_for_pred): Ditto.
37630         * config/riscv/riscv-vector-builtins.h (get_tail_policy_for_pred): Ditto.
37631         (get_mask_policy_for_pred): Ditto
37632         * config/riscv/riscv.cc (riscv_get_mask_mode): Refine codes.
37634 2023-05-08  Kito Cheng  <kito.cheng@sifive.com>
37636         * common/config/riscv/riscv-common.cc (riscv_select_multilib_by_abi): New.
37637         (riscv_select_multilib): New.
37638         (riscv_compute_multilib): Extract logic to riscv_select_multilib and
37639         also handle select_by_abi.
37640         * config/riscv/elf.h (RISCV_USE_CUSTOMISED_MULTI_LIB): Change it
37641         to select_by_abi_arch_cmodel from 1.
37642         * config/riscv/linux.h (RISCV_USE_CUSTOMISED_MULTI_LIB): Define.
37643         * config/riscv/riscv-opts.h (enum riscv_multilib_select_kind): New.
37645 2023-05-08  Alexander Monakov  <amonakov@ispras.ru>
37647         * Makefile.in: (gimple-match-head.o-warn): Remove.
37648         (GIMPLE_MATCH_PD_SEQ_SRC): Do not depend on
37649         gimple-match-exports.cc.
37650         (gimple-match-auto.h): Only depend on s-gimple-match.
37651         (generic-match-auto.h): Likewise.
37653 2023-05-08  Andrew Pinski  <apinski@marvell.com>
37655         PR tree-optimization/109691
37656         * tree-ssa-dce.cc (simple_dce_from_worklist): Add need_eh_cleanup
37657         argument.
37658         If the removed statement can throw, have need_eh_cleanup
37659         include the bb of that statement.
37660         * tree-ssa-dce.h (simple_dce_from_worklist): Update declaration.
37661         * tree-ssa-propagate.cc (struct prop_stats_d): Remove
37662         num_dce.
37663         (substitute_and_fold_dom_walker::substitute_and_fold_dom_walker):
37664         Initialize dceworklist instead of stmts_to_remove.
37665         (substitute_and_fold_dom_walker::~substitute_and_fold_dom_walker):
37666         Destore dceworklist instead of stmts_to_remove.
37667         (substitute_and_fold_dom_walker::before_dom_children):
37668         Set dceworklist instead of adding to stmts_to_remove.
37669         (substitute_and_fold_engine::substitute_and_fold):
37670         Call simple_dce_from_worklist instead of poping
37671         from the list.
37672         Don't update the stat on removal statements.
37674 2023-05-07  Andrew Pinski  <apinski@marvell.com>
37676         PR target/109762
37677         * config/aarch64/aarch64-builtins.cc (aarch64_simd_switcher::aarch64_simd_switcher):
37678         Change argument type to aarch64_feature_flags.
37679         * config/aarch64/aarch64-protos.h (aarch64_simd_switcher): Change
37680         constructor argument type to aarch64_feature_flags.
37681         Change m_old_asm_isa_flags to be aarch64_feature_flags.
37683 2023-05-07  Jiufu Guo  <guojiufu@linux.ibm.com>
37685         * config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Generate
37686         more parallel code if can_create_pseudo_p.
37688 2023-05-07  Roger Sayle  <roger@nextmovesoftware.com>
37690         PR target/43644
37691         * lower-subreg.cc (resolve_simple_move): Don't emit a clobber
37692         immediately before moving a multi-word register by parts.
37694 2023-05-06  Jeff Law  <jlaw@ventanamicro>
37696         * config/riscv/riscv-v.cc (riscv_vector_preferred_simd_mode): Delete.
37698 2023-05-06  Michael Collison  <collison@rivosinc.com>
37700         * tree-vect-slp.cc (can_duplicate_and_interleave_p):
37701         Check that GET_MODE_NUNITS is a multiple of 2.
37703 2023-05-06  Michael Collison  <collison@rivosinc.com>
37705         * config/riscv/riscv.cc
37706         (riscv_estimated_poly_value): Implement
37707         TARGET_ESTIMATED_POLY_VALUE.
37708         (riscv_preferred_simd_mode): Implement
37709         TARGET_VECTORIZE_PREFERRED_SIMD_MODE.
37710         (riscv_get_mask_mode): Implement TARGET_VECTORIZE_GET_MASK_MODE.
37711         (riscv_empty_mask_is_expensive): Implement
37712         TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE.
37713         (riscv_vectorize_create_costs): Implement
37714         TARGET_VECTORIZE_CREATE_COSTS.
37715         (riscv_support_vector_misalignment): Implement
37716         TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT.
37717         (TARGET_ESTIMATED_POLY_VALUE): Register target macro.
37718         (TARGET_VECTORIZE_GET_MASK_MODE): Ditto.
37719         (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): Ditto.
37720         (TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT): Ditto.
37722 2023-05-06  Jeff Law  <jlaw@ventanamicro>
37724         * config/riscv/riscv-v.cc (autovec_use_vlmax_p): Remove
37725         duplicate definition.
37727 2023-05-06  Michael Collison  <collison@rivosinc.com>
37729         * config/riscv/riscv-v.cc (autovec_use_vlmax_p): New function.
37730         (riscv_vector_preferred_simd_mode): Ditto.
37731         (get_mask_policy_no_pred): Ditto.
37732         (get_tail_policy_no_pred): Ditto.
37733         (riscv_vector_mask_mode_p): Ditto.
37734         (riscv_vector_get_mask_mode): Ditto.
37736 2023-05-06  Michael Collison  <collison@rivosinc.com>
37738         * config/riscv/riscv-vector-builtins.cc (get_tail_policy_for_pred):
37739         Remove static declaration to to make externally visible.
37740         (get_mask_policy_for_pred): Ditto.
37741         * config/riscv/riscv-vector-builtins.h (get_tail_policy_for_pred):
37742         New external declaration.
37743         (get_mask_policy_for_pred): Ditto.
37745 2023-05-06  Michael Collison  <collison@rivosinc.com>
37747         * config/riscv/riscv-protos.h (riscv_vector_mask_mode_p): New.
37748         (riscv_vector_get_mask_mode): Ditto.
37749         (get_mask_policy_no_pred): Ditto.
37750         (get_tail_policy_no_pred): Ditto.
37752 2023-05-06  Xi Ruoyao  <xry111@xry111.site>
37754         * config/loongarch/loongarch.h (struct machine_function): Add
37755         reg_is_wrapped_separately array for register wrapping
37756         information.
37757         * config/loongarch/loongarch.cc
37758         (loongarch_get_separate_components): New function.
37759         (loongarch_components_for_bb): Likewise.
37760         (loongarch_disqualify_components): Likewise.
37761         (loongarch_process_components): Likewise.
37762         (loongarch_emit_prologue_components): Likewise.
37763         (loongarch_emit_epilogue_components): Likewise.
37764         (loongarch_set_handled_components): Likewise.
37765         (TARGET_SHRINK_WRAP_GET_SEPARATE_COMPONENTS): Define.
37766         (TARGET_SHRINK_WRAP_COMPONENTS_FOR_BB): Likewise.
37767         (TARGET_SHRINK_WRAP_DISQUALIFY_COMPONENTS): Likewise.
37768         (TARGET_SHRINK_WRAP_EMIT_PROLOGUE_COMPONENTS): Likewise.
37769         (TARGET_SHRINK_WRAP_EMIT_EPILOGUE_COMPONENTS): Likewise.
37770         (TARGET_SHRINK_WRAP_SET_HANDLED_COMPONENTS): Likewise.
37771         (loongarch_for_each_saved_reg): Skip registers that are wrapped
37772         separately.
37774 2023-05-06  Xi Ruoyao  <xry111@xry111.site>
37776         PR other/109522
37777         * Makefile.in (s-macro_list): Pass -nostdinc to
37778         $(GCC_FOR_TARGET).
37780 2023-05-06  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
37782         * config/riscv/riscv-protos.h (preferred_simd_mode): New function.
37783         * config/riscv/riscv-v.cc (autovec_use_vlmax_p): Ditto.
37784         (preferred_simd_mode): Ditto.
37785         * config/riscv/riscv.cc (riscv_get_arg_info): Handle RVV type in function arg.
37786         (riscv_convert_vector_bits): Adjust for RVV auto-vectorization.
37787         (riscv_preferred_simd_mode): New function.
37788         (TARGET_VECTORIZE_PREFERRED_SIMD_MODE): New target hook support.
37789         * config/riscv/vector.md: Add autovec.md.
37790         * config/riscv/autovec.md: New file.
37792 2023-05-06  Jakub Jelinek  <jakub@redhat.com>
37794         * real.h (dconst_pi): Define.
37795         (dconst_e_ptr): Formatting fix.
37796         (dconst_pi_ptr): Declare.
37797         * real.cc (dconst_pi_ptr): New function.
37798         * gimple-range-op.cc (cfn_sincos::fold_range): Intersect the generic
37799         boundaries range with range computed from sin/cos of the particular
37800         bounds if the argument range is shorter than 2*pi.
37801         (cfn_sincos::op1_range): Take bulps into account when determining
37802         which result ranges are always invalid or behave like known NAN.
37804 2023-05-06  Aldy Hernandez  <aldyh@redhat.com>
37806         * gimple-range-cache.cc (sbr_sparse_bitmap::set_bb_range): Do not
37807         pass type to vrange_storage::equal_p.
37808         * value-range-storage.cc (vrange_storage::equal_p): Remove type.
37809         (irange_storage::equal_p): Same.
37810         (frange_storage::equal_p): Same.
37811         * value-range-storage.h (class frange_storage): Same.
37813 2023-05-06  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
37815         PR target/109748
37816         * config/riscv/riscv-vsetvl.cc (local_eliminate_vsetvl_insn): Remove it.
37817         (pass_vsetvl::local_eliminate_vsetvl_insn): New function.
37819 2023-05-06  liuhongt  <hongtao.liu@intel.com>
37821         * combine.cc (maybe_swap_commutative_operands): Canonicalize
37822         vec_merge when mask is constant.
37823         * doc/md.texi: Document vec_merge canonicalization.
37825 2023-05-06  Jakub Jelinek  <jakub@redhat.com>
37827         * value-range.h (frange_arithmetic): Declare.
37828         * range-op-float.cc (frange_arithmetic): No longer static.
37829         * gimple-range-op.cc (frange_mpfr_arg1): New function.
37830         (cfn_sqrt::fold_range): Intersect the generic boundaries range
37831         with range computed from sqrt of the particular bounds.
37832         (cfn_sqrt::op1_range): Intersect the generic boundaries range
37833         with range computed from squared particular bounds.
37835 2023-05-06  Jakub Jelinek  <jakub@redhat.com>
37837         * Makefile.in (check_p_numbers): Rename to one_to_9999, move
37838         earlier with helper variables also renamed.
37839         (MATCH_SPLUT_SEQ): Use $(wordlist 1,$(NUM_MATCH_SPLITS),$(one_to_9999))
37840         instead of $(shell seq 1 $(NUM_MATCH_SPLITS)).
37841         (check_p_subdirs): Use $(one_to_9999) instead of $(check_p_numbers).
37843 2023-05-06  Hans-Peter Nilsson  <hp@axis.com>
37845         * config/cris/cris.md (splitop): Add PLUS.
37846         * config/cris/cris.cc (cris_split_constant): Also handle
37847         PLUS when a split into two insns may be useful.
37849 2023-05-05  Hans-Peter Nilsson  <hp@axis.com>
37851         * config/cris/cris.md (movandsplit1): New define_peephole2.
37853 2023-05-05  Hans-Peter Nilsson  <hp@axis.com>
37855         * config/cris/cris.md (lsrandsplit1): New define_peephole2.
37857 2023-05-05  Hans-Peter Nilsson  <hp@axis.com>
37859         * doc/md.texi (define_peephole2): Document order of scanning.
37861 2023-05-05  Pan Li  <pan2.li@intel.com>
37862             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
37864         * config/riscv/vector.md: Allow const as the operand of RVV
37865         indexed load/store.
37867 2023-05-05  Pan Li  <pan2.li@intel.com>
37869         * config/riscv/riscv.h (VECTOR_STORE_FLAG_VALUE): Add new macro
37870         consumed by simplify_rtx.
37872 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
37874         * config/arm/arm-mve-builtins-base.cc (vrshrq, vshrq): New.
37875         * config/arm/arm-mve-builtins-base.def (vrshrq, vshrq): New.
37876         * config/arm/arm-mve-builtins-base.h (vrshrq, vshrq): New.
37877         * config/arm/arm_mve.h (vshrq): Remove.
37878         (vrshrq): Remove.
37879         (vrshrq_m): Remove.
37880         (vshrq_m): Remove.
37881         (vrshrq_x): Remove.
37882         (vshrq_x): Remove.
37883         (vshrq_n_s8): Remove.
37884         (vshrq_n_s16): Remove.
37885         (vshrq_n_s32): Remove.
37886         (vshrq_n_u8): Remove.
37887         (vshrq_n_u16): Remove.
37888         (vshrq_n_u32): Remove.
37889         (vrshrq_n_u8): Remove.
37890         (vrshrq_n_s8): Remove.
37891         (vrshrq_n_u16): Remove.
37892         (vrshrq_n_s16): Remove.
37893         (vrshrq_n_u32): Remove.
37894         (vrshrq_n_s32): Remove.
37895         (vrshrq_m_n_s8): Remove.
37896         (vrshrq_m_n_s32): Remove.
37897         (vrshrq_m_n_s16): Remove.
37898         (vrshrq_m_n_u8): Remove.
37899         (vrshrq_m_n_u32): Remove.
37900         (vrshrq_m_n_u16): Remove.
37901         (vshrq_m_n_s8): Remove.
37902         (vshrq_m_n_s32): Remove.
37903         (vshrq_m_n_s16): Remove.
37904         (vshrq_m_n_u8): Remove.
37905         (vshrq_m_n_u32): Remove.
37906         (vshrq_m_n_u16): Remove.
37907         (vrshrq_x_n_s8): Remove.
37908         (vrshrq_x_n_s16): Remove.
37909         (vrshrq_x_n_s32): Remove.
37910         (vrshrq_x_n_u8): Remove.
37911         (vrshrq_x_n_u16): Remove.
37912         (vrshrq_x_n_u32): Remove.
37913         (vshrq_x_n_s8): Remove.
37914         (vshrq_x_n_s16): Remove.
37915         (vshrq_x_n_s32): Remove.
37916         (vshrq_x_n_u8): Remove.
37917         (vshrq_x_n_u16): Remove.
37918         (vshrq_x_n_u32): Remove.
37919         (__arm_vshrq_n_s8): Remove.
37920         (__arm_vshrq_n_s16): Remove.
37921         (__arm_vshrq_n_s32): Remove.
37922         (__arm_vshrq_n_u8): Remove.
37923         (__arm_vshrq_n_u16): Remove.
37924         (__arm_vshrq_n_u32): Remove.
37925         (__arm_vrshrq_n_u8): Remove.
37926         (__arm_vrshrq_n_s8): Remove.
37927         (__arm_vrshrq_n_u16): Remove.
37928         (__arm_vrshrq_n_s16): Remove.
37929         (__arm_vrshrq_n_u32): Remove.
37930         (__arm_vrshrq_n_s32): Remove.
37931         (__arm_vrshrq_m_n_s8): Remove.
37932         (__arm_vrshrq_m_n_s32): Remove.
37933         (__arm_vrshrq_m_n_s16): Remove.
37934         (__arm_vrshrq_m_n_u8): Remove.
37935         (__arm_vrshrq_m_n_u32): Remove.
37936         (__arm_vrshrq_m_n_u16): Remove.
37937         (__arm_vshrq_m_n_s8): Remove.
37938         (__arm_vshrq_m_n_s32): Remove.
37939         (__arm_vshrq_m_n_s16): Remove.
37940         (__arm_vshrq_m_n_u8): Remove.
37941         (__arm_vshrq_m_n_u32): Remove.
37942         (__arm_vshrq_m_n_u16): Remove.
37943         (__arm_vrshrq_x_n_s8): Remove.
37944         (__arm_vrshrq_x_n_s16): Remove.
37945         (__arm_vrshrq_x_n_s32): Remove.
37946         (__arm_vrshrq_x_n_u8): Remove.
37947         (__arm_vrshrq_x_n_u16): Remove.
37948         (__arm_vrshrq_x_n_u32): Remove.
37949         (__arm_vshrq_x_n_s8): Remove.
37950         (__arm_vshrq_x_n_s16): Remove.
37951         (__arm_vshrq_x_n_s32): Remove.
37952         (__arm_vshrq_x_n_u8): Remove.
37953         (__arm_vshrq_x_n_u16): Remove.
37954         (__arm_vshrq_x_n_u32): Remove.
37955         (__arm_vshrq): Remove.
37956         (__arm_vrshrq): Remove.
37957         (__arm_vrshrq_m): Remove.
37958         (__arm_vshrq_m): Remove.
37959         (__arm_vrshrq_x): Remove.
37960         (__arm_vshrq_x): Remove.
37962 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
37964         * config/arm/iterators.md (MVE_VSHRQ_M_N, MVE_VSHRQ_N): New.
37965         (mve_insn): Add vrshr, vshr.
37966         * config/arm/mve.md (mve_vshrq_n_<supf><mode>)
37967         (mve_vrshrq_n_<supf><mode>): Merge into ...
37968         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
37969         (mve_vrshrq_m_n_<supf><mode>, mve_vshrq_m_n_<supf><mode>): Merge
37970         into ...
37971         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
37973 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
37975         * config/arm/arm-mve-builtins-shapes.cc (binary_rshift): New.
37976         * config/arm/arm-mve-builtins-shapes.h (binary_rshift): New.
37978 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
37980         * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N_NO_U_F): New.
37981         (vqshrunbq, vqshruntq, vqrshrunbq, vqrshruntq): New.
37982         * config/arm/arm-mve-builtins-base.def (vqshrunbq, vqshruntq)
37983         (vqrshrunbq, vqrshruntq): New.
37984         * config/arm/arm-mve-builtins-base.h (vqshrunbq, vqshruntq)
37985         (vqrshrunbq, vqrshruntq): New.
37986         * config/arm/arm-mve-builtins.cc
37987         (function_instance::has_inactive_argument): Handle vqshrunbq,
37988         vqshruntq, vqrshrunbq, vqrshruntq.
37989         * config/arm/arm_mve.h (vqrshrunbq): Remove.
37990         (vqrshruntq): Remove.
37991         (vqrshrunbq_m): Remove.
37992         (vqrshruntq_m): Remove.
37993         (vqrshrunbq_n_s16): Remove.
37994         (vqrshrunbq_n_s32): Remove.
37995         (vqrshruntq_n_s16): Remove.
37996         (vqrshruntq_n_s32): Remove.
37997         (vqrshrunbq_m_n_s32): Remove.
37998         (vqrshrunbq_m_n_s16): Remove.
37999         (vqrshruntq_m_n_s32): Remove.
38000         (vqrshruntq_m_n_s16): Remove.
38001         (__arm_vqrshrunbq_n_s16): Remove.
38002         (__arm_vqrshrunbq_n_s32): Remove.
38003         (__arm_vqrshruntq_n_s16): Remove.
38004         (__arm_vqrshruntq_n_s32): Remove.
38005         (__arm_vqrshrunbq_m_n_s32): Remove.
38006         (__arm_vqrshrunbq_m_n_s16): Remove.
38007         (__arm_vqrshruntq_m_n_s32): Remove.
38008         (__arm_vqrshruntq_m_n_s16): Remove.
38009         (__arm_vqrshrunbq): Remove.
38010         (__arm_vqrshruntq): Remove.
38011         (__arm_vqrshrunbq_m): Remove.
38012         (__arm_vqrshruntq_m): Remove.
38013         (vqshrunbq): Remove.
38014         (vqshruntq): Remove.
38015         (vqshrunbq_m): Remove.
38016         (vqshruntq_m): Remove.
38017         (vqshrunbq_n_s16): Remove.
38018         (vqshruntq_n_s16): Remove.
38019         (vqshrunbq_n_s32): Remove.
38020         (vqshruntq_n_s32): Remove.
38021         (vqshrunbq_m_n_s32): Remove.
38022         (vqshrunbq_m_n_s16): Remove.
38023         (vqshruntq_m_n_s32): Remove.
38024         (vqshruntq_m_n_s16): Remove.
38025         (__arm_vqshrunbq_n_s16): Remove.
38026         (__arm_vqshruntq_n_s16): Remove.
38027         (__arm_vqshrunbq_n_s32): Remove.
38028         (__arm_vqshruntq_n_s32): Remove.
38029         (__arm_vqshrunbq_m_n_s32): Remove.
38030         (__arm_vqshrunbq_m_n_s16): Remove.
38031         (__arm_vqshruntq_m_n_s32): Remove.
38032         (__arm_vqshruntq_m_n_s16): Remove.
38033         (__arm_vqshrunbq): Remove.
38034         (__arm_vqshruntq): Remove.
38035         (__arm_vqshrunbq_m): Remove.
38036         (__arm_vqshruntq_m): Remove.
38038 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
38040         * config/arm/iterators.md (MVE_SHRN_N): Add VQRSHRUNBQ,
38041         VQRSHRUNTQ, VQSHRUNBQ, VQSHRUNTQ.
38042         (MVE_SHRN_M_N): Likewise.
38043         (mve_insn): Add vqrshrunb, vqrshrunt, vqshrunb, vqshrunt.
38044         (isu): Add VQRSHRUNBQ, VQRSHRUNTQ, VQSHRUNBQ, VQSHRUNTQ.
38045         (supf): Likewise.
38046         * config/arm/mve.md (mve_vqrshrunbq_n_s<mode>): Remove.
38047         (mve_vqrshruntq_n_s<mode>): Remove.
38048         (mve_vqshrunbq_n_s<mode>): Remove.
38049         (mve_vqshruntq_n_s<mode>): Remove.
38050         (mve_vqrshrunbq_m_n_s<mode>): Remove.
38051         (mve_vqrshruntq_m_n_s<mode>): Remove.
38052         (mve_vqshrunbq_m_n_s<mode>): Remove.
38053         (mve_vqshruntq_m_n_s<mode>): Remove.
38055 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
38057         * config/arm/arm-mve-builtins-shapes.cc
38058         (binary_rshift_narrow_unsigned): New.
38059         * config/arm/arm-mve-builtins-shapes.h
38060         (binary_rshift_narrow_unsigned): New.
38062 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
38064         * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N_NO_F): New.
38065         (vshrnbq, vshrntq, vrshrnbq, vrshrntq, vqshrnbq, vqshrntq)
38066         (vqrshrnbq, vqrshrntq): New.
38067         * config/arm/arm-mve-builtins-base.def (vshrnbq, vshrntq)
38068         (vrshrnbq, vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq, vqrshrntq):
38069         New.
38070         * config/arm/arm-mve-builtins-base.h (vshrnbq, vshrntq, vrshrnbq)
38071         (vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq, vqrshrntq): New.
38072         * config/arm/arm-mve-builtins.cc
38073         (function_instance::has_inactive_argument): Handle vshrnbq,
38074         vshrntq, vrshrnbq, vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq,
38075         vqrshrntq.
38076         * config/arm/arm_mve.h (vshrnbq): Remove.
38077         (vshrntq): Remove.
38078         (vshrnbq_m): Remove.
38079         (vshrntq_m): Remove.
38080         (vshrnbq_n_s16): Remove.
38081         (vshrntq_n_s16): Remove.
38082         (vshrnbq_n_u16): Remove.
38083         (vshrntq_n_u16): Remove.
38084         (vshrnbq_n_s32): Remove.
38085         (vshrntq_n_s32): Remove.
38086         (vshrnbq_n_u32): Remove.
38087         (vshrntq_n_u32): Remove.
38088         (vshrnbq_m_n_s32): Remove.
38089         (vshrnbq_m_n_s16): Remove.
38090         (vshrnbq_m_n_u32): Remove.
38091         (vshrnbq_m_n_u16): Remove.
38092         (vshrntq_m_n_s32): Remove.
38093         (vshrntq_m_n_s16): Remove.
38094         (vshrntq_m_n_u32): Remove.
38095         (vshrntq_m_n_u16): Remove.
38096         (__arm_vshrnbq_n_s16): Remove.
38097         (__arm_vshrntq_n_s16): Remove.
38098         (__arm_vshrnbq_n_u16): Remove.
38099         (__arm_vshrntq_n_u16): Remove.
38100         (__arm_vshrnbq_n_s32): Remove.
38101         (__arm_vshrntq_n_s32): Remove.
38102         (__arm_vshrnbq_n_u32): Remove.
38103         (__arm_vshrntq_n_u32): Remove.
38104         (__arm_vshrnbq_m_n_s32): Remove.
38105         (__arm_vshrnbq_m_n_s16): Remove.
38106         (__arm_vshrnbq_m_n_u32): Remove.
38107         (__arm_vshrnbq_m_n_u16): Remove.
38108         (__arm_vshrntq_m_n_s32): Remove.
38109         (__arm_vshrntq_m_n_s16): Remove.
38110         (__arm_vshrntq_m_n_u32): Remove.
38111         (__arm_vshrntq_m_n_u16): Remove.
38112         (__arm_vshrnbq): Remove.
38113         (__arm_vshrntq): Remove.
38114         (__arm_vshrnbq_m): Remove.
38115         (__arm_vshrntq_m): Remove.
38116         (vrshrnbq): Remove.
38117         (vrshrntq): Remove.
38118         (vrshrnbq_m): Remove.
38119         (vrshrntq_m): Remove.
38120         (vrshrnbq_n_s16): Remove.
38121         (vrshrntq_n_s16): Remove.
38122         (vrshrnbq_n_u16): Remove.
38123         (vrshrntq_n_u16): Remove.
38124         (vrshrnbq_n_s32): Remove.
38125         (vrshrntq_n_s32): Remove.
38126         (vrshrnbq_n_u32): Remove.
38127         (vrshrntq_n_u32): Remove.
38128         (vrshrnbq_m_n_s32): Remove.
38129         (vrshrnbq_m_n_s16): Remove.
38130         (vrshrnbq_m_n_u32): Remove.
38131         (vrshrnbq_m_n_u16): Remove.
38132         (vrshrntq_m_n_s32): Remove.
38133         (vrshrntq_m_n_s16): Remove.
38134         (vrshrntq_m_n_u32): Remove.
38135         (vrshrntq_m_n_u16): Remove.
38136         (__arm_vrshrnbq_n_s16): Remove.
38137         (__arm_vrshrntq_n_s16): Remove.
38138         (__arm_vrshrnbq_n_u16): Remove.
38139         (__arm_vrshrntq_n_u16): Remove.
38140         (__arm_vrshrnbq_n_s32): Remove.
38141         (__arm_vrshrntq_n_s32): Remove.
38142         (__arm_vrshrnbq_n_u32): Remove.
38143         (__arm_vrshrntq_n_u32): Remove.
38144         (__arm_vrshrnbq_m_n_s32): Remove.
38145         (__arm_vrshrnbq_m_n_s16): Remove.
38146         (__arm_vrshrnbq_m_n_u32): Remove.
38147         (__arm_vrshrnbq_m_n_u16): Remove.
38148         (__arm_vrshrntq_m_n_s32): Remove.
38149         (__arm_vrshrntq_m_n_s16): Remove.
38150         (__arm_vrshrntq_m_n_u32): Remove.
38151         (__arm_vrshrntq_m_n_u16): Remove.
38152         (__arm_vrshrnbq): Remove.
38153         (__arm_vrshrntq): Remove.
38154         (__arm_vrshrnbq_m): Remove.
38155         (__arm_vrshrntq_m): Remove.
38156         (vqshrnbq): Remove.
38157         (vqshrntq): Remove.
38158         (vqshrnbq_m): Remove.
38159         (vqshrntq_m): Remove.
38160         (vqshrnbq_n_s16): Remove.
38161         (vqshrntq_n_s16): Remove.
38162         (vqshrnbq_n_u16): Remove.
38163         (vqshrntq_n_u16): Remove.
38164         (vqshrnbq_n_s32): Remove.
38165         (vqshrntq_n_s32): Remove.
38166         (vqshrnbq_n_u32): Remove.
38167         (vqshrntq_n_u32): Remove.
38168         (vqshrnbq_m_n_s32): Remove.
38169         (vqshrnbq_m_n_s16): Remove.
38170         (vqshrnbq_m_n_u32): Remove.
38171         (vqshrnbq_m_n_u16): Remove.
38172         (vqshrntq_m_n_s32): Remove.
38173         (vqshrntq_m_n_s16): Remove.
38174         (vqshrntq_m_n_u32): Remove.
38175         (vqshrntq_m_n_u16): Remove.
38176         (__arm_vqshrnbq_n_s16): Remove.
38177         (__arm_vqshrntq_n_s16): Remove.
38178         (__arm_vqshrnbq_n_u16): Remove.
38179         (__arm_vqshrntq_n_u16): Remove.
38180         (__arm_vqshrnbq_n_s32): Remove.
38181         (__arm_vqshrntq_n_s32): Remove.
38182         (__arm_vqshrnbq_n_u32): Remove.
38183         (__arm_vqshrntq_n_u32): Remove.
38184         (__arm_vqshrnbq_m_n_s32): Remove.
38185         (__arm_vqshrnbq_m_n_s16): Remove.
38186         (__arm_vqshrnbq_m_n_u32): Remove.
38187         (__arm_vqshrnbq_m_n_u16): Remove.
38188         (__arm_vqshrntq_m_n_s32): Remove.
38189         (__arm_vqshrntq_m_n_s16): Remove.
38190         (__arm_vqshrntq_m_n_u32): Remove.
38191         (__arm_vqshrntq_m_n_u16): Remove.
38192         (__arm_vqshrnbq): Remove.
38193         (__arm_vqshrntq): Remove.
38194         (__arm_vqshrnbq_m): Remove.
38195         (__arm_vqshrntq_m): Remove.
38196         (vqrshrnbq): Remove.
38197         (vqrshrntq): Remove.
38198         (vqrshrnbq_m): Remove.
38199         (vqrshrntq_m): Remove.
38200         (vqrshrnbq_n_s16): Remove.
38201         (vqrshrnbq_n_u16): Remove.
38202         (vqrshrnbq_n_s32): Remove.
38203         (vqrshrnbq_n_u32): Remove.
38204         (vqrshrntq_n_s16): Remove.
38205         (vqrshrntq_n_u16): Remove.
38206         (vqrshrntq_n_s32): Remove.
38207         (vqrshrntq_n_u32): Remove.
38208         (vqrshrnbq_m_n_s32): Remove.
38209         (vqrshrnbq_m_n_s16): Remove.
38210         (vqrshrnbq_m_n_u32): Remove.
38211         (vqrshrnbq_m_n_u16): Remove.
38212         (vqrshrntq_m_n_s32): Remove.
38213         (vqrshrntq_m_n_s16): Remove.
38214         (vqrshrntq_m_n_u32): Remove.
38215         (vqrshrntq_m_n_u16): Remove.
38216         (__arm_vqrshrnbq_n_s16): Remove.
38217         (__arm_vqrshrnbq_n_u16): Remove.
38218         (__arm_vqrshrnbq_n_s32): Remove.
38219         (__arm_vqrshrnbq_n_u32): Remove.
38220         (__arm_vqrshrntq_n_s16): Remove.
38221         (__arm_vqrshrntq_n_u16): Remove.
38222         (__arm_vqrshrntq_n_s32): Remove.
38223         (__arm_vqrshrntq_n_u32): Remove.
38224         (__arm_vqrshrnbq_m_n_s32): Remove.
38225         (__arm_vqrshrnbq_m_n_s16): Remove.
38226         (__arm_vqrshrnbq_m_n_u32): Remove.
38227         (__arm_vqrshrnbq_m_n_u16): Remove.
38228         (__arm_vqrshrntq_m_n_s32): Remove.
38229         (__arm_vqrshrntq_m_n_s16): Remove.
38230         (__arm_vqrshrntq_m_n_u32): Remove.
38231         (__arm_vqrshrntq_m_n_u16): Remove.
38232         (__arm_vqrshrnbq): Remove.
38233         (__arm_vqrshrntq): Remove.
38234         (__arm_vqrshrnbq_m): Remove.
38235         (__arm_vqrshrntq_m): Remove.
38237 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
38239         * config/arm/iterators.md (MVE_SHRN_N, MVE_SHRN_M_N): New.
38240         (mve_insn): Add vqrshrnb, vqrshrnt, vqshrnb, vqshrnt, vrshrnb,
38241         vrshrnt, vshrnb, vshrnt.
38242         (isu): New.
38243         * config/arm/mve.md (mve_vqrshrnbq_n_<supf><mode>)
38244         (mve_vqrshrntq_n_<supf><mode>, mve_vqshrnbq_n_<supf><mode>)
38245         (mve_vqshrntq_n_<supf><mode>, mve_vrshrnbq_n_<supf><mode>)
38246         (mve_vrshrntq_n_<supf><mode>, mve_vshrnbq_n_<supf><mode>)
38247         (mve_vshrntq_n_<supf><mode>): Merge into ...
38248         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
38249         (mve_vqrshrnbq_m_n_<supf><mode>, mve_vqrshrntq_m_n_<supf><mode>)
38250         (mve_vqshrnbq_m_n_<supf><mode>, mve_vqshrntq_m_n_<supf><mode>)
38251         (mve_vrshrnbq_m_n_<supf><mode>, mve_vrshrntq_m_n_<supf><mode>)
38252         (mve_vshrnbq_m_n_<supf><mode>, mve_vshrntq_m_n_<supf><mode>):
38253         Merge into ...
38254         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
38256 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
38258         * config/arm/arm-mve-builtins-shapes.cc (binary_rshift_narrow):
38259         New.
38260         * config/arm/arm-mve-builtins-shapes.h (binary_rshift_narrow): New.
38262 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
38264         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_NO_F): New.
38265         (vmaxq, vminq): New.
38266         * config/arm/arm-mve-builtins-base.def (vmaxq, vminq): New.
38267         * config/arm/arm-mve-builtins-base.h (vmaxq, vminq): New.
38268         * config/arm/arm_mve.h (vminq): Remove.
38269         (vmaxq): Remove.
38270         (vmaxq_m): Remove.
38271         (vminq_m): Remove.
38272         (vminq_x): Remove.
38273         (vmaxq_x): Remove.
38274         (vminq_u8): Remove.
38275         (vmaxq_u8): Remove.
38276         (vminq_s8): Remove.
38277         (vmaxq_s8): Remove.
38278         (vminq_u16): Remove.
38279         (vmaxq_u16): Remove.
38280         (vminq_s16): Remove.
38281         (vmaxq_s16): Remove.
38282         (vminq_u32): Remove.
38283         (vmaxq_u32): Remove.
38284         (vminq_s32): Remove.
38285         (vmaxq_s32): Remove.
38286         (vmaxq_m_s8): Remove.
38287         (vmaxq_m_s32): Remove.
38288         (vmaxq_m_s16): Remove.
38289         (vmaxq_m_u8): Remove.
38290         (vmaxq_m_u32): Remove.
38291         (vmaxq_m_u16): Remove.
38292         (vminq_m_s8): Remove.
38293         (vminq_m_s32): Remove.
38294         (vminq_m_s16): Remove.
38295         (vminq_m_u8): Remove.
38296         (vminq_m_u32): Remove.
38297         (vminq_m_u16): Remove.
38298         (vminq_x_s8): Remove.
38299         (vminq_x_s16): Remove.
38300         (vminq_x_s32): Remove.
38301         (vminq_x_u8): Remove.
38302         (vminq_x_u16): Remove.
38303         (vminq_x_u32): Remove.
38304         (vmaxq_x_s8): Remove.
38305         (vmaxq_x_s16): Remove.
38306         (vmaxq_x_s32): Remove.
38307         (vmaxq_x_u8): Remove.
38308         (vmaxq_x_u16): Remove.
38309         (vmaxq_x_u32): Remove.
38310         (__arm_vminq_u8): Remove.
38311         (__arm_vmaxq_u8): Remove.
38312         (__arm_vminq_s8): Remove.
38313         (__arm_vmaxq_s8): Remove.
38314         (__arm_vminq_u16): Remove.
38315         (__arm_vmaxq_u16): Remove.
38316         (__arm_vminq_s16): Remove.
38317         (__arm_vmaxq_s16): Remove.
38318         (__arm_vminq_u32): Remove.
38319         (__arm_vmaxq_u32): Remove.
38320         (__arm_vminq_s32): Remove.
38321         (__arm_vmaxq_s32): Remove.
38322         (__arm_vmaxq_m_s8): Remove.
38323         (__arm_vmaxq_m_s32): Remove.
38324         (__arm_vmaxq_m_s16): Remove.
38325         (__arm_vmaxq_m_u8): Remove.
38326         (__arm_vmaxq_m_u32): Remove.
38327         (__arm_vmaxq_m_u16): Remove.
38328         (__arm_vminq_m_s8): Remove.
38329         (__arm_vminq_m_s32): Remove.
38330         (__arm_vminq_m_s16): Remove.
38331         (__arm_vminq_m_u8): Remove.
38332         (__arm_vminq_m_u32): Remove.
38333         (__arm_vminq_m_u16): Remove.
38334         (__arm_vminq_x_s8): Remove.
38335         (__arm_vminq_x_s16): Remove.
38336         (__arm_vminq_x_s32): Remove.
38337         (__arm_vminq_x_u8): Remove.
38338         (__arm_vminq_x_u16): Remove.
38339         (__arm_vminq_x_u32): Remove.
38340         (__arm_vmaxq_x_s8): Remove.
38341         (__arm_vmaxq_x_s16): Remove.
38342         (__arm_vmaxq_x_s32): Remove.
38343         (__arm_vmaxq_x_u8): Remove.
38344         (__arm_vmaxq_x_u16): Remove.
38345         (__arm_vmaxq_x_u32): Remove.
38346         (__arm_vminq): Remove.
38347         (__arm_vmaxq): Remove.
38348         (__arm_vmaxq_m): Remove.
38349         (__arm_vminq_m): Remove.
38350         (__arm_vminq_x): Remove.
38351         (__arm_vmaxq_x): Remove.
38353 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
38355         * config/arm/iterators.md (MAX_MIN_SU): New.
38356         (max_min_su_str): New.
38357         (max_min_supf): New.
38358         * config/arm/mve.md (mve_vmaxq_s<mode>, mve_vmaxq_u<mode>)
38359         (mve_vminq_s<mode>, mve_vminq_u<mode>): Merge into ...
38360         (mve_<max_min_su_str>q_<max_min_supf><mode>): ... this.
38362 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
38364         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_M_N_R): New.
38365         (vqshlq, vshlq): New.
38366         * config/arm/arm-mve-builtins-base.def (vqshlq, vshlq): New.
38367         * config/arm/arm-mve-builtins-base.h (vqshlq, vshlq): New.
38368         * config/arm/arm_mve.h (vshlq): Remove.
38369         (vshlq_r): Remove.
38370         (vshlq_n): Remove.
38371         (vshlq_m_r): Remove.
38372         (vshlq_m): Remove.
38373         (vshlq_m_n): Remove.
38374         (vshlq_x): Remove.
38375         (vshlq_x_n): Remove.
38376         (vshlq_s8): Remove.
38377         (vshlq_s16): Remove.
38378         (vshlq_s32): Remove.
38379         (vshlq_u8): Remove.
38380         (vshlq_u16): Remove.
38381         (vshlq_u32): Remove.
38382         (vshlq_r_u8): Remove.
38383         (vshlq_n_u8): Remove.
38384         (vshlq_r_s8): Remove.
38385         (vshlq_n_s8): Remove.
38386         (vshlq_r_u16): Remove.
38387         (vshlq_n_u16): Remove.
38388         (vshlq_r_s16): Remove.
38389         (vshlq_n_s16): Remove.
38390         (vshlq_r_u32): Remove.
38391         (vshlq_n_u32): Remove.
38392         (vshlq_r_s32): Remove.
38393         (vshlq_n_s32): Remove.
38394         (vshlq_m_r_u8): Remove.
38395         (vshlq_m_r_s8): Remove.
38396         (vshlq_m_r_u16): Remove.
38397         (vshlq_m_r_s16): Remove.
38398         (vshlq_m_r_u32): Remove.
38399         (vshlq_m_r_s32): Remove.
38400         (vshlq_m_u8): Remove.
38401         (vshlq_m_s8): Remove.
38402         (vshlq_m_u16): Remove.
38403         (vshlq_m_s16): Remove.
38404         (vshlq_m_u32): Remove.
38405         (vshlq_m_s32): Remove.
38406         (vshlq_m_n_s8): Remove.
38407         (vshlq_m_n_s32): Remove.
38408         (vshlq_m_n_s16): Remove.
38409         (vshlq_m_n_u8): Remove.
38410         (vshlq_m_n_u32): Remove.
38411         (vshlq_m_n_u16): Remove.
38412         (vshlq_x_s8): Remove.
38413         (vshlq_x_s16): Remove.
38414         (vshlq_x_s32): Remove.
38415         (vshlq_x_u8): Remove.
38416         (vshlq_x_u16): Remove.
38417         (vshlq_x_u32): Remove.
38418         (vshlq_x_n_s8): Remove.
38419         (vshlq_x_n_s16): Remove.
38420         (vshlq_x_n_s32): Remove.
38421         (vshlq_x_n_u8): Remove.
38422         (vshlq_x_n_u16): Remove.
38423         (vshlq_x_n_u32): Remove.
38424         (__arm_vshlq_s8): Remove.
38425         (__arm_vshlq_s16): Remove.
38426         (__arm_vshlq_s32): Remove.
38427         (__arm_vshlq_u8): Remove.
38428         (__arm_vshlq_u16): Remove.
38429         (__arm_vshlq_u32): Remove.
38430         (__arm_vshlq_r_u8): Remove.
38431         (__arm_vshlq_n_u8): Remove.
38432         (__arm_vshlq_r_s8): Remove.
38433         (__arm_vshlq_n_s8): Remove.
38434         (__arm_vshlq_r_u16): Remove.
38435         (__arm_vshlq_n_u16): Remove.
38436         (__arm_vshlq_r_s16): Remove.
38437         (__arm_vshlq_n_s16): Remove.
38438         (__arm_vshlq_r_u32): Remove.
38439         (__arm_vshlq_n_u32): Remove.
38440         (__arm_vshlq_r_s32): Remove.
38441         (__arm_vshlq_n_s32): Remove.
38442         (__arm_vshlq_m_r_u8): Remove.
38443         (__arm_vshlq_m_r_s8): Remove.
38444         (__arm_vshlq_m_r_u16): Remove.
38445         (__arm_vshlq_m_r_s16): Remove.
38446         (__arm_vshlq_m_r_u32): Remove.
38447         (__arm_vshlq_m_r_s32): Remove.
38448         (__arm_vshlq_m_u8): Remove.
38449         (__arm_vshlq_m_s8): Remove.
38450         (__arm_vshlq_m_u16): Remove.
38451         (__arm_vshlq_m_s16): Remove.
38452         (__arm_vshlq_m_u32): Remove.
38453         (__arm_vshlq_m_s32): Remove.
38454         (__arm_vshlq_m_n_s8): Remove.
38455         (__arm_vshlq_m_n_s32): Remove.
38456         (__arm_vshlq_m_n_s16): Remove.
38457         (__arm_vshlq_m_n_u8): Remove.
38458         (__arm_vshlq_m_n_u32): Remove.
38459         (__arm_vshlq_m_n_u16): Remove.
38460         (__arm_vshlq_x_s8): Remove.
38461         (__arm_vshlq_x_s16): Remove.
38462         (__arm_vshlq_x_s32): Remove.
38463         (__arm_vshlq_x_u8): Remove.
38464         (__arm_vshlq_x_u16): Remove.
38465         (__arm_vshlq_x_u32): Remove.
38466         (__arm_vshlq_x_n_s8): Remove.
38467         (__arm_vshlq_x_n_s16): Remove.
38468         (__arm_vshlq_x_n_s32): Remove.
38469         (__arm_vshlq_x_n_u8): Remove.
38470         (__arm_vshlq_x_n_u16): Remove.
38471         (__arm_vshlq_x_n_u32): Remove.
38472         (__arm_vshlq): Remove.
38473         (__arm_vshlq_r): Remove.
38474         (__arm_vshlq_n): Remove.
38475         (__arm_vshlq_m_r): Remove.
38476         (__arm_vshlq_m): Remove.
38477         (__arm_vshlq_m_n): Remove.
38478         (__arm_vshlq_x): Remove.
38479         (__arm_vshlq_x_n): Remove.
38480         (vqshlq): Remove.
38481         (vqshlq_r): Remove.
38482         (vqshlq_n): Remove.
38483         (vqshlq_m_r): Remove.
38484         (vqshlq_m_n): Remove.
38485         (vqshlq_m): Remove.
38486         (vqshlq_u8): Remove.
38487         (vqshlq_r_u8): Remove.
38488         (vqshlq_n_u8): Remove.
38489         (vqshlq_s8): Remove.
38490         (vqshlq_r_s8): Remove.
38491         (vqshlq_n_s8): Remove.
38492         (vqshlq_u16): Remove.
38493         (vqshlq_r_u16): Remove.
38494         (vqshlq_n_u16): Remove.
38495         (vqshlq_s16): Remove.
38496         (vqshlq_r_s16): Remove.
38497         (vqshlq_n_s16): Remove.
38498         (vqshlq_u32): Remove.
38499         (vqshlq_r_u32): Remove.
38500         (vqshlq_n_u32): Remove.
38501         (vqshlq_s32): Remove.
38502         (vqshlq_r_s32): Remove.
38503         (vqshlq_n_s32): Remove.
38504         (vqshlq_m_r_u8): Remove.
38505         (vqshlq_m_r_s8): Remove.
38506         (vqshlq_m_r_u16): Remove.
38507         (vqshlq_m_r_s16): Remove.
38508         (vqshlq_m_r_u32): Remove.
38509         (vqshlq_m_r_s32): Remove.
38510         (vqshlq_m_n_s8): Remove.
38511         (vqshlq_m_n_s32): Remove.
38512         (vqshlq_m_n_s16): Remove.
38513         (vqshlq_m_n_u8): Remove.
38514         (vqshlq_m_n_u32): Remove.
38515         (vqshlq_m_n_u16): Remove.
38516         (vqshlq_m_s8): Remove.
38517         (vqshlq_m_s32): Remove.
38518         (vqshlq_m_s16): Remove.
38519         (vqshlq_m_u8): Remove.
38520         (vqshlq_m_u32): Remove.
38521         (vqshlq_m_u16): Remove.
38522         (__arm_vqshlq_u8): Remove.
38523         (__arm_vqshlq_r_u8): Remove.
38524         (__arm_vqshlq_n_u8): Remove.
38525         (__arm_vqshlq_s8): Remove.
38526         (__arm_vqshlq_r_s8): Remove.
38527         (__arm_vqshlq_n_s8): Remove.
38528         (__arm_vqshlq_u16): Remove.
38529         (__arm_vqshlq_r_u16): Remove.
38530         (__arm_vqshlq_n_u16): Remove.
38531         (__arm_vqshlq_s16): Remove.
38532         (__arm_vqshlq_r_s16): Remove.
38533         (__arm_vqshlq_n_s16): Remove.
38534         (__arm_vqshlq_u32): Remove.
38535         (__arm_vqshlq_r_u32): Remove.
38536         (__arm_vqshlq_n_u32): Remove.
38537         (__arm_vqshlq_s32): Remove.
38538         (__arm_vqshlq_r_s32): Remove.
38539         (__arm_vqshlq_n_s32): Remove.
38540         (__arm_vqshlq_m_r_u8): Remove.
38541         (__arm_vqshlq_m_r_s8): Remove.
38542         (__arm_vqshlq_m_r_u16): Remove.
38543         (__arm_vqshlq_m_r_s16): Remove.
38544         (__arm_vqshlq_m_r_u32): Remove.
38545         (__arm_vqshlq_m_r_s32): Remove.
38546         (__arm_vqshlq_m_n_s8): Remove.
38547         (__arm_vqshlq_m_n_s32): Remove.
38548         (__arm_vqshlq_m_n_s16): Remove.
38549         (__arm_vqshlq_m_n_u8): Remove.
38550         (__arm_vqshlq_m_n_u32): Remove.
38551         (__arm_vqshlq_m_n_u16): Remove.
38552         (__arm_vqshlq_m_s8): Remove.
38553         (__arm_vqshlq_m_s32): Remove.
38554         (__arm_vqshlq_m_s16): Remove.
38555         (__arm_vqshlq_m_u8): Remove.
38556         (__arm_vqshlq_m_u32): Remove.
38557         (__arm_vqshlq_m_u16): Remove.
38558         (__arm_vqshlq): Remove.
38559         (__arm_vqshlq_r): Remove.
38560         (__arm_vqshlq_n): Remove.
38561         (__arm_vqshlq_m_r): Remove.
38562         (__arm_vqshlq_m_n): Remove.
38563         (__arm_vqshlq_m): Remove.
38565 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
38567         * config/arm/arm-mve-builtins-functions.h (class
38568         unspec_mve_function_exact_insn_vshl): New.
38570 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
38572         * config/arm/arm-mve-builtins-shapes.cc (binary_lshift_r): New.
38573         * config/arm/arm-mve-builtins-shapes.h (binary_lshift_r): New.
38575 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
38577         * config/arm/arm-mve-builtins.cc (has_inactive_argument)
38578         (finish_opt_n_resolution): Handle MODE_r.
38579         * config/arm/arm-mve-builtins.def (r): New mode.
38581 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
38583         * config/arm/arm-mve-builtins-shapes.cc (binary_lshift): New.
38584         * config/arm/arm-mve-builtins-shapes.h (binary_lshift): New.
38586 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
38588         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_N): New.
38589         (vabdq): New.
38590         * config/arm/arm-mve-builtins-base.def (vabdq): New.
38591         * config/arm/arm-mve-builtins-base.h (vabdq): New.
38592         * config/arm/arm_mve.h (vabdq): Remove.
38593         (vabdq_m): Remove.
38594         (vabdq_x): Remove.
38595         (vabdq_u8): Remove.
38596         (vabdq_s8): Remove.
38597         (vabdq_u16): Remove.
38598         (vabdq_s16): Remove.
38599         (vabdq_u32): Remove.
38600         (vabdq_s32): Remove.
38601         (vabdq_f16): Remove.
38602         (vabdq_f32): Remove.
38603         (vabdq_m_s8): Remove.
38604         (vabdq_m_s32): Remove.
38605         (vabdq_m_s16): Remove.
38606         (vabdq_m_u8): Remove.
38607         (vabdq_m_u32): Remove.
38608         (vabdq_m_u16): Remove.
38609         (vabdq_m_f32): Remove.
38610         (vabdq_m_f16): Remove.
38611         (vabdq_x_s8): Remove.
38612         (vabdq_x_s16): Remove.
38613         (vabdq_x_s32): Remove.
38614         (vabdq_x_u8): Remove.
38615         (vabdq_x_u16): Remove.
38616         (vabdq_x_u32): Remove.
38617         (vabdq_x_f16): Remove.
38618         (vabdq_x_f32): Remove.
38619         (__arm_vabdq_u8): Remove.
38620         (__arm_vabdq_s8): Remove.
38621         (__arm_vabdq_u16): Remove.
38622         (__arm_vabdq_s16): Remove.
38623         (__arm_vabdq_u32): Remove.
38624         (__arm_vabdq_s32): Remove.
38625         (__arm_vabdq_m_s8): Remove.
38626         (__arm_vabdq_m_s32): Remove.
38627         (__arm_vabdq_m_s16): Remove.
38628         (__arm_vabdq_m_u8): Remove.
38629         (__arm_vabdq_m_u32): Remove.
38630         (__arm_vabdq_m_u16): Remove.
38631         (__arm_vabdq_x_s8): Remove.
38632         (__arm_vabdq_x_s16): Remove.
38633         (__arm_vabdq_x_s32): Remove.
38634         (__arm_vabdq_x_u8): Remove.
38635         (__arm_vabdq_x_u16): Remove.
38636         (__arm_vabdq_x_u32): Remove.
38637         (__arm_vabdq_f16): Remove.
38638         (__arm_vabdq_f32): Remove.
38639         (__arm_vabdq_m_f32): Remove.
38640         (__arm_vabdq_m_f16): Remove.
38641         (__arm_vabdq_x_f16): Remove.
38642         (__arm_vabdq_x_f32): Remove.
38643         (__arm_vabdq): Remove.
38644         (__arm_vabdq_m): Remove.
38645         (__arm_vabdq_x): Remove.
38647 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
38649         * config/arm/iterators.md (MVE_FP_M_BINARY): Add vabdq.
38650         (MVE_FP_VABDQ_ONLY): New.
38651         (mve_insn): Add vabd.
38652         * config/arm/mve.md (mve_vabdq_f<mode>): Move into ...
38653         (@mve_<mve_insn>q_f<mode>): ... this.
38654         (mve_vabdq_m_f<mode>): Remove.
38656 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
38658         * config/arm/arm-mve-builtins-base.cc (vqrdmulhq): New.
38659         * config/arm/arm-mve-builtins-base.def (vqrdmulhq): New.
38660         * config/arm/arm-mve-builtins-base.h (vqrdmulhq): New.
38661         * config/arm/arm_mve.h (vqrdmulhq): Remove.
38662         (vqrdmulhq_m): Remove.
38663         (vqrdmulhq_s8): Remove.
38664         (vqrdmulhq_n_s8): Remove.
38665         (vqrdmulhq_s16): Remove.
38666         (vqrdmulhq_n_s16): Remove.
38667         (vqrdmulhq_s32): Remove.
38668         (vqrdmulhq_n_s32): Remove.
38669         (vqrdmulhq_m_n_s8): Remove.
38670         (vqrdmulhq_m_n_s32): Remove.
38671         (vqrdmulhq_m_n_s16): Remove.
38672         (vqrdmulhq_m_s8): Remove.
38673         (vqrdmulhq_m_s32): Remove.
38674         (vqrdmulhq_m_s16): Remove.
38675         (__arm_vqrdmulhq_s8): Remove.
38676         (__arm_vqrdmulhq_n_s8): Remove.
38677         (__arm_vqrdmulhq_s16): Remove.
38678         (__arm_vqrdmulhq_n_s16): Remove.
38679         (__arm_vqrdmulhq_s32): Remove.
38680         (__arm_vqrdmulhq_n_s32): Remove.
38681         (__arm_vqrdmulhq_m_n_s8): Remove.
38682         (__arm_vqrdmulhq_m_n_s32): Remove.
38683         (__arm_vqrdmulhq_m_n_s16): Remove.
38684         (__arm_vqrdmulhq_m_s8): Remove.
38685         (__arm_vqrdmulhq_m_s32): Remove.
38686         (__arm_vqrdmulhq_m_s16): Remove.
38687         (__arm_vqrdmulhq): Remove.
38688         (__arm_vqrdmulhq_m): Remove.
38690 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
38692         * config/arm/iterators.md (MVE_SHIFT_M_R, MVE_SHIFT_M_N)
38693         (MVE_SHIFT_N, MVE_SHIFT_R): New.
38694         (mve_insn): Add vqshl, vshl.
38695         * config/arm/mve.md (mve_vqshlq_n_<supf><mode>)
38696         (mve_vshlq_n_<supf><mode>): Merge into ...
38697         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
38698         (mve_vqshlq_r_<supf><mode>, mve_vshlq_r_<supf><mode>): Merge into
38699         ...
38700         (@mve_<mve_insn>q_r_<supf><mode>): ... this.
38701         (mve_vqshlq_m_r_<supf><mode>, mve_vshlq_m_r_<supf><mode>): Merge
38702         into ...
38703         (@mve_<mve_insn>q_m_r_<supf><mode>): ... this.
38704         (mve_vqshlq_m_n_<supf><mode>, mve_vshlq_m_n_<supf><mode>): Merge
38705         into ...
38706         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
38707         * config/arm/vec-common.md (mve_vshlq_<supf><mode>): Transform
38708         into ...
38709         (@mve_<mve_insn>q_<supf><mode>): ... this.
38711 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
38713         * config/arm/arm-mve-builtins-base.cc (vqrshlq, vrshlq): New.
38714         * config/arm/arm-mve-builtins-base.def (vqrshlq, vrshlq): New.
38715         * config/arm/arm-mve-builtins-base.h (vqrshlq, vrshlq): New.
38716         * config/arm/arm-mve-builtins.cc (has_inactive_argument): Handle
38717         vqrshlq, vrshlq.
38718         * config/arm/arm_mve.h (vrshlq): Remove.
38719         (vrshlq_m_n): Remove.
38720         (vrshlq_m): Remove.
38721         (vrshlq_x): Remove.
38722         (vrshlq_u8): Remove.
38723         (vrshlq_n_u8): Remove.
38724         (vrshlq_s8): Remove.
38725         (vrshlq_n_s8): Remove.
38726         (vrshlq_u16): Remove.
38727         (vrshlq_n_u16): Remove.
38728         (vrshlq_s16): Remove.
38729         (vrshlq_n_s16): Remove.
38730         (vrshlq_u32): Remove.
38731         (vrshlq_n_u32): Remove.
38732         (vrshlq_s32): Remove.
38733         (vrshlq_n_s32): Remove.
38734         (vrshlq_m_n_u8): Remove.
38735         (vrshlq_m_n_s8): Remove.
38736         (vrshlq_m_n_u16): Remove.
38737         (vrshlq_m_n_s16): Remove.
38738         (vrshlq_m_n_u32): Remove.
38739         (vrshlq_m_n_s32): Remove.
38740         (vrshlq_m_s8): Remove.
38741         (vrshlq_m_s32): Remove.
38742         (vrshlq_m_s16): Remove.
38743         (vrshlq_m_u8): Remove.
38744         (vrshlq_m_u32): Remove.
38745         (vrshlq_m_u16): Remove.
38746         (vrshlq_x_s8): Remove.
38747         (vrshlq_x_s16): Remove.
38748         (vrshlq_x_s32): Remove.
38749         (vrshlq_x_u8): Remove.
38750         (vrshlq_x_u16): Remove.
38751         (vrshlq_x_u32): Remove.
38752         (__arm_vrshlq_u8): Remove.
38753         (__arm_vrshlq_n_u8): Remove.
38754         (__arm_vrshlq_s8): Remove.
38755         (__arm_vrshlq_n_s8): Remove.
38756         (__arm_vrshlq_u16): Remove.
38757         (__arm_vrshlq_n_u16): Remove.
38758         (__arm_vrshlq_s16): Remove.
38759         (__arm_vrshlq_n_s16): Remove.
38760         (__arm_vrshlq_u32): Remove.
38761         (__arm_vrshlq_n_u32): Remove.
38762         (__arm_vrshlq_s32): Remove.
38763         (__arm_vrshlq_n_s32): Remove.
38764         (__arm_vrshlq_m_n_u8): Remove.
38765         (__arm_vrshlq_m_n_s8): Remove.
38766         (__arm_vrshlq_m_n_u16): Remove.
38767         (__arm_vrshlq_m_n_s16): Remove.
38768         (__arm_vrshlq_m_n_u32): Remove.
38769         (__arm_vrshlq_m_n_s32): Remove.
38770         (__arm_vrshlq_m_s8): Remove.
38771         (__arm_vrshlq_m_s32): Remove.
38772         (__arm_vrshlq_m_s16): Remove.
38773         (__arm_vrshlq_m_u8): Remove.
38774         (__arm_vrshlq_m_u32): Remove.
38775         (__arm_vrshlq_m_u16): Remove.
38776         (__arm_vrshlq_x_s8): Remove.
38777         (__arm_vrshlq_x_s16): Remove.
38778         (__arm_vrshlq_x_s32): Remove.
38779         (__arm_vrshlq_x_u8): Remove.
38780         (__arm_vrshlq_x_u16): Remove.
38781         (__arm_vrshlq_x_u32): Remove.
38782         (__arm_vrshlq): Remove.
38783         (__arm_vrshlq_m_n): Remove.
38784         (__arm_vrshlq_m): Remove.
38785         (__arm_vrshlq_x): Remove.
38786         (vqrshlq): Remove.
38787         (vqrshlq_m_n): Remove.
38788         (vqrshlq_m): Remove.
38789         (vqrshlq_u8): Remove.
38790         (vqrshlq_n_u8): Remove.
38791         (vqrshlq_s8): Remove.
38792         (vqrshlq_n_s8): Remove.
38793         (vqrshlq_u16): Remove.
38794         (vqrshlq_n_u16): Remove.
38795         (vqrshlq_s16): Remove.
38796         (vqrshlq_n_s16): Remove.
38797         (vqrshlq_u32): Remove.
38798         (vqrshlq_n_u32): Remove.
38799         (vqrshlq_s32): Remove.
38800         (vqrshlq_n_s32): Remove.
38801         (vqrshlq_m_n_u8): Remove.
38802         (vqrshlq_m_n_s8): Remove.
38803         (vqrshlq_m_n_u16): Remove.
38804         (vqrshlq_m_n_s16): Remove.
38805         (vqrshlq_m_n_u32): Remove.
38806         (vqrshlq_m_n_s32): Remove.
38807         (vqrshlq_m_s8): Remove.
38808         (vqrshlq_m_s32): Remove.
38809         (vqrshlq_m_s16): Remove.
38810         (vqrshlq_m_u8): Remove.
38811         (vqrshlq_m_u32): Remove.
38812         (vqrshlq_m_u16): Remove.
38813         (__arm_vqrshlq_u8): Remove.
38814         (__arm_vqrshlq_n_u8): Remove.
38815         (__arm_vqrshlq_s8): Remove.
38816         (__arm_vqrshlq_n_s8): Remove.
38817         (__arm_vqrshlq_u16): Remove.
38818         (__arm_vqrshlq_n_u16): Remove.
38819         (__arm_vqrshlq_s16): Remove.
38820         (__arm_vqrshlq_n_s16): Remove.
38821         (__arm_vqrshlq_u32): Remove.
38822         (__arm_vqrshlq_n_u32): Remove.
38823         (__arm_vqrshlq_s32): Remove.
38824         (__arm_vqrshlq_n_s32): Remove.
38825         (__arm_vqrshlq_m_n_u8): Remove.
38826         (__arm_vqrshlq_m_n_s8): Remove.
38827         (__arm_vqrshlq_m_n_u16): Remove.
38828         (__arm_vqrshlq_m_n_s16): Remove.
38829         (__arm_vqrshlq_m_n_u32): Remove.
38830         (__arm_vqrshlq_m_n_s32): Remove.
38831         (__arm_vqrshlq_m_s8): Remove.
38832         (__arm_vqrshlq_m_s32): Remove.
38833         (__arm_vqrshlq_m_s16): Remove.
38834         (__arm_vqrshlq_m_u8): Remove.
38835         (__arm_vqrshlq_m_u32): Remove.
38836         (__arm_vqrshlq_m_u16): Remove.
38837         (__arm_vqrshlq): Remove.
38838         (__arm_vqrshlq_m_n): Remove.
38839         (__arm_vqrshlq_m): Remove.
38841 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
38843         * config/arm/iterators.md (MVE_RSHIFT_M_N, MVE_RSHIFT_N): New.
38844         (mve_insn): Add vqrshl, vrshl.
38845         * config/arm/mve.md (mve_vqrshlq_n_<supf><mode>)
38846         (mve_vrshlq_n_<supf><mode>): Merge into ...
38847         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
38848         (mve_vqrshlq_m_n_<supf><mode>, mve_vrshlq_m_n_<supf><mode>): Merge
38849         into ...
38850         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
38852 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
38854         * config/arm/arm-mve-builtins-shapes.cc (binary_round_lshift): New.
38855         * config/arm/arm-mve-builtins-shapes.h (binary_round_lshift): New.
38857 2023-05-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
38859         PR target/109615
38860         * config/riscv/riscv-vsetvl.cc (avl_info::multiple_source_equal_p): Add
38861         denegrate PHI optmization.
38863 2023-05-05  Uros Bizjak  <ubizjak@gmail.com>
38865         * config/i386/predicates.md (register_no_SP_operand):
38866         Rename from index_register_operand.
38867         (call_register_operand): Update for rename.
38868         * config/i386/i386.md (*lea<mode>_general_[1234]): Update for rename.
38870 2023-05-05  Tamar Christina  <tamar.christina@arm.com>
38872         PR bootstrap/84402
38873         * Makefile.in (NUM_MATCH_SPLITS, MATCH_SPLITS_SEQ,
38874         GIMPLE_MATCH_PD_SEQ_SRC, GIMPLE_MATCH_PD_SEQ_O,
38875         GENERIC_MATCH_PD_SEQ_SRC, GENERIC_MATCH_PD_SEQ_O): New.
38876         (OBJS, MOSTLYCLEANFILES, .PRECIOUS): Use them.
38877         (s-match): Split into s-generic-match and s-gimple-match.
38878         * configure.ac (with-matchpd-partitions,
38879         DEFAULT_MATCHPD_PARTITIONS): New.
38880         * configure: Regenerate.
38882 2023-05-05  Tamar Christina  <tamar.christina@arm.com>
38884         PR bootstrap/84402
38885         * genmatch.cc (emit_func, SIZED_BASED_CHUNKS, get_out_file): New.
38886         (decision_tree::gen): Accept list of files instead of single and update
38887         to write function definition to header and main file.
38888         (write_predicate): Likewise.
38889         (write_header): Emit pragmas and new includes.
38890         (main): Create file buffers and cleanup.
38891         (showUsage, write_header_includes): New.
38893 2023-05-05  Tamar Christina  <tamar.christina@arm.com>
38895         PR bootstrap/84402
38896         * Makefile.in (OBJS): Add gimple-match-exports.o.
38897         * genmatch.cc (decision_tree::gen): Export gimple_gimplify helpers.
38898         * gimple-match-head.cc (gimple_simplify, gimple_resimplify1,
38899         gimple_resimplify2, gimple_resimplify3, gimple_resimplify4,
38900         gimple_resimplify5, constant_for_folding, convert_conditional_op,
38901         maybe_resimplify_conditional_op, gimple_match_op::resimplify,
38902         maybe_build_generic_op, build_call_internal, maybe_push_res_to_seq,
38903         do_valueize, try_conditional_simplification, gimple_extract,
38904         gimple_extract_op, canonicalize_code, commutative_binary_op_p,
38905         commutative_ternary_op_p, first_commutative_argument,
38906         associative_binary_op_p, directly_supported_p,
38907         get_conditional_internal_fn): Moved to gimple-match-exports.cc
38908         * gimple-match-exports.cc: New file.
38910 2023-05-05  Tamar Christina  <tamar.christina@arm.com>
38912         PR bootstrap/84402
38913         * genmatch.cc (decision_tree::gen, write_predicate): Generate new
38914         debug_dump var.
38915         (dt_simplify::gen_1): Use it.
38917 2023-05-05  Tamar Christina  <tamar.christina@arm.com>
38919         PR bootstrap/84402
38920         * genmatch.cc (output_line_directive): Only emit commented directive
38921         when -vv.
38923 2023-05-05  Tamar Christina  <tamar.christina@arm.com>
38925         PR bootstrap/84402
38926         * genmatch.cc (dt_simplify::gen_1): Only emit labels if used.
38928 2023-05-05  Tobias Burnus  <tobias@codesourcery.com>
38930         * config/gcn/gcn.cc (gcn_vectorize_builtin_vectorized_function): Remove
38931         unused in_mode/in_n variables.
38933 2023-05-05  Richard Biener  <rguenther@suse.de>
38935         PR tree-optimization/109735
38936         * tree-vect-stmts.cc (vectorizable_operation): Perform
38937         conversion for POINTER_DIFF_EXPR unconditionally.
38939 2023-05-05  Uros Bizjak  <ubizjak@gmail.com>
38941         * config/i386/mmx.md (mulv2si3): New expander.
38942         (*mulv2si3): New insn pattern.
38944 2023-05-05  Tobias Burnus  <tobias@codesourcery.com>
38945             Thomas Schwinge  <thomas@codesourcery.com>
38947         PR libgomp/108098
38948         * config/nvptx/mkoffload.cc (process): Emit dummy procedure
38949         alongside reverse-offload function table to prevent NULL values
38950         of the function addresses.
38952 2023-05-05  Jakub Jelinek  <jakub@redhat.com>
38954         * builtins.cc (do_mpfr_ckconv, do_mpc_ckconv): Fix comment typo,
38955         mpft_t -> mpfr_t.
38956         * fold-const-call.cc (do_mpfr_ckconv, do_mpc_ckconv): Likewise.
38958 2023-05-05  Andrew Pinski  <apinski@marvell.com>
38960         PR tree-optimization/109732
38961         * tree-ssa-phiopt.cc (match_simplify_replacement): Fix the selection
38962         of the argtrue/argfalse.
38964 2023-05-05  Andrew Pinski  <apinski@marvell.com>
38966         PR tree-optimization/109722
38967         * match.pd: Extend the `ABS<a> == 0` pattern
38968         to cover `ABSU<a> == 0` too.
38970 2023-05-04  Uros Bizjak  <ubizjak@gmail.com>
38972         PR target/109733
38973         * config/i386/predicates.md (index_reg_operand): New predicate.
38974         * config/i386/i386.md (ashift to lea spliter): Use
38975         general_reg_operand and index_reg_operand predicates.
38977 2023-05-04  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
38979         * config/aarch64/aarch64-simd.md (aarch64_<sur><addsub>hn2<mode>_insn_le):
38980         Rename and reimplement with RTL codes to...
38981         (aarch64_<optab>hn2<mode>_insn_le): .. This.
38982         (aarch64_r<optab>hn2<mode>_insn_le): New pattern.
38983         (aarch64_<sur><addsub>hn2<mode>_insn_be): Rename and reimplement with RTL
38984         codes to...
38985         (aarch64_<optab>hn2<mode>_insn_be): ... This.
38986         (aarch64_r<optab>hn2<mode>_insn_be): New pattern.
38987         (aarch64_<sur><addsub>hn2<mode>): Rename and adjust expander to...
38988         (aarch64_<optab>hn2<mode>): ... This.
38989         (aarch64_r<optab>hn2<mode>): New expander.
38990         * config/aarch64/iterators.md (UNSPEC_ADDHN, UNSPEC_RADDHN,
38991         UNSPEC_SUBHN, UNSPEC_RSUBHN): Delete unspecs.
38992         (ADDSUBHN): Delete.
38993         (sur): Remove handling of the above.
38994         (addsub): Likewise.
38996 2023-05-04  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
38998         * config/aarch64/aarch64-simd.md (aarch64_<sur><addsub>hn<mode>_insn_le):
38999         Delete.
39000         (aarch64_<optab>hn<mode>_insn<vczle><vczbe>): New define_insn.
39001         (aarch64_<sur><addsub>hn<mode>_insn_be): Delete.
39002         (aarch64_r<optab>hn<mode>_insn<vczle><vczbe>): New define_insn.
39003         (aarch64_<sur><addsub>hn<mode>): Delete.
39004         (aarch64_<optab>hn<mode>): New define_expand.
39005         (aarch64_r<optab>hn<mode>): Likewise.
39006         * config/aarch64/predicates.md (aarch64_simd_raddsubhn_imm_vec):
39007         New predicate.
39009 2023-05-04  Andrew Pinski  <apinski@marvell.com>
39011         * tree-ssa-phiopt.cc (replace_phi_edge_with_variable): Handle
39012         diamond form bb with forwarder only empty blocks better.
39014 2023-05-04  Andrew Pinski  <apinski@marvell.com>
39016         * tree-ssa-threadupdate.cc (copy_phi_arg_into_existing_phi): Move to ...
39017         * tree-cfg.cc (copy_phi_arg_into_existing_phi): Here and remove static.
39018         (gimple_duplicate_sese_tail): Use copy_phi_arg_into_existing_phi instead
39019         of an inline version of it.
39020         * tree-cfgcleanup.cc (remove_forwarder_block): Likewise.
39021         * tree-cfg.h (copy_phi_arg_into_existing_phi): New declaration.
39023 2023-05-04  Andrew Pinski  <apinski@marvell.com>
39025         * tree-ssa-phiopt.cc (replace_phi_edge_with_variable): Change
39026         the default argument value for dce_ssa_names to nullptr.
39027         Check to make sure dce_ssa_names is a non-nullptr before
39028         calling simple_dce_from_worklist.
39030 2023-05-04  Uros Bizjak  <ubizjak@gmail.com>
39032         * config/i386/predicates.md (index_register_operand): Reject
39033         arg_pointer_rtx, frame_pointer_rtx, stack_pointer_rtx and
39034         VIRTUAL_REGISTER_P operands.  Allow subregs of memory before reload.
39035         (call_register_no_elim_operand): Rewrite as ...
39036         (call_register_operand): ... this.
39037         (call_insn_operand): Use call_register_operand predicate.
39039 2023-05-04  Richard Biener  <rguenther@suse.de>
39041         PR tree-optimization/109721
39042         * tree-vect-stmts.cc (vectorizable_operation): Make sure
39043         to test word_mode for all !target_support_p operations.
39045 2023-05-04  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
39047         PR target/99195
39048         * config/aarch64/aarch64-simd.md (aarch64_<su>aba<mode>): Rename to...
39049         (aarch64_<su>aba<mode><vczle><vczbe>): ... This.
39050         (aarch64_mla<mode>): Rename to...
39051         (aarch64_mla<mode><vczle><vczbe>): ... This.
39052         (*aarch64_mla_elt<mode>): Rename to...
39053         (*aarch64_mla_elt<mode><vczle><vczbe>): ... This.
39054         (*aarch64_mla_elt_<vswap_width_name><mode>): Rename to...
39055         (*aarch64_mla_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
39056         (aarch64_mla_n<mode>): Rename to...
39057         (aarch64_mla_n<mode><vczle><vczbe>): ... This.
39058         (aarch64_mls<mode>): Rename to...
39059         (aarch64_mls<mode><vczle><vczbe>): ... This.
39060         (*aarch64_mls_elt<mode>): Rename to...
39061         (*aarch64_mls_elt<mode><vczle><vczbe>): ... This.
39062         (*aarch64_mls_elt_<vswap_width_name><mode>): Rename to...
39063         (*aarch64_mls_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
39064         (aarch64_mls_n<mode>): Rename to...
39065         (aarch64_mls_n<mode><vczle><vczbe>): ... This.
39066         (fma<mode>4): Rename to...
39067         (fma<mode>4<vczle><vczbe>): ... This.
39068         (*aarch64_fma4_elt<mode>): Rename to...
39069         (*aarch64_fma4_elt<mode><vczle><vczbe>): ... This.
39070         (*aarch64_fma4_elt_<vswap_width_name><mode>): Rename to...
39071         (*aarch64_fma4_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
39072         (*aarch64_fma4_elt_from_dup<mode>): Rename to...
39073         (*aarch64_fma4_elt_from_dup<mode><vczle><vczbe>): ... This.
39074         (fnma<mode>4): Rename to...
39075         (fnma<mode>4<vczle><vczbe>): ... This.
39076         (*aarch64_fnma4_elt<mode>): Rename to...
39077         (*aarch64_fnma4_elt<mode><vczle><vczbe>): ... This.
39078         (*aarch64_fnma4_elt_<vswap_width_name><mode>): Rename to...
39079         (*aarch64_fnma4_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
39080         (*aarch64_fnma4_elt_from_dup<mode>): Rename to...
39081         (*aarch64_fnma4_elt_from_dup<mode><vczle><vczbe>): ... This.
39082         (aarch64_simd_bsl<mode>_internal): Rename to...
39083         (aarch64_simd_bsl<mode>_internal<vczle><vczbe>): ... This.
39084         (*aarch64_simd_bsl<mode>_alt): Rename to...
39085         (*aarch64_simd_bsl<mode>_alt<vczle><vczbe>): ... This.
39087 2023-05-04  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
39089         PR target/99195
39090         * config/aarch64/aarch64-simd.md (aarch64_<su>abd<mode>): Rename to...
39091         (aarch64_<su>abd<mode><vczle><vczbe>): ... This.
39092         (fabd<mode>3): Rename to...
39093         (fabd<mode>3<vczle><vczbe>): ... This.
39094         (aarch64_<optab>p<mode>): Rename to...
39095         (aarch64_<optab>p<mode><vczle><vczbe>): ... This.
39096         (aarch64_faddp<mode>): Rename to...
39097         (aarch64_faddp<mode><vczle><vczbe>): ... This.
39099 2023-05-04  Martin Liska  <mliska@suse.cz>
39101         * gcov.cc (GCOV_JSON_FORMAT_VERSION): New definition.
39102         (print_version): Use it.
39103         (generate_results): Likewise.
39105 2023-05-04  Richard Biener  <rguenther@suse.de>
39107         * tree-cfg.h (last_stmt): Rename to ...
39108         (last_nondebug_stmt): ... this.
39109         * tree-cfg.cc (last_stmt): Rename to ...
39110         (last_nondebug_stmt): ... this.
39111         (assign_discriminators): Adjust.
39112         (group_case_labels_stmt): Likewise.
39113         (gimple_can_duplicate_bb_p): Likewise.
39114         (execute_fixup_cfg): Likewise.
39115         * auto-profile.cc (afdo_propagate_circuit): Likewise.
39116         * gimple-range.cc (gimple_ranger::range_on_exit): Likewise.
39117         * omp-expand.cc (workshare_safe_to_combine_p): Likewise.
39118         (determine_parallel_type): Likewise.
39119         (adjust_context_and_scope): Likewise.
39120         (expand_task_call): Likewise.
39121         (remove_exit_barrier): Likewise.
39122         (expand_omp_taskreg): Likewise.
39123         (expand_omp_for_init_counts): Likewise.
39124         (expand_omp_for_init_vars): Likewise.
39125         (expand_omp_for_static_chunk): Likewise.
39126         (expand_omp_simd): Likewise.
39127         (expand_oacc_for): Likewise.
39128         (expand_omp_for): Likewise.
39129         (expand_omp_sections): Likewise.
39130         (expand_omp_atomic_fetch_op): Likewise.
39131         (expand_omp_atomic_cas): Likewise.
39132         (expand_omp_atomic): Likewise.
39133         (expand_omp_target): Likewise.
39134         (expand_omp): Likewise.
39135         (omp_make_gimple_edges): Likewise.
39136         * trans-mem.cc (tm_region_init): Likewise.
39137         * tree-inline.cc (redirect_all_calls): Likewise.
39138         * tree-parloops.cc (gen_parallel_loop): Likewise.
39139         * tree-ssa-loop-ch.cc (do_while_loop_p): Likewise.
39140         * tree-ssa-loop-ivcanon.cc (canonicalize_loop_induction_variables):
39141         Likewise.
39142         * tree-ssa-loop-ivopts.cc (stmt_after_ip_normal_pos): Likewise.
39143         (may_eliminate_iv): Likewise.
39144         * tree-ssa-loop-manip.cc (standard_iv_increment_position): Likewise.
39145         * tree-ssa-loop-niter.cc (do_warn_aggressive_loop_optimizations):
39146         Likewise.
39147         (estimate_numbers_of_iterations): Likewise.
39148         * tree-ssa-loop-split.cc (compute_added_num_insns): Likewise.
39149         * tree-ssa-loop-unswitch.cc (get_predicates_for_bb): Likewise.
39150         (set_predicates_for_bb): Likewise.
39151         (init_loop_unswitch_info): Likewise.
39152         (hoist_guard): Likewise.
39153         * tree-ssa-phiopt.cc (match_simplify_replacement): Likewise.
39154         (minmax_replacement): Likewise.
39155         * tree-ssa-reassoc.cc (update_range_test): Likewise.
39156         (optimize_range_tests_to_bit_test): Likewise.
39157         (optimize_range_tests_var_bound): Likewise.
39158         (optimize_range_tests): Likewise.
39159         (no_side_effect_bb): Likewise.
39160         (suitable_cond_bb): Likewise.
39161         (maybe_optimize_range_tests): Likewise.
39162         (reassociate_bb): Likewise.
39163         * tree-vrp.cc (rvrp_folder::pre_fold_bb): Likewise.
39165 2023-05-04  Jakub Jelinek  <jakub@redhat.com>
39167         PR debug/109676
39168         * config/i386/i386-features.cc (timode_scalar_chain::convert_insn):
39169         If src is REG, change its mode to V1TImode and call fix_debug_reg_uses
39170         for it only if it still has TImode.  Don't decide whether to call
39171         fix_debug_reg_uses based on whether SRC is ever set or not.
39173 2023-05-04  Hans-Peter Nilsson  <hp@axis.com>
39175         * config/cris/cris.cc (cris_split_constant): New function.
39176         * config/cris/cris.md (splitop): New iterator.
39177         (opsplit1): New define_peephole2.
39178         * config/cris/cris-protos.h (cris_split_constant): Declare.
39179         (cris_splittable_constant_p): New macro.
39181 2023-05-04  Hans-Peter Nilsson  <hp@axis.com>
39183         * config/cris/cris.cc (TARGET_SPILL_CLASS): Define
39184         to ALL_REGS.
39186 2023-05-04  Hans-Peter Nilsson  <hp@axis.com>
39188         * config/cris/cris.cc (cris_side_effect_mode_ok): Use
39189         lra_in_progress, not reload_in_progress.
39190         * config/cris/cris.md ("movdi", "*addi_reload"): Ditto.
39191         * config/cris/constraints.md ("Q"): Ditto.
39193 2023-05-03  Andrew Pinski  <apinski@marvell.com>
39195         * tree-ssa-dce.cc (simple_dce_from_worklist): Record
39196         stats on removed number of statements and phis.
39198 2023-05-03  Aldy Hernandez  <aldyh@redhat.com>
39200         PR tree-optimization/109711
39201         * value-range.cc (irange::verify_range): Allow types of
39202         error_mark_node.
39204 2023-05-03  Alexander Monakov  <amonakov@ispras.ru>
39206         PR sanitizer/90746
39207         * calls.cc (can_implement_as_sibling_call_p): Reject calls
39208         to __sanitizer_cov_trace_pc.
39210 2023-05-03  Richard Sandiford  <richard.sandiford@arm.com>
39212         PR target/109661
39213         * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Add
39214         a new ABI break parameter for GCC 14.  Set it to the alignment
39215         of enums that have an underlying type.  Take the true alignment
39216         of such enums from the TYPE_ALIGN of the underlying type's
39217         TYPE_MAIN_VARIANT.
39218         (aarch64_function_arg_boundary): Update accordingly.
39219         (aarch64_layout_arg, aarch64_gimplify_va_arg_expr): Likewise.
39220         Warn about ABI differences.
39222 2023-05-03  Richard Sandiford  <richard.sandiford@arm.com>
39224         PR target/109661
39225         * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Rename
39226         ABI break variables to abi_break_gcc_9 and abi_break_gcc_13.
39227         (aarch64_layout_arg, aarch64_function_arg_boundary): Likewise.
39228         (aarch64_gimplify_va_arg_expr): Likewise.
39230 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
39232         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_M_N_NO_F)
39233         (FUNCTION_WITHOUT_N_NO_F, FUNCTION_WITH_M_N_NO_U_F): New.
39234         (vhaddq, vhsubq, vmulhq, vqaddq, vqsubq, vqdmulhq, vrhaddq)
39235         (vrmulhq): New.
39236         * config/arm/arm-mve-builtins-base.def (vhaddq, vhsubq, vmulhq)
39237         (vqaddq, vqsubq, vqdmulhq, vrhaddq, vrmulhq): New.
39238         * config/arm/arm-mve-builtins-base.h (vhaddq, vhsubq, vmulhq)
39239         (vqaddq, vqsubq, vqdmulhq, vrhaddq, vrmulhq): New.
39240         * config/arm/arm_mve.h (vhsubq): Remove.
39241         (vhaddq): Remove.
39242         (vhaddq_m): Remove.
39243         (vhsubq_m): Remove.
39244         (vhaddq_x): Remove.
39245         (vhsubq_x): Remove.
39246         (vhsubq_u8): Remove.
39247         (vhsubq_n_u8): Remove.
39248         (vhaddq_u8): Remove.
39249         (vhaddq_n_u8): Remove.
39250         (vhsubq_s8): Remove.
39251         (vhsubq_n_s8): Remove.
39252         (vhaddq_s8): Remove.
39253         (vhaddq_n_s8): Remove.
39254         (vhsubq_u16): Remove.
39255         (vhsubq_n_u16): Remove.
39256         (vhaddq_u16): Remove.
39257         (vhaddq_n_u16): Remove.
39258         (vhsubq_s16): Remove.
39259         (vhsubq_n_s16): Remove.
39260         (vhaddq_s16): Remove.
39261         (vhaddq_n_s16): Remove.
39262         (vhsubq_u32): Remove.
39263         (vhsubq_n_u32): Remove.
39264         (vhaddq_u32): Remove.
39265         (vhaddq_n_u32): Remove.
39266         (vhsubq_s32): Remove.
39267         (vhsubq_n_s32): Remove.
39268         (vhaddq_s32): Remove.
39269         (vhaddq_n_s32): Remove.
39270         (vhaddq_m_n_s8): Remove.
39271         (vhaddq_m_n_s32): Remove.
39272         (vhaddq_m_n_s16): Remove.
39273         (vhaddq_m_n_u8): Remove.
39274         (vhaddq_m_n_u32): Remove.
39275         (vhaddq_m_n_u16): Remove.
39276         (vhaddq_m_s8): Remove.
39277         (vhaddq_m_s32): Remove.
39278         (vhaddq_m_s16): Remove.
39279         (vhaddq_m_u8): Remove.
39280         (vhaddq_m_u32): Remove.
39281         (vhaddq_m_u16): Remove.
39282         (vhsubq_m_n_s8): Remove.
39283         (vhsubq_m_n_s32): Remove.
39284         (vhsubq_m_n_s16): Remove.
39285         (vhsubq_m_n_u8): Remove.
39286         (vhsubq_m_n_u32): Remove.
39287         (vhsubq_m_n_u16): Remove.
39288         (vhsubq_m_s8): Remove.
39289         (vhsubq_m_s32): Remove.
39290         (vhsubq_m_s16): Remove.
39291         (vhsubq_m_u8): Remove.
39292         (vhsubq_m_u32): Remove.
39293         (vhsubq_m_u16): Remove.
39294         (vhaddq_x_n_s8): Remove.
39295         (vhaddq_x_n_s16): Remove.
39296         (vhaddq_x_n_s32): Remove.
39297         (vhaddq_x_n_u8): Remove.
39298         (vhaddq_x_n_u16): Remove.
39299         (vhaddq_x_n_u32): Remove.
39300         (vhaddq_x_s8): Remove.
39301         (vhaddq_x_s16): Remove.
39302         (vhaddq_x_s32): Remove.
39303         (vhaddq_x_u8): Remove.
39304         (vhaddq_x_u16): Remove.
39305         (vhaddq_x_u32): Remove.
39306         (vhsubq_x_n_s8): Remove.
39307         (vhsubq_x_n_s16): Remove.
39308         (vhsubq_x_n_s32): Remove.
39309         (vhsubq_x_n_u8): Remove.
39310         (vhsubq_x_n_u16): Remove.
39311         (vhsubq_x_n_u32): Remove.
39312         (vhsubq_x_s8): Remove.
39313         (vhsubq_x_s16): Remove.
39314         (vhsubq_x_s32): Remove.
39315         (vhsubq_x_u8): Remove.
39316         (vhsubq_x_u16): Remove.
39317         (vhsubq_x_u32): Remove.
39318         (__arm_vhsubq_u8): Remove.
39319         (__arm_vhsubq_n_u8): Remove.
39320         (__arm_vhaddq_u8): Remove.
39321         (__arm_vhaddq_n_u8): Remove.
39322         (__arm_vhsubq_s8): Remove.
39323         (__arm_vhsubq_n_s8): Remove.
39324         (__arm_vhaddq_s8): Remove.
39325         (__arm_vhaddq_n_s8): Remove.
39326         (__arm_vhsubq_u16): Remove.
39327         (__arm_vhsubq_n_u16): Remove.
39328         (__arm_vhaddq_u16): Remove.
39329         (__arm_vhaddq_n_u16): Remove.
39330         (__arm_vhsubq_s16): Remove.
39331         (__arm_vhsubq_n_s16): Remove.
39332         (__arm_vhaddq_s16): Remove.
39333         (__arm_vhaddq_n_s16): Remove.
39334         (__arm_vhsubq_u32): Remove.
39335         (__arm_vhsubq_n_u32): Remove.
39336         (__arm_vhaddq_u32): Remove.
39337         (__arm_vhaddq_n_u32): Remove.
39338         (__arm_vhsubq_s32): Remove.
39339         (__arm_vhsubq_n_s32): Remove.
39340         (__arm_vhaddq_s32): Remove.
39341         (__arm_vhaddq_n_s32): Remove.
39342         (__arm_vhaddq_m_n_s8): Remove.
39343         (__arm_vhaddq_m_n_s32): Remove.
39344         (__arm_vhaddq_m_n_s16): Remove.
39345         (__arm_vhaddq_m_n_u8): Remove.
39346         (__arm_vhaddq_m_n_u32): Remove.
39347         (__arm_vhaddq_m_n_u16): Remove.
39348         (__arm_vhaddq_m_s8): Remove.
39349         (__arm_vhaddq_m_s32): Remove.
39350         (__arm_vhaddq_m_s16): Remove.
39351         (__arm_vhaddq_m_u8): Remove.
39352         (__arm_vhaddq_m_u32): Remove.
39353         (__arm_vhaddq_m_u16): Remove.
39354         (__arm_vhsubq_m_n_s8): Remove.
39355         (__arm_vhsubq_m_n_s32): Remove.
39356         (__arm_vhsubq_m_n_s16): Remove.
39357         (__arm_vhsubq_m_n_u8): Remove.
39358         (__arm_vhsubq_m_n_u32): Remove.
39359         (__arm_vhsubq_m_n_u16): Remove.
39360         (__arm_vhsubq_m_s8): Remove.
39361         (__arm_vhsubq_m_s32): Remove.
39362         (__arm_vhsubq_m_s16): Remove.
39363         (__arm_vhsubq_m_u8): Remove.
39364         (__arm_vhsubq_m_u32): Remove.
39365         (__arm_vhsubq_m_u16): Remove.
39366         (__arm_vhaddq_x_n_s8): Remove.
39367         (__arm_vhaddq_x_n_s16): Remove.
39368         (__arm_vhaddq_x_n_s32): Remove.
39369         (__arm_vhaddq_x_n_u8): Remove.
39370         (__arm_vhaddq_x_n_u16): Remove.
39371         (__arm_vhaddq_x_n_u32): Remove.
39372         (__arm_vhaddq_x_s8): Remove.
39373         (__arm_vhaddq_x_s16): Remove.
39374         (__arm_vhaddq_x_s32): Remove.
39375         (__arm_vhaddq_x_u8): Remove.
39376         (__arm_vhaddq_x_u16): Remove.
39377         (__arm_vhaddq_x_u32): Remove.
39378         (__arm_vhsubq_x_n_s8): Remove.
39379         (__arm_vhsubq_x_n_s16): Remove.
39380         (__arm_vhsubq_x_n_s32): Remove.
39381         (__arm_vhsubq_x_n_u8): Remove.
39382         (__arm_vhsubq_x_n_u16): Remove.
39383         (__arm_vhsubq_x_n_u32): Remove.
39384         (__arm_vhsubq_x_s8): Remove.
39385         (__arm_vhsubq_x_s16): Remove.
39386         (__arm_vhsubq_x_s32): Remove.
39387         (__arm_vhsubq_x_u8): Remove.
39388         (__arm_vhsubq_x_u16): Remove.
39389         (__arm_vhsubq_x_u32): Remove.
39390         (__arm_vhsubq): Remove.
39391         (__arm_vhaddq): Remove.
39392         (__arm_vhaddq_m): Remove.
39393         (__arm_vhsubq_m): Remove.
39394         (__arm_vhaddq_x): Remove.
39395         (__arm_vhsubq_x): Remove.
39396         (vmulhq): Remove.
39397         (vmulhq_m): Remove.
39398         (vmulhq_x): Remove.
39399         (vmulhq_u8): Remove.
39400         (vmulhq_s8): Remove.
39401         (vmulhq_u16): Remove.
39402         (vmulhq_s16): Remove.
39403         (vmulhq_u32): Remove.
39404         (vmulhq_s32): Remove.
39405         (vmulhq_m_s8): Remove.
39406         (vmulhq_m_s32): Remove.
39407         (vmulhq_m_s16): Remove.
39408         (vmulhq_m_u8): Remove.
39409         (vmulhq_m_u32): Remove.
39410         (vmulhq_m_u16): Remove.
39411         (vmulhq_x_s8): Remove.
39412         (vmulhq_x_s16): Remove.
39413         (vmulhq_x_s32): Remove.
39414         (vmulhq_x_u8): Remove.
39415         (vmulhq_x_u16): Remove.
39416         (vmulhq_x_u32): Remove.
39417         (__arm_vmulhq_u8): Remove.
39418         (__arm_vmulhq_s8): Remove.
39419         (__arm_vmulhq_u16): Remove.
39420         (__arm_vmulhq_s16): Remove.
39421         (__arm_vmulhq_u32): Remove.
39422         (__arm_vmulhq_s32): Remove.
39423         (__arm_vmulhq_m_s8): Remove.
39424         (__arm_vmulhq_m_s32): Remove.
39425         (__arm_vmulhq_m_s16): Remove.
39426         (__arm_vmulhq_m_u8): Remove.
39427         (__arm_vmulhq_m_u32): Remove.
39428         (__arm_vmulhq_m_u16): Remove.
39429         (__arm_vmulhq_x_s8): Remove.
39430         (__arm_vmulhq_x_s16): Remove.
39431         (__arm_vmulhq_x_s32): Remove.
39432         (__arm_vmulhq_x_u8): Remove.
39433         (__arm_vmulhq_x_u16): Remove.
39434         (__arm_vmulhq_x_u32): Remove.
39435         (__arm_vmulhq): Remove.
39436         (__arm_vmulhq_m): Remove.
39437         (__arm_vmulhq_x): Remove.
39438         (vqsubq): Remove.
39439         (vqaddq): Remove.
39440         (vqaddq_m): Remove.
39441         (vqsubq_m): Remove.
39442         (vqsubq_u8): Remove.
39443         (vqsubq_n_u8): Remove.
39444         (vqaddq_u8): Remove.
39445         (vqaddq_n_u8): Remove.
39446         (vqsubq_s8): Remove.
39447         (vqsubq_n_s8): Remove.
39448         (vqaddq_s8): Remove.
39449         (vqaddq_n_s8): Remove.
39450         (vqsubq_u16): Remove.
39451         (vqsubq_n_u16): Remove.
39452         (vqaddq_u16): Remove.
39453         (vqaddq_n_u16): Remove.
39454         (vqsubq_s16): Remove.
39455         (vqsubq_n_s16): Remove.
39456         (vqaddq_s16): Remove.
39457         (vqaddq_n_s16): Remove.
39458         (vqsubq_u32): Remove.
39459         (vqsubq_n_u32): Remove.
39460         (vqaddq_u32): Remove.
39461         (vqaddq_n_u32): Remove.
39462         (vqsubq_s32): Remove.
39463         (vqsubq_n_s32): Remove.
39464         (vqaddq_s32): Remove.
39465         (vqaddq_n_s32): Remove.
39466         (vqaddq_m_n_s8): Remove.
39467         (vqaddq_m_n_s32): Remove.
39468         (vqaddq_m_n_s16): Remove.
39469         (vqaddq_m_n_u8): Remove.
39470         (vqaddq_m_n_u32): Remove.
39471         (vqaddq_m_n_u16): Remove.
39472         (vqaddq_m_s8): Remove.
39473         (vqaddq_m_s32): Remove.
39474         (vqaddq_m_s16): Remove.
39475         (vqaddq_m_u8): Remove.
39476         (vqaddq_m_u32): Remove.
39477         (vqaddq_m_u16): Remove.
39478         (vqsubq_m_n_s8): Remove.
39479         (vqsubq_m_n_s32): Remove.
39480         (vqsubq_m_n_s16): Remove.
39481         (vqsubq_m_n_u8): Remove.
39482         (vqsubq_m_n_u32): Remove.
39483         (vqsubq_m_n_u16): Remove.
39484         (vqsubq_m_s8): Remove.
39485         (vqsubq_m_s32): Remove.
39486         (vqsubq_m_s16): Remove.
39487         (vqsubq_m_u8): Remove.
39488         (vqsubq_m_u32): Remove.
39489         (vqsubq_m_u16): Remove.
39490         (__arm_vqsubq_u8): Remove.
39491         (__arm_vqsubq_n_u8): Remove.
39492         (__arm_vqaddq_u8): Remove.
39493         (__arm_vqaddq_n_u8): Remove.
39494         (__arm_vqsubq_s8): Remove.
39495         (__arm_vqsubq_n_s8): Remove.
39496         (__arm_vqaddq_s8): Remove.
39497         (__arm_vqaddq_n_s8): Remove.
39498         (__arm_vqsubq_u16): Remove.
39499         (__arm_vqsubq_n_u16): Remove.
39500         (__arm_vqaddq_u16): Remove.
39501         (__arm_vqaddq_n_u16): Remove.
39502         (__arm_vqsubq_s16): Remove.
39503         (__arm_vqsubq_n_s16): Remove.
39504         (__arm_vqaddq_s16): Remove.
39505         (__arm_vqaddq_n_s16): Remove.
39506         (__arm_vqsubq_u32): Remove.
39507         (__arm_vqsubq_n_u32): Remove.
39508         (__arm_vqaddq_u32): Remove.
39509         (__arm_vqaddq_n_u32): Remove.
39510         (__arm_vqsubq_s32): Remove.
39511         (__arm_vqsubq_n_s32): Remove.
39512         (__arm_vqaddq_s32): Remove.
39513         (__arm_vqaddq_n_s32): Remove.
39514         (__arm_vqaddq_m_n_s8): Remove.
39515         (__arm_vqaddq_m_n_s32): Remove.
39516         (__arm_vqaddq_m_n_s16): Remove.
39517         (__arm_vqaddq_m_n_u8): Remove.
39518         (__arm_vqaddq_m_n_u32): Remove.
39519         (__arm_vqaddq_m_n_u16): Remove.
39520         (__arm_vqaddq_m_s8): Remove.
39521         (__arm_vqaddq_m_s32): Remove.
39522         (__arm_vqaddq_m_s16): Remove.
39523         (__arm_vqaddq_m_u8): Remove.
39524         (__arm_vqaddq_m_u32): Remove.
39525         (__arm_vqaddq_m_u16): Remove.
39526         (__arm_vqsubq_m_n_s8): Remove.
39527         (__arm_vqsubq_m_n_s32): Remove.
39528         (__arm_vqsubq_m_n_s16): Remove.
39529         (__arm_vqsubq_m_n_u8): Remove.
39530         (__arm_vqsubq_m_n_u32): Remove.
39531         (__arm_vqsubq_m_n_u16): Remove.
39532         (__arm_vqsubq_m_s8): Remove.
39533         (__arm_vqsubq_m_s32): Remove.
39534         (__arm_vqsubq_m_s16): Remove.
39535         (__arm_vqsubq_m_u8): Remove.
39536         (__arm_vqsubq_m_u32): Remove.
39537         (__arm_vqsubq_m_u16): Remove.
39538         (__arm_vqsubq): Remove.
39539         (__arm_vqaddq): Remove.
39540         (__arm_vqaddq_m): Remove.
39541         (__arm_vqsubq_m): Remove.
39542         (vqdmulhq): Remove.
39543         (vqdmulhq_m): Remove.
39544         (vqdmulhq_s8): Remove.
39545         (vqdmulhq_n_s8): Remove.
39546         (vqdmulhq_s16): Remove.
39547         (vqdmulhq_n_s16): Remove.
39548         (vqdmulhq_s32): Remove.
39549         (vqdmulhq_n_s32): Remove.
39550         (vqdmulhq_m_n_s8): Remove.
39551         (vqdmulhq_m_n_s32): Remove.
39552         (vqdmulhq_m_n_s16): Remove.
39553         (vqdmulhq_m_s8): Remove.
39554         (vqdmulhq_m_s32): Remove.
39555         (vqdmulhq_m_s16): Remove.
39556         (__arm_vqdmulhq_s8): Remove.
39557         (__arm_vqdmulhq_n_s8): Remove.
39558         (__arm_vqdmulhq_s16): Remove.
39559         (__arm_vqdmulhq_n_s16): Remove.
39560         (__arm_vqdmulhq_s32): Remove.
39561         (__arm_vqdmulhq_n_s32): Remove.
39562         (__arm_vqdmulhq_m_n_s8): Remove.
39563         (__arm_vqdmulhq_m_n_s32): Remove.
39564         (__arm_vqdmulhq_m_n_s16): Remove.
39565         (__arm_vqdmulhq_m_s8): Remove.
39566         (__arm_vqdmulhq_m_s32): Remove.
39567         (__arm_vqdmulhq_m_s16): Remove.
39568         (__arm_vqdmulhq): Remove.
39569         (__arm_vqdmulhq_m): Remove.
39570         (vrhaddq): Remove.
39571         (vrhaddq_m): Remove.
39572         (vrhaddq_x): Remove.
39573         (vrhaddq_u8): Remove.
39574         (vrhaddq_s8): Remove.
39575         (vrhaddq_u16): Remove.
39576         (vrhaddq_s16): Remove.
39577         (vrhaddq_u32): Remove.
39578         (vrhaddq_s32): Remove.
39579         (vrhaddq_m_s8): Remove.
39580         (vrhaddq_m_s32): Remove.
39581         (vrhaddq_m_s16): Remove.
39582         (vrhaddq_m_u8): Remove.
39583         (vrhaddq_m_u32): Remove.
39584         (vrhaddq_m_u16): Remove.
39585         (vrhaddq_x_s8): Remove.
39586         (vrhaddq_x_s16): Remove.
39587         (vrhaddq_x_s32): Remove.
39588         (vrhaddq_x_u8): Remove.
39589         (vrhaddq_x_u16): Remove.
39590         (vrhaddq_x_u32): Remove.
39591         (__arm_vrhaddq_u8): Remove.
39592         (__arm_vrhaddq_s8): Remove.
39593         (__arm_vrhaddq_u16): Remove.
39594         (__arm_vrhaddq_s16): Remove.
39595         (__arm_vrhaddq_u32): Remove.
39596         (__arm_vrhaddq_s32): Remove.
39597         (__arm_vrhaddq_m_s8): Remove.
39598         (__arm_vrhaddq_m_s32): Remove.
39599         (__arm_vrhaddq_m_s16): Remove.
39600         (__arm_vrhaddq_m_u8): Remove.
39601         (__arm_vrhaddq_m_u32): Remove.
39602         (__arm_vrhaddq_m_u16): Remove.
39603         (__arm_vrhaddq_x_s8): Remove.
39604         (__arm_vrhaddq_x_s16): Remove.
39605         (__arm_vrhaddq_x_s32): Remove.
39606         (__arm_vrhaddq_x_u8): Remove.
39607         (__arm_vrhaddq_x_u16): Remove.
39608         (__arm_vrhaddq_x_u32): Remove.
39609         (__arm_vrhaddq): Remove.
39610         (__arm_vrhaddq_m): Remove.
39611         (__arm_vrhaddq_x): Remove.
39612         (vrmulhq): Remove.
39613         (vrmulhq_m): Remove.
39614         (vrmulhq_x): Remove.
39615         (vrmulhq_u8): Remove.
39616         (vrmulhq_s8): Remove.
39617         (vrmulhq_u16): Remove.
39618         (vrmulhq_s16): Remove.
39619         (vrmulhq_u32): Remove.
39620         (vrmulhq_s32): Remove.
39621         (vrmulhq_m_s8): Remove.
39622         (vrmulhq_m_s32): Remove.
39623         (vrmulhq_m_s16): Remove.
39624         (vrmulhq_m_u8): Remove.
39625         (vrmulhq_m_u32): Remove.
39626         (vrmulhq_m_u16): Remove.
39627         (vrmulhq_x_s8): Remove.
39628         (vrmulhq_x_s16): Remove.
39629         (vrmulhq_x_s32): Remove.
39630         (vrmulhq_x_u8): Remove.
39631         (vrmulhq_x_u16): Remove.
39632         (vrmulhq_x_u32): Remove.
39633         (__arm_vrmulhq_u8): Remove.
39634         (__arm_vrmulhq_s8): Remove.
39635         (__arm_vrmulhq_u16): Remove.
39636         (__arm_vrmulhq_s16): Remove.
39637         (__arm_vrmulhq_u32): Remove.
39638         (__arm_vrmulhq_s32): Remove.
39639         (__arm_vrmulhq_m_s8): Remove.
39640         (__arm_vrmulhq_m_s32): Remove.
39641         (__arm_vrmulhq_m_s16): Remove.
39642         (__arm_vrmulhq_m_u8): Remove.
39643         (__arm_vrmulhq_m_u32): Remove.
39644         (__arm_vrmulhq_m_u16): Remove.
39645         (__arm_vrmulhq_x_s8): Remove.
39646         (__arm_vrmulhq_x_s16): Remove.
39647         (__arm_vrmulhq_x_s32): Remove.
39648         (__arm_vrmulhq_x_u8): Remove.
39649         (__arm_vrmulhq_x_u16): Remove.
39650         (__arm_vrmulhq_x_u32): Remove.
39651         (__arm_vrmulhq): Remove.
39652         (__arm_vrmulhq_m): Remove.
39653         (__arm_vrmulhq_x): Remove.
39655 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
39657         * config/arm/iterators.md (MVE_INT_SU_BINARY): New.
39658         (mve_insn): Add vabdq, vhaddq, vhsubq, vmulhq, vqaddq, vqdmulhq,
39659         vqrdmulhq, vqrshlq, vqshlq, vqsubq, vrhaddq, vrmulhq, vrshlq.
39660         (supf): Add VQDMULHQ_S, VQRDMULHQ_S.
39661         * config/arm/mve.md (mve_vabdq_<supf><mode>)
39662         (@mve_vhaddq_<supf><mode>, mve_vhsubq_<supf><mode>)
39663         (mve_vmulhq_<supf><mode>, mve_vqaddq_<supf><mode>)
39664         (mve_vqdmulhq_s<mode>, mve_vqrdmulhq_s<mode>)
39665         (mve_vqrshlq_<supf><mode>, mve_vqshlq_<supf><mode>)
39666         (mve_vqsubq_<supf><mode>, @mve_vrhaddq_<supf><mode>)
39667         (mve_vrmulhq_<supf><mode>, mve_vrshlq_<supf><mode>): Merge into
39668         ...
39669         (@mve_<mve_insn>q_<supf><mode>): ... this.
39670         * config/arm/vec-common.md (avg<mode>3_floor, uavg<mode>3_floor)
39671         (avg<mode>3_ceil, uavg<mode>3_ceil): Use gen_mve_q instead of
39672         gen_mve_vhaddq / gen_mve_vrhaddq.
39674 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
39676         * config/arm/iterators.md (MVE_INT_SU_M_N_BINARY): New.
39677         (mve_insn): Add vhaddq, vhsubq, vmlaq, vmlasq, vqaddq, vqdmlahq,
39678         vqdmlashq, vqdmulhq, vqrdmlahq, vqrdmlashq, vqrdmulhq, vqsubq.
39679         (supf): Add VQDMLAHQ_M_N_S, VQDMLASHQ_M_N_S, VQRDMLAHQ_M_N_S,
39680         VQRDMLASHQ_M_N_S, VQDMULHQ_M_N_S, VQRDMULHQ_M_N_S.
39681         * config/arm/mve.md (mve_vhaddq_m_n_<supf><mode>)
39682         (mve_vhsubq_m_n_<supf><mode>, mve_vmlaq_m_n_<supf><mode>)
39683         (mve_vmlasq_m_n_<supf><mode>, mve_vqaddq_m_n_<supf><mode>)
39684         (mve_vqdmlahq_m_n_s<mode>, mve_vqdmlashq_m_n_s<mode>)
39685         (mve_vqrdmlahq_m_n_s<mode>, mve_vqrdmlashq_m_n_s<mode>)
39686         (mve_vqsubq_m_n_<supf><mode>, mve_vqdmulhq_m_n_s<mode>)
39687         (mve_vqrdmulhq_m_n_s<mode>): Merge into ...
39688         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
39690 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
39692         * config/arm/iterators.md (MVE_INT_SU_N_BINARY): New.
39693         (mve_insn): Add vhaddq, vhsubq, vqaddq, vqdmulhq, vqrdmulhq,
39694         vqsubq.
39695         (supf): Add VQDMULHQ_N_S, VQRDMULHQ_N_S.
39696         * config/arm/mve.md (mve_vhaddq_n_<supf><mode>)
39697         (mve_vhsubq_n_<supf><mode>, mve_vqaddq_n_<supf><mode>)
39698         (mve_vqdmulhq_n_s<mode>, mve_vqrdmulhq_n_s<mode>)
39699         (mve_vqsubq_n_<supf><mode>): Merge into ...
39700         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
39702 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
39704         * config/arm/iterators.md (MVE_INT_SU_M_BINARY): New.
39705         (mve_insn): Add vabdq, vhaddq, vhsubq, vmaxq, vminq, vmulhq,
39706         vqaddq, vqdmladhq, vqdmladhxq, vqdmlsdhq, vqdmlsdhxq, vqdmulhq,
39707         vqrdmladhq, vqrdmladhxq, vqrdmlsdhq, vqrdmlsdhxq, vqrdmulhq,
39708         vqrshlq, vqshlq, vqsubq, vrhaddq, vrmulhq, vrshlq, vshlq.
39709         (supf): Add VQDMLADHQ_M_S, VQDMLADHXQ_M_S, VQDMLSDHQ_M_S,
39710         VQDMLSDHXQ_M_S, VQDMULHQ_M_S, VQRDMLADHQ_M_S, VQRDMLADHXQ_M_S,
39711         VQRDMLSDHQ_M_S, VQRDMLSDHXQ_M_S, VQRDMULHQ_M_S.
39712         * config/arm/mve.md (@mve_<mve_insn>q_m_<supf><mode>): New.
39713         (mve_vshlq_m_<supf><mode>): Merged into
39714         @mve_<mve_insn>q_m_<supf><mode>.
39715         (mve_vabdq_m_<supf><mode>): Likewise.
39716         (mve_vhaddq_m_<supf><mode>): Likewise.
39717         (mve_vhsubq_m_<supf><mode>): Likewise.
39718         (mve_vmaxq_m_<supf><mode>): Likewise.
39719         (mve_vminq_m_<supf><mode>): Likewise.
39720         (mve_vmulhq_m_<supf><mode>): Likewise.
39721         (mve_vqaddq_m_<supf><mode>): Likewise.
39722         (mve_vqrshlq_m_<supf><mode>): Likewise.
39723         (mve_vqshlq_m_<supf><mode>): Likewise.
39724         (mve_vqsubq_m_<supf><mode>): Likewise.
39725         (mve_vrhaddq_m_<supf><mode>): Likewise.
39726         (mve_vrmulhq_m_<supf><mode>): Likewise.
39727         (mve_vrshlq_m_<supf><mode>): Likewise.
39728         (mve_vqdmladhq_m_s<mode>): Likewise.
39729         (mve_vqdmladhxq_m_s<mode>): Likewise.
39730         (mve_vqdmlsdhq_m_s<mode>): Likewise.
39731         (mve_vqdmlsdhxq_m_s<mode>): Likewise.
39732         (mve_vqdmulhq_m_s<mode>): Likewise.
39733         (mve_vqrdmladhq_m_s<mode>): Likewise.
39734         (mve_vqrdmladhxq_m_s<mode>): Likewise.
39735         (mve_vqrdmlsdhq_m_s<mode>): Likewise.
39736         (mve_vqrdmlsdhxq_m_s<mode>): Likewise.
39737         (mve_vqrdmulhq_m_s<mode>): Likewise.
39739 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
39741         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_M_N): New. (vcreateq): New.
39742         * config/arm/arm-mve-builtins-base.def (vcreateq): New.
39743         * config/arm/arm-mve-builtins-base.h (vcreateq): New.
39744         * config/arm/arm_mve.h (vcreateq_f16): Remove.
39745         (vcreateq_f32): Remove.
39746         (vcreateq_u8): Remove.
39747         (vcreateq_u16): Remove.
39748         (vcreateq_u32): Remove.
39749         (vcreateq_u64): Remove.
39750         (vcreateq_s8): Remove.
39751         (vcreateq_s16): Remove.
39752         (vcreateq_s32): Remove.
39753         (vcreateq_s64): Remove.
39754         (__arm_vcreateq_u8): Remove.
39755         (__arm_vcreateq_u16): Remove.
39756         (__arm_vcreateq_u32): Remove.
39757         (__arm_vcreateq_u64): Remove.
39758         (__arm_vcreateq_s8): Remove.
39759         (__arm_vcreateq_s16): Remove.
39760         (__arm_vcreateq_s32): Remove.
39761         (__arm_vcreateq_s64): Remove.
39762         (__arm_vcreateq_f16): Remove.
39763         (__arm_vcreateq_f32): Remove.
39765 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
39767         * config/arm/iterators.md (MVE_FP_CREATE_ONLY): New.
39768         (mve_insn): Add VCREATEQ_S, VCREATEQ_U, VCREATEQ_F.
39769         * config/arm/mve.md (mve_vcreateq_f<mode>): Rename into ...
39770         (@mve_<mve_insn>q_f<mode>): ... this.
39771         (mve_vcreateq_<supf><mode>): Rename into ...
39772         (@mve_<mve_insn>q_<supf><mode>): ... this.
39774 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
39776         * config/arm/arm-mve-builtins-shapes.cc (create): New.
39777         * config/arm/arm-mve-builtins-shapes.h: (create): New.
39779 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
39781         * config/arm/arm-mve-builtins-functions.h (class
39782         unspec_mve_function_exact_insn): New.
39784 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
39786         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_N_NO_N_F): New.
39787         (vorrq): New.
39788         * config/arm/arm-mve-builtins-base.def (vorrq): New.
39789         * config/arm/arm-mve-builtins-base.h (vorrq): New.
39790         * config/arm/arm-mve-builtins.cc
39791         (function_instance::has_inactive_argument): Handle vorrq.
39792         * config/arm/arm_mve.h (vorrq): Remove.
39793         (vorrq_m_n): Remove.
39794         (vorrq_m): Remove.
39795         (vorrq_x): Remove.
39796         (vorrq_u8): Remove.
39797         (vorrq_s8): Remove.
39798         (vorrq_u16): Remove.
39799         (vorrq_s16): Remove.
39800         (vorrq_u32): Remove.
39801         (vorrq_s32): Remove.
39802         (vorrq_n_u16): Remove.
39803         (vorrq_f16): Remove.
39804         (vorrq_n_s16): Remove.
39805         (vorrq_n_u32): Remove.
39806         (vorrq_f32): Remove.
39807         (vorrq_n_s32): Remove.
39808         (vorrq_m_n_s16): Remove.
39809         (vorrq_m_n_u16): Remove.
39810         (vorrq_m_n_s32): Remove.
39811         (vorrq_m_n_u32): Remove.
39812         (vorrq_m_s8): Remove.
39813         (vorrq_m_s32): Remove.
39814         (vorrq_m_s16): Remove.
39815         (vorrq_m_u8): Remove.
39816         (vorrq_m_u32): Remove.
39817         (vorrq_m_u16): Remove.
39818         (vorrq_m_f32): Remove.
39819         (vorrq_m_f16): Remove.
39820         (vorrq_x_s8): Remove.
39821         (vorrq_x_s16): Remove.
39822         (vorrq_x_s32): Remove.
39823         (vorrq_x_u8): Remove.
39824         (vorrq_x_u16): Remove.
39825         (vorrq_x_u32): Remove.
39826         (vorrq_x_f16): Remove.
39827         (vorrq_x_f32): Remove.
39828         (__arm_vorrq_u8): Remove.
39829         (__arm_vorrq_s8): Remove.
39830         (__arm_vorrq_u16): Remove.
39831         (__arm_vorrq_s16): Remove.
39832         (__arm_vorrq_u32): Remove.
39833         (__arm_vorrq_s32): Remove.
39834         (__arm_vorrq_n_u16): Remove.
39835         (__arm_vorrq_n_s16): Remove.
39836         (__arm_vorrq_n_u32): Remove.
39837         (__arm_vorrq_n_s32): Remove.
39838         (__arm_vorrq_m_n_s16): Remove.
39839         (__arm_vorrq_m_n_u16): Remove.
39840         (__arm_vorrq_m_n_s32): Remove.
39841         (__arm_vorrq_m_n_u32): Remove.
39842         (__arm_vorrq_m_s8): Remove.
39843         (__arm_vorrq_m_s32): Remove.
39844         (__arm_vorrq_m_s16): Remove.
39845         (__arm_vorrq_m_u8): Remove.
39846         (__arm_vorrq_m_u32): Remove.
39847         (__arm_vorrq_m_u16): Remove.
39848         (__arm_vorrq_x_s8): Remove.
39849         (__arm_vorrq_x_s16): Remove.
39850         (__arm_vorrq_x_s32): Remove.
39851         (__arm_vorrq_x_u8): Remove.
39852         (__arm_vorrq_x_u16): Remove.
39853         (__arm_vorrq_x_u32): Remove.
39854         (__arm_vorrq_f16): Remove.
39855         (__arm_vorrq_f32): Remove.
39856         (__arm_vorrq_m_f32): Remove.
39857         (__arm_vorrq_m_f16): Remove.
39858         (__arm_vorrq_x_f16): Remove.
39859         (__arm_vorrq_x_f32): Remove.
39860         (__arm_vorrq): Remove.
39861         (__arm_vorrq_m_n): Remove.
39862         (__arm_vorrq_m): Remove.
39863         (__arm_vorrq_x): Remove.
39865 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
39867         * config/arm/arm-mve-builtins-shapes.cc (binary_orrq): New.
39868         * config/arm/arm-mve-builtins-shapes.h (binary_orrq): New.
39869         * config/arm/arm-mve-builtins.cc (preds_m_or_none): Remove static.
39870         * config/arm/arm-mve-builtins.h (preds_m_or_none): Declare.
39872 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
39874         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M): New.
39875         (vandq,veorq): New.
39876         * config/arm/arm-mve-builtins-base.def (vandq, veorq): New.
39877         * config/arm/arm-mve-builtins-base.h (vandq, veorq): New.
39878         * config/arm/arm_mve.h (vandq): Remove.
39879         (vandq_m): Remove.
39880         (vandq_x): Remove.
39881         (vandq_u8): Remove.
39882         (vandq_s8): Remove.
39883         (vandq_u16): Remove.
39884         (vandq_s16): Remove.
39885         (vandq_u32): Remove.
39886         (vandq_s32): Remove.
39887         (vandq_f16): Remove.
39888         (vandq_f32): Remove.
39889         (vandq_m_s8): Remove.
39890         (vandq_m_s32): Remove.
39891         (vandq_m_s16): Remove.
39892         (vandq_m_u8): Remove.
39893         (vandq_m_u32): Remove.
39894         (vandq_m_u16): Remove.
39895         (vandq_m_f32): Remove.
39896         (vandq_m_f16): Remove.
39897         (vandq_x_s8): Remove.
39898         (vandq_x_s16): Remove.
39899         (vandq_x_s32): Remove.
39900         (vandq_x_u8): Remove.
39901         (vandq_x_u16): Remove.
39902         (vandq_x_u32): Remove.
39903         (vandq_x_f16): Remove.
39904         (vandq_x_f32): Remove.
39905         (__arm_vandq_u8): Remove.
39906         (__arm_vandq_s8): Remove.
39907         (__arm_vandq_u16): Remove.
39908         (__arm_vandq_s16): Remove.
39909         (__arm_vandq_u32): Remove.
39910         (__arm_vandq_s32): Remove.
39911         (__arm_vandq_m_s8): Remove.
39912         (__arm_vandq_m_s32): Remove.
39913         (__arm_vandq_m_s16): Remove.
39914         (__arm_vandq_m_u8): Remove.
39915         (__arm_vandq_m_u32): Remove.
39916         (__arm_vandq_m_u16): Remove.
39917         (__arm_vandq_x_s8): Remove.
39918         (__arm_vandq_x_s16): Remove.
39919         (__arm_vandq_x_s32): Remove.
39920         (__arm_vandq_x_u8): Remove.
39921         (__arm_vandq_x_u16): Remove.
39922         (__arm_vandq_x_u32): Remove.
39923         (__arm_vandq_f16): Remove.
39924         (__arm_vandq_f32): Remove.
39925         (__arm_vandq_m_f32): Remove.
39926         (__arm_vandq_m_f16): Remove.
39927         (__arm_vandq_x_f16): Remove.
39928         (__arm_vandq_x_f32): Remove.
39929         (__arm_vandq): Remove.
39930         (__arm_vandq_m): Remove.
39931         (__arm_vandq_x): Remove.
39932         (veorq_m): Remove.
39933         (veorq_x): Remove.
39934         (veorq_u8): Remove.
39935         (veorq_s8): Remove.
39936         (veorq_u16): Remove.
39937         (veorq_s16): Remove.
39938         (veorq_u32): Remove.
39939         (veorq_s32): Remove.
39940         (veorq_f16): Remove.
39941         (veorq_f32): Remove.
39942         (veorq_m_s8): Remove.
39943         (veorq_m_s32): Remove.
39944         (veorq_m_s16): Remove.
39945         (veorq_m_u8): Remove.
39946         (veorq_m_u32): Remove.
39947         (veorq_m_u16): Remove.
39948         (veorq_m_f32): Remove.
39949         (veorq_m_f16): Remove.
39950         (veorq_x_s8): Remove.
39951         (veorq_x_s16): Remove.
39952         (veorq_x_s32): Remove.
39953         (veorq_x_u8): Remove.
39954         (veorq_x_u16): Remove.
39955         (veorq_x_u32): Remove.
39956         (veorq_x_f16): Remove.
39957         (veorq_x_f32): Remove.
39958         (__arm_veorq_u8): Remove.
39959         (__arm_veorq_s8): Remove.
39960         (__arm_veorq_u16): Remove.
39961         (__arm_veorq_s16): Remove.
39962         (__arm_veorq_u32): Remove.
39963         (__arm_veorq_s32): Remove.
39964         (__arm_veorq_m_s8): Remove.
39965         (__arm_veorq_m_s32): Remove.
39966         (__arm_veorq_m_s16): Remove.
39967         (__arm_veorq_m_u8): Remove.
39968         (__arm_veorq_m_u32): Remove.
39969         (__arm_veorq_m_u16): Remove.
39970         (__arm_veorq_x_s8): Remove.
39971         (__arm_veorq_x_s16): Remove.
39972         (__arm_veorq_x_s32): Remove.
39973         (__arm_veorq_x_u8): Remove.
39974         (__arm_veorq_x_u16): Remove.
39975         (__arm_veorq_x_u32): Remove.
39976         (__arm_veorq_f16): Remove.
39977         (__arm_veorq_f32): Remove.
39978         (__arm_veorq_m_f32): Remove.
39979         (__arm_veorq_m_f16): Remove.
39980         (__arm_veorq_x_f16): Remove.
39981         (__arm_veorq_x_f32): Remove.
39982         (__arm_veorq): Remove.
39983         (__arm_veorq_m): Remove.
39984         (__arm_veorq_x): Remove.
39986 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
39988         * config/arm/iterators.md (MVE_INT_M_BINARY_LOGIC)
39989         (MVE_FP_M_BINARY_LOGIC): New.
39990         (MVE_INT_M_N_BINARY_LOGIC): New.
39991         (MVE_INT_N_BINARY_LOGIC): New.
39992         (mve_insn): Add vand, veor, vorr, vbic.
39993         * config/arm/mve.md (mve_vandq_m_<supf><mode>)
39994         (mve_veorq_m_<supf><mode>, mve_vorrq_m_<supf><mode>)
39995         (mve_vbicq_m_<supf><mode>): Merge into ...
39996         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
39997         (mve_vandq_m_f<mode>, mve_veorq_m_f<mode>, mve_vorrq_m_f<mode>)
39998         (mve_vbicq_m_f<mode>): Merge into ...
39999         (@mve_<mve_insn>q_m_f<mode>): ... this.
40000         (mve_vorrq_n_<supf><mode>)
40001         (mve_vbicq_n_<supf><mode>): Merge into ...
40002         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
40003         (mve_vorrq_m_n_<supf><mode>, mve_vbicq_m_n_<supf><mode>): Merge
40004         into ...
40005         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
40007 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
40009         * config/arm/arm-mve-builtins-shapes.cc (binary): New.
40010         * config/arm/arm-mve-builtins-shapes.h (binary): New.
40012 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
40014         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_N):
40015         New.
40016         (vaddq, vmulq, vsubq): New.
40017         * config/arm/arm-mve-builtins-base.def (vaddq, vmulq, vsubq): New.
40018         * config/arm/arm-mve-builtins-base.h (vaddq, vmulq, vsubq): New.
40019         * config/arm/arm_mve.h (vaddq): Remove.
40020         (vaddq_m): Remove.
40021         (vaddq_x): Remove.
40022         (vaddq_n_u8): Remove.
40023         (vaddq_n_s8): Remove.
40024         (vaddq_n_u16): Remove.
40025         (vaddq_n_s16): Remove.
40026         (vaddq_n_u32): Remove.
40027         (vaddq_n_s32): Remove.
40028         (vaddq_n_f16): Remove.
40029         (vaddq_n_f32): Remove.
40030         (vaddq_m_n_s8): Remove.
40031         (vaddq_m_n_s32): Remove.
40032         (vaddq_m_n_s16): Remove.
40033         (vaddq_m_n_u8): Remove.
40034         (vaddq_m_n_u32): Remove.
40035         (vaddq_m_n_u16): Remove.
40036         (vaddq_m_s8): Remove.
40037         (vaddq_m_s32): Remove.
40038         (vaddq_m_s16): Remove.
40039         (vaddq_m_u8): Remove.
40040         (vaddq_m_u32): Remove.
40041         (vaddq_m_u16): Remove.
40042         (vaddq_m_f32): Remove.
40043         (vaddq_m_f16): Remove.
40044         (vaddq_m_n_f32): Remove.
40045         (vaddq_m_n_f16): Remove.
40046         (vaddq_s8): Remove.
40047         (vaddq_s16): Remove.
40048         (vaddq_s32): Remove.
40049         (vaddq_u8): Remove.
40050         (vaddq_u16): Remove.
40051         (vaddq_u32): Remove.
40052         (vaddq_f16): Remove.
40053         (vaddq_f32): Remove.
40054         (vaddq_x_s8): Remove.
40055         (vaddq_x_s16): Remove.
40056         (vaddq_x_s32): Remove.
40057         (vaddq_x_n_s8): Remove.
40058         (vaddq_x_n_s16): Remove.
40059         (vaddq_x_n_s32): Remove.
40060         (vaddq_x_u8): Remove.
40061         (vaddq_x_u16): Remove.
40062         (vaddq_x_u32): Remove.
40063         (vaddq_x_n_u8): Remove.
40064         (vaddq_x_n_u16): Remove.
40065         (vaddq_x_n_u32): Remove.
40066         (vaddq_x_f16): Remove.
40067         (vaddq_x_f32): Remove.
40068         (vaddq_x_n_f16): Remove.
40069         (vaddq_x_n_f32): Remove.
40070         (__arm_vaddq_n_u8): Remove.
40071         (__arm_vaddq_n_s8): Remove.
40072         (__arm_vaddq_n_u16): Remove.
40073         (__arm_vaddq_n_s16): Remove.
40074         (__arm_vaddq_n_u32): Remove.
40075         (__arm_vaddq_n_s32): Remove.
40076         (__arm_vaddq_m_n_s8): Remove.
40077         (__arm_vaddq_m_n_s32): Remove.
40078         (__arm_vaddq_m_n_s16): Remove.
40079         (__arm_vaddq_m_n_u8): Remove.
40080         (__arm_vaddq_m_n_u32): Remove.
40081         (__arm_vaddq_m_n_u16): Remove.
40082         (__arm_vaddq_m_s8): Remove.
40083         (__arm_vaddq_m_s32): Remove.
40084         (__arm_vaddq_m_s16): Remove.
40085         (__arm_vaddq_m_u8): Remove.
40086         (__arm_vaddq_m_u32): Remove.
40087         (__arm_vaddq_m_u16): Remove.
40088         (__arm_vaddq_s8): Remove.
40089         (__arm_vaddq_s16): Remove.
40090         (__arm_vaddq_s32): Remove.
40091         (__arm_vaddq_u8): Remove.
40092         (__arm_vaddq_u16): Remove.
40093         (__arm_vaddq_u32): Remove.
40094         (__arm_vaddq_x_s8): Remove.
40095         (__arm_vaddq_x_s16): Remove.
40096         (__arm_vaddq_x_s32): Remove.
40097         (__arm_vaddq_x_n_s8): Remove.
40098         (__arm_vaddq_x_n_s16): Remove.
40099         (__arm_vaddq_x_n_s32): Remove.
40100         (__arm_vaddq_x_u8): Remove.
40101         (__arm_vaddq_x_u16): Remove.
40102         (__arm_vaddq_x_u32): Remove.
40103         (__arm_vaddq_x_n_u8): Remove.
40104         (__arm_vaddq_x_n_u16): Remove.
40105         (__arm_vaddq_x_n_u32): Remove.
40106         (__arm_vaddq_n_f16): Remove.
40107         (__arm_vaddq_n_f32): Remove.
40108         (__arm_vaddq_m_f32): Remove.
40109         (__arm_vaddq_m_f16): Remove.
40110         (__arm_vaddq_m_n_f32): Remove.
40111         (__arm_vaddq_m_n_f16): Remove.
40112         (__arm_vaddq_f16): Remove.
40113         (__arm_vaddq_f32): Remove.
40114         (__arm_vaddq_x_f16): Remove.
40115         (__arm_vaddq_x_f32): Remove.
40116         (__arm_vaddq_x_n_f16): Remove.
40117         (__arm_vaddq_x_n_f32): Remove.
40118         (__arm_vaddq): Remove.
40119         (__arm_vaddq_m): Remove.
40120         (__arm_vaddq_x): Remove.
40121         (vmulq): Remove.
40122         (vmulq_m): Remove.
40123         (vmulq_x): Remove.
40124         (vmulq_u8): Remove.
40125         (vmulq_n_u8): Remove.
40126         (vmulq_s8): Remove.
40127         (vmulq_n_s8): Remove.
40128         (vmulq_u16): Remove.
40129         (vmulq_n_u16): Remove.
40130         (vmulq_s16): Remove.
40131         (vmulq_n_s16): Remove.
40132         (vmulq_u32): Remove.
40133         (vmulq_n_u32): Remove.
40134         (vmulq_s32): Remove.
40135         (vmulq_n_s32): Remove.
40136         (vmulq_n_f16): Remove.
40137         (vmulq_f16): Remove.
40138         (vmulq_n_f32): Remove.
40139         (vmulq_f32): Remove.
40140         (vmulq_m_n_s8): Remove.
40141         (vmulq_m_n_s32): Remove.
40142         (vmulq_m_n_s16): Remove.
40143         (vmulq_m_n_u8): Remove.
40144         (vmulq_m_n_u32): Remove.
40145         (vmulq_m_n_u16): Remove.
40146         (vmulq_m_s8): Remove.
40147         (vmulq_m_s32): Remove.
40148         (vmulq_m_s16): Remove.
40149         (vmulq_m_u8): Remove.
40150         (vmulq_m_u32): Remove.
40151         (vmulq_m_u16): Remove.
40152         (vmulq_m_f32): Remove.
40153         (vmulq_m_f16): Remove.
40154         (vmulq_m_n_f32): Remove.
40155         (vmulq_m_n_f16): Remove.
40156         (vmulq_x_s8): Remove.
40157         (vmulq_x_s16): Remove.
40158         (vmulq_x_s32): Remove.
40159         (vmulq_x_n_s8): Remove.
40160         (vmulq_x_n_s16): Remove.
40161         (vmulq_x_n_s32): Remove.
40162         (vmulq_x_u8): Remove.
40163         (vmulq_x_u16): Remove.
40164         (vmulq_x_u32): Remove.
40165         (vmulq_x_n_u8): Remove.
40166         (vmulq_x_n_u16): Remove.
40167         (vmulq_x_n_u32): Remove.
40168         (vmulq_x_f16): Remove.
40169         (vmulq_x_f32): Remove.
40170         (vmulq_x_n_f16): Remove.
40171         (vmulq_x_n_f32): Remove.
40172         (__arm_vmulq_u8): Remove.
40173         (__arm_vmulq_n_u8): Remove.
40174         (__arm_vmulq_s8): Remove.
40175         (__arm_vmulq_n_s8): Remove.
40176         (__arm_vmulq_u16): Remove.
40177         (__arm_vmulq_n_u16): Remove.
40178         (__arm_vmulq_s16): Remove.
40179         (__arm_vmulq_n_s16): Remove.
40180         (__arm_vmulq_u32): Remove.
40181         (__arm_vmulq_n_u32): Remove.
40182         (__arm_vmulq_s32): Remove.
40183         (__arm_vmulq_n_s32): Remove.
40184         (__arm_vmulq_m_n_s8): Remove.
40185         (__arm_vmulq_m_n_s32): Remove.
40186         (__arm_vmulq_m_n_s16): Remove.
40187         (__arm_vmulq_m_n_u8): Remove.
40188         (__arm_vmulq_m_n_u32): Remove.
40189         (__arm_vmulq_m_n_u16): Remove.
40190         (__arm_vmulq_m_s8): Remove.
40191         (__arm_vmulq_m_s32): Remove.
40192         (__arm_vmulq_m_s16): Remove.
40193         (__arm_vmulq_m_u8): Remove.
40194         (__arm_vmulq_m_u32): Remove.
40195         (__arm_vmulq_m_u16): Remove.
40196         (__arm_vmulq_x_s8): Remove.
40197         (__arm_vmulq_x_s16): Remove.
40198         (__arm_vmulq_x_s32): Remove.
40199         (__arm_vmulq_x_n_s8): Remove.
40200         (__arm_vmulq_x_n_s16): Remove.
40201         (__arm_vmulq_x_n_s32): Remove.
40202         (__arm_vmulq_x_u8): Remove.
40203         (__arm_vmulq_x_u16): Remove.
40204         (__arm_vmulq_x_u32): Remove.
40205         (__arm_vmulq_x_n_u8): Remove.
40206         (__arm_vmulq_x_n_u16): Remove.
40207         (__arm_vmulq_x_n_u32): Remove.
40208         (__arm_vmulq_n_f16): Remove.
40209         (__arm_vmulq_f16): Remove.
40210         (__arm_vmulq_n_f32): Remove.
40211         (__arm_vmulq_f32): Remove.
40212         (__arm_vmulq_m_f32): Remove.
40213         (__arm_vmulq_m_f16): Remove.
40214         (__arm_vmulq_m_n_f32): Remove.
40215         (__arm_vmulq_m_n_f16): Remove.
40216         (__arm_vmulq_x_f16): Remove.
40217         (__arm_vmulq_x_f32): Remove.
40218         (__arm_vmulq_x_n_f16): Remove.
40219         (__arm_vmulq_x_n_f32): Remove.
40220         (__arm_vmulq): Remove.
40221         (__arm_vmulq_m): Remove.
40222         (__arm_vmulq_x): Remove.
40223         (vsubq): Remove.
40224         (vsubq_m): Remove.
40225         (vsubq_x): Remove.
40226         (vsubq_n_f16): Remove.
40227         (vsubq_n_f32): Remove.
40228         (vsubq_u8): Remove.
40229         (vsubq_n_u8): Remove.
40230         (vsubq_s8): Remove.
40231         (vsubq_n_s8): Remove.
40232         (vsubq_u16): Remove.
40233         (vsubq_n_u16): Remove.
40234         (vsubq_s16): Remove.
40235         (vsubq_n_s16): Remove.
40236         (vsubq_u32): Remove.
40237         (vsubq_n_u32): Remove.
40238         (vsubq_s32): Remove.
40239         (vsubq_n_s32): Remove.
40240         (vsubq_f16): Remove.
40241         (vsubq_f32): Remove.
40242         (vsubq_m_s8): Remove.
40243         (vsubq_m_u8): Remove.
40244         (vsubq_m_s16): Remove.
40245         (vsubq_m_u16): Remove.
40246         (vsubq_m_s32): Remove.
40247         (vsubq_m_u32): Remove.
40248         (vsubq_m_n_s8): Remove.
40249         (vsubq_m_n_s32): Remove.
40250         (vsubq_m_n_s16): Remove.
40251         (vsubq_m_n_u8): Remove.
40252         (vsubq_m_n_u32): Remove.
40253         (vsubq_m_n_u16): Remove.
40254         (vsubq_m_f32): Remove.
40255         (vsubq_m_f16): Remove.
40256         (vsubq_m_n_f32): Remove.
40257         (vsubq_m_n_f16): Remove.
40258         (vsubq_x_s8): Remove.
40259         (vsubq_x_s16): Remove.
40260         (vsubq_x_s32): Remove.
40261         (vsubq_x_n_s8): Remove.
40262         (vsubq_x_n_s16): Remove.
40263         (vsubq_x_n_s32): Remove.
40264         (vsubq_x_u8): Remove.
40265         (vsubq_x_u16): Remove.
40266         (vsubq_x_u32): Remove.
40267         (vsubq_x_n_u8): Remove.
40268         (vsubq_x_n_u16): Remove.
40269         (vsubq_x_n_u32): Remove.
40270         (vsubq_x_f16): Remove.
40271         (vsubq_x_f32): Remove.
40272         (vsubq_x_n_f16): Remove.
40273         (vsubq_x_n_f32): Remove.
40274         (__arm_vsubq_u8): Remove.
40275         (__arm_vsubq_n_u8): Remove.
40276         (__arm_vsubq_s8): Remove.
40277         (__arm_vsubq_n_s8): Remove.
40278         (__arm_vsubq_u16): Remove.
40279         (__arm_vsubq_n_u16): Remove.
40280         (__arm_vsubq_s16): Remove.
40281         (__arm_vsubq_n_s16): Remove.
40282         (__arm_vsubq_u32): Remove.
40283         (__arm_vsubq_n_u32): Remove.
40284         (__arm_vsubq_s32): Remove.
40285         (__arm_vsubq_n_s32): Remove.
40286         (__arm_vsubq_m_s8): Remove.
40287         (__arm_vsubq_m_u8): Remove.
40288         (__arm_vsubq_m_s16): Remove.
40289         (__arm_vsubq_m_u16): Remove.
40290         (__arm_vsubq_m_s32): Remove.
40291         (__arm_vsubq_m_u32): Remove.
40292         (__arm_vsubq_m_n_s8): Remove.
40293         (__arm_vsubq_m_n_s32): Remove.
40294         (__arm_vsubq_m_n_s16): Remove.
40295         (__arm_vsubq_m_n_u8): Remove.
40296         (__arm_vsubq_m_n_u32): Remove.
40297         (__arm_vsubq_m_n_u16): Remove.
40298         (__arm_vsubq_x_s8): Remove.
40299         (__arm_vsubq_x_s16): Remove.
40300         (__arm_vsubq_x_s32): Remove.
40301         (__arm_vsubq_x_n_s8): Remove.
40302         (__arm_vsubq_x_n_s16): Remove.
40303         (__arm_vsubq_x_n_s32): Remove.
40304         (__arm_vsubq_x_u8): Remove.
40305         (__arm_vsubq_x_u16): Remove.
40306         (__arm_vsubq_x_u32): Remove.
40307         (__arm_vsubq_x_n_u8): Remove.
40308         (__arm_vsubq_x_n_u16): Remove.
40309         (__arm_vsubq_x_n_u32): Remove.
40310         (__arm_vsubq_n_f16): Remove.
40311         (__arm_vsubq_n_f32): Remove.
40312         (__arm_vsubq_f16): Remove.
40313         (__arm_vsubq_f32): Remove.
40314         (__arm_vsubq_m_f32): Remove.
40315         (__arm_vsubq_m_f16): Remove.
40316         (__arm_vsubq_m_n_f32): Remove.
40317         (__arm_vsubq_m_n_f16): Remove.
40318         (__arm_vsubq_x_f16): Remove.
40319         (__arm_vsubq_x_f32): Remove.
40320         (__arm_vsubq_x_n_f16): Remove.
40321         (__arm_vsubq_x_n_f32): Remove.
40322         (__arm_vsubq): Remove.
40323         (__arm_vsubq_m): Remove.
40324         (__arm_vsubq_x): Remove.
40325         * config/arm/arm_mve_builtins.def (vsubq_u, vsubq_s, vsubq_f):
40326         Remove.
40327         (vmulq_u, vmulq_s, vmulq_f): Remove.
40328         * config/arm/mve.md (mve_vsubq_<supf><mode>): Remove.
40329         (mve_vmulq_<supf><mode>): Remove.
40331 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
40333         * config/arm/iterators.md (MVE_INT_BINARY_RTX, MVE_INT_M_BINARY)
40334         (MVE_INT_M_N_BINARY, MVE_INT_N_BINARY, MVE_FP_M_BINARY)
40335         (MVE_FP_M_N_BINARY, MVE_FP_N_BINARY, mve_addsubmul, mve_insn): New
40336         iterators.
40337         * config/arm/mve.md
40338         (mve_vsubq_n_f<mode>, mve_vaddq_n_f<mode>, mve_vmulq_n_f<mode>):
40339         Factorize into ...
40340         (@mve_<mve_insn>q_n_f<mode>): ... this.
40341         (mve_vaddq_n_<supf><mode>, mve_vmulq_n_<supf><mode>)
40342         (mve_vsubq_n_<supf><mode>): Factorize into ...
40343         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
40344         (mve_vaddq<mode>, mve_vmulq<mode>, mve_vsubq<mode>): Factorize
40345         into ...
40346         (mve_<mve_addsubmul>q<mode>): ... this.
40347         (mve_vaddq_f<mode>, mve_vmulq_f<mode>, mve_vsubq_f<mode>):
40348         Factorize into ...
40349         (mve_<mve_addsubmul>q_f<mode>): ... this.
40350         (mve_vaddq_m_<supf><mode>, mve_vmulq_m_<supf><mode>)
40351         (mve_vsubq_m_<supf><mode>): Factorize into ...
40352         (@mve_<mve_insn>q_m_<supf><mode>): ... this,
40353         (mve_vaddq_m_n_<supf><mode>, mve_vmulq_m_n_<supf><mode>)
40354         (mve_vsubq_m_n_<supf><mode>): Factorize into ...
40355         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
40356         (mve_vaddq_m_f<mode>, mve_vmulq_m_f<mode>, mve_vsubq_m_f<mode>):
40357         Factorize into ...
40358         (@mve_<mve_insn>q_m_f<mode>): ... this.
40359         (mve_vaddq_m_n_f<mode>, mve_vmulq_m_n_f<mode>)
40360         (mve_vsubq_m_n_f<mode>): Factorize into ...
40361         (@mve_<mve_insn>q_m_n_f<mode>): ... this.
40363 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
40365         * config/arm/arm-mve-builtins-functions.h (class
40366         unspec_based_mve_function_base): New.
40367         (class unspec_based_mve_function_exact_insn): New.
40369 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
40371         * config/arm/arm-mve-builtins-shapes.cc (binary_opt_n): New.
40372         * config/arm/arm-mve-builtins-shapes.h (binary_opt_n): New.
40374 2023-05-03  Murray Steele  <murray.steele@arm.com>
40375             Christophe Lyon  <christophe.lyon@arm.com>
40377         * config/arm/arm-mve-builtins-base.cc (class
40378         vuninitializedq_impl): New.
40379         * config/arm/arm-mve-builtins-base.def (vuninitializedq): New.
40380         * config/arm/arm-mve-builtins-base.h (vuninitializedq): New
40381         declaration.
40382         * config/arm/arm-mve-builtins-shapes.cc (inherent): New.
40383         * config/arm/arm-mve-builtins-shapes.h (inherent): New
40384         declaration.
40385         * config/arm/arm_mve_types.h (__arm_vuninitializedq): Move to ...
40386         * config/arm/arm_mve.h (__arm_vuninitializedq): ... here.
40387         (__arm_vuninitializedq_u8): Remove.
40388         (__arm_vuninitializedq_u16): Remove.
40389         (__arm_vuninitializedq_u32): Remove.
40390         (__arm_vuninitializedq_u64): Remove.
40391         (__arm_vuninitializedq_s8): Remove.
40392         (__arm_vuninitializedq_s16): Remove.
40393         (__arm_vuninitializedq_s32): Remove.
40394         (__arm_vuninitializedq_s64): Remove.
40395         (__arm_vuninitializedq_f16): Remove.
40396         (__arm_vuninitializedq_f32): Remove.
40398 2023-05-03  Murray Steele  <murray.steele@arm.com>
40399             Christophe Lyon  <christophe.lyon@arm.com>
40401         * config/arm/arm-mve-builtins-base.cc (vreinterpretq_impl): New class.
40402         * config/arm/arm-mve-builtins-base.def: Define vreinterpretq.
40403         * config/arm/arm-mve-builtins-base.h (vreinterpretq): New declaration.
40404         * config/arm/arm-mve-builtins-shapes.cc (parse_element_type): New function.
40405         (parse_type): Likewise.
40406         (parse_signature): Likewise.
40407         (build_one): Likewise.
40408         (build_all): Likewise.
40409         (overloaded_base): New struct.
40410         (unary_convert_def): Likewise.
40411         * config/arm/arm-mve-builtins-shapes.h (unary_convert): Declare.
40412         * config/arm/arm-mve-builtins.cc (TYPES_reinterpret_signed1): New
40413         macro.
40414         (TYPES_reinterpret_unsigned1): Likewise.
40415         (TYPES_reinterpret_integer): Likewise.
40416         (TYPES_reinterpret_integer1): Likewise.
40417         (TYPES_reinterpret_float1): Likewise.
40418         (TYPES_reinterpret_float): Likewise.
40419         (reinterpret_integer): New.
40420         (reinterpret_float): New.
40421         (handle_arm_mve_h): Register builtins.
40422         * config/arm/arm_mve.h (vreinterpretq_s16): Remove.
40423         (vreinterpretq_s32): Likewise.
40424         (vreinterpretq_s64): Likewise.
40425         (vreinterpretq_s8): Likewise.
40426         (vreinterpretq_u16): Likewise.
40427         (vreinterpretq_u32): Likewise.
40428         (vreinterpretq_u64): Likewise.
40429         (vreinterpretq_u8): Likewise.
40430         (vreinterpretq_f16): Likewise.
40431         (vreinterpretq_f32): Likewise.
40432         (vreinterpretq_s16_s32): Likewise.
40433         (vreinterpretq_s16_s64): Likewise.
40434         (vreinterpretq_s16_s8): Likewise.
40435         (vreinterpretq_s16_u16): Likewise.
40436         (vreinterpretq_s16_u32): Likewise.
40437         (vreinterpretq_s16_u64): Likewise.
40438         (vreinterpretq_s16_u8): Likewise.
40439         (vreinterpretq_s32_s16): Likewise.
40440         (vreinterpretq_s32_s64): Likewise.
40441         (vreinterpretq_s32_s8): Likewise.
40442         (vreinterpretq_s32_u16): Likewise.
40443         (vreinterpretq_s32_u32): Likewise.
40444         (vreinterpretq_s32_u64): Likewise.
40445         (vreinterpretq_s32_u8): Likewise.
40446         (vreinterpretq_s64_s16): Likewise.
40447         (vreinterpretq_s64_s32): Likewise.
40448         (vreinterpretq_s64_s8): Likewise.
40449         (vreinterpretq_s64_u16): Likewise.
40450         (vreinterpretq_s64_u32): Likewise.
40451         (vreinterpretq_s64_u64): Likewise.
40452         (vreinterpretq_s64_u8): Likewise.
40453         (vreinterpretq_s8_s16): Likewise.
40454         (vreinterpretq_s8_s32): Likewise.
40455         (vreinterpretq_s8_s64): Likewise.
40456         (vreinterpretq_s8_u16): Likewise.
40457         (vreinterpretq_s8_u32): Likewise.
40458         (vreinterpretq_s8_u64): Likewise.
40459         (vreinterpretq_s8_u8): Likewise.
40460         (vreinterpretq_u16_s16): Likewise.
40461         (vreinterpretq_u16_s32): Likewise.
40462         (vreinterpretq_u16_s64): Likewise.
40463         (vreinterpretq_u16_s8): Likewise.
40464         (vreinterpretq_u16_u32): Likewise.
40465         (vreinterpretq_u16_u64): Likewise.
40466         (vreinterpretq_u16_u8): Likewise.
40467         (vreinterpretq_u32_s16): Likewise.
40468         (vreinterpretq_u32_s32): Likewise.
40469         (vreinterpretq_u32_s64): Likewise.
40470         (vreinterpretq_u32_s8): Likewise.
40471         (vreinterpretq_u32_u16): Likewise.
40472         (vreinterpretq_u32_u64): Likewise.
40473         (vreinterpretq_u32_u8): Likewise.
40474         (vreinterpretq_u64_s16): Likewise.
40475         (vreinterpretq_u64_s32): Likewise.
40476         (vreinterpretq_u64_s64): Likewise.
40477         (vreinterpretq_u64_s8): Likewise.
40478         (vreinterpretq_u64_u16): Likewise.
40479         (vreinterpretq_u64_u32): Likewise.
40480         (vreinterpretq_u64_u8): Likewise.
40481         (vreinterpretq_u8_s16): Likewise.
40482         (vreinterpretq_u8_s32): Likewise.
40483         (vreinterpretq_u8_s64): Likewise.
40484         (vreinterpretq_u8_s8): Likewise.
40485         (vreinterpretq_u8_u16): Likewise.
40486         (vreinterpretq_u8_u32): Likewise.
40487         (vreinterpretq_u8_u64): Likewise.
40488         (vreinterpretq_s32_f16): Likewise.
40489         (vreinterpretq_s32_f32): Likewise.
40490         (vreinterpretq_u16_f16): Likewise.
40491         (vreinterpretq_u16_f32): Likewise.
40492         (vreinterpretq_u32_f16): Likewise.
40493         (vreinterpretq_u32_f32): Likewise.
40494         (vreinterpretq_u64_f16): Likewise.
40495         (vreinterpretq_u64_f32): Likewise.
40496         (vreinterpretq_u8_f16): Likewise.
40497         (vreinterpretq_u8_f32): Likewise.
40498         (vreinterpretq_f16_f32): Likewise.
40499         (vreinterpretq_f16_s16): Likewise.
40500         (vreinterpretq_f16_s32): Likewise.
40501         (vreinterpretq_f16_s64): Likewise.
40502         (vreinterpretq_f16_s8): Likewise.
40503         (vreinterpretq_f16_u16): Likewise.
40504         (vreinterpretq_f16_u32): Likewise.
40505         (vreinterpretq_f16_u64): Likewise.
40506         (vreinterpretq_f16_u8): Likewise.
40507         (vreinterpretq_f32_f16): Likewise.
40508         (vreinterpretq_f32_s16): Likewise.
40509         (vreinterpretq_f32_s32): Likewise.
40510         (vreinterpretq_f32_s64): Likewise.
40511         (vreinterpretq_f32_s8): Likewise.
40512         (vreinterpretq_f32_u16): Likewise.
40513         (vreinterpretq_f32_u32): Likewise.
40514         (vreinterpretq_f32_u64): Likewise.
40515         (vreinterpretq_f32_u8): Likewise.
40516         (vreinterpretq_s16_f16): Likewise.
40517         (vreinterpretq_s16_f32): Likewise.
40518         (vreinterpretq_s64_f16): Likewise.
40519         (vreinterpretq_s64_f32): Likewise.
40520         (vreinterpretq_s8_f16): Likewise.
40521         (vreinterpretq_s8_f32): Likewise.
40522         (__arm_vreinterpretq_f16): Likewise.
40523         (__arm_vreinterpretq_f32): Likewise.
40524         (__arm_vreinterpretq_s16): Likewise.
40525         (__arm_vreinterpretq_s32): Likewise.
40526         (__arm_vreinterpretq_s64): Likewise.
40527         (__arm_vreinterpretq_s8): Likewise.
40528         (__arm_vreinterpretq_u16): Likewise.
40529         (__arm_vreinterpretq_u32): Likewise.
40530         (__arm_vreinterpretq_u64): Likewise.
40531         (__arm_vreinterpretq_u8): Likewise.
40532         * config/arm/arm_mve_types.h (__arm_vreinterpretq_s16_s32): Remove.
40533         (__arm_vreinterpretq_s16_s64): Likewise.
40534         (__arm_vreinterpretq_s16_s8): Likewise.
40535         (__arm_vreinterpretq_s16_u16): Likewise.
40536         (__arm_vreinterpretq_s16_u32): Likewise.
40537         (__arm_vreinterpretq_s16_u64): Likewise.
40538         (__arm_vreinterpretq_s16_u8): Likewise.
40539         (__arm_vreinterpretq_s32_s16): Likewise.
40540         (__arm_vreinterpretq_s32_s64): Likewise.
40541         (__arm_vreinterpretq_s32_s8): Likewise.
40542         (__arm_vreinterpretq_s32_u16): Likewise.
40543         (__arm_vreinterpretq_s32_u32): Likewise.
40544         (__arm_vreinterpretq_s32_u64): Likewise.
40545         (__arm_vreinterpretq_s32_u8): Likewise.
40546         (__arm_vreinterpretq_s64_s16): Likewise.
40547         (__arm_vreinterpretq_s64_s32): Likewise.
40548         (__arm_vreinterpretq_s64_s8): Likewise.
40549         (__arm_vreinterpretq_s64_u16): Likewise.
40550         (__arm_vreinterpretq_s64_u32): Likewise.
40551         (__arm_vreinterpretq_s64_u64): Likewise.
40552         (__arm_vreinterpretq_s64_u8): Likewise.
40553         (__arm_vreinterpretq_s8_s16): Likewise.
40554         (__arm_vreinterpretq_s8_s32): Likewise.
40555         (__arm_vreinterpretq_s8_s64): Likewise.
40556         (__arm_vreinterpretq_s8_u16): Likewise.
40557         (__arm_vreinterpretq_s8_u32): Likewise.
40558         (__arm_vreinterpretq_s8_u64): Likewise.
40559         (__arm_vreinterpretq_s8_u8): Likewise.
40560         (__arm_vreinterpretq_u16_s16): Likewise.
40561         (__arm_vreinterpretq_u16_s32): Likewise.
40562         (__arm_vreinterpretq_u16_s64): Likewise.
40563         (__arm_vreinterpretq_u16_s8): Likewise.
40564         (__arm_vreinterpretq_u16_u32): Likewise.
40565         (__arm_vreinterpretq_u16_u64): Likewise.
40566         (__arm_vreinterpretq_u16_u8): Likewise.
40567         (__arm_vreinterpretq_u32_s16): Likewise.
40568         (__arm_vreinterpretq_u32_s32): Likewise.
40569         (__arm_vreinterpretq_u32_s64): Likewise.
40570         (__arm_vreinterpretq_u32_s8): Likewise.
40571         (__arm_vreinterpretq_u32_u16): Likewise.
40572         (__arm_vreinterpretq_u32_u64): Likewise.
40573         (__arm_vreinterpretq_u32_u8): Likewise.
40574         (__arm_vreinterpretq_u64_s16): Likewise.
40575         (__arm_vreinterpretq_u64_s32): Likewise.
40576         (__arm_vreinterpretq_u64_s64): Likewise.
40577         (__arm_vreinterpretq_u64_s8): Likewise.
40578         (__arm_vreinterpretq_u64_u16): Likewise.
40579         (__arm_vreinterpretq_u64_u32): Likewise.
40580         (__arm_vreinterpretq_u64_u8): Likewise.
40581         (__arm_vreinterpretq_u8_s16): Likewise.
40582         (__arm_vreinterpretq_u8_s32): Likewise.
40583         (__arm_vreinterpretq_u8_s64): Likewise.
40584         (__arm_vreinterpretq_u8_s8): Likewise.
40585         (__arm_vreinterpretq_u8_u16): Likewise.
40586         (__arm_vreinterpretq_u8_u32): Likewise.
40587         (__arm_vreinterpretq_u8_u64): Likewise.
40588         (__arm_vreinterpretq_s32_f16): Likewise.
40589         (__arm_vreinterpretq_s32_f32): Likewise.
40590         (__arm_vreinterpretq_s16_f16): Likewise.
40591         (__arm_vreinterpretq_s16_f32): Likewise.
40592         (__arm_vreinterpretq_s64_f16): Likewise.
40593         (__arm_vreinterpretq_s64_f32): Likewise.
40594         (__arm_vreinterpretq_s8_f16): Likewise.
40595         (__arm_vreinterpretq_s8_f32): Likewise.
40596         (__arm_vreinterpretq_u16_f16): Likewise.
40597         (__arm_vreinterpretq_u16_f32): Likewise.
40598         (__arm_vreinterpretq_u32_f16): Likewise.
40599         (__arm_vreinterpretq_u32_f32): Likewise.
40600         (__arm_vreinterpretq_u64_f16): Likewise.
40601         (__arm_vreinterpretq_u64_f32): Likewise.
40602         (__arm_vreinterpretq_u8_f16): Likewise.
40603         (__arm_vreinterpretq_u8_f32): Likewise.
40604         (__arm_vreinterpretq_f16_f32): Likewise.
40605         (__arm_vreinterpretq_f16_s16): Likewise.
40606         (__arm_vreinterpretq_f16_s32): Likewise.
40607         (__arm_vreinterpretq_f16_s64): Likewise.
40608         (__arm_vreinterpretq_f16_s8): Likewise.
40609         (__arm_vreinterpretq_f16_u16): Likewise.
40610         (__arm_vreinterpretq_f16_u32): Likewise.
40611         (__arm_vreinterpretq_f16_u64): Likewise.
40612         (__arm_vreinterpretq_f16_u8): Likewise.
40613         (__arm_vreinterpretq_f32_f16): Likewise.
40614         (__arm_vreinterpretq_f32_s16): Likewise.
40615         (__arm_vreinterpretq_f32_s32): Likewise.
40616         (__arm_vreinterpretq_f32_s64): Likewise.
40617         (__arm_vreinterpretq_f32_s8): Likewise.
40618         (__arm_vreinterpretq_f32_u16): Likewise.
40619         (__arm_vreinterpretq_f32_u32): Likewise.
40620         (__arm_vreinterpretq_f32_u64): Likewise.
40621         (__arm_vreinterpretq_f32_u8): Likewise.
40622         (__arm_vreinterpretq_s16): Likewise.
40623         (__arm_vreinterpretq_s32): Likewise.
40624         (__arm_vreinterpretq_s64): Likewise.
40625         (__arm_vreinterpretq_s8): Likewise.
40626         (__arm_vreinterpretq_u16): Likewise.
40627         (__arm_vreinterpretq_u32): Likewise.
40628         (__arm_vreinterpretq_u64): Likewise.
40629         (__arm_vreinterpretq_u8): Likewise.
40630         (__arm_vreinterpretq_f16): Likewise.
40631         (__arm_vreinterpretq_f32): Likewise.
40632         * config/arm/mve.md (@arm_mve_reinterpret<mode>): New pattern.
40633         * config/arm/unspecs.md: (REINTERPRET): New unspec.
40635 2023-05-03  Murray Steele  <murray.steele@arm.com>
40636             Christophe Lyon  <christophe.lyon@arm.com>
40637             Christophe Lyon   <christophe.lyon@arm.com
40639         * config.gcc: Add arm-mve-builtins-base.o and
40640         arm-mve-builtins-shapes.o to extra_objs.
40641         * config/arm/arm-builtins.cc (arm_builtin_decl): Handle MVE builtin
40642         numberspace.
40643         (arm_expand_builtin): Likewise
40644         (arm_check_builtin_call): Likewise
40645         (arm_describe_resolver): Likewise.
40646         * config/arm/arm-builtins.h (enum resolver_ident): Add
40647         arm_mve_resolver.
40648         * config/arm/arm-c.cc (arm_pragma_arm): Handle new pragma.
40649         (arm_resolve_overloaded_builtin): Handle MVE builtins.
40650         (arm_register_target_pragmas): Register arm_check_builtin_call.
40651         * config/arm/arm-mve-builtins.cc (class registered_function): New
40652         class.
40653         (struct registered_function_hasher): New struct.
40654         (pred_suffixes): New table.
40655         (mode_suffixes): New table.
40656         (type_suffix_info): New table.
40657         (TYPES_float16): New.
40658         (TYPES_all_float): New.
40659         (TYPES_integer_8): New.
40660         (TYPES_integer_8_16): New.
40661         (TYPES_integer_16_32): New.
40662         (TYPES_integer_32): New.
40663         (TYPES_signed_16_32): New.
40664         (TYPES_signed_32): New.
40665         (TYPES_all_signed): New.
40666         (TYPES_all_unsigned): New.
40667         (TYPES_all_integer): New.
40668         (TYPES_all_integer_with_64): New.
40669         (DEF_VECTOR_TYPE): New.
40670         (DEF_DOUBLE_TYPE): New.
40671         (DEF_MVE_TYPES_ARRAY): New.
40672         (all_integer): New.
40673         (all_integer_with_64): New.
40674         (float16): New.
40675         (all_float): New.
40676         (all_signed): New.
40677         (all_unsigned): New.
40678         (integer_8): New.
40679         (integer_8_16): New.
40680         (integer_16_32): New.
40681         (integer_32): New.
40682         (signed_16_32): New.
40683         (signed_32): New.
40684         (register_vector_type): Use void_type_node for mve.fp-only types when
40685         mve.fp is not enabled.
40686         (register_builtin_tuple_types): Likewise.
40687         (handle_arm_mve_h): New function..
40688         (matches_type_p): Likewise..
40689         (report_out_of_range): Likewise.
40690         (report_not_enum): Likewise.
40691         (report_missing_float): Likewise.
40692         (report_non_ice): Likewise.
40693         (check_requires_float): Likewise.
40694         (function_instance::hash): Likewise
40695         (function_instance::call_properties): Likewise.
40696         (function_instance::reads_global_state_p): Likewise.
40697         (function_instance::modifies_global_state_p): Likewise.
40698         (function_instance::could_trap_p): Likewise.
40699         (function_instance::has_inactive_argument): Likewise.
40700         (registered_function_hasher::hash): Likewise.
40701         (registered_function_hasher::equal): Likewise.
40702         (function_builder::function_builder): Likewise.
40703         (function_builder::~function_builder): Likewise.
40704         (function_builder::append_name): Likewise.
40705         (function_builder::finish_name): Likewise.
40706         (function_builder::get_name): Likewise.
40707         (add_attribute): Likewise.
40708         (function_builder::get_attributes): Likewise.
40709         (function_builder::add_function): Likewise.
40710         (function_builder::add_unique_function): Likewise.
40711         (function_builder::add_overloaded_function): Likewise.
40712         (function_builder::add_overloaded_functions): Likewise.
40713         (function_builder::register_function_group): Likewise.
40714         (function_call_info::function_call_info): Likewise.
40715         (function_resolver::function_resolver): Likewise.
40716         (function_resolver::get_vector_type): Likewise.
40717         (function_resolver::get_scalar_type_name): Likewise.
40718         (function_resolver::get_argument_type): Likewise.
40719         (function_resolver::scalar_argument_p): Likewise.
40720         (function_resolver::report_no_such_form): Likewise.
40721         (function_resolver::lookup_form): Likewise.
40722         (function_resolver::resolve_to): Likewise.
40723         (function_resolver::infer_vector_or_tuple_type): Likewise.
40724         (function_resolver::infer_vector_type): Likewise.
40725         (function_resolver::require_vector_or_scalar_type): Likewise.
40726         (function_resolver::require_vector_type): Likewise.
40727         (function_resolver::require_matching_vector_type): Likewise.
40728         (function_resolver::require_derived_vector_type): Likewise.
40729         (function_resolver::require_derived_scalar_type): Likewise.
40730         (function_resolver::require_integer_immediate): Likewise.
40731         (function_resolver::require_scalar_type): Likewise.
40732         (function_resolver::check_num_arguments): Likewise.
40733         (function_resolver::check_gp_argument): Likewise.
40734         (function_resolver::finish_opt_n_resolution): Likewise.
40735         (function_resolver::resolve_unary): Likewise.
40736         (function_resolver::resolve_unary_n): Likewise.
40737         (function_resolver::resolve_uniform): Likewise.
40738         (function_resolver::resolve_uniform_opt_n): Likewise.
40739         (function_resolver::resolve): Likewise.
40740         (function_checker::function_checker): Likewise.
40741         (function_checker::argument_exists_p): Likewise.
40742         (function_checker::require_immediate): Likewise.
40743         (function_checker::require_immediate_enum): Likewise.
40744         (function_checker::require_immediate_range): Likewise.
40745         (function_checker::check): Likewise.
40746         (gimple_folder::gimple_folder): Likewise.
40747         (gimple_folder::fold): Likewise.
40748         (function_expander::function_expander): Likewise.
40749         (function_expander::direct_optab_handler): Likewise.
40750         (function_expander::get_fallback_value): Likewise.
40751         (function_expander::get_reg_target): Likewise.
40752         (function_expander::add_output_operand): Likewise.
40753         (function_expander::add_input_operand): Likewise.
40754         (function_expander::add_integer_operand): Likewise.
40755         (function_expander::generate_insn): Likewise.
40756         (function_expander::use_exact_insn): Likewise.
40757         (function_expander::use_unpred_insn): Likewise.
40758         (function_expander::use_pred_x_insn): Likewise.
40759         (function_expander::use_cond_insn): Likewise.
40760         (function_expander::map_to_rtx_codes): Likewise.
40761         (function_expander::expand): Likewise.
40762         (resolve_overloaded_builtin): Likewise.
40763         (check_builtin_call): Likewise.
40764         (gimple_fold_builtin): Likewise.
40765         (expand_builtin): Likewise.
40766         (gt_ggc_mx): Likewise.
40767         (gt_pch_nx): Likewise.
40768         (gt_pch_nx): Likewise.
40769         * config/arm/arm-mve-builtins.def(s8): Define new type suffix.
40770         (s16): Likewise.
40771         (s32): Likewise.
40772         (s64): Likewise.
40773         (u8): Likewise.
40774         (u16): Likewise.
40775         (u32): Likewise.
40776         (u64): Likewise.
40777         (f16): Likewise.
40778         (f32): Likewise.
40779         (n): New mode.
40780         (offset): New mode.
40781         * config/arm/arm-mve-builtins.h (MAX_TUPLE_SIZE): New constant.
40782         (CP_READ_FPCR): Likewise.
40783         (CP_RAISE_FP_EXCEPTIONS): Likewise.
40784         (CP_READ_MEMORY): Likewise.
40785         (CP_WRITE_MEMORY): Likewise.
40786         (enum units_index): New enum.
40787         (enum predication_index): New.
40788         (enum type_class_index): New.
40789         (enum mode_suffix_index): New enum.
40790         (enum type_suffix_index): New.
40791         (struct mode_suffix_info): New struct.
40792         (struct type_suffix_info): New.
40793         (struct function_group_info): Likewise.
40794         (class function_instance): Likewise.
40795         (class registered_function): Likewise.
40796         (class function_builder): Likewise.
40797         (class function_call_info): Likewise.
40798         (class function_resolver): Likewise.
40799         (class function_checker): Likewise.
40800         (class gimple_folder): Likewise.
40801         (class function_expander): Likewise.
40802         (get_mve_pred16_t): Likewise.
40803         (find_mode_suffix): New function.
40804         (class function_base): Likewise.
40805         (class function_shape): Likewise.
40806         (function_instance::operator==): New function.
40807         (function_instance::operator!=): Likewise.
40808         (function_instance::vectors_per_tuple): Likewise.
40809         (function_instance::mode_suffix): Likewise.
40810         (function_instance::type_suffix): Likewise.
40811         (function_instance::scalar_type): Likewise.
40812         (function_instance::vector_type): Likewise.
40813         (function_instance::tuple_type): Likewise.
40814         (function_instance::vector_mode): Likewise.
40815         (function_call_info::function_returns_void_p): Likewise.
40816         (function_base::call_properties): Likewise.
40817         * config/arm/arm-protos.h (enum arm_builtin_class): Add
40818         ARM_BUILTIN_MVE.
40819         (handle_arm_mve_h): New.
40820         (resolve_overloaded_builtin): New.
40821         (check_builtin_call): New.
40822         (gimple_fold_builtin): New.
40823         (expand_builtin): New.
40824         * config/arm/arm.cc (TARGET_GIMPLE_FOLD_BUILTIN): Define as
40825         arm_gimple_fold_builtin.
40826         (arm_gimple_fold_builtin): New function.
40827         * config/arm/arm_mve.h: Use new arm_mve.h pragma.
40828         * config/arm/predicates.md (arm_any_register_operand): New predicate.
40829         * config/arm/t-arm: (arm-mve-builtins.o): Add includes.
40830         (arm-mve-builtins-shapes.o): New target.
40831         (arm-mve-builtins-base.o): New target.
40832         * config/arm/arm-mve-builtins-base.cc: New file.
40833         * config/arm/arm-mve-builtins-base.def: New file.
40834         * config/arm/arm-mve-builtins-base.h: New file.
40835         * config/arm/arm-mve-builtins-functions.h: New file.
40836         * config/arm/arm-mve-builtins-shapes.cc: New file.
40837         * config/arm/arm-mve-builtins-shapes.h: New file.
40839 2023-05-03  Murray Steele  <murray.steele@arm.com>
40840             Christophe Lyon  <christophe.lyon@arm.com>
40841             Christophe Lyon   <christophe.lyon@arm.com>
40843         * config/arm/arm-builtins.cc (arm_general_add_builtin_function):
40844         New function.
40845         (arm_init_builtin): Use arm_general_add_builtin_function instead
40846         of arm_add_builtin_function.
40847         (arm_init_acle_builtins): Likewise.
40848         (arm_init_mve_builtins): Likewise.
40849         (arm_init_crypto_builtins): Likewise.
40850         (arm_init_builtins): Likewise.
40851         (arm_general_builtin_decl): New function.
40852         (arm_builtin_decl): Defer to numberspace-specialized functions.
40853         (arm_expand_builtin_args): Rename into arm_general_expand_builtin_args.
40854         (arm_expand_builtin_1): Rename into arm_general_expand_builtin_1 and ...
40855         (arm_general_expand_builtin_1): ... specialize for general builtins.
40856         (arm_expand_acle_builtin): Use arm_general_expand_builtin
40857         instead of arm_expand_builtin.
40858         (arm_expand_mve_builtin): Likewise.
40859         (arm_expand_neon_builtin): Likewise.
40860         (arm_expand_vfp_builtin): Likewise.
40861         (arm_general_expand_builtin): New function.
40862         (arm_expand_builtin): Specialize for general builtins.
40863         (arm_general_check_builtin_call): New function.
40864         (arm_check_builtin_call): Specialize for general builtins.
40865         (arm_describe_resolver): Validate numberspace.
40866         (arm_cde_end_args): Likewise.
40867         * config/arm/arm-protos.h (enum arm_builtin_class): New enum.
40868         (ARM_BUILTIN_SHIFT, ARM_BUILTIN_CLASS): New constants.
40870 2023-05-03  Martin Liska  <mliska@suse.cz>
40872         PR target/109713
40873         * config/riscv/sync.md: Add gcc_unreachable to a switch.
40875 2023-05-03  Richard Biener  <rguenther@suse.de>
40877         * tree-ssa-loop-split.cc (split_at_bb_p): Avoid last_stmt.
40878         (patch_loop_exit): Likewise.
40879         (connect_loops): Likewise.
40880         (split_loop): Likewise.
40881         (control_dep_semi_invariant_p): Likewise.
40882         (do_split_loop_on_cond): Likewise.
40883         (split_loop_on_cond): Likewise.
40884         * tree-ssa-loop-unswitch.cc (find_unswitching_predicates_for_bb):
40885         Likewise.
40886         (simplify_loop_version): Likewise.
40887         (evaluate_bbs): Likewise.
40888         (find_loop_guard): Likewise.
40889         (clean_up_after_unswitching): Likewise.
40890         * tree-ssa-math-opts.cc (maybe_optimize_guarding_check):
40891         Likewise.
40892         (optimize_spaceship): Take a gcond * argument, avoid
40893         last_stmt.
40894         (math_opts_dom_walker::after_dom_children): Adjust call to
40895         optimize_spaceship.
40896         * tree-vrp.cc (maybe_set_nonzero_bits): Avoid last_stmt.
40897         * value-pointer-equiv.cc (pointer_equiv_analyzer::visit_edge):
40898         Likewise.
40900 2023-05-03  Andreas Schwab  <schwab@suse.de>
40902         * config/riscv/linux.h (LIB_SPEC): Don't redefine.
40904 2023-05-03  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
40906         * config/riscv/riscv-vector-builtins-bases.cc (fold_fault_load):
40907         New function.
40908         (class vlseg): New class.
40909         (class vsseg): Ditto.
40910         (class vlsseg): Ditto.
40911         (class vssseg): Ditto.
40912         (class seg_indexed_load): Ditto.
40913         (class seg_indexed_store): Ditto.
40914         (class vlsegff): Ditto.
40915         (BASE): Ditto.
40916         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
40917         * config/riscv/riscv-vector-builtins-functions.def (vlseg):
40918         Ditto.
40919         (vsseg): Ditto.
40920         (vlsseg): Ditto.
40921         (vssseg): Ditto.
40922         (vluxseg): Ditto.
40923         (vloxseg): Ditto.
40924         (vsuxseg): Ditto.
40925         (vsoxseg): Ditto.
40926         (vlsegff): Ditto.
40927         * config/riscv/riscv-vector-builtins-shapes.cc (struct
40928         seg_loadstore_def): Ditto.
40929         (struct seg_indexed_loadstore_def): Ditto.
40930         (struct seg_fault_load_def): Ditto.
40931         (SHAPE): Ditto.
40932         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
40933         * config/riscv/riscv-vector-builtins.cc
40934         (function_builder::append_nf): New function.
40935         * config/riscv/riscv-vector-builtins.def (vfloat32m1x2_t):
40936         Change ptr from double into float.
40937         (vfloat32m1x3_t): Ditto.
40938         (vfloat32m1x4_t): Ditto.
40939         (vfloat32m1x5_t): Ditto.
40940         (vfloat32m1x6_t): Ditto.
40941         (vfloat32m1x7_t): Ditto.
40942         (vfloat32m1x8_t): Ditto.
40943         (vfloat32m2x2_t): Ditto.
40944         (vfloat32m2x3_t): Ditto.
40945         (vfloat32m2x4_t): Ditto.
40946         (vfloat32m4x2_t): Ditto.
40947         * config/riscv/riscv-vector-builtins.h: Add segment intrinsics.
40948         * config/riscv/riscv-vsetvl.cc (fault_first_load_p): Adapt for
40949         segment ff load.
40950         * config/riscv/riscv.md: Add segment instructions.
40951         * config/riscv/vector-iterators.md: Support segment intrinsics.
40952         * config/riscv/vector.md (@pred_unit_strided_load<mode>): New
40953         pattern.
40954         (@pred_unit_strided_store<mode>): Ditto.
40955         (@pred_strided_load<mode>): Ditto.
40956         (@pred_strided_store<mode>): Ditto.
40957         (@pred_fault_load<mode>): Ditto.
40958         (@pred_indexed_<order>load<V1T:mode><V1I:mode>): Ditto.
40959         (@pred_indexed_<order>load<V2T:mode><V2I:mode>): Ditto.
40960         (@pred_indexed_<order>load<V4T:mode><V4I:mode>): Ditto.
40961         (@pred_indexed_<order>load<V8T:mode><V8I:mode>): Ditto.
40962         (@pred_indexed_<order>load<V16T:mode><V16I:mode>): Ditto.
40963         (@pred_indexed_<order>load<V32T:mode><V32I:mode>): Ditto.
40964         (@pred_indexed_<order>load<V64T:mode><V64I:mode>): Ditto.
40965         (@pred_indexed_<order>store<V1T:mode><V1I:mode>): Ditto.
40966         (@pred_indexed_<order>store<V2T:mode><V2I:mode>): Ditto.
40967         (@pred_indexed_<order>store<V4T:mode><V4I:mode>): Ditto.
40968         (@pred_indexed_<order>store<V8T:mode><V8I:mode>): Ditto.
40969         (@pred_indexed_<order>store<V16T:mode><V16I:mode>): Ditto.
40970         (@pred_indexed_<order>store<V32T:mode><V32I:mode>): Ditto.
40971         (@pred_indexed_<order>store<V64T:mode><V64I:mode>): Ditto.
40973 2023-05-03  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
40975         * config/riscv/genrvv-type-indexer.cc (valid_type): Adapt for
40976         tuple type support.
40977         (inttype): Ditto.
40978         (floattype): Ditto.
40979         (main): Ditto.
40980         * config/riscv/riscv-vector-builtins-bases.cc: Ditto.
40981         * config/riscv/riscv-vector-builtins-functions.def (vset): Add
40982         tuple type vset.
40983         (vget): Add tuple type vget.
40984         * config/riscv/riscv-vector-builtins-types.def
40985         (DEF_RVV_TUPLE_OPS): New macro.
40986         (vint8mf8x2_t): Ditto.
40987         (vuint8mf8x2_t): Ditto.
40988         (vint8mf8x3_t): Ditto.
40989         (vuint8mf8x3_t): Ditto.
40990         (vint8mf8x4_t): Ditto.
40991         (vuint8mf8x4_t): Ditto.
40992         (vint8mf8x5_t): Ditto.
40993         (vuint8mf8x5_t): Ditto.
40994         (vint8mf8x6_t): Ditto.
40995         (vuint8mf8x6_t): Ditto.
40996         (vint8mf8x7_t): Ditto.
40997         (vuint8mf8x7_t): Ditto.
40998         (vint8mf8x8_t): Ditto.
40999         (vuint8mf8x8_t): Ditto.
41000         (vint8mf4x2_t): Ditto.
41001         (vuint8mf4x2_t): Ditto.
41002         (vint8mf4x3_t): Ditto.
41003         (vuint8mf4x3_t): Ditto.
41004         (vint8mf4x4_t): Ditto.
41005         (vuint8mf4x4_t): Ditto.
41006         (vint8mf4x5_t): Ditto.
41007         (vuint8mf4x5_t): Ditto.
41008         (vint8mf4x6_t): Ditto.
41009         (vuint8mf4x6_t): Ditto.
41010         (vint8mf4x7_t): Ditto.
41011         (vuint8mf4x7_t): Ditto.
41012         (vint8mf4x8_t): Ditto.
41013         (vuint8mf4x8_t): Ditto.
41014         (vint8mf2x2_t): Ditto.
41015         (vuint8mf2x2_t): Ditto.
41016         (vint8mf2x3_t): Ditto.
41017         (vuint8mf2x3_t): Ditto.
41018         (vint8mf2x4_t): Ditto.
41019         (vuint8mf2x4_t): Ditto.
41020         (vint8mf2x5_t): Ditto.
41021         (vuint8mf2x5_t): Ditto.
41022         (vint8mf2x6_t): Ditto.
41023         (vuint8mf2x6_t): Ditto.
41024         (vint8mf2x7_t): Ditto.
41025         (vuint8mf2x7_t): Ditto.
41026         (vint8mf2x8_t): Ditto.
41027         (vuint8mf2x8_t): Ditto.
41028         (vint8m1x2_t): Ditto.
41029         (vuint8m1x2_t): Ditto.
41030         (vint8m1x3_t): Ditto.
41031         (vuint8m1x3_t): Ditto.
41032         (vint8m1x4_t): Ditto.
41033         (vuint8m1x4_t): Ditto.
41034         (vint8m1x5_t): Ditto.
41035         (vuint8m1x5_t): Ditto.
41036         (vint8m1x6_t): Ditto.
41037         (vuint8m1x6_t): Ditto.
41038         (vint8m1x7_t): Ditto.
41039         (vuint8m1x7_t): Ditto.
41040         (vint8m1x8_t): Ditto.
41041         (vuint8m1x8_t): Ditto.
41042         (vint8m2x2_t): Ditto.
41043         (vuint8m2x2_t): Ditto.
41044         (vint8m2x3_t): Ditto.
41045         (vuint8m2x3_t): Ditto.
41046         (vint8m2x4_t): Ditto.
41047         (vuint8m2x4_t): Ditto.
41048         (vint8m4x2_t): Ditto.
41049         (vuint8m4x2_t): Ditto.
41050         (vint16mf4x2_t): Ditto.
41051         (vuint16mf4x2_t): Ditto.
41052         (vint16mf4x3_t): Ditto.
41053         (vuint16mf4x3_t): Ditto.
41054         (vint16mf4x4_t): Ditto.
41055         (vuint16mf4x4_t): Ditto.
41056         (vint16mf4x5_t): Ditto.
41057         (vuint16mf4x5_t): Ditto.
41058         (vint16mf4x6_t): Ditto.
41059         (vuint16mf4x6_t): Ditto.
41060         (vint16mf4x7_t): Ditto.
41061         (vuint16mf4x7_t): Ditto.
41062         (vint16mf4x8_t): Ditto.
41063         (vuint16mf4x8_t): Ditto.
41064         (vint16mf2x2_t): Ditto.
41065         (vuint16mf2x2_t): Ditto.
41066         (vint16mf2x3_t): Ditto.
41067         (vuint16mf2x3_t): Ditto.
41068         (vint16mf2x4_t): Ditto.
41069         (vuint16mf2x4_t): Ditto.
41070         (vint16mf2x5_t): Ditto.
41071         (vuint16mf2x5_t): Ditto.
41072         (vint16mf2x6_t): Ditto.
41073         (vuint16mf2x6_t): Ditto.
41074         (vint16mf2x7_t): Ditto.
41075         (vuint16mf2x7_t): Ditto.
41076         (vint16mf2x8_t): Ditto.
41077         (vuint16mf2x8_t): Ditto.
41078         (vint16m1x2_t): Ditto.
41079         (vuint16m1x2_t): Ditto.
41080         (vint16m1x3_t): Ditto.
41081         (vuint16m1x3_t): Ditto.
41082         (vint16m1x4_t): Ditto.
41083         (vuint16m1x4_t): Ditto.
41084         (vint16m1x5_t): Ditto.
41085         (vuint16m1x5_t): Ditto.
41086         (vint16m1x6_t): Ditto.
41087         (vuint16m1x6_t): Ditto.
41088         (vint16m1x7_t): Ditto.
41089         (vuint16m1x7_t): Ditto.
41090         (vint16m1x8_t): Ditto.
41091         (vuint16m1x8_t): Ditto.
41092         (vint16m2x2_t): Ditto.
41093         (vuint16m2x2_t): Ditto.
41094         (vint16m2x3_t): Ditto.
41095         (vuint16m2x3_t): Ditto.
41096         (vint16m2x4_t): Ditto.
41097         (vuint16m2x4_t): Ditto.
41098         (vint16m4x2_t): Ditto.
41099         (vuint16m4x2_t): Ditto.
41100         (vint32mf2x2_t): Ditto.
41101         (vuint32mf2x2_t): Ditto.
41102         (vint32mf2x3_t): Ditto.
41103         (vuint32mf2x3_t): Ditto.
41104         (vint32mf2x4_t): Ditto.
41105         (vuint32mf2x4_t): Ditto.
41106         (vint32mf2x5_t): Ditto.
41107         (vuint32mf2x5_t): Ditto.
41108         (vint32mf2x6_t): Ditto.
41109         (vuint32mf2x6_t): Ditto.
41110         (vint32mf2x7_t): Ditto.
41111         (vuint32mf2x7_t): Ditto.
41112         (vint32mf2x8_t): Ditto.
41113         (vuint32mf2x8_t): Ditto.
41114         (vint32m1x2_t): Ditto.
41115         (vuint32m1x2_t): Ditto.
41116         (vint32m1x3_t): Ditto.
41117         (vuint32m1x3_t): Ditto.
41118         (vint32m1x4_t): Ditto.
41119         (vuint32m1x4_t): Ditto.
41120         (vint32m1x5_t): Ditto.
41121         (vuint32m1x5_t): Ditto.
41122         (vint32m1x6_t): Ditto.
41123         (vuint32m1x6_t): Ditto.
41124         (vint32m1x7_t): Ditto.
41125         (vuint32m1x7_t): Ditto.
41126         (vint32m1x8_t): Ditto.
41127         (vuint32m1x8_t): Ditto.
41128         (vint32m2x2_t): Ditto.
41129         (vuint32m2x2_t): Ditto.
41130         (vint32m2x3_t): Ditto.
41131         (vuint32m2x3_t): Ditto.
41132         (vint32m2x4_t): Ditto.
41133         (vuint32m2x4_t): Ditto.
41134         (vint32m4x2_t): Ditto.
41135         (vuint32m4x2_t): Ditto.
41136         (vint64m1x2_t): Ditto.
41137         (vuint64m1x2_t): Ditto.
41138         (vint64m1x3_t): Ditto.
41139         (vuint64m1x3_t): Ditto.
41140         (vint64m1x4_t): Ditto.
41141         (vuint64m1x4_t): Ditto.
41142         (vint64m1x5_t): Ditto.
41143         (vuint64m1x5_t): Ditto.
41144         (vint64m1x6_t): Ditto.
41145         (vuint64m1x6_t): Ditto.
41146         (vint64m1x7_t): Ditto.
41147         (vuint64m1x7_t): Ditto.
41148         (vint64m1x8_t): Ditto.
41149         (vuint64m1x8_t): Ditto.
41150         (vint64m2x2_t): Ditto.
41151         (vuint64m2x2_t): Ditto.
41152         (vint64m2x3_t): Ditto.
41153         (vuint64m2x3_t): Ditto.
41154         (vint64m2x4_t): Ditto.
41155         (vuint64m2x4_t): Ditto.
41156         (vint64m4x2_t): Ditto.
41157         (vuint64m4x2_t): Ditto.
41158         (vfloat32mf2x2_t): Ditto.
41159         (vfloat32mf2x3_t): Ditto.
41160         (vfloat32mf2x4_t): Ditto.
41161         (vfloat32mf2x5_t): Ditto.
41162         (vfloat32mf2x6_t): Ditto.
41163         (vfloat32mf2x7_t): Ditto.
41164         (vfloat32mf2x8_t): Ditto.
41165         (vfloat32m1x2_t): Ditto.
41166         (vfloat32m1x3_t): Ditto.
41167         (vfloat32m1x4_t): Ditto.
41168         (vfloat32m1x5_t): Ditto.
41169         (vfloat32m1x6_t): Ditto.
41170         (vfloat32m1x7_t): Ditto.
41171         (vfloat32m1x8_t): Ditto.
41172         (vfloat32m2x2_t): Ditto.
41173         (vfloat32m2x3_t): Ditto.
41174         (vfloat32m2x4_t): Ditto.
41175         (vfloat32m4x2_t): Ditto.
41176         (vfloat64m1x2_t): Ditto.
41177         (vfloat64m1x3_t): Ditto.
41178         (vfloat64m1x4_t): Ditto.
41179         (vfloat64m1x5_t): Ditto.
41180         (vfloat64m1x6_t): Ditto.
41181         (vfloat64m1x7_t): Ditto.
41182         (vfloat64m1x8_t): Ditto.
41183         (vfloat64m2x2_t): Ditto.
41184         (vfloat64m2x3_t): Ditto.
41185         (vfloat64m2x4_t): Ditto.
41186         (vfloat64m4x2_t): Ditto.
41187         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TUPLE_OPS):
41188         Ditto.
41189         (DEF_RVV_TYPE_INDEX): Ditto.
41190         (rvv_arg_type_info::get_tuple_subpart_type): New function.
41191         (DEF_RVV_TUPLE_TYPE): New macro.
41192         * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE_INDEX):
41193         Adapt for tuple vget/vset support.
41194         (vint8mf4_t): Ditto.
41195         (vuint8mf4_t): Ditto.
41196         (vint8mf2_t): Ditto.
41197         (vuint8mf2_t): Ditto.
41198         (vint8m1_t): Ditto.
41199         (vuint8m1_t): Ditto.
41200         (vint8m2_t): Ditto.
41201         (vuint8m2_t): Ditto.
41202         (vint8m4_t): Ditto.
41203         (vuint8m4_t): Ditto.
41204         (vint8m8_t): Ditto.
41205         (vuint8m8_t): Ditto.
41206         (vint16mf4_t): Ditto.
41207         (vuint16mf4_t): Ditto.
41208         (vint16mf2_t): Ditto.
41209         (vuint16mf2_t): Ditto.
41210         (vint16m1_t): Ditto.
41211         (vuint16m1_t): Ditto.
41212         (vint16m2_t): Ditto.
41213         (vuint16m2_t): Ditto.
41214         (vint16m4_t): Ditto.
41215         (vuint16m4_t): Ditto.
41216         (vint16m8_t): Ditto.
41217         (vuint16m8_t): Ditto.
41218         (vint32mf2_t): Ditto.
41219         (vuint32mf2_t): Ditto.
41220         (vint32m1_t): Ditto.
41221         (vuint32m1_t): Ditto.
41222         (vint32m2_t): Ditto.
41223         (vuint32m2_t): Ditto.
41224         (vint32m4_t): Ditto.
41225         (vuint32m4_t): Ditto.
41226         (vint32m8_t): Ditto.
41227         (vuint32m8_t): Ditto.
41228         (vint64m1_t): Ditto.
41229         (vuint64m1_t): Ditto.
41230         (vint64m2_t): Ditto.
41231         (vuint64m2_t): Ditto.
41232         (vint64m4_t): Ditto.
41233         (vuint64m4_t): Ditto.
41234         (vint64m8_t): Ditto.
41235         (vuint64m8_t): Ditto.
41236         (vfloat32mf2_t): Ditto.
41237         (vfloat32m1_t): Ditto.
41238         (vfloat32m2_t): Ditto.
41239         (vfloat32m4_t): Ditto.
41240         (vfloat32m8_t): Ditto.
41241         (vfloat64m1_t): Ditto.
41242         (vfloat64m2_t): Ditto.
41243         (vfloat64m4_t): Ditto.
41244         (vfloat64m8_t): Ditto.
41245         (tuple_subpart): Add tuple subpart base type.
41246         * config/riscv/riscv-vector-builtins.h (struct
41247         rvv_arg_type_info): Ditto.
41248         (tuple_type_field): New function.
41250 2023-05-03  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
41252         * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): New macro.
41253         (RVV_TUPLE_PARTIAL_MODES): Ditto.
41254         * config/riscv/riscv-protos.h (riscv_v_ext_tuple_mode_p): New
41255         function.
41256         (get_nf): Ditto.
41257         (get_subpart_mode): Ditto.
41258         (get_tuple_mode): Ditto.
41259         (expand_tuple_move): Ditto.
41260         * config/riscv/riscv-v.cc (ENTRY): New macro.
41261         (TUPLE_ENTRY): Ditto.
41262         (get_nf): New function.
41263         (get_subpart_mode): Ditto.
41264         (get_tuple_mode): Ditto.
41265         (expand_tuple_move): Ditto.
41266         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TUPLE_TYPE):
41267         New macro.
41268         (register_tuple_type): New function
41269         * config/riscv/riscv-vector-builtins.def (DEF_RVV_TUPLE_TYPE):
41270         New macro.
41271         (vint8mf8x2_t): New macro.
41272         (vuint8mf8x2_t): Ditto.
41273         (vint8mf8x3_t): Ditto.
41274         (vuint8mf8x3_t): Ditto.
41275         (vint8mf8x4_t): Ditto.
41276         (vuint8mf8x4_t): Ditto.
41277         (vint8mf8x5_t): Ditto.
41278         (vuint8mf8x5_t): Ditto.
41279         (vint8mf8x6_t): Ditto.
41280         (vuint8mf8x6_t): Ditto.
41281         (vint8mf8x7_t): Ditto.
41282         (vuint8mf8x7_t): Ditto.
41283         (vint8mf8x8_t): Ditto.
41284         (vuint8mf8x8_t): Ditto.
41285         (vint8mf4x2_t): Ditto.
41286         (vuint8mf4x2_t): Ditto.
41287         (vint8mf4x3_t): Ditto.
41288         (vuint8mf4x3_t): Ditto.
41289         (vint8mf4x4_t): Ditto.
41290         (vuint8mf4x4_t): Ditto.
41291         (vint8mf4x5_t): Ditto.
41292         (vuint8mf4x5_t): Ditto.
41293         (vint8mf4x6_t): Ditto.
41294         (vuint8mf4x6_t): Ditto.
41295         (vint8mf4x7_t): Ditto.
41296         (vuint8mf4x7_t): Ditto.
41297         (vint8mf4x8_t): Ditto.
41298         (vuint8mf4x8_t): Ditto.
41299         (vint8mf2x2_t): Ditto.
41300         (vuint8mf2x2_t): Ditto.
41301         (vint8mf2x3_t): Ditto.
41302         (vuint8mf2x3_t): Ditto.
41303         (vint8mf2x4_t): Ditto.
41304         (vuint8mf2x4_t): Ditto.
41305         (vint8mf2x5_t): Ditto.
41306         (vuint8mf2x5_t): Ditto.
41307         (vint8mf2x6_t): Ditto.
41308         (vuint8mf2x6_t): Ditto.
41309         (vint8mf2x7_t): Ditto.
41310         (vuint8mf2x7_t): Ditto.
41311         (vint8mf2x8_t): Ditto.
41312         (vuint8mf2x8_t): Ditto.
41313         (vint8m1x2_t): Ditto.
41314         (vuint8m1x2_t): Ditto.
41315         (vint8m1x3_t): Ditto.
41316         (vuint8m1x3_t): Ditto.
41317         (vint8m1x4_t): Ditto.
41318         (vuint8m1x4_t): Ditto.
41319         (vint8m1x5_t): Ditto.
41320         (vuint8m1x5_t): Ditto.
41321         (vint8m1x6_t): Ditto.
41322         (vuint8m1x6_t): Ditto.
41323         (vint8m1x7_t): Ditto.
41324         (vuint8m1x7_t): Ditto.
41325         (vint8m1x8_t): Ditto.
41326         (vuint8m1x8_t): Ditto.
41327         (vint8m2x2_t): Ditto.
41328         (vuint8m2x2_t): Ditto.
41329         (vint8m2x3_t): Ditto.
41330         (vuint8m2x3_t): Ditto.
41331         (vint8m2x4_t): Ditto.
41332         (vuint8m2x4_t): Ditto.
41333         (vint8m4x2_t): Ditto.
41334         (vuint8m4x2_t): Ditto.
41335         (vint16mf4x2_t): Ditto.
41336         (vuint16mf4x2_t): Ditto.
41337         (vint16mf4x3_t): Ditto.
41338         (vuint16mf4x3_t): Ditto.
41339         (vint16mf4x4_t): Ditto.
41340         (vuint16mf4x4_t): Ditto.
41341         (vint16mf4x5_t): Ditto.
41342         (vuint16mf4x5_t): Ditto.
41343         (vint16mf4x6_t): Ditto.
41344         (vuint16mf4x6_t): Ditto.
41345         (vint16mf4x7_t): Ditto.
41346         (vuint16mf4x7_t): Ditto.
41347         (vint16mf4x8_t): Ditto.
41348         (vuint16mf4x8_t): Ditto.
41349         (vint16mf2x2_t): Ditto.
41350         (vuint16mf2x2_t): Ditto.
41351         (vint16mf2x3_t): Ditto.
41352         (vuint16mf2x3_t): Ditto.
41353         (vint16mf2x4_t): Ditto.
41354         (vuint16mf2x4_t): Ditto.
41355         (vint16mf2x5_t): Ditto.
41356         (vuint16mf2x5_t): Ditto.
41357         (vint16mf2x6_t): Ditto.
41358         (vuint16mf2x6_t): Ditto.
41359         (vint16mf2x7_t): Ditto.
41360         (vuint16mf2x7_t): Ditto.
41361         (vint16mf2x8_t): Ditto.
41362         (vuint16mf2x8_t): Ditto.
41363         (vint16m1x2_t): Ditto.
41364         (vuint16m1x2_t): Ditto.
41365         (vint16m1x3_t): Ditto.
41366         (vuint16m1x3_t): Ditto.
41367         (vint16m1x4_t): Ditto.
41368         (vuint16m1x4_t): Ditto.
41369         (vint16m1x5_t): Ditto.
41370         (vuint16m1x5_t): Ditto.
41371         (vint16m1x6_t): Ditto.
41372         (vuint16m1x6_t): Ditto.
41373         (vint16m1x7_t): Ditto.
41374         (vuint16m1x7_t): Ditto.
41375         (vint16m1x8_t): Ditto.
41376         (vuint16m1x8_t): Ditto.
41377         (vint16m2x2_t): Ditto.
41378         (vuint16m2x2_t): Ditto.
41379         (vint16m2x3_t): Ditto.
41380         (vuint16m2x3_t): Ditto.
41381         (vint16m2x4_t): Ditto.
41382         (vuint16m2x4_t): Ditto.
41383         (vint16m4x2_t): Ditto.
41384         (vuint16m4x2_t): Ditto.
41385         (vint32mf2x2_t): Ditto.
41386         (vuint32mf2x2_t): Ditto.
41387         (vint32mf2x3_t): Ditto.
41388         (vuint32mf2x3_t): Ditto.
41389         (vint32mf2x4_t): Ditto.
41390         (vuint32mf2x4_t): Ditto.
41391         (vint32mf2x5_t): Ditto.
41392         (vuint32mf2x5_t): Ditto.
41393         (vint32mf2x6_t): Ditto.
41394         (vuint32mf2x6_t): Ditto.
41395         (vint32mf2x7_t): Ditto.
41396         (vuint32mf2x7_t): Ditto.
41397         (vint32mf2x8_t): Ditto.
41398         (vuint32mf2x8_t): Ditto.
41399         (vint32m1x2_t): Ditto.
41400         (vuint32m1x2_t): Ditto.
41401         (vint32m1x3_t): Ditto.
41402         (vuint32m1x3_t): Ditto.
41403         (vint32m1x4_t): Ditto.
41404         (vuint32m1x4_t): Ditto.
41405         (vint32m1x5_t): Ditto.
41406         (vuint32m1x5_t): Ditto.
41407         (vint32m1x6_t): Ditto.
41408         (vuint32m1x6_t): Ditto.
41409         (vint32m1x7_t): Ditto.
41410         (vuint32m1x7_t): Ditto.
41411         (vint32m1x8_t): Ditto.
41412         (vuint32m1x8_t): Ditto.
41413         (vint32m2x2_t): Ditto.
41414         (vuint32m2x2_t): Ditto.
41415         (vint32m2x3_t): Ditto.
41416         (vuint32m2x3_t): Ditto.
41417         (vint32m2x4_t): Ditto.
41418         (vuint32m2x4_t): Ditto.
41419         (vint32m4x2_t): Ditto.
41420         (vuint32m4x2_t): Ditto.
41421         (vint64m1x2_t): Ditto.
41422         (vuint64m1x2_t): Ditto.
41423         (vint64m1x3_t): Ditto.
41424         (vuint64m1x3_t): Ditto.
41425         (vint64m1x4_t): Ditto.
41426         (vuint64m1x4_t): Ditto.
41427         (vint64m1x5_t): Ditto.
41428         (vuint64m1x5_t): Ditto.
41429         (vint64m1x6_t): Ditto.
41430         (vuint64m1x6_t): Ditto.
41431         (vint64m1x7_t): Ditto.
41432         (vuint64m1x7_t): Ditto.
41433         (vint64m1x8_t): Ditto.
41434         (vuint64m1x8_t): Ditto.
41435         (vint64m2x2_t): Ditto.
41436         (vuint64m2x2_t): Ditto.
41437         (vint64m2x3_t): Ditto.
41438         (vuint64m2x3_t): Ditto.
41439         (vint64m2x4_t): Ditto.
41440         (vuint64m2x4_t): Ditto.
41441         (vint64m4x2_t): Ditto.
41442         (vuint64m4x2_t): Ditto.
41443         (vfloat32mf2x2_t): Ditto.
41444         (vfloat32mf2x3_t): Ditto.
41445         (vfloat32mf2x4_t): Ditto.
41446         (vfloat32mf2x5_t): Ditto.
41447         (vfloat32mf2x6_t): Ditto.
41448         (vfloat32mf2x7_t): Ditto.
41449         (vfloat32mf2x8_t): Ditto.
41450         (vfloat32m1x2_t): Ditto.
41451         (vfloat32m1x3_t): Ditto.
41452         (vfloat32m1x4_t): Ditto.
41453         (vfloat32m1x5_t): Ditto.
41454         (vfloat32m1x6_t): Ditto.
41455         (vfloat32m1x7_t): Ditto.
41456         (vfloat32m1x8_t): Ditto.
41457         (vfloat32m2x2_t): Ditto.
41458         (vfloat32m2x3_t): Ditto.
41459         (vfloat32m2x4_t): Ditto.
41460         (vfloat32m4x2_t): Ditto.
41461         (vfloat64m1x2_t): Ditto.
41462         (vfloat64m1x3_t): Ditto.
41463         (vfloat64m1x4_t): Ditto.
41464         (vfloat64m1x5_t): Ditto.
41465         (vfloat64m1x6_t): Ditto.
41466         (vfloat64m1x7_t): Ditto.
41467         (vfloat64m1x8_t): Ditto.
41468         (vfloat64m2x2_t): Ditto.
41469         (vfloat64m2x3_t): Ditto.
41470         (vfloat64m2x4_t): Ditto.
41471         (vfloat64m4x2_t): Ditto.
41472         * config/riscv/riscv-vector-builtins.h (DEF_RVV_TUPLE_TYPE):
41473         Ditto.
41474         * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): Ditto.
41475         * config/riscv/riscv.cc (riscv_v_ext_tuple_mode_p): New
41476         function.
41477         (TUPLE_ENTRY): Ditto.
41478         (riscv_v_ext_mode_p): New function.
41479         (riscv_v_adjust_nunits): Add tuple mode adjustment.
41480         (riscv_classify_address): Ditto.
41481         (riscv_binary_cost): Ditto.
41482         (riscv_rtx_costs): Ditto.
41483         (riscv_secondary_memory_needed): Ditto.
41484         (riscv_hard_regno_nregs): Ditto.
41485         (riscv_hard_regno_mode_ok): Ditto.
41486         (riscv_vector_mode_supported_p): Ditto.
41487         (riscv_regmode_natural_size): Ditto.
41488         (riscv_array_mode): New function.
41489         (TARGET_ARRAY_MODE): New target hook.
41490         * config/riscv/riscv.md: Add tuple modes.
41491         * config/riscv/vector-iterators.md: Ditto.
41492         * config/riscv/vector.md (mov<mode>): Add tuple modes data
41493         movement.
41494         (*mov<VT:mode>_<P:mode>): Ditto.
41496 2023-05-03  Richard Biener  <rguenther@suse.de>
41498         * cse.cc (cse_insn): Track an equivalence to the destination
41499         separately and delay using src_related for it.
41501 2023-05-03  Richard Biener  <rguenther@suse.de>
41503         * cse.cc (HASH): Turn into inline function and mix
41504         in another HASH_SHIFT bits.
41505         (SAFE_HASH): Likewise.
41507 2023-05-03  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
41509         PR target/99195
41510         * config/aarch64/aarch64-simd.md (aarch64_<sur>h<addsub><mode>): Rename to...
41511         (aarch64_<sur>h<addsub><mode><vczle><vczbe>): ... This.
41513 2023-05-03  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
41515         PR target/99195
41516         * config/aarch64/aarch64-simd.md (add<mode>3): Rename to...
41517         (add<mode>3<vczle><vczbe>): ... This.
41518         (sub<mode>3): Rename to...
41519         (sub<mode>3<vczle><vczbe>): ... This.
41520         (mul<mode>3): Rename to...
41521         (mul<mode>3<vczle><vczbe>): ... This.
41522         (*div<mode>3): Rename to...
41523         (*div<mode>3<vczle><vczbe>): ... This.
41524         (neg<mode>2): Rename to...
41525         (neg<mode>2<vczle><vczbe>): ... This.
41526         (abs<mode>2): Rename to...
41527         (abs<mode>2<vczle><vczbe>): ... This.
41528         (<frint_pattern><mode>2): Rename to...
41529         (<frint_pattern><mode>2<vczle><vczbe>): ... This.
41530         (<fmaxmin><mode>3): Rename to...
41531         (<fmaxmin><mode>3<vczle><vczbe>): ... This.
41532         (*sqrt<mode>2): Rename to...
41533         (*sqrt<mode>2<vczle><vczbe>): ... This.
41535 2023-05-03  Kito Cheng  <kito.cheng@sifive.com>
41537         * doc/md.texi (RISC-V): Add vr, vm, vd constarint.
41539 2023-05-03  Martin Liska  <mliska@suse.cz>
41541         PR tree-optimization/109693
41542         * value-range-storage.cc (vrange_allocator::vrange_allocator):
41543         Remove unused field.
41544         * value-range-storage.h: Likewise.
41546 2023-05-02  Andrew Pinski  <apinski@marvell.com>
41548         * tree-ssa-phiopt.cc (move_stmt): New function.
41549         (match_simplify_replacement): Use move_stmt instead
41550         of the inlined version.
41552 2023-05-02  Andrew Pinski  <apinski@marvell.com>
41554         * match.pd (a != 0 ? CLRSB(a) : CST -> CLRSB(a)): New
41555         pattern.
41557 2023-05-02  Andrew Pinski  <apinski@marvell.com>
41559         PR tree-optimization/109702
41560         * match.pd: Fix "a != 0 ? FUNC(a) : CST" patterns
41561         for FUNC of POPCOUNT BSWAP FFS PARITY CLZ and CTZ.
41563 2023-05-02  Andrew Pinski  <apinski@marvell.com>
41565         PR target/109657
41566         * config/aarch64/aarch64.md (*cmov<mode>_insn_m1): New
41567         insn_and_split pattern.
41569 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
41571         * config/riscv/sync.md (atomic_load<mode>): Implement atomic
41572         load mapping.
41574 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
41576         * config/riscv/sync.md (mem_thread_fence_1): Change fence
41577         depending on the given memory model.
41579 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
41581         * config/riscv/riscv-protos.h (riscv_union_memmodels): Expose
41582         riscv_union_memmodels function to sync.md.
41583         * config/riscv/riscv.cc (riscv_union_memmodels): Add function to
41584         get the union of two memmodels in sync.md.
41585         (riscv_print_operand): Add %I and %J flags that output the
41586         optimal LR/SC flag bits for a given memory model.
41587         * config/riscv/sync.md: Remove static .aqrl bits on LR op/.rl
41588         bits on SC op and replace with optimized %I, %J flags.
41590 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
41592         * config/riscv/riscv.cc
41593         (riscv_memmodel_needs_amo_release): Change function name.
41594         (riscv_print_operand): Remove unneeded %F case.
41595         * config/riscv/sync.md: Remove unneeded fences.
41597 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
41599         PR target/89835
41600         * config/riscv/sync.md (atomic_store<mode>): Use simple store
41601         instruction in combination with fence(s).
41603 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
41605         * config/riscv/riscv.cc (riscv_print_operand): Change behavior
41606         of %A to include release bits.
41608 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
41610         * config/riscv/sync.md (atomic_cas_value_strong<mode>): Change
41611         FENCE/LR.aq/SC.aq into sequentially consistent LR.aqrl/SC.rl
41612         pair.
41614 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
41616         * config/riscv/sync.md: Change LR.aq/SC.rl pairs into
41617         sequentially consistent LR.aqrl/SC.rl pairs.
41619 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
41621         * config/riscv/riscv.cc: Remove MEMMODEL_SYNC_* cases and
41622         sanitize memmodel input with memmodel_base.
41624 2023-05-02  Yanzhang Wang  <yanzhang.wang@intel.com>
41625             Pan Li  <pan2.li@intel.com>
41627         PR target/109617
41628         * config/riscv/vector-iterators.md: Support VNx2HI and VNX4DI when MIN_VLEN >= 128.
41630 2023-05-02  Romain Naour  <romain.naour@gmail.com>
41632         * config/riscv/genrvv-type-indexer.cc: Use log2 from the C header, without
41633         the namespace.
41635 2023-05-02  Martin Liska  <mliska@suse.cz>
41637         * doc/invoke.texi: Update documentation based on param.opt file.
41639 2023-05-02  Richard Biener  <rguenther@suse.de>
41641         PR tree-optimization/109672
41642         * tree-vect-stmts.cc (vectorizable_operation): For plus,
41643         minus and negate always check the vector mode is word mode.
41645 2023-05-01  Andrew Pinski  <apinski@marvell.com>
41647         * tree-ssa-phiopt.cc: Update comment about
41648         how the transformation are implemented.
41650 2023-05-01  Jeff Law  <jlaw@ventanamicro>
41652         * config/stormy16/stormy16.cc (TARGET_LRA_P): Remove defintion.
41654 2023-05-01  Jeff Law  <jlaw@ventanamicro>
41656         * config/cris/cris.cc (TARGET_LRA_P): Remove.
41657         * config/epiphany/epiphany.cc (TARGET_LRA_P): Remove.
41658         * config/iq2000/iq2000.cc (TARGET_LRA_P): Remove.
41659         * config/m32r/m32r.cc (TARGET_LRA_P): Remove.
41660         * config/microblaze/microblaze.cc (TARGET_LRA_P): Remove.
41661         * config/mmix/mmix.cc (TARGET_LRA_P): Remove.
41663 2023-05-01  Rasmus Villemoes  <rasmus.villemoes@prevas.dk>
41665         * print-tree.h (PRINT_DECL_REMAP_DEBUG): New flag.
41666         * print-tree.cc (print_decl_identifier): Implement it.
41667         * toplev.cc (output_stack_usage_1): Use it.
41669 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
41671         * value-range.h (class int_range): Remove gt_ggc_mx and gt_pch_nx
41672         friends.
41674 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
41676         * value-range.h (irange::set_nonzero): Inline.
41678 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
41680         * gimple-range-op.cc (cfn_ffs::fold_range): Use the correct
41681         precision.
41682         * gimple-ssa-warn-alloca.cc (alloca_call_type): Use <2> for
41683         invalid_range, as it is an inverse range.
41684         * tree-vrp.cc (find_case_label_range): Avoid trees.
41685         * value-range.cc (irange::irange_set): Delete.
41686         (irange::irange_set_1bit_anti_range): Delete.
41687         (irange::irange_set_anti_range): Delete.
41688         (irange::set): Cleanup.
41689         * value-range.h (class irange): Remove irange_set,
41690         irange_set_anti_range, irange_set_1bit_anti_range.
41691         (irange::set_undefined): Remove set to m_type.
41693 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
41695         * range-op.cc (update_known_bitmask): Adjust for irange containing
41696         wide_ints internally.
41697         * tree-ssanames.cc (set_nonzero_bits): Same.
41698         * tree-ssanames.h (set_nonzero_bits): Same.
41699         * value-range-storage.cc (irange_storage::set_irange): Same.
41700         (irange_storage::get_irange): Same.
41701         * value-range.cc (irange::operator=): Same.
41702         (irange::irange_set): Same.
41703         (irange::irange_set_1bit_anti_range): Same.
41704         (irange::irange_set_anti_range): Same.
41705         (irange::set): Same.
41706         (irange::verify_range): Same.
41707         (irange::contains_p): Same.
41708         (irange::irange_single_pair_union): Same.
41709         (irange::union_): Same.
41710         (irange::irange_contains_p): Same.
41711         (irange::intersect): Same.
41712         (irange::invert): Same.
41713         (irange::set_range_from_nonzero_bits): Same.
41714         (irange::set_nonzero_bits): Same.
41715         (mask_to_wi): Same.
41716         (irange::intersect_nonzero_bits): Same.
41717         (irange::union_nonzero_bits): Same.
41718         (gt_ggc_mx): Same.
41719         (gt_pch_nx): Same.
41720         (tree_range): Same.
41721         (range_tests_strict_enum): Same.
41722         (range_tests_misc): Same.
41723         (range_tests_nonzero_bits): Same.
41724         * value-range.h (irange::type): Same.
41725         (irange::varying_compatible_p): Same.
41726         (irange::irange): Same.
41727         (int_range::int_range): Same.
41728         (irange::set_undefined): Same.
41729         (irange::set_varying): Same.
41730         (irange::lower_bound): Same.
41731         (irange::upper_bound): Same.
41733 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
41735         * gimple-range-fold.cc (tree_lower_bound): Delete.
41736         (tree_upper_bound): Delete.
41737         (vrp_val_max): Delete.
41738         (vrp_val_min): Delete.
41739         (fold_using_range::range_of_ssa_name_with_loop_info): Call
41740         range_of_var_in_loop.
41741         * vr-values.cc (valid_value_p): Delete.
41742         (fix_overflow): Delete.
41743         (get_scev_info): New.
41744         (bounds_of_var_in_loop): Refactor into...
41745         (induction_variable_may_overflow_p): ...this,
41746         (range_from_loop_direction): ...and this,
41747         (range_of_var_in_loop): ...and this.
41748         * vr-values.h (bounds_of_var_in_loop): Delete.
41749         (range_of_var_in_loop): New.
41751 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
41753         * gimple-range-fold.cc (adjust_pointer_diff_expr): Rewrite with
41754         irange_val*.
41755         (vrp_val_max): New.
41756         (vrp_val_min): New.
41757         * gimple-range-op.cc (cfn_strlen::fold_range): Use irange_val_*.
41758         * range-op.cc (max_limit): Same.
41759         (min_limit): Same.
41760         (plus_minus_ranges): Same.
41761         (operator_rshift::op1_range): Same.
41762         (operator_cast::inside_domain_p): Same.
41763         * value-range.cc (vrp_val_is_max): Delete.
41764         (vrp_val_is_min): Delete.
41765         (range_tests_misc): Use irange_val_*.
41766         * value-range.h (vrp_val_is_min): Delete.
41767         (vrp_val_is_max): Delete.
41768         (vrp_val_max): Delete.
41769         (irange_val_min): New.
41770         (vrp_val_min): Delete.
41771         (irange_val_max): New.
41772         * vr-values.cc (check_for_binary_op_overflow): Use irange_val_*.
41774 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
41776         * fold-const.cc (expr_not_equal_to): Convert to irange wide_int API.
41777         * gimple-fold.cc (size_must_be_zero_p): Same.
41778         * gimple-loop-versioning.cc
41779         (loop_versioning::prune_loop_conditions): Same.
41780         * gimple-range-edge.cc (gcond_edge_range): Same.
41781         (gimple_outgoing_range::calc_switch_ranges): Same.
41782         * gimple-range-fold.cc (adjust_imagpart_expr): Same.
41783         (adjust_realpart_expr): Same.
41784         (fold_using_range::range_of_address): Same.
41785         (fold_using_range::relation_fold_and_or): Same.
41786         * gimple-range-gori.cc (gori_compute::gori_compute): Same.
41787         (range_is_either_true_or_false): Same.
41788         * gimple-range-op.cc (cfn_toupper_tolower::get_letter_range): Same.
41789         (cfn_clz::fold_range): Same.
41790         (cfn_ctz::fold_range): Same.
41791         * gimple-range-tests.cc (class test_expr_eval): Same.
41792         * gimple-ssa-warn-alloca.cc (alloca_call_type): Same.
41793         * ipa-cp.cc (ipa_value_range_from_jfunc): Same.
41794         (propagate_vr_across_jump_function): Same.
41795         (decide_whether_version_node): Same.
41796         * ipa-prop.cc (ipa_get_value_range): Same.
41797         * ipa-prop.h (ipa_range_set_and_normalize): Same.
41798         * range-op.cc (get_shift_range): Same.
41799         (value_range_from_overflowed_bounds): Same.
41800         (value_range_with_overflow): Same.
41801         (create_possibly_reversed_range): Same.
41802         (equal_op1_op2_relation): Same.
41803         (not_equal_op1_op2_relation): Same.
41804         (lt_op1_op2_relation): Same.
41805         (le_op1_op2_relation): Same.
41806         (gt_op1_op2_relation): Same.
41807         (ge_op1_op2_relation): Same.
41808         (operator_mult::op1_range): Same.
41809         (operator_exact_divide::op1_range): Same.
41810         (operator_lshift::op1_range): Same.
41811         (operator_rshift::op1_range): Same.
41812         (operator_cast::op1_range): Same.
41813         (operator_logical_and::fold_range): Same.
41814         (set_nonzero_range_from_mask): Same.
41815         (operator_bitwise_or::op1_range): Same.
41816         (operator_bitwise_xor::op1_range): Same.
41817         (operator_addr_expr::fold_range): Same.
41818         (pointer_plus_operator::wi_fold): Same.
41819         (pointer_or_operator::op1_range): Same.
41820         (INT): Same.
41821         (UINT): Same.
41822         (INT16): Same.
41823         (UINT16): Same.
41824         (SCHAR): Same.
41825         (UCHAR): Same.
41826         (range_op_cast_tests): Same.
41827         (range_op_lshift_tests): Same.
41828         (range_op_rshift_tests): Same.
41829         (range_op_bitwise_and_tests): Same.
41830         (range_relational_tests): Same.
41831         * range.cc (range_zero): Same.
41832         (range_nonzero): Same.
41833         * range.h (range_true): Same.
41834         (range_false): Same.
41835         (range_true_and_false): Same.
41836         * tree-data-ref.cc (split_constant_offset_1): Same.
41837         * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Same.
41838         * tree-ssa-loop-unswitch.cc (struct unswitch_predicate): Same.
41839         (find_unswitching_predicates_for_bb): Same.
41840         * tree-ssa-phiopt.cc (value_replacement): Same.
41841         * tree-ssa-threadbackward.cc
41842         (back_threader::find_taken_edge_cond): Same.
41843         * tree-ssanames.cc (ssa_name_has_boolean_range): Same.
41844         * tree-vrp.cc (find_case_label_range): Same.
41845         * value-query.cc (range_query::get_tree_range): Same.
41846         * value-range.cc (irange::set_nonnegative): Same.
41847         (frange::contains_p): Same.
41848         (frange::singleton_p): Same.
41849         (frange::internal_singleton_p): Same.
41850         (irange::irange_set): Same.
41851         (irange::irange_set_1bit_anti_range): Same.
41852         (irange::irange_set_anti_range): Same.
41853         (irange::set): Same.
41854         (irange::operator==): Same.
41855         (irange::singleton_p): Same.
41856         (irange::contains_p): Same.
41857         (irange::set_range_from_nonzero_bits): Same.
41858         (DEFINE_INT_RANGE_INSTANCE): Same.
41859         (INT): Same.
41860         (UINT): Same.
41861         (SCHAR): Same.
41862         (UINT128): Same.
41863         (UCHAR): Same.
41864         (range): New.
41865         (tree_range): New.
41866         (range_int): New.
41867         (range_uint): New.
41868         (range_uint128): New.
41869         (range_uchar): New.
41870         (range_char): New.
41871         (build_range3): Convert to irange wide_int API.
41872         (range_tests_irange3): Same.
41873         (range_tests_int_range_max): Same.
41874         (range_tests_strict_enum): Same.
41875         (range_tests_misc): Same.
41876         (range_tests_nonzero_bits): Same.
41877         (range_tests_nan): Same.
41878         (range_tests_signed_zeros): Same.
41879         * value-range.h (Value_Range::Value_Range): Same.
41880         (irange::set): Same.
41881         (irange::nonzero_p): Same.
41882         (irange::contains_p): Same.
41883         (range_includes_zero_p): Same.
41884         (irange::set_nonzero): Same.
41885         (irange::set_zero): Same.
41886         (contains_zero_p): Same.
41887         (frange::contains_p): Same.
41888         * vr-values.cc
41889         (simplify_using_ranges::op_with_boolean_value_range_p): Same.
41890         (bounds_of_var_in_loop): Same.
41891         (simplify_using_ranges::legacy_fold_cond_overflow): Same.
41893 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
41895         * value-range.cc (irange::irange_union): Rename to...
41896         (irange::union_): ...this.
41897         (irange::irange_intersect): Rename to...
41898         (irange::intersect): ...this.
41899         * value-range.h (irange::union_): Delete.
41900         (irange::intersect): Delete.
41902 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
41904         * vr-values.cc (bounds_of_var_in_loop): Convert to irange API.
41906 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
41908         * vr-values.cc (check_for_binary_op_overflow): Tidy up by using
41909         ranger API.
41910         (compare_ranges): Delete.
41911         (compare_range_with_value): Delete.
41912         (bounds_of_var_in_loop): Tidy up by using ranger API.
41913         (simplify_using_ranges::fold_cond_with_ops): Cleanup and rename
41914         from vrp_evaluate_conditional_warnv_with_ops_using_ranges.
41915         (simplify_using_ranges::legacy_fold_cond_overflow): Remove
41916         strict_overflow_p and only_ranges.
41917         (simplify_using_ranges::legacy_fold_cond): Adjust call to
41918         legacy_fold_cond_overflow.
41919         (simplify_using_ranges::simplify_abs_using_ranges): Adjust for
41920         rename.
41921         (range_fits_type_p): Rename value_range to irange.
41922         * vr-values.h (range_fits_type_p): Adjust prototype.
41924 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
41926         * value-range.cc (irange::irange_set_anti_range): Remove uses of
41927         tree_lower_bound and tree_upper_bound.
41928         (irange::verify_range): Same.
41929         (irange::operator==): Same.
41930         (irange::singleton_p): Same.
41931         * value-range.h (irange::tree_lower_bound): Delete.
41932         (irange::tree_upper_bound): Delete.
41933         (irange::lower_bound): Delete.
41934         (irange::upper_bound): Delete.
41935         (irange::zero_p): Remove uses of tree_lower_bound and
41936         tree_upper_bound.
41938 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
41940         * tree-ssa-loop-niter.cc (refine_value_range_using_guard): Remove
41941         kind() call.
41942         (determine_value_range): Same.
41943         (record_nonwrapping_iv): Same.
41944         (infer_loop_bounds_from_signedness): Same.
41945         (scev_var_range_cant_overflow): Same.
41946         * tree-vrp.cc (operand_less_p): Delete.
41947         * tree-vrp.h (operand_less_p): Delete.
41948         * value-range.cc (get_legacy_range): Remove uses of deprecated API.
41949         (irange::value_inside_range): Delete.
41950         * value-range.h (vrange::kind): Delete.
41951         (irange::num_pairs): Remove check of m_kind.
41952         (irange::min): Delete.
41953         (irange::max): Delete.
41955 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
41957         * gimple-fold.cc (maybe_fold_comparisons_from_match_pd): Adjust
41958         for vrange_storage.
41959         * gimple-range-cache.cc (sbr_vector::sbr_vector): Same.
41960         (sbr_vector::grow): Same.
41961         (sbr_vector::set_bb_range): Same.
41962         (sbr_vector::get_bb_range): Same.
41963         (sbr_sparse_bitmap::sbr_sparse_bitmap): Same.
41964         (sbr_sparse_bitmap::set_bb_range): Same.
41965         (sbr_sparse_bitmap::get_bb_range): Same.
41966         (block_range_cache::block_range_cache): Same.
41967         (ssa_global_cache::ssa_global_cache): Same.
41968         (ssa_global_cache::get_global_range): Same.
41969         (ssa_global_cache::set_global_range): Same.
41970         * gimple-range-cache.h: Same.
41971         * gimple-range-edge.cc
41972         (gimple_outgoing_range::gimple_outgoing_range): Same.
41973         (gimple_outgoing_range::switch_edge_range): Same.
41974         (gimple_outgoing_range::calc_switch_ranges): Same.
41975         * gimple-range-edge.h: Same.
41976         * gimple-range-infer.cc
41977         (infer_range_manager::infer_range_manager): Same.
41978         (infer_range_manager::get_nonzero): Same.
41979         (infer_range_manager::maybe_adjust_range): Same.
41980         (infer_range_manager::add_range): Same.
41981         * gimple-range-infer.h: Rename obstack_vrange_allocator to
41982         vrange_allocator.
41983         * tree-core.h (struct irange_storage_slot): Remove.
41984         (struct tree_ssa_name): Remove irange_info and frange_info.  Make
41985         range_info a pointer to vrange_storage.
41986         * tree-ssanames.cc (range_info_fits_p): Adjust for vrange_storage.
41987         (range_info_alloc): Same.
41988         (range_info_free): Same.
41989         (range_info_get_range): Same.
41990         (range_info_set_range): Same.
41991         (get_nonzero_bits): Same.
41992         * value-query.cc (get_ssa_name_range_info): Same.
41993         * value-range-storage.cc (class vrange_internal_alloc): New.
41994         (class vrange_obstack_alloc): New.
41995         (class vrange_ggc_alloc): New.
41996         (vrange_allocator::vrange_allocator): New.
41997         (vrange_allocator::~vrange_allocator): New.
41998         (vrange_storage::alloc_slot): New.
41999         (vrange_allocator::alloc): New.
42000         (vrange_allocator::free): New.
42001         (vrange_allocator::clone): New.
42002         (vrange_allocator::clone_varying): New.
42003         (vrange_allocator::clone_undefined): New.
42004         (vrange_storage::alloc): New.
42005         (vrange_storage::set_vrange): Remove slot argument.
42006         (vrange_storage::get_vrange): Same.
42007         (vrange_storage::fits_p): Same.
42008         (vrange_storage::equal_p): New.
42009         (irange_storage::write_lengths_address): New.
42010         (irange_storage::lengths_address): New.
42011         (irange_storage_slot::alloc_slot): Remove.
42012         (irange_storage::alloc): New.
42013         (irange_storage_slot::irange_storage_slot): Remove.
42014         (irange_storage::irange_storage): New.
42015         (write_wide_int): New.
42016         (irange_storage_slot::set_irange): Remove.
42017         (irange_storage::set_irange): New.
42018         (read_wide_int): New.
42019         (irange_storage_slot::get_irange): Remove.
42020         (irange_storage::get_irange): New.
42021         (irange_storage_slot::size): Remove.
42022         (irange_storage::equal_p): New.
42023         (irange_storage_slot::num_wide_ints_needed): Remove.
42024         (irange_storage::size): New.
42025         (irange_storage_slot::fits_p): Remove.
42026         (irange_storage::fits_p): New.
42027         (irange_storage_slot::dump): Remove.
42028         (irange_storage::dump): New.
42029         (frange_storage_slot::alloc_slot): Remove.
42030         (frange_storage::alloc): New.
42031         (frange_storage_slot::set_frange): Remove.
42032         (frange_storage::set_frange): New.
42033         (frange_storage_slot::get_frange): Remove.
42034         (frange_storage::get_frange): New.
42035         (frange_storage_slot::fits_p): Remove.
42036         (frange_storage::equal_p): New.
42037         (frange_storage::fits_p): New.
42038         (ggc_vrange_allocator): New.
42039         (ggc_alloc_vrange_storage): New.
42040         * value-range-storage.h (class vrange_storage): Rewrite.
42041         (class irange_storage): Rewrite.
42042         (class frange_storage): Rewrite.
42043         (class obstack_vrange_allocator): Remove.
42044         (class ggc_vrange_allocator): Remove.
42045         (vrange_allocator::alloc_vrange): Remove.
42046         (vrange_allocator::alloc_irange): Remove.
42047         (vrange_allocator::alloc_frange): Remove.
42048         (ggc_alloc_vrange_storage): New.
42049         * value-range.h (class irange): Rename vrange_allocator to
42050         irange_storage.
42051         (class frange): Same.
42053 2023-04-30  Roger Sayle  <roger@nextmovesoftware.com>
42055         * config/stormy16/stormy16.md (neghi2): Rewrite pattern using
42056         inc to avoid clobbering the carry flag.
42058 2023-04-30  Andrew Pinski  <apinski@marvell.com>
42060         * match.pd: Add patterns for "a != 0 ? FUNC(a) : CST"
42061         for FUNC of POPCOUNT BSWAP FFS PARITY CLZ and CTZ.
42063 2023-04-30  Andrew Pinski  <apinski@marvell.com>
42065         * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
42066         Allow some builtin/internal function calls which
42067         are known not to trap/throw.
42068         (phiopt_worker::match_simplify_replacement):
42069         Use name instead of getting the lhs again.
42071 2023-04-30  Joakim Nohlgård  <joakim@nohlgard.se>
42073         * configure: Regenerate.
42074         * configure.ac: Use ld -r in the check for HAVE_LD_RO_RW_SECTION_MIXING
42076 2023-04-29  Hans-Peter Nilsson  <hp@axis.com>
42078         * reload1.cc (emit_insn_if_valid_for_reload_1): Rename from
42079         emit_insn_if_valid_for_reload.
42080         (emit_insn_if_valid_for_reload): Call new helper, and if a SET fails
42081         to be recognized, also try emitting a parallel that clobbers
42082         TARGET_FLAGS_REGNUM, as applicable.
42084 2023-04-29  Roger Sayle  <roger@nextmovesoftware.com>
42086         * config/stormy16/stormy16.md (neghi2): Convert from a define_expand
42087         to a define_insn.
42088         (*rotatehi_1): New define_insn for efficient 2 insn sequence.
42089         (*rotatehi_8, *rotaterthi_8): New define_insn to emit a swpb.
42091 2023-04-29  Roger Sayle  <roger@nextmovesoftware.com>
42093         * config/stormy16/stormy16.md (any_lshift): New code iterator.
42094         (any_or_plus): Likewise.
42095         (any_rotate): Likewise.
42096         (*<any_lshift>_and_internal): New define_insn_and_split to
42097         recognize a logical shift followed by an AND, and split it
42098         again after reload.
42099         (*swpn): New define_insn matching xstormy16's swpn.
42100         (*swpn_zext): New define_insn recognizing swpn followed by
42101         zero_extendqihi2, i.e. with the high byte set to zero.
42102         (*swpn_sext): Likewise, for swpn followed by cbw.
42103         (*swpn_sext_2): Likewise, for an alternate RTL form.
42104         (*swpn_zext_ior): A pre-reload splitter so that an swpn+zext+ior
42105         sequence is split in the correct place to recognize the *swpn_zext
42106         followed by any_or_plus (ior, xor or plus) instruction.
42108 2023-04-29  Mikael Pettersson  <mikpelinux@gmail.com>
42110         PR target/105525
42111         * config.gcc (vax-*-linux*): Add glibc-stdint.h.
42112         (lm32-*-uclinux*): Likewise.
42114 2023-04-29  Fei Gao  <gaofei@eswincomputing.com>
42116         * config/riscv/riscv.cc (riscv_avoid_save_libcall): helper function
42117         for riscv_use_save_libcall.
42118         (riscv_use_save_libcall): call riscv_avoid_save_libcall.
42119         (riscv_compute_frame_info): restructure to decouple stack allocation
42120         for rv32e w/o save-restore.
42122 2023-04-28  Eugene Rozenfeld  <erozen@microsoft.com>
42124         * doc/install.texi: Fix documentation typo
42126 2023-04-28  Matevos Mehrabyan  <matevosmehrabyan@gmail.com>
42128         * config/riscv/iterators.md (only_div, paired_mod): New iterators.
42129         (u): Add div/udiv cases.
42130         * config/riscv/riscv-protos.h (riscv_use_divmod_expander): Prototype.
42131         * config/riscv/riscv.cc (struct riscv_tune_param): Add field for
42132         divmod expansion.
42133         (rocket_tune_info, sifive_7_tune_info): Initialize new field.
42134         (thead_c906_tune_info): Likewise.
42135         (optimize_size_tune_info): Likewise.
42136         (riscv_use_divmod_expander): New function.
42137         * config/riscv/riscv.md (<u>divmod<mode>4): New expander.
42139 2023-04-28  Karen Sargsyan  <karen1999411@gmail.com>
42141         * config/riscv/bitmanip.md: Added clmulr instruction.
42142         * config/riscv/riscv-builtins.cc (AVAIL): Add new.
42143         * config/riscv/riscv.md: (UNSPEC_CLMULR): Add new unspec type.
42144         (type): Add clmul
42145         * config/riscv/riscv-cmo.def: Added built-in function for clmulr.
42146         * config/riscv/crypto.md: Move clmul[h] instructions to bitmanip.md.
42147         * config/riscv/riscv-scalar-crypto.def: Move clmul[h] built-in
42148         functions to riscv-cmo.def.
42149         * config/riscv/generic.md: Add clmul to list of instructions
42150         using the generic_imul reservation.
42152 2023-04-28  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
42154         * config/riscv/bitmanip.md: Added expanders for minu/maxu instructions
42156 2023-04-28  Andrew Pinski  <apinski@marvell.com>
42158         PR tree-optimization/100958
42159         * tree-ssa-phiopt.cc (two_value_replacement): Remove.
42160         (pass_phiopt::execute): Don't call two_value_replacement.
42161         * match.pd (a !=/== CST1 ? CST2 : CST3): Add pattern to
42162         handle what two_value_replacement did.
42164 2023-04-28  Andrew Pinski  <apinski@marvell.com>
42166         * match.pd: Add patterns for
42167         "(A CMP B) ? MIN/MAX<A, C> : MIN/MAX <B, C>".
42169 2023-04-28  Andrew Pinski  <apinski@marvell.com>
42171         * match.pd: Factor out the deciding the min/max from
42172         the "(cond (cmp (convert1? x) c1) (convert2? x) c2)"
42173         pattern to ...
42174         * fold-const.cc (minmax_from_comparison): this new function.
42175         * fold-const.h (minmax_from_comparison): New prototype.
42177 2023-04-28  Roger Sayle  <roger@nextmovesoftware.com>
42179         PR rtl-optimization/109476
42180         * lower-subreg.cc: Include explow.h for force_reg.
42181         (find_decomposable_shift_zext): Pass an additional SPEED_P argument.
42182         If decomposing a suitable LSHIFTRT and we're not splitting
42183         ZERO_EXTEND (based on the current SPEED_P), then use a ZERO_EXTEND
42184         instead of setting a high part SUBREG to zero, which helps combine.
42185         (decompose_multiword_subregs): Update call to resolve_shift_zext.
42187 2023-04-28  Richard Biener  <rguenther@suse.de>
42189         * tree-vect-data-refs.cc (vect_analyze_data_refs): Always
42190         consider scatters.
42191         * tree-vect-stmts.cc (vect_model_store_cost): Pass in the
42192         gather-scatter info and cost emulated scatters accordingly.
42193         (get_load_store_type): Support emulated scatters.
42194         (vectorizable_store): Likewise.  Emulate them by extracting
42195         scalar offsets and data, doing scalar stores.
42197 2023-04-28  Richard Biener  <rguenther@suse.de>
42199         * config/i386/i386.cc (ix86_vector_costs::add_stmt_cost):
42200         Tame down element extracts and scalar loads for gather/scatter
42201         similar to elementwise strided accesses.
42203 2023-04-28  Pan Li  <pan2.li@intel.com>
42204             kito-cheng  <kito.cheng@sifive.com>
42206         * config/riscv/vector.md: Add new define split to perform
42207         the simplification.
42209 2023-04-28  Richard Biener  <rguenther@suse.de>
42211         PR ipa/109652
42212         * ipa-param-manipulation.cc
42213         (ipa_param_body_adjustments::modify_expression): Allow
42214         conversion of a register to a non-register type.  Elide
42215         conversions inside BIT_FIELD_REFs.
42217 2023-04-28  Richard Biener  <rguenther@suse.de>
42219         PR tree-optimization/109644
42220         * tree-cfg.cc (verify_types_in_gimple_reference): Check
42221         register constraints on the outermost VIEW_CONVERT_EXPR
42222         only.  Do not allow register or invariant bases on
42223         multi-level or possibly variable index handled components.
42225 2023-04-28  Richard Biener  <rguenther@suse.de>
42227         * gimplify.cc (gimplify_compound_lval): When there's a
42228         non-register type produced by one of the handled component
42229         operations make sure we get a non-register base.
42231 2023-04-28  Richard Biener  <rguenther@suse.de>
42233         PR tree-optimization/108752
42234         * tree-vect-generic.cc (build_replicated_const): Rename
42235         to build_replicated_int_cst and move to tree.{h,cc}.
42236         (do_plus_minus): Adjust.
42237         (do_negate): Likewise.
42238         * tree-vect-stmts.cc (vectorizable_operation): Emit emulated
42239         arithmetic vector operations in lowered form.
42240         * tree.h (build_replicated_int_cst): Declare.
42241         * tree.cc (build_replicated_int_cst): Moved from
42242         tree-vect-generic.cc build_replicated_const.
42244 2023-04-28  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
42246         PR target/99195
42247         * config/aarch64/aarch64-simd.md (aarch64_rbit<mode>): Rename to...
42248         (aarch64_rbit<mode><vczle><vczbe>): ... This.
42249         (neg<mode>2): Rename to...
42250         (neg<mode>2<vczle><vczbe>): ... This.
42251         (abs<mode>2): Rename to...
42252         (abs<mode>2<vczle><vczbe>): ... This.
42253         (aarch64_abs<mode>): Rename to...
42254         (aarch64_abs<mode><vczle><vczbe>): ... This.
42255         (one_cmpl<mode>2): Rename to...
42256         (one_cmpl<mode>2<vczle><vczbe>): ... This.
42257         (clrsb<mode>2): Rename to...
42258         (clrsb<mode>2<vczle><vczbe>): ... This.
42259         (clz<mode>2): Rename to...
42260         (clz<mode>2<vczle><vczbe>): ... This.
42261         (popcount<mode>2): Rename to...
42262         (popcount<mode>2<vczle><vczbe>): ... This.
42264 2023-04-28  Jakub Jelinek  <jakub@redhat.com>
42266         * gimple-range-op.cc (class cfn_sqrt): New type.
42267         (op_cfn_sqrt): New variable.
42268         (gimple_range_op_handler::maybe_builtin_call): Handle
42269         CASE_CFN_SQRT{,_FN}.
42271 2023-04-28  Aldy Hernandez  <aldyh@redhat.com>
42272             Jakub Jelinek  <jakub@redhat.com>
42274         * value-range.h (frange_nextafter): Declare.
42275         * gimple-range-op.cc (class cfn_sincos): New.
42276         (op_cfn_sin, op_cfn_cos): New variables.
42277         (gimple_range_op_handler::maybe_builtin_call): Handle
42278         CASE_CFN_{SIN,COS}{,_FN}.
42280 2023-04-28  Jakub Jelinek  <jakub@redhat.com>
42282         * target.def (libm_function_max_error): New target hook.
42283         * doc/tm.texi.in (TARGET_LIBM_FUNCTION_MAX_ERROR): Add.
42284         * doc/tm.texi: Regenerated.
42285         * targhooks.h (default_libm_function_max_error,
42286         glibc_linux_libm_function_max_error): Declare.
42287         * targhooks.cc: Include case-cfn-macros.h.
42288         (default_libm_function_max_error,
42289         glibc_linux_libm_function_max_error): New functions.
42290         * config/linux.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
42291         * config/linux-protos.h (linux_libm_function_max_error): Declare.
42292         * config/linux.cc: Include target.h and targhooks.h.
42293         (linux_libm_function_max_error): New function.
42294         * config/arc/arc.cc: Include targhooks.h and case-cfn-macros.h.
42295         (arc_libm_function_max_error): New function.
42296         (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
42297         * config/i386/i386.cc (ix86_libc_has_fast_function): Formatting fix.
42298         (ix86_libm_function_max_error): New function.
42299         (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
42300         * config/rs6000/rs6000-protos.h
42301         (rs6000_linux_libm_function_max_error): Declare.
42302         * config/rs6000/rs6000-linux.cc: Include target.h, targhooks.h, tree.h
42303         and case-cfn-macros.h.
42304         (rs6000_linux_libm_function_max_error): New function.
42305         * config/rs6000/linux.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
42306         * config/rs6000/linux64.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
42307         * config/or1k/or1k.cc: Include targhooks.h and case-cfn-macros.h.
42308         (or1k_libm_function_max_error): New function.
42309         (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
42311 2023-04-28  Alexandre Oliva  <oliva@adacore.com>
42313         * gimple-harden-conditionals.cc (insert_edge_check_and_trap):
42314         Move detach value calls...
42315         (pass_harden_conditional_branches::execute): ... here.
42316         (pass_harden_compares::execute): Detach values before
42317         compares.
42319 2023-04-27  Andrew Stubbs  <ams@codesourcery.com>
42321         * config/gcn/gcn-valu.md (cmul<conj_op><mode>3): Use gcn_gen_undef.
42322         (cml<addsub_as><mode>4): Likewise.
42323         (vec_addsub<mode>3): Likewise.
42324         (cadd<rot><mode>3): Likewise.
42325         (vec_fmaddsub<mode>4): Likewise.
42326         (vec_fmsubadd<mode>4): Likewise, and use sub for the odd lanes.
42328 2023-04-27  Andrew Pinski  <apinski@marvell.com>
42330         * tree-ssa-phiopt.cc (phiopt_early_allow): Allow for
42331         up to 2 min/max expressions in the sequence/match code.
42333 2023-04-27  Andrew Pinski  <apinski@marvell.com>
42335         * rtlanal.cc (may_trap_p_1): Treat SMIN/SMAX similar as
42336         COMPARISON.
42337         * tree-eh.cc (operation_could_trap_helper_p): Treate
42338         MIN_EXPR/MAX_EXPR similar as other comparisons.
42340 2023-04-27  Andrew Pinski  <apinski@marvell.com>
42342         * tree-ssa-phiopt.cc (cond_store_replacement): Remove
42343         prototype.
42344         (cond_if_else_store_replacement): Likewise.
42345         (get_non_trapping): Likewise.
42346         (store_elim_worker): Move into ...
42347         (pass_cselim::execute): This.
42349 2023-04-27  Andrew Pinski  <apinski@marvell.com>
42351         * tree-ssa-phiopt.cc (two_value_replacement): Remove
42352         prototype.
42353         (match_simplify_replacement): Likewise.
42354         (factor_out_conditional_conversion): Likewise.
42355         (value_replacement): Likewise.
42356         (minmax_replacement): Likewise.
42357         (spaceship_replacement): Likewise.
42358         (cond_removal_in_builtin_zero_pattern): Likewise.
42359         (hoist_adjacent_loads): Likewise.
42360         (tree_ssa_phiopt_worker): Move into ...
42361         (pass_phiopt::execute): this.
42363 2023-04-27  Andrew Pinski  <apinski@marvell.com>
42365         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove
42366         do_store_elim argument and split that part out to ...
42367         (store_elim_worker): This new function.
42368         (pass_cselim::execute): Call store_elim_worker.
42369         (pass_phiopt::execute): Update call to tree_ssa_phiopt_worker.
42371 2023-04-27  Jan Hubicka  <jh@suse.cz>
42373         * cfgloopmanip.h (unloop_loops): Export.
42374         * tree-ssa-loop-ch.cc (ch_base::copy_headers): Unloop loops
42375         that no longer loop.
42376         * tree-ssa-loop-ivcanon.cc (unloop_loops): Export; do not free
42377         vectors of loops to unloop.
42378         (canonicalize_induction_variables): Free vectors here.
42379         (tree_unroll_loops_completely): Free vectors here.
42381 2023-04-27  Richard Biener  <rguenther@suse.de>
42383         PR tree-optimization/109170
42384         * gimple-range-op.cc (gimple_range_op_handler::maybe_builtin_call):
42385         Handle __builtin_expect and similar via cfn_pass_through_arg1
42386         and inspecting the calls fnspec.
42387         * builtins.cc (builtin_fnspec): Handle BUILT_IN_EXPECT
42388         and BUILT_IN_EXPECT_WITH_PROBABILITY.
42390 2023-04-27  Alexandre Oliva  <oliva@adacore.com>
42392         * genmultilib: Use CONFIG_SHELL to run sub-scripts.
42394 2023-04-27  Aldy Hernandez  <aldyh@redhat.com>
42396         PR tree-optimization/109639
42397         * ipa-cp.cc (ipa_value_range_from_jfunc): Normalize range.
42398         (propagate_vr_across_jump_function): Same.
42399         * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
42400         * ipa-prop.h (ipa_range_set_and_normalize): New.
42401         * value-range.cc (irange::set): Assert min and max are INTEGER_CST.
42403 2023-04-27  Richard Biener  <rguenther@suse.de>
42405         * match.pd (BIT_FIELD_REF CONSTRUCTOR@0 @1 @2): Do not
42406         create a CTOR operand in the result when simplifying GIMPLE.
42408 2023-04-27  Richard Biener  <rguenther@suse.de>
42410         * gimplify.cc (gimplify_compound_lval): When the base
42411         gimplified to a register make sure to split up chains
42412         of operations.
42414 2023-04-27  Richard Biener  <rguenther@suse.de>
42416         PR ipa/109607
42417         * ipa-param-manipulation.h
42418         (ipa_param_body_adjustments::modify_expression): Add extra_stmts
42419         argument.
42420         * ipa-param-manipulation.cc
42421         (ipa_param_body_adjustments::modify_expression): Likewise.
42422         When we need a conversion and the replacement is a register
42423         split the conversion out.
42424         (ipa_param_body_adjustments::modify_assignment): Pass
42425         extra_stmts to RHS modify_expression.
42427 2023-04-27  Jonathan Wakely  <jwakely@redhat.com>
42429         * doc/extend.texi (Zero Length): Describe example.
42431 2023-04-27  Richard Biener  <rguenther@suse.de>
42433         PR tree-optimization/109594
42434         * tree-ssa.cc (non_rewritable_mem_ref_base): Constrain
42435         what we rewrite to a register based on the above.
42437 2023-04-26  Patrick O'Neill  <patrick@rivosinc.com>
42439         * config/riscv/riscv.cc: Fix whitespace.
42440         * config/riscv/sync.md: Fix whitespace.
42442 2023-04-26  Andrew MacLeod  <amacleod@redhat.com>
42444         PR tree-optimization/108697
42445         * gimple-range-cache.cc (ssa_global_cache::clear_range): Do
42446         not clear the vector on an out of range query.
42447         (ssa_cache::dump): Use dump_range_query instead of get_range.
42448         (ssa_cache::dump_range_query): New.
42449         (ssa_lazy_cache::dump_range_query): New.
42450         (ssa_lazy_cache::set_range): New.
42451         * gimple-range-cache.h (ssa_cache::dump_range_query): New.
42452         (class ssa_lazy_cache): New.
42453         (ssa_lazy_cache::ssa_lazy_cache): New.
42454         (ssa_lazy_cache::~ssa_lazy_cache): New.
42455         (ssa_lazy_cache::get_range): New.
42456         (ssa_lazy_cache::clear_range): New.
42457         (ssa_lazy_cache::clear): New.
42458         (ssa_lazy_cache::dump): New.
42459         * gimple-range-path.cc (path_range_query::path_range_query): Do
42460         not allocate a ssa_cache object nor has_cache bitmap.
42461         (path_range_query::~path_range_query): Do not free objects.
42462         (path_range_query::clear_cache): Remove.
42463         (path_range_query::get_cache): Adjust.
42464         (path_range_query::set_cache): Remove.
42465         (path_range_query::dump): Don't call through a pointer.
42466         (path_range_query::internal_range_of_expr): Set cache directly.
42467         (path_range_query::reset_path): Clear cache directly.
42468         (path_range_query::ssa_range_in_phi): Fold with globals only.
42469         (path_range_query::compute_ranges_in_phis): Simply set range.
42470         (path_range_query::compute_ranges_in_block): Call cache directly.
42471         * gimple-range-path.h (class path_range_query): Replace bitmap
42472         and cache pointer with lazy cache object.
42473         * gimple-range.h (class assume_query): Use ssa_lazy_cache.
42475 2023-04-26  Andrew MacLeod  <amacleod@redhat.com>
42477         * gimple-range-cache.cc (ssa_cache::ssa_cache): Rename.
42478         (ssa_cache::~ssa_cache): Rename.
42479         (ssa_cache::has_range): New.
42480         (ssa_cache::get_range): Rename.
42481         (ssa_cache::set_range): Rename.
42482         (ssa_cache::clear_range): Rename.
42483         (ssa_cache::clear): Rename.
42484         (ssa_cache::dump): Rename and use get_range.
42485         (ranger_cache::get_global_range): Use get_range and set_range.
42486         (ranger_cache::range_of_def): Use get_range.
42487         * gimple-range-cache.h (class ssa_cache): Rename class and methods.
42488         (class ranger_cache): Use ssa_cache.
42489         * gimple-range-path.cc (path_range_query::path_range_query): Use
42490         ssa_cache.
42491         (path_range_query::get_cache): Use get_range.
42492         (path_range_query::set_cache): Use set_range.
42493         * gimple-range-path.h (class path_range_query): Use ssa_cache.
42494         * gimple-range.cc (assume_query::assume_range_p): Use get_range.
42495         (assume_query::range_of_expr): Use get_range.
42496         (assume_query::assume_query): Use set_range.
42497         (assume_query::calculate_op): Use get_range and set_range.
42498         * gimple-range.h (class assume_query): Use ssa_cache.
42500 2023-04-26  Andrew MacLeod  <amacleod@redhat.com>
42502         * gimple-range-cache.cc (sbr_vector::sbr_vector): Add parameter
42503         and local to optionally zero memory.
42504         (br_vector::grow): Only zero memory if flag is set.
42505         (class sbr_lazy_vector): New.
42506         (sbr_lazy_vector::sbr_lazy_vector): New.
42507         (sbr_lazy_vector::set_bb_range): New.
42508         (sbr_lazy_vector::get_bb_range): New.
42509         (sbr_lazy_vector::bb_range_p): New.
42510         (block_range_cache::set_bb_range): Check flags and Use sbr_lazy_vector.
42511         * gimple-range-gori.cc (gori_map::calculate_gori): Use
42512         param_vrp_switch_limit.
42513         (gori_compute::gori_compute): Use param_vrp_switch_limit.
42514         * params.opt (vrp_sparse_threshold): Rename from evrp_sparse_threshold.
42515         (vrp_switch_limit): Rename from evrp_switch_limit.
42516         (vrp_vector_threshold): New.
42518 2023-04-26  Andrew MacLeod  <amacleod@redhat.com>
42520         * value-relation.cc (dom_oracle::query_relation): Check early for lack
42521         of any relation.
42522         * value-relation.h (equiv_oracle::has_equiv_p): New.
42524 2023-04-26  Andrew MacLeod  <amacleod@redhat.com>
42526         PR tree-optimization/109417
42527         * gimple-range-gori.cc (range_def_chain::register_dependency):
42528         Save the ssa version number, not the pointer.
42529         (gori_compute::may_recompute_p): No need to check if a dependency
42530         is in the free list.
42531         * gimple-range-gori.h (class range_def_chain): Change ssa1 and ssa2
42532         fields to be unsigned int instead of trees.
42533         (ange_def_chain::depend1): Adjust.
42534         (ange_def_chain::depend2): Adjust.
42535         * gimple-range.h: Include "ssa.h" to inline ssa_name().
42537 2023-04-26  David Edelsohn  <dje.gcc@gmail.com>
42539         * config/rs6000/aix72.h (TARGET_DEFAULT): Use ISA_2_6_MASKS_SERVER.
42540         * config/rs6000/aix73.h (TARGET_DEFAULT): Use ISA_2_7_MASKS_SERVER.
42541         (PROCESSOR_DEFAULT): Use PROCESSOR_POWER8.
42543 2023-04-26  Patrick O'Neill  <patrick@rivosinc.com>
42545         PR target/104338
42546         * config/riscv/riscv-protos.h: Add helper function stubs.
42547         * config/riscv/riscv.cc: Add helper functions for subword masking.
42548         * config/riscv/riscv.opt: Add command-line flags -minline-atomics and
42549         -mno-inline-atomics.
42550         * config/riscv/sync.md: Add masking logic and inline asm for fetch_and_op,
42551         fetch_and_nand, CAS, and exchange ops.
42552         * doc/invoke.texi: Add blurb regarding new command-line flags
42553         -minline-atomics and -mno-inline-atomics.
42555 2023-04-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
42557         * config/aarch64/aarch64-simd.md (aarch64_rshrn2<mode>_insn_le):
42558         Reimplement using standard RTL codes instead of unspec.
42559         (aarch64_rshrn2<mode>_insn_be): Likewise.
42560         (aarch64_rshrn2<mode>): Adjust for the above.
42561         * config/aarch64/aarch64.md (UNSPEC_RSHRN): Delete.
42563 2023-04-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
42565         * config/aarch64/aarch64-simd.md (aarch64_rshrn<mode>_insn_le): Reimplement
42566         with standard RTL codes instead of an UNSPEC.
42567         (aarch64_rshrn<mode>_insn_be): Likewise.
42568         (aarch64_rshrn<mode>): Adjust for the above.
42569         * config/aarch64/predicates.md (aarch64_simd_rshrn_imm_vec): Define.
42571 2023-04-26  Pan Li  <pan2.li@intel.com>
42572             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
42574         * config/riscv/riscv.cc (riscv_classify_address): Allow
42575         const0_rtx for the RVV load/store.
42577 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
42579         * range-op.cc (range_op_cast_tests): Remove legacy support.
42580         * value-range-storage.h (vrange_allocator::alloc_irange): Same.
42581         * value-range.cc (irange::operator=): Same.
42582         (get_legacy_range): Same.
42583         (irange::copy_legacy_to_multi_range): Delete.
42584         (irange::copy_to_legacy): Delete.
42585         (irange::irange_set_anti_range): Delete.
42586         (irange::set): Remove legacy support.
42587         (irange::verify_range): Same.
42588         (irange::legacy_lower_bound): Delete.
42589         (irange::legacy_upper_bound): Delete.
42590         (irange::legacy_equal_p): Delete.
42591         (irange::operator==): Remove legacy support.
42592         (irange::singleton_p): Same.
42593         (irange::value_inside_range): Same.
42594         (irange::contains_p): Same.
42595         (intersect_ranges): Delete.
42596         (irange::legacy_intersect): Delete.
42597         (union_ranges): Delete.
42598         (irange::legacy_union): Delete.
42599         (irange::legacy_verbose_union_): Delete.
42600         (irange::legacy_verbose_intersect): Delete.
42601         (irange::irange_union): Remove legacy support.
42602         (irange::irange_intersect): Same.
42603         (irange::intersect): Same.
42604         (irange::invert): Same.
42605         (ranges_from_anti_range): Delete.
42606         (gt_pch_nx): Adjust for legacy removal.
42607         (gt_ggc_mx): Same.
42608         (range_tests_legacy): Delete.
42609         (range_tests_misc): Adjust for legacy removal.
42610         (range_tests): Same.
42611         * value-range.h (class irange): Same.
42612         (irange::legacy_mode_p): Delete.
42613         (ranges_from_anti_range): Delete.
42614         (irange::nonzero_p): Adjust for legacy removal.
42615         (irange::lower_bound): Same.
42616         (irange::upper_bound): Same.
42617         (irange::union_): Same.
42618         (irange::intersect): Same.
42619         (irange::set_nonzero): Same.
42620         (irange::set_zero): Same.
42621         * vr-values.cc (simplify_using_ranges::legacy_fold_cond_overflow): Same.
42623 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
42625         * value-range.cc (irange::copy_legacy_to_multi_range): Rewrite use
42626         of range_has_numeric_bounds_p with irange API.
42627         (range_has_numeric_bounds_p): Delete.
42628         * value-range.h (range_has_numeric_bounds_p): Delete.
42630 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
42632         * tree-data-ref.cc (compute_distributive_range): Replace uses of
42633         range_int_cst_p with irange API.
42634         * tree-ssa-strlen.cc (get_range_strlen_dynamic): Same.
42635         * tree-vrp.h (range_int_cst_p): Delete.
42636         * vr-values.cc (check_for_binary_op_overflow): Replace usees of
42637         range_int_cst_p with irange API.
42638         (vr_set_zero_nonzero_bits): Same.
42639         (range_fits_type_p): Same.
42640         (simplify_using_ranges::simplify_casted_cond): Same.
42641         * tree-vrp.cc (range_int_cst_p): Remove.
42643 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
42645         * tree-ssa-strlen.cc (compare_nonzero_chars): Convert to wide_ints.
42647 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
42649         * builtins.cc (expand_builtin_strnlen): Rewrite deprecated irange
42650         API uses to new API.
42651         * gimple-predicate-analysis.cc (find_var_cmp_const): Same.
42652         * internal-fn.cc (get_min_precision): Same.
42653         * match.pd: Same.
42654         * tree-affine.cc (expr_to_aff_combination): Same.
42655         * tree-data-ref.cc (dr_step_indicator): Same.
42656         * tree-dfa.cc (get_ref_base_and_extent): Same.
42657         * tree-scalar-evolution.cc (iv_can_overflow_p): Same.
42658         * tree-ssa-phiopt.cc (two_value_replacement): Same.
42659         * tree-ssa-pre.cc (insert_into_preds_of_block): Same.
42660         * tree-ssa-reassoc.cc (optimize_range_tests_to_bit_test): Same.
42661         * tree-ssa-strlen.cc (compare_nonzero_chars): Same.
42662         * tree-switch-conversion.cc (bit_test_cluster::emit): Same.
42663         * tree-vect-patterns.cc (vect_recog_divmod_pattern): Same.
42664         * tree.cc (get_range_pos_neg): Same.
42666 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
42668         * ipa-prop.cc (ipa_print_node_jump_functions_for_edge): Use
42669         vrange::dump instead of ad-hoc dumper.
42670         * tree-ssa-strlen.cc (dump_strlen_info): Same.
42671         * value-range-pretty-print.cc (visit): Pass TDF_NOUID to
42672         dump_generic_node.
42674 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
42676         * range-op.cc (operator_cast::op1_range): Use
42677         create_possibly_reversed_range.
42678         (operator_bitwise_and::simple_op1_range_solver): Same.
42679         * value-range.cc (swap_out_of_order_endpoints): Delete.
42680         (irange::set): Remove call to swap_out_of_order_endpoints.
42682 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
42684         * builtins.cc (determine_block_size): Convert use of legacy API to
42685         get_legacy_range.
42686         * gimple-array-bounds.cc (check_out_of_bounds_and_warn): Same.
42687         (array_bounds_checker::check_array_ref): Same.
42688         * gimple-ssa-warn-restrict.cc
42689         (builtin_memref::extend_offset_range): Same.
42690         * ipa-cp.cc (ipcp_store_vr_results): Same.
42691         * ipa-fnsummary.cc (set_switch_stmt_execution_predicate): Same.
42692         * ipa-prop.cc (struct ipa_vr_ggc_hash_traits): Same.
42693         (ipa_write_jump_function): Same.
42694         * pointer-query.cc (get_size_range): Same.
42695         * tree-data-ref.cc (split_constant_offset): Same.
42696         * tree-ssa-strlen.cc (get_range): Same.
42697         (maybe_diag_stxncpy_trunc): Same.
42698         (strlen_pass::get_len_or_size): Same.
42699         (strlen_pass::count_nonzero_bytes_addr): Same.
42700         * tree-vect-patterns.cc (vect_get_range_info): Same.
42701         * value-range.cc (irange::maybe_anti_range): Remove.
42702         (get_legacy_range): New.
42703         (irange::copy_to_legacy): Use get_legacy_range.
42704         (ranges_from_anti_range): Same.
42705         * value-range.h (class irange): Remove maybe_anti_range.
42706         (get_legacy_range): New.
42707         * vr-values.cc (check_for_binary_op_overflow): Convert use of
42708         legacy API to get_legacy_range.
42709         (compare_ranges): Same.
42710         (compare_range_with_value): Same.
42711         (bounds_of_var_in_loop): Same.
42712         (find_case_label_ranges): Same.
42713         (simplify_using_ranges::simplify_switch_using_ranges): Same.
42715 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
42717         * value-range-pretty-print.cc (vrange_printer::visit): Remove
42718         constant_p use.
42719         * value-range.cc (irange::constant_p): Remove.
42720         (irange::get_nonzero_bits_from_range): Remove constant_p use.
42721         * value-range.h (class irange): Remove constant_p.
42722         (irange::num_pairs): Remove constant_p use.
42724 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
42726         * value-range.cc (irange::copy_legacy_to_multi_range): Remove
42727         symbolics support.
42728         (irange::set): Same.
42729         (irange::legacy_lower_bound): Same.
42730         (irange::legacy_upper_bound): Same.
42731         (irange::contains_p): Same.
42732         (range_tests_legacy): Same.
42733         (irange::normalize_addresses): Remove.
42734         (irange::normalize_symbolics): Remove.
42735         (irange::symbolic_p): Remove.
42736         * value-range.h (class irange): Remove symbolic_p,
42737         normalize_symbolics, and normalize_addresses.
42738         * vr-values.cc (simplify_using_ranges::two_valued_val_range_p):
42739         Remove symbolics support.
42741 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
42743         * value-range.cc (irange::may_contain_p): Remove.
42744         * value-range.h (range_includes_zero_p):  Rewrite may_contain_p
42745         usage with contains_p.
42746         * vr-values.cc (compare_range_with_value): Same.
42748 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
42750         * tree-vrp.cc (supported_types_p): Remove.
42751         (defined_ranges_p): Remove.
42752         (range_fold_binary_expr): Remove.
42753         (range_fold_unary_expr): Remove.
42754         * tree-vrp.h (range_fold_unary_expr): Remove.
42755         (range_fold_binary_expr): Remove.
42757 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
42759         * ipa-cp.cc (ipa_vr_operation_and_type_effects): Convert to ranger API.
42760         (ipa_value_range_from_jfunc): Same.
42761         (propagate_vr_across_jump_function): Same.
42762         * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
42763         * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Same.
42764         * vr-values.cc (bounds_of_var_in_loop): Same.
42766 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
42768         * gimple-array-bounds.cc (array_bounds_checker::get_value_range):
42769         Add irange argument.
42770         (check_out_of_bounds_and_warn): Remove check for vr.
42771         (array_bounds_checker::check_array_ref): Remove pointer qualifier
42772         for vr and adjust accordingly.
42773         * gimple-array-bounds.h (get_value_range): Add irange argument.
42774         * value-query.cc (class equiv_allocator): Delete.
42775         (range_query::get_value_range): Delete.
42776         (range_query::range_query): Remove allocator access.
42777         (range_query::~range_query): Same.
42778         * value-query.h (get_value_range): Delete.
42779         * vr-values.cc
42780         (simplify_using_ranges::op_with_boolean_value_range_p): Remove
42781         call to get_value_range.
42782         (check_for_binary_op_overflow): Same.
42783         (simplify_using_ranges::legacy_fold_cond_overflow): Same.
42784         (simplify_using_ranges::simplify_abs_using_ranges): Same.
42785         (simplify_using_ranges::simplify_cond_using_ranges_1): Same.
42786         (simplify_using_ranges::simplify_casted_cond): Same.
42787         (simplify_using_ranges::simplify_switch_using_ranges): Same.
42788         (simplify_using_ranges::two_valued_val_range_p): Same.
42790 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
42792         * vr-values.cc
42793         (simplify_using_ranges::vrp_evaluate_conditional_warnv_with_ops):
42794         Rename to...
42795         (simplify_using_ranges::legacy_fold_cond_overflow): ...this.
42796         (simplify_using_ranges::vrp_visit_cond_stmt): Rename to...
42797         (simplify_using_ranges::legacy_fold_cond): ...this.
42798         (simplify_using_ranges::fold_cond): Rename
42799         vrp_evaluate_conditional_warnv_with_ops to
42800         legacy_fold_cond_overflow.
42801         * vr-values.h (class vr_values): Replace vrp_visit_cond_stmt and
42802         vrp_evaluate_conditional_warnv_with_ops with legacy_fold_cond and
42803         legacy_fold_cond_overflow respectively.
42805 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
42807         * vr-values.cc (get_vr_for_comparison): Remove.
42808         (compare_name_with_value): Same.
42809         (vrp_evaluate_conditional_warnv_with_ops): Remove calls to
42810         compare_name_with_value.
42811         * vr-values.h: Remove compare_name_with_value.
42812         Remove get_vr_for_comparison.
42814 2023-04-26  Roger Sayle  <roger@nextmovesoftware.com>
42816         * config/stormy16/stormy16.md (bswaphi2): New define_insn.
42817         (bswapsi2): New define_insn.
42818         (swaphi): New define_insn to exchange two registers (swpw).
42819         (define_peephole2): Recognize exchange of registers as swaphi.
42821 2023-04-26  Richard Biener  <rguenther@suse.de>
42823         * gimple-range-path.cc (path_range_query::compute_outgoing_relations):
42824         Avoid last_stmt.
42825         * ipa-pure-const.cc (pass_nothrow::execute): Likewise.
42826         * predict.cc (apply_return_prediction): Likewise.
42827         * sese.cc (set_ifsese_condition): Likewise.  Simplify.
42828         * tree-cfg.cc (assert_unreachable_fallthru_edge_p): Avoid last_stmt.
42829         (make_edges_bb): Likewise.
42830         (make_cond_expr_edges): Likewise.
42831         (end_recording_case_labels): Likewise.
42832         (make_gimple_asm_edges): Likewise.
42833         (cleanup_dead_labels): Likewise.
42834         (group_case_labels): Likewise.
42835         (gimple_can_merge_blocks_p): Likewise.
42836         (gimple_merge_blocks): Likewise.
42837         (find_taken_edge): Likewise.  Also handle empty fallthru blocks.
42838         (gimple_duplicate_sese_tail): Avoid last_stmt.
42839         (find_loop_dist_alias): Likewise.
42840         (gimple_block_ends_with_condjump_p): Likewise.
42841         (gimple_purge_dead_eh_edges): Likewise.
42842         (gimple_purge_dead_abnormal_call_edges): Likewise.
42843         (pass_warn_function_return::execute): Likewise.
42844         (execute_fixup_cfg): Likewise.
42845         * tree-eh.cc (redirect_eh_edge_1): Likewise.
42846         (pass_lower_resx::execute): Likewise.
42847         (pass_lower_eh_dispatch::execute): Likewise.
42848         (cleanup_empty_eh): Likewise.
42849         * tree-if-conv.cc (if_convertible_bb_p): Likewise.
42850         (predicate_bbs): Likewise.
42851         (ifcvt_split_critical_edges): Likewise.
42852         * tree-loop-distribution.cc (create_edge_for_control_dependence):
42853         Likewise.
42854         (loop_distribution::transform_reduction_loop): Likewise.
42855         * tree-parloops.cc (transform_to_exit_first_loop_alt): Likewise.
42856         (try_transform_to_exit_first_loop_alt): Likewise.
42857         (transform_to_exit_first_loop): Likewise.
42858         (create_parallel_loop): Likewise.
42859         * tree-scalar-evolution.cc (get_loop_exit_condition): Likewise.
42860         * tree-ssa-dce.cc (mark_last_stmt_necessary): Likewise.
42861         (eliminate_unnecessary_stmts): Likewise.
42862         * tree-ssa-dom.cc
42863         (dom_opt_dom_walker::set_global_ranges_from_unreachable_edges):
42864         Likewise.
42865         * tree-ssa-ifcombine.cc (ifcombine_ifandif): Likewise.
42866         (pass_tree_ifcombine::execute): Likewise.
42867         * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Likewise.
42868         (should_duplicate_loop_header_p): Likewise.
42869         * tree-ssa-loop-ivcanon.cc (create_canonical_iv): Likewise.
42870         (tree_estimate_loop_size): Likewise.
42871         (try_unroll_loop_completely): Likewise.
42872         * tree-ssa-loop-ivopts.cc (tree_ssa_iv_optimize_loop): Likewise.
42873         * tree-ssa-loop-manip.cc (ip_normal_pos): Likewise.
42874         (canonicalize_loop_ivs): Likewise.
42875         * tree-ssa-loop-niter.cc (determine_value_range): Likewise.
42876         (bound_difference): Likewise.
42877         (number_of_iterations_popcount): Likewise.
42878         (number_of_iterations_cltz): Likewise.
42879         (number_of_iterations_cltz_complement): Likewise.
42880         (simplify_using_initial_conditions): Likewise.
42881         (number_of_iterations_exit_assumptions): Likewise.
42882         (loop_niter_by_eval): Likewise.
42883         (estimate_numbers_of_iterations): Likewise.
42885 2023-04-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
42887         * config/riscv/vector.md: Refine vmadc/vmsbc RA constraint.
42889 2023-04-26  Kewen Lin  <linkw@linux.ibm.com>
42891         PR target/108758
42892         * config/rs6000/rs6000-builtins.def
42893         (__builtin_vsx_scalar_cmp_exp_qp_eq, __builtin_vsx_scalar_cmp_exp_qp_gt
42894         __builtin_vsx_scalar_cmp_exp_qp_lt,
42895         __builtin_vsx_scalar_cmp_exp_qp_unordered): Move from stanza ieee128-hw
42896         to power9-vector.
42898 2023-04-26  Kewen Lin  <linkw@linux.ibm.com>
42900         PR target/109069
42901         * config/rs6000/altivec.md (sldoi_to_mov<mode>): Replace predicate
42902         easy_vector_constant with const_vector_each_byte_same, add
42903         handlings in preparation for !easy_vector_constant, and update
42904         VECTOR_UNIT_ALTIVEC_OR_VSX_P with VECTOR_MEM_ALTIVEC_OR_VSX_P.
42905         * config/rs6000/predicates.md (const_vector_each_byte_same): New
42906         predicate.
42908 2023-04-26  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
42910         * config/riscv/vector.md (*pred_cmp<mode>_merge_tie_mask): New pattern.
42911         (*pred_ltge<mode>_merge_tie_mask): Ditto.
42912         (*pred_cmp<mode>_scalar_merge_tie_mask): Ditto.
42913         (*pred_eqne<mode>_scalar_merge_tie_mask): Ditto.
42914         (*pred_cmp<mode>_extended_scalar_merge_tie_mask): Ditto.
42915         (*pred_eqne<mode>_extended_scalar_merge_tie_mask): Ditto.
42916         (*pred_cmp<mode>_narrow_merge_tie_mask): Ditto.
42918 2023-04-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
42920         * config/riscv/vector.md: Fix redundant vmv1r.v.
42922 2023-04-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
42924         * config/riscv/vector.md: Fix RA constraint.
42926 2023-04-26  Pan Li  <pan2.li@intel.com>
42928         PR target/109272
42929         * tree-ssa-sccvn.cc (vn_reference_eq): add type vector subparts
42930         check for vn_reference equal.
42932 2023-04-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
42934         * config/riscv/riscv-opts.h (enum riscv_autovec_preference_enum): Add enum for
42935         auto-vectorization preference.
42936         (enum riscv_autovec_lmul_enum): Add enum for choosing LMUL of RVV
42937         auto-vectorization.
42938         * config/riscv/riscv.opt: Add compile option for RVV auto-vectorization.
42940 2023-04-26  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
42942         * config/riscv/bitmanip.md: Updated predicates of bclri<mode>_nottwobits
42943         and bclridisi_nottwobits patterns.
42944         * config/riscv/predicates.md: (not_uimm_extra_bit_or_nottwobits): Adjust
42945         predicate to avoid splitting arith constants.
42946         (const_nottwobits_not_arith_operand): New predicate.
42948 2023-04-25  Hans-Peter Nilsson  <hp@axis.com>
42950         * recog.cc (peep2_attempt, peep2_update_life): Correct
42951         head-comment description of parameter match_len.
42953 2023-04-25  Vineet Gupta  <vineetg@rivosinc.com>
42955         * config/riscv/riscv.md: riscv_move_integer() drop in_splitter arg.
42956         riscv_split_symbol() drop in_splitter arg.
42957         * config/riscv/riscv.cc: riscv_move_integer() drop in_splitter arg.
42958         riscv_split_symbol() drop in_splitter arg.
42959         riscv_force_temporary() drop in_splitter arg.
42960         * config/riscv/riscv-protos.h: riscv_move_integer() drop in_splitter arg.
42961         riscv_split_symbol() drop in_splitter arg.
42963 2023-04-25  Eric Botcazou  <ebotcazou@adacore.com>
42965         * tree-ssa.cc (insert_debug_temp_for_var_def): Do not create
42966         superfluous debug temporaries for single GIMPLE assignments.
42968 2023-04-25  Richard Biener  <rguenther@suse.de>
42970         PR tree-optimization/109609
42971         * attr-fnspec.h (arg_max_access_size_given_by_arg_p):
42972         Clarify semantics.
42973         * tree-ssa-alias.cc (check_fnspec): Correctly interpret
42974         the size given by arg_max_access_size_given_by_arg_p as
42975         maximum, not exact, size.
42977 2023-04-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
42979         PR target/99195
42980         * config/aarch64/aarch64-simd.md (orn<mode>3): Rename to...
42981         (orn<mode>3<vczle><vczbe>): ... This.
42982         (bic<mode>3): Rename to...
42983         (bic<mode>3<vczle><vczbe>): ... This.
42984         (<su><maxmin><mode>3): Rename to...
42985         (<su><maxmin><mode>3<vczle><vczbe>): ... This.
42987 2023-04-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
42989         * config/aarch64/aarch64-simd.md (<su_optab>div<mode>3): New define_expand.
42990         * config/aarch64/iterators.md (VQDIV): New mode iterator.
42991         (vnx2di): New mode attribute.
42993 2023-04-25  Richard Biener  <rguenther@suse.de>
42995         PR rtl-optimization/109585
42996         * tree-ssa-alias.cc (aliasing_component_refs_p): Fix typo.
42998 2023-04-25  Jakub Jelinek  <jakub@redhat.com>
43000         PR target/109566
43001         * config/rs6000/rs6000.cc (rs6000_is_valid_rotate_dot_mask): For
43002         !TARGET_64BIT, don't return true if UINTVAL (mask) << (63 - nb)
43003         is larger than signed int maximum.
43005 2023-04-25  Martin Liska  <mliska@suse.cz>
43007         * doc/gcov.texi: Document the new "calls" field and document
43008         the API bump. Mention also "block_ids" for lines.
43009         * gcov.cc (output_intermediate_json_line): Output info about
43010         calls and extend branches as well.
43011         (generate_results): Bump version to 2.
43012         (output_line_details): Use block ID instead of a non-sensual
43013         index.
43015 2023-04-25  Roger Sayle  <roger@nextmovesoftware.com>
43017         * config/stormy16/stormy16.md (zero_extendqihi2): Restore/fix
43018         length attribute for the first (memory operand) alternative.
43020 2023-04-25  Victor Do Nascimento  <victor.donascimento@arm.com>
43022         * config/aarch64/aarch64-simd.md(aarch64_simd_stp<mode>): New.
43023         * config/aarch64/constraints.md: Make "Umn" relaxed memory
43024         constraint.
43025         * config/aarch64/iterators.md(ldpstp_vel_sz): New.
43027 2023-04-25  Aldy Hernandez  <aldyh@redhat.com>
43029         * value-range.cc (frange::set): Adjust constructor.
43030         * value-range.h (nan_state::nan_state): Replace default
43031         constructor with one taking an argument.
43033 2023-04-25  Aldy Hernandez  <aldyh@redhat.com>
43035         * ipa-cp.cc (ipa_range_contains_p): New.
43036         (decide_whether_version_node): Use it.
43038 2023-04-24  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
43040         * tree-ssa-forwprop.cc (is_combined_permutation_identity): Try to
43041         simplify two successive VEC_PERM_EXPRs with same VLA mask,
43042         where mask chooses elements in reverse order.
43044 2023-04-24  Andrew Pinski  <apinski@marvell.com>
43046         * tree-ssa-phiopt.cc (match_simplify_replacement): Add new arguments
43047         and support diamond shaped basic block form.
43048         (tree_ssa_phiopt_worker): Update call to match_simplify_replacement
43050 2023-04-24  Andrew Pinski  <apinski@marvell.com>
43052         * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
43053         Instead of calling last_and_only_stmt, look for the last statement
43054         manually.
43056 2023-04-24  Andrew Pinski  <apinski@marvell.com>
43058         * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
43059         New function.
43060         (match_simplify_replacement): Call
43061         empty_bb_or_one_feeding_into_p instead of doing it inline.
43063 2023-04-24  Andrew Pinski  <apinski@marvell.com>
43065         PR tree-optimization/68894
43066         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove the
43067         continue for the do_hoist_loads diamond case.
43069 2023-04-24  Andrew Pinski  <apinski@marvell.com>
43071         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Rearrange
43072         code for better code readability.
43074 2023-04-24  Andrew Pinski  <apinski@marvell.com>
43076         PR tree-optimization/109604
43077         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Move the
43078         diamond form check from ...
43079         (minmax_replacement): Here.
43081 2023-04-24  Patrick Palka  <ppalka@redhat.com>
43083         * tree.cc (strip_array_types): Don't define here.
43084         (is_typedef_decl): Don't define here.
43085         (typedef_variant_p): Don't define here.
43086         * tree.h (strip_array_types): Define here.
43087         (is_typedef_decl): Define here.
43088         (typedef_variant_p): Define here.
43090 2023-04-24  Frederik Harwath  <frederik@codesourcery.com>
43092         * doc/generic.texi (OpenMP): Add != to allowed
43093         conditions and state that vars can be unsigned.
43094         * tree.def (OMP_FOR): Likewise.
43096 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
43098         * config/aarch64/aarch64-simd.md (mulv2di3): New expander.
43100 2023-04-24  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
43102         * doc/install.texi: Consistently use Solaris rather than Solaris 2.
43103         Remove explicit Solaris 11 references.
43104         Markup fixes.
43105         (Options specification, --with-gnu-as): as and gas always differ
43106         on Solaris.
43107         Remove /usr/ccs/bin reference.
43108         (Installing GCC: Binaries, Solaris (SPARC, Intel)): Remove.
43109         (i?86-*-solaris2*): Merge assembler, linker recommendations ...
43110         (*-*-solaris2*): ... here.
43111         Update bundled GCC versions.
43112         Don't refer to pre-built binaries.
43113         Remove /bin/sh warning.
43114         Update assembler, linker recommendations.
43115         Document GNAT bootstrap compiler.
43116         (sparc-sun-solaris2*): Remove non-UltraSPARC reference.
43117         (sparc64-*-solaris2*): Move content...
43118         (sparcv9-*-solaris2*): ...here.
43119         Add GDC for 64-bit bootstrap compilers.
43121 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
43123         PR target/109406
43124         * config/aarch64/aarch64-sve.md (<optab><mode>3): Handle TARGET_SVE2 MUL
43125         case.
43126         * config/aarch64/aarch64-sve2.md (*aarch64_mul_unpredicated_<mode>): New
43127         pattern.
43129 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
43131         * config/aarch64/aarch64-simd.md (aarch64_<sur>abal2<mode>): Rename to...
43132         (aarch64_<su>abal2<mode>_insn): ... This.  Use RTL codes instead of unspec.
43133         (aarch64_<su>abal2<mode>): New define_expand.
43134         * config/aarch64/aarch64.cc (aarch64_abd_rtx_p): New function.
43135         (aarch64_rtx_costs): Handle ABD rtxes.
43136         * config/aarch64/aarch64.md (UNSPEC_SABAL2, UNSPEC_UABAL2): Delete.
43137         * config/aarch64/iterators.md (ABAL2): Delete.
43138         (sur): Remove handling of UNSPEC_UABAL2 and UNSPEC_SABAL2.
43140 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
43142         * config/aarch64/aarch64-simd.md (aarch64_<sur>abal<mode>): Rename to...
43143         (aarch64_<su>abal<mode>): ... This.  Use RTL codes instead of unspec.
43144         (<sur>sadv16qi): Rename to...
43145         (<su>sadv16qi): ... This.  Adjust for the above.
43146         * config/aarch64/aarch64-sve.md (<sur>sad<vsi2qi>): Rename to...
43147         (<su>sad<vsi2qi>): ... This.  Adjust for the above.
43148         * config/aarch64/aarch64.md (UNSPEC_SABAL, UNSPEC_UABAL): Delete.
43149         * config/aarch64/iterators.md (ABAL): Delete.
43150         (sur): Remove handling of UNSPEC_SABAL and UNSPEC_UABAL.
43152 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
43154         * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl2<mode>): Rename to...
43155         (aarch64_<su>abdl2<mode>_insn): ... This.  Use RTL codes instead of unspec.
43156         (aarch64_<su>abdl2<mode>): New define_expand.
43157         * config/aarch64/aarch64.md (UNSPEC_SABDL2, UNSPEC_UABDL2): Delete.
43158         * config/aarch64/iterators.md (ABDL2): Delete.
43159         (sur): Remove handling of UNSPEC_SABDL2 and UNSPEC_UABDL2.
43161 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
43163         * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl<mode>): Rename to...
43164         (aarch64_<su>abdl<mode>): ... This.  Use standard RTL ops instead of
43165         unspec.
43166         * config/aarch64/aarch64.md (UNSPEC_SABDL, UNSPEC_UABDL): Delete.
43167         * config/aarch64/iterators.md (ABDL): Delete.
43168         (sur): Remove handling of UNSPEC_SABDL and UNSPEC_UABDL.
43170 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
43172         * config/aarch64/aarch64-simd.md
43173         (*aarch64_<su>addlv<VDQV_L:mode>_ze<GPI:mode>): New pattern.
43175 2023-04-24  Richard Biener  <rguenther@suse.de>
43177         * gimple-ssa-split-paths.cc (is_feasible_trace): Avoid
43178         last_stmt.
43179         * graphite-scop-detection.cc (single_pred_cond_non_loop_exit):
43180         Likewise.
43181         * ipa-fnsummary.cc (set_cond_stmt_execution_predicate): Likewise.
43182         (set_switch_stmt_execution_predicate): Likewise.
43183         (phi_result_unknown_predicate): Likewise.
43184         * ipa-prop.cc (compute_complex_ancestor_jump_func): Likewise.
43185         (ipa_analyze_indirect_call_uses): Likewise.
43186         * predict.cc (predict_iv_comparison): Likewise.
43187         (predict_extra_loop_exits): Likewise.
43188         (predict_loops): Likewise.
43189         (tree_predict_by_opcode): Likewise.
43190         * gimple-predicate-analysis.cc (predicate::init_from_control_deps):
43191         Likewise.
43192         * gimple-pretty-print.cc (dump_implicit_edges): Likewise.
43193         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Likewise.
43194         (replace_phi_edge_with_variable): Likewise.
43195         (two_value_replacement): Likewise.
43196         (value_replacement): Likewise.
43197         (minmax_replacement): Likewise.
43198         (spaceship_replacement): Likewise.
43199         (cond_removal_in_builtin_zero_pattern): Likewise.
43200         * tree-ssa-reassoc.cc (maybe_optimize_range_tests): Likewise.
43201         * tree-ssa-sccvn.cc (vn_phi_eq): Likewise.
43202         (vn_phi_lookup): Likewise.
43203         (vn_phi_insert): Likewise.
43204         * tree-ssa-structalias.cc (compute_points_to_sets): Likewise.
43205         * tree-ssa-threadbackward.cc (back_threader::maybe_thread_block):
43206         Likewise.
43207         (back_threader_profitability::possibly_profitable_path_p):
43208         Likewise.
43209         * tree-ssa-threadedge.cc (jump_threader::thread_outgoing_edges):
43210         Likewise.
43211         * tree-switch-conversion.cc (pass_convert_switch::execute):
43212         Likewise.
43213         (pass_lower_switch<O0>::execute): Likewise.
43214         * tree-tailcall.cc (tree_optimize_tail_calls_1): Likewise.
43215         * tree-vect-loop-manip.cc (vect_loop_versioning): Likewise.
43216         * tree-vect-slp.cc (vect_slp_function): Likewise.
43217         * tree-vect-stmts.cc (cfun_returns): Likewise.
43218         * tree-vectorizer.cc (vect_loop_vectorized_call): Likewise.
43219         (vect_loop_dist_alias_call): Likewise.
43221 2023-04-24  Richard Biener  <rguenther@suse.de>
43223         * cfgcleanup.cc (outgoing_edges_match): Use FORWARDER_BLOCK_P.
43225 2023-04-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
43227         * config/riscv/riscv-vsetvl.cc
43228         (vector_infos_manager::all_avail_in_compatible_p): New function.
43229         (pass_vsetvl::refine_vsetvls): Optimize vsetvls.
43230         * config/riscv/riscv-vsetvl.h: New function.
43232 2023-04-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
43234         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::pre_vsetvl): Add function
43235         comment for cleanup_insns.
43237 2023-04-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
43239         * config/riscv/vector-iterators.md: New unspec to refine fault first load pattern.
43240         * config/riscv/vector.md: Refine fault first load pattern to erase avl from instructions
43241         with the fault first load property.
43243 2023-04-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
43245         * config/aarch64/aarch64-simd.md (aarch64_float_truncate_lo_): Rename to...
43246         (aarch64_float_truncate_lo_<mode><vczle><vczbe>): ... This.
43248 2023-04-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
43250         PR target/99195
43251         * config/aarch64/aarch64-simd.md (aarch64_addp<mode>): Rename to...
43252         (aarch64_addp<mode><vczle><vczbe>): ... This.
43254 2023-04-23  Roger Sayle  <roger@nextmovesoftware.com>
43256         * config/stormy16/stormy16.cc (xstormy16_rtx_costs): Rewrite to
43257         provide reasonable values for common arithmetic operations and
43258         immediate operands (in several machine modes).
43260 2023-04-23  Roger Sayle  <roger@nextmovesoftware.com>
43262         * config/stormy16/stormy16.cc (xstormy16_print_operand): Add %h
43263         format specifier to output high_part register name of SImode reg.
43264         * config/stormy16/stormy16.md (extendhisi2): New define_insn.
43265         (zero_extendqihi2): Fix lengths, consistent formatting and add
43266         "and Rx,#255" alternative, for documentation purposes.
43267         (zero_extendhisi2): New define_insn.
43269 2023-04-23  Roger Sayle  <roger@nextmovesoftware.com>
43271         * config/stormy16/stormy16.cc (xstormy16_output_shift): Implement
43272         SImode shifts by two by performing a single bit SImode shift twice.
43274 2023-04-23  Aldy Hernandez  <aldyh@redhat.com>
43276         PR tree-optimization/109593
43277         * value-range.cc (frange::operator==): Handle NANs.
43279 2023-04-23  liuhongt  <hongtao.liu@intel.com>
43281         PR rtl-optimization/108707
43282         * ira-costs.cc (scan_one_insn): Use NO_REGS instead of
43283         GENERAL_REGS when preferred reg_class is not known.
43285 2023-04-22  Andrew Pinski  <apinski@marvell.com>
43287         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker):
43288         Change the code around slightly to move diamond
43289         handling for do_store_elim/do_hoist_loads out of
43290         the big if/else.
43292 2023-04-22  Andrew Pinski  <apinski@marvell.com>
43294         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker):
43295         Remove check on empty_block_p.
43297 2023-04-22  Jakub Jelinek  <jakub@redhat.com>
43299         PR bootstrap/109589
43300         * system.h (class auto_mpz): Workaround PR62101 bug in GCC 4.8 and 4.9.
43301         * realmpfr.h (class auto_mpfr): Likewise.
43303 2023-04-22  Jakub Jelinek  <jakub@redhat.com>
43305         PR tree-optimization/109583
43306         * match.pd (fneg/fadd simplify): Don't call related_vector_mode
43307         if vec_mode is not VECTOR_MODE_P.
43309 2023-04-22  Jan Hubicka  <hubicka@ucw.cz>
43310             Ondrej Kubanek  <kubanek0ondrej@gmail.com>
43312         * cfgloopmanip.h (adjust_loop_info_after_peeling): Declare.
43313         * tree-ssa-loop-ch.cc (ch_base::copy_headers): Fix updating of
43314         loop profile and bounds after header duplication.
43315         * tree-ssa-loop-ivcanon.cc (adjust_loop_info_after_peeling):
43316         Break out from try_peel_loop; fix handling of 0 iterations.
43317         (try_peel_loop): Use adjust_loop_info_after_peeling.
43319 2023-04-21  Andrew MacLeod  <amacleod@redhat.com>
43321         PR tree-optimization/109546
43322         * tree-vrp.cc (remove_unreachable::remove_and_update_globals): Do
43323         not fold conditions with ADDR_EXPR early.
43325 2023-04-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
43327         * config/aarch64/aarch64.md (aarch64_umax<mode>3_insn): Delete.
43328         (umax<mode>3): Emit raw UMAX RTL instead of going through gen_ function
43329         for umax.
43330         (<optab><mode>3): New define_expand for MAXMIN_NOUMAX codes.
43331         (*aarch64_<optab><mode>3_zero): Define.
43332         (*aarch64_<optab><mode>3_cssc): Likewise.
43333         * config/aarch64/iterators.md (maxminand): New code attribute.
43335 2023-04-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
43337         PR target/108779
43338         * config/aarch64/aarch64-opts.h (enum aarch64_tp_reg): Define.
43339         * config/aarch64/aarch64-protos.h (aarch64_output_load_tp):
43340         Define prototype.
43341         * config/aarch64/aarch64.cc (aarch64_tpidr_register): Declare.
43342         (aarch64_override_options_internal): Handle the above.
43343         (aarch64_output_load_tp): New function.
43344         * config/aarch64/aarch64.md (aarch64_load_tp_hard): Call
43345         aarch64_output_load_tp.
43346         * config/aarch64/aarch64.opt (aarch64_tp_reg): Define enum.
43347         (mtp=): New option.
43348         * doc/invoke.texi (AArch64 Options): Document -mtp=.
43350 2023-04-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
43352         PR target/99195
43353         * config/aarch64/aarch64-simd.md (add_vec_concat_subst_le): Define.
43354         (add_vec_concat_subst_be): Likewise.
43355         (vczle): Likewise.
43356         (vczbe): Likewise.
43357         (add<mode>3): Rename to...
43358         (add<mode>3<vczle><vczbe>): ... This.
43359         (sub<mode>3): Rename to...
43360         (sub<mode>3<vczle><vczbe>): ... This.
43361         (mul<mode>3): Rename to...
43362         (mul<mode>3<vczle><vczbe>): ... This.
43363         (and<mode>3): Rename to...
43364         (and<mode>3<vczle><vczbe>): ... This.
43365         (ior<mode>3): Rename to...
43366         (ior<mode>3<vczle><vczbe>): ... This.
43367         (xor<mode>3): Rename to...
43368         (xor<mode>3<vczle><vczbe>): ... This.
43369         * config/aarch64/iterators.md (VDZ): Define.
43371 2023-04-21  Patrick Palka  <ppalka@redhat.com>
43373         * tree.cc (walk_tree_1): Avoid repeatedly dereferencing tp
43374         and type_p.
43376 2023-04-21  Jan Hubicka  <jh@suse.cz>
43378         * tree-ssa-loop-ch.cc (ch_base::copy_headers): Fix previous
43379         commit.
43381 2023-04-21  Vineet Gupta  <vineetg@rivosinc.com>
43383         * expmed.h (x_shift*_cost): convert to int [speed][mode][shift].
43384         (shift*_cost_ptr ()): Access x_shift*_cost array directly.
43386 2023-04-21  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
43388         * config/aarch64/aarch64.cc (aarch64_simd_dup_constant): Use
43389         force_reg instead of copy_to_mode_reg.
43390         (aarch64_expand_vector_init): Likewise.
43392 2023-04-21  Uroš Bizjak  <ubizjak@gmail.com>
43394         * config/i386/i386.h (REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Remove.
43395         (REG_OK_FOR_INDEX_NONSTRICT_P,  REG_OK_FOR_BASE_NONSTRICT_P): Ditto.
43396         (REG_OK_FOR_INDEX_STRICT_P, REG_OK_FOR_BASE_STRICT_P): Ditto.
43397         (FIRST_INDEX_REG, LAST_INDEX_REG): New defines.
43398         (LEGACY_INDEX_REG_P, LEGACY_INDEX_REGNO_P): New macros.
43399         (INDEX_REG_P, INDEX_REGNO_P): Ditto.
43400         (REGNO_OK_FOR_INDEX_P): Use INDEX_REGNO_P predicates.
43401         (REGNO_OK_FOR_INDEX_NONSTRICT_P): New macro.
43402         (EG_OK_FOR_BASE_NONSTRICT_P): Ditto.
43403         * config/i386/predicates.md (index_register_operand):
43404         Use REGNO_OK_FOR_INDEX_P and REGNO_OK_FOR_INDEX_NONSTRICT_P macros.
43405         * config/i386/i386.cc (ix86_legitimate_address_p): Use
43406         REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_BASE_NONSTRICT_P,
43407         REGNO_OK_FOR_INDEX_P and REGNO_OK_FOR_INDEX_NONSTRICT_P macros.
43409 2023-04-21  Jan Hubicka  <hubicka@ucw.cz>
43410             Ondrej Kubanek  <kubanek0ondrej@gmail.com>
43412         * tree-ssa-loop-ch.cc (ch_base::copy_headers): Update loop header and
43413         latch.
43415 2023-04-21  Richard Biener  <rguenther@suse.de>
43417         * is-a.h (safe_is_a): New.
43419 2023-04-21  Richard Biener  <rguenther@suse.de>
43421         * gimple-iterator.h (gimple_stmt_iterator::operator*): Add.
43422         (gphi_iterator::operator*): Likewise.
43424 2023-04-21  Jan Hubicka  <hubicka@ucw.cz>
43425             Michal Jires  <michal@jires.eu>
43427         * ipa-inline.cc (class inline_badness): New class.
43428         (edge_heap_t, edge_heap_node_t): Use inline_badness for badness instead
43429         of sreal.
43430         (update_edge_key): Update.
43431         (lookup_recursive_calls): Likewise.
43432         (recursive_inlining): Likewise.
43433         (add_new_edges_to_heap): Likewise.
43434         (inline_small_functions): Likewise.
43436 2023-04-21  Jan Hubicka  <hubicka@ucw.cz>
43438         * ipa-devirt.cc (odr_types_equivalent_p): Cleanup warned checks.
43440 2023-04-21  Richard Biener  <rguenther@suse.de>
43442         PR tree-optimization/109573
43443         * tree-vect-loop.cc (vectorizable_live_operation): Allow
43444         unhandled SSA copy as well.  Demote assert to checking only.
43446 2023-04-21  Richard Biener  <rguenther@suse.de>
43448         * df-core.cc (df_analyze): Compute RPO on the reverse graph
43449         for DF_BACKWARD problems.
43450         (loop_post_order_compute): Rename to ...
43451         (loop_rev_post_order_compute): ... this, compute a RPO.
43452         (loop_inverted_post_order_compute): Rename to ...
43453         (loop_inverted_rev_post_order_compute): ... this, compute a RPO.
43454         (df_analyze_loop): Use RPO on the forward graph for DF_FORWARD
43455         problems, RPO on the inverted graph for DF_BACKWARD.
43457 2023-04-21  Richard Biener  <rguenther@suse.de>
43459         * cfganal.h (inverted_rev_post_order_compute): Rename
43460         from ...
43461         (inverted_post_order_compute): ... this.  Add struct function
43462         argument, change allocation to a C array.
43463         * cfganal.cc (inverted_rev_post_order_compute): Likewise.
43464         * lcm.cc (compute_antinout_edge): Adjust.
43465         * lra-lives.cc (lra_create_live_ranges_1): Likewise.
43466         * tree-ssa-dce.cc (remove_dead_stmt): Likewise.
43467         * tree-ssa-pre.cc (compute_antic): Likewise.
43469 2023-04-21  Richard Biener  <rguenther@suse.de>
43471         * df.h (df_d::postorder_inverted): Change back to int *,
43472         clarify comments.
43473         * df-core.cc (rest_of_handle_df_finish): Adjust.
43474         (df_analyze_1): Likewise.
43475         (df_analyze): For DF_FORWARD problems use RPO on the forward
43476         graph.  Adjust.
43477         (loop_inverted_post_order_compute): Adjust API.
43478         (df_analyze_loop): Adjust.
43479         (df_get_n_blocks): Likewise.
43480         (df_get_postorder): Likewise.
43482 2023-04-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
43484         PR target/108270
43485         * config/riscv/riscv-vsetvl.cc
43486         (vector_infos_manager::all_empty_predecessor_p): New function.
43487         (pass_vsetvl::backward_demand_fusion): Ditto.
43488         * config/riscv/riscv-vsetvl.h: Ditto.
43490 2023-04-21  Robin Dapp  <rdapp@ventanamicro.com>
43492         PR target/109582
43493         * config/riscv/generic.md: Change standard names to insn names.
43495 2023-04-21  Richard Biener  <rguenther@suse.de>
43497         * lcm.cc (compute_antinout_edge): Use RPO on the inverted graph.
43498         (compute_laterin): Use RPO.
43499         (compute_available): Likewise.
43501 2023-04-21  Peng Fan  <fanpeng@loongson.cn>
43503         * config/loongarch/gnu-user.h (MUSL_DYNAMIC_LINKER): Redefine.
43505 2023-04-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
43507         PR target/109547
43508         * config/riscv/riscv-vsetvl.cc (local_eliminate_vsetvl_insn): New function.
43509         (vector_insn_info::skip_avl_compatible_p): Ditto.
43510         (vector_insn_info::merge): Remove default value.
43511         (pass_vsetvl::compute_local_backward_infos): Ditto.
43512         (pass_vsetvl::cleanup_insns): Add local vsetvl elimination.
43513         * config/riscv/riscv-vsetvl.h: Ditto.
43515 2023-04-20  Alejandro Colomar  <alx.manpages@gmail.com>
43517         * doc/extend.texi (Common Function Attributes): Remove duplicate
43518         word.
43520 2023-04-20  Andrew MacLeod  <amacleod@redhat.com>
43522         PR tree-optimization/109564
43523         * gimple-range-fold.cc (fold_using_range::range_of_phi): Do no ignore
43524         UNDEFINED range names when deciding if all PHI arguments are the same,
43526 2023-04-20  Jakub Jelinek  <jakub@redhat.com>
43528         PR tree-optimization/109011
43529         * tree-vect-patterns.cc (vect_recog_ctz_ffs_pattern): Use
43530         .CTZ (X) = .POPCOUNT ((X - 1) & ~X) in preference to
43531         .CTZ (X) = PREC - .POPCOUNT (X | -X).
43533 2023-04-20  Vladimir N. Makarov  <vmakarov@redhat.com>
43535         * lra-constraints.cc (match_reload): Exclude some hard regs for
43536         multi-reg inout reload pseudos used in asm in different mode.
43538 2023-04-20  Uros Bizjak  <ubizjak@gmail.com>
43540         * config/arm/arm.cc (thumb1_legitimate_address_p):
43541         Use VIRTUAL_REGISTER_P predicate.
43542         (arm_eliminable_register): Ditto.
43543         * config/avr/avr.md (push<mode>_1): Ditto.
43544         * config/bfin/predicates.md (register_no_elim_operand): Ditto.
43545         * config/h8300/predicates.md (register_no_sp_elim_operand): Ditto.
43546         * config/i386/predicates.md (register_no_elim_operand): Ditto.
43547         * config/iq2000/predicates.md (call_insn_operand): Ditto.
43548         * config/microblaze/microblaze.h (CALL_INSN_OP): Ditto.
43550 2023-04-20  Uros Bizjak  <ubizjak@gmail.com>
43552         PR target/78952
43553         * config/i386/predicates.md (extract_operator): New predicate.
43554         * config/i386/i386.md (any_extract): Remove code iterator.
43555         (*cmpqi_ext<mode>_1_mem_rex64): Use extract_operator predicate.
43556         (*cmpqi_ext<mode>_1): Ditto.
43557         (*cmpqi_ext<mode>_2): Ditto.
43558         (*cmpqi_ext<mode>_3_mem_rex64): Ditto.
43559         (*cmpqi_ext<mode>_3): Ditto.
43560         (*cmpqi_ext<mode>_4): Ditto.
43561         (*extzvqi_mem_rex64): Ditto.
43562         (*extzvqi): Ditto.
43563         (*insvqi_2): Ditto.
43564         (*extendqi<SWI24:mode>_ext_1): Ditto.
43565         (*addqi_ext<mode>_0): Ditto.
43566         (*addqi_ext<mode>_1): Ditto.
43567         (*addqi_ext<mode>_2): Ditto.
43568         (*subqi_ext<mode>_0): Ditto.
43569         (*subqi_ext<mode>_2): Ditto.
43570         (*testqi_ext<mode>_1): Ditto.
43571         (*testqi_ext<mode>_2): Ditto.
43572         (*andqi_ext<mode>_0): Ditto.
43573         (*andqi_ext<mode>_1): Ditto.
43574         (*andqi_ext<mode>_1_cc): Ditto.
43575         (*andqi_ext<mode>_2): Ditto.
43576         (*<any_or:code>qi_ext<mode>_0): Ditto.
43577         (*<any_or:code>qi_ext<mode>_1): Ditto.
43578         (*<any_or:code>qi_ext<mode>_2): Ditto.
43579         (*xorqi_ext<mode>_1_cc): Ditto.
43580         (*negqi_ext<mode>_2): Ditto.
43581         (*ashlqi_ext<mode>_2): Ditto.
43582         (*<any_shiftrt:insn>qi_ext<mode>_2): Ditto.
43584 2023-04-20  Raphael Zinsly  <rzinsly@ventanamicro.com>
43586         PR target/108248
43587         * config/riscv/bitmanip.md (clz, ctz, pcnt, min, max patterns): Use
43588         <bitmanip_insn> as the type to allow for fine grained control of
43589         scheduling these insns.
43590         * config/riscv/generic.md (generic_alu): Add bitmanip, clz, ctz, pcnt,
43591         min, max.
43592         * config/riscv/riscv.md (type attribute): Add types for clz, ctz,
43593         pcnt, signed and unsigned min/max.
43595 2023-04-20  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
43596             kito-cheng  <kito.cheng@sifive.com>
43598         * config/riscv/riscv.h (enum reg_class): Fix RVV register order.
43600 2023-04-20  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
43601             kito-cheng  <kito.cheng@sifive.com>
43603         PR target/109535
43604         * config/riscv/riscv-vsetvl.cc (count_regno_occurrences): New function.
43605         (pass_vsetvl::cleanup_insns): Fix bug.
43607 2023-04-20  Andrew Stubbs  <ams@codesourcery.com>
43609         * config/gcn/gcn-valu.md (vnsi, VnSI): Add scalar modes.
43610         (ldexp<mode>3): Delete.
43611         (ldexp<mode>3<exec>): Change "B" to "A".
43613 2023-04-20  Jakub Jelinek  <jakub@redhat.com>
43614             Jonathan Wakely  <jwakely@redhat.com>
43616         * tree.h (built_in_function_equal_p): New helper function.
43617         (fndecl_built_in_p): Turn into variadic template to support
43618         1 or more built_in_function arguments.
43619         * builtins.cc (fold_builtin_expect): Use 3 argument fndecl_built_in_p.
43620         * gimplify.cc (goa_stabilize_expr): Likewise.
43621         * cgraphclones.cc (cgraph_node::create_clone): Likewise.
43622         * ipa-fnsummary.cc (compute_fn_summary): Likewise.
43623         * omp-low.cc (setjmp_or_longjmp_p): Likewise.
43624         * cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee,
43625         cgraph_update_edges_for_call_stmt_node,
43626         cgraph_edge::verify_corresponds_to_fndecl,
43627         cgraph_node::verify_node): Likewise.
43628         * tree-stdarg.cc (optimize_va_list_gpr_fpr_size): Likewise.
43629         * gimple-ssa-warn-access.cc (matching_alloc_calls_p): Likewise.
43630         * ipa-prop.cc (try_make_edge_direct_virtual_call): Likewise.
43632 2023-04-20  Jakub Jelinek  <jakub@redhat.com>
43634         PR tree-optimization/109011
43635         * tree-vect-patterns.cc (vect_recog_ctz_ffs_pattern): New function.
43636         (vect_recog_popcount_clz_ctz_ffs_pattern): Move vect_pattern_detected
43637         call later.  Don't punt for IFN_CTZ or IFN_FFS if it doesn't have
43638         direct optab support, but has instead IFN_CLZ, IFN_POPCOUNT or
43639         for IFN_FFS IFN_CTZ support, use vect_recog_ctz_ffs_pattern for that
43640         case.
43641         (vect_vect_recog_func_ptrs): Add ctz_ffs entry.
43643 2023-04-20  Richard Biener  <rguenther@suse.de>
43645         * df-core.cc (rest_of_handle_df_initialize): Remove
43646         computation of df->postorder, df->postorder_inverted and
43647         df->n_blocks.
43649 2023-04-20  Haochen Jiang  <haochen.jiang@intel.com>
43651         * common/config/i386/i386-common.cc
43652         (OPTION_MASK_ISA2_AVX_UNSET): Add OPTION_MASK_ISA2_VAES_UNSET.
43653         (ix86_handle_option): Set AVX flag for VAES.
43654         * config/i386/i386-builtins.cc (ix86_init_mmx_sse_builtins):
43655         Add OPTION_MASK_ISA2_VAES_UNSET.
43656         (def_builtin): Share builtin between AES and VAES.
43657         * config/i386/i386-expand.cc (ix86_check_builtin_isa_match):
43658         Ditto.
43659         * config/i386/i386.md (aes): New isa attribute.
43660         * config/i386/sse.md (aesenc): Add pattern for VAES with xmm.
43661         (aesenclast): Ditto.
43662         (aesdec): Ditto.
43663         (aesdeclast): Ditto.
43664         * config/i386/vaesintrin.h: Remove redundant avx target push.
43665         * config/i386/wmmintrin.h (_mm_aesdec_si128): Change to macro.
43666         (_mm_aesdeclast_si128): Ditto.
43667         (_mm_aesenc_si128): Ditto.
43668         (_mm_aesenclast_si128): Ditto.
43670 2023-04-20  Hu, Lin1  <lin1.hu@intel.com>
43672         * config/i386/avx2intrin.h
43673         (_MM_REDUCE_OPERATOR_BASIC_EPI16): New macro.
43674         (_MM_REDUCE_OPERATOR_MAX_MIN_EP16): Ditto.
43675         (_MM256_REDUCE_OPERATOR_BASIC_EPI16): Ditto.
43676         (_MM256_REDUCE_OPERATOR_MAX_MIN_EP16): Ditto.
43677         (_MM_REDUCE_OPERATOR_BASIC_EPI8): Ditto.
43678         (_MM_REDUCE_OPERATOR_MAX_MIN_EP8): Ditto.
43679         (_MM256_REDUCE_OPERATOR_BASIC_EPI8): Ditto.
43680         (_MM256_REDUCE_OPERATOR_MAX_MIN_EP8): Ditto.
43681         (_mm_reduce_add_epi16): New instrinsics.
43682         (_mm_reduce_mul_epi16): Ditto.
43683         (_mm_reduce_and_epi16): Ditto.
43684         (_mm_reduce_or_epi16): Ditto.
43685         (_mm_reduce_max_epi16): Ditto.
43686         (_mm_reduce_max_epu16): Ditto.
43687         (_mm_reduce_min_epi16): Ditto.
43688         (_mm_reduce_min_epu16): Ditto.
43689         (_mm256_reduce_add_epi16): Ditto.
43690         (_mm256_reduce_mul_epi16): Ditto.
43691         (_mm256_reduce_and_epi16): Ditto.
43692         (_mm256_reduce_or_epi16): Ditto.
43693         (_mm256_reduce_max_epi16): Ditto.
43694         (_mm256_reduce_max_epu16): Ditto.
43695         (_mm256_reduce_min_epi16): Ditto.
43696         (_mm256_reduce_min_epu16): Ditto.
43697         (_mm_reduce_add_epi8): Ditto.
43698         (_mm_reduce_mul_epi8): Ditto.
43699         (_mm_reduce_and_epi8): Ditto.
43700         (_mm_reduce_or_epi8): Ditto.
43701         (_mm_reduce_max_epi8): Ditto.
43702         (_mm_reduce_max_epu8): Ditto.
43703         (_mm_reduce_min_epi8): Ditto.
43704         (_mm_reduce_min_epu8): Ditto.
43705         (_mm256_reduce_add_epi8): Ditto.
43706         (_mm256_reduce_mul_epi8): Ditto.
43707         (_mm256_reduce_and_epi8): Ditto.
43708         (_mm256_reduce_or_epi8): Ditto.
43709         (_mm256_reduce_max_epi8): Ditto.
43710         (_mm256_reduce_max_epu8): Ditto.
43711         (_mm256_reduce_min_epi8): Ditto.
43712         (_mm256_reduce_min_epu8): Ditto.
43713         * config/i386/avx512vlbwintrin.h:
43714         (_mm_mask_reduce_add_epi16): Ditto.
43715         (_mm_mask_reduce_mul_epi16): Ditto.
43716         (_mm_mask_reduce_and_epi16): Ditto.
43717         (_mm_mask_reduce_or_epi16): Ditto.
43718         (_mm_mask_reduce_max_epi16): Ditto.
43719         (_mm_mask_reduce_max_epu16): Ditto.
43720         (_mm_mask_reduce_min_epi16): Ditto.
43721         (_mm_mask_reduce_min_epu16): Ditto.
43722         (_mm256_mask_reduce_add_epi16): Ditto.
43723         (_mm256_mask_reduce_mul_epi16): Ditto.
43724         (_mm256_mask_reduce_and_epi16): Ditto.
43725         (_mm256_mask_reduce_or_epi16): Ditto.
43726         (_mm256_mask_reduce_max_epi16): Ditto.
43727         (_mm256_mask_reduce_max_epu16): Ditto.
43728         (_mm256_mask_reduce_min_epi16): Ditto.
43729         (_mm256_mask_reduce_min_epu16): Ditto.
43730         (_mm_mask_reduce_add_epi8): Ditto.
43731         (_mm_mask_reduce_mul_epi8): Ditto.
43732         (_mm_mask_reduce_and_epi8): Ditto.
43733         (_mm_mask_reduce_or_epi8): Ditto.
43734         (_mm_mask_reduce_max_epi8): Ditto.
43735         (_mm_mask_reduce_max_epu8): Ditto.
43736         (_mm_mask_reduce_min_epi8): Ditto.
43737         (_mm_mask_reduce_min_epu8): Ditto.
43738         (_mm256_mask_reduce_add_epi8): Ditto.
43739         (_mm256_mask_reduce_mul_epi8): Ditto.
43740         (_mm256_mask_reduce_and_epi8): Ditto.
43741         (_mm256_mask_reduce_or_epi8): Ditto.
43742         (_mm256_mask_reduce_max_epi8): Ditto.
43743         (_mm256_mask_reduce_max_epu8): Ditto.
43744         (_mm256_mask_reduce_min_epi8): Ditto.
43745         (_mm256_mask_reduce_min_epu8): Ditto.
43747 2023-04-20  Haochen Jiang  <haochen.jiang@intel.com>
43749         * common/config/i386/i386-common.cc
43750         (OPTION_MASK_ISA_VPCLMULQDQ_SET):
43751         Add OPTION_MASK_ISA_PCLMUL_SET and OPTION_MASK_ISA_AVX_SET.
43752         (OPTION_MASK_ISA_AVX_UNSET):
43753         Add OPTION_MASK_ISA_VPCLMULQDQ_UNSET.
43754         (OPTION_MASK_ISA_PCLMUL_UNSET): Ditto.
43755         * config/i386/i386.md (vpclmulqdqvl): New.
43756         * config/i386/sse.md (pclmulqdq): Add evex encoding.
43757         * config/i386/vpclmulqdqintrin.h: Remove redudant avx target
43758         push.
43760 2023-04-20  Haochen Jiang  <haochen.jiang@intel.com>
43762         * config/i386/avx512vlbwintrin.h
43763         (_mm_mask_blend_epi16): Remove __OPTIMIZE__ wrapper.
43764         (_mm_mask_blend_epi8): Ditto.
43765         (_mm256_mask_blend_epi16): Ditto.
43766         (_mm256_mask_blend_epi8): Ditto.
43767         * config/i386/avx512vlintrin.h
43768         (_mm256_mask_blend_pd): Ditto.
43769         (_mm256_mask_blend_ps): Ditto.
43770         (_mm256_mask_blend_epi64): Ditto.
43771         (_mm256_mask_blend_epi32): Ditto.
43772         (_mm_mask_blend_pd): Ditto.
43773         (_mm_mask_blend_ps): Ditto.
43774         (_mm_mask_blend_epi64): Ditto.
43775         (_mm_mask_blend_epi32): Ditto.
43776         * config/i386/sse.md (VF_AVX512BWHFBF16): Removed.
43777         (VF_AVX512HFBFVL): Move it before the first usage.
43778         (<avx512>_blendm<mode>): Change iterator from VF_AVX512BWHFBF16
43779         to VF_AVX512HFBFVL.
43781 2023-04-20  Haochen Jiang  <haochen.jiang@intel.com>
43783         * common/config/i386/i386-common.cc
43784         (OPTION_MASK_ISA_AVX512VBMI2_SET): Change OPTION_MASK_ISA_AVX512F_SET
43785         to OPTION_MASK_ISA_AVX512BW_SET.
43786         (OPTION_MASK_ISA_AVX512F_UNSET):
43787         Remove OPTION_MASK_ISA_AVX512VBMI2_UNSET.
43788         (OPTION_MASK_ISA_AVX512BW_UNSET):
43789         Add OPTION_MASK_ISA_AVX512VBMI2_UNSET.
43790         * config/i386/avx512vbmi2intrin.h: Do not push avx512bw.
43791         * config/i386/avx512vbmi2vlintrin.h: Ditto.
43792         * config/i386/i386-builtin.def: Remove OPTION_MASK_ISA_AVX512BW.
43793         * config/i386/sse.md (VI12_AVX512VLBW): Removed.
43794         (VI12_VI48F_AVX512VLBW): Rename to VI12_VI48F_AVX512VL.
43795         (compress<mode>_mask): Change iterator from VI12_AVX512VLBW to
43796         VI12_AVX512VL.
43797         (compressstore<mode>_mask): Ditto.
43798         (expand<mode>_mask): Ditto.
43799         (expand<mode>_maskz): Ditto.
43800         (*expand<mode>_mask): Change iterator from VI12_VI48F_AVX512VLBW to
43801         VI12_VI48F_AVX512VL.
43803 2023-04-20  Haochen Jiang  <haochen.jiang@intel.com>
43805         * common/config/i386/i386-common.cc
43806         (OPTION_MASK_ISA_AVX512BITALG_SET):
43807         Change OPTION_MASK_ISA_AVX512F_SET
43808         to OPTION_MASK_ISA_AVX512BW_SET.
43809         (OPTION_MASK_ISA_AVX512F_UNSET):
43810         Remove OPTION_MASK_ISA_AVX512BITALG_SET.
43811         (OPTION_MASK_ISA_AVX512BW_UNSET):
43812         Add OPTION_MASK_ISA_AVX512BITALG_SET.
43813         * config/i386/avx512bitalgintrin.h: Do not push avx512bw.
43814         * config/i386/i386-builtin.def:
43815         Remove redundant OPTION_MASK_ISA_AVX512BW.
43816         * config/i386/sse.md (VI1_AVX512VLBW): Removed.
43817         (avx512vl_vpshufbitqmb<mode><mask_scalar_merge_name>):
43818         Change the iterator from VI1_AVX512VLBW to VI1_AVX512VL.
43820 2023-04-20  Haochen Jiang  <haochen.jiang@intel.com>
43822         * config/i386/i386-expand.cc
43823         (ix86_check_builtin_isa_match): Correct wrong comments.
43824         Add a new macro SHARE_BUILTIN and refactor the current if
43825         clauses to macro.
43827 2023-04-20  Mo, Zewei  <zewei.mo@intel.com>
43829         * config/i386/cpuid.h: Open a new section for Extended Features
43830         Leaf (%eax == 7, %ecx == 0) and Extended Features Sub-leaf (%eax == 7,
43831         %ecx == 1).
43833 2023-04-20  Hu, Lin1  <lin1.hu@intel.com>
43835         * config/i386/sse.md: Modify insn vperm{i,f}
43836         and vshuf{i,f}.
43838 2023-04-19  Max Filippov  <jcmvbkbc@gmail.com>
43840         * config/xtensa/xtensa-opts.h: New header.
43841         * config/xtensa/xtensa.h (STRICT_ALIGNMENT): Redefine as
43842         xtensa_strict_align.
43843         * config/xtensa/xtensa.cc (xtensa_option_override): When
43844         -m[no-]strict-align is not specified in the command line set
43845         xtensa_strict_align to 0 if the hardware supports both unaligned
43846         loads and stores or to 1 otherwise.
43847         * config/xtensa/xtensa.opt (mstrict-align): New option.
43848         * doc/invoke.texi (Xtensa Options): Document -m[no-]strict-align.
43850 2023-04-19  Max Filippov  <jcmvbkbc@gmail.com>
43852         * config/xtensa/xtensa-dynconfig.cc (xtensa_get_config_v4): New
43853         function.
43855 2023-04-19  Andrew Pinski  <apinski@marvell.com>
43857         * config/i386/i386.md (*movsicc_noc_zext_1): New pattern.
43859 2023-04-19  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
43861         * config/riscv/riscv-modes.def (FLOAT_MODE): Add chunk 128 support.
43862         (VECTOR_BOOL_MODE): Ditto.
43863         (ADJUST_NUNITS): Ditto.
43864         (ADJUST_ALIGNMENT): Ditto.
43865         (ADJUST_BYTESIZE): Ditto.
43866         (ADJUST_PRECISION): Ditto.
43867         (RVV_MODES): Ditto.
43868         (VECTOR_MODE_WITH_PREFIX): Ditto.
43869         * config/riscv/riscv-v.cc (ENTRY): Ditto.
43870         (get_vlmul): Ditto.
43871         (get_ratio): Ditto.
43872         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TYPE): Ditto.
43873         * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE): Ditto.
43874         (vbool64_t): Ditto.
43875         (vbool32_t): Ditto.
43876         (vbool16_t): Ditto.
43877         (vbool8_t): Ditto.
43878         (vbool4_t): Ditto.
43879         (vbool2_t): Ditto.
43880         (vbool1_t): Ditto.
43881         (vint8mf8_t): Ditto.
43882         (vuint8mf8_t): Ditto.
43883         (vint8mf4_t): Ditto.
43884         (vuint8mf4_t): Ditto.
43885         (vint8mf2_t): Ditto.
43886         (vuint8mf2_t): Ditto.
43887         (vint8m1_t): Ditto.
43888         (vuint8m1_t): Ditto.
43889         (vint8m2_t): Ditto.
43890         (vuint8m2_t): Ditto.
43891         (vint8m4_t): Ditto.
43892         (vuint8m4_t): Ditto.
43893         (vint8m8_t): Ditto.
43894         (vuint8m8_t): Ditto.
43895         (vint16mf4_t): Ditto.
43896         (vuint16mf4_t): Ditto.
43897         (vint16mf2_t): Ditto.
43898         (vuint16mf2_t): Ditto.
43899         (vint16m1_t): Ditto.
43900         (vuint16m1_t): Ditto.
43901         (vint16m2_t): Ditto.
43902         (vuint16m2_t): Ditto.
43903         (vint16m4_t): Ditto.
43904         (vuint16m4_t): Ditto.
43905         (vint16m8_t): Ditto.
43906         (vuint16m8_t): Ditto.
43907         (vint32mf2_t): Ditto.
43908         (vuint32mf2_t): Ditto.
43909         (vint32m1_t): Ditto.
43910         (vuint32m1_t): Ditto.
43911         (vint32m2_t): Ditto.
43912         (vuint32m2_t): Ditto.
43913         (vint32m4_t): Ditto.
43914         (vuint32m4_t): Ditto.
43915         (vint32m8_t): Ditto.
43916         (vuint32m8_t): Ditto.
43917         (vint64m1_t): Ditto.
43918         (vuint64m1_t): Ditto.
43919         (vint64m2_t): Ditto.
43920         (vuint64m2_t): Ditto.
43921         (vint64m4_t): Ditto.
43922         (vuint64m4_t): Ditto.
43923         (vint64m8_t): Ditto.
43924         (vuint64m8_t): Ditto.
43925         (vfloat32mf2_t): Ditto.
43926         (vfloat32m1_t): Ditto.
43927         (vfloat32m2_t): Ditto.
43928         (vfloat32m4_t): Ditto.
43929         (vfloat32m8_t): Ditto.
43930         (vfloat64m1_t): Ditto.
43931         (vfloat64m2_t): Ditto.
43932         (vfloat64m4_t): Ditto.
43933         (vfloat64m8_t): Ditto.
43934         * config/riscv/riscv-vector-switch.def (ENTRY): Ditto.
43935         * config/riscv/riscv.cc (riscv_legitimize_poly_move): Ditto.
43936         (riscv_convert_vector_bits): Ditto.
43937         * config/riscv/riscv.md:
43938         * config/riscv/vector-iterators.md:
43939         * config/riscv/vector.md
43940         (@pred_indexed_<order>store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
43941         (@pred_indexed_<order>store<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
43942         (@pred_indexed_<order>store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
43943         (@pred_indexed_<order>store<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
43944         (@pred_indexed_<order>store<VNX128_Q:mode><VNX128_Q:mode>): Ditto.
43945         (@pred_reduc_<reduc><mode><vlmul1_zve64>): Ditto.
43946         (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve64>): Ditto.
43947         (@pred_reduc_plus<order><mode><vlmul1_zve64>): Ditto.
43948         (@pred_widen_reduc_plus<order><mode><vwlmul1_zve64>): Ditto.
43950 2023-04-19  Pan Li  <pan2.li@intel.com>
43952         * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
43953         Align IOR (A | (~A) -> -1) optimization MODE_CLASS condition to AND.
43955 2023-04-19  Uros Bizjak  <ubizjak@gmail.com>
43957         PR target/78904
43958         PR target/78952
43959         * config/i386/i386.md (*cmpqi_ext<mode>_1_mem_rex64): New insn pattern.
43960         (*cmpqi_ext<mode>_1): Use nonimmediate_operand predicate
43961         for operand 0. Use any_extract code iterator.
43962         (*cmpqi_ext<mode>_1 peephole2): New peephole2 pattern.
43963         (*cmpqi_ext<mode>_2): Use any_extract code iterator.
43964         (*cmpqi_ext<mode>_3_mem_rex64): New insn pattern.
43965         (*cmpqi_ext<mode>_1): Use general_operand predicate
43966         for operand 1. Use any_extract code iterator.
43967         (*cmpqi_ext<mode>_3 peephole2): New peephole2 pattern.
43968         (*cmpqi_ext<mode>_4): Use any_extract code iterator.
43970 2023-04-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
43972         * config/aarch64/aarch64-simd.md (aarch64_saddw2<mode>): Delete.
43973         (aarch64_uaddw2<mode>): Delete.
43974         (aarch64_ssubw2<mode>): Delete.
43975         (aarch64_usubw2<mode>): Delete.
43976         (aarch64_<ANY_EXTEND:su><ADDSUB:optab>w2<mode>): New define_expand.
43978 2023-04-19  Richard Biener  <rguenther@suse.de>
43980         * tree-ssa-structalias.cc (do_ds_constraint): Use
43981         solve_add_graph_edge.
43983 2023-04-19  Richard Biener  <rguenther@suse.de>
43985         * tree-ssa-structalias.cc (solve_add_graph_edge): New function,
43986         split out from ...
43987         (do_sd_constraint): ... here.
43989 2023-04-19  Richard Biener  <rguenther@suse.de>
43991         * tree-cfg.cc (gimple_can_merge_blocks_p): Remove condition
43992         rejecting the merge when A contains only a non-local label.
43994 2023-04-19  Uros Bizjak  <ubizjak@gmail.com>
43996         * rtl.h (VIRTUAL_REGISTER_P): New predicate.
43997         (VIRTUAL_REGISTER_NUM_P): Ditto.
43998         (REGNO_PTR_FRAME_P): Use VIRTUAL_REGISTER_NUM_P predicate.
43999         * expr.cc (force_operand): Use VIRTUAL_REGISTER_P predicate.
44000         * function.cc (instantiate_decl_rtl): Ditto.
44001         * rtlanal.cc (rtx_addr_can_trap_p_1): Ditto.
44002         (nonzero_address_p): Ditto.
44003         (refers_to_regno_p): Use VIRTUAL_REGISTER_NUM_P predicate.
44005 2023-04-19  Aldy Hernandez  <aldyh@redhat.com>
44007         * value-range.h (Value_Range::Value_Range): Avoid pointer sharing.
44009 2023-04-19  Richard Biener  <rguenther@suse.de>
44011         * system.h (auto_mpz::operator->()): New.
44012         * realmpfr.h (auto_mpfr::operator->()): New.
44013         * builtins.cc (do_mpfr_lgamma_r): Use auto_mpfr.
44014         * real.cc (real_from_string): Likewise.
44015         (dconst_e_ptr): Likewise.
44016         (dconst_sqrt2_ptr): Likewise.
44017         * tree-ssa-loop-niter.cc (refine_value_range_using_guard):
44018         Use auto_mpz.
44019         (bound_difference_of_offsetted_base): Likewise.
44020         (number_of_iterations_ne): Likewise.
44021         (number_of_iterations_lt_to_ne): Likewise.
44022         * ubsan.cc: Include realmpfr.h.
44023         (ubsan_instrument_float_cast): Use auto_mpfr.
44025 2023-04-19  Richard Biener  <rguenther@suse.de>
44027         * tree-ssa-structalias.cc (solve_graph): Remove self-copy
44028         edges, remove edges from escaped after special-casing them.
44030 2023-04-19  Richard Biener  <rguenther@suse.de>
44032         * tree-ssa-structalias.cc (do_sd_constraint): Fixup escape
44033         special casing.
44035 2023-04-19  Richard Biener  <rguenther@suse.de>
44037         * tree-ssa-structalias.cc (do_sd_constraint): Do not write
44038         to the LHS varinfo solution member.
44040 2023-04-19  Richard Biener  <rguenther@suse.de>
44042         * tree-ssa-structalias.cc (topo_visit): Look at the real
44043         destination of edges.
44045 2023-04-19  Richard Biener  <rguenther@suse.de>
44047         PR tree-optimization/44794
44048         * tree-ssa-loop-manip.cc (tree_transform_and_unroll_loop):
44049         If an epilogue loop is required set its iteration upper bound.
44051 2023-04-19  Xi Ruoyao  <xry111@xry111.site>
44053         PR target/109465
44054         * config/loongarch/loongarch-protos.h
44055         (loongarch_expand_block_move): Add a parameter as alignment RTX.
44056         * config/loongarch/loongarch.h:
44057         (LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER): Remove.
44058         (LARCH_MAX_MOVE_BYTES_STRAIGHT): Remove.
44059         (LARCH_MAX_MOVE_OPS_PER_LOOP_ITER): Define.
44060         (LARCH_MAX_MOVE_OPS_STRAIGHT): Define.
44061         (MOVE_RATIO): Use LARCH_MAX_MOVE_OPS_PER_LOOP_ITER instead of
44062         LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER.
44063         * config/loongarch/loongarch.cc (loongarch_expand_block_move):
44064         Take the alignment from the parameter, but set it to
44065         UNITS_PER_WORD if !TARGET_STRICT_ALIGN.  Limit the length of
44066         straight-line implementation with LARCH_MAX_MOVE_OPS_STRAIGHT
44067         instead of LARCH_MAX_MOVE_BYTES_STRAIGHT.
44068         (loongarch_block_move_straight): When there are left-over bytes,
44069         half the mode size instead of falling back to byte mode at once.
44070         (loongarch_block_move_loop): Limit the length of loop body with
44071         LARCH_MAX_MOVE_OPS_PER_LOOP_ITER instead of
44072         LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER.
44073         * config/loongarch/loongarch.md (cpymemsi): Pass the alignment
44074         to loongarch_expand_block_move.
44076 2023-04-19  Xi Ruoyao  <xry111@xry111.site>
44078         * config/loongarch/loongarch.cc
44079         (loongarch_setup_incoming_varargs): Don't save more GARs than
44080         cfun->va_list_gpr_size / UNITS_PER_WORD.
44082 2023-04-19  Richard Biener  <rguenther@suse.de>
44084         * tree-ssa-loop-manip.cc (determine_exit_conditions): Fix
44085         no epilogue condition.
44087 2023-04-19  Richard Biener  <rguenther@suse.de>
44089         * gimple.h (gimple_assign_load): Outline...
44090         * gimple.cc (gimple_assign_load): ... here.  Avoid
44091         get_base_address and instead just strip the outermost
44092         handled component, treating a remaining handled component
44093         as load.
44095 2023-04-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
44097         * config/aarch64/aarch64-simd-builtins.def (neg): Delete builtins
44098         definition.
44099         * config/aarch64/arm_fp16.h (vnegh_f16): Reimplement using normal negation.
44101 2023-04-19  Jakub Jelinek  <jakub@redhat.com>
44103         PR tree-optimization/109011
44104         * tree-vect-patterns.cc (vect_recog_popcount_pattern): Rename to ...
44105         (vect_recog_popcount_clz_ctz_ffs_pattern): ... this.  Handle also
44106         CLZ, CTZ and FFS.  Remove vargs variable, use
44107         gimple_build_call_internal rather than gimple_build_call_internal_vec.
44108         (vect_vect_recog_func_ptrs): Adjust popcount entry.
44110 2023-04-19  Jakub Jelinek  <jakub@redhat.com>
44112         PR target/109040
44113         * dse.cc (replace_read): If read_reg is a SUBREG of a word mode
44114         REG, for WORD_REGISTER_OPERATIONS copy SUBREG_REG of it into
44115         a new REG rather than the SUBREG.
44117 2023-04-19  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
44119         * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set_zero<mode>):
44120         New pattern.
44122 2023-04-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
44124         PR target/108840
44125         * config/aarch64/aarch64.cc (aarch64_rtx_costs): Merge ASHIFT and
44126         ROTATE, ROTATERT, LSHIFTRT, ASHIFTRT cases.  Handle subregs in op1.
44128 2023-04-19  Richard Biener  <rguenther@suse.de>
44130         PR rtl-optimization/109237
44131         * cse.cc (insn_live_p): Remove NEXT_INSN walk, instead check
44132         TREE_VISITED on INSN_VAR_LOCATION_DECL.
44133         (delete_trivially_dead_insns): Maintain TREE_VISITED on
44134         active debug bind INSN_VAR_LOCATION_DECL.
44136 2023-04-19  Richard Biener  <rguenther@suse.de>
44138         PR rtl-optimization/109237
44139         * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
44141 2023-04-19  Christophe Lyon  <christophe.lyon@arm.com>
44143         * doc/install.texi (enable-decimal-float): Add AArch64.
44145 2023-04-19  liuhongt  <hongtao.liu@intel.com>
44147         PR rtl-optimization/109351
44148         * ira.cc (setup_class_subset_and_memory_move_costs): Check
44149         hard_regno_mode_ok before setting lowest memory move cost for
44150         the mode with different reg classes.
44152 2023-04-18  Jason Merrill  <jason@redhat.com>
44154         * doc/invoke.texi: Remove stray @gol.
44156 2023-04-18  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
44158         * ifcvt.cc (cond_move_process_if_block): Consider the result of
44159         targetm.noce_conversion_profitable_p() when replacing the original
44160         sequence with the converted one.
44162 2023-04-18  Mark Harmstone  <mark@harmstone.com>
44164         * common.opt (gcodeview): Add new option.
44165         * gcc.cc (driver_handle_option); Handle OPT_gcodeview.
44166         * opts.cc (command_handle_option): Similarly.
44167         * doc/invoke.texi: Add documentation for -gcodeview.
44169 2023-04-18  Andrew Pinski  <apinski@marvell.com>
44171         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove declaration.
44172         (make_pass_phiopt): Make execute out of line.
44173         (tree_ssa_cs_elim): Move code into ...
44174         (pass_cselim::execute): here.
44176 2023-04-18  Sam James  <sam@gentoo.org>
44178         * system.h: Drop unused INCLUDE_PTHREAD_H.
44180 2023-04-18  Kevin Lee  <kevinl@rivosinc.com>
44182         * tree-vect-data-refs.cc (vect_grouped_store_supported): Add new
44183         condition.
44185 2023-04-18  Sinan Lin  <sinan.lin@linux.alibaba.com>
44187         * config/riscv/bitmanip.md (rotr<mode>3 expander): Enable for ZBKB.
44188         (bswapdi2, bswapsi2): Similarly.
44190 2023-04-18  Uros Bizjak  <ubizjak@gmail.com>
44192         PR target/94908
44193         * config/i386/i386-builtin.def (__builtin_ia32_insertps128):
44194         Use CODE_FOR_sse4_1_insertps_v4sf.
44195         * config/i386/i386-expand.cc (expand_vec_perm_insertps): New.
44196         (expand_vec_perm_1): Call expand_vec_per_insertps.
44197         * config/i386/i386.md ("unspec"): Declare UNSPEC_INSERTPS here.
44198         * config/i386/mmx.md (mmxscalarmode): New mode attribute.
44199         (@sse4_1_insertps_<mode>): New insn pattern.
44200         * config/i386/sse.md (@sse4_1_insertps_<mode>): Macroize insn
44201         pattern from sse4_1_insertps using VI4F_128 mode iterator.
44203 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
44205         * value-range.cc (gt_ggc_mx): New.
44206         (gt_pch_nx): New.
44207         * value-range.h (class vrange): Add GTY marker.
44208         (class frange): Same.
44209         (gt_ggc_mx): Remove.
44210         (gt_pch_nx): Remove.
44212 2023-04-18  Victor L. Do Nascimento  <victor.donascimento@arm.com>
44214         * lra-constraints.cc (constraint_unique): New.
44215         (process_address_1): Apply constraint_unique test.
44216         * recog.cc (constrain_operands): Allow relaxed memory
44217         constaints.
44219 2023-04-18  Kito Cheng  <kito.cheng@sifive.com>
44221         * doc/extend.texi (Target Builtins): Add RISC-V Vector
44222         Intrinsics.
44223         (RISC-V Vector Intrinsics): Document GCC implemented which
44224         version of RISC-V vector intrinsics and its reference.
44226 2023-04-18  Richard Biener  <rguenther@suse.de>
44228         PR middle-end/108786
44229         * bitmap.h (bitmap_clear_first_set_bit): New.
44230         * bitmap.cc (bitmap_first_set_bit_worker): Rename from
44231         bitmap_first_set_bit and add optional clearing of the bit.
44232         (bitmap_first_set_bit): Wrap bitmap_first_set_bit_worker.
44233         (bitmap_clear_first_set_bit): Likewise.
44234         * df-core.cc (df_worklist_dataflow_doublequeue): Use
44235         bitmap_clear_first_set_bit.
44236         * graphite-scop-detection.cc (scop_detection::merge_sese):
44237         Likewise.
44238         * sanopt.cc (sanitize_asan_mark_unpoison): Likewise.
44239         (sanitize_asan_mark_poison): Likewise.
44240         * tree-cfgcleanup.cc (cleanup_tree_cfg_noloop): Likewise.
44241         * tree-into-ssa.cc (rewrite_blocks): Likewise.
44242         * tree-ssa-dce.cc (simple_dce_from_worklist): Likewise.
44243         * tree-ssa-sccvn.cc (do_rpo_vn_1): Likewise.
44245 2023-04-18  Richard Biener  <rguenther@suse.de>
44247         * tree-ssa-structalias.cc (dump_sa_stats): Split out from...
44248         (dump_sa_points_to_info): ... this function.
44249         (compute_points_to_sets): Guard large dumps with TDF_DETAILS,
44250         and call dump_sa_stats guarded with TDF_STATS.
44251         (ipa_pta_execute): Likewise.
44252         (compute_may_aliases): Guard dump_alias_info with
44253         TDF_DETAILS|TDF_ALIAS.
44255 2023-04-18  Andrew Pinski  <apinski@marvell.com>
44257         * tree-ssa-phiopt.cc (gimple_simplify_phiopt): Dump
44258         the expression that is being tried when TDF_FOLDING
44259         is true.
44260         (phiopt_worker::match_simplify_replacement): Dump
44261         the sequence which was created by gimple_simplify_phiopt
44262         when TDF_FOLDING is true.
44264 2023-04-18  Andrew Pinski  <apinski@marvell.com>
44266         * tree-ssa-phiopt.cc (match_simplify_replacement):
44267         Simplify code that does the movement slightly.
44269 2023-04-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
44271         * config/aarch64/aarch64.md (@aarch64_rev16<mode>): Change to
44272         define_expand.
44273         (rev16<mode>2): Rename to...
44274         (aarch64_rev16<mode>2_alt1): ... This.
44275         (rev16<mode>2_alt): Rename to...
44276         (*aarch64_rev16<mode>2_alt2): ... This.
44278 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
44280         * emit-rtl.cc (init_emit_once): Initialize dconstm0.
44281         * gimple-range-op.cc (class cfn_signbit): Remove dconstm0
44282         declaration.
44283         * range-op-float.cc (zero_range): Use dconstm0.
44284         (zero_to_inf_range): Same.
44285         * real.h (dconstm0): New.
44286         * value-range.cc (frange::flush_denormals_to_zero): Use dconstm0.
44287         (frange::set_zero): Do not declare dconstm0.
44289 2023-04-18  Richard Biener  <rguenther@suse.de>
44291         * system.h (class auto_mpz): New,
44292         * realmpfr.h (class auto_mpfr): Likewise.
44293         * fold-const-call.cc (do_mpfr_arg1): Use auto_mpfr.
44294         (do_mpfr_arg2): Likewise.
44295         * tree-ssa-loop-niter.cc (bound_difference): Use auto_mpz;
44297 2023-04-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
44299         * config/aarch64/aarch64-builtins.cc (aarch64_init_simd_intrinsics): Take
44300         builtin flags from intrinsic data rather than hardcoded FLAG_AUTO_FP.
44302 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
44304         * value-range.cc (frange::operator==): Adjust for NAN.
44305         (range_tests_nan): Remove some NAN tests.
44307 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
44309         * inchash.cc (hash::add_real_value): New.
44310         * inchash.h (class hash): Add add_real_value.
44311         * value-range.cc (add_vrange): New.
44312         * value-range.h (inchash::add_vrange): New.
44314 2023-04-18  Richard Biener  <rguenther@suse.de>
44316         PR tree-optimization/109539
44317         * gimple-ssa-warn-access.cc (pass_waccess::check_pointer_uses):
44318         Re-implement pointer relatedness for PHIs.
44320 2023-04-18  Andrew Stubbs  <ams@codesourcery.com>
44322         * config/gcn/gcn-valu.md (SV_SFDF): New iterator.
44323         (SV_FP): New iterator.
44324         (scalar_mode, SCALAR_MODE): Add identity mappings for scalar modes.
44325         (recip<mode>2): Unify the two patterns using SV_FP.
44326         (div_scale<mode><exec_vcc>): New insn.
44327         (div_fmas<mode><exec>): New insn.
44328         (div_fixup<mode><exec>): New insn.
44329         (div<mode>3): Unify the two expanders and rewrite using hardfp.
44330         * config/gcn/gcn.cc (gcn_md_reorg): Support "vccwait" attribute.
44331         * config/gcn/gcn.md (unspec): Add UNSPEC_DIV_SCALE, UNSPEC_DIV_FMAS,
44332         and UNSPEC_DIV_FIXUP.
44333         (vccwait): New attribute.
44335 2023-04-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
44337         * config/aarch64/aarch64.cc (aarch64_validate_mcpu): Add hint to use -march
44338         if the argument matches that.
44340 2023-04-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
44342         * config/aarch64/atomics.md
44343         (*aarch64_atomic_load<ALLX:mode>_rcpc_zext):
44344         Use SD_HSDI for destination mode iterator.
44346 2023-04-18  Jin Ma  <jinma@linux.alibaba.com>
44348         * common/config/riscv/riscv-common.cc (multi_letter_subset_rank): Swap the order
44349         of z-extensions and s-extensions.
44350         (riscv_subset_list::parse): Likewise.
44352 2023-04-18  Jakub Jelinek  <jakub@redhat.com>
44354         PR tree-optimization/109240
44355         * match.pd (fneg/fadd): Rewrite such that it handles both plus as
44356         first vec_perm operand and minus as second using fneg/fadd and
44357         minus as first vec_perm operand and plus as second using fneg/fsub.
44359 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
44361         * data-streamer.cc (bp_pack_real_value): New.
44362         (bp_unpack_real_value): New.
44363         * data-streamer.h (bp_pack_real_value):  New.
44364         (bp_unpack_real_value): New.
44365         * tree-streamer-in.cc (unpack_ts_real_cst_value_fields): Use
44366         bp_unpack_real_value.
44367         * tree-streamer-out.cc (pack_ts_real_cst_value_fields): Use
44368         bp_pack_real_value.
44370 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
44372         * wide-int.h (WIDE_INT_MAX_HWIS): New.
44373         (class fixed_wide_int_storage): Use it.
44374         (trailing_wide_ints <N>::set_precision): Use it.
44375         (trailing_wide_ints <N>::extra_size): Use it.
44377 2023-04-18  Xi Ruoyao  <xry111@xry111.site>
44379         * config/loongarch/loongarch-protos.h
44380         (loongarch_addu16i_imm12_operand_p): New function prototype.
44381         (loongarch_split_plus_constant): Likewise.
44382         * config/loongarch/loongarch.cc
44383         (loongarch_addu16i_imm12_operand_p): New function.
44384         (loongarch_split_plus_constant): Likewise.
44385         * config/loongarch/loongarch.h (ADDU16I_OPERAND): New macro.
44386         (DUAL_IMM12_OPERAND): Likewise.
44387         (DUAL_ADDU16I_OPERAND): Likewise.
44388         * config/loongarch/constraints.md (La, Lb, Lc, Ld, Le): New
44389         constraint.
44390         * config/loongarch/predicates.md (const_dual_imm12_operand): New
44391         predicate.
44392         (const_addu16i_operand): Likewise.
44393         (const_addu16i_imm12_di_operand): Likewise.
44394         (const_addu16i_imm12_si_operand): Likewise.
44395         (plus_di_operand): Likewise.
44396         (plus_si_operand): Likewise.
44397         (plus_si_extend_operand): Likewise.
44398         * config/loongarch/loongarch.md (add<mode>3): Convert to
44399         define_insn_and_split.  Use plus_<mode>_operand predicate
44400         instead of arith_operand.  Add alternatives for La, Lb, Lc, Ld,
44401         and Le constraints.
44402         (*addsi3_extended): Convert to define_insn_and_split.  Use
44403         plus_si_extend_operand instead of arith_operand.  Add
44404         alternatives for La and Le alternatives.
44406 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
44408         * value-range.h (Value_Range::Value_Range): New.
44409         (Value_Range::contains_p): New.
44411 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
44413         * value-range.h (class vrange): Make m_discriminator const.
44414         (class irange): Make m_max_ranges const.  Adjust constructors
44415         accordingly.
44416         (class unsupported_range): Construct vrange appropriately.
44417         (class frange): Same.
44419 2023-04-18  Lulu Cheng  <chenglulu@loongson.cn>
44421         * config/loongarch/loongarch.h (LOGICAL_OP_NON_SHORT_CIRCUIT): Remove the macro
44422         definition.
44424 2023-04-18  Lulu Cheng  <chenglulu@loongson.cn>
44426         * doc/extend.texi: Add section for LoongArch Base Built-in functions.
44428 2023-04-18  Fei Gao  <gaofei@eswincomputing.com>
44430         * config/riscv/riscv.cc (riscv_first_stack_step): Make codes more
44431         readable.
44432         (riscv_expand_epilogue): Likewise.
44434 2023-04-17  Fei Gao  <gaofei@eswincomputing.com>
44436         * config/riscv/riscv.cc (riscv_expand_prologue): Consider save-restore in
44437         stack allocation.
44438         (riscv_expand_epilogue): Consider save-restore in stack deallocation.
44440 2023-04-17  Andrew Pinski  <apinski@marvell.com>
44442         * tree-ssa-phiopt.cc (gate_hoist_loads): Remove
44443         prototype.
44445 2023-04-17  Aldy Hernandez  <aldyh@redhat.com>
44447         * gimple-ssa-warn-alloca.cc (pass_walloca::execute): Do not export
44448         global ranges.
44450 2023-04-17  Fei Gao  <gaofei@eswincomputing.com>
44452         * config/riscv/riscv.cc (riscv_first_stack_step): Add a new function
44453         parameter remaining_size.
44454         (riscv_compute_frame_info): Adapt new riscv_first_stack_step interface.
44455         (riscv_expand_prologue): Likewise.
44456         (riscv_expand_epilogue): Likewise.
44458 2023-04-17  Feng Wang  <wangfeng@eswincomputing.com>
44460         * config/riscv/bitmanip.md (rotrsi3_sext): Support generating
44461         roriw for constant counts.
44462         * rtl.h (reverse_rotate_by_imm_p): Add function declartion
44463         * simplify-rtx.cc (reverse_rotate_by_imm_p): New function.
44464         (simplify_context::simplify_binary_operation_1): Use it.
44465         * expmed.cc (expand_shift_1): Likewise.
44467 2023-04-17  Martin Jambor  <mjambor@suse.cz>
44469         PR ipa/107769
44470         PR ipa/109318
44471         * cgraph.h (symtab_node::find_reference): Add parameter use_type.
44472         * ipa-prop.h (ipa_pass_through_data): New flag refdesc_decremented.
44473         (ipa_zap_jf_refdesc): New function.
44474         (ipa_get_jf_pass_through_refdesc_decremented): Likewise.
44475         (ipa_set_jf_pass_through_refdesc_decremented): Likewise.
44476         * ipa-cp.cc (ipcp_discover_new_direct_edges): Provide a value for
44477         the new parameter of find_reference.
44478         (adjust_references_in_caller): Likewise. Make sure the constant jump
44479         function is not used to decrement a refdec counter again.  Only
44480         decrement refdesc counters when the pass_through jump function allows
44481         it.  Added a detailed dump when decrementing refdesc counters.
44482         * ipa-prop.cc (ipa_print_node_jump_functions_for_edge): Dump new flag.
44483         (ipa_set_jf_simple_pass_through): Initialize the new flag.
44484         (ipa_set_jf_unary_pass_through): Likewise.
44485         (ipa_set_jf_arith_pass_through): Likewise.
44486         (remove_described_reference): Provide a value for the new parameter of
44487         find_reference.
44488         (update_jump_functions_after_inlining): Zap refdesc of new jfunc if
44489         the previous pass_through had a flag mandating that we do so.
44490         (propagate_controlled_uses): Likewise.  Only decrement refdesc
44491         counters when the pass_through jump function allows it.
44492         (ipa_edge_args_sum_t::duplicate): Provide a value for the new
44493         parameter of find_reference.
44494         (ipa_write_jump_function): Assert the new flag does not have to be
44495         streamed.
44496         * symtab.cc (symtab_node::find_reference): Add parameter use_type, use
44497         it in searching.
44499 2023-04-17  Philipp Tomsich  <philipp.tomsich@vrull.eu>
44500             Di Zhao  <di.zhao@amperecomputing.com>
44502         * config/aarch64/aarch64-tuning-flags.def (AARCH64_EXTRA_TUNING_OPTION):
44503         Add AARCH64_EXTRA_TUNE_NO_LDP_COMBINE.
44504         * config/aarch64/aarch64.cc (aarch64_operands_ok_for_ldpstp):
44505         Check for the above tuning option when processing loads.
44507 2023-04-17  Richard Biener  <rguenther@suse.de>
44509         PR tree-optimization/109524
44510         * tree-vrp.cc (remove_unreachable::m_list): Change to a
44511         vector of pairs of block indices.
44512         (remove_unreachable::maybe_register_block): Adjust.
44513         (remove_unreachable::remove_and_update_globals): Likewise.
44514         Deal with removed blocks.
44516 2023-04-16  Jeff Law  <jlaw@ventanamicro>
44518         PR target/109508
44519         * config/riscv/riscv.cc (riscv_expand_conditional_move): For
44520         TARGET_SFB_ALU, force the true arm into a register.
44522 2023-04-15  John David Anglin  <danglin@gcc.gnu.org>
44524         PR target/104989
44525         * config/pa/pa-protos.h (pa_function_arg_size): Update prototype.
44526         * config/pa/pa.cc (pa_function_arg): Return NULL_RTX if argument
44527         size is zero.
44528         (pa_arg_partial_bytes): Don't call pa_function_arg_size twice.
44529         (pa_function_arg_size): Change return type to int.  Return zero
44530         for arguments larger than 1 GB.  Update comments.
44532 2023-04-15  Jakub Jelinek  <jakub@redhat.com>
44534         PR tree-optimization/109154
44535         * tree-if-conv.cc (predicate_scalar_phi): For complex PHIs, emit just
44536         args_len - 1 COND_EXPRs rather than args_len.  Formatting fix.
44538 2023-04-15  Jason Merrill  <jason@redhat.com>
44540         PR c++/109514
44541         * gimple-ssa-warn-access.cc (pass_waccess::check_dangling_stores):
44542         Overhaul lhs_ref.ref analysis.
44544 2023-04-14  Richard Biener  <rguenther@suse.de>
44546         PR tree-optimization/109502
44547         * tree-vect-stmts.cc (vectorizable_assignment): Fix
44548         check for conversion between mask and non-mask types.
44550 2023-04-14  Jeff Law  <jlaw@ventanamicro.com>
44551             Jakub Jelinek  <jakub@redhat.com>
44553         PR target/108947
44554         PR target/109040
44555         * combine.cc (simplify_and_const_int_1): Compute nonzero_bits in
44556         word_mode rather than mode if WORD_REGISTER_OPERATIONS and mode is
44557         smaller than word_mode.
44558         * simplify-rtx.cc (simplify_context::simplify_binary_operation_1)
44559         <case AND>: Likewise.
44561 2023-04-14  Jakub Jelinek  <jakub@redhat.com>
44563         * loop-iv.cc (iv_number_of_iterations): Use gen_int_mode instead
44564         of GEN_INT.
44566 2023-04-13  Andrew MacLeod  <amacleod@redhat.com>
44568         PR tree-optimization/108139
44569         PR tree-optimization/109462
44570         * gimple-range-cache.cc (ranger_cache::fill_block_cache): Remove
44571         equivalency check for PHI nodes.
44572         * gimple-range-fold.cc (fold_using_range::range_of_phi): Ensure def
44573         does not dominate single-arg equivalency edges.
44575 2023-04-13  Richard Sandiford  <richard.sandiford@arm.com>
44577         PR target/108910
44578         * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Do
44579         not trust TYPE_ALIGN for pointer types; use POINTER_SIZE instead.
44581 2023-04-13  Richard Biener  <rguenther@suse.de>
44583         PR tree-optimization/109491
44584         * tree-ssa-sccvn.cc (expressions_equal_p): Restore the
44585         NULL operands test.
44587 2023-04-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
44589         PR target/109479
44590         * config/riscv/riscv-vector-builtins-types.def (vint8mf8_t): Fix predicate.
44591         (vint16mf4_t): Ditto.
44592         (vint32mf2_t): Ditto.
44593         (vint64m1_t): Ditto.
44594         (vint64m2_t): Ditto.
44595         (vint64m4_t): Ditto.
44596         (vint64m8_t): Ditto.
44597         (vuint8mf8_t): Ditto.
44598         (vuint16mf4_t): Ditto.
44599         (vuint32mf2_t): Ditto.
44600         (vuint64m1_t): Ditto.
44601         (vuint64m2_t): Ditto.
44602         (vuint64m4_t): Ditto.
44603         (vuint64m8_t): Ditto.
44604         (vfloat32mf2_t): Ditto.
44605         (vbool64_t): Ditto.
44606         * config/riscv/riscv-vector-builtins.cc (register_builtin_type): Add comments.
44607         (register_vector_type): Ditto.
44608         (check_required_extensions): Fix condition.
44609         * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_ZVE64): Remove it.
44610         (RVV_REQUIRE_ELEN_64): New define.
44611         (RVV_REQUIRE_MIN_VLEN_64): Ditto.
44612         * config/riscv/riscv-vector-switch.def (TARGET_VECTOR_FP32): Remove it.
44613         (TARGET_VECTOR_FP64): Ditto.
44614         (ENTRY): Fix predicate.
44615         * config/riscv/vector-iterators.md: Fix predicate.
44617 2023-04-12  Jakub Jelinek  <jakub@redhat.com>
44619         PR tree-optimization/109410
44620         * tree-ssa-reassoc.cc (build_and_add_sum): Split edge from entry
44621         block if first statement of the function is a call to returns_twice
44622         function.
44624 2023-04-12  Jakub Jelinek  <jakub@redhat.com>
44626         PR target/109458
44627         * config/i386/i386.cc: Include rtl-error.h.
44628         (ix86_print_operand): For z modifier warning, use warning_for_asm
44629         if this_is_asm_operands.  For Z modifier errors, use %c and code
44630         instead of hardcoded Z.
44632 2023-04-12  Costas Argyris  <costas.argyris@gmail.com>
44634         * config/i386/x-mingw32-utf8: Remove extrataneous $@
44636 2023-04-12  Andrew MacLeod  <amacleod@redhat.com>
44638         PR tree-optimization/109462
44639         * gimple-range-cache.cc (ranger_cache::fill_block_cache): Don't
44640         check for equivalences if NAME is a phi node.
44642 2023-04-12  Richard Biener  <rguenther@suse.de>
44644         PR tree-optimization/109473
44645         * tree-vect-loop.cc (vect_create_epilog_for_reduction):
44646         Convert scalar result to the computation type before performing
44647         the reduction adjustment.
44649 2023-04-12  Richard Biener  <rguenther@suse.de>
44651         PR tree-optimization/109469
44652         * tree-vect-slp.cc (vect_slp_function): Skip region starts with
44653         a returns-twice call.
44655 2023-04-12  Richard Biener  <rguenther@suse.de>
44657         PR tree-optimization/109434
44658         * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Properly
44659         handle possibly throwing calls when processing the LHS
44660         and may-defs are not OK.
44662 2023-04-11  Lin Sinan  <mynameisxiaou@gmail.com>
44664         * config/riscv/predicates.md (uimm_extra_bit_or_twobits): Adjust
44665         predicate to avoid splitting arith constants.
44667 2023-04-11  Yanzhang Wang  <yanzhang.wang@intel.com>
44668             Pan Li  <pan2.li@intel.com>
44669             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
44670             Kito Cheng  <kito.cheng@sifive.com>
44672         PR target/109104
44673         * config/riscv/riscv-protos.h (emit_hard_vlmax_vsetvl): New.
44674         * config/riscv/riscv-v.cc (emit_hard_vlmax_vsetvl): New.
44675         (emit_vlmax_vsetvl): Use emit_hard_vlmax_vsetvl.
44676         * config/riscv/riscv.cc (vector_zero_call_used_regs): New.
44677         (riscv_zero_call_used_regs): New.
44678         (TARGET_ZERO_CALL_USED_REGS): New.
44680 2023-04-11  Martin Liska  <mliska@suse.cz>
44682         PR driver/108241
44683         * opts.cc (finish_options): Drop also
44684         x_flag_var_tracking_assignments.
44686 2023-04-11  Andre Vieira  <andre.simoesdiasvieira@arm.com>
44688         PR tree-optimization/108888
44689         * tree-if-conv.cc (predicate_statements): Fix gimple call check.
44691 2023-04-11  Haochen Gui  <guihaoc@gcc.gnu.org>
44693         PR target/108812
44694         * config/rs6000/vsx.md (vsx_sign_extend_qi_<mode>): Rename to...
44695         (vsx_sign_extend_v16qi_<mode>): ... this.
44696         (vsx_sign_extend_hi_<mode>): Rename to...
44697         (vsx_sign_extend_v8hi_<mode>): ... this.
44698         (vsx_sign_extend_si_v2di): Rename to...
44699         (vsx_sign_extend_v4si_v2di): ... this.
44700         (vsignextend_qi_<mode>): Remove.
44701         (vsignextend_hi_<mode>): Remove.
44702         (vsignextend_si_v2di): Remove.
44703         (vsignextend_v2di_v1ti): Remove.
44704         (*xxspltib_<mode>_split): Replace gen_vsx_sign_extend_qi_v2di with
44705         gen_vsx_sign_extend_v16qi_v2di and gen_vsx_sign_extend_qi_v4si
44706         with gen_vsx_sign_extend_v16qi_v4si.
44707         * config/rs6000/rs6000.md (split for DI constant generation):
44708         Replace gen_vsx_sign_extend_qi_si with gen_vsx_sign_extend_v16qi_si.
44709         (split for HSDI constant generation): Replace gen_vsx_sign_extend_qi_di
44710         with gen_vsx_sign_extend_v16qi_di and gen_vsx_sign_extend_qi_si
44711         with gen_vsx_sign_extend_v16qi_si.
44712         * config/rs6000/rs6000-builtins.def (__builtin_altivec_vsignextsb2d):
44713         Set bif-pattern to vsx_sign_extend_v16qi_v2di.
44714         (__builtin_altivec_vsignextsb2w): Set bif-pattern to
44715         vsx_sign_extend_v16qi_v4si.
44716         (__builtin_altivec_visgnextsh2d): Set bif-pattern to
44717         vsx_sign_extend_v8hi_v2di.
44718         (__builtin_altivec_vsignextsh2w): Set bif-pattern to
44719         vsx_sign_extend_v8hi_v4si.
44720         (__builtin_altivec_vsignextsw2d): Set bif-pattern to
44721         vsx_sign_extend_si_v2di.
44722         (__builtin_altivec_vsignext): Set bif-pattern to
44723         vsx_sign_extend_v2di_v1ti.
44724         * config/rs6000/rs6000-builtin.cc (lxvrse_expand_builtin): Replace
44725         gen_vsx_sign_extend_qi_v2di with gen_vsx_sign_extend_v16qi_v2di,
44726         gen_vsx_sign_extend_hi_v2di with gen_vsx_sign_extend_v8hi_v2di and
44727         gen_vsx_sign_extend_si_v2di with gen_vsx_sign_extend_v4si_v2di.
44729 2023-04-10   Michael Meissner  <meissner@linux.ibm.com>
44731         PR target/70243
44732         * config/rs6000/vsx.md (vsx_fmav4sf4): Do not generate vmaddfp.
44733         (vsx_nfmsv4sf4): Do not generate vnmsubfp.
44735 2023-04-10  Haochen Jiang  <haochen.jiang@intel.com>
44737         * config/i386/i386.h (PTA_GRANITERAPIDS): Add PTA_AMX_COMPLEX.
44739 2023-04-10  Haochen Jiang  <haochen.jiang@intel.com>
44741         * common/config/i386/cpuinfo.h (get_available_features):
44742         Detect AMX-COMPLEX.
44743         * common/config/i386/i386-common.cc
44744         (OPTION_MASK_ISA2_AMX_COMPLEX_SET,
44745         OPTION_MASK_ISA2_AMX_COMPLEX_UNSET): New.
44746         (ix86_handle_option): Handle -mamx-complex.
44747         * common/config/i386/i386-cpuinfo.h (enum processor_features):
44748         Add FEATURE_AMX_COMPLEX.
44749         * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
44750         amx-complex.
44751         * config.gcc: Add amxcomplexintrin.h.
44752         * config/i386/cpuid.h (bit_AMX_COMPLEX): New.
44753         * config/i386/i386-c.cc (ix86_target_macros_internal): Define
44754         __AMX_COMPLEX__.
44755         * config/i386/i386-isa.def (AMX_COMPLEX): Add DEF_PTA(AMX_COMPLEX).
44756         * config/i386/i386-options.cc (ix86_valid_target_attribute_inner_p):
44757         Handle amx-complex.
44758         * config/i386/i386.opt: Add option -mamx-complex.
44759         * config/i386/immintrin.h: Include amxcomplexintrin.h.
44760         * doc/extend.texi: Document amx-complex.
44761         * doc/invoke.texi: Document -mamx-complex.
44762         * doc/sourcebuild.texi: Document target amx-complex.
44763         * config/i386/amxcomplexintrin.h: New file.
44765 2023-04-08  Jakub Jelinek  <jakub@redhat.com>
44767         PR tree-optimization/109392
44768         * tree-vect-generic.cc (tree_vec_extract): Handle failure
44769         of maybe_push_res_to_seq better.
44771 2023-04-08  Jakub Jelinek  <jakub@redhat.com>
44773         * Makefile.in (CORETYPES_H): Depend on align.h, poly-int.h and
44774         poly-int-types.h.
44775         (SYSTEM_H): Depend on $(HASHTAB_H).
44776         * config/riscv/t-riscv (build/genrvv-type-indexer.o): Remove unused
44777         dependency on $(RTL_BASE_H), remove redundant dependency on
44778         insn-modes.h.
44780 2023-04-06  Richard Earnshaw  <rearnsha@arm.com>
44782         PR target/107674
44783         * config/arm/arm.cc (arm_effective_regno): New function.
44784         (mve_vector_mem_operand): Use it.
44786 2023-04-06  Andrew MacLeod  <amacleod@redhat.com>
44788         PR tree-optimization/109417
44789         * gimple-range-gori.cc (gori_compute::may_recompute_p): Check if
44790         dependency is in SSA_NAME_FREE_LIST.
44792 2023-04-06  Andrew Pinski  <apinski@marvell.com>
44794         PR tree-optimization/109427
44795         * params.opt (-param=vect-induction-float=):
44796         Fix option attribute typo for IntegerRange.
44798 2023-04-05  Jeff Law  <jlaw@ventanamicro>
44800         PR target/108892
44801         * combine.cc (combine_instructions): Force re-recognition when
44802         after restoring the body of an insn to its original form.
44804 2023-04-05  Martin Jambor  <mjambor@suse.cz>
44806         PR ipa/108959
44807         * ipa-sra.cc (zap_useless_ipcp_results): New function.
44808         (process_isra_node_results): Call it.
44810 2023-04-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
44812         * config/riscv/vector.md: Fix incorrect operand order.
44814 2023-04-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
44816         * config/riscv/riscv-vsetvl.cc
44817         (pass_vsetvl::compute_local_backward_infos): Update user vsetvl in local
44818         demand fusion.
44820 2023-04-05  Li Xu  <xuli1@eswincomputing.com>
44822         * config/riscv/riscv-vector-builtins.def: Fix typo.
44823         * config/riscv/riscv.cc (riscv_dwarf_poly_indeterminate_value): Ditto.
44824         * config/riscv/vector-iterators.md: Ditto.
44826 2023-04-04  Hans-Peter Nilsson  <hp@axis.com>
44828         * doc/md.texi (Including Patterns): Fix page break.
44830 2023-04-04  Jakub Jelinek  <jakub@redhat.com>
44832         PR tree-optimization/109386
44833         * range-op-float.cc (foperator_lt::op1_range, foperator_lt::op2_range,
44834         foperator_le::op1_range, foperator_le::op2_range,
44835         foperator_gt::op1_range, foperator_gt::op2_range,
44836         foperator_ge::op1_range, foperator_ge::op2_range): Make r varying for
44837         BRS_FALSE case even if the other op is maybe_isnan, not just
44838         known_isnan.
44839         (foperator_unordered_lt::op1_range, foperator_unordered_lt::op2_range,
44840         foperator_unordered_le::op1_range, foperator_unordered_le::op2_range,
44841         foperator_unordered_gt::op1_range, foperator_unordered_gt::op2_range,
44842         foperator_unordered_ge::op1_range, foperator_unordered_ge::op2_range):
44843         Make r varying for BRS_TRUE case even if the other op is maybe_isnan,
44844         not just known_isnan.
44846 2023-04-04  Marek Polacek  <polacek@redhat.com>
44848         PR sanitizer/109107
44849         * fold-const.cc (fold_binary_loc): Use TYPE_OVERFLOW_SANITIZED
44850         when associating.
44851         * match.pd: Use TYPE_OVERFLOW_SANITIZED.
44853 2023-04-04  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
44855         * config/arm/mve.md (mve_vcvtq_n_to_f_<supf><mode>): Swap operands.
44856         (mve_vcreateq_f<mode>): Swap operands.
44858 2023-04-04  Andrew Stubbs  <ams@codesourcery.com>
44860         * config/gcn/gcn-valu.md (one_cmpl<mode>2<exec>): New.
44862 2023-04-04  Jakub Jelinek  <jakub@redhat.com>
44864         PR target/109384
44865         * common/config/riscv/riscv-common.cc (riscv_subset_list::parse):
44866         Reword diagnostics about zfinx conflict with f, formatting fixes.
44868 2023-04-04  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
44870         * config/sol2.h (LIB_SPEC): Don't link with -lpthread.
44872 2023-04-04  Richard Biener  <rguenther@suse.de>
44874         PR tree-optimization/109304
44875         * tree-profile.cc (tree_profiling): Use symtab node
44876         availability to decide whether to skip adjusting calls.
44877         Do not adjust calls to internal functions.
44879 2023-04-04  Kewen Lin  <linkw@linux.ibm.com>
44881         PR target/108807
44882         * config/rs6000/rs6000.cc (rs6000_expand_vector_set_var_p9): Fix gen
44883         function for permutation control vector by considering big endianness.
44885 2023-04-04  Kewen Lin  <linkw@linux.ibm.com>
44887         PR target/108699
44888         * config/rs6000/altivec.md (*p9v_parity<mode>2): Rename to ...
44889         (rs6000_vprtyb<mode>2): ... this.
44890         * config/rs6000/rs6000-builtins.def (VPRTYBD): Replace parityv2di2 with
44891         rs6000_vprtybv2di2.
44892         (VPRTYBW): Replace parityv4si2 with rs6000_vprtybv4si2.
44893         (VPRTYBQ): Replace parityv1ti2 with rs6000_vprtybv1ti2.
44894         * config/rs6000/vector.md (parity<mode>2 with VEC_IP): Expand with
44895         popcountv16qi2 and the corresponding rs6000_vprtyb<mode>2.
44897 2023-04-04  Hans-Peter Nilsson  <hp@axis.com>
44898             Sandra Loosemore  <sandra@codesourcery.com>
44900         * doc/md.texi (Insn Splitting): Tweak wording for readability.
44902 2023-04-03  Martin Jambor  <mjambor@suse.cz>
44904         PR ipa/109303
44905         * ipa-prop.cc (determine_known_aggregate_parts): Check that the
44906         offset + size will be representable in unsigned int.
44908 2023-04-03  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
44910         * configure.ac (ZSTD_LIB): Move before zstd.h check.
44911         Unset gcc_cv_header_zstd_h without libzstd.
44912         * configure: Regenerate.
44914 2023-04-03  Martin Liska  <mliska@suse.cz>
44916         * doc/invoke.texi: Document new param.
44918 2023-04-03  Cupertino Miranda  <cupertino.miranda@oracle.com>
44920         * doc/sourcebuild.texi (const_volatile_readonly_section): Document
44921         new check_effective_target function.
44923 2023-04-03  Li Xu  <xuli1@eswincomputing.com>
44925         * config/riscv/riscv-vector-builtins.def (vuint32m8_t): Fix typo.
44926         (vfloat32m8_t): Likewise
44928 2023-04-03  liuhongt  <hongtao.liu@intel.com>
44930         * doc/md.texi: Document signbitm2.
44932 2023-04-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
44933             kito-cheng  <kito.cheng@sifive.com>
44935         * config/riscv/vector.md: Fix RA constraint.
44937 2023-04-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
44939         * config/riscv/riscv-protos.h (gen_avl_for_scalar_move): New function.
44940         * config/riscv/riscv-v.cc (gen_avl_for_scalar_move): New function.
44941         * config/riscv/vector.md: Fix scalar move bug.
44943 2023-04-01  Jakub Jelinek  <jakub@redhat.com>
44945         * range-op-float.cc (foperator_equal::fold_range): If at least
44946         one of the op ranges is not singleton and neither is NaN and all
44947         4 bounds are zero, return [1, 1].
44948         (foperator_not_equal::fold_range): In the same case return [0, 0].
44950 2023-04-01  Jakub Jelinek  <jakub@redhat.com>
44952         * range-op-float.cc (foperator_equal::fold_range): Perform the
44953         non-singleton handling regardless of maybe_isnan (op1, op2).
44954         (foperator_not_equal::fold_range): Likewise.
44955         (foperator_lt::fold_range, foperator_le::fold_range,
44956         foperator_gt::fold_range, foperator_ge::fold_range): Perform the
44957         real_* comparison check which results in range_false (type)
44958         even if maybe_isnan (op1, op2).  Simplify.
44959         (foperator_ltgt): New class.
44960         (fop_ltgt): New variable.
44961         (floating_op_table::floating_op_table): Handle LTGT_EXPR using
44962         fop_ltgt.
44964 2023-04-01  Jakub Jelinek  <jakub@redhat.com>
44966         PR target/109254
44967         * builtins.cc (apply_args_size): If targetm.calls.get_raw_arg_mode
44968         returns VOIDmode, handle it like if the register isn't used for
44969         passing arguments at all.
44970         (apply_result_size): If targetm.calls.get_raw_result_mode returns
44971         VOIDmode, handle it like if the register isn't used for returning
44972         results at all.
44973         * target.def (get_raw_result_mode, get_raw_arg_mode): Document what it
44974         means to return VOIDmode.
44975         * doc/tm.texi: Regenerated.
44976         * config/aarch64/aarch64.cc (aarch64_function_value_regno_p): Return
44977         TARGET_SVE for P0_REGNUM.
44978         (aarch64_function_arg_regno_p): Also return true for p0-p3.
44979         (aarch64_get_reg_raw_mode): Return VOIDmode for PR_REGNUM_P regs.
44981 2023-03-31  Vladimir N. Makarov  <vmakarov@redhat.com>
44983         * lra-constraints.cc: (combine_reload_insn): New function.
44985 2023-03-31  Jakub Jelinek  <jakub@redhat.com>
44987         PR tree-optimization/91645
44988         * range-op-float.cc (foperator_unordered_lt::fold_range,
44989         foperator_unordered_le::fold_range,
44990         foperator_unordered_gt::fold_range,
44991         foperator_unordered_ge::fold_range,
44992         foperator_unordered_equal::fold_range): Call the ordered
44993         fold_range on ranges with cleared NaNs.
44994         * value-query.cc (range_query::get_tree_range): Handle also
44995         COMPARISON_CLASS_P trees.
44997 2023-03-31  Kito Cheng  <kito.cheng@sifive.com>
44998             Andrew Pinski  <pinskia@gmail.com>
45000         PR target/109328
45001         * config/riscv/t-riscv: Add missing dependencies.
45003 2023-03-31  liuhongt  <hongtao.liu@intel.com>
45005         * config/i386/i386.cc (inline_memory_move_cost): Return 100
45006         for MASK_REGS when MODE_SIZE > 8.
45008 2023-03-31  liuhongt  <hongtao.liu@intel.com>
45010         PR target/85048
45011         * config/i386/i386-builtin.def (BDESC): Adjust icode name from
45012         ufloat/ufix to floatuns/fixuns.
45013         * config/i386/i386-expand.cc
45014         (ix86_expand_vector_convert_uns_vsivsf): Adjust comments.
45015         * config/i386/sse.md
45016         (ufloat<sseintvecmodelower><mode>2<mask_name><round_name>):
45017         Renamed to ..
45018         (<mask_codefor>floatuns<sseintvecmodelower><mode>2<mask_name><round_name>):.. this.
45019         (<mask_codefor><avx512>_ufix_notrunc<sf2simodelower><mode><mask_name><round_name>):
45020         Renamed to ..
45021         (<mask_codefor><avx512>_fixuns_notrunc<sf2simodelower><mode><mask_name><round_name>):
45022         .. this.
45023         (<fixsuffix>fix_truncv16sfv16si2<mask_name><round_saeonly_name>):
45024         Renamed to ..
45025         (fix<fixunssuffix>_truncv16sfv16si2<mask_name><round_saeonly_name>):.. this.
45026         (ufloat<si2dfmodelower><mode>2<mask_name>): Renamed to ..
45027         (floatuns<si2dfmodelower><mode>2<mask_name>): .. this.
45028         (ufloatv2siv2df2<mask_name>): Renamed to ..
45029         (<mask_codefor>floatunsv2siv2df2<mask_name>): .. this.
45030         (ufix_notrunc<mode><si2dfmodelower>2<mask_name><round_name>):
45031         Renamed to ..
45032         (fixuns_notrunc<mode><si2dfmodelower>2<mask_name><round_name>):
45033         .. this.
45034         (ufix_notruncv2dfv2si2): Renamed to ..
45035         (fixuns_notruncv2dfv2si2):.. this.
45036         (ufix_notruncv2dfv2si2_mask): Renamed to ..
45037         (fixuns_notruncv2dfv2si2_mask): .. this.
45038         (*ufix_notruncv2dfv2si2_mask_1): Renamed to ..
45039         (*fixuns_notruncv2dfv2si2_mask_1): .. this.
45040         (ufix_truncv2dfv2si2): Renamed to ..
45041         (*fixuns_truncv2dfv2si2): .. this.
45042         (ufix_truncv2dfv2si2_mask): Renamed to ..
45043         (fixuns_truncv2dfv2si2_mask): .. this.
45044         (*ufix_truncv2dfv2si2_mask_1): Renamed to ..
45045         (*fixuns_truncv2dfv2si2_mask_1): .. this.
45046         (ufix_truncv4dfv4si2<mask_name>): Renamed to ..
45047         (fixuns_truncv4dfv4si2<mask_name>): .. this.
45048         (ufix_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
45049         Renamed to ..
45050         (fixuns_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
45051         .. this.
45052         (ufix_trunc<mode><sseintvecmodelower>2<mask_name>): Renamed to ..
45053         (<mask_codefor>fixuns_trunc<mode><sseintvecmodelower>2<mask_name>):
45054         .. this.
45056 2023-03-30  Andrew MacLeod  <amacleod@redhat.com>
45058         PR tree-optimization/109154
45059         * gimple-range-gori.cc (gori_compute::may_recompute_p): Add depth limit.
45060         * gimple-range-gori.h (may_recompute_p): Add depth param.
45061         * params.opt (ranger-recompute-depth): New param.
45063 2023-03-30  Jason Merrill  <jason@redhat.com>
45065         PR c++/107897
45066         PR c++/108887
45067         * cgraph.h: Move reset() from cgraph_node to symtab_node.
45068         * cgraphunit.cc (symtab_node::reset): Adjust.  Also call
45069         remove_from_same_comdat_group.
45071 2023-03-30  Richard Biener  <rguenther@suse.de>
45073         PR tree-optimization/107561
45074         * gimple-ssa-warn-access.cc (get_size_range): Add flags
45075         argument and pass it on.
45076         (check_access): When querying for the size range pass
45077         SR_ALLOW_ZERO when the known destination size is zero.
45079 2023-03-30  Richard Biener  <rguenther@suse.de>
45081         PR tree-optimization/109342
45082         * tree-ssa-sccvn.cc (vn_nary_op_get_predicated_value): New
45083         overload for edge.  When that edge is a backedge use
45084         dominated_by_p directly.
45086 2023-03-30  liuhongt  <hongtao.liu@intel.com>
45088         * config/i386/i386-expand.cc (expand_vec_perm_blend): Generate
45089         vpblendd instead of vpblendw for V4SI under avx2.
45091 2023-03-29  Hans-Peter Nilsson  <hp@axis.com>
45093         * config/cris/cris.cc (cris_rtx_costs) [CONST_INT]: Return 0
45094         for many quick operands, for register-sized modes.
45096 2023-03-29  Jiawei  <jiawei@iscas.ac.cn>
45098         * common/config/riscv/riscv-common.cc (riscv_subset_list::parse):
45099         New check.
45101 2023-03-29  Martin Liska  <mliska@suse.cz>
45103         PR bootstrap/109310
45104         * configure.ac: Emit a warning for deprecated option
45105         --enable-link-mutex.
45106         * configure: Regenerate.
45108 2023-03-29  Richard Biener  <rguenther@suse.de>
45110         PR tree-optimization/109331
45111         * tree-ssa-forwprop.cc (pass_forwprop::execute): When we
45112         discover a taken edge make sure to cleanup the CFG.
45114 2023-03-29  Richard Biener  <rguenther@suse.de>
45116         PR tree-optimization/109327
45117         * tree-ssa-forwprop.cc (pass_forwprop::execute): Deal with
45118         already removed stmts when draining to_remove.
45120 2023-03-29  Richard Biener  <rguenther@suse.de>
45122         PR ipa/106124
45123         * dwarf2out.cc (lookup_type_die): Reset TREE_ASM_WRITTEN
45124         so we can re-create the DIE for the type if required.
45126 2023-03-29  Jakub Jelinek  <jakub@redhat.com>
45127             Richard Biener  <rguenther@suse.de>
45129         PR tree-optimization/109301
45130         * tree-ssa-math-opts.cc (pass_data_cse_sincos): Change
45131         properties_provided from PROP_gimple_opt_math to 0.
45132         (pass_data_expand_powcabs): Change properties_provided from 0 to
45133         PROP_gimple_opt_math.
45135 2023-03-29  Richard Biener  <rguenther@suse.de>
45137         PR tree-optimization/109154
45138         * tree-if-conv.cc (gen_phi_arg_condition): Handle single
45139         inverted condition specially by inverting at the caller.
45140         (gen_phi_arg_condition): Swap COND_EXPR arms if requested.
45142 2023-03-28  David Malcolm  <dmalcolm@redhat.com>
45144         PR c/107002
45145         * diagnostic-show-locus.cc (column_range::column_range): Factor
45146         out assertion conditional into...
45147         (column_range::valid_p): ...this new function.
45148         (line_corrections::add_hint): Don't attempt to consolidate hints
45149         if it would lead to invalid column_range instances.
45151 2023-03-28  Kito Cheng  <kito.cheng@sifive.com>
45153         PR target/109312
45154         * config/riscv/riscv-c.cc (riscv_ext_version_value): New.
45155         (riscv_cpu_cpp_builtins): Define __riscv_v_intrinsic and
45156         minor refactor.
45158 2023-03-28  Alexander Monakov  <amonakov@ispras.ru>
45160         PR rtl-optimization/109187
45161         * haifa-sched.cc (autopref_rank_for_schedule): Avoid use of overflowing
45162         subtraction in three-way comparison.
45164 2023-03-28  Andrew MacLeod  <amacleod@redhat.com>
45166         PR tree-optimization/109265
45167         PR tree-optimization/109274
45168         * gimple-range-gori.cc (gori_compute::compute_operand_range): Do
45169         not create a relation record is op1 and op2 are the same symbol.
45170         (gori_compute::compute_operand1_range): Pass op1 == op2 to the
45171         handler for this stmt, but create a new record only if this statement
45172         generates a relation based on the ranges.
45173         (gori_compute::compute_operand2_range): Ditto.
45174         * value-relation.h (value_relation::set_relation): Always create the
45175         record that is requested.
45177 2023-03-28  Richard Biener  <rguenther@suse.de>
45179         PR tree-optimization/107087
45180         * tree-ssa-forwprop.cc (pass_forwprop::execute): Track
45181         executable regions to avoid useless work and to better
45182         propagate degenerate PHIs.
45184 2023-03-28  Costas Argyris  <costas.argyris@gmail.com>
45186         * config/i386/x-mingw32-utf8: update comments.
45188 2023-03-28  Richard Sandiford  <richard.sandiford@arm.com>
45190         PR target/109072
45191         * config/aarch64/aarch64-protos.h (aarch64_vector_load_decl): Declare.
45192         * config/aarch64/aarch64.h (machine_function::vector_load_decls): New
45193         variable.
45194         * config/aarch64/aarch64-builtins.cc (aarch64_record_vector_load_arg):
45195         New function.
45196         (aarch64_general_gimple_fold_builtin): Delay folding of vld1 until
45197         after inlining.  Record which decls are loaded from.  Fix handling
45198         of vops for loads and stores.
45199         * config/aarch64/aarch64.cc (aarch64_vector_load_decl): New function.
45200         (aarch64_accesses_vector_load_decl_p): Likewise.
45201         (aarch64_vector_costs::m_stores_to_vector_load_decl): New member
45202         variable.
45203         (aarch64_vector_costs::add_stmt_cost): If the function has a vld1
45204         that loads from a decl, treat vector stores to those decls as
45205         zero cost.
45206         (aarch64_vector_costs::finish_cost): ...and in that case,
45207         if the vector code does nothing more than a store, give the
45208         prologue a zero cost as well.
45210 2023-03-28  Richard Biener  <rguenther@suse.de>
45212         PR bootstrap/84402
45213         PR tree-optimization/108129
45214         * genmatch.cc (lower_for): For (match ...) delay
45215         substituting into the match operator if possible.
45216         (dt_operand::gen_gimple_expr): For user_id look at the
45217         first substitute for determining how to access operands.
45218         (dt_operand::gen_generic_expr): Likewise.
45219         (dt_node::gen_kids): Properly sort user_ids according
45220         to their substitutes.
45221         (dt_node::gen_kids_1): Code-generate user_id matching.
45223 2023-03-28  Jakub Jelinek  <jakub@redhat.com>
45224             Jonathan Wakely  <jwakely@redhat.com>
45226         * gcov-tool.cc (do_merge, do_merge_stream, do_rewrite, do_overlap):
45227         Use subcommand rather than sub-command in function comments.
45229 2023-03-28  Jakub Jelinek  <jakub@redhat.com>
45231         PR tree-optimization/109154
45232         * value-range.h (frange::flush_denormals_to_zero): Make it public
45233         rather than private.
45234         * value-range.cc (frange::set): Don't call flush_denormals_to_zero
45235         here.
45236         * range-op-float.cc (range_operator_float::fold_range): Call
45237         flush_denormals_to_zero.
45239 2023-03-28  Jakub Jelinek  <jakub@redhat.com>
45241         PR middle-end/106190
45242         * sanopt.cc (pass_sanopt::execute): Return TODO_cleanup_cfg if any
45243         of the IFN_{UB,HWA,A}SAN_* internal fns are lowered.
45245 2023-03-28  Jakub Jelinek  <jakub@redhat.com>
45247         * range-op-float.cc (float_widen_lhs_range): Use pass get_nan_state
45248         as 4th argument to set to avoid clear_nan and union_ calls.
45250 2023-03-28  Jakub Jelinek  <jakub@redhat.com>
45252         PR target/109276
45253         * config/i386/i386.cc (assign_386_stack_local): For DImode
45254         with SLOT_FLOATxFDI_387 and -m32 -mpreferred-stack-boundary=2 pass
45255         align 32 rather than 0 to assign_stack_local.
45257 2023-03-28  Eric Botcazou  <ebotcazou@adacore.com>
45259         PR target/109140
45260         * config/sparc/sparc.cc (sparc_expand_vcond): Call signed_condition
45261         on operand #3 to get the final condition code.  Use std::swap.
45262         * config/sparc/sparc.md (vcondv8qiv8qi): New VIS 4 expander.
45263         (fucmp<gcond:code>8<P:mode>_vis): Move around.
45264         (fpcmpu<gcond:code><GCM:gcm_name><P:mode>_vis): Likewise.
45265         (vcondu<GCM:mode><GCM:mode>): New VIS 4 expander.
45267 2023-03-28  Eric Botcazou  <ebotcazou@adacore.com>
45269         * doc/gm2.texi: Add missing Next, Previous and Top fields to most
45270         top-level sections.
45272 2023-03-28  Costas Argyris  <costas.argyris@gmail.com>
45274         * config.host: Pull in i386/x-mingw32-utf8 Makefile
45275         fragment and reference utf8rc-mingw32.o explicitly
45276         for mingw hosts.
45277         * config/i386/sym-mingw32.cc: prevent name mangling of
45278         stub symbol.
45279         * config/i386/x-mingw32-utf8: Make utf8rc-mingw32.o
45280         depend on manifest file explicitly.
45282 2023-03-28  Richard Biener  <rguenther@suse.de>
45284         Revert:
45285         2023-03-27  Richard Biener  <rguenther@suse.de>
45287         PR rtl-optimization/109237
45288         * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
45290 2023-03-28  Richard Biener  <rguenther@suse.de>
45292         * common.opt (gdwarf): Remove Negative(gdwarf-).
45294 2023-03-28  Richard Biener  <rguenther@suse.de>
45296         * common.opt (gdwarf): Add RejectNegative.
45297         (gdwarf-): Likewise.
45298         (ggdb): Likewise.
45299         (gvms): Likewise.
45301 2023-03-28  Hans-Peter Nilsson  <hp@axis.com>
45303         * config/cris/constraints.md ("T"): Correct to
45304         define_memory_constraint.
45306 2023-03-28  Hans-Peter Nilsson  <hp@axis.com>
45308         * config/cris/cris.md (BW2): New mode-iterator.
45309         (lra_szext_decomposed, lra_szext_decomposed_indirect_with_offset): New
45310         peephole2s.
45312 2023-03-28  Hans-Peter Nilsson  <hp@axis.com>
45314         * config/cris/cris.md ("*add<mode>3_addi"): Improve to bail only
45315         for possible eliminable compares.
45317 2023-03-28  Hans-Peter Nilsson  <hp@axis.com>
45319         * config/cris/constraints.md ("R"): Remove unused constraint.
45321 2023-03-27  Jonathan Wakely  <jwakely@redhat.com>
45323         PR gcov-profile/109297
45324         * gcov-tool.cc (merge_usage): Fix "subcomand" typo.
45325         (merge_stream_usage): Likewise.
45326         (overlap_usage): Likewise.
45328 2023-03-27  Christoph Müllner  <christoph.muellner@vrull.eu>
45330         PR target/109296
45331         * config/riscv/thead.md: Add missing mode specifiers.
45333 2023-03-27  Philipp Tomsich  <philipp.tomsich@vrull.eu>
45334             Jiangning Liu  <jiangning.liu@amperecomputing.com>
45335             Manolis Tsamis  <manolis.tsamis@vrull.eu>
45337         * config/aarch64/aarch64.cc: Update vector costs for ampere1.
45339 2023-03-27  Richard Biener  <rguenther@suse.de>
45341         PR rtl-optimization/109237
45342         * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
45344 2023-03-27  Richard Biener  <rguenther@suse.de>
45346         PR lto/109263
45347         * lto-wrapper.cc (run_gcc): Parse alternate debug options
45348         as well, they always enable debug.
45350 2023-03-27  Kewen Lin  <linkw@linux.ibm.com>
45352         PR target/109167
45353         * config/rs6000/emmintrin.h (_mm_bslli_si128): Move the implementation
45354         from ...
45355         (_mm_slli_si128): ... here.  Change to call _mm_bslli_si128 directly.
45357 2023-03-27  Kewen Lin  <linkw@linux.ibm.com>
45359         PR target/109082
45360         * config/rs6000/emmintrin.h (_mm_bslli_si128): Check __N is not less
45361         than zero when calling vec_sld.
45362         (_mm_bsrli_si128): Return __A if __N is zero, check __N is bigger than
45363         zero when calling vec_sld.
45364         (_mm_slli_si128): Return __A if _imm5 is zero, check _imm5 is bigger
45365         than zero when calling vec_sld.
45367 2023-03-27  Sandra Loosemore  <sandra@codesourcery.com>
45369         * doc/generic.texi (OpenMP): Document OMP_SIMD, OMP_DISTRIBUTE,
45370         OMP_TASKLOOP, and OMP_LOOP with OMP_FOR.  Document how collapsed
45371         loops are represented and which fields are vectors.  Add
45372         documentation for OMP_FOR_PRE_BODY field.  Document internal
45373         form of non-rectangular loops and OMP_FOR_NON_RECTANGULAR.
45374         * tree.def (OMP_FOR): Make documentation consistent with the
45375         Texinfo manual, to fill some gaps and correct errors.
45377 2023-03-26  Andreas Schwab  <schwab@linux-m68k.org>
45379         PR target/106282
45380         * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
45381         * config/m68k/m68k.cc (m68k_final_prescan_insn): Define.
45382         (handle_move_double): Call it before handle_movsi.
45383         * config/m68k/m68k-protos.h: Declare it.
45385 2023-03-26  Jakub Jelinek  <jakub@redhat.com>
45387         PR tree-optimization/109230
45388         * match.pd (fneg/fadd simplify): Verify also odd permutation indexes.
45390 2023-03-26  Jakub Jelinek  <jakub@redhat.com>
45392         PR ipa/105685
45393         * predict.cc (compute_function_frequency): Don't call
45394         warn_function_cold if function already has cold attribute.
45396 2023-03-26  Gerald Pfeifer  <gerald@pfeifer.com>
45398         * doc/install.texi: Remove anachronistic note
45399         related to languages built and separate source tarballs.
45401 2023-03-25  David Malcolm  <dmalcolm@redhat.com>
45403         PR analyzer/109098
45404         * diagnostic-format-sarif.cc (read_until_eof): Delete.
45405         (maybe_read_file): Delete.
45406         (sarif_builder::maybe_make_artifact_content_object): Use
45407         get_source_file_content rather than maybe_read_file.
45408         Reject it if it's not valid UTF-8.
45409         * input.cc (file_cache_slot::get_full_file_content): New.
45410         (get_source_file_content): New.
45411         (selftest::check_cpp_valid_utf8_p): New.
45412         (selftest::test_cpp_valid_utf8_p): New.
45413         (selftest::input_cc_tests): Call selftest::test_cpp_valid_utf8_p.
45414         * input.h (get_source_file_content): New prototype.
45416 2023-03-24  David Malcolm  <dmalcolm@redhat.com>
45418         * doc/analyzer.texi (Debugging the Analyzer): Add notes on useful
45419         debugging options.
45420         (Special Functions for Debugging the Analyzer): Convert to a
45421         table, and rewrite in places.
45422         (Other Debugging Techniques): Add notes on how to compare two
45423         different exploded graphs.
45425 2023-03-24  David Malcolm  <dmalcolm@redhat.com>
45427         PR other/109163
45428         * json.cc: Update comments to indicate that we now preserve
45429         insertion order of keys within objects.
45430         (object::print): Traverse keys in insertion order.
45431         (object::set): Preserve insertion order of keys.
45432         (selftest::test_writing_objects): Add an additional key to verify
45433         that we preserve insertion order.
45434         * json.h (object::m_keys): New field.
45436 2023-03-24  Andrew MacLeod  <amacleod@redhat.com>
45438         PR tree-optimization/109238
45439         * gimple-range-cache.cc (ranger_cache::resolve_dom): Ignore
45440         predecessors which this block dominates.
45442 2023-03-24  Richard Biener  <rguenther@suse.de>
45444         PR tree-optimization/106912
45445         * tree-profile.cc (tree_profiling): Update stmts only when
45446         profiling or testing coverage.  Make sure to update calls
45447         fntype, stripping 'const' there.
45449 2023-03-24  Jakub Jelinek  <jakub@redhat.com>
45451         PR middle-end/109258
45452         * builtins.cc (inline_expand_builtin_bytecmp): Return NULL_RTX early
45453         if target == const0_rtx.
45455 2023-03-24  Alexandre Oliva  <oliva@adacore.com>
45457         * doc/sourcebuild.texi (weak_undefined, posix_memalign):
45458         Document options and effective targets.
45460 2023-03-24  Costas Argyris  <costas.argyris@gmail.com>
45462         * config/i386/x-mingw32-utf8: Make HOST_EXTRA_OBJS_SYMBOL
45463         optional.
45465 2023-03-23  Pat Haugen  <pthaugen@linux.ibm.com>
45467         * config/rs6000/rs6000.md (*mod<mode>3, umod<mode>3): Add
45468         non-earlyclobber alternative.
45470 2023-03-23  Andrew Pinski  <apinski@marvell.com>
45472         PR c/84900
45473         * fold-const.cc (maybe_lvalue_p): Treat COMPOUND_LITERAL_EXPR
45474         as a lvalue.
45476 2023-03-23  Richard Biener  <rguenther@suse.de>
45478         PR tree-optimization/107569
45479         * tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_stmt):
45480         Do not push SSA names with zero uses as available leader.
45481         (process_bb): Likewise.
45483 2023-03-23  Richard Biener  <rguenther@suse.de>
45485         PR tree-optimization/109262
45486         * tree-ssa-forwprop.cc (pass_forwprop::execute): When
45487         combining a piecewise complex load avoid touching loads
45488         that throw internally.  Use fun, not cfun throughout.
45490 2023-03-23  Jakub Jelinek  <jakub@redhat.com>
45492         * value-range.cc (irange::irange_union, irange::intersect): Fix
45493         comment spelling bugs.
45494         * gimple-range-trace.cc (range_tracer::do_header): Likewise.
45495         * gimple-range-trace.h: Likewise.
45496         * gimple-range-edge.cc: Likewise.
45497         (gimple_outgoing_range_stmt_p,
45498         gimple_outgoing_range::switch_edge_range,
45499         gimple_outgoing_range::edge_range_p): Likewise.
45500         * gimple-range.cc (gimple_ranger::prefill_stmt_dependencies,
45501         gimple_ranger::fold_stmt, gimple_ranger::register_transitive_infer,
45502         assume_query::assume_query, assume_query::calculate_phi): Likewise.
45503         * gimple-range-edge.h: Likewise.
45504         * value-range.h (Value_Range::set, Value_Range::lower_bound,
45505         Value_Range::upper_bound, frange::set_undefined): Likewise.
45506         * gimple-range-gori.h (range_def_chain::depend, gori_map::m_outgoing,
45507         gori_compute): Likewise.
45508         * gimple-range-fold.h (fold_using_range): Likewise.
45509         * gimple-range-path.cc (path_range_query::compute_ranges_in_phis):
45510         Likewise.
45511         * gimple-range-gori.cc (range_def_chain::in_chain_p,
45512         range_def_chain::dump, gori_map::calculate_gori,
45513         gori_compute::compute_operand_range_switch,
45514         gori_compute::logical_combine, gori_compute::refine_using_relation,
45515         gori_compute::compute_operand1_range, gori_compute::may_recompute_p):
45516         Likewise.
45517         * gimple-range.h: Likewise.
45518         (enable_ranger): Likewise.
45519         * range-op.h (empty_range_varying): Likewise.
45520         * value-query.h (value_query): Likewise.
45521         * gimple-range-cache.cc (block_range_cache::set_bb_range,
45522         block_range_cache::dump, ssa_global_cache::clear_global_range,
45523         temporal_cache::temporal_value, temporal_cache::current_p,
45524         ranger_cache::range_of_def, ranger_cache::propagate_updated_value,
45525         ranger_cache::range_from_dom, ranger_cache::register_inferred_value):
45526         Likewise.
45527         * gimple-range-fold.cc (fur_edge::get_phi_operand,
45528         fur_stmt::get_operand, gimple_range_adjustment,
45529         fold_using_range::range_of_phi,
45530         fold_using_range::relation_fold_and_or): Likewise.
45531         * value-range-storage.h (irange_storage_slot::MAX_INTS): Likewise.
45532         * value-query.cc (range_query::value_of_expr,
45533         range_query::value_on_edge, range_query::query_relation): Likewise.
45534         * tree-vrp.cc (remove_unreachable::remove_and_update_globals,
45535         intersect_range_with_nonzero_bits): Likewise.
45536         * gimple-range-infer.cc (gimple_infer_range::check_assume_func,
45537         exit_range): Likewise.
45538         * value-relation.h: Likewise.
45539         (equiv_oracle, relation_trio::relation_trio, value_relation,
45540         value_relation::value_relation, pe_min): Likewise.
45541         * range-op-float.cc (range_operator_float::rv_fold,
45542         frange_arithmetic, foperator_unordered_equal::op1_range,
45543         foperator_div::rv_fold): Likewise.
45544         * gimple-range-op.cc (cfn_clz::fold_range): Likewise.
45545         * value-relation.cc (equiv_oracle::query_relation,
45546         equiv_oracle::register_equiv, equiv_oracle::add_equiv_to_block,
45547         value_relation::apply_transitive, relation_chain_head::find_relation,
45548         dom_oracle::query_relation, dom_oracle::find_relation_block,
45549         dom_oracle::find_relation_dom, path_oracle::register_equiv): Likewise.
45550         * range-op.cc (range_operator::wi_fold_in_parts_equiv,
45551         create_possibly_reversed_range, adjust_op1_for_overflow,
45552         operator_mult::wi_fold, operator_exact_divide::op1_range,
45553         operator_cast::lhs_op1_relation, operator_cast::fold_pair,
45554         operator_cast::fold_range, operator_abs::wi_fold, range_op_cast_tests,
45555         range_op_lshift_tests): Likewise.
45557 2023-03-23  Andrew Stubbs  <ams@codesourcery.com>
45559         * config/gcn/gcn.cc (gcn_class_max_nregs): Handle vectors in SGPRs.
45560         (move_callee_saved_registers): Detect the bug condition early.
45562 2023-03-23  Andrew Stubbs  <ams@codesourcery.com>
45564         * config/gcn/gcn-protos.h (gcn_stepped_zero_int_parallel_p): New.
45565         * config/gcn/gcn-valu.md (V_1REG_ALT): New.
45566         (V_2REG_ALT): New.
45567         (vec_extract<V_1REG:mode><V_1REG_ALT:mode>_nop): New.
45568         (vec_extract<V_2REG:mode><V_2REG_ALT:mode>_nop): New.
45569         (vec_extract<V_ALL:mode><V_ALL_ALT:mode>): Use new patterns.
45570         * config/gcn/gcn.cc (gcn_stepped_zero_int_parallel_p): New.
45571         * config/gcn/predicates.md (ascending_zero_int_parallel): New.
45573 2023-03-23  Jakub Jelinek  <jakub@redhat.com>
45575         PR tree-optimization/109176
45576         * tree-vect-generic.cc (expand_vector_condition): If a has
45577         vector boolean type and is a comparison, also check if both
45578         the comparison and VEC_COND_EXPR could be successfully expanded
45579         individually.
45581 2023-03-23  Pan Li  <pan2.li@intel.com>
45582             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
45584         PR target/108654
45585         PR target/108185
45586         * config/riscv/riscv-modes.def (ADJUST_BYTESIZE): Adjust size
45587         for vector mask modes.
45588         * config/riscv/riscv.cc (riscv_v_adjust_bytesize): New.
45589         * config/riscv/riscv.h (riscv_v_adjust_bytesize): New.
45591 2023-03-23  Songhe Zhu  <zhusonghe@eswincomputing.com>
45593         * config/riscv/multilib-generator: Adjusting the loop of 'alt' in 'alts'.
45595 2023-03-23  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
45597         PR target/109244
45598         * config/riscv/riscv-protos.h (emit_vlmax_vsetvl): Define as global.
45599         (emit_vlmax_op): Ditto.
45600         * config/riscv/riscv-v.cc (get_sew): New function.
45601         (emit_vlmax_vsetvl): Adapt function.
45602         (emit_pred_op): Ditto.
45603         (emit_vlmax_op): Ditto.
45604         (emit_nonvlmax_op): Ditto.
45605         (legitimize_move): Fix LRA ICE.
45606         (gen_no_side_effects_vsetvl_rtx): Adapt function.
45607         * config/riscv/vector.md (@mov<V_FRACT:mode><P:mode>_lra): New pattern.
45608         (@mov<VB:mode><P:mode>_lra): Ditto.
45609         (*mov<V_FRACT:mode><P:mode>_lra): Ditto.
45610         (*mov<VB:mode><P:mode>_lra): Ditto.
45612 2023-03-23  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
45614         PR target/109228
45615         * config/riscv/riscv-vector-builtins-bases.cc (class vlenb): Add
45616         __riscv_vlenb support.
45617         (BASE): Ditto.
45618         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
45619         * config/riscv/riscv-vector-builtins-functions.def (vlenb): Ditto.
45620         * config/riscv/riscv-vector-builtins-shapes.cc (struct vlenb_def): Ditto.
45621         (SHAPE): Ditto.
45622         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
45623         * config/riscv/riscv-vector-builtins.cc: Ditto.
45625 2023-03-23  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
45626             kito-cheng  <kito.cheng@sifive.com>
45628         * config/riscv/riscv-vsetvl.cc (reg_available_p): Fix bugs.
45629         (pass_vsetvl::compute_local_backward_infos): Fix bugs.
45630         (pass_vsetvl::need_vsetvl): Fix bugs.
45631         (pass_vsetvl::backward_demand_fusion): Fix bugs.
45632         (pass_vsetvl::demand_fusion): Fix bugs.
45633         (eliminate_insn): Fix bugs.
45634         (insert_vsetvl): Ditto.
45635         (pass_vsetvl::emit_local_forward_vsetvls): Ditto.
45636         * config/riscv/riscv-vsetvl.h (enum vsetvl_type): Ditto.
45637         * config/riscv/vector.md: Ditto.
45639 2023-03-23  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
45640             kito-cheng  <kito.cheng@sifive.com>
45642         * config/riscv/riscv-vector-builtins-bases.cc: Fix ternary bug.
45643         * config/riscv/vector-iterators.md (nmsac): Ditto.
45644         (nmsub): Ditto.
45645         (msac): Ditto.
45646         (msub): Ditto.
45647         (nmadd): Ditto.
45648         (nmacc): Ditto.
45649         * config/riscv/vector.md (@pred_mul_<optab><mode>): Ditto.
45650         (@pred_mul_plus<mode>): Ditto.
45651         (*pred_madd<mode>): Ditto.
45652         (*pred_macc<mode>): Ditto.
45653         (*pred_mul_plus<mode>): Ditto.
45654         (@pred_mul_plus<mode>_scalar): Ditto.
45655         (*pred_madd<mode>_scalar): Ditto.
45656         (*pred_macc<mode>_scalar): Ditto.
45657         (*pred_mul_plus<mode>_scalar): Ditto.
45658         (*pred_madd<mode>_extended_scalar): Ditto.
45659         (*pred_macc<mode>_extended_scalar): Ditto.
45660         (*pred_mul_plus<mode>_extended_scalar): Ditto.
45661         (@pred_minus_mul<mode>): Ditto.
45662         (*pred_<madd_nmsub><mode>): Ditto.
45663         (*pred_nmsub<mode>): Ditto.
45664         (*pred_<macc_nmsac><mode>): Ditto.
45665         (*pred_nmsac<mode>): Ditto.
45666         (*pred_mul_<optab><mode>): Ditto.
45667         (*pred_minus_mul<mode>): Ditto.
45668         (@pred_mul_<optab><mode>_scalar): Ditto.
45669         (@pred_minus_mul<mode>_scalar): Ditto.
45670         (*pred_<madd_nmsub><mode>_scalar): Ditto.
45671         (*pred_nmsub<mode>_scalar): Ditto.
45672         (*pred_<macc_nmsac><mode>_scalar): Ditto.
45673         (*pred_nmsac<mode>_scalar): Ditto.
45674         (*pred_mul_<optab><mode>_scalar): Ditto.
45675         (*pred_minus_mul<mode>_scalar): Ditto.
45676         (*pred_<madd_nmsub><mode>_extended_scalar): Ditto.
45677         (*pred_nmsub<mode>_extended_scalar): Ditto.
45678         (*pred_<macc_nmsac><mode>_extended_scalar): Ditto.
45679         (*pred_nmsac<mode>_extended_scalar): Ditto.
45680         (*pred_mul_<optab><mode>_extended_scalar): Ditto.
45681         (*pred_minus_mul<mode>_extended_scalar): Ditto.
45682         (*pred_<madd_msub><mode>): Ditto.
45683         (*pred_<macc_msac><mode>): Ditto.
45684         (*pred_<madd_msub><mode>_scalar): Ditto.
45685         (*pred_<macc_msac><mode>_scalar): Ditto.
45686         (@pred_neg_mul_<optab><mode>): Ditto.
45687         (@pred_mul_neg_<optab><mode>): Ditto.
45688         (*pred_<nmadd_msub><mode>): Ditto.
45689         (*pred_<nmsub_nmadd><mode>): Ditto.
45690         (*pred_<nmacc_msac><mode>): Ditto.
45691         (*pred_<nmsac_nmacc><mode>): Ditto.
45692         (*pred_neg_mul_<optab><mode>): Ditto.
45693         (*pred_mul_neg_<optab><mode>): Ditto.
45694         (@pred_neg_mul_<optab><mode>_scalar): Ditto.
45695         (@pred_mul_neg_<optab><mode>_scalar): Ditto.
45696         (*pred_<nmadd_msub><mode>_scalar): Ditto.
45697         (*pred_<nmsub_nmadd><mode>_scalar): Ditto.
45698         (*pred_<nmacc_msac><mode>_scalar): Ditto.
45699         (*pred_<nmsac_nmacc><mode>_scalar): Ditto.
45700         (*pred_neg_mul_<optab><mode>_scalar): Ditto.
45701         (*pred_mul_neg_<optab><mode>_scalar): Ditto.
45702         (@pred_widen_neg_mul_<optab><mode>): Ditto.
45703         (@pred_widen_mul_neg_<optab><mode>): Ditto.
45704         (@pred_widen_neg_mul_<optab><mode>_scalar): Ditto.
45705         (@pred_widen_mul_neg_<optab><mode>_scalar): Ditto.
45707 2023-03-23  liuhongt  <hongtao.liu@intel.com>
45709         * builtins.cc (builtin_memset_read_str): Replace
45710         targetm.gen_memset_scratch_rtx with gen_reg_rtx.
45711         (builtin_memset_gen_str): Ditto.
45712         * config/i386/i386-expand.cc
45713         (ix86_convert_const_wide_int_to_broadcast): Replace
45714         ix86_gen_scratch_sse_rtx with gen_reg_rtx.
45715         (ix86_expand_vector_move): Ditto.
45716         * config/i386/i386-protos.h (ix86_gen_scratch_sse_rtx):
45717         Removed.
45718         * config/i386/i386.cc (ix86_gen_scratch_sse_rtx): Removed.
45719         (TARGET_GEN_MEMSET_SCRATCH_RTX): Removed.
45720         * doc/tm.texi: Remove TARGET_GEN_MEMSET_SCRATCH_RTX.
45721         * doc/tm.texi.in: Ditto.
45722         * target.def: Ditto.
45724 2023-03-22  Vladimir N. Makarov  <vmakarov@redhat.com>
45726         * lra.cc (lra): Do not repeat inheritance and live range splitting
45727         when asm error is found.
45729 2023-03-22  Andrew Jenner  <andrew@codesourcery.com>
45731         * config/gcn/gcn-protos.h (gcn_expand_dpp_swap_pairs_insn)
45732         (gcn_expand_dpp_distribute_even_insn)
45733         (gcn_expand_dpp_distribute_odd_insn): Declare.
45734         * config/gcn/gcn-valu.md (@dpp_swap_pairs<mode>)
45735         (@dpp_distribute_even<mode>, @dpp_distribute_odd<mode>)
45736         (cmul<conj_op><mode>3, cml<addsub_as><mode>4, vec_addsub<mode>3)
45737         (cadd<rot><mode>3, vec_fmaddsub<mode>4, vec_fmsubadd<mode>4)
45738         (fms<mode>4<exec>, fms<mode>4_negop2<exec>, fms<mode>4)
45739         (fms<mode>4_negop2): New patterns.
45740         * config/gcn/gcn.cc (gcn_expand_dpp_swap_pairs_insn)
45741         (gcn_expand_dpp_distribute_even_insn)
45742         (gcn_expand_dpp_distribute_odd_insn): New functions.
45743         * config/gcn/gcn.md: Add entries to unspec enum.
45745 2023-03-22  Aldy Hernandez  <aldyh@redhat.com>
45747         PR tree-optimization/109008
45748         * value-range.cc (frange::set): Add nan_state argument.
45749         * value-range.h (class nan_state): New.
45750         (frange::get_nan_state): New.
45752 2023-03-22  Martin Liska  <mliska@suse.cz>
45754         * configure: Regenerate.
45756 2023-03-21  Joseph Myers  <joseph@codesourcery.com>
45758         * stor-layout.cc (finalize_type_size): Copy TYPE_TYPELESS_STORAGE
45759         to variants.
45761 2023-03-21  Andrew MacLeod  <amacleod@redhat.com>
45763         PR tree-optimization/109192
45764         * gimple-range-gori.cc (gori_compute::compute_operand_range):
45765         Terminate gori calculations if a relation is not relevant.
45766         * value-relation.h (value_relation::set_relation): Allow
45767         equality between op1 and op2 if they are the same.
45769 2023-03-21  Richard Biener  <rguenther@suse.de>
45771         PR tree-optimization/109219
45772         * tree-vect-loop.cc (vectorizable_reduction): Check
45773         slp_node, not STMT_SLP_TYPE.
45774         * tree-vect-stmts.cc (vectorizable_condition): Likewise.
45775         * tree-vect-slp.cc (vect_slp_analyze_node_operations_1):
45776         Remove assertion on STMT_SLP_TYPE.
45778 2023-03-21  Jakub Jelinek  <jakub@redhat.com>
45780         PR tree-optimization/109215
45781         * tree.h (enum special_array_member): Adjust comments for int_0
45782         and trail_0.
45783         * tree.cc (component_ref_sam_type): Clear zero_elts if memtype
45784         has zero sized element type and the array has variable number of
45785         elements or constant one or more elements.
45786         (component_ref_size): Adjust comments, formatting fix.
45788 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
45790         * configure.ac: Add check for the Texinfo 6.8
45791         CONTENTS_OUTPUT_LOCATION customization variable and set it if
45792         supported.
45793         * configure: Regenerate.
45794         * Makefile.in (MAKEINFO_TOC_INLINE_FLAG): New variable.  Set by
45795         configure.ac to -c CONTENTS_OUTPUT_LOCATION=inline if
45796         CONTENTS_OUTPUT_LOCATION support is detected, empty otherwise.
45797         ($(build_htmldir)/%/index.html): Pass MAKEINFO_TOC_INLINE_FLAG.
45799 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
45801         * doc/extend.texi: Associate use_hazard_barrier_return index
45802         entry with its attribute.
45803         * doc/invoke.texi: Associate -fcanon-prefix-map index entry with
45804         its attribute
45806 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
45808         * doc/implement-c.texi: Remove usage of @gol.
45809         * doc/invoke.texi: Ditto.
45810         * doc/sourcebuild.texi: Ditto.
45811         * doc/include/gcc-common.texi: Remove @gol.  In new Makeinfo and
45812         texinfo.tex versions, the bug it was working around appears to
45813         be gone.
45815 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
45817         * doc/include/texinfo.tex: Update to 2023-01-17.19.
45819 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
45821         * doc/include/gcc-common.texi: Add @defbuiltin{,x} and
45822         @enddefbuiltin for defining built-in functions.
45823         * doc/extend.texi: Apply @defbuiltin{,x} to many, but not all,
45824         places where it should be used.
45826 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
45828         * doc/extend.texi (Formatted Output Function Checking): New
45829         subsection for  grouping together printf et al.
45830         (Exception handling) Fix missing @ sign before copyright
45831         header, which lead to the copyright line leaking into
45832         '(gcc)Exception handling'.
45833         * doc/gcc.texi: Set document language to en_US.
45834         (@copying): Wrap front cover texts in quotations, move in manual
45835         description text.
45837 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
45839         * doc/gcc.texi: Add the Indices appendix, to make texinfo
45840         generate nice indices overview page.
45842 2023-03-21  Richard Biener  <rguenther@suse.de>
45844         PR tree-optimization/109170
45845         * gimple-range-op.cc (cfn_pass_through_arg1): New.
45846         (gimple_range_op_handler::maybe_builtin_call): Handle
45847         __builtin_expect via cfn_pass_through_arg1.
45849 2023-03-20   Michael Meissner  <meissner@linux.ibm.com>
45851         PR target/109067
45852         * config/rs6000/rs6000.cc (create_complex_muldiv): Delete.
45853         (init_float128_ieee): Delete code to switch complex multiply and divide
45854         for long double.
45855         (complex_multiply_builtin_code): New helper function.
45856         (complex_divide_builtin_code): Likewise.
45857         (rs6000_mangle_decl_assembler_name): Add support for mangling the name
45858         of complex 128-bit multiply and divide built-in functions.
45860 2023-03-20  Peter Bergner  <bergner@linux.ibm.com>
45862         PR target/109178
45863         * config/rs6000/rs6000-builtin.cc (stv_expand_builtin): Use tmode.
45865 2023-03-19  Jonny Grant  <jg@jguk.org>
45867         * doc/extend.texi (Common Function Attributes) <nonnull>:
45868         Correct typo.
45870 2023-03-18  Peter Bergner  <bergner@linux.ibm.com>
45872         PR rtl-optimization/109179
45873         * lra-constraints.cc (combine_reload_insn): Enforce TO is not a debug
45874         insn or note.  Move the tests earlier to guard lra_get_insn_recog_data.
45876 2023-03-17  Jakub Jelinek  <jakub@redhat.com>
45878         PR target/105554
45879         * function.h (push_struct_function): Add ABSTRACT_P argument defaulted
45880         to false.
45881         * function.cc (push_struct_function): Add ABSTRACT_P argument, pass it
45882         to allocate_struct_function instead of false.
45883         * tree-inline.cc (initialize_cfun): Don't copy DECL_ARGUMENTS
45884         nor DECL_RESULT here.  Pass true as ABSTRACT_P to
45885         push_struct_function.  Call targetm.target_option.relayout_function
45886         after it.
45887         (tree_function_versioning): Formatting fix.
45889 2023-03-17  Vladimir N. Makarov  <vmakarov@redhat.com>
45891         * lra-constraints.cc: Include hooks.h.
45892         (combine_reload_insn): New function.
45893         (lra_constraints): Call it.
45895 2023-03-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
45896             kito-cheng  <kito.cheng@sifive.com>
45898         * config/riscv/riscv-v.cc (legitimize_move): Allow undef value
45899         as legitimate value.
45900         * config/riscv/riscv-vector-builtins.cc
45901         (function_expander::use_ternop_insn): Fix bugs of ternary intrinsic.
45902         (function_expander::use_widen_ternop_insn): Ditto.
45903         * config/riscv/vector.md (@vundefined<mode>): New pattern.
45904         (pred_mul_<optab><mode>_undef_merge): Remove.
45905         (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
45906         (*pred_mul_<optab><mode>_undef_merge_extended_scalar): Ditto.
45907         (pred_neg_mul_<optab><mode>_undef_merge): Ditto.
45908         (*pred_neg_mul_<optab><mode>_undef_merge_scalar): Ditto.
45910 2023-03-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
45912         PR target/109092
45913         * config/riscv/riscv.md: Fix subreg bug.
45915 2023-03-17  Jakub Jelinek  <jakub@redhat.com>
45917         PR middle-end/108685
45918         * omp-expand.cc (expand_omp_for_ordered_loops): Add L0_BB argument,
45919         use its loop_father rather than BODY_BB's loop_father.
45920         (expand_omp_for_generic): Adjust expand_omp_for_ordered_loops caller.
45921         If broken_loop with ordered > collapse and at least one of those
45922         extra loops aren't guaranteed to have at least one iteration, change
45923         l0_bb's loop_father to entry_bb's loop_father.  Set cont_bb's
45924         loop_father to l0_bb's loop_father rather than l1_bb's.
45926 2023-03-17  Jakub Jelinek  <jakub@redhat.com>
45928         PR plugins/108634
45929         * gdbhooks.py (TreePrinter.to_string): Wrap
45930         gdb.parse_and_eval('tree_code_type') in a try block, parse
45931         and eval 'tree_code_type_tmpl<0>::tree_code_type' instead if it
45932         raises exception.  Update comments for the recent tree_code_type
45933         changes.
45935 2023-03-17  Sandra Loosemore  <sandra@codesourcery.com>
45937         * doc/extend.texi (BPF Built-in Functions): Fix numerous markup
45938         issues.  Add more line breaks to example so it doesn't overflow
45939         the margins.
45941 2023-03-17  Sandra Loosemore  <sandra@codesourcery.com>
45943         * doc/extend.texi (Common Function Attributes) <access>: Fix bad
45944         line breaks in examples.
45945         <malloc>: Fix bad line breaks in running text, also copy-edit
45946         for consistency.
45947         (Extended Asm) <Generic Operand Modifiers>: Fix @multitable width.
45948         * doc/invoke.texi (Option Summary) <Developer Options>: Fix misplaced
45949         @gol.
45950         (C++ Dialect Options) <-fcontracts>: Add line break in example.
45951         <-Wctad-maybe-unsupported>: Likewise.
45952         <-Winvalid-constexpr>: Likewise.
45953         (Warning Options) <-Wdangling-pointer>: Likewise.
45954         <-Winterference-size>: Likewise.
45955         <-Wvla-parameter>: Likewise.
45956         (Static Analyzer Options): Fix bad line breaks in running text,
45957         plus add some missing markup.
45958         (Optimize Options) <openacc-privatization>: Fix more bad line
45959         breaks in running text.
45961 2023-03-16  Uros Bizjak  <ubizjak@gmail.com>
45963         * config/i386/i386-expand.cc (expand_vec_perm_pblendv):
45964         Handle 8-byte modes only with TARGET_MMX_WITH_SSE.
45965         (expand_vec_perm_2perm_pblendv): Ditto.
45967 2023-03-16  Martin Liska  <mliska@suse.cz>
45969         PR middle-end/106133
45970         * gcc.cc (driver_handle_option): Use x_main_input_basename
45971         if x_dump_base_name is null.
45972         * opts.cc (common_handle_option): Likewise.
45974 2023-03-16  Richard Biener  <rguenther@suse.de>
45976         PR tree-optimization/109123
45977         * gimple-ssa-warn-access.cc (pass_waccess::warn_invalid_pointer):
45978         Do not emit -Wuse-after-free late.
45979         (pass_waccess::check_call): Always check call pointer uses.
45981 2023-03-16  Richard Biener  <rguenther@suse.de>
45983         PR tree-optimization/109141
45984         * tree-dfa.h (renumber_gimple_stmt_uids_in_block): New.
45985         * tree-dfa.cc (renumber_gimple_stmt_uids_in_block): Split
45986         out from ...
45987         (renumber_gimple_stmt_uids): ... here and
45988         (renumber_gimple_stmt_uids_in_blocks): ... here.
45989         * gimple-ssa-warn-access.cc (pass_waccess::use_after_inval_p):
45990         Use renumber_gimple_stmt_uids_in_block to also assign UIDs
45991         to PHIs.
45992         (pass_waccess::check_pointer_uses): Process all PHIs.
45994 2023-03-15  David Malcolm  <dmalcolm@redhat.com>
45996         PR analyzer/109097
45997         * diagnostic-format-sarif.cc (class sarif_invocation): New.
45998         (class sarif_ice_notification): New.
45999         (sarif_builder::m_invocation_obj): New field.
46000         (sarif_invocation::add_notification_for_ice): New.
46001         (sarif_invocation::prepare_to_flush): New.
46002         (sarif_ice_notification::sarif_ice_notification): New.
46003         (sarif_builder::sarif_builder): Add m_invocation_obj.
46004         (sarif_builder::end_diagnostic): Special-case DK_ICE and
46005         DK_ICE_NOBT.
46006         (sarif_builder::flush_to_file): Call prepare_to_flush on
46007         m_invocation_obj.  Pass the latter to make_top_level_object.
46008         (sarif_builder::make_result_object): Move creation of "locations"
46009         array to...
46010         (sarif_builder::make_locations_arr): ...this new function.
46011         (sarif_builder::make_top_level_object): Add "invocation_obj" param
46012         and pass it to make_run_object.
46013         (sarif_builder::make_run_object): Add "invocation_obj" param and
46014         use it.
46015         (sarif_ice_handler): New callback.
46016         (diagnostic_output_format_init_sarif): Wire up sarif_ice_handler.
46017         * diagnostic.cc (diagnostic_initialize): Initialize new field
46018         "ice_handler_cb".
46019         (diagnostic_action_after_output): If it is set, make one attempt
46020         to call ice_handler_cb.
46021         * diagnostic.h (diagnostic_context::ice_handler_cb): New field.
46023 2023-03-15  Uros Bizjak  <ubizjak@gmail.com>
46025         * config/i386/i386-expand.cc (expand_vec_perm_blend):
46026         Handle 8-byte modes only with TARGET_MMX_WITH_SSE. Handle V2SFmode
46027         and fix V2HImode handling.
46028         (expand_vec_perm_1): Try to emit BLEND instruction
46029         before MOVSS/MOVSD.
46030         * config/i386/mmx.md (*mmx_blendps): New insn pattern.
46032 2023-03-15  Tobias Burnus  <tobias@codesourcery.com>
46034         * omp-low.cc (omp_runtime_api_call): Add omp_in_explicit_task.
46036 2023-03-15  Richard Biener  <rguenther@suse.de>
46038         * gimple-ssa-warn-access.cc (pass_waccess::check_pointer_uses):
46039         Do not diagnose clobbers.
46041 2023-03-15  Richard Biener  <rguenther@suse.de>
46043         PR tree-optimization/109139
46044         * tree-ssa-live.cc (remove_unused_locals): Look at the
46045         base address for unused decls on the LHS of .DEFERRED_INIT.
46047 2023-03-15  Xi Ruoyao  <xry111@xry111.site>
46049         PR other/109086
46050         * builtins.cc (inline_string_cmp): Force the character
46051         difference into "result" pseudo-register, instead of reassign
46052         the pseudo-register.
46054 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
46056         * config.gcc: Add thead.o to RISC-V extra_objs.
46057         * config/riscv/peephole.md: Add mempair peephole passes.
46058         * config/riscv/riscv-protos.h (riscv_split_64bit_move_p): New
46059         prototype.
46060         (th_mempair_operands_p): Likewise.
46061         (th_mempair_order_operands): Likewise.
46062         (th_mempair_prepare_save_restore_operands): Likewise.
46063         (th_mempair_save_restore_regs): Likewise.
46064         (th_mempair_output_move): Likewise.
46065         * config/riscv/riscv.cc (riscv_save_reg): Move code.
46066         (riscv_restore_reg): Move code.
46067         (riscv_for_each_saved_reg): Add code to emit mempair insns.
46068         * config/riscv/t-riscv: Add thead.cc.
46069         * config/riscv/thead.md (*th_mempair_load_<GPR:mode>2):
46070         New insn.
46071         (*th_mempair_store_<GPR:mode>2): Likewise.
46072         (*th_mempair_load_extendsidi2): Likewise.
46073         (*th_mempair_load_zero_extendsidi2): Likewise.
46074         * config/riscv/thead.cc: New file.
46076 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
46078         * config/riscv/constraints.md (TARGET_XTHEADFMV ? FP_REGS : NO_REGS)
46079         New constraint "th_f_fmv".
46080         (TARGET_XTHEADFMV ? GR_REGS : NO_REGS): New constraint
46081         "th_r_fmv".
46082         * config/riscv/riscv.cc (riscv_split_doubleword_move):
46083         Add split code for XTheadFmv.
46084         (riscv_secondary_memory_needed): XTheadFmv does not need
46085         secondary memory.
46086         * config/riscv/riscv.md: Add new UNSPEC_XTHEADFMV and
46087         UNSPEC_XTHEADFMV_HW. Add support for XTheadFmv to
46088         movdf_hardfloat_rv32.
46089         * config/riscv/thead.md (th_fmv_hw_w_x): New INSN.
46090         (th_fmv_x_w): New INSN.
46091         (th_fmv_x_hw): New INSN.
46093 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
46095         * config/riscv/riscv.md (maddhisi4): New expand.
46096         (msubhisi4): New expand.
46097         * config/riscv/thead.md (*th_mula<mode>): New pattern.
46098         (*th_mulawsi): New pattern.
46099         (*th_mulawsi2): New pattern.
46100         (*th_maddhisi4): New pattern.
46101         (*th_sextw_maddhisi4): New pattern.
46102         (*th_muls<mode>): New pattern.
46103         (*th_mulswsi): New pattern.
46104         (*th_mulswsi2): New pattern.
46105         (*th_msubhisi4): New pattern.
46106         (*th_sextw_msubhisi4): New pattern.
46108 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
46110         * config/riscv/iterators.md (TARGET_64BIT): Add GPR2 iterator.
46111         * config/riscv/riscv-protos.h (riscv_expand_conditional_move):
46112         Add prototype.
46113         * config/riscv/riscv.cc (riscv_rtx_costs): Add costs for
46114         XTheadCondMov.
46115         (riscv_expand_conditional_move): New function.
46116         (riscv_expand_conditional_move_onesided): New function.
46117         * config/riscv/riscv.md: Add support for XTheadCondMov.
46118         * config/riscv/thead.md (*th_cond_mov<GPR:mode><GPR2:mode>): Add
46119         support for XTheadCondMov.
46120         (*th_cond_gpr_mov<GPR:mode><GPR2:mode>): Likewise.
46122 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
46124         * config/riscv/bitmanip.md (clzdi2): New expand.
46125         (clzsi2): New expand.
46126         (ctz<mode>2): New expand.
46127         (popcount<mode>2): New expand.
46128         (<bitmanip_optab>si2): Rename INSN.
46129         (*<bitmanip_optab>si2): Hide INSN name.
46130         (<bitmanip_optab>di2): Rename INSN.
46131         (*<bitmanip_optab>di2): Hide INSN name.
46132         (rotrsi3): Remove INSN.
46133         (rotr<mode>3): Add expand.
46134         (*rotrsi3): New INSN.
46135         (rotrdi3): Rename INSN.
46136         (*rotrdi3): Hide INSN name.
46137         (rotrsi3_sext): Rename INSN.
46138         (*rotrsi3_sext): Hide INSN name.
46139         (bswap<mode>2): Remove INSN.
46140         (bswapdi2): Add expand.
46141         (bswapsi2): Add expand.
46142         (*bswap<mode>2): Hide INSN name.
46143         * config/riscv/riscv.cc (riscv_rtx_costs): Add costs for sign
46144         extraction.
46145         * config/riscv/riscv.md (extv<mode>): New expand.
46146         (extzv<mode>): New expand.
46147         * config/riscv/thead.md (*th_srri<mode>3): New INSN.
46148         (*th_ext<mode>): New INSN.
46149         (*th_extu<mode>): New INSN.
46150         (*th_clz<mode>2): New INSN.
46151         (*th_rev<mode>2): New INSN.
46153 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
46155         * config/riscv/riscv.cc (riscv_rtx_costs): Add xthead:tst cost.
46156         * config/riscv/thead.md (*th_tst<mode>3): New INSN.
46158 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
46160         * config/riscv/riscv.md: Include thead.md
46161         * config/riscv/thead.md: New file.
46163 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
46165         * config/riscv/riscv-cores.def (RISCV_CORE): Add "thead-c906".
46167 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
46169         * common/config/riscv/riscv-common.cc: Add xthead* extensions.
46170         * config/riscv/riscv-opts.h (MASK_XTHEADBA): New.
46171         (MASK_XTHEADBB): New.
46172         (MASK_XTHEADBS): New.
46173         (MASK_XTHEADCMO): New.
46174         (MASK_XTHEADCONDMOV): New.
46175         (MASK_XTHEADFMEMIDX): New.
46176         (MASK_XTHEADFMV): New.
46177         (MASK_XTHEADINT): New.
46178         (MASK_XTHEADMAC): New.
46179         (MASK_XTHEADMEMIDX): New.
46180         (MASK_XTHEADMEMPAIR): New.
46181         (MASK_XTHEADSYNC): New.
46182         (TARGET_XTHEADBA): New.
46183         (TARGET_XTHEADBB): New.
46184         (TARGET_XTHEADBS): New.
46185         (TARGET_XTHEADCMO): New.
46186         (TARGET_XTHEADCONDMOV): New.
46187         (TARGET_XTHEADFMEMIDX): New.
46188         (TARGET_XTHEADFMV): New.
46189         (TARGET_XTHEADINT): New.
46190         (TARGET_XTHEADMAC): New.
46191         (TARGET_XTHEADMEMIDX): New.
46192         (TARGET_XTHEADMEMPAIR): new.
46193         (TARGET_XTHEADSYNC): New.
46194         * config/riscv/riscv.opt: Add riscv_xthead_subext.
46196 2023-03-15  Hu, Lin1  <lin1.hu@intel.com>
46198         PR target/109117
46199         * config/i386/i386-builtin.def (__builtin_ia32_vaesdec_v16qi,
46200         __builtin_ia32_vaesdeclast_v16qi,__builtin_ia32_vaesenc_v16qi,
46201         __builtin_ia32_vaesenclast_v16qi): Require OPTION_MASK_ISA_AVX512VL.
46203 2023-03-14  Jakub Jelinek  <jakub@redhat.com>
46205         PR target/109109
46206         * config/i386/i386-expand.cc (split_double_concat): Fix splitting
46207         when lo is equal to dhi and hi is a MEM which uses dlo register.
46209 2023-03-14  Martin Jambor  <mjambor@suse.cz>
46211         PR ipa/107925
46212         * ipa-cp.cc (update_profiling_info): Drop counts of orig_node to
46213         global0 instead of zeroing when it does not have as many counts as
46214         it should.
46216 2023-03-14  Martin Jambor  <mjambor@suse.cz>
46218         PR ipa/107925
46219         * ipa-cp.cc (update_specialized_profile): Drop orig_node_count to
46220         ipa count, remove assert, lenient_count_portion_handling, dump
46221         also orig_node_count.
46223 2023-03-14  Uros Bizjak  <ubizjak@gmail.com>
46225         * config/i386/i386-expand.cc (expand_vec_perm_movs):
46226         Handle V2SImode for TARGET_MMX_WITH_SSE.
46227         * config/i386/mmx.md (*mmx_movss_<mode>): Rename from *mmx_movss
46228         using V2FI mode iterator to handle both V2SI and V2SF modes.
46230 2023-03-14  Sam James  <sam@gentoo.org>
46232         * config/riscv/genrvv-type-indexer.cc: Avoid calloc() poisoning on musl by
46233         including <sstream> earlier.
46234         * system.h: Add INCLUDE_SSTREAM.
46236 2023-03-14  Richard Biener  <rguenther@suse.de>
46238         * tree-ssa-live.cc (remove_unused_locals): Do not treat
46239         the .DEFERRED_INIT of a variable as use, instead remove
46240         that if it is the only use.
46242 2023-03-14  Eric Botcazou  <ebotcazou@adacore.com>
46244         PR rtl-optimization/107762
46245         * expr.cc (emit_group_store): Revert latest change.
46247 2023-03-14  Andre Vieira  <andre.simoesdiasvieira@arm.com>
46249         PR tree-optimization/109005
46250         * tree-if-conv.cc (get_bitfield_rep): Replace BLKmode check with
46251         aggregate type check.
46253 2023-03-14  Jakub Jelinek  <jakub@redhat.com>
46255         PR tree-optimization/109115
46256         * tree-vect-patterns.cc (vect_recog_divmod_pattern): Don't use
46257         r.upper_bound () on r.undefined_p () range.
46259 2023-03-14  Jan Hubicka  <hubicka@ucw.cz>
46261         PR tree-optimization/106896
46262         * profile-count.cc (profile_count::to_sreal_scale): Synchronize
46263         implementatoin with probability_in; avoid some asserts.
46265 2023-03-13  Max Filippov  <jcmvbkbc@gmail.com>
46267         * config/xtensa/linux.h (TARGET_ASM_FILE_END): New macro.
46269 2023-03-13  Sean Bright  <sean@seanbright.com>
46271         * doc/invoke.texi (Warning Options): Remove errant 'See'
46272         before @xref.
46274 2023-03-13  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
46276         * config/xtensa/xtensa.h (REG_OK_STRICT, REG_OK_FOR_INDEX_P,
46277         REG_OK_FOR_BASE_P): Remove.
46279 2023-03-13  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
46281         * config/riscv/vector-iterators.md (=vd,vr): Fine tune.
46282         (=vd,vd,vr,vr): Ditto.
46283         * config/riscv/vector.md: Ditto.
46285 2023-03-13  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
46287         * config/riscv/riscv-vector-builtins.cc
46288         (function_expander::use_compare_insn): Add operand predicate check.
46290 2023-03-13  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
46292         * config/riscv/vector.md: Fine tune RA constraints.
46294 2023-03-13  Tobias Burnus  <tobias@codesourcery.com>
46296         * config/gcn/mkoffload.cc (main): Pass -save-temps on for the
46297         hsaco assemble/link.
46299 2023-03-13  Richard Biener  <rguenther@suse.de>
46301         PR tree-optimization/109046
46302         * tree-ssa-forwprop.cc (pass_forwprop::execute): Combine
46303         piecewise complex loads.
46305 2023-03-12  Jakub Jelinek  <jakub@redhat.com>
46307         * config/aarch64/aarch64.h (aarch64_bf16_type_node): Remove.
46308         (aarch64_bf16_ptr_type_node): Adjust comment.
46309         * config/aarch64/aarch64.cc (aarch64_gimplify_va_arg_expr): Use
46310         bfloat16_type_node rather than aarch64_bf16_type_node.
46311         (aarch64_libgcc_floating_mode_supported_p,
46312         aarch64_scalar_mode_supported_p): Also support BFmode.
46313         (aarch64_invalid_conversion, aarch64_invalid_unary_op): Remove.
46314         (aarch64_invalid_binary_op): Remove BFmode related rejections.
46315         (TARGET_INVALID_CONVERSION, TARGET_INVALID_UNARY_OP): Don't redefine.
46316         * config/aarch64/aarch64-builtins.cc (aarch64_bf16_type_node): Remove.
46317         (aarch64_int_or_fp_type): Use bfloat16_type_node rather than
46318         aarch64_bf16_type_node.
46319         (aarch64_init_simd_builtin_types): Likewise.
46320         (aarch64_init_bf16_types): Likewise.  Don't create bfloat16_type_node,
46321         which is created in tree.cc already.
46322         * config/aarch64/aarch64-sve-builtins.def (svbfloat16_t): Likewise.
46324 2023-03-12  Roger Sayle  <roger@nextmovesoftware.com>
46326         PR middle-end/109031
46327         * tree-chrec.cc (chrec_apply): When folding "{a, +, a} (x-1)",
46328         ensure that the type of x is as wide or wider than the type of a.
46330 2023-03-12  Tamar Christina  <tamar.christina@arm.com>
46332         PR target/108583
46333         * config/aarch64/aarch64-simd.md (@aarch64_bitmask_udiv<mode>3): Remove.
46334         (*bitmask_shift_plus<mode>): New.
46335         * config/aarch64/aarch64-sve2.md (*bitmask_shift_plus<mode>): New.
46336         (@aarch64_bitmask_udiv<mode>3): Remove.
46337         * config/aarch64/aarch64.cc
46338         (aarch64_vectorize_can_special_div_by_constant,
46339         TARGET_VECTORIZE_CAN_SPECIAL_DIV_BY_CONST): Removed.
46340         (TARGET_VECTORIZE_PREFERRED_DIV_AS_SHIFTS_OVER_MULT,
46341         aarch64_vectorize_preferred_div_as_shifts_over_mult): New.
46343 2023-03-12  Tamar Christina  <tamar.christina@arm.com>
46345         PR target/108583
46346         * target.def (preferred_div_as_shifts_over_mult): New.
46347         * doc/tm.texi.in: Document it.
46348         * doc/tm.texi: Regenerate.
46349         * targhooks.cc (default_preferred_div_as_shifts_over_mult): New.
46350         * targhooks.h (default_preferred_div_as_shifts_over_mult): New.
46351         * tree-vect-patterns.cc (vect_recog_divmod_pattern): Use it.
46353 2023-03-12  Tamar Christina  <tamar.christina@arm.com>
46354             Richard Sandiford  <richard.sandiford@arm.com>
46356         PR target/108583
46357         * tree-ssa-math-opts.cc (convert_mult_to_fma): Inhibit FMA in case not
46358         single use.
46360 2023-03-12  Tamar Christina  <tamar.christina@arm.com>
46361             Andrew MacLeod  <amacleod@redhat.com>
46363         PR target/108583
46364         * gimple-range-op.h (gimple_range_op_handler): Add maybe_non_standard.
46365         * gimple-range-op.cc (gimple_range_op_handler::gimple_range_op_handler):
46366         Use it.
46367         (gimple_range_op_handler::maybe_non_standard): New.
46368         * range-op.cc (class operator_widen_plus_signed,
46369         operator_widen_plus_signed::wi_fold, class operator_widen_plus_unsigned,
46370         operator_widen_plus_unsigned::wi_fold, class operator_widen_mult_signed,
46371         operator_widen_mult_signed::wi_fold, class operator_widen_mult_unsigned,
46372         operator_widen_mult_unsigned::wi_fold,
46373         ptr_op_widen_mult_signed, ptr_op_widen_mult_unsigned,
46374         ptr_op_widen_plus_signed, ptr_op_widen_plus_unsigned): New.
46375         * range-op.h (ptr_op_widen_mult_signed, ptr_op_widen_mult_unsigned,
46376         ptr_op_widen_plus_signed, ptr_op_widen_plus_unsigned): New
46378 2023-03-12  Tamar Christina  <tamar.christina@arm.com>
46380         PR target/108583
46381         * doc/tm.texi (TARGET_VECTORIZE_CAN_SPECIAL_DIV_BY_CONST): Remove.
46382         * doc/tm.texi.in: Likewise.
46383         * explow.cc (round_push, align_dynamic_address): Revert previous patch.
46384         * expmed.cc (expand_divmod): Likewise.
46385         * expmed.h (expand_divmod): Likewise.
46386         * expr.cc (force_operand, expand_expr_divmod): Likewise.
46387         * optabs.cc (expand_doubleword_mod, expand_doubleword_divmod): Likewise.
46388         * target.def (can_special_div_by_const): Remove.
46389         * target.h: Remove tree-core.h include
46390         * targhooks.cc (default_can_special_div_by_const): Remove.
46391         * targhooks.h (default_can_special_div_by_const): Remove.
46392         * tree-vect-generic.cc (expand_vector_operation): Remove hook.
46393         * tree-vect-patterns.cc (vect_recog_divmod_pattern): Remove hook.
46394         * tree-vect-stmts.cc (vectorizable_operation): Remove hook.
46396 2023-03-12  Sandra Loosemore  <sandra@codesourcery.com>
46398         * doc/install.texi2html: Fix issue number typo in comment.
46400 2023-03-12  Gaius Mulley  <gaiusmod2@gmail.com>
46402         * doc/gm2.texi (Elementary data types): Equivalence BOOLEAN with
46403         bool.
46405 2023-03-12  Sandra Loosemore  <sandra@codesourcery.com>
46407         * doc/invoke.texi (Optimize Options):  Add markup to
46408         description of asan-kernel-mem-intrinsic-prefix, and clarify
46409         wording slightly.
46411 2023-03-11  Gerald Pfeifer  <gerald@pfeifer.com>
46413         * doc/extend.texi (Named Address Spaces): Drop a redundant link
46414         to AVR-LibC.
46416 2023-03-11  Jeff Law  <jlaw@ventanamicro>
46418         PR web/88860
46419         * doc/extend.texi: Clarify Attribute Syntax a bit.
46421 2023-03-11  Sandra Loosemore  <sandra@codesourcery.com>
46423         * doc/install.texi (Prerequisites): Suggest using newer versions
46424         of Texinfo.
46425         (Final install): Clean up and modernize discussion of how to
46426         build or obtain the GCC manuals.
46427         * doc/install.texi2html: Update comment to point to the PR instead
46428         of "makeinfo 4.7 brokenness" (it's not specific to that version).
46430 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
46432         PR target/107703
46433         * optabs.cc (expand_fix): For conversions from BFmode to integral,
46434         use shifts to convert it to SFmode first and then convert SFmode
46435         to integral.
46437 2023-03-10  Andrew Pinski  <apinski@marvell.com>
46439         * config/aarch64/aarch64.md: Add a new define_split
46440         to help combine.
46442 2023-03-10  Richard Biener  <rguenther@suse.de>
46444         * tree-ssa-structalias.cc (solve_graph): Immediately
46445         iterate self-cycles.
46447 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
46449         PR tree-optimization/109008
46450         * range-op-float.cc (float_widen_lhs_range): If not
46451         -frounding-math and not IBM double double format, extend lhs
46452         range just by 0.5ulp rather than 1ulp in each direction.
46454 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
46456         PR target/107998
46457         * config.gcc (x86_64-*-cygwin*): Don't add i386/t-cygwin-w64 into
46458         $tmake_file.
46459         * config/i386/t-cygwin-w64: Remove.
46461 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
46463         PR plugins/108634
46464         * tree-core.h (tree_code_type, tree_code_length): For C++11 or
46465         C++14, don't declare as extern const arrays.
46466         (tree_code_type_tmpl, tree_code_length_tmpl): New types with
46467         static constexpr member arrays for C++11 or C++14.
46468         * tree.h (TREE_CODE_CLASS): For C++11 or C++14 use
46469         tree_code_type_tmpl <0>::tree_code_type instead of tree_code_type.
46470         (TREE_CODE_LENGTH): For C++11 or C++14 use
46471         tree_code_length_tmpl <0>::tree_code_length instead of
46472         tree_code_length.
46473         * tree.cc (tree_code_type, tree_code_length): Remove.
46475 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
46477         PR other/108464
46478         * common.opt (fcanon-prefix-map): New option.
46479         * opts.cc: Include file-prefix-map.h.
46480         (flag_canon_prefix_map): New variable.
46481         (common_handle_option): Handle OPT_fcanon_prefix_map.
46482         (gen_command_line_string): Ignore OPT_fcanon_prefix_map.
46483         * file-prefix-map.h (flag_canon_prefix_map): Declare.
46484         * file-prefix-map.cc (struct file_prefix_map): Add canonicalize
46485         member.
46486         (add_prefix_map): Initialize canonicalize member from
46487         flag_canon_prefix_map, and if true canonicalize it using lrealpath.
46488         (remap_filename): Revert 2022-11-01 and 2022-11-07 changes,
46489         use lrealpath result only for map->canonicalize map entries.
46490         * lto-opts.cc (lto_write_options): Ignore OPT_fcanon_prefix_map.
46491         * opts-global.cc (handle_common_deferred_options): Clear
46492         flag_canon_prefix_map at the start and handle OPT_fcanon_prefix_map.
46493         * doc/invoke.texi (-fcanon-prefix-map): Document.
46494         (-ffile-prefix-map, -fdebug-prefix-map, -fprofile-prefix-map): Add
46495         see also for -fcanon-prefix-map.
46496         * doc/cppopts.texi (-fmacro-prefix-map): Likewise.
46498 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
46500         PR c/108079
46501         * cgraphunit.cc (check_global_declaration): Don't warn for unused
46502         variables which have OPT_Wunused_variable warning suppressed.
46504 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
46506         PR tree-optimization/109008
46507         * range-op-float.cc (float_widen_lhs_range): If lb is
46508         minimum representable finite number or ub is maximum
46509         representable finite number, instead of widening it to
46510         -inf or inf widen it to negative or positive 0x0.8p+(EMAX+1).
46511         Temporarily clear flag_finite_math_only when canonicalizing
46512         the widened range.
46514 2023-03-10  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
46516         * config/riscv/riscv-builtins.cc (riscv_gimple_fold_builtin): New function.
46517         * config/riscv/riscv-protos.h (riscv_gimple_fold_builtin): Ditto.
46518         (gimple_fold_builtin):  Ditto.
46519         * config/riscv/riscv-vector-builtins-bases.cc (class read_vl): New class.
46520         (class vleff): Ditto.
46521         (BASE): Ditto.
46522         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
46523         * config/riscv/riscv-vector-builtins-functions.def (read_vl): Ditto.
46524         (vleff): Ditto.
46525         * config/riscv/riscv-vector-builtins-shapes.cc (struct read_vl_def): Ditto.
46526         (struct fault_load_def): Ditto.
46527         (SHAPE): Ditto.
46528         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
46529         * config/riscv/riscv-vector-builtins.cc
46530         (rvv_arg_type_info::get_tree_type): Add size_ptr.
46531         (gimple_folder::gimple_folder): New class.
46532         (gimple_folder::fold): Ditto.
46533         (gimple_fold_builtin): New function.
46534         (get_read_vl_instance): Ditto.
46535         (get_read_vl_decl): Ditto.
46536         * config/riscv/riscv-vector-builtins.def (size_ptr): Add size_ptr.
46537         * config/riscv/riscv-vector-builtins.h (class gimple_folder): New class.
46538         (get_read_vl_instance): New function.
46539         (get_read_vl_decl):  Ditto.
46540         * config/riscv/riscv-vsetvl.cc (fault_first_load_p): Ditto.
46541         (read_vl_insn_p): Ditto.
46542         (available_occurrence_p): Ditto.
46543         (backward_propagate_worthwhile_p): Ditto.
46544         (gen_vsetvl_pat): Adapt for vleff support.
46545         (get_forward_read_vl_insn): New function.
46546         (get_backward_fault_first_load_insn): Ditto.
46547         (source_equal_p): Adapt for vleff support.
46548         (first_ratio_invalid_for_second_sew_p): Remove.
46549         (first_ratio_invalid_for_second_lmul_p): Ditto.
46550         (first_lmul_less_than_second_lmul_p): Ditto.
46551         (first_ratio_less_than_second_ratio_p): Ditto.
46552         (support_relaxed_compatible_p): New function.
46553         (vector_insn_info::operator>): Remove.
46554         (vector_insn_info::operator>=): Refine.
46555         (vector_insn_info::parse_insn): Adapt for vleff support.
46556         (vector_insn_info::compatible_p): Ditto.
46557         (vector_insn_info::update_fault_first_load_avl): New function.
46558         (pass_vsetvl::transfer_after): Adapt for vleff support.
46559         (pass_vsetvl::demand_fusion): Ditto.
46560         (pass_vsetvl::cleanup_insns): Ditto.
46561         * config/riscv/riscv-vsetvl.def (DEF_INCOMPATIBLE_COND): Remove
46562         redundant condtions.
46563         * config/riscv/riscv-vsetvl.h (struct demands_cond): New function.
46564         * config/riscv/riscv.cc (TARGET_GIMPLE_FOLD_BUILTIN): New target hook.
46565         * config/riscv/riscv.md: Adapt for vleff support.
46566         * config/riscv/t-riscv: Ditto.
46567         * config/riscv/vector-iterators.md: New iterator.
46568         * config/riscv/vector.md (read_vlsi): New pattern.
46569         (read_vldi_zero_extend): Ditto.
46570         (@pred_fault_load<mode>): Ditto.
46572 2023-03-10  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
46574         * config/riscv/riscv-vector-builtins.cc
46575         (function_expander::use_ternop_insn): Use maybe_gen_insn instead.
46576         (function_expander::use_widen_ternop_insn): Ditto.
46577         * optabs.cc (maybe_gen_insn): Extend nops handling.
46579 2023-03-10  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
46581         * config/riscv/riscv-vector-builtins-bases.cc: Split indexed load
46582         patterns according to RVV ISA.
46583         * config/riscv/vector-iterators.md: New iterators.
46584         * config/riscv/vector.md
46585         (@pred_indexed_<order>load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Remove.
46586         (@pred_indexed_<order>load<mode>_same_eew): New pattern.
46587         (@pred_indexed_<order>load<mode>_x2_greater_eew): Ditto.
46588         (@pred_indexed_<order>load<mode>_x4_greater_eew): Ditto.
46589         (@pred_indexed_<order>load<mode>_x8_greater_eew): Ditto.
46590         (@pred_indexed_<order>load<mode>_x2_smaller_eew): Ditto.
46591         (@pred_indexed_<order>load<mode>_x4_smaller_eew): Ditto.
46592         (@pred_indexed_<order>load<mode>_x8_smaller_eew): Ditto.
46593         (@pred_indexed_<order>load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Remove.
46594         (@pred_indexed_<order>load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
46595         (@pred_indexed_<order>load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
46596         (@pred_indexed_<order>load<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
46597         (@pred_indexed_<order>load<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
46598         (@pred_indexed_<order>load<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
46600 2023-03-10  Michael Collison  <collison@rivosinc.com>
46602         * tree-vect-loop-manip.cc (vect_do_peeling): Use
46603         result of constant_lower_bound instead of vf for the lower
46604         bound of the epilog loop trip count.
46606 2023-03-09  Tamar Christina  <tamar.christina@arm.com>
46608         * passes.cc (emergency_dump_function): Finish graph generation.
46610 2023-03-09  Tamar Christina  <tamar.christina@arm.com>
46612         * config/aarch64/aarch64.md (tbranch_<code><mode>3): Restrict to SHORT
46613         and bottom bit only.
46615 2023-03-09  Andrew Pinski  <apinski@marvell.com>
46617         PR tree-optimization/108980
46618         * gimple-array-bounds.cc (array_bounds_checker::check_array_ref):
46619         Reorgnize the call to warning for not strict flexible arrays
46620         to be before the check of warned.
46622 2023-03-09  Jason Merrill  <jason@redhat.com>
46624         * doc/extend.texi: Comment out __is_deducible docs.
46626 2023-03-09  Jason Merrill  <jason@redhat.com>
46628         PR c++/105841
46629         * doc/extend.texi (Type Traits):: Document __is_deducible.
46631 2023-03-09  Costas Argyris  <costas.argyris@gmail.com>
46633         PR driver/108865
46634         * config.host: add object for x86_64-*-mingw*.
46635         * config/i386/sym-mingw32.cc: dummy file to attach
46636         symbol.
46637         * config/i386/utf8-mingw32.rc: windres resource file.
46638         * config/i386/winnt-utf8.manifest: XML manifest to
46639         enable UTF-8.
46640         * config/i386/x-mingw32: reference to x-mingw32-utf8.
46641         * config/i386/x-mingw32-utf8: Makefile fragment to
46642         embed UTF-8 manifest.
46644 2023-03-09  Vladimir N. Makarov  <vmakarov@redhat.com>
46646         * lra-constraints.cc (process_alt_operands): Use operand modes for
46647         clobbered regs instead of the biggest access mode.
46649 2023-03-09  Richard Biener  <rguenther@suse.de>
46651         PR middle-end/108995
46652         * fold-const.cc (extract_muldiv_1): Avoid folding
46653         (CST * b) / CST2 when sanitizing overflow and we rely on
46654         overflow being undefined.
46656 2023-03-09  Jakub Jelinek  <jakub@redhat.com>
46657             Richard Biener  <rguenther@suse.de>
46659         PR tree-optimization/109008
46660         * range-op-float.cc (float_widen_lhs_range): New function.
46661         (foperator_plus::op1_range, foperator_minus::op1_range,
46662         foperator_minus::op2_range, foperator_mult::op1_range,
46663         foperator_div::op1_range, foperator_div::op2_range): Use it.
46665 2023-03-07  Jonathan Grant  <jg@jguk.org>
46667         PR sanitizer/81649
46668         * doc/invoke.texi (Instrumentation Options):  Clarify
46669         LeakSanitizer behavior.
46671 2023-03-07  Benson Muite  <benson_muite@emailplus.org>
46673         * doc/install.texi (Prerequisites): Add link to gmplib.org.
46675 2023-03-07  Pan Li  <pan2.li@intel.com>
46676             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
46678         PR target/108185
46679         PR target/108654
46680         * config/riscv/riscv-modes.def (ADJUST_PRECISION): Adjust VNx*BI
46681         modes.
46682         * config/riscv/riscv.cc (riscv_v_adjust_precision): New.
46683         * config/riscv/riscv.h (riscv_v_adjust_precision): New.
46684         * genmodes.cc (adj_precision): New.
46685         (ADJUST_PRECISION): New.
46686         (emit_mode_adjustments): Handle ADJUST_PRECISION.
46688 2023-03-07  Hans-Peter Nilsson  <hp@axis.com>
46690         * doc/sourcebuild.texi: Document check_effective_target_tail_call.
46692 2023-03-06  Paul-Antoine Arras  <pa@codesourcery.com>
46694         * config/gcn/gcn-valu.md (<expander><mode>3_exec): Add patterns for
46695         {s|u}{max|min} in QI, HI and DI modes.
46696         (<expander><mode>3): Add pattern for {s|u}{max|min} in DI mode.
46697         (cond_<fexpander><mode>): Add pattern for cond_f{max|min}.
46698         (cond_<expander><mode>): Add pattern for cond_{s|u}{max|min}.
46699         * config/gcn/gcn.cc (gcn_spill_class): Allow the exec register to be
46700         saved in SGPRs.
46702 2023-03-06  Richard Biener  <rguenther@suse.de>
46704         PR tree-optimization/109025
46705         * tree-vect-loop.cc (vect_is_simple_reduction): Verify
46706         the inner LC PHI use is the inner loop PHI latch definition
46707         before classifying an outer PHI as double reduction.
46709 2023-03-06  Jan Hubicka  <hubicka@ucw.cz>
46711         PR target/108429
46712         * config/i386/x86-tune.def (X86_TUNE_USE_SCATTER_2PARTS): Enable for
46713         generic.
46714         (X86_TUNE_USE_SCATTER_4PARTS): Likewise.
46715         (X86_TUNE_USE_SCATTER): Likewise.
46717 2023-03-06  Xi Ruoyao  <xry111@xry111.site>
46719         PR target/109000
46720         * config/loongarch/loongarch.h (FP_RETURN): Use
46721         TARGET_*_FLOAT_ABI instead of TARGET_*_FLOAT.
46722         (UNITS_PER_FP_ARG): Likewise.
46724 2023-03-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
46726         * config/riscv/riscv-vsetvl.cc (reg_available_p): Fix bug.
46727         (pass_vsetvl::backward_demand_fusion): Ditto.
46729 2023-03-05  Liao Shihua  <shihua@iscas.ac.cn>
46730             SiYu Wu  <siyu@isrc.iscas.ac.cn>
46732         * config/riscv/crypto.md (riscv_sm3p0_<mode>): Add ZKSED's and ZKSH's
46733         instructions.
46734         (riscv_sm3p1_<mode>): New.
46735         (riscv_sm4ed_<mode>): New.
46736         (riscv_sm4ks_<mode>): New.
46737         * config/riscv/riscv-builtins.cc (AVAIL): Add ZKSED's and ZKSH's AVAIL.
46738         * config/riscv/riscv-scalar-crypto.def (RISCV_BUILTIN): Add ZKSED's and
46739         ZKSH's built-in functions.
46741 2023-03-05  Liao Shihua  <shihua@iscas.ac.cn>
46742             SiYu Wu  <siyu@isrc.iscas.ac.cn>
46744         * config/riscv/crypto.md (riscv_sha256sig0_<mode>): Add ZKNH's instructions.
46745         (riscv_sha256sig1_<mode>): New.
46746         (riscv_sha256sum0_<mode>): New.
46747         (riscv_sha256sum1_<mode>): New.
46748         (riscv_sha512sig0h): New.
46749         (riscv_sha512sig0l): New.
46750         (riscv_sha512sig1h): New.
46751         (riscv_sha512sig1l): New.
46752         (riscv_sha512sum0r): New.
46753         (riscv_sha512sum1r): New.
46754         (riscv_sha512sig0): New.
46755         (riscv_sha512sig1): New.
46756         (riscv_sha512sum0): New.
46757         (riscv_sha512sum1): New.
46758         * config/riscv/riscv-builtins.cc (AVAIL): And ZKNH's AVAIL.
46759         * config/riscv/riscv-scalar-crypto.def (RISCV_BUILTIN): And ZKNH's
46760         built-in functions.
46761         (DIRECT_BUILTIN): Add new.
46763 2023-03-05  Liao Shihua  <shihua@iscas.ac.cn>
46764             SiYu Wu  <siyu@isrc.iscas.ac.cn>
46766         * config/riscv/constraints.md (D03): Add constants of bs and rnum.
46767         (DsA): New.
46768         * config/riscv/crypto.md (riscv_aes32dsi): Add ZKND's and ZKNE's instructions.
46769         (riscv_aes32dsmi): New.
46770         (riscv_aes64ds): New.
46771         (riscv_aes64dsm): New.
46772         (riscv_aes64im): New.
46773         (riscv_aes64ks1i): New.
46774         (riscv_aes64ks2): New.
46775         (riscv_aes32esi): New.
46776         (riscv_aes32esmi): New.
46777         (riscv_aes64es): New.
46778         (riscv_aes64esm): New.
46779         * config/riscv/riscv-builtins.cc (AVAIL): Add ZKND's and ZKNE's AVAIL.
46780         * config/riscv/riscv-scalar-crypto.def (DIRECT_BUILTIN): Add ZKND's and
46781         ZKNE's built-in functions.
46783 2023-03-05  Liao Shihua  <shihua@iscas.ac.cn>
46784             SiYu Wu  <siyu@isrc.iscas.ac.cn>
46786         * config/riscv/bitmanip.md: Add ZBKB's instructions.
46787         * config/riscv/riscv-builtins.cc (AVAIL): Add new.
46788         * config/riscv/riscv.md: Add new type for crypto instructions.
46789         * config/riscv/crypto.md: Add Scalar Cryptography extension's machine
46790         description file.
46791         * config/riscv/riscv-scalar-crypto.def: Add Scalar Cryptography
46792         extension's built-in function file.
46794 2023-03-05  Liao Shihua  <shihua@iscas.ac.cn>
46795             SiYu Wu  <siyu@isrc.iscas.ac.cn>
46797         * config/riscv/riscv-builtins.cc (RISCV_FTYPE_NAME2): New.
46798         (RISCV_FTYPE_NAME3): New.
46799         (RISCV_ATYPE_QI): New.
46800         (RISCV_ATYPE_HI): New.
46801         (RISCV_FTYPE_ATYPES2): New.
46802         (RISCV_FTYPE_ATYPES3): New.
46803         * config/riscv/riscv-ftypes.def (2): New.
46804         (3): New.
46806 2023-03-05  Vineet Gupta  <vineetg@rivosinc.com>
46808         * config/riscv/riscv.cc (riscv_rtx_costs): Fixed IN_RANGE() to
46809         use exact_log2().
46811 2023-03-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
46812             kito-cheng  <kito.cheng@sifive.com>
46814         * config/riscv/predicates.md (vector_any_register_operand): New predicate.
46815         * config/riscv/riscv-c.cc (riscv_check_builtin_call): New function.
46816         (riscv_register_pragmas): Add builtin function check call.
46817         * config/riscv/riscv-protos.h (RVV_VUNDEF): Adapt macro.
46818         (check_builtin_call): New function.
46819         * config/riscv/riscv-vector-builtins-bases.cc (class vundefined): New class.
46820         (class vreinterpret): Ditto.
46821         (class vlmul_ext): Ditto.
46822         (class vlmul_trunc): Ditto.
46823         (class vset): Ditto.
46824         (class vget): Ditto.
46825         (BASE): Ditto.
46826         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
46827         * config/riscv/riscv-vector-builtins-functions.def (vluxei8): Change name.
46828         (vluxei16): Ditto.
46829         (vluxei32): Ditto.
46830         (vluxei64): Ditto.
46831         (vloxei8): Ditto.
46832         (vloxei16): Ditto.
46833         (vloxei32): Ditto.
46834         (vloxei64): Ditto.
46835         (vsuxei8): Ditto.
46836         (vsuxei16): Ditto.
46837         (vsuxei32): Ditto.
46838         (vsuxei64): Ditto.
46839         (vsoxei8): Ditto.
46840         (vsoxei16): Ditto.
46841         (vsoxei32): Ditto.
46842         (vsoxei64): Ditto.
46843         (vundefined): Add new intrinsic.
46844         (vreinterpret): Ditto.
46845         (vlmul_ext): Ditto.
46846         (vlmul_trunc): Ditto.
46847         (vset): Ditto.
46848         (vget): Ditto.
46849         * config/riscv/riscv-vector-builtins-shapes.cc (struct return_mask_def): New class.
46850         (struct narrow_alu_def): Ditto.
46851         (struct reduc_alu_def): Ditto.
46852         (struct vundefined_def): Ditto.
46853         (struct misc_def): Ditto.
46854         (struct vset_def): Ditto.
46855         (struct vget_def): Ditto.
46856         (SHAPE): Ditto.
46857         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
46858         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_EEW8_INTERPRET_OPS): New def.
46859         (DEF_RVV_EEW16_INTERPRET_OPS): Ditto.
46860         (DEF_RVV_EEW32_INTERPRET_OPS): Ditto.
46861         (DEF_RVV_EEW64_INTERPRET_OPS): Ditto.
46862         (DEF_RVV_X2_VLMUL_EXT_OPS): Ditto.
46863         (DEF_RVV_X4_VLMUL_EXT_OPS): Ditto.
46864         (DEF_RVV_X8_VLMUL_EXT_OPS): Ditto.
46865         (DEF_RVV_X16_VLMUL_EXT_OPS): Ditto.
46866         (DEF_RVV_X32_VLMUL_EXT_OPS): Ditto.
46867         (DEF_RVV_X64_VLMUL_EXT_OPS): Ditto.
46868         (DEF_RVV_LMUL1_OPS): Ditto.
46869         (DEF_RVV_LMUL2_OPS): Ditto.
46870         (DEF_RVV_LMUL4_OPS): Ditto.
46871         (vint16mf4_t): Ditto.
46872         (vint16mf2_t): Ditto.
46873         (vint16m1_t): Ditto.
46874         (vint16m2_t): Ditto.
46875         (vint16m4_t): Ditto.
46876         (vint16m8_t): Ditto.
46877         (vint32mf2_t): Ditto.
46878         (vint32m1_t): Ditto.
46879         (vint32m2_t): Ditto.
46880         (vint32m4_t): Ditto.
46881         (vint32m8_t): Ditto.
46882         (vint64m1_t): Ditto.
46883         (vint64m2_t): Ditto.
46884         (vint64m4_t): Ditto.
46885         (vint64m8_t): Ditto.
46886         (vuint16mf4_t): Ditto.
46887         (vuint16mf2_t): Ditto.
46888         (vuint16m1_t): Ditto.
46889         (vuint16m2_t): Ditto.
46890         (vuint16m4_t): Ditto.
46891         (vuint16m8_t): Ditto.
46892         (vuint32mf2_t): Ditto.
46893         (vuint32m1_t): Ditto.
46894         (vuint32m2_t): Ditto.
46895         (vuint32m4_t): Ditto.
46896         (vuint32m8_t): Ditto.
46897         (vuint64m1_t): Ditto.
46898         (vuint64m2_t): Ditto.
46899         (vuint64m4_t): Ditto.
46900         (vuint64m8_t): Ditto.
46901         (vint8mf4_t): Ditto.
46902         (vint8mf2_t): Ditto.
46903         (vint8m1_t): Ditto.
46904         (vint8m2_t): Ditto.
46905         (vint8m4_t): Ditto.
46906         (vint8m8_t): Ditto.
46907         (vuint8mf4_t): Ditto.
46908         (vuint8mf2_t): Ditto.
46909         (vuint8m1_t): Ditto.
46910         (vuint8m2_t): Ditto.
46911         (vuint8m4_t): Ditto.
46912         (vuint8m8_t): Ditto.
46913         (vint8mf8_t): Ditto.
46914         (vuint8mf8_t): Ditto.
46915         (vfloat32mf2_t): Ditto.
46916         (vfloat32m1_t): Ditto.
46917         (vfloat32m2_t): Ditto.
46918         (vfloat32m4_t): Ditto.
46919         (vfloat64m1_t): Ditto.
46920         (vfloat64m2_t): Ditto.
46921         (vfloat64m4_t): Ditto.
46922         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TYPE): Ditto.
46923         (DEF_RVV_EEW8_INTERPRET_OPS): Ditto.
46924         (DEF_RVV_EEW16_INTERPRET_OPS): Ditto.
46925         (DEF_RVV_EEW32_INTERPRET_OPS): Ditto.
46926         (DEF_RVV_EEW64_INTERPRET_OPS): Ditto.
46927         (DEF_RVV_X2_VLMUL_EXT_OPS): Ditto.
46928         (DEF_RVV_X4_VLMUL_EXT_OPS): Ditto.
46929         (DEF_RVV_X8_VLMUL_EXT_OPS): Ditto.
46930         (DEF_RVV_X16_VLMUL_EXT_OPS): Ditto.
46931         (DEF_RVV_X32_VLMUL_EXT_OPS): Ditto.
46932         (DEF_RVV_X64_VLMUL_EXT_OPS): Ditto.
46933         (DEF_RVV_LMUL1_OPS): Ditto.
46934         (DEF_RVV_LMUL2_OPS): Ditto.
46935         (DEF_RVV_LMUL4_OPS): Ditto.
46936         (DEF_RVV_TYPE_INDEX): Ditto.
46937         (required_extensions_p): Adapt for new intrinsic support/
46938         (get_required_extensions): New function.
46939         (check_required_extensions): Ditto.
46940         (unsigned_base_type_p): Remove.
46941         (rvv_arg_type_info::get_scalar_ptr_type): New function.
46942         (get_mode_for_bitsize): Remove.
46943         (rvv_arg_type_info::get_scalar_const_ptr_type): New function.
46944         (rvv_arg_type_info::get_base_vector_type): Ditto.
46945         (rvv_arg_type_info::get_function_type_index): Ditto.
46946         (DEF_RVV_BASE_TYPE): New def.
46947         (function_builder::apply_predication): New class.
46948         (function_expander::mask_mode): Ditto.
46949         (function_checker::function_checker): Ditto.
46950         (function_checker::report_non_ice): Ditto.
46951         (function_checker::report_out_of_range): Ditto.
46952         (function_checker::require_immediate): Ditto.
46953         (function_checker::require_immediate_range): Ditto.
46954         (function_checker::check): Ditto.
46955         (check_builtin_call): Ditto.
46956         * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE): New def.
46957         (DEF_RVV_BASE_TYPE): Ditto.
46958         (DEF_RVV_TYPE_INDEX): Ditto.
46959         (vbool64_t): Ditto.
46960         (vbool32_t): Ditto.
46961         (vbool16_t): Ditto.
46962         (vbool8_t): Ditto.
46963         (vbool4_t): Ditto.
46964         (vbool2_t): Ditto.
46965         (vbool1_t): Ditto.
46966         (vuint8mf8_t): Ditto.
46967         (vuint8mf4_t): Ditto.
46968         (vuint8mf2_t): Ditto.
46969         (vuint8m1_t): Ditto.
46970         (vuint8m2_t): Ditto.
46971         (vint8m4_t): Ditto.
46972         (vuint8m4_t): Ditto.
46973         (vint8m8_t): Ditto.
46974         (vuint8m8_t): Ditto.
46975         (vint16mf4_t): Ditto.
46976         (vuint16mf2_t): Ditto.
46977         (vuint16m1_t): Ditto.
46978         (vuint16m2_t): Ditto.
46979         (vuint16m4_t): Ditto.
46980         (vuint16m8_t): Ditto.
46981         (vint32mf2_t): Ditto.
46982         (vuint32m1_t): Ditto.
46983         (vuint32m2_t): Ditto.
46984         (vuint32m4_t): Ditto.
46985         (vuint32m8_t): Ditto.
46986         (vuint64m1_t): Ditto.
46987         (vuint64m2_t): Ditto.
46988         (vuint64m4_t): Ditto.
46989         (vuint64m8_t): Ditto.
46990         (vfloat32mf2_t): Ditto.
46991         (vfloat32m1_t): Ditto.
46992         (vfloat32m2_t): Ditto.
46993         (vfloat32m4_t): Ditto.
46994         (vfloat32m8_t): Ditto.
46995         (vfloat64m1_t): Ditto.
46996         (vfloat64m4_t): Ditto.
46997         (vector): Move it def.
46998         (scalar): Ditto.
46999         (mask): Ditto.
47000         (signed_vector): Ditto.
47001         (unsigned_vector): Ditto.
47002         (unsigned_scalar): Ditto.
47003         (vector_ptr): Ditto.
47004         (scalar_ptr): Ditto.
47005         (scalar_const_ptr): Ditto.
47006         (void): Ditto.
47007         (size): Ditto.
47008         (ptrdiff): Ditto.
47009         (unsigned_long): Ditto.
47010         (long): Ditto.
47011         (eew8_index): Ditto.
47012         (eew16_index): Ditto.
47013         (eew32_index): Ditto.
47014         (eew64_index): Ditto.
47015         (shift_vector): Ditto.
47016         (double_trunc_vector): Ditto.
47017         (quad_trunc_vector): Ditto.
47018         (oct_trunc_vector): Ditto.
47019         (double_trunc_scalar): Ditto.
47020         (double_trunc_signed_vector): Ditto.
47021         (double_trunc_unsigned_vector): Ditto.
47022         (double_trunc_unsigned_scalar): Ditto.
47023         (double_trunc_float_vector): Ditto.
47024         (float_vector): Ditto.
47025         (lmul1_vector): Ditto.
47026         (widen_lmul1_vector): Ditto.
47027         (eew8_interpret): Ditto.
47028         (eew16_interpret): Ditto.
47029         (eew32_interpret): Ditto.
47030         (eew64_interpret): Ditto.
47031         (vlmul_ext_x2): Ditto.
47032         (vlmul_ext_x4): Ditto.
47033         (vlmul_ext_x8): Ditto.
47034         (vlmul_ext_x16): Ditto.
47035         (vlmul_ext_x32): Ditto.
47036         (vlmul_ext_x64): Ditto.
47037         * config/riscv/riscv-vector-builtins.h (DEF_RVV_BASE_TYPE): New def.
47038         (struct function_type_info): New function.
47039         (struct rvv_arg_type_info): Ditto.
47040         (class function_checker): New class.
47041         (rvv_arg_type_info::get_scalar_type): New function.
47042         (rvv_arg_type_info::get_vector_type): Ditto.
47043         (function_expander::ret_mode): New function.
47044         (function_checker::arg_mode): Ditto.
47045         (function_checker::ret_mode): Ditto.
47046         * config/riscv/t-riscv: Add generator.
47047         * config/riscv/vector-iterators.md: New iterators.
47048         * config/riscv/vector.md (vundefined<mode>): New pattern.
47049         (@vundefined<mode>): Ditto.
47050         (@vreinterpret<mode>): Ditto.
47051         (@vlmul_extx2<mode>): Ditto.
47052         (@vlmul_extx4<mode>): Ditto.
47053         (@vlmul_extx8<mode>): Ditto.
47054         (@vlmul_extx16<mode>): Ditto.
47055         (@vlmul_extx32<mode>): Ditto.
47056         (@vlmul_extx64<mode>): Ditto.
47057         (*vlmul_extx2<mode>): Ditto.
47058         (*vlmul_extx4<mode>): Ditto.
47059         (*vlmul_extx8<mode>): Ditto.
47060         (*vlmul_extx16<mode>): Ditto.
47061         (*vlmul_extx32<mode>): Ditto.
47062         (*vlmul_extx64<mode>): Ditto.
47063         * config/riscv/genrvv-type-indexer.cc: New file.
47065 2023-03-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
47067         * config/riscv/riscv-protos.h (enum vlen_enum): New enum.
47068         (slide1_sew64_helper): New function.
47069         * config/riscv/riscv-v.cc (compute_vlmax): Ditto.
47070         (get_unknown_min_value): Ditto.
47071         (force_vector_length_operand): Ditto.
47072         (gen_no_side_effects_vsetvl_rtx): Ditto.
47073         (get_vl_x2_rtx): Ditto.
47074         (slide1_sew64_helper): Ditto.
47075         * config/riscv/riscv-vector-builtins-bases.cc (class slideop): New class.
47076         (class vrgather): Ditto.
47077         (class vrgatherei16): Ditto.
47078         (class vcompress): Ditto.
47079         (BASE): Ditto.
47080         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
47081         * config/riscv/riscv-vector-builtins-functions.def (vslideup): Ditto.
47082         (vslidedown): Ditto.
47083         (vslide1up): Ditto.
47084         (vslide1down): Ditto.
47085         (vfslide1up): Ditto.
47086         (vfslide1down): Ditto.
47087         (vrgather): Ditto.
47088         (vrgatherei16): Ditto.
47089         (vcompress): Ditto.
47090         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_EI16_OPS): New macro.
47091         (vint8mf8_t): Ditto.
47092         (vint8mf4_t): Ditto.
47093         (vint8mf2_t): Ditto.
47094         (vint8m1_t): Ditto.
47095         (vint8m2_t): Ditto.
47096         (vint8m4_t): Ditto.
47097         (vint16mf4_t): Ditto.
47098         (vint16mf2_t): Ditto.
47099         (vint16m1_t): Ditto.
47100         (vint16m2_t): Ditto.
47101         (vint16m4_t): Ditto.
47102         (vint16m8_t): Ditto.
47103         (vint32mf2_t): Ditto.
47104         (vint32m1_t): Ditto.
47105         (vint32m2_t): Ditto.
47106         (vint32m4_t): Ditto.
47107         (vint32m8_t): Ditto.
47108         (vint64m1_t): Ditto.
47109         (vint64m2_t): Ditto.
47110         (vint64m4_t): Ditto.
47111         (vint64m8_t): Ditto.
47112         (vuint8mf8_t): Ditto.
47113         (vuint8mf4_t): Ditto.
47114         (vuint8mf2_t): Ditto.
47115         (vuint8m1_t): Ditto.
47116         (vuint8m2_t): Ditto.
47117         (vuint8m4_t): Ditto.
47118         (vuint16mf4_t): Ditto.
47119         (vuint16mf2_t): Ditto.
47120         (vuint16m1_t): Ditto.
47121         (vuint16m2_t): Ditto.
47122         (vuint16m4_t): Ditto.
47123         (vuint16m8_t): Ditto.
47124         (vuint32mf2_t): Ditto.
47125         (vuint32m1_t): Ditto.
47126         (vuint32m2_t): Ditto.
47127         (vuint32m4_t): Ditto.
47128         (vuint32m8_t): Ditto.
47129         (vuint64m1_t): Ditto.
47130         (vuint64m2_t): Ditto.
47131         (vuint64m4_t): Ditto.
47132         (vuint64m8_t): Ditto.
47133         (vfloat32mf2_t): Ditto.
47134         (vfloat32m1_t): Ditto.
47135         (vfloat32m2_t): Ditto.
47136         (vfloat32m4_t): Ditto.
47137         (vfloat32m8_t): Ditto.
47138         (vfloat64m1_t): Ditto.
47139         (vfloat64m2_t): Ditto.
47140         (vfloat64m4_t): Ditto.
47141         (vfloat64m8_t): Ditto.
47142         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_EI16_OPS): Ditto.
47143         * config/riscv/riscv.md: Adjust RVV instruction types.
47144         * config/riscv/vector-iterators.md (down): New iterator.
47145         (=vd,vr): New attribute.
47146         (UNSPEC_VSLIDE1UP): New unspec.
47147         * config/riscv/vector.md (@pred_slide<ud><mode>): New pattern.
47148         (*pred_slide<ud><mode>): Ditto.
47149         (*pred_slide<ud><mode>_extended): Ditto.
47150         (@pred_gather<mode>): Ditto.
47151         (@pred_gather<mode>_scalar): Ditto.
47152         (@pred_gatherei16<mode>): Ditto.
47153         (@pred_compress<mode>): Ditto.
47155 2023-03-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
47157         * config/riscv/riscv-vector-builtins.cc: Remove void_type_node.
47159 2023-03-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
47161         * config/riscv/constraints.md (Wb1): New constraint.
47162         * config/riscv/predicates.md
47163         (vector_least_significant_set_mask_operand): New predicate.
47164         (vector_broadcast_mask_operand): Ditto.
47165         * config/riscv/riscv-protos.h (enum vlmul_type): Adjust.
47166         (gen_scalar_move_mask): New function.
47167         * config/riscv/riscv-v.cc (gen_scalar_move_mask): Ditto.
47168         * config/riscv/riscv-vector-builtins-bases.cc (class vmv): New class.
47169         (class vmv_s): Ditto.
47170         (BASE): Ditto.
47171         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
47172         * config/riscv/riscv-vector-builtins-functions.def (vmv_x): Ditto.
47173         (vmv_s): Ditto.
47174         (vfmv_f): Ditto.
47175         (vfmv_s): Ditto.
47176         * config/riscv/riscv-vector-builtins-shapes.cc (struct scalar_move_def): Ditto.
47177         (SHAPE): Ditto.
47178         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
47179         * config/riscv/riscv-vector-builtins.cc (function_expander::mask_mode): Ditto.
47180         (function_expander::use_exact_insn): New function.
47181         (function_expander::use_contiguous_load_insn): New function.
47182         (function_expander::use_contiguous_store_insn): New function.
47183         (function_expander::use_ternop_insn): New function.
47184         (function_expander::use_widen_ternop_insn): New function.
47185         (function_expander::use_scalar_move_insn): New function.
47186         * config/riscv/riscv-vector-builtins.def (s): New operand suffix.
47187         * config/riscv/riscv-vector-builtins.h
47188         (function_expander::add_scalar_move_mask_operand): New class.
47189         * config/riscv/riscv-vsetvl.cc (ignore_vlmul_insn_p): New function.
47190         (scalar_move_insn_p): Ditto.
47191         (has_vsetvl_killed_avl_p): Ditto.
47192         (anticipatable_occurrence_p): Ditto.
47193         (insert_vsetvl): Ditto.
47194         (get_vl_vtype_info): Ditto.
47195         (calculate_sew): Ditto.
47196         (calculate_vlmul): Ditto.
47197         (incompatible_avl_p): Ditto.
47198         (different_sew_p): Ditto.
47199         (different_lmul_p): Ditto.
47200         (different_ratio_p): Ditto.
47201         (different_tail_policy_p): Ditto.
47202         (different_mask_policy_p): Ditto.
47203         (possible_zero_avl_p): Ditto.
47204         (first_ratio_invalid_for_second_sew_p): Ditto.
47205         (first_ratio_invalid_for_second_lmul_p): Ditto.
47206         (second_ratio_invalid_for_first_sew_p): Ditto.
47207         (second_ratio_invalid_for_first_lmul_p): Ditto.
47208         (second_sew_less_than_first_sew_p): Ditto.
47209         (first_sew_less_than_second_sew_p): Ditto.
47210         (compare_lmul): Ditto.
47211         (second_lmul_less_than_first_lmul_p): Ditto.
47212         (first_lmul_less_than_second_lmul_p): Ditto.
47213         (first_ratio_less_than_second_ratio_p): Ditto.
47214         (second_ratio_less_than_first_ratio_p): Ditto.
47215         (DEF_INCOMPATIBLE_COND): Ditto.
47216         (greatest_sew): Ditto.
47217         (first_sew): Ditto.
47218         (second_sew): Ditto.
47219         (first_vlmul): Ditto.
47220         (second_vlmul): Ditto.
47221         (first_ratio): Ditto.
47222         (second_ratio): Ditto.
47223         (vlmul_for_first_sew_second_ratio): Ditto.
47224         (ratio_for_second_sew_first_vlmul): Ditto.
47225         (DEF_SEW_LMUL_FUSE_RULE): Ditto.
47226         (always_unavailable): Ditto.
47227         (avl_unavailable_p): Ditto.
47228         (sew_unavailable_p): Ditto.
47229         (lmul_unavailable_p): Ditto.
47230         (ge_sew_unavailable_p): Ditto.
47231         (ge_sew_lmul_unavailable_p): Ditto.
47232         (ge_sew_ratio_unavailable_p): Ditto.
47233         (DEF_UNAVAILABLE_COND): Ditto.
47234         (same_sew_lmul_demand_p): Ditto.
47235         (propagate_avl_across_demands_p): Ditto.
47236         (reg_available_p): Ditto.
47237         (avl_info::has_non_zero_avl): Ditto.
47238         (vl_vtype_info::has_non_zero_avl): Ditto.
47239         (vector_insn_info::operator>=): Refactor.
47240         (vector_insn_info::parse_insn): Adjust for scalar move.
47241         (vector_insn_info::demand_vl_vtype): Remove.
47242         (vector_insn_info::compatible_p): New function.
47243         (vector_insn_info::compatible_avl_p): Ditto.
47244         (vector_insn_info::compatible_vtype_p): Ditto.
47245         (vector_insn_info::available_p): Ditto.
47246         (vector_insn_info::merge): Ditto.
47247         (vector_insn_info::fuse_avl): Ditto.
47248         (vector_insn_info::fuse_sew_lmul): Ditto.
47249         (vector_insn_info::fuse_tail_policy): Ditto.
47250         (vector_insn_info::fuse_mask_policy): Ditto.
47251         (vector_insn_info::dump): Ditto.
47252         (vector_infos_manager::release): Ditto.
47253         (pass_vsetvl::compute_local_backward_infos): Adjust for scalar move support.
47254         (pass_vsetvl::get_backward_fusion_type): Adjust for scalar move support.
47255         (pass_vsetvl::hard_empty_block_p): Ditto.
47256         (pass_vsetvl::backward_demand_fusion): Ditto.
47257         (pass_vsetvl::forward_demand_fusion): Ditto.
47258         (pass_vsetvl::refine_vsetvls): Ditto.
47259         (pass_vsetvl::cleanup_vsetvls): Ditto.
47260         (pass_vsetvl::commit_vsetvls): Ditto.
47261         (pass_vsetvl::propagate_avl): Ditto.
47262         * config/riscv/riscv-vsetvl.h (enum demand_status): New class.
47263         (struct demands_pair): Ditto.
47264         (struct demands_cond): Ditto.
47265         (struct demands_fuse_rule): Ditto.
47266         * config/riscv/vector-iterators.md: New iterator.
47267         * config/riscv/vector.md (@pred_broadcast<mode>): New pattern.
47268         (*pred_broadcast<mode>): Ditto.
47269         (*pred_broadcast<mode>_extended_scalar): Ditto.
47270         (@pred_extract_first<mode>): Ditto.
47271         (*pred_extract_first<mode>): Ditto.
47272         (@pred_extract_first_trunc<mode>): Ditto.
47273         * config/riscv/riscv-vsetvl.def: New file.
47275 2023-03-05  Lin Sinan  <sinan.lin@linux.alibaba.com>
47277         * config/riscv/bitmanip.md: allow 0 constant in max/min
47278         pattern.
47280 2023-03-05  Lin Sinan  <sinan.lin@linux.alibaba.com>
47282         * config/riscv/bitmanip.md: Fix wrong index in the check.
47284 2023-03-04  Jakub Jelinek  <jakub@redhat.com>
47286         PR middle-end/109006
47287         * vec.cc (test_auto_alias): Adjust comment for removal of
47288         m_vecdata.
47289         * read-rtl-function.cc (function_reader::parse_block): Likewise.
47290         * gdbhooks.py: Likewise.
47292 2023-03-04  Jakub Jelinek  <jakub@redhat.com>
47294         PR testsuite/108973
47295         * selftest-diagnostic.cc
47296         (test_diagnostic_context::test_diagnostic_context): Set
47297         caret_max_width to 80.
47299 2023-03-03  Alexandre Oliva  <oliva@adacore.com>
47301         * gimple-ssa-warn-access.cc
47302         (pass_waccess::check_dangling_stores): Skip non-stores.
47304 2023-03-03  Alexandre Oliva  <oliva@adacore.com>
47306         * config/arm/vfp.md (*thumb2_movsi_vfp): Drop blank after tab
47307         after vmsr and vmrs, and lower the case of P0.
47309 2023-03-03  Jonathan Wakely  <jwakely@redhat.com>
47311         PR middle-end/109006
47312         * gdbhooks.py (VecPrinter): Handle vec<T> as well as vec<T>*.
47314 2023-03-03  Jonathan Wakely  <jwakely@redhat.com>
47316         PR middle-end/109006
47317         * gdbhooks.py (VecPrinter): Adjust for new vec layout.
47319 2023-03-03  Jakub Jelinek  <jakub@redhat.com>
47321         PR c/108986
47322         * gimple-ssa-warn-access.cc (pass_waccess::maybe_check_access_sizes):
47323         Return immediately if OPT_Wnonnull or OPT_Wstringop_overflow_ is
47324         suppressed on stmt.  For [static %E] warning, print access_nelts
47325         rather than access_size.  Fix up comment wording.
47327 2023-03-03  Robin Dapp  <rdapp@linux.ibm.com>
47329         * config/s390/driver-native.cc (s390_host_detect_local_cpu): Use
47330         arch14 instead of z16.
47332 2023-03-03  Anthony Green  <green@moxielogic.com>
47334         * config/moxie/moxie.cc (TARGET_LRA_P): Remove.
47336 2023-03-03  Anthony Green  <green@moxielogic.com>
47338         * config/moxie/constraints.md (A, B, W): Change
47339         define_constraint to define_memory_constraint.
47341 2023-03-03  Xi Ruoyao  <xry111@xry111.site>
47343         * toplev.cc (process_options): Fix the spelling of
47344         "-fstack-clash-protection".
47346 2023-03-03  Richard Biener  <rguenther@suse.de>
47348         PR tree-optimization/109002
47349         * tree-ssa-pre.cc (compute_partial_antic_aux): Properly
47350         PHI-translate ANTIC_IN.
47352 2023-03-03  Jakub Jelinek  <jakub@redhat.com>
47354         PR tree-optimization/108988
47355         * gimple-fold.cc (gimple_fold_builtin_fputs): Fold len to
47356         size_type_node before passing it as argument to fwrite.  Formatting
47357         fixes.
47359 2023-03-03  Richard Biener  <rguenther@suse.de>
47361         PR target/108738
47362         * config/i386/i386.opt (--param x86-stv-max-visits): New param.
47363         * doc/invoke.texi (--param x86-stv-max-visits): Document it.
47364         * config/i386/i386-features.h (scalar_chain::max_visits): New.
47365         (scalar_chain::build): Add bitmap parameter, return boolean.
47366         (scalar_chain::add_insn): Likewise.
47367         (scalar_chain::analyze_register_chain): Likewise.
47368         * config/i386/i386-features.cc (scalar_chain::scalar_chain):
47369         Initialize max_visits.
47370         (scalar_chain::analyze_register_chain): When we exhaust
47371         max_visits, abort.  Also abort when running into any
47372         disallowed insn.
47373         (scalar_chain::add_insn): Propagate abort.
47374         (scalar_chain::build): Likewise.  When aborting amend
47375         the set of disallowed insn with the insns set.
47376         (convert_scalars_to_vector): Adjust.  Do not convert aborted
47377         chains.
47379 2023-03-03  Richard Biener  <rguenther@suse.de>
47381         PR debug/108772
47382         * dwarf2out.cc (dwarf2out_late_global_decl): Do not
47383         generate a DIE for a function scope static.
47385 2023-03-03  Alexandre Oliva  <oliva@adacore.com>
47387         * config/vx-common.h (WINT_TYPE): Alias to "wchar_t".
47389 2023-03-02  Jakub Jelinek  <jakub@redhat.com>
47391         PR target/108883
47392         * target.h (emit_support_tinfos_callback): New typedef.
47393         * targhooks.h (default_emit_support_tinfos): Declare.
47394         * targhooks.cc (default_emit_support_tinfos): New function.
47395         * target.def (emit_support_tinfos): New target hook.
47396         * doc/tm.texi.in (emit_support_tinfos): Document it.
47397         * doc/tm.texi: Regenerated.
47398         * config/i386/i386.cc (ix86_emit_support_tinfos): New function.
47399         (TARGET_EMIT_SUPPORT_TINFOS): Redefine.
47401 2023-03-02  Vladimir N. Makarov  <vmakarov@redhat.com>
47403         * ira-costs.cc: Include print-rtl.h.
47404         (record_reg_classes, scan_one_insn): Add code to print debug info.
47405         (record_operand_costs): Find and use smaller cost for hard reg
47406         move.
47408 2023-03-02  Kwok Cheung Yeung  <kcy@codesourcery.com>
47409             Paul-Antoine Arras  <pa@codesourcery.com>
47411         * builtins.cc (mathfn_built_in_explicit): New.
47412         * config/gcn/gcn.cc: Include case-cfn-macros.h.
47413         (mathfn_built_in_explicit): Add prototype.
47414         (gcn_vectorize_builtin_vectorized_function): New.
47415         (gcn_libc_has_function): New.
47416         (TARGET_LIBC_HAS_FUNCTION): Define.
47417         (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define.
47419 2023-03-02  Richard Sandiford  <richard.sandiford@arm.com>
47421         PR tree-optimization/108979
47422         * tree-vect-stmts.cc (vectorizable_operation): Don't mask
47423         operations on invariants.
47425 2023-03-02  Robin Dapp  <rdapp@linux.ibm.com>
47427         * config/s390/predicates.md (vll_bias_operand): Add -1 bias.
47428         * config/s390/s390.cc (s390_option_override_internal): Make
47429         partial vector usage the default from z13 on.
47430         * config/s390/vector.md (len_load_v16qi): Add.
47431         (len_store_v16qi): Add.
47433 2023-03-02  Andre Vieira  <andre.simoesdiasvieira@arm.com>
47435         * simplify-rtx.cc (simplify_context::simplify_subreg): Use byte instead
47436         of constant 0 offset.
47438 2023-03-02  Robert Suchanek  <robert.suchanek@imgtec.com>
47440         * config/mips/mips.cc (mips_set_text_contents_type): Use HOST_WIDE_INT
47441         instead of long.
47442         * config/mips/mips-protos.h (mips_set_text_contents_type): Likewise.
47444 2023-03-02  Junxian Zhu  <zhujunxian@oss.cipunited.com>
47446         * config.gcc: add -with-{no-}msa build option.
47447         * config/mips/mips.h: Likewise.
47448         * doc/install.texi: Likewise.
47450 2023-03-02  Richard Sandiford  <richard.sandiford@arm.com>
47452         PR tree-optimization/108603
47453         * explow.cc (convert_memory_address_addr_space_1): Only wrap
47454         the result of a recursive call in a CONST if no instructions
47455         were emitted.
47457 2023-03-02  Richard Sandiford  <richard.sandiford@arm.com>
47459         PR tree-optimization/108430
47460         * tree-vect-stmts.cc (vectorizable_condition): Fix handling
47461         of inverted condition.
47463 2023-03-02  Jakub Jelinek  <jakub@redhat.com>
47465         PR c++/108934
47466         * fold-const.cc (native_interpret_expr) <case REAL_CST>: Before memcmp
47467         comparison copy the bytes from ptr to a temporary buffer and clearing
47468         padding bits in there.
47470 2023-03-01  Tobias Burnus  <tobias@codesourcery.com>
47472         PR middle-end/108545
47473         * gimplify.cc (struct tree_operand_hash_no_se): New.
47474         (omp_index_mapping_groups_1, omp_index_mapping_groups,
47475         omp_reindex_mapping_groups, omp_mapped_by_containing_struct,
47476         omp_tsort_mapping_groups_1, omp_tsort_mapping_groups,
47477         oacc_resolve_clause_dependencies, omp_build_struct_sibling_lists,
47478         gimplify_scan_omp_clauses): Use tree_operand_hash_no_se instead
47479         of tree_operand_hash.
47481 2023-03-01  LIU Hao  <lh_mouse@126.com>
47483         PR pch/14940
47484         * config/i386/host-mingw32.cc (mingw32_gt_pch_get_address):
47485         Remove the size limit `pch_VA_max_size`
47487 2023-03-01  Tobias Burnus  <tobias@codesourcery.com>
47489         PR middle-end/108546
47490         * omp-low.cc (lower_omp_target): Remove optional handling
47491         on the receiver side, i.e. inside target (data), for
47492         use_device_ptr.
47494 2023-03-01  Jakub Jelinek  <jakub@redhat.com>
47496         PR debug/108967
47497         * cfgexpand.cc (expand_debug_expr): Handle WIDEN_{PLUS,MINUS}_EXPR
47498         and VEC_WIDEN_{PLUS,MINUS}_{HI,LO}_EXPR.
47500 2023-03-01  Richard Biener  <rguenther@suse.de>
47502         PR tree-optimization/108970
47503         * tree-vect-loop-manip.cc (slpeel_can_duplicate_loop_p):
47504         Check we can copy the BBs.
47505         (slpeel_tree_duplicate_loop_to_edge_cfg): Avoid redundant
47506         check.
47507         (vect_do_peeling): Streamline error handling.
47509 2023-03-01  Richard Biener  <rguenther@suse.de>
47511         PR tree-optimization/108950
47512         * tree-vect-patterns.cc (vect_recog_widen_sum_pattern):
47513         Check oprnd0 is defined in the loop.
47514         * tree-vect-loop.cc (vectorizable_reduction): Record all
47515         operands vector types, compute that of invariants and
47516         properly update their SLP nodes.
47518 2023-03-01  Kewen Lin  <linkw@linux.ibm.com>
47520         PR target/108240
47521         * config/rs6000/rs6000.cc (rs6000_option_override_internal): Allow
47522         implicit powerpc64 setting to be unset if 64 bit is enabled implicitly.
47524 2023-02-28  Qing Zhao  <qing.zhao@oracle.com>
47526         PR middle-end/107411
47527         PR middle-end/107411
47528         * gimplify.cc (gimple_add_init_for_auto_var): Use sprintf to replace
47529         xasprintf.
47530         * tree-ssa-uninit.cc (warn_uninit): Handle the case when the
47531         LHS varaible of a .DEFERRED_INIT call doesn't have a DECL_NAME.
47533 2023-02-28  Jakub Jelinek  <jakub@redhat.com>
47535         PR sanitizer/108894
47536         * ubsan.cc (ubsan_expand_bounds_ifn): Emit index >= bound
47537         comparison rather than index > bound.
47538         * gimple-fold.cc (gimple_fold_call): Use tree_int_cst_lt
47539         rather than tree_int_cst_le for IFN_UBSAN_BOUND comparison.
47540         * doc/invoke.texi (-fsanitize=bounds): Document that whether
47541         flexible array member-like arrays are instrumented or not depends
47542         on -fstrict-flex-arrays* options of strict_flex_array attributes.
47543         (-fsanitize=bounds-strict): Document that flexible array members
47544         are not instrumented.
47546 2023-02-27  Uroš Bizjak  <ubizjak@gmail.com>
47548         PR target/108922
47549         Revert:
47550         * config/i386/i386.md (fmodxf3): Enable for flag_finite_math_only only.
47551         (fmod<mode>3): Ditto.
47552         (fpremxf4_i387): Ditto.
47553         (reminderxf3): Ditto.
47554         (reminder<mode>3): Ditto.
47555         (fprem1xf4_i387): Ditto.
47557 2023-02-27  Roger Sayle  <roger@nextmovesoftware.com>
47559         * simplify-rtx.cc (simplify_unary_operation_1) <case FFS>: Avoid
47560         generating FFS with mismatched operand and result modes, by using
47561         an explicit SIGN_EXTEND/ZERO_EXTEND.
47562         <case POPCOUNT>: Likewise, for POPCOUNT of ZERO_EXTEND.
47563         <case PARITY>: Likewise, for PARITY of {ZERO,SIGN}_EXTEND.
47565 2023-02-27  Patrick Palka  <ppalka@redhat.com>
47567         * hash-table.h (gt_pch_nx(hash_table<D>)): Remove static.
47568         * lra-int.h (lra_change_class): Likewise.
47569         * recog.h (which_op_alt): Likewise.
47570         * sel-sched-ir.h (sel_bb_empty_or_nop_p): Declare inline
47571         instead of static.
47573 2023-02-27  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
47575         * config/xtensa/xtensa-protos.h (xtensa_match_CLAMPS_imms_p):
47576         New prototype.
47577         * config/xtensa/xtensa.cc (xtensa_match_CLAMPS_imms_p):
47578         New function.
47579         * config/xtensa/xtensa.h (TARGET_CLAMPS): New macro definition.
47580         * config/xtensa/xtensa.md (*xtensa_clamps): New insn pattern.
47582 2023-02-27  Max Filippov  <jcmvbkbc@gmail.com>
47584         * config/xtensa/xtensa-dynconfig.cc (xtensa_get_config_v2)
47585         (xtensa_get_config_v3): New functions.
47587 2023-02-27  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
47589         * config/aarch64/aarch64-simd.md (aarch64_abs<mode>): Fix typo in comment.
47591 2023-02-27  Lulu Cheng  <chenglulu@loongson.cn>
47593         * config/host-linux.cc (TRY_EMPTY_VM_SPACE): Modify the value of
47594         the macro to 0x1000000000.
47596 2023-02-25  Gaius Mulley  <gaiusmod2@gmail.com>
47598         PR modula2/108261
47599         * doc/gm2.texi (-fm2-pathname): New option documented.
47600         (-fm2-pathnameI): New option documented.
47601         (-fm2-prefix=): New option documented.
47602         (-fruntime-modules=): Update default module list.
47604 2023-02-25  Max Filippov  <jcmvbkbc@gmail.com>
47606         PR target/108919
47607         * config/xtensa/xtensa-protos.h
47608         (xtensa_prepare_expand_call): Rename to xtensa_expand_call.
47609         * config/xtensa/xtensa.cc (xtensa_prepare_expand_call): Rename
47610         to xtensa_expand_call.
47611         (xtensa_expand_call): Emit the call and add a clobber expression
47612         for the static chain to it in case of windowed ABI.
47613         * config/xtensa/xtensa.md (call, call_value, sibcall)
47614         (sibcall_value): Call xtensa_expand_call and complete expansion
47615         right after that call.
47617 2023-02-24  Richard Biener  <rguenther@suse.de>
47619         * vec.h (vec<T, A, vl_embed>::m_vecdata): Remove.
47620         (vec<T, A, vl_embed>::m_vecpfx): Align as T to avoid
47621         changing alignment of vec<T, A, vl_embed> and simplifying
47622         address.
47623         (vec<T, A, vl_embed>::address): Compute as this + 1.
47624         (vec<T, A, vl_embed>::embedded_size): Use sizeof the
47625         vector instead of the offset of the m_vecdata member.
47626         (auto_vec<T, N>::m_data): Turn storage into
47627         uninitialized unsigned char.
47628         (auto_vec<T, N>::auto_vec): Allow allocation of one
47629         stack member.  Initialize m_vec in a special way to
47630         avoid later stringop overflow diagnostics.
47631         * vec.cc (test_auto_alias): New.
47632         (vec_cc_tests): Call it.
47634 2023-02-24  Richard Biener  <rguenther@suse.de>
47636         * vec.h (vec<T, A, vl_embed>::lower_bound): Adjust to
47637         take a const reference to the object, use address to
47638         access data.
47639         (vec<T, A, vl_embed>::contains): Use address to access data.
47640         (vec<T, A, vl_embed>::operator[]): Use address instead of
47641         m_vecdata to access data.
47642         (vec<T, A, vl_embed>::iterate): Likewise.
47643         (vec<T, A, vl_embed>::copy): Likewise.
47644         (vec<T, A, vl_embed>::quick_push): Likewise.
47645         (vec<T, A, vl_embed>::pop): Likewise.
47646         (vec<T, A, vl_embed>::quick_insert): Likewise.
47647         (vec<T, A, vl_embed>::ordered_remove): Likewise.
47648         (vec<T, A, vl_embed>::unordered_remove): Likewise.
47649         (vec<T, A, vl_embed>::block_remove): Likewise.
47650         (vec<T, A, vl_heap>::address): Likewise.
47652 2023-02-24  Martin Liska  <mliska@suse.cz>
47654         PR sanitizer/108834
47655         * asan.cc (asan_add_global): Use proper TU name for normal
47656         global variables (and aux_base_name for the artificial one).
47658 2023-02-24  Jakub Jelinek  <jakub@redhat.com>
47660         * config/i386/i386-builtin.def: Update description of BDESC
47661         and BDESC_FIRST in file comment to include mask2.
47663 2023-02-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
47665         * config/aarch64/aarch64-cores.def (FLAGS): Update comment.
47667 2023-02-24  Jakub Jelinek  <jakub@redhat.com>
47669         PR middle-end/108854
47670         * cgraphclones.cc (duplicate_thunk_for_node): If no parameter
47671         changes are needed, copy at least DECL_ARGUMENTS PARM_DECL
47672         nodes and adjust their DECL_CONTEXT.
47674 2023-02-24  Jakub Jelinek  <jakub@redhat.com>
47676         PR target/108881
47677         * config/i386/i386-builtin.def (__builtin_ia32_cvtne2ps2bf16_v16bf,
47678         __builtin_ia32_cvtne2ps2bf16_v16bf_mask,
47679         __builtin_ia32_cvtne2ps2bf16_v16bf_maskz,
47680         __builtin_ia32_cvtne2ps2bf16_v8bf,
47681         __builtin_ia32_cvtne2ps2bf16_v8bf_mask,
47682         __builtin_ia32_cvtne2ps2bf16_v8bf_maskz,
47683         __builtin_ia32_cvtneps2bf16_v8sf_mask,
47684         __builtin_ia32_cvtneps2bf16_v8sf_maskz,
47685         __builtin_ia32_cvtneps2bf16_v4sf_mask,
47686         __builtin_ia32_cvtneps2bf16_v4sf_maskz,
47687         __builtin_ia32_dpbf16ps_v8sf, __builtin_ia32_dpbf16ps_v8sf_mask,
47688         __builtin_ia32_dpbf16ps_v8sf_maskz, __builtin_ia32_dpbf16ps_v4sf,
47689         __builtin_ia32_dpbf16ps_v4sf_mask,
47690         __builtin_ia32_dpbf16ps_v4sf_maskz): Require also
47691         OPTION_MASK_ISA_AVX512VL.
47693 2023-02-24  Sebastian Huber  <sebastian.huber@embedded-brains.de>
47695         * config/riscv/t-rtems: Keep only -mcmodel=medany 64-bit multilibs.
47696         Add non-compact 32-bit multilibs.
47698 2023-02-24  Junxian Zhu  <zhujunxian@oss.cipunited.com>
47700         * config/mips/mips.md (*clo<mode>2): New pattern.
47702 2023-02-24  Prachi Godbole  <prachi.godbole@imgtec.com>
47704         * config/mips/mips.h (machine_function): New variable
47705         use_hazard_barrier_return_p.
47706         * config/mips/mips.md (UNSPEC_JRHB): New unspec.
47707         (mips_hb_return_internal): New insn pattern.
47708         * config/mips/mips.cc (mips_attribute_table): Add attribute
47709         use_hazard_barrier_return.
47710         (mips_use_hazard_barrier_return_p): New static function.
47711         (mips_function_attr_inlinable_p): Likewise.
47712         (mips_compute_frame_info): Set use_hazard_barrier_return_p.
47713         Emit error for unsupported architecture choice.
47714         (mips_function_ok_for_sibcall, mips_can_use_return_insn):
47715         Return false for use_hazard_barrier_return.
47716         (mips_expand_epilogue): Emit hazard barrier return.
47717         * doc/extend.texi: Document use_hazard_barrier_return.
47719 2023-02-23  Max Filippov  <jcmvbkbc@gmail.com>
47721         * config/xtensa/xtensa-dynconfig.cc (config.h, system.h)
47722         (coretypes.h, diagnostic.h, intl.h): Use "..." instead of <...>
47723         for the gcc-internal headers.
47725 2023-02-23  Max Filippov  <jcmvbkbc@gmail.com>
47727         * config/xtensa/t-xtensa (xtensa-dynconfig.o): Use $(COMPILE)
47728         and $(POSTCOMPILE) instead of manual dependency listing.
47729         * config/xtensa/xtensa-dynconfig.c: Rename to ...
47730         * config/xtensa/xtensa-dynconfig.cc: ... this.
47732 2023-02-23  Arsen Arsenović  <arsen@aarsen.me>
47734         * doc/cfg.texi: Reorder index entries around @items.
47735         * doc/cpp.texi: Ditto.
47736         * doc/cppenv.texi: Ditto.
47737         * doc/cppopts.texi: Ditto.
47738         * doc/generic.texi: Ditto.
47739         * doc/install.texi: Ditto.
47740         * doc/extend.texi: Ditto.
47741         * doc/invoke.texi: Ditto.
47742         * doc/md.texi: Ditto.
47743         * doc/rtl.texi: Ditto.
47744         * doc/tm.texi.in: Ditto.
47745         * doc/trouble.texi: Ditto.
47746         * doc/tm.texi: Regenerate.
47748 2023-02-23  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
47750         * config/xtensa/xtensa.md: New peephole2 pattern that eliminates
47751         the occurrence of general-purpose register used only once and for
47752         transferring intermediate value.
47754 2023-02-23  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
47756         * config/xtensa/xtensa.cc (machine_function): Add new member
47757         'eliminated_callee_saved_bmp'.
47758         (xtensa_can_eliminate_callee_saved_reg_p): New function to
47759         determine whether the register can be eliminated or not.
47760         (xtensa_expand_prologue): Add invoking the above function and
47761         elimination the use of callee-saved register by using its stack
47762         slot through the stack pointer (or the frame pointer if needed)
47763         directly.
47764         (xtensa_expand_prologue): Modify to not emit register restoration
47765         insn from its stack slot if the register is already eliminated.
47767 2023-02-23  Jakub Jelinek  <jakub@redhat.com>
47769         PR translation/108890
47770         * config/xtensa/xtensa-dynconfig.c (xtensa_load_config): Drop _()s
47771         around fatal_error format strings.
47773 2023-02-23  Richard Biener  <rguenther@suse.de>
47775         * tree-ssa-structalias.cc (handle_lhs_call): Do not
47776         re-create rhsc, only truncate it.
47778 2023-02-23  Jakub Jelinek  <jakub@redhat.com>
47780         PR middle-end/106258
47781         * ipa-prop.cc (try_make_edge_direct_virtual_call): Handle
47782         BUILT_IN_UNREACHABLE_TRAP like BUILT_IN_UNREACHABLE.
47784 2023-02-23  Richard Biener  <rguenther@suse.de>
47786         * tree-if-conv.cc (tree_if_conversion): Properly manage
47787         memory of refs and the contained data references.
47789 2023-02-23  Richard Biener  <rguenther@suse.de>
47791         PR tree-optimization/108888
47792         * tree-if-conv.cc (if_convertible_stmt_p): Set PLF_2 on
47793         calls to predicate.
47794         (predicate_statements): Only predicate calls with PLF_2.
47796 2023-02-23  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
47798         * config/xtensa/xtensa.md
47799         (zero_cost_loop_start, zero_cost_loop_end, loop_end):
47800         Add missing "SI:" to PLUS RTXes.
47802 2023-02-23  Max Filippov  <jcmvbkbc@gmail.com>
47804         PR target/108876
47805         * config/xtensa/xtensa.cc (xtensa_expand_epilogue):
47806         Emit (use (reg:SI A0_REG)) at the end in the sibling call
47807         (i.e. the same place as (return) in the normal call).
47809 2023-02-23  Max Filippov  <jcmvbkbc@gmail.com>
47811         Revert:
47812         2023-02-21  Max Filippov  <jcmvbkbc@gmail.com>
47814         PR target/108876
47815         * config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use
47816         for A0_REG.
47817         * config/xtensa/xtensa.md (sibcall, sibcall_internal)
47818         (sibcall_value, sibcall_value_internal): Add 'use' expression
47819         for A0_REG.
47821 2023-02-23  Arsen Arsenović  <arsen@aarsen.me>
47823         * doc/cppdiropts.texi: Reorder @opindex commands to precede
47824         @items they relate to.
47825         * doc/cppopts.texi: Ditto.
47826         * doc/cppwarnopts.texi: Ditto.
47827         * doc/invoke.texi: Ditto.
47828         * doc/lto.texi: Ditto.
47830 2023-02-22  Andrew Stubbs  <ams@codesourcery.com>
47832         * internal-fn.cc (expand_MASK_CALL): New.
47833         * internal-fn.def (MASK_CALL): New.
47834         * internal-fn.h (expand_MASK_CALL): New prototype.
47835         * omp-simd-clone.cc (simd_clone_adjust_argument_types): Set vector_type
47836         for mask arguments also.
47837         * tree-if-conv.cc: Include cgraph.h.
47838         (if_convertible_stmt_p): Do if conversions for calls to SIMD calls.
47839         (predicate_statements): Convert functions to IFN_MASK_CALL.
47840         * tree-vect-loop.cc (vect_get_datarefs_in_loop): Recognise
47841         IFN_MASK_CALL as a SIMD function call.
47842         * tree-vect-stmts.cc (vectorizable_simd_clone_call): Handle
47843         IFN_MASK_CALL as an inbranch SIMD function call.
47844         Generate the mask vector arguments.
47846 2023-02-22  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
47848         * config/riscv/riscv-vector-builtins-bases.cc (class reducop): New class.
47849         (class widen_reducop): Ditto.
47850         (class freducop): Ditto.
47851         (class widen_freducop): Ditto.
47852         (BASE): Ditto.
47853         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
47854         * config/riscv/riscv-vector-builtins-functions.def (vredsum): Add reduction support.
47855         (vredmaxu): Ditto.
47856         (vredmax): Ditto.
47857         (vredminu): Ditto.
47858         (vredmin): Ditto.
47859         (vredand): Ditto.
47860         (vredor): Ditto.
47861         (vredxor): Ditto.
47862         (vwredsum): Ditto.
47863         (vwredsumu): Ditto.
47864         (vfredusum): Ditto.
47865         (vfredosum): Ditto.
47866         (vfredmax): Ditto.
47867         (vfredmin): Ditto.
47868         (vfwredosum): Ditto.
47869         (vfwredusum): Ditto.
47870         * config/riscv/riscv-vector-builtins-shapes.cc (struct reduc_alu_def): Ditto.
47871         (SHAPE): Ditto.
47872         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
47873         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WI_OPS): New macro.
47874         (DEF_RVV_WU_OPS): Ditto.
47875         (DEF_RVV_WF_OPS): Ditto.
47876         (vint8mf8_t): Ditto.
47877         (vint8mf4_t): Ditto.
47878         (vint8mf2_t): Ditto.
47879         (vint8m1_t): Ditto.
47880         (vint8m2_t): Ditto.
47881         (vint8m4_t): Ditto.
47882         (vint8m8_t): Ditto.
47883         (vint16mf4_t): Ditto.
47884         (vint16mf2_t): Ditto.
47885         (vint16m1_t): Ditto.
47886         (vint16m2_t): Ditto.
47887         (vint16m4_t): Ditto.
47888         (vint16m8_t): Ditto.
47889         (vint32mf2_t): Ditto.
47890         (vint32m1_t): Ditto.
47891         (vint32m2_t): Ditto.
47892         (vint32m4_t): Ditto.
47893         (vint32m8_t): Ditto.
47894         (vuint8mf8_t): Ditto.
47895         (vuint8mf4_t): Ditto.
47896         (vuint8mf2_t): Ditto.
47897         (vuint8m1_t): Ditto.
47898         (vuint8m2_t): Ditto.
47899         (vuint8m4_t): Ditto.
47900         (vuint8m8_t): Ditto.
47901         (vuint16mf4_t): Ditto.
47902         (vuint16mf2_t): Ditto.
47903         (vuint16m1_t): Ditto.
47904         (vuint16m2_t): Ditto.
47905         (vuint16m4_t): Ditto.
47906         (vuint16m8_t): Ditto.
47907         (vuint32mf2_t): Ditto.
47908         (vuint32m1_t): Ditto.
47909         (vuint32m2_t): Ditto.
47910         (vuint32m4_t): Ditto.
47911         (vuint32m8_t): Ditto.
47912         (vfloat32mf2_t): Ditto.
47913         (vfloat32m1_t): Ditto.
47914         (vfloat32m2_t): Ditto.
47915         (vfloat32m4_t): Ditto.
47916         (vfloat32m8_t): Ditto.
47917         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WI_OPS): Ditto.
47918         (DEF_RVV_WU_OPS): Ditto.
47919         (DEF_RVV_WF_OPS): Ditto.
47920         (required_extensions_p): Add reduction support.
47921         (rvv_arg_type_info::get_base_vector_type): Ditto.
47922         (rvv_arg_type_info::get_tree_type): Ditto.
47923         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
47924         * config/riscv/riscv.md: Ditto.
47925         * config/riscv/vector-iterators.md (minu): Ditto.
47926         * config/riscv/vector.md (@pred_reduc_<reduc><mode><vlmul1>): New patern.
47927         (@pred_reduc_<reduc><mode><vlmul1_zve32>): Ditto.
47928         (@pred_widen_reduc_plus<v_su><mode><vwlmul1>): Ditto.
47929         (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve32>):Ditto.
47930         (@pred_reduc_plus<order><mode><vlmul1>): Ditto.
47931         (@pred_reduc_plus<order><mode><vlmul1_zve32>): Ditto.
47932         (@pred_widen_reduc_plus<order><mode><vwlmul1>): Ditto.
47934 2023-02-22  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
47936         * config/riscv/iterators.md: New iterator.
47937         * config/riscv/riscv-vector-builtins-bases.cc (class widen_binop): New class.
47938         (enum ternop_type): New enum.
47939         (class vmacc): New class.
47940         (class imac): Ditto.
47941         (class vnmsac): Ditto.
47942         (enum widen_ternop_type): New enum.
47943         (class vmadd): Ditto.
47944         (class vnmsub): Ditto.
47945         (class iwmac): Ditto.
47946         (class vwmacc): Ditto.
47947         (class vwmaccu): Ditto.
47948         (class vwmaccsu): Ditto.
47949         (class vwmaccus): Ditto.
47950         (class reverse_binop): Ditto.
47951         (class vfmacc): Ditto.
47952         (class vfnmsac): Ditto.
47953         (class vfmadd): Ditto.
47954         (class vfnmsub): Ditto.
47955         (class vfnmacc): Ditto.
47956         (class vfmsac): Ditto.
47957         (class vfnmadd): Ditto.
47958         (class vfmsub): Ditto.
47959         (class vfwmacc): Ditto.
47960         (class vfwnmacc): Ditto.
47961         (class vfwmsac): Ditto.
47962         (class vfwnmsac): Ditto.
47963         (class float_misc): Ditto.
47964         (class fcmp): Ditto.
47965         (class vfclass): Ditto.
47966         (class vfcvt_x): Ditto.
47967         (class vfcvt_rtz_x): Ditto.
47968         (class vfcvt_f): Ditto.
47969         (class vfwcvt_x): Ditto.
47970         (class vfwcvt_rtz_x): Ditto.
47971         (class vfwcvt_f): Ditto.
47972         (class vfncvt_x): Ditto.
47973         (class vfncvt_rtz_x): Ditto.
47974         (class vfncvt_f): Ditto.
47975         (class vfncvt_rod_f): Ditto.
47976         (BASE): Ditto.
47977         * config/riscv/riscv-vector-builtins-bases.h:
47978         * config/riscv/riscv-vector-builtins-functions.def (vzext): Ditto.
47979         (vsext): Ditto.
47980         (vfadd): Ditto.
47981         (vfsub): Ditto.
47982         (vfrsub): Ditto.
47983         (vfwadd): Ditto.
47984         (vfwsub): Ditto.
47985         (vfmul): Ditto.
47986         (vfdiv): Ditto.
47987         (vfrdiv): Ditto.
47988         (vfwmul): Ditto.
47989         (vfmacc): Ditto.
47990         (vfnmsac): Ditto.
47991         (vfmadd): Ditto.
47992         (vfnmsub): Ditto.
47993         (vfnmacc): Ditto.
47994         (vfmsac): Ditto.
47995         (vfnmadd): Ditto.
47996         (vfmsub): Ditto.
47997         (vfwmacc): Ditto.
47998         (vfwnmacc): Ditto.
47999         (vfwmsac): Ditto.
48000         (vfwnmsac): Ditto.
48001         (vfsqrt): Ditto.
48002         (vfrsqrt7): Ditto.
48003         (vfrec7): Ditto.
48004         (vfmin): Ditto.
48005         (vfmax): Ditto.
48006         (vfsgnj): Ditto.
48007         (vfsgnjn): Ditto.
48008         (vfsgnjx): Ditto.
48009         (vfneg): Ditto.
48010         (vfabs): Ditto.
48011         (vmfeq): Ditto.
48012         (vmfne): Ditto.
48013         (vmflt): Ditto.
48014         (vmfle): Ditto.
48015         (vmfgt): Ditto.
48016         (vmfge): Ditto.
48017         (vfclass): Ditto.
48018         (vfmerge): Ditto.
48019         (vfmv_v): Ditto.
48020         (vfcvt_x): Ditto.
48021         (vfcvt_xu): Ditto.
48022         (vfcvt_rtz_x): Ditto.
48023         (vfcvt_rtz_xu): Ditto.
48024         (vfcvt_f): Ditto.
48025         (vfwcvt_x): Ditto.
48026         (vfwcvt_xu): Ditto.
48027         (vfwcvt_rtz_x): Ditto.
48028         (vfwcvt_rtz_xu): Ditto.
48029         (vfwcvt_f): Ditto.
48030         (vfncvt_x): Ditto.
48031         (vfncvt_xu): Ditto.
48032         (vfncvt_rtz_x): Ditto.
48033         (vfncvt_rtz_xu): Ditto.
48034         (vfncvt_f): Ditto.
48035         (vfncvt_rod_f): Ditto.
48036         * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
48037         (struct move_def): Ditto.
48038         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WEXTF_OPS): New macro.
48039         (DEF_RVV_CONVERT_I_OPS): Ditto.
48040         (DEF_RVV_CONVERT_U_OPS): Ditto.
48041         (DEF_RVV_WCONVERT_I_OPS): Ditto.
48042         (DEF_RVV_WCONVERT_U_OPS): Ditto.
48043         (DEF_RVV_WCONVERT_F_OPS): Ditto.
48044         (vfloat64m1_t): Ditto.
48045         (vfloat64m2_t): Ditto.
48046         (vfloat64m4_t): Ditto.
48047         (vfloat64m8_t): Ditto.
48048         (vint32mf2_t): Ditto.
48049         (vint32m1_t): Ditto.
48050         (vint32m2_t): Ditto.
48051         (vint32m4_t): Ditto.
48052         (vint32m8_t): Ditto.
48053         (vint64m1_t): Ditto.
48054         (vint64m2_t): Ditto.
48055         (vint64m4_t): Ditto.
48056         (vint64m8_t): Ditto.
48057         (vuint32mf2_t): Ditto.
48058         (vuint32m1_t): Ditto.
48059         (vuint32m2_t): Ditto.
48060         (vuint32m4_t): Ditto.
48061         (vuint32m8_t): Ditto.
48062         (vuint64m1_t): Ditto.
48063         (vuint64m2_t): Ditto.
48064         (vuint64m4_t): Ditto.
48065         (vuint64m8_t): Ditto.
48066         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_CONVERT_I_OPS): Ditto.
48067         (DEF_RVV_CONVERT_U_OPS): Ditto.
48068         (DEF_RVV_WCONVERT_I_OPS): Ditto.
48069         (DEF_RVV_WCONVERT_U_OPS): Ditto.
48070         (DEF_RVV_WCONVERT_F_OPS): Ditto.
48071         (DEF_RVV_F_OPS): Ditto.
48072         (DEF_RVV_WEXTF_OPS): Ditto.
48073         (required_extensions_p): Adjust for floating-point support.
48074         (check_required_extensions): Ditto.
48075         (unsigned_base_type_p): Ditto.
48076         (get_mode_for_bitsize): Ditto.
48077         (rvv_arg_type_info::get_base_vector_type): Ditto.
48078         (rvv_arg_type_info::get_tree_type): Ditto.
48079         * config/riscv/riscv-vector-builtins.def (v_f): New define.
48080         (f): New define.
48081         (f_v): New define.
48082         (xu_v): New define.
48083         (f_w): New define.
48084         (xu_w): New define.
48085         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): New enum.
48086         (function_expander::arg_mode): New function.
48087         * config/riscv/vector-iterators.md (sof): New iterator.
48088         (vfrecp): Ditto.
48089         (copysign): Ditto.
48090         (n): Ditto.
48091         (msac): Ditto.
48092         (msub): Ditto.
48093         (fixuns_trunc): Ditto.
48094         (floatuns): Ditto.
48095         * config/riscv/vector.md (@pred_broadcast<mode>): New pattern.
48096         (@pred_<optab><mode>): Ditto.
48097         (@pred_<optab><mode>_scalar): Ditto.
48098         (@pred_<optab><mode>_reverse_scalar): Ditto.
48099         (@pred_<copysign><mode>): Ditto.
48100         (@pred_<copysign><mode>_scalar): Ditto.
48101         (@pred_mul_<optab><mode>): Ditto.
48102         (pred_mul_<optab><mode>_undef_merge): Ditto.
48103         (*pred_<madd_nmsub><mode>): Ditto.
48104         (*pred_<macc_nmsac><mode>): Ditto.
48105         (*pred_mul_<optab><mode>): Ditto.
48106         (@pred_mul_<optab><mode>_scalar): Ditto.
48107         (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
48108         (*pred_<madd_nmsub><mode>_scalar): Ditto.
48109         (*pred_<macc_nmsac><mode>_scalar): Ditto.
48110         (*pred_mul_<optab><mode>_scalar): Ditto.
48111         (@pred_neg_mul_<optab><mode>): Ditto.
48112         (pred_neg_mul_<optab><mode>_undef_merge): Ditto.
48113         (*pred_<nmadd_msub><mode>): Ditto.
48114         (*pred_<nmacc_msac><mode>): Ditto.
48115         (*pred_neg_mul_<optab><mode>): Ditto.
48116         (@pred_neg_mul_<optab><mode>_scalar): Ditto.
48117         (*pred_neg_mul_<optab><mode>_undef_merge_scalar): Ditto.
48118         (*pred_<nmadd_msub><mode>_scalar): Ditto.
48119         (*pred_<nmacc_msac><mode>_scalar): Ditto.
48120         (*pred_neg_mul_<optab><mode>_scalar): Ditto.
48121         (@pred_<misc_op><mode>): Ditto.
48122         (@pred_class<mode>): Ditto.
48123         (@pred_dual_widen_<optab><mode>): Ditto.
48124         (@pred_dual_widen_<optab><mode>_scalar): Ditto.
48125         (@pred_single_widen_<plus_minus:optab><mode>): Ditto.
48126         (@pred_single_widen_<plus_minus:optab><mode>_scalar): Ditto.
48127         (@pred_widen_mul_<optab><mode>): Ditto.
48128         (@pred_widen_mul_<optab><mode>_scalar): Ditto.
48129         (@pred_widen_neg_mul_<optab><mode>): Ditto.
48130         (@pred_widen_neg_mul_<optab><mode>_scalar): Ditto.
48131         (@pred_cmp<mode>): Ditto.
48132         (*pred_cmp<mode>): Ditto.
48133         (*pred_cmp<mode>_narrow): Ditto.
48134         (@pred_cmp<mode>_scalar): Ditto.
48135         (*pred_cmp<mode>_scalar): Ditto.
48136         (*pred_cmp<mode>_scalar_narrow): Ditto.
48137         (@pred_eqne<mode>_scalar): Ditto.
48138         (*pred_eqne<mode>_scalar): Ditto.
48139         (*pred_eqne<mode>_scalar_narrow): Ditto.
48140         (@pred_merge<mode>_scalar): Ditto.
48141         (@pred_fcvt_x<v_su>_f<mode>): Ditto.
48142         (@pred_<fix_cvt><mode>): Ditto.
48143         (@pred_<float_cvt><mode>): Ditto.
48144         (@pred_widen_fcvt_x<v_su>_f<mode>): Ditto.
48145         (@pred_widen_<fix_cvt><mode>): Ditto.
48146         (@pred_widen_<float_cvt><mode>): Ditto.
48147         (@pred_extend<mode>): Ditto.
48148         (@pred_narrow_fcvt_x<v_su>_f<mode>): Ditto.
48149         (@pred_narrow_<fix_cvt><mode>): Ditto.
48150         (@pred_narrow_<float_cvt><mode>): Ditto.
48151         (@pred_trunc<mode>): Ditto.
48152         (@pred_rod_trunc<mode>): Ditto.
48154 2023-02-22  Jakub Jelinek  <jakub@redhat.com>
48156         PR middle-end/106258
48157         * cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee,
48158         cgraph_update_edges_for_call_stmt_node, cgraph_node::verify_node):
48159         Handle BUILT_IN_UNREACHABLE_TRAP like BUILT_IN_UNREACHABLE.
48160         * cgraphclones.cc (cgraph_node::create_clone): Likewise.
48162 2023-02-22  Thomas Schwinge  <thomas@codesourcery.com>
48164         * common.opt (-Wcomplain-wrong-lang): New.
48165         * doc/invoke.texi (-Wno-complain-wrong-lang): Document it.
48166         * opts-common.cc (prune_options): Handle it.
48167         * opts-global.cc (complain_wrong_lang): Use it.
48169 2023-02-21  David Malcolm  <dmalcolm@redhat.com>
48171         PR analyzer/108830
48172         * doc/invoke.texi: Document -fno-analyzer-suppress-followups.
48174 2023-02-21  Max Filippov  <jcmvbkbc@gmail.com>
48176         PR target/108876
48177         * config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use
48178         for A0_REG.
48179         * config/xtensa/xtensa.md (sibcall, sibcall_internal)
48180         (sibcall_value, sibcall_value_internal): Add 'use' expression
48181         for A0_REG.
48183 2023-02-21  Richard Biener  <rguenther@suse.de>
48185         PR tree-optimization/108691
48186         * tree-ssa-dce.cc (eliminate_unnecessary_stmts): Remove
48187         assert about calls_setjmp not becoming true when it was false.
48189 2023-02-21  Richard Biener  <rguenther@suse.de>
48191         PR tree-optimization/108793
48192         * tree-ssa-loop-niter.cc (number_of_iterations_until_wrap):
48193         Use convert operands to niter_type when computing num.
48195 2023-02-21  Richard Biener  <rguenther@suse.de>
48197         Revert:
48198         2023-02-13  Richard Biener  <rguenther@suse.de>
48200         PR tree-optimization/108691
48201         * tree-cfg.cc (notice_special_calls): When the CFG is built
48202         honor gimple_call_ctrl_altering_p.
48203         * cfgexpand.cc (expand_call_stmt): Clear cfun->calls_setjmp
48204         temporarily if the call is not control-altering.
48205         * calls.cc (emit_call_1): Do not add REG_SETJMP if
48206         cfun->calls_setjmp is not set.  Do not alter cfun->calls_setjmp.
48208 2023-02-21  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
48210         * config/xtensa/xtensa.cc (xtensa_call_save_reg): Change to return
48211         true if register A0 (return address register) when -Og is specified.
48213 2023-02-20  Uroš Bizjak  <ubizjak@gmail.com>
48215         * config/i386/predicates.md
48216         (general_x64constmem_operand): New predicate.
48217         * config/i386/i386.md (*cmpqi_ext<mode>_1):
48218         Use nonimm_x64constmem_operand.
48219         (*cmpqi_ext<mode>_3): Use general_x64constmem_operand.
48220         (*addqi_ext<mode>_1): Ditto.
48221         (*testqi_ext<mode>_1): Ditto.
48222         (*andqi_ext<mode>_1): Ditto.
48223         (*andqi_ext<mode>_1_cc): Ditto.
48224         (*<any_or:code>qi_ext<mode>_1): Ditto.
48225         (*xorqi_ext<mode>_1_cc): Ditto.
48227 2023-02-20  Jakub Jelinek  <jakub2redhat.com>
48229         PR target/108862
48230         * config/rs6000/rs6000.md (umaddditi4): Swap gen_maddlddi4 with
48231         gen_umadddi4_highpart{,_le}.
48233 2023-02-20  Kito Cheng  <kito.cheng@sifive.com>
48235         * config/riscv/riscv.md (prefetch): Use r instead of p for the
48236         address operand.
48237         (riscv_prefetchi_<mode>): Ditto.
48239 2023-02-20  Richard Biener  <rguenther@suse.de>
48241         PR tree-optimization/108816
48242         * tree-vect-loop-manip.cc (vect_loop_versioning): Adjust
48243         versioning condition split prerequesite, assert required
48244         invariant.
48246 2023-02-20  Richard Biener  <rguenther@suse.de>
48248         PR tree-optimization/108825
48249         * tree-ssa-loop-manip.cc (verify_loop_closed_ssa): For
48250         loop-local verfication only verify there's no pending SSA
48251         update.
48253 2023-02-20  Richard Biener  <rguenther@suse.de>
48255         PR tree-optimization/108819
48256         * tree-ssa-loop-niter.cc (number_of_iterations_cltz): Check
48257         we have an SSA name as iv_2 as expected.
48259 2023-02-18  Jakub Jelinek  <jakub@redhat.com>
48261         PR tree-optimization/108819
48262         * tree-ssa-reassoc.cc (update_ops): Fold new stmt in place.
48264 2023-02-18  Jakub Jelinek  <jakub@redhat.com>
48266         PR target/108832
48267         * config/i386/i386-protos.h (ix86_replace_reg_with_reg): Declare.
48268         * config/i386/i386-expand.cc (ix86_replace_reg_with_reg): New
48269         function.
48270         * config/i386/i386.md: Replace replace_rtx calls in all peephole2s
48271         with ix86_replace_reg_with_reg.
48273 2023-02-18  Gerald Pfeifer  <gerald@pfeifer.com>
48275         * doc/invoke.texi (AVR Options): Update link to AVR-LibC.
48277 2023-02-18  Xi Ruoyao  <xry111@xry111.site>
48279         * config.gcc (triplet_abi): Set its value based on $with_abi,
48280         instead of $target.
48281         (la_canonical_triplet): Set it after $triplet_abi is set
48282         correctly.
48283         * config/loongarch/t-linux (MULTILIB_OSDIRNAMES): Make the
48284         multiarch tuple for lp64d "loongarch64-linux-gnu" (without
48285         "f64" suffix).
48287 2023-02-18  Andrew Pinski  <apinski@marvell.com>
48289         * match.pd: Remove #if GIMPLE around the
48290         "1 - a" pattern
48292 2023-02-18  Andrew Pinski  <apinski@marvell.com>
48294         * value-query.h (get_range_query): Return the global ranges
48295         for a nullptr func.
48297 2023-02-17  Siddhesh Poyarekar  <siddhesh@gotplt.org>
48299         * doc/invoke.texi (@item -Wall): Fix typo in
48300         -Wuse-after-free.
48302 2023-02-17  Uroš Bizjak  <ubizjak@gmail.com>
48304         PR target/108831
48305         * config/i386/predicates.md
48306         (nonimm_x64constmem_operand): New predicate.
48307         * config/i386/i386.md (*addqi_ext<mode>_0): New insn pattern.
48308         (*subqi_ext<mode>_0): Ditto.
48309         (*andqi_ext<mode>_0): Ditto.
48310         (*<any_or:code>qi_ext<mode>_0): Ditto.
48312 2023-02-17  Uroš Bizjak  <ubizjak@gmail.com>
48314         PR target/108805
48315         * simplify-rtx.cc (simplify_context::simplify_subreg): Use
48316         int_outermode instead of GET_MODE (tem) to prevent
48317         VOIDmode from entering simplify_gen_subreg.
48319 2023-02-17  Richard Biener  <rguenther@suse.de>
48321         PR tree-optimization/108821
48322         * tree-ssa-loop-im.cc (sm_seq_valid_bb): We can also not
48323         move volatile accesses.
48325 2023-02-17  Richard Biener  <rguenther@suse.de>
48327         * tree-ssa.cc (ssa_undefined_value_p): Assert we are not
48328         called on virtual operands.
48329         * tree-ssa-sccvn.cc (vn_phi_lookup): Guard
48330         ssa_undefined_value_p calls.
48331         (vn_phi_insert): Likewise.
48332         (set_ssa_val_to): Likewise.
48333         (visit_phi): Avoid extra work with equivalences for
48334         virtual operand PHIs.
48336 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
48338         * config/riscv/riscv-vector-builtins-bases.cc (class mask_logic): New
48339         class.
48340         (class mask_nlogic): Ditto.
48341         (class mask_notlogic): Ditto.
48342         (class vmmv): Ditto.
48343         (class vmclr): Ditto.
48344         (class vmset): Ditto.
48345         (class vmnot): Ditto.
48346         (class vcpop): Ditto.
48347         (class vfirst): Ditto.
48348         (class mask_misc): Ditto.
48349         (class viota): Ditto.
48350         (class vid): Ditto.
48351         (BASE): Ditto.
48352         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
48353         * config/riscv/riscv-vector-builtins-functions.def (vmand): Ditto.
48354         (vmnand): Ditto.
48355         (vmandn): Ditto.
48356         (vmxor): Ditto.
48357         (vmor): Ditto.
48358         (vmnor): Ditto.
48359         (vmorn): Ditto.
48360         (vmxnor): Ditto.
48361         (vmmv): Ditto.
48362         (vmclr): Ditto.
48363         (vmset): Ditto.
48364         (vmnot): Ditto.
48365         (vcpop): Ditto.
48366         (vfirst): Ditto.
48367         (vmsbf): Ditto.
48368         (vmsif): Ditto.
48369         (vmsof): Ditto.
48370         (viota): Ditto.
48371         (vid): Ditto.
48372         * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
48373         (struct mask_alu_def): Ditto.
48374         (SHAPE): Ditto.
48375         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
48376         * config/riscv/riscv-vector-builtins.cc: Ditto.
48377         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::cleanup_insns): Fix bug
48378         for dest it scalar RVV intrinsics.
48379         * config/riscv/vector-iterators.md (sof): New iterator.
48380         * config/riscv/vector.md (@pred_<optab>n<mode>): New pattern.
48381         (@pred_<optab>not<mode>): New pattern.
48382         (@pred_popcount<VB:mode><P:mode>): New pattern.
48383         (@pred_ffs<VB:mode><P:mode>): New pattern.
48384         (@pred_<misc_op><mode>): New pattern.
48385         (@pred_iota<mode>): New pattern.
48386         (@pred_series<mode>): New pattern.
48388 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
48390         * config/riscv/riscv-vector-builtins-functions.def (vadc): Rename.
48391         (vsbc): Ditto.
48392         (vmerge): Ditto.
48393         (vmv_v): Ditto.
48394         * config/riscv/riscv-vector-builtins.cc: Ditto.
48396 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
48397             kito-cheng  <kito.cheng@sifive.com>
48399         * config/riscv/riscv-protos.h (sew64_scalar_helper): New function.
48400         * config/riscv/riscv-v.cc (has_vi_variant_p): Adjust.
48401         (sew64_scalar_helper): New function.
48402         * config/riscv/vector.md: Normalization.
48404 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
48406         * config/riscv/riscv-vector-builtins-functions.def (vsetvlmax): Rearrange.
48407         (vsm): Ditto.
48408         (vsse): Ditto.
48409         (vsoxei64): Ditto.
48410         (vsub): Ditto.
48411         (vand): Ditto.
48412         (vor): Ditto.
48413         (vxor): Ditto.
48414         (vsll): Ditto.
48415         (vsra): Ditto.
48416         (vsrl): Ditto.
48417         (vmin): Ditto.
48418         (vmax): Ditto.
48419         (vminu): Ditto.
48420         (vmaxu): Ditto.
48421         (vmul): Ditto.
48422         (vmulh): Ditto.
48423         (vmulhu): Ditto.
48424         (vmulhsu): Ditto.
48425         (vdiv): Ditto.
48426         (vrem): Ditto.
48427         (vdivu): Ditto.
48428         (vremu): Ditto.
48429         (vnot): Ditto.
48430         (vsext): Ditto.
48431         (vzext): Ditto.
48432         (vwadd): Ditto.
48433         (vwsub): Ditto.
48434         (vwmul): Ditto.
48435         (vwmulu): Ditto.
48436         (vwmulsu): Ditto.
48437         (vwaddu): Ditto.
48438         (vwsubu): Ditto.
48439         (vsbc): Ditto.
48440         (vmsbc): Ditto.
48441         (vnsra): Ditto.
48442         (vmerge): Ditto.
48443         (vmv_v): Ditto.
48444         (vmsne): Ditto.
48445         (vmslt): Ditto.
48446         (vmsgt): Ditto.
48447         (vmsle): Ditto.
48448         (vmsge): Ditto.
48449         (vmsltu): Ditto.
48450         (vmsgtu): Ditto.
48451         (vmsleu): Ditto.
48452         (vmsgeu): Ditto.
48453         (vnmsac): Ditto.
48454         (vmadd): Ditto.
48455         (vnmsub): Ditto.
48456         (vwmacc): Ditto.
48457         (vsadd): Ditto.
48458         (vssub): Ditto.
48459         (vssubu): Ditto.
48460         (vaadd): Ditto.
48461         (vasub): Ditto.
48462         (vasubu): Ditto.
48463         (vsmul): Ditto.
48464         (vssra): Ditto.
48465         (vssrl): Ditto.
48466         (vnclip): Ditto.
48468 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
48470         * config/riscv/vector.md (@pred_<optab><mode>): Rearrange.
48471         (@pred_<optab><mode>_scalar): Ditto.
48472         (*pred_<optab><mode>_scalar): Ditto.
48473         (*pred_<optab><mode>_extended_scalar): Ditto.
48475 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
48477         * config/riscv/riscv-protos.h (riscv_run_selftests): Remove 'extern'.
48478         (init_builtins): Ditto.
48479         (mangle_builtin_type): Ditto.
48480         (verify_type_context): Ditto.
48481         (handle_pragma_vector):  Ditto.
48482         (builtin_decl): Ditto.
48483         (expand_builtin): Ditto.
48484         (const_vec_all_same_in_range_p): Ditto.
48485         (legitimize_move): Ditto.
48486         (emit_vlmax_op): Ditto.
48487         (emit_nonvlmax_op): Ditto.
48488         (get_vlmul): Ditto.
48489         (get_ratio): Ditto.
48490         (get_ta): Ditto.
48491         (get_ma): Ditto.
48492         (get_avl_type): Ditto.
48493         (calculate_ratio): Ditto.
48494         (enum vlmul_type): Ditto.
48495         (simm5_p): Ditto.
48496         (neg_simm5_p): Ditto.
48497         (has_vi_variant_p): Ditto.
48499 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
48501         * config/riscv/riscv-protos.h (simm32_p): Remove.
48502         * config/riscv/riscv-v.cc (simm32_p): Ditto.
48503         * config/riscv/vector.md: Use immediate_operand
48504         instead of riscv_vector::simm32_p.
48506 2023-02-16  Gerald Pfeifer  <gerald@pfeifer.com>
48508         * doc/invoke.texi (Optimize Options): Reword the explanation
48509         getting minimal, maximal and default values of a parameter.
48511 2023-02-16  Patrick Palka  <ppalka@redhat.com>
48513         * addresses.h: Mechanically drop 'static' from 'static inline'
48514         functions via s/^static inline/inline/g.
48515         * asan.h: Likewise.
48516         * attribs.h: Likewise.
48517         * basic-block.h: Likewise.
48518         * bitmap.h: Likewise.
48519         * cfghooks.h: Likewise.
48520         * cfgloop.h: Likewise.
48521         * cgraph.h: Likewise.
48522         * cselib.h: Likewise.
48523         * data-streamer.h: Likewise.
48524         * debug.h: Likewise.
48525         * df.h: Likewise.
48526         * diagnostic.h: Likewise.
48527         * dominance.h: Likewise.
48528         * dumpfile.h: Likewise.
48529         * emit-rtl.h: Likewise.
48530         * except.h: Likewise.
48531         * expmed.h: Likewise.
48532         * expr.h: Likewise.
48533         * fixed-value.h: Likewise.
48534         * gengtype.h: Likewise.
48535         * gimple-expr.h: Likewise.
48536         * gimple-iterator.h: Likewise.
48537         * gimple-predict.h: Likewise.
48538         * gimple-range-fold.h: Likewise.
48539         * gimple-ssa.h: Likewise.
48540         * gimple.h: Likewise.
48541         * graphite.h: Likewise.
48542         * hard-reg-set.h: Likewise.
48543         * hash-map.h: Likewise.
48544         * hash-set.h: Likewise.
48545         * hash-table.h: Likewise.
48546         * hwint.h: Likewise.
48547         * input.h: Likewise.
48548         * insn-addr.h: Likewise.
48549         * internal-fn.h: Likewise.
48550         * ipa-fnsummary.h: Likewise.
48551         * ipa-icf-gimple.h: Likewise.
48552         * ipa-inline.h: Likewise.
48553         * ipa-modref.h: Likewise.
48554         * ipa-prop.h: Likewise.
48555         * ira-int.h: Likewise.
48556         * ira.h: Likewise.
48557         * lra-int.h: Likewise.
48558         * lra.h: Likewise.
48559         * lto-streamer.h: Likewise.
48560         * memmodel.h: Likewise.
48561         * omp-general.h: Likewise.
48562         * optabs-query.h: Likewise.
48563         * optabs.h: Likewise.
48564         * plugin.h: Likewise.
48565         * pretty-print.h: Likewise.
48566         * range.h: Likewise.
48567         * read-md.h: Likewise.
48568         * recog.h: Likewise.
48569         * regs.h: Likewise.
48570         * rtl-iter.h: Likewise.
48571         * rtl.h: Likewise.
48572         * sbitmap.h: Likewise.
48573         * sched-int.h: Likewise.
48574         * sel-sched-ir.h: Likewise.
48575         * sese.h: Likewise.
48576         * sparseset.h: Likewise.
48577         * ssa-iterators.h: Likewise.
48578         * system.h: Likewise.
48579         * target-globals.h: Likewise.
48580         * target.h: Likewise.
48581         * timevar.h: Likewise.
48582         * tree-chrec.h: Likewise.
48583         * tree-data-ref.h: Likewise.
48584         * tree-iterator.h: Likewise.
48585         * tree-outof-ssa.h: Likewise.
48586         * tree-phinodes.h: Likewise.
48587         * tree-scalar-evolution.h: Likewise.
48588         * tree-sra.h: Likewise.
48589         * tree-ssa-alias.h: Likewise.
48590         * tree-ssa-live.h: Likewise.
48591         * tree-ssa-loop-manip.h: Likewise.
48592         * tree-ssa-loop.h: Likewise.
48593         * tree-ssa-operands.h: Likewise.
48594         * tree-ssa-propagate.h: Likewise.
48595         * tree-ssa-sccvn.h: Likewise.
48596         * tree-ssa.h: Likewise.
48597         * tree-ssanames.h: Likewise.
48598         * tree-streamer.h: Likewise.
48599         * tree-switch-conversion.h: Likewise.
48600         * tree-vectorizer.h: Likewise.
48601         * tree.h: Likewise.
48602         * wide-int.h: Likewise.
48604 2023-02-16  Jakub Jelinek  <jakub@redhat.com>
48606         PR tree-optimization/108657
48607         * tree-ssa-dse.cc (initialize_ao_ref_for_dse): If lhs of stmt
48608         exists and is not a SSA_NAME, call ao_ref_init even if the stmt
48609         is a call to internal or builtin function.
48611 2023-02-16  Jonathan Wakely  <jwakely@redhat.com>
48613         * doc/invoke.texi (C++ Dialect Options): Suggest adding a
48614         using-declaration to unhide functions.
48616 2023-02-16  Jakub Jelinek  <jakub@redhat.com>
48618         PR tree-optimization/108783
48619         * tree-ssa-reassoc.cc (eliminate_redundant_comparison): If lcode
48620         is equal to TREE_CODE (t), op1 to newop1 and op2 to newop2, set
48621         t to curr->op.  Otherwise, punt if either newop1 or newop2 are
48622         SSA_NAME_OCCURS_IN_ABNORMAL_PHI SSA_NAMEs.
48624 2023-02-16  Richard Biener  <rguenther@suse.de>
48626         PR tree-optimization/108791
48627         * tree-ssa-forwprop.cc (optimize_vector_load): Build
48628         the ADDR_EXPR of a TARGET_MEM_REF using a more meaningful
48629         type.
48631 2023-02-15  Eric Botcazou  <ebotcazou@adacore.com>
48633         PR target/90458
48634         * config/i386/i386.cc (ix86_compute_frame_layout): Disable the
48635         effects of -fstack-clash-protection for TARGET_STACK_PROBE.
48636         (ix86_expand_prologue): Likewise.
48638 2023-02-15  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
48640         * config/bpf/bpf.cc (bpf_option_override): Fix doubled space.
48642 2023-02-15  Uroš Bizjak  <ubizjak@gmail.com>
48644         * config/i386/i386.md (*cmpqi_ext<mode>_1): Use
48645         int248_register_operand predicate in zero_extract sub-RTX.
48646         (*cmpqi_ext<mode>_2): Ditto.
48647         (*cmpqi_ext<mode>_3): Ditto.
48648         (*cmpqi_ext<mode>_4): Ditto.
48649         (*extzvqi_mem_rex64): Ditto.
48650         (*extzvqi): Ditto.
48651         (*insvqi_1_mem_rex64): Ditto.
48652         (@insv<mode>_1): Ditto.
48653         (*insvqi_1): Ditto.
48654         (*insvqi_2): Ditto.
48655         (*insvqi_3): Ditto.
48656         (*extendqi<SWI24:mode>_ext_1): Ditto.
48657         (*addqi_ext<mode>_1): Ditto.
48658         (*addqi_ext<mode>_2): Ditto.
48659         (*subqi_ext<mode>_2): Ditto.
48660         (*testqi_ext<mode>_1): Ditto.
48661         (*testqi_ext<mode>_2): Ditto.
48662         (*andqi_ext<mode>_1): Ditto.
48663         (*andqi_ext<mode>_1_cc): Ditto.
48664         (*andqi_ext<mode>_2): Ditto.
48665         (*<any_or:code>qi_ext<mode>_1): Ditto.
48666         (*<any_or:code>qi_ext<mode>_2): Ditto.
48667         (*xorqi_ext<mode>_1_cc): Ditto.
48668         (*negqi_ext<mode>_2): Ditto.
48669         (*ashlqi_ext<mode>_2): Ditto.
48670         (*<any_shiftrt:insn>qi_ext<mode>_2): Ditto.
48672 2023-02-15  Uroš Bizjak  <ubizjak@gmail.com>
48674         * config/i386/predicates.md (int248_register_operand):
48675         Rename from extr_register_operand.
48676         * config/i386/i386.md (*extv<mode>): Update for renamed predicate.
48677         (*extzx<mode>): Ditto.
48678         (*ashl<dwi>3_doubleword_mask): Use int248_register_operand predicate.
48679         (*ashl<mode>3_mask): Ditto.
48680         (*<any_shiftrt:insn><mode>3_mask): Ditto.
48681         (*<any_shiftrt:insn><dwi>3_doubleword_mask): Ditto.
48682         (*<any_rotate:insn><mode>3_mask): Ditto.
48683         (*<btsc><mode>_mask): Ditto.
48684         (*btr<mode>_mask): Ditto.
48685         (*jcc_bt<mode>_mask_1): Ditto.
48687 2023-02-15  Richard Biener  <rguenther@suse.de>
48689         PR middle-end/26854
48690         * df-core.cc (df_worklist_propagate_forward): Put later
48691         blocks on worklist and only earlier blocks on pending.
48692         (df_worklist_propagate_backward): Likewise.
48693         (df_worklist_dataflow_doublequeue): Change the iteration
48694         to process new blocks in the same iteration if that
48695         maintains the iteration order.
48697 2023-02-15  Marek Polacek  <polacek@redhat.com>
48699         PR middle-end/106080
48700         * gimple-ssa-warn-access.cc (is_auto_decl): Remove.  Use auto_var_p
48701         instead.
48703 2023-02-15  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
48705         * config/riscv/predicates.md: Refine codes.
48706         * config/riscv/riscv-protos.h (RVV_VUNDEF): New macro.
48707         * config/riscv/riscv-v.cc: Refine codes.
48708         * config/riscv/riscv-vector-builtins-bases.cc (enum ternop_type): New
48709         enum.
48710         (class imac): New class.
48711         (enum widen_ternop_type): New enum.
48712         (class iwmac): New class.
48713         (BASE): New class.
48714         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
48715         * config/riscv/riscv-vector-builtins-functions.def (vmacc): Ditto.
48716         (vnmsac): Ditto.
48717         (vmadd): Ditto.
48718         (vnmsub): Ditto.
48719         (vwmacc): Ditto.
48720         (vwmaccu): Ditto.
48721         (vwmaccsu): Ditto.
48722         (vwmaccus): Ditto.
48723         * config/riscv/riscv-vector-builtins.cc
48724         (function_builder::apply_predication): Adjust for multiply-add support.
48725         (function_expander::add_vundef_operand): Refine codes.
48726         (function_expander::use_ternop_insn): New function.
48727         (function_expander::use_widen_ternop_insn): Ditto.
48728         * config/riscv/riscv-vector-builtins.h: New function.
48729         * config/riscv/vector.md (@pred_mul_<optab><mode>): New pattern.
48730         (pred_mul_<optab><mode>_undef_merge): Ditto.
48731         (*pred_<madd_nmsub><mode>): Ditto.
48732         (*pred_<macc_nmsac><mode>): Ditto.
48733         (*pred_mul_<optab><mode>): Ditto.
48734         (@pred_mul_<optab><mode>_scalar): Ditto.
48735         (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
48736         (*pred_<madd_nmsub><mode>_scalar): Ditto.
48737         (*pred_<macc_nmsac><mode>_scalar): Ditto.
48738         (*pred_mul_<optab><mode>_scalar): Ditto.
48739         (*pred_mul_<optab><mode>_undef_merge_extended_scalar): Ditto.
48740         (*pred_<madd_nmsub><mode>_extended_scalar): Ditto.
48741         (*pred_<macc_nmsac><mode>_extended_scalar): Ditto.
48742         (*pred_mul_<optab><mode>_extended_scalar): Ditto.
48743         (@pred_widen_mul_plus<su><mode>): Ditto.
48744         (@pred_widen_mul_plus<su><mode>_scalar): Ditto.
48745         (@pred_widen_mul_plussu<mode>): Ditto.
48746         (@pred_widen_mul_plussu<mode>_scalar): Ditto.
48747         (@pred_widen_mul_plusus<mode>_scalar): Ditto.
48749 2023-02-15  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
48751         * config/riscv/predicates.md (vector_mask_operand): Refine the codes.
48752         (vector_all_trues_mask_operand): New predicate.
48753         (vector_undef_operand): New predicate.
48754         (ltge_operator): New predicate.
48755         (comparison_except_ltge_operator): New predicate.
48756         (comparison_except_eqge_operator): New predicate.
48757         (ge_operator): New predicate.
48758         * config/riscv/riscv-v.cc (has_vi_variant_p): Add compare support.
48759         * config/riscv/riscv-vector-builtins-bases.cc (class icmp): New class.
48760         (BASE): Ditto.
48761         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
48762         * config/riscv/riscv-vector-builtins-functions.def (vmseq): Ditto.
48763         (vmsne): Ditto.
48764         (vmslt): Ditto.
48765         (vmsgt): Ditto.
48766         (vmsle): Ditto.
48767         (vmsge): Ditto.
48768         (vmsltu): Ditto.
48769         (vmsgtu): Ditto.
48770         (vmsleu): Ditto.
48771         (vmsgeu): Ditto.
48772         * config/riscv/riscv-vector-builtins-shapes.cc
48773         (struct return_mask_def): Adjust for compare support.
48774         * config/riscv/riscv-vector-builtins.cc
48775         (function_expander::use_compare_insn): New function.
48776         * config/riscv/riscv-vector-builtins.h
48777         (function_expander::add_integer_operand): Ditto.
48778         * config/riscv/riscv.cc (riscv_print_operand): Add compare support.
48779         * config/riscv/riscv.md: Add vector min/max attributes.
48780         * config/riscv/vector-iterators.md (xnor): New iterator.
48781         * config/riscv/vector.md (@pred_cmp<mode>): New pattern.
48782         (*pred_cmp<mode>): Ditto.
48783         (*pred_cmp<mode>_narrow): Ditto.
48784         (@pred_ltge<mode>): Ditto.
48785         (*pred_ltge<mode>): Ditto.
48786         (*pred_ltge<mode>_narrow): Ditto.
48787         (@pred_cmp<mode>_scalar): Ditto.
48788         (*pred_cmp<mode>_scalar): Ditto.
48789         (*pred_cmp<mode>_scalar_narrow): Ditto.
48790         (@pred_eqne<mode>_scalar): Ditto.
48791         (*pred_eqne<mode>_scalar): Ditto.
48792         (*pred_eqne<mode>_scalar_narrow): Ditto.
48793         (*pred_cmp<mode>_extended_scalar): Ditto.
48794         (*pred_cmp<mode>_extended_scalar_narrow): Ditto.
48795         (*pred_eqne<mode>_extended_scalar): Ditto.
48796         (*pred_eqne<mode>_extended_scalar_narrow): Ditto.
48797         (@pred_ge<mode>_scalar): Ditto.
48798         (@pred_<optab><mode>): Ditto.
48799         (@pred_n<optab><mode>): Ditto.
48800         (@pred_<optab>n<mode>): Ditto.
48801         (@pred_not<mode>): Ditto.
48803 2023-02-15  Martin Jambor  <mjambor@suse.cz>
48805         PR ipa/108679
48806         * ipa-sra.cc (push_param_adjustments_for_index): Do not omit
48807         creation of non-scalar replacements even if IPA-CP knows their
48808         contents.
48810 2023-02-15  Jakub Jelinek  <jakub@redhat.com>
48812         PR target/108787
48813         PR target/103109
48814         * config/rs6000/rs6000.md (<u>maddditi4): Change into umaddditi4 only
48815         expander, change operand 3 to be TImode, emit maddlddi4 and
48816         umadddi4_highpart{,_le} with its low half and finally add the high
48817         half to the result.
48819 2023-02-15  Martin Liska  <mliska@suse.cz>
48821         * doc/invoke.texi: Document --param=asan-kernel-mem-intrinsic-prefix.
48823 2023-02-15  Richard Biener  <rguenther@suse.de>
48825         * sanopt.cc (sanitize_asan_mark_unpoison): Use bitmap
48826         for with_poison and alias worklist to it.
48827         (sanitize_asan_mark_poison): Likewise.
48829 2023-02-15  Richard Biener  <rguenther@suse.de>
48831         PR target/108738
48832         * config/i386/i386-features.cc (scalar_chain::add_to_queue):
48833         Combine bitmap test and set.
48834         (scalar_chain::add_insn): Likewise.
48835         (scalar_chain::analyze_register_chain): Remove redundant
48836         attempt to add to queue and instead strengthen assert.
48837         Sink common attempts to mark the def dual-mode.
48838         (scalar_chain::add_to_queue): Remove redundant insn bitmap
48839         check.
48841 2023-02-15  Richard Biener  <rguenther@suse.de>
48843         PR target/108738
48844         * config/i386/i386-features.cc (convert_scalars_to_vector):
48845         Switch candidates bitmaps to tree view before building the chains.
48847 2023-02-15  Hans-Peter Nilsson  <hp@axis.com>
48849         * reload1.cc (gen_reload): Correct rtx parameter for fatal_insn
48850         "failure trying to reload" call.
48852 2023-02-15  Hans-Peter Nilsson  <hp@axis.com>
48854         * gdbinit.in (phrs): New command.
48855         * sel-sched-dump.cc (debug_hard_reg_set): Remove debug-function.
48856         * ira-color.cc (debug_hard_reg_set): New, calling print_hard_reg_set.
48858 2023-02-14  David Faust  <david.faust@oracle.com>
48860         PR target/108790
48861         * config/bpf/constraints.md (q): New memory constraint.
48862         * config/bpf/bpf.md (zero_extendhidi2): Use it here.
48863         (zero_extendqidi2): Likewise.
48864         (zero_extendsidi2): Likewise.
48865         (*mov<MM:mode>): Likewise.
48867 2023-02-14  Andrew Pinski  <apinski@marvell.com>
48869         PR tree-optimization/108355
48870         PR tree-optimization/96921
48871         * match.pd: Add pattern for "1 - bool_val".
48873 2023-02-14  Richard Biener  <rguenther@suse.de>
48875         * tree-ssa-sccvn.cc (vn_phi_compute_hash): Key skipping
48876         basic block index hashing on the availability of ->cclhs.
48877         (vn_phi_eq): Avoid re-doing sanity checks for CSE but
48878         rely on ->cclhs availability.
48879         (vn_phi_lookup): Set ->cclhs only when we are eventually
48880         going to CSE the PHI.
48881         (vn_phi_insert): Likewise.
48883 2023-02-14  Eric Botcazou  <ebotcazou@adacore.com>
48885         * gimplify.cc (gimplify_save_expr): Add missing guard.
48887 2023-02-14  Richard Biener  <rguenther@suse.de>
48889         PR tree-optimization/108782
48890         * tree-vect-loop.cc (vect_phi_first_order_recurrence_p):
48891         Make sure we're not vectorizing an inner loop.
48893 2023-02-14  Jakub Jelinek  <jakub@redhat.com>
48895         PR sanitizer/108777
48896         * params.opt (-param=asan-kernel-mem-intrinsic-prefix=): New param.
48897         * asan.h (asan_memfn_rtl): Declare.
48898         * asan.cc (asan_memfn_rtls): New variable.
48899         (asan_memfn_rtl): New function.
48900         * builtins.cc (expand_builtin): If
48901         param_asan_kernel_mem_intrinsic_prefix and function is
48902         kernel-{,hw}address sanitized, emit calls to
48903         __{,hw}asan_{memcpy,memmove,memset} rather than
48904         {memcpy,memmove,memset}.  Use sanitize_flags_p (SANITIZE_ADDRESS)
48905         instead of flag_sanitize & SANITIZE_ADDRESS to check if
48906         asan_intercepted_p functions shouldn't be expanded inline.
48908 2023-02-14  Richard Sandiford  <richard.sandiford@arm.com>
48910         PR tree-optimization/96373
48911         * tree-vect-stmts.cc (vectorizable_operation): Predicate trapping
48912         operations on the loop mask.  Reject partial vectors if this isn't
48913         possible.
48915 2023-02-13  Richard Sandiford  <richard.sandiford@arm.com>
48917         PR rtl-optimization/108681
48918         * lra-spills.cc (lra_final_code_change): Extend subreg replacement
48919         code to handle bare uses and clobbers.
48921 2023-02-13  Vladimir N. Makarov  <vmakarov@redhat.com>
48923         * ira.cc (ira_update_equiv_info_by_shuffle_insn): Clear equiv
48924         caller_save_p flag when clearing defined_p flag.
48925         (setup_reg_equiv): Ditto.
48926         * lra-constraints.cc (lra_constraints): Ditto.
48928 2023-02-13  Uroš Bizjak  <ubizjak@gmail.com>
48930         PR target/108516
48931         * config/i386/predicates.md (extr_register_operand):
48932         New special predicate.
48933         * config/i386/i386.md (*extv<mode>): Use extr_register_operand
48934         as operand 1 predicate.
48935         (*exzv<mode>): Ditto.
48936         (*extendqi<SWI24:mode>_ext_1): New insn pattern.
48938 2023-02-13  Richard Biener  <rguenther@suse.de>
48940         PR tree-optimization/28614
48941         * tree-ssa-sccvn.cc (can_track_predicate_on_edge): Avoid
48942         walking all edges in most cases.
48943         (vn_nary_op_insert_pieces_predicated): Avoid repeated
48944         calls to can_track_predicate_on_edge unless checking is
48945         enabled.
48946         (process_bb): Instead call it once here for each edge
48947         we register possibly multiple predicates on.
48949 2023-02-13  Richard Biener  <rguenther@suse.de>
48951         PR tree-optimization/108691
48952         * tree-cfg.cc (notice_special_calls): When the CFG is built
48953         honor gimple_call_ctrl_altering_p.
48954         * cfgexpand.cc (expand_call_stmt): Clear cfun->calls_setjmp
48955         temporarily if the call is not control-altering.
48956         * calls.cc (emit_call_1): Do not add REG_SETJMP if
48957         cfun->calls_setjmp is not set.  Do not alter cfun->calls_setjmp.
48959 2023-02-13  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
48961         PR target/108102
48962         * config/s390/s390.cc (s390_bb_fallthru_entry_likely): Remove.
48963         (struct s390_sched_state): Initialise to zero.
48964         (s390_sched_variable_issue): For better debuggability also emit
48965         the current side.
48966         (s390_sched_init): Unconditionally reset scheduler state.
48968 2023-02-13  Richard Sandiford  <richard.sandiford@arm.com>
48970         * ifcvt.h (noce_if_info::cond_inverted): New field.
48971         * ifcvt.cc (cond_move_convert_if_block): Swap the then and else
48972         values when cond_inverted is true.
48973         (noce_find_if_block): Allow the condition to be inverted when
48974         handling conditional moves.
48976 2023-02-13  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
48978         * config/s390/predicates.md (execute_operation): Use
48979         constrain_operands instead of extract_constrain_insn in order to
48980         determine wheter there exists a valid alternative.
48982 2023-02-13  Claudiu Zissulescu  <claziss@gmail.com>
48984         * common/config/arc/arc-common.cc (arc_option_optimization_table):
48985         Remove millicode from list.
48987 2023-02-13  Martin Liska  <mliska@suse.cz>
48989         * doc/invoke.texi: Document ira-simple-lra-insn-threshold.
48991 2023-02-13  Richard Biener  <rguenther@suse.de>
48993         PR tree-optimization/106722
48994         * tree-ssa-dce.cc (mark_last_stmt_necessary): Return
48995         whether we marked a stmt.
48996         (mark_control_dependent_edges_necessary): When
48997         mark_last_stmt_necessary didn't mark any stmt make sure
48998         to mark its control dependent edges.
48999         (propagate_necessity): Likewise.
49001 2023-02-13  Kito Cheng  <kito.cheng@sifive.com>
49003         * config/riscv/riscv.h (RISCV_DWARF_VLENB): New.
49004         (DWARF_FRAME_REGISTERS): New.
49005         (DWARF_REG_TO_UNWIND_COLUMN): New.
49007 2023-02-12  Gerald Pfeifer  <gerald@pfeifer.com>
49009         * doc/sourcebuild.texi: Remove (broken) direct reference to
49010         "The GNU configure and build system".
49012 2023-02-12  Jin Ma  <jinma@linux.alibaba.com>
49014         * config/riscv/riscv.cc (riscv_adjust_libcall_cfi_prologue): Change
49015         gen_add3_insn to gen_rtx_SET.
49016         (riscv_adjust_libcall_cfi_epilogue): Likewise.
49018 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
49020         * config/riscv/riscv-vector-builtins-bases.cc (class sat_op): New class.
49021         (class vnclip): Ditto.
49022         (BASE): Ditto.
49023         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
49024         * config/riscv/riscv-vector-builtins-functions.def (vaadd): Ditto.
49025         (vasub): Ditto.
49026         (vaaddu): Ditto.
49027         (vasubu): Ditto.
49028         (vsmul): Ditto.
49029         (vssra): Ditto.
49030         (vssrl): Ditto.
49031         (vnclipu): Ditto.
49032         (vnclip): Ditto.
49033         * config/riscv/vector-iterators.md (su): Add instruction.
49034         (aadd): Ditto.
49035         (vaalu): Ditto.
49036         * config/riscv/vector.md (@pred_<sat_op><mode>): New pattern.
49037         (@pred_<sat_op><mode>_scalar): Ditto.
49038         (*pred_<sat_op><mode>_scalar): Ditto.
49039         (*pred_<sat_op><mode>_extended_scalar): Ditto.
49040         (@pred_narrow_clip<v_su><mode>): Ditto.
49041         (@pred_narrow_clip<v_su><mode>_scalar): Ditto.
49043 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
49045         * config/riscv/constraints.md (Wbr): Remove unused constraint.
49046         * config/riscv/predicates.md: Fix move operand predicate.
49047         * config/riscv/riscv-vector-builtins-bases.cc (class vnshift): New class.
49048         (class vncvt_x): Ditto.
49049         (class vmerge): Ditto.
49050         (class vmv_v): Ditto.
49051         (BASE): Ditto.
49052         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
49053         * config/riscv/riscv-vector-builtins-functions.def (vsra): Ditto.
49054         (vsrl): Ditto.
49055         (vnsrl): Ditto.
49056         (vnsra): Ditto.
49057         (vncvt_x): Ditto.
49058         (vmerge): Ditto.
49059         (vmv_v): Ditto.
49060         * config/riscv/riscv-vector-builtins-shapes.cc (struct narrow_alu_def): Ditto.
49061         (struct move_def): Ditto.
49062         (SHAPE): Ditto.
49063         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
49064         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WEXTI_OPS): New variable.
49065         (DEF_RVV_WEXTU_OPS): Ditto
49066         * config/riscv/riscv-vector-builtins.def (x_x_w): Fix type for suffix.
49067         (v_v): Ditto.
49068         (v_x): Ditto.
49069         (x_w): Ditto.
49070         (x): Ditto.
49071         * config/riscv/riscv.cc (riscv_print_operand): Refine ASM printting rule.
49072         * config/riscv/vector-iterators.md (nmsac):New iterator.
49073         (nmsub): New iterator.
49074         * config/riscv/vector.md (@pred_merge<mode>): New pattern.
49075         (@pred_merge<mode>_scalar): New pattern.
49076         (*pred_merge<mode>_scalar): New pattern.
49077         (*pred_merge<mode>_extended_scalar): New pattern.
49078         (@pred_narrow_<optab><mode>): New pattern.
49079         (@pred_narrow_<optab><mode>_scalar): New pattern.
49080         (@pred_trunc<mode>): New pattern.
49082 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
49084         * config/riscv/riscv-vector-builtins-bases.cc (class vmadc): New class.
49085         (class vmsbc): Ditto.
49086         (BASE): Define new class.
49087         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
49088         * config/riscv/riscv-vector-builtins-functions.def (vmadc): New define.
49089         (vmsbc): Ditto.
49090         * config/riscv/riscv-vector-builtins-shapes.cc (struct return_mask_def):
49091         New class.
49092         (SHAPE): Ditto.
49093         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
49094         * config/riscv/riscv-vector-builtins.cc
49095         (function_expander::use_exact_insn): Adjust for new support
49096         * config/riscv/riscv-vector-builtins.h
49097         (function_base::has_merge_operand_p): New function.
49098         * config/riscv/vector-iterators.md: New iterator.
49099         * config/riscv/vector.md (@pred_madc<mode>): New pattern.
49100         (@pred_msbc<mode>): Ditto.
49101         (@pred_madc<mode>_scalar): Ditto.
49102         (@pred_msbc<mode>_scalar): Ditto.
49103         (*pred_madc<mode>_scalar): Ditto.
49104         (*pred_madc<mode>_extended_scalar): Ditto.
49105         (*pred_msbc<mode>_scalar): Ditto.
49106         (*pred_msbc<mode>_extended_scalar): Ditto.
49107         (@pred_madc<mode>_overflow): Ditto.
49108         (@pred_msbc<mode>_overflow): Ditto.
49109         (@pred_madc<mode>_overflow_scalar): Ditto.
49110         (@pred_msbc<mode>_overflow_scalar): Ditto.
49111         (*pred_madc<mode>_overflow_scalar): Ditto.
49112         (*pred_madc<mode>_overflow_extended_scalar): Ditto.
49113         (*pred_msbc<mode>_overflow_scalar): Ditto.
49114         (*pred_msbc<mode>_overflow_extended_scalar): Ditto.
49116 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
49118         * config/riscv/riscv-protos.h (simm5_p): Add vadc/vsbc support.
49119         * config/riscv/riscv-v.cc (simm32_p): Ditto.
49120         * config/riscv/riscv-vector-builtins-bases.cc (class vadc): New class.
49121         (class vsbc): Ditto.
49122         (BASE): Ditto.
49123         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
49124         * config/riscv/riscv-vector-builtins-functions.def (vadc): Ditto.
49125         (vsbc): Ditto.
49126         * config/riscv/riscv-vector-builtins-shapes.cc
49127         (struct no_mask_policy_def): Ditto.
49128         (SHAPE): Ditto.
49129         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
49130         * config/riscv/riscv-vector-builtins.cc
49131         (rvv_arg_type_info::get_base_vector_type): Add vadc/vsbc support.
49132         (rvv_arg_type_info::get_tree_type): Ditto.
49133         (function_expander::use_exact_insn): Ditto.
49134         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
49135         (function_base::use_mask_predication_p): New function.
49136         * config/riscv/vector-iterators.md: New iterator.
49137         * config/riscv/vector.md (@pred_adc<mode>): New pattern.
49138         (@pred_sbc<mode>): Ditto.
49139         (@pred_adc<mode>_scalar): Ditto.
49140         (@pred_sbc<mode>_scalar): Ditto.
49141         (*pred_adc<mode>_scalar): Ditto.
49142         (*pred_adc<mode>_extended_scalar): Ditto.
49143         (*pred_sbc<mode>_scalar): Ditto.
49144         (*pred_sbc<mode>_extended_scalar): Ditto.
49146 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
49148         * config/riscv/vector.md: use "zero" reg.
49150 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
49152         * config/riscv/riscv-vector-builtins-bases.cc (class widen_binop): New
49153         class.
49154         (class vwmulsu): Ditto.
49155         (class vwcvt): Ditto.
49156         (BASE): Add integer widening support.
49157         * config/riscv/riscv-vector-builtins-bases.h: Ditto
49158         * config/riscv/riscv-vector-builtins-functions.def (vwadd): New class.
49159         (vwsub): New class.
49160         (vwmul): New class.
49161         (vwmulu): New class.
49162         (vwmulsu): New class.
49163         (vwaddu): New class.
49164         (vwsubu): New class.
49165         (vwcvt_x): New class.
49166         (vwcvtu_x): New class.
49167         * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): New
49168         class.
49169         (struct widen_alu_def): New class.
49170         (SHAPE): New class.
49171         * config/riscv/riscv-vector-builtins-shapes.h: New class.
49172         * config/riscv/riscv-vector-builtins.cc
49173         (rvv_arg_type_info::get_base_vector_type): Add integer widening support.
49174         (rvv_arg_type_info::get_tree_type): Ditto.
49175         * config/riscv/riscv-vector-builtins.def (x_x_v): Change into "x_v"
49176         (x_v): Ditto.
49177         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Add integer
49178         widening support.
49179         * config/riscv/riscv-vsetvl.cc (change_insn): Fix reg_equal use bug.
49180         * config/riscv/riscv.h (X0_REGNUM): New constant.
49181         * config/riscv/vector-iterators.md: New iterators.
49182         * config/riscv/vector.md
49183         (@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>): New
49184         pattern.
49185         (@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>_scalar):
49186         Ditto.
49187         (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>): Ditto.
49188         (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>_scalar):
49189         Ditto.
49190         (@pred_widen_mulsu<mode>): Ditto.
49191         (@pred_widen_mulsu<mode>_scalar): Ditto.
49192         (@pred_<optab><mode>): Ditto.
49194 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
49195             kito-cheng  <kito.cheng@sifive.com>
49197         * common/config/riscv/riscv-common.cc: Add flag for 'V' extension.
49198         * config/riscv/riscv-vector-builtins-bases.cc (class vmulh): New class.
49199         (BASE): Ditto.
49200         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
49201         * config/riscv/riscv-vector-builtins-functions.def (vmulh): Add vmulh
49202         API support.
49203         (vmulhu): Ditto.
49204         (vmulhsu): Ditto.
49205         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_FULL_V_I_OPS):
49206         New macro.
49207         (DEF_RVV_FULL_V_U_OPS): Ditto.
49208         (vint8mf8_t): Ditto.
49209         (vint8mf4_t): Ditto.
49210         (vint8mf2_t): Ditto.
49211         (vint8m1_t): Ditto.
49212         (vint8m2_t): Ditto.
49213         (vint8m4_t): Ditto.
49214         (vint8m8_t): Ditto.
49215         (vint16mf4_t): Ditto.
49216         (vint16mf2_t): Ditto.
49217         (vint16m1_t): Ditto.
49218         (vint16m2_t): Ditto.
49219         (vint16m4_t): Ditto.
49220         (vint16m8_t): Ditto.
49221         (vint32mf2_t): Ditto.
49222         (vint32m1_t): Ditto.
49223         (vint32m2_t): Ditto.
49224         (vint32m4_t): Ditto.
49225         (vint32m8_t): Ditto.
49226         (vint64m1_t): Ditto.
49227         (vint64m2_t): Ditto.
49228         (vint64m4_t): Ditto.
49229         (vint64m8_t): Ditto.
49230         (vuint8mf8_t): Ditto.
49231         (vuint8mf4_t): Ditto.
49232         (vuint8mf2_t): Ditto.
49233         (vuint8m1_t): Ditto.
49234         (vuint8m2_t): Ditto.
49235         (vuint8m4_t): Ditto.
49236         (vuint8m8_t): Ditto.
49237         (vuint16mf4_t): Ditto.
49238         (vuint16mf2_t): Ditto.
49239         (vuint16m1_t): Ditto.
49240         (vuint16m2_t): Ditto.
49241         (vuint16m4_t): Ditto.
49242         (vuint16m8_t): Ditto.
49243         (vuint32mf2_t): Ditto.
49244         (vuint32m1_t): Ditto.
49245         (vuint32m2_t): Ditto.
49246         (vuint32m4_t): Ditto.
49247         (vuint32m8_t): Ditto.
49248         (vuint64m1_t): Ditto.
49249         (vuint64m2_t): Ditto.
49250         (vuint64m4_t): Ditto.
49251         (vuint64m8_t): Ditto.
49252         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_FULL_V_I_OPS): Ditto.
49253         (DEF_RVV_FULL_V_U_OPS): Ditto.
49254         (check_required_extensions): Add vmulh support.
49255         (rvv_arg_type_info::get_tree_type): Ditto.
49256         * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_FULL_V): Ditto.
49257         (enum rvv_base_type): Ditto.
49258         * config/riscv/riscv.opt: Add 'V' extension flag.
49259         * config/riscv/vector-iterators.md (su): New iterator.
49260         * config/riscv/vector.md (@pred_mulh<v_su><mode>): New pattern.
49261         (@pred_mulh<v_su><mode>_scalar): Ditto.
49262         (*pred_mulh<v_su><mode>_scalar): Ditto.
49263         (*pred_mulh<v_su><mode>_extended_scalar): Ditto.
49265 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
49267         * config/riscv/iterators.md: Add sign_extend/zero_extend.
49268         * config/riscv/riscv-vector-builtins-bases.cc (class ext): New class.
49269         (BASE): Ditto.
49270         * config/riscv/riscv-vector-builtins-bases.h: Add vsext/vzext support.
49271         * config/riscv/riscv-vector-builtins-functions.def (vsext): New macro
49272         define.
49273         (vzext): Ditto.
49274         * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Adjust
49275         for vsext/vzext support.
49276         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WEXTI_OPS): New
49277         macro define.
49278         (DEF_RVV_QEXTI_OPS): Ditto.
49279         (DEF_RVV_OEXTI_OPS): Ditto.
49280         (DEF_RVV_WEXTU_OPS): Ditto.
49281         (DEF_RVV_QEXTU_OPS): Ditto.
49282         (DEF_RVV_OEXTU_OPS): Ditto.
49283         (vint16mf4_t): Ditto.
49284         (vint16mf2_t): Ditto.
49285         (vint16m1_t): Ditto.
49286         (vint16m2_t): Ditto.
49287         (vint16m4_t): Ditto.
49288         (vint16m8_t): Ditto.
49289         (vint32mf2_t): Ditto.
49290         (vint32m1_t): Ditto.
49291         (vint32m2_t): Ditto.
49292         (vint32m4_t): Ditto.
49293         (vint32m8_t): Ditto.
49294         (vint64m1_t): Ditto.
49295         (vint64m2_t): Ditto.
49296         (vint64m4_t): Ditto.
49297         (vint64m8_t): Ditto.
49298         (vuint16mf4_t): Ditto.
49299         (vuint16mf2_t): Ditto.
49300         (vuint16m1_t): Ditto.
49301         (vuint16m2_t): Ditto.
49302         (vuint16m4_t): Ditto.
49303         (vuint16m8_t): Ditto.
49304         (vuint32mf2_t): Ditto.
49305         (vuint32m1_t): Ditto.
49306         (vuint32m2_t): Ditto.
49307         (vuint32m4_t): Ditto.
49308         (vuint32m8_t): Ditto.
49309         (vuint64m1_t): Ditto.
49310         (vuint64m2_t): Ditto.
49311         (vuint64m4_t): Ditto.
49312         (vuint64m8_t): Ditto.
49313         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WEXTI_OPS): Ditto.
49314         (DEF_RVV_QEXTI_OPS): Ditto.
49315         (DEF_RVV_OEXTI_OPS): Ditto.
49316         (DEF_RVV_WEXTU_OPS): Ditto.
49317         (DEF_RVV_QEXTU_OPS): Ditto.
49318         (DEF_RVV_OEXTU_OPS): Ditto.
49319         (rvv_arg_type_info::get_base_vector_type): Add sign_exted/zero_extend
49320         support.
49321         (rvv_arg_type_info::get_tree_type): Ditto.
49322         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
49323         * config/riscv/vector-iterators.md (z): New attribute.
49324         * config/riscv/vector.md (@pred_<optab><mode>_vf2): New pattern.
49325         (@pred_<optab><mode>_vf4): Ditto.
49326         (@pred_<optab><mode>_vf8): Ditto.
49328 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
49330         * config/riscv/iterators.md: Add saturating Addition && Subtraction.
49331         * config/riscv/riscv-v.cc (has_vi_variant_p): Ditto.
49332         * config/riscv/riscv-vector-builtins-bases.cc (BASE): Ditto.
49333         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
49334         * config/riscv/riscv-vector-builtins-functions.def (vsadd): New def.
49335         (vssub): Ditto.
49336         (vsaddu): Ditto.
49337         (vssubu): Ditto.
49338         * config/riscv/vector-iterators.md (sll.vi): Adjust for Saturating
49339         support.
49340         (sll.vv): Ditto.
49341         (%3,%v4): Ditto.
49342         (%3,%4): Ditto.
49343         * config/riscv/vector.md (@pred_<optab><mode>): New pattern.
49344         (@pred_<optab><mode>_scalar): New pattern.
49345         (*pred_<optab><mode>_scalar): New pattern.
49346         (*pred_<optab><mode>_extended_scalar): New pattern.
49348 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
49350         * config/riscv/iterators.md: Add neg and not.
49351         * config/riscv/riscv-vector-builtins-bases.cc (class unop): New class.
49352         (BASE): Ditto.
49353         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
49354         * config/riscv/riscv-vector-builtins-functions.def (vadd): Rename binop
49355         into alu.
49356         (vsub): Ditto.
49357         (vand): Ditto.
49358         (vor): Ditto.
49359         (vxor): Ditto.
49360         (vsll): Ditto.
49361         (vsra): Ditto.
49362         (vsrl): Ditto.
49363         (vmin): Ditto.
49364         (vmax): Ditto.
49365         (vminu): Ditto.
49366         (vmaxu): Ditto.
49367         (vmul): Ditto.
49368         (vdiv): Ditto.
49369         (vrem): Ditto.
49370         (vdivu): Ditto.
49371         (vremu): Ditto.
49372         (vrsub): Ditto.
49373         (vneg): Ditto.
49374         (vnot): Ditto.
49375         * config/riscv/riscv-vector-builtins-shapes.cc (struct binop_def): Ditto.
49376         (struct alu_def): Ditto.
49377         (SHAPE): Ditto.
49378         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
49379         * config/riscv/riscv-vector-builtins.cc: Support unary C/C/++.
49380         * config/riscv/vector-iterators.md: New iterator.
49381         * config/riscv/vector.md (@pred_<optab><mode>): New pattern
49383 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
49385         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::compute_probabilities): Skip exit block.
49387 2023-02-11  Jakub Jelinek  <jakub@redhat.com>
49389         PR ipa/108605
49390         * ipa-cp.cc (ipa_agg_value_from_jfunc): Return NULL_TREE also if
49391         item->offset bit position is too large to be representable as
49392         unsigned int byte position.
49394 2023-02-11  Gerald Pfeifer  <gerald@pfeifer.com>
49396         * doc/extend.texi (Other Builtins): Adjust link to WG14 N965.
49398 2023-02-10  Vladimir N. Makarov  <vmakarov@redhat.com>
49400         * ira.cc (update_equiv_regs): Set up ira_reg_equiv for
49401         valid_combine only when ira_use_lra_p is true.
49403 2023-02-10  Vladimir N. Makarov  <vmakarov@redhat.com>
49405         * params.opt (ira-simple-lra-insn-threshold): Add new param.
49406         * ira.cc (ira): Use the param to switch on simple LRA.
49408 2023-02-10  Andrew MacLeod  <amacleod@redhat.com>
49410         PR tree-optimization/108687
49411         * gimple-range-cache.cc (ranger_cache::range_on_edge): Revert
49412         back to RFD_NONE mode for calculations.
49413         (ranger_cache::propagate_cache): Call the internal edge range API
49414         with RFD_READ_ONLY instead of changing the external routine.
49416 2023-02-10  Andrew MacLeod  <amacleod@redhat.com>
49418         PR tree-optimization/108520
49419         * gimple-range-infer.cc (check_assume_func): Invoke
49420         gimple_range_global directly instead using global_range_query.
49421         * value-query.cc (get_range_global): Add function context and
49422         avoid calling nonnull_arg_p if not cfun.
49423         (gimple_range_global): Add function context pointer.
49424         * value-query.h (imple_range_global): Add function context.
49426 2023-02-10  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
49428         * config/riscv/constraints.md (Wdm): Adjust constraint.
49429         (Wbr): New constraint.
49430         * config/riscv/predicates.md (reg_or_int_operand): New predicate.
49431         * config/riscv/riscv-protos.h (emit_pred_op): Remove function.
49432         (emit_vlmax_op): New function.
49433         (emit_nonvlmax_op): Ditto.
49434         (simm32_p): Ditto.
49435         (neg_simm5_p): Ditto.
49436         (has_vi_variant_p): Ditto.
49437         * config/riscv/riscv-v.cc (emit_pred_op): Adjust function.
49438         (emit_vlmax_op): New function.
49439         (emit_nonvlmax_op): Ditto.
49440         (expand_const_vector): Adjust function.
49441         (legitimize_move): Ditto.
49442         (simm32_p): New function.
49443         (simm5_p): Ditto.
49444         (neg_simm5_p): Ditto.
49445         (has_vi_variant_p): Ditto.
49446         * config/riscv/riscv-vector-builtins-bases.cc (class vrsub): New class.
49447         (BASE): Ditto.
49448         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
49449         * config/riscv/riscv-vector-builtins-functions.def (vmin): Remove
49450         unsigned cases.
49451         (vmax): Ditto.
49452         (vminu): Remove signed cases.
49453         (vmaxu): Ditto.
49454         (vdiv): Remove unsigned cases.
49455         (vrem): Ditto.
49456         (vdivu): Remove signed cases.
49457         (vremu): Ditto.
49458         (vadd): Adjust.
49459         (vsub): Ditto.
49460         (vrsub): New class.
49461         (vand): Adjust.
49462         (vor): Ditto.
49463         (vxor): Ditto.
49464         (vmul): Ditto.
49465         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_U_OPS): New macro.
49466         * config/riscv/riscv.h: change VL/VTYPE as fixed reg.
49467         * config/riscv/vector-iterators.md: New iterators.
49468         * config/riscv/vector.md (@pred_broadcast<mode>): Adjust pattern for vx
49469         support.
49470         (@pred_<optab><mode>_scalar): New pattern.
49471         (@pred_sub<mode>_reverse_scalar): Ditto.
49472         (*pred_<optab><mode>_scalar): Ditto.
49473         (*pred_<optab><mode>_extended_scalar): Ditto.
49474         (*pred_sub<mode>_reverse_scalar): Ditto.
49475         (*pred_sub<mode>_extended_reverse_scalar): Ditto.
49477 2023-02-10  Richard Biener  <rguenther@suse.de>
49479         PR tree-optimization/108724
49480         * tree-vect-stmts.cc (vectorizable_operation): Avoid
49481         using word_mode vectors when vector lowering will
49482         decompose them to elementwise operations.
49484 2023-02-10  Jakub Jelinek  <jakub@redhat.com>
49486         Revert:
49487         2023-02-09  Martin Liska  <mliska@suse.cz>
49489         PR target/100758
49490         * doc/extend.texi: Document that the function
49491         does not work correctly for old VIA processors.
49493 2023-02-10  Andrew Pinski  <apinski@marvell.com>
49494             Andrew Macleod   <amacleod@redhat.com>
49496         PR tree-optimization/108684
49497         * tree-ssa-dce.cc (simple_dce_from_worklist):
49498         Check all ssa names and not just non-vdef ones
49499         before accepting the inline-asm.
49500         Call unlink_stmt_vdef on the statement before
49501         removing it.
49503 2023-02-09  Vladimir N. Makarov  <vmakarov@redhat.com>
49505         * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
49506         * ira.cc (validate_equiv_mem): Check memref address variance.
49507         (no_equiv): Clear caller_save_p flag.
49508         (update_equiv_regs): Define caller save equivalence for
49509         valid_combine.
49510         (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
49511         * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
49512         call_save_p.  Use caller save equivalence depending on the arg.
49513         (split_reg): Adjust the call.
49515 2023-02-09  Jakub Jelinek  <jakub@redhat.com>
49517         PR target/100758
49518         * common/config/i386/cpuinfo.h (get_zhaoxin_cpu): Formatting fixes.
49519         (cpu_indicator_init): Call get_available_features for all CPUs with
49520         max_level >= 1, rather than just Intel, AMD or Zhaoxin.  Formatting
49521         fixes.
49523 2023-02-09  Jakub Jelinek  <jakub@redhat.com>
49525         PR tree-optimization/108688
49526         * match.pd (bit_field_ref [bit_insert]): Simplify BIT_FIELD_REF
49527         of BIT_INSERT_EXPR extracting exactly all inserted bits even
49528         when without mode precision.  Formatting fixes.
49530 2023-02-09  Andrew Pinski  <apinski@marvell.com>
49532         PR tree-optimization/108688
49533         * match.pd (bit_field_ref [bit_insert]): Avoid generating
49534         BIT_FIELD_REFs of non-mode-precision integral operands.
49536 2023-02-09  Martin Liska  <mliska@suse.cz>
49538         PR target/100758
49539         * doc/extend.texi: Document that the function
49540         does not work correctly for old VIA processors.
49542 2023-02-09  Andreas Schwab  <schwab@suse.de>
49544         * lto-wrapper.cc (merge_and_complain): Handle
49545         -funwind-tables and -fasynchronous-unwind-tables.
49546         (append_compiler_options): Likewise.
49548 2023-02-09  Richard Biener  <rguenther@suse.de>
49550         PR tree-optimization/26854
49551         * tree-into-ssa.cc (update_ssa): Turn blocks_to_update to tree
49552         view around insert_updated_phi_nodes_for.
49553         * tree-ssa-alias.cc (maybe_skip_until): Allocate visited bitmap
49554         in tree view.
49555         (walk_aliased_vdefs_1): Likewise.
49557 2023-02-08  Gerald Pfeifer  <gerald@pfeifer.com>
49559         * doc/include/gpl_v3.texi: Change fsf.org to www.fsf.org.
49561 2023-02-08  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
49563         PR target/108505
49564         * config.gcc (tm_mlib_file): Define new variable.
49566 2023-02-08  Jakub Jelinek  <jakub@redhat.com>
49568         PR tree-optimization/108692
49569         * tree-vect-patterns.cc (vect_widened_op_tree): If rhs_code is
49570         widened_code which is different from code, don't call
49571         vect_look_through_possible_promotion but instead just check op is
49572         SSA_NAME with integral type for which vect_is_simple_use is true
49573         and call set_op on this_unprom.
49575 2023-02-08  Andrea Corallo  <andrea.corallo@arm.com>
49577         * config/aarch64/aarch64-protos.h (aarch_ra_sign_key): Remove
49578         declaration.
49579         * config/aarch64/aarch64.cc (aarch_ra_sign_key): Remove
49580         definition.
49581         * config/aarch64/aarch64.opt (aarch64_ra_sign_key): Rename
49582         to 'aarch_ra_sign_key'.
49583         * config/arm/aarch-common.cc (aarch_ra_sign_key): Remove
49584         declaration.
49585         * config/arm/arm-protos.h (aarch_ra_sign_key): Likewise.
49586         * config/arm/arm.cc (enum aarch_key_type): Remove definition.
49587         * config/arm/arm.opt: Define.
49589 2023-02-08  Richard Sandiford  <richard.sandiford@arm.com>
49591         PR tree-optimization/108316
49592         * tree-vect-stmts.cc (get_load_store_type): When using
49593         internal functions for gather/scatter, make sure that the type
49594         of the offset argument is consistent with the offset vector type.
49596 2023-02-08  Vladimir N. Makarov  <vmakarov@redhat.com>
49598         Revert:
49599         2023-02-07  Vladimir N. Makarov  <vmakarov@redhat.com>
49601         * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
49602         * ira.cc (validate_equiv_mem): Check memref address variance.
49603         (update_equiv_regs): Define caller save equivalence for
49604         valid_combine.
49605         (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
49606         * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
49607         call_save_p.  Use caller save equivalence depending on the arg.
49608         (split_reg): Adjust the call.
49610 2023-02-08  Jakub Jelinek  <jakub@redhat.com>
49612         * tree.def (SAD_EXPR): Remove outdated comment about missing
49613         WIDEN_MINUS_EXPR.
49615 2023-02-07  Marek Polacek  <polacek@redhat.com>
49617         * doc/invoke.texi: Update -fchar8_t documentation.
49619 2023-02-07  Vladimir N. Makarov  <vmakarov@redhat.com>
49621         * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
49622         * ira.cc (validate_equiv_mem): Check memref address variance.
49623         (update_equiv_regs): Define caller save equivalence for
49624         valid_combine.
49625         (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
49626         * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
49627         call_save_p.  Use caller save equivalence depending on the arg.
49628         (split_reg): Adjust the call.
49630 2023-02-07  Richard Biener  <rguenther@suse.de>
49632         PR tree-optimization/26854
49633         * gimple-fold.cc (has_use_on_stmt): Look at stmt operands
49634         instead of immediate uses.
49636 2023-02-07  Jakub Jelinek  <jakub@redhat.com>
49638         PR tree-optimization/106923
49639         * ipa-split.cc (execute_split_functions): Don't split returns_twice
49640         functions.
49642 2023-02-07  Jakub Jelinek  <jakub@redhat.com>
49644         PR tree-optimization/106433
49645         * cgraph.cc (set_const_flag_1): Recurse on simd clones too.
49646         (cgraph_node::set_pure_flag): Call set_pure_flag_1 on simd clones too.
49648 2023-02-07  Jan Hubicka  <jh@suse.cz>
49650         * config/i386/x86-tune.def (X86_TUNE_AVX256_OPTIMAL): Turn off
49651         for znver4.
49653 2023-02-06  Andrew Stubbs  <ams@codesourcery.com>
49655         * config/gcn/mkoffload.cc (gcn_stack_size): New global variable.
49656         (process_asm): Create a constructor for GCN_STACK_SIZE.
49657         (main): Parse the -mstack-size option.
49659 2023-02-06  Alex Coplan  <alex.coplan@arm.com>
49661         PR target/104921
49662         * config/aarch64/aarch64-simd.md (aarch64_bfmlal<bt>_lane<q>v4sf):
49663         Use correct constraint for operand 3.
49665 2023-02-06  Martin Jambor  <mjambor@suse.cz>
49667         * ipa-sra.cc (adjust_parameter_descriptions): Fix a typo in a dump.
49669 2023-02-06  Xi Ruoyao  <xry111@xry111.site>
49671         * config/loongarch/loongarch.md (bytepick_w_ashift_amount):
49672         New define_int_iterator.
49673         (bytepick_d_ashift_amount): Likewise.
49674         (bytepick_imm): New define_int_attr.
49675         (bytepick_w_lshiftrt_amount): Likewise.
49676         (bytepick_d_lshiftrt_amount): Likewise.
49677         (bytepick_w_<bytepick_imm>): New define_insn template.
49678         (bytepick_w_<bytepick_imm>_extend): Likewise.
49679         (bytepick_d_<bytepick_imm>): Likewise.
49680         (bytepick_w): Remove unused define_insn.
49681         (bytepick_d): Likewise.
49682         (UNSPEC_BYTEPICK_W): Remove unused unspec.
49683         (UNSPEC_BYTEPICK_D): Likewise.
49684         * config/loongarch/predicates.md (const_0_to_3_operand):
49685         Remove unused define_predicate.
49686         (const_0_to_7_operand): Likewise.
49688 2023-02-06  Jakub Jelinek  <jakub@redhat.com>
49690         PR tree-optimization/108655
49691         * ubsan.cc (sanitize_unreachable_fn): For -funreachable-traps
49692         or -fsanitize=unreachable -fsanitize-trap=unreachable return
49693         BUILT_IN_UNREACHABLE_TRAP decl rather than BUILT_IN_TRAP.
49695 2023-02-05  Gerald Pfeifer  <gerald@pfeifer.com>
49697         * doc/install.texi (Specific): Remove PW32.
49699 2023-02-03  Jakub Jelinek  <jakub@redhat.com>
49701         PR tree-optimization/108647
49702         * range-op.cc (operator_equal::op1_range,
49703         operator_not_equal::op1_range): Don't test op2 bound
49704         equality if op2.undefined_p (), instead set_varying.
49705         (operator_lt::op1_range, operator_le::op1_range,
49706         operator_gt::op1_range, operator_ge::op1_range): Return false if
49707         op2.undefined_p ().
49708         (operator_lt::op2_range, operator_le::op2_range,
49709         operator_gt::op2_range, operator_ge::op2_range): Return false if
49710         op1.undefined_p ().
49712 2023-02-03  Aldy Hernandez  <aldyh@redhat.com>
49714         PR tree-optimization/108639
49715         * value-range.cc (irange::legacy_equal_p): Compare nonzero bits as
49716         widest_int.
49717         (irange::operator==): Same.
49719 2023-02-03  Aldy Hernandez  <aldyh@redhat.com>
49721         PR tree-optimization/108647
49722         * range-op-float.cc (foperator_lt::op1_range): Handle undefined ranges.
49723         (foperator_lt::op2_range): Same.
49724         (foperator_le::op1_range): Same.
49725         (foperator_le::op2_range): Same.
49726         (foperator_gt::op1_range): Same.
49727         (foperator_gt::op2_range): Same.
49728         (foperator_ge::op1_range): Same.
49729         (foperator_ge::op2_range): Same.
49730         (foperator_unordered_lt::op1_range): Same.
49731         (foperator_unordered_lt::op2_range): Same.
49732         (foperator_unordered_le::op1_range): Same.
49733         (foperator_unordered_le::op2_range): Same.
49734         (foperator_unordered_gt::op1_range): Same.
49735         (foperator_unordered_gt::op2_range): Same.
49736         (foperator_unordered_ge::op1_range): Same.
49737         (foperator_unordered_ge::op2_range): Same.
49739 2023-02-03  Andrew MacLeod  <amacleod@redhat.com>
49741         PR tree-optimization/107570
49742         * tree-vrp.cc (remove_and_update_globals): Reset SCEV.
49744 2023-02-03  Gaius Mulley  <gaiusmod2@gmail.com>
49746         * doc/gm2.texi (Internals): Remove from menu.
49747         (Using): Comment out ifnohtml conditional.
49748         (Documentation): Use gcc url.
49749         (License): Node simplified.
49750         (Copying): New node.  Include gpl_v3_without_node.
49751         (Contributing): Node simplified.
49752         (Internals): Commented out.
49753         (Libraries): Node simplified.
49754         (Indices): Ditto.
49755         (Contents): Ditto.
49756         (Functions): Ditto.
49758 2023-02-03  Christophe Lyon  <christophe.lyon@arm.com>
49760         * config/arm/mve.md (mve_vabavq_p_<supf><mode>): Add length
49761         attribute.
49762         (mve_vqshluq_m_n_s<mode>): Likewise.
49763         (mve_vshlq_m_<supf><mode>): Likewise.
49764         (mve_vsriq_m_n_<supf><mode>): Likewise.
49765         (mve_vsubq_m_<supf><mode>): Likewise.
49767 2023-02-03  Martin Jambor  <mjambor@suse.cz>
49769         PR ipa/108384
49770         * ipa-sra.cc (push_param_adjustments_for_index): Remove a size check
49771         when comparing to an IPA-CP value.
49772         (dump_list_of_param_indices): New function.
49773         (adjust_parameter_descriptions): Check for mismatching IPA-CP values.
49774         Dump removed candidates using dump_list_of_param_indices.
49775         * ipa-param-manipulation.cc
49776         (ipa_param_body_adjustments::modify_expression): Add assert checking
49777         sizes of a VIEW_CONVERT_EXPR will match.
49778         (ipa_param_body_adjustments::modify_assignment): Likewise.
49780 2023-02-03  Monk Chiang  <monk.chiang@sifive.com>
49782         * config/riscv/riscv.h: Remove VL_REGS, VTYPE_REGS class.
49783         * config/riscv/riscv.cc: Ditto.
49785 2023-02-03  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
49787         * config/riscv/vector-iterators.md (sll.vi): Fix constraint bug.
49788         (sll.vv): Ditto.
49789         (%3,%4): Ditto.
49790         (%3,%v4): Ditto.
49791         * config/riscv/vector.md: Ditto.
49793 2023-02-03  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
49795         * config/riscv/predicates.md (pmode_reg_or_uimm5_operand): New predicate.
49796         * config/riscv/riscv-vector-builtins-bases.cc: New class.
49797         * config/riscv/riscv-vector-builtins-functions.def (vsll): Ditto.
49798         (vsra): Ditto.
49799         (vsrl): Ditto.
49800         * config/riscv/riscv-vector-builtins.cc: Ditto.
49801         * config/riscv/vector.md (@pred_<optab><mode>_scalar): New pattern.
49803 2023-02-02  Iain Sandoe  <iain@sandoe.co.uk>
49805         * toplev.cc (toplev::main): Only print the version information header
49806         from toplevel main().
49808 2023-02-02  Paul-Antoine Arras  <pa@codesourcery.com>
49810         * config/gcn/gcn-valu.md (cond_<expander><mode>): Add
49811         cond_{ashl|ashr|lshr}
49813 2023-02-02  Richard Sandiford  <richard.sandiford@arm.com>
49815         PR rtl-optimization/108086
49816         * rtl-ssa/insns.h (insn_info): Make m_num_defs a full unsigned int.
49817         Adjust size-related commentary accordingly.
49819 2023-02-02  Richard Sandiford  <richard.sandiford@arm.com>
49821         PR rtl-optimization/108508
49822         * rtl-ssa/accesses.cc (function_info::split_clobber_group): When
49823         the splay tree search gives the first clobber in the second group,
49824         make sure that the root of the first clobber group is updated
49825         correctly.  Enter the new clobber group into the definition splay
49826         tree.
49828 2023-02-02  Jin Ma  <jinma@linux.alibaba.com>
49830         * common/config/riscv/riscv-common.cc (riscv_compute_multilib):
49831         Fix finding best match score.
49833 2023-02-02  Jakub Jelinek  <jakub@redhat.com>
49835         PR debug/106746
49836         PR rtl-optimization/108463
49837         PR target/108484
49838         * cselib.cc (cselib_current_insn): Move declaration earlier.
49839         (cselib_hasher::equal): For debug only locs, temporarily override
49840         cselib_current_insn to their l->setting_insn for the
49841         rtx_equal_for_cselib_1 call, so that unsuccessful comparisons don't
49842         promote some debug locs.
49843         * sched-deps.cc (sched_analyze_2) <case MEM>: For MEMs in DEBUG_INSNs
49844         when using cselib call cselib_lookup_from_insn on the address but
49845         don't substitute it.
49847 2023-02-02  Richard Biener  <rguenther@suse.de>
49849         PR middle-end/108625
49850         * genmatch.cc (expr::gen_transform): Also disallow resimplification
49851         from pushing to lseq with force_leaf.
49852         (dt_simplify::gen_1): Likewise.
49854 2023-02-02  Andrew Stubbs  <ams@codesourcery.com>
49856         * config/gcn/gcn-run.cc: Include libgomp-gcn.h.
49857         (struct kernargs): Replace the common content with kernargs_abi.
49858         (struct heap): Delete.
49859         (main): Read GCN_STACK_SIZE envvar.
49860         Allocate space for the device stacks.
49861         Write the new kernargs fields.
49862         * config/gcn/gcn.cc (gcn_option_override): Remove stack_size_opt.
49863         (default_requested_args): Remove PRIVATE_SEGMENT_BUFFER_ARG and
49864         PRIVATE_SEGMENT_WAVE_OFFSET_ARG.
49865         (gcn_addr_space_convert): Mask the QUEUE_PTR_ARG content.
49866         (gcn_expand_prologue): Move the TARGET_PACKED_WORK_ITEMS to the top.
49867         Set up the stacks from the values in the kernargs, not private.
49868         (gcn_expand_builtin_1): Match the stack configuration in the prologue.
49869         (gcn_hsa_declare_function_name): Turn off the private segment.
49870         (gcn_conditional_register_usage): Ensure QUEUE_PTR is fixed.
49871         * config/gcn/gcn.h (FIXED_REGISTERS): Fix the QUEUE_PTR register.
49872         * config/gcn/gcn.opt (mstack-size): Change the description.
49874 2023-02-02  Andre Vieira  <andre.simoesdiasvieira@arm.com>
49876         PR target/108443
49877         * config/arm/arm.h (VALID_MVE_PRED_MODE): Add V2QI.
49878         * config/arm/arm.cc (thumb2_legitimate_address_p): Use HImode for
49879         addressing MVE predicate modes.
49880         (mve_bool_vec_to_const): Change to represent correct MVE predicate
49881         format.
49882         (arm_hard_regno_mode_ok): Use VALID_MVE_PRED_MODE instead of checking
49883         modes.
49884         (arm_vector_mode_supported_p): Likewise.
49885         (arm_mode_to_pred_mode): Add V2QI.
49886         * config/arm/arm-builtins.cc (UNOP_PRED_UNONE_QUALIFIERS): New
49887         qualifier.
49888         (UNOP_PRED_PRED_QUALIFIERS): New qualifier
49889         (BINOP_PRED_UNONE_PRED_QUALIFIERS): New qualifier.
49890         (v2qi_UP): New macro.
49891         (v4bi_UP): New macro.
49892         (v8bi_UP): New macro.
49893         (v16bi_UP): New macro.
49894         (arm_expand_builtin_args): Make it able to expand the new predicate
49895         modes.
49896         * config/arm/arm-modes.def (V2QI): New mode.
49897         * config/arm/arm-simd-builtin-types.def (Pred1x16_t, Pred2x8_t
49898         Pred4x4_t): Remove unused predicate builtin types.
49899         * config/arm/arm_mve.h (__arm_vctp16q, __arm_vctp32q, __arm_vctp64q,
49900         __arm_vctp8q, __arm_vpnot, __arm_vctp8q_m, __arm_vctp64q_m,
49901         __arm_vctp32q_m, __arm_vctp16q_m): Use predicate modes.
49902         * config/arm/arm_mve_builtins.def (vctp16q, vctp32q, vctp64q, vctp8q,
49903         vpnot, vctp8q_m, vctp16q_m, vctp32q_m, vctp64q_m): Likewise.
49904         * config/arm/constraints.md (DB): Check for VALID_MVE_PRED_MODE instead
49905         of MODE_VECTOR_BOOL.
49906         * config/arm/iterators.md (MVE_7, MVE_7_HI): Add V2QI
49907         (MVE_VPRED): Likewise.
49908         (MVE_vpred): Add V2QI and map upper case predicate modes to lower case.
49909         (MVE_vctp): New mode attribute.
49910         (mode1): Remove.
49911         (VCTPQ): Remove.
49912         (VCTPQ_M): Remove.
49913         * config/arm/mve.md (mve_vctp<mode1>qhi): Rename this...
49914         (mve_vctp<MVE_vctp>q<MVE_vpred>): ... to this. And use new mode
49915         attributes.
49916         (mve_vpnothi): Rename this...
49917         (mve_vpnotv16bi): ... to this.
49918         (mve_vctp<mode1>q_mhi): Rename this...
49919         (mve_vctp<MVE_vctp>q_m<MVE_vpred>):... to this.
49920         (mve_vldrdq_gather_base_z_<supf>v2di,
49921         mve_vldrdq_gather_offset_z_<supf>v2di,
49922         mve_vldrdq_gather_shifted_offset_z_<supf>v2di,
49923         mve_vstrdq_scatter_base_p_<supf>v2di,
49924         mve_vstrdq_scatter_offset_p_<supf>v2di,
49925         mve_vstrdq_scatter_offset_p_<supf>v2di_insn,
49926         mve_vstrdq_scatter_shifted_offset_p_<supf>v2di,
49927         mve_vstrdq_scatter_shifted_offset_p_<supf>v2di_insn,
49928         mve_vstrdq_scatter_base_wb_p_<supf>v2di,
49929         mve_vldrdq_gather_base_wb_z_<supf>v2di,
49930         mve_vldrdq_gather_base_nowb_z_<supf>v2di,
49931         mve_vldrdq_gather_base_wb_z_<supf>v2di_insn):  Use V2QI insead of HI for
49932         predicates.
49933         * config/arm/unspecs.md (VCTP8Q, VCTP16Q, VCTP32Q, VCTP64Q): Replace
49934         these...
49935         (VCTP): ... with this.
49936         (VCTP8Q_M, VCTP16Q_M, VCTP32Q_M, VCTP64Q_M): Replace these...
49937         (VCTP_M): ... with this.
49938         * config/arm/vfp.md (*thumb2_movhi_vfp, *thumb2_movhi_fp16): Use
49939         VALID_MVE_PRED_MODE instead of checking for MODE_VECTOR_BOOL class.
49941 2023-02-02  Andre Vieira  <andre.simoesdiasvieira@arm.com>
49943         PR target/107674
49944         * config/arm/arm.cc (arm_hard_regno_mode_ok): Use new MACRO.
49945         (arm_modes_tieable_p): Make MVE predicate modes tieable.
49946         * config/arm/arm.h (VALID_MVE_PRED_MODE):  New define.
49947         * simplify-rtx.cc (simplify_context::simplify_subreg): Teach
49948         simplify_subreg to simplify subregs where the outermode is not scalar.
49950 2023-02-02  Andre Vieira  <andre.simoesdiasvieira@arm.com>
49952         PR target/107674
49953         * config/arm/arm-builtins.cc (arm_simd_builtin_type): Rewrite to use
49954         new qualifiers parameter and use unsigned short type for MVE predicate.
49955         (arm_init_builtin): Call arm_simd_builtin_type with qualifiers
49956         parameter.
49957         (arm_init_crypto_builtins): Likewise.
49959 2023-02-02  Jakub Jelinek  <jakub@redhat.com>
49961         PR ipa/107300
49962         * builtins.def (BUILT_IN_UNREACHABLE_TRAP): New builtin.
49963         * internal-fn.def (TRAP): Remove.
49964         * internal-fn.cc (expand_TRAP): Remove.
49965         * tree.cc (build_common_builtin_nodes): Define
49966         BUILT_IN_UNREACHABLE_TRAP if not yet defined.
49967         (builtin_decl_unreachable): Use BUILT_IN_UNREACHABLE_TRAP
49968         instead of BUILT_IN_TRAP.
49969         * gimple.cc (gimple_build_builtin_unreachable): Remove
49970         emitting internal function for BUILT_IN_TRAP.
49971         * asan.cc (maybe_instrument_call): Handle BUILT_IN_UNREACHABLE_TRAP.
49972         * cgraph.cc (cgraph_edge::verify_corresponds_to_fndecl): Handle
49973         BUILT_IN_UNREACHABLE_TRAP instead of BUILT_IN_TRAP.
49974         * ipa-devirt.cc (possible_polymorphic_call_target_p): Handle
49975         BUILT_IN_UNREACHABLE_TRAP.
49976         * builtins.cc (expand_builtin, is_inexpensive_builtin): Likewise.
49977         * tree-cfg.cc (verify_gimple_call,
49978         pass_warn_function_return::execute): Likewise.
49979         * attribs.cc (decl_attributes): Don't report exclusions on
49980         BUILT_IN_UNREACHABLE_TRAP either.
49982 2023-02-02  liuhongt  <hongtao.liu@intel.com>
49984         PR tree-optimization/108601
49985         * tree-vectorizer.h (vect_can_peel_nonlinear_iv_p): Removed.
49986         * tree-vect-loop.cc
49987         (vectorizable_nonlinear_induction): Remove
49988         vect_can_peel_nonlinear_iv_p.
49989         (vect_can_peel_nonlinear_iv_p): Don't peel
49990         nonlinear iv(mult or shift) for epilog when vf is not
49991         constant and moved the defination to ..
49992         * tree-vect-loop-manip.cc (vect_can_peel_nonlinear_iv_p):
49993         .. Here.
49995 2023-02-02  Jakub Jelinek  <jakub@redhat.com>
49997         PR middle-end/108435
49998         * tree-nested.cc (convert_nonlocal_omp_clauses)
49999         <case OMP_CLAUSE_LASTPRIVATE>: If info->new_local_var_chain and *seq
50000         is not a GIMPLE_BIND, wrap the sequence into a new GIMPLE_BIND
50001         before calling declare_vars.
50002         (convert_nonlocal_omp_clauses) <case OMP_CLAUSE_LINEAR>: Merge
50003         with the OMP_CLAUSE_LASTPRIVATE handling except for whether
50004         seq is initialized to &OMP_CLAUSE_LASTPRIVATE_GIMPLE_SEQ (clause)
50005         or &OMP_CLAUSE_LINEAR_GIMPLE_SEQ (clause).
50007 2023-02-01  Tamar Christina  <tamar.christina@arm.com>
50009         * common/config/aarch64/aarch64-common.cc
50010         (struct aarch64_option_extension): Add native_detect and document struct
50011         a bit more.
50012         (all_extensions): Set new field native_detect.
50013         * config/aarch64/aarch64.cc (struct aarch64_option_extension): Delete
50014         unused struct.
50016 2023-02-01  Martin Liska  <mliska@suse.cz>
50018         * ipa-devirt.cc (odr_types_equivalent_p): Respect *warned
50019         value if set.
50021 2023-02-01  Andrew MacLeod  <amacleod@redhat.com>
50023         PR tree-optimization/108356
50024         * gimple-range-cache.cc (ranger_cache::range_on_edge): Always
50025         do a search of the DOM tree for a range.
50027 2023-02-01  Martin Liska  <mliska@suse.cz>
50029         PR ipa/108509
50030         * cgraphunit.cc (walk_polymorphic_call_targets): Insert
50031         ony non-null values.
50032         * ipa.cc (walk_polymorphic_call_targets): Likewise.
50034 2023-02-01  Martin Liska  <mliska@suse.cz>
50036         PR driver/108572
50037         * gcc.cc (LINK_COMPRESS_DEBUG_SPEC): Report error only for
50038         -gz=zstd.
50040 2023-02-01  Jakub Jelinek  <jakub@redhat.com>
50042         PR debug/108573
50043         * ree.cc (combine_reaching_defs): Don't return false for paradoxical
50044         subregs in DEBUG_INSNs.
50046 2023-02-01  Richard Sandiford  <richard.sandiford@arm.com>
50048         * compare-elim.cc (find_flags_uses_in_insn): Guard use of SET_SRC.
50050 2023-02-01  Andreas Krebbel  <krebbel@linux.ibm.com>
50052         * config/s390/s390.cc (s390_restore_gpr_p): New function.
50053         (s390_preserve_gpr_arg_in_range_p): New function.
50054         (s390_preserve_gpr_arg_p): New function.
50055         (s390_preserve_fpr_arg_p): New function.
50056         (s390_register_info_stdarg_fpr): Rename to ...
50057         (s390_register_info_arg_fpr): ... this. Add -mpreserve-args handling.
50058         (s390_register_info_stdarg_gpr): Rename to ...
50059         (s390_register_info_arg_gpr): ... this. Add -mpreserve-args handling.
50060         (s390_register_info): Use the renamed functions above.
50061         (s390_optimize_register_info): Likewise.
50062         (save_fpr): Generate CFI for -mpreserve-args.
50063         (save_gprs): Generate CFI for -mpreserve-args. Drop return value.
50064         (s390_emit_prologue): Adjust to changed calling convention of save_gprs.
50065         (s390_optimize_prologue): Likewise.
50066         * config/s390/s390.opt: New option -mpreserve-args
50068 2023-02-01  Andreas Krebbel  <krebbel@linux.ibm.com>
50070         * config/s390/s390.cc (save_gprs): Use gen_frame_mem.
50071         (restore_gprs): Likewise.
50072         (s390_emit_stack_tie): Make the stack_tie to be dependent on the
50073         frame pointer if a frame-pointer is used.
50074         (s390_emit_prologue): Emit stack_tie when frame-pointer is needed.
50075         * config/s390/s390.md (stack_tie): Add a register operand and
50076         rename to ...
50077         (@stack_tie<mode>): ... this.
50079 2023-02-01  Andreas Krebbel  <krebbel@linux.ibm.com>
50081         * dwarf2cfi.cc (dwarf2out_frame_debug_cfa_restore): Add
50082         EMIT_CFI parameter.
50083         (dwarf2out_frame_debug): Add case for REG_CFA_NORESTORE.
50084         * reg-notes.def (REG_CFA_NOTE): New reg note definition.
50086 2023-02-01  Richard Biener  <rguenther@suse.de>
50088         PR middle-end/108500
50089         * dominance.cc (assign_dfs_numbers): Replace recursive DFS
50090         with tree traversal algorithm.
50092 2023-02-01  Jason Merrill  <jason@redhat.com>
50094         * doc/invoke.texi: Document -Wno-changes-meaning.
50096 2023-02-01  David Malcolm  <dmalcolm@redhat.com>
50098         * doc/invoke.texi (Static Analyzer Options): Add notes about
50099         limitations of -fanalyzer.
50101 2023-01-31  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
50103         * config/riscv/constraints.md (vj): New.
50104         (vk): Ditto
50105         * config/riscv/iterators.md: Add more opcode.
50106         * config/riscv/predicates.md (vector_arith_operand): New.
50107         (vector_neg_arith_operand): New.
50108         (vector_shift_operand): New.
50109         * config/riscv/riscv-vector-builtins-bases.cc (class binop): New.
50110         * config/riscv/riscv-vector-builtins-bases.h: (vadd): New.
50111         (vsub): Ditto.
50112         (vand): Ditto.
50113         (vor): Ditto.
50114         (vxor): Ditto.
50115         (vsll): Ditto.
50116         (vsra): Ditto.
50117         (vsrl): Ditto.
50118         (vmin): Ditto.
50119         (vmax): Ditto.
50120         (vminu): Ditto.
50121         (vmaxu): Ditto.
50122         (vmul): Ditto.
50123         (vdiv): Ditto.
50124         (vrem): Ditto.
50125         (vdivu): Ditto.
50126         (vremu): Ditto.
50127         * config/riscv/riscv-vector-builtins-functions.def (vadd): New.
50128         (vsub): Ditto.
50129         (vand): Ditto.
50130         (vor): Ditto.
50131         (vxor): Ditto.
50132         (vsll): Ditto.
50133         (vsra): Ditto.
50134         (vsrl): Ditto.
50135         (vmin): Ditto.
50136         (vmax): Ditto.
50137         (vminu): Ditto.
50138         (vmaxu): Ditto.
50139         (vmul): Ditto.
50140         (vdiv): Ditto.
50141         (vrem): Ditto.
50142         (vdivu): Ditto.
50143         (vremu): Ditto.
50144         * config/riscv/riscv-vector-builtins-shapes.cc (struct binop_def): New.
50145         * config/riscv/riscv-vector-builtins-shapes.h (binop): New.
50146         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_I_OPS): New.
50147         (DEF_RVV_U_OPS): New.
50148         (rvv_arg_type_info::get_base_vector_type): Handle
50149         RVV_BASE_shift_vector.
50150         (rvv_arg_type_info::get_tree_type): Ditto.
50151         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Add
50152         RVV_BASE_shift_vector.
50153         * config/riscv/riscv.cc (riscv_print_operand): Handle 'V'.
50154         * config/riscv/vector-iterators.md: Handle more opcode.
50155         * config/riscv/vector.md (@pred_<optab><mode>): New.
50157 2023-01-31  Philipp Tomsich  <philipp.tomsich@vrull.eu>
50159         PR target/108589
50160         * config/aarch64/aarch64.cc (aarch_macro_fusion_pair_p): Check
50161         REG_P on SET_DEST.
50163 2023-01-31  Richard Sandiford  <richard.sandiford@arm.com>
50165         PR tree-optimization/108608
50166         * tree-vect-loop.cc (vect_transform_reduction): Handle single
50167         def-use cycles that involve function calls rather than tree codes.
50169 2023-01-31  Andrew MacLeod  <amacleod@redhat.com>
50171         PR tree-optimization/108385
50172         * gimple-range-gori.cc (gori_compute::compute_operand_range):
50173         Allow VARYING computations to continue if there is a relation.
50174         * range-op.cc (pointer_plus_operator::op2_range): New.
50176 2023-01-31  Andrew MacLeod  <amacleod@redhat.com>
50178         PR tree-optimization/108359
50179         * range-op.cc (range_operator::wi_fold_in_parts_equiv): New.
50180         (range_operator::fold_range): If op1 is equivalent to op2 then
50181         invoke new fold_in_parts_equiv to operate on sub-components.
50182         * range-op.h (wi_fold_in_parts_equiv): New prototype.
50184 2023-01-31  Andrew MacLeod  <amacleod@redhat.com>
50186         * gimple-range-gori.cc (gori_compute::compute_operand_range): Do
50187         not abort calculations if there is a valid relation available.
50188         (gori_compute::refine_using_relation): Pass correct relation trio.
50189         (gori_compute::compute_operand1_range): Create trio and use it.
50190         (gori_compute::compute_operand2_range): Ditto.
50191         * range-op.cc (operator_plus::op1_range): Use correct trio member.
50192         (operator_minus::op1_range): Use correct trio member.
50193         * value-relation.cc (value_relation::create_trio): New.
50194         * value-relation.h (value_relation::create_trio): New prototype.
50196 2023-01-31  Jakub Jelinek  <jakub@redhat.com>
50198         PR target/108599
50199         * config/i386/i386-expand.cc
50200         (ix86_convert_const_wide_int_to_broadcast): Return nullptr if
50201         CONST_WIDE_INT_NUNITS (op) times HOST_BITS_PER_WIDE_INT isn't
50202         equal to bitsize of mode.
50204 2023-01-31  Jakub Jelinek  <jakub@redhat.com>
50206         PR rtl-optimization/108596
50207         * bb-reorder.cc (fix_up_fall_thru_edges): Handle the case where cur_bb
50208         ends with asm goto and has a crossing fallthrough edge to the same bb
50209         that contains at least one of its labels by restoring EDGE_CROSSING
50210         flag even on possible edge from cur_bb to new_bb successor.
50212 2023-01-31  Jakub Jelinek  <jakub@redhat.com>
50214         PR c++/105593
50215         * config/i386/avx512erintrin.h (_mm512_exp2a23_round_pd,
50216         _mm512_exp2a23_round_ps, _mm512_rcp28_round_pd, _mm512_rcp28_round_ps,
50217         _mm512_rsqrt28_round_pd, _mm512_rsqrt28_round_ps): Use
50218         _mm512_undefined_pd () or _mm512_undefined_ps () instead of using
50219         uninitialized automatic variable __W.
50221 2023-01-31  Gerald Pfeifer  <gerald@pfeifer.com>
50223         * doc/include/fdl.texi: Change fsf.org to www.fsf.org.
50225 2023-01-30  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
50227         * config/riscv/riscv-protos.h (get_vector_mode): New function.
50228         * config/riscv/riscv-v.cc (get_vector_mode): Ditto.
50229         * config/riscv/riscv-vector-builtins-bases.cc (enum lst_type): New enum.
50230         (class loadstore): Adjust for indexed loads/stores support.
50231         (BASE): Ditto.
50232         * config/riscv/riscv-vector-builtins-bases.h: New function declare.
50233         * config/riscv/riscv-vector-builtins-functions.def (vluxei8): Ditto.
50234         (vluxei16): Ditto.
50235         (vluxei32): Ditto.
50236         (vluxei64): Ditto.
50237         (vloxei8): Ditto.
50238         (vloxei16): Ditto.
50239         (vloxei32): Ditto.
50240         (vloxei64): Ditto.
50241         (vsuxei8): Ditto.
50242         (vsuxei16): Ditto.
50243         (vsuxei32): Ditto.
50244         (vsuxei64): Ditto.
50245         (vsoxei8): Ditto.
50246         (vsoxei16): Ditto.
50247         (vsoxei32): Ditto.
50248         (vsoxei64): Ditto.
50249         * config/riscv/riscv-vector-builtins-shapes.cc
50250         (struct indexed_loadstore_def): New class.
50251         (SHAPE): Ditto.
50252         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
50253         * config/riscv/riscv-vector-builtins.cc (required_extensions_p): Adjust
50254         for indexed loads/stores support.
50255         (check_required_extensions): Ditto.
50256         (rvv_arg_type_info::get_base_vector_type): New function.
50257         (rvv_arg_type_info::get_tree_type): Ditto.
50258         (function_builder::add_unique_function): Adjust for indexed loads/stores
50259         support.
50260         (function_expander::use_exact_insn): New function.
50261         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Adjust for
50262         indexed loads/stores support.
50263         (struct rvv_arg_type_info): Ditto.
50264         (function_expander::index_mode): New function.
50265         (function_base::apply_tail_policy_p): Ditto.
50266         (function_base::apply_mask_policy_p): Ditto.
50267         * config/riscv/vector-iterators.md (unspec): New unspec.
50268         * config/riscv/vector.md (unspec): Ditto.
50269         (@pred_indexed_<order>load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): New
50270         pattern.
50271         (@pred_indexed_<order>store<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Ditto.
50272         (@pred_indexed_<order>load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
50273         (@pred_indexed_<order>store<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
50274         (@pred_indexed_<order>load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
50275         (@pred_indexed_<order>store<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
50276         (@pred_indexed_<order>load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
50277         (@pred_indexed_<order>store<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
50278         (@pred_indexed_<order>load<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
50279         (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
50280         (@pred_indexed_<order>load<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
50281         (@pred_indexed_<order>store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
50282         (@pred_indexed_<order>load<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
50283         (@pred_indexed_<order>store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
50285 2023-01-30  Flavio Cruz  <flaviocruz@gmail.com>
50287         * config.gcc: Recognize x86_64-*-gnu* targets and include
50288         i386/gnu64.h.
50289         * config/i386/gnu64.h: Define configuration for new target
50290         including ld.so location.
50292 2023-01-30  Philipp Tomsich  <philipp.tomsich@vrull.eu>
50294         * config/aarch64/aarch64-cores.def (AARCH64_CORE): Update
50295         ampere1a to include SM4.
50297 2023-01-30  Andrew Pinski  <apinski@marvell.com>
50299         PR tree-optimization/108582
50300         * tree-ssa-phiopt.cc (match_simplify_replacement): Add check
50301         for middlebb to have no phi nodes.
50303 2023-01-30  Richard Biener  <rguenther@suse.de>
50305         PR tree-optimization/108574
50306         * tree-ssa-sccvn.cc (visit_phi): Instead of swapping
50307         sameval and def, ignore the equivalence if there's the
50308         danger of oscillating between two values.
50310 2023-01-30  Andreas Schwab  <schwab@suse.de>
50312         * common/config/riscv/riscv-common.cc
50313         (riscv_option_optimization_table)
50314         [TARGET_DEFAULT_ASYNC_UNWIND_TABLES]: Enable
50315         -fasynchronous-unwind-tables and -funwind-tables.
50316         * config.gcc (riscv*-*-linux*): Define
50317         TARGET_DEFAULT_ASYNC_UNWIND_TABLES.
50319 2023-01-30  YunQiang Su  <yunqiang.su@cipunited.com>
50321         * Makefile.in (CROSS_SYSTEM_HEADER_DIR): set according the
50322         value of includedir.
50324 2023-01-30  Richard Biener  <rguenther@suse.de>
50326         PR ipa/108511
50327         * cgraph.cc (possibly_call_in_translation_unit_p): Relax
50328         assert.
50330 2023-01-30  liuhongt  <hongtao.liu@intel.com>
50332         * config/i386/i386.opt: Change AVX512FP16 to AVX512-FP16.
50333         * doc/invoke.texi: Ditto.
50335 2023-01-29  Jan Hubicka  <hubicka@ucw.cz>
50337         * ipa-utils.cc: Include calls.h, cfgloop.h and cfganal.h
50338         (stmt_may_terminate_function_p): If assuming return or EH
50339         volatile asm is safe.
50340         (find_always_executed_bbs): Fix handling of terminating BBS and
50341         infinite loops; add debug output.
50342         * tree-ssa-alias.cc (stmt_kills_ref_p): Fix debug output
50344 2023-01-28  Philipp Tomsich  <philipp.tomsich@vrull.eu>
50346         * config/aarch64/aarch64.cc (aarch64_uxt_size): fix an
50347         off-by-one in checking the permissible shift-amount.
50349 2023-01-28  Gerald Pfeifer  <gerald@pfeifer.com>
50351         * doc/extend.texi (Named Address Spaces): Update link to the
50352         AVR-Libc manual.
50354 2023-01-28  Gerald Pfeifer  <gerald@pfeifer.com>
50356         * doc/standards.texi (Standards): Fix markup.
50358 2023-01-28  Gerald Pfeifer  <gerald@pfeifer.com>
50360         * doc/standards.texi (Standards): Update link to Objective-C book.
50362 2023-01-28  Gerald Pfeifer  <gerald@pfeifer.com>
50364         * doc/invoke.texi (Instrumentation Options): Update reference to
50365         AddressSanitizer.
50367 2023-01-28  Gerald Pfeifer  <gerald@pfeifer.com>
50369         * doc/standards.texi: Update Go1 link.
50371 2023-01-28  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
50373         * config/riscv/predicates.md (pmode_reg_or_0_operand): New predicate.
50374         * config/riscv/riscv-vector-builtins-bases.cc (class loadstore):
50375         Support vlse/vsse.
50376         (BASE): Ditto.
50377         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
50378         * config/riscv/riscv-vector-builtins-functions.def (vlse): New class.
50379         (vsse): New class.
50380         * config/riscv/riscv-vector-builtins.cc
50381         (function_expander::use_contiguous_load_insn): Support vlse/vsse.
50382         * config/riscv/vector.md (@pred_strided_load<mode>): New md pattern.
50383         (@pred_strided_store<mode>): Ditto.
50385 2023-01-28  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
50387         * config/riscv/vector.md (tail_policy_op_idx): Remove.
50388         (mask_policy_op_idx): Remove.
50389         (avl_type_op_idx): Remove.
50391 2023-01-27  Richard Sandiford  <richard.sandiford@arm.com>
50393         PR tree-optimization/96373
50394         * tree.h (sign_mask_for): Declare.
50395         * tree.cc (sign_mask_for): New function.
50396         (signed_or_unsigned_type_for): For vector types, try to use the
50397         related_int_vector_mode.
50398         * genmatch.cc (commutative_op): Handle conditional internal functions.
50399         * match.pd: Fold an IFN_COND_MUL+copysign into an IFN_COND_XOR+and.
50401 2023-01-27  Richard Sandiford  <richard.sandiford@arm.com>
50403         * tree-vectorizer.cc (vector_costs::compare_inside_loop_cost):
50404         Use the likely minimum VF when bounding the denominators to
50405         the estimated number of iterations.
50407 2023-01-27  Richard Biener  <rguenther@suse.de>
50409         PR target/55522
50410         * doc/invoke.texi (-shared): Clarify effect on -ffast-math
50411         and -Ofast FP environment side-effects.
50413 2023-01-27  Richard Biener  <rguenther@suse.de>
50415         PR target/55522
50416         * config/mips/gnu-user.h (GNU_USER_TARGET_MATHFILE_SPEC):
50417         Don't add crtfastmath.o for -shared.
50419 2023-01-27  Richard Biener  <rguenther@suse.de>
50421         PR target/55522
50422         * config/ia64/linux.h (ENDFILE_SPEC): Don't add crtfastmath.o
50423         for -shared.
50425 2023-01-27  Richard Biener  <rguenther@suse.de>
50427         PR target/55522
50428         * config/alpha/linux.h (ENDFILE_SPEC): Don't add
50429         crtfastmath.o for -shared.
50431 2023-01-27  Andrew MacLeod  <amacleod@redhat.com>
50433         PR tree-optimization/108306
50434         * range-op.cc (operator_lshift::fold_range): Return [0, 0] not
50435         varying for shifts that are always out of void range.
50436         (operator_rshift::fold_range): Return [0, 0] not
50437         varying for shifts that are always out of void range.
50439 2023-01-27  Andrew MacLeod  <amacleod@redhat.com>
50441         PR tree-optimization/108447
50442         * gimple-range-fold.cc (old_using_range::relation_fold_and_or):
50443         Do not attempt to fold HONOR_NAN types.
50445 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
50447         * config/riscv/riscv-vector-builtins-shapes.cc (struct loadstore_def):
50448         Remove _m suffix for "vop_m" C++ overloaded API name.
50450 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
50452         * config/riscv/riscv-vector-builtins-bases.cc (BASE): Add vlm/vsm support.
50453         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
50454         * config/riscv/riscv-vector-builtins-functions.def (vlm): New define.
50455         (vsm): Ditto.
50456         * config/riscv/riscv-vector-builtins-shapes.cc (struct loadstore_def): Add vlm/vsm support.
50457         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_B_OPS): Ditto.
50458         (vbool64_t): Ditto.
50459         (vbool32_t): Ditto.
50460         (vbool16_t): Ditto.
50461         (vbool8_t): Ditto.
50462         (vbool4_t): Ditto.
50463         (vbool2_t): Ditto.
50464         (vbool1_t): Ditto.
50465         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_B_OPS): Ditto.
50466         (rvv_arg_type_info::get_tree_type): Ditto.
50467         (function_expander::use_contiguous_load_insn): Ditto.
50468         * config/riscv/vector.md (@pred_store<mode>): Ditto.
50470 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
50472         * config/riscv/riscv-vsetvl.cc (vsetvl_insn_p): Add condition to avoid ICE.
50473         (vsetvl_discard_result_insn_p): New function.
50474         (reg_killed_by_bb_p): rename to find_reg_killed_by.
50475         (find_reg_killed_by): New name.
50476         (get_vl): allow it to be called by more functions.
50477         (has_vsetvl_killed_avl_p): Add condition.
50478         (get_avl): allow it to be called by more functions.
50479         (insn_should_be_added_p): New function.
50480         (get_all_nonphi_defs): Refine function.
50481         (get_all_sets): Ditto.
50482         (get_same_bb_set): New function.
50483         (any_insn_in_bb_p): Ditto.
50484         (any_set_in_bb_p): Ditto.
50485         (get_vl_vtype_info): Add VLMAX forward optimization.
50486         (source_equal_p): Fix issues.
50487         (extract_single_source): Refine.
50488         (avl_info::multiple_source_equal_p): New function.
50489         (avl_info::operator==): Adjust for final version.
50490         (vl_vtype_info::operator==): Ditto.
50491         (vl_vtype_info::same_avl_p): Ditto.
50492         (vector_insn_info::parse_insn): Ditto.
50493         (vector_insn_info::available_p): New function.
50494         (vector_insn_info::merge): Adjust for final version.
50495         (vector_insn_info::dump): Add hard_empty.
50496         (pass_vsetvl::hard_empty_block_p): New function.
50497         (pass_vsetvl::backward_demand_fusion): Adjust for final version.
50498         (pass_vsetvl::forward_demand_fusion): Ditto.
50499         (pass_vsetvl::demand_fusion): Ditto.
50500         (pass_vsetvl::cleanup_illegal_dirty_blocks): New function.
50501         (pass_vsetvl::compute_local_properties): Adjust for final version.
50502         (pass_vsetvl::can_refine_vsetvl_p): Ditto.
50503         (pass_vsetvl::refine_vsetvls): Ditto.
50504         (pass_vsetvl::commit_vsetvls): Ditto.
50505         (pass_vsetvl::propagate_avl): New function.
50506         (pass_vsetvl::lazy_vsetvl): Adjust for new version.
50507         * config/riscv/riscv-vsetvl.h (enum def_type): New enum.
50509 2023-01-27  Jakub Jelinek  <jakub@redhat.com>
50511         PR other/108560
50512         * doc/extend.texi: Fix up return type of __builtin_va_arg_pack_len
50513         from size_t to int.
50515 2023-01-27  Jakub Jelinek  <jakub@redhat.com>
50517         PR ipa/106061
50518         * cgraph.cc (cgraph_edge::verify_corresponds_to_fndecl): Allow
50519         redirection of calls to __builtin_trap in addition to redirection
50520         to __builtin_unreachable.
50522 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
50524         * config/riscv/riscv-vsetvl.cc (before_p): Fix bug.
50526 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
50528         * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): Refine function args.
50529         (emit_vsetvl_insn): Ditto.
50531 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
50533         * config/riscv/vector.md: Fix constraints.
50535 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
50537         * config/riscv/vector-iterators.md: Add TARGET_MIN_VLEN > 32 predicates.
50539 2023-01-27  Patrick Palka  <ppalka@redhat.com>
50540             Jakub Jelinek  <jakub@redhat.com>
50542         * tree-core.h (tree_code_type, tree_code_length): For
50543         C++17 and later, add inline keyword, otherwise don't define
50544         the arrays, but declare extern arrays.
50545         * tree.cc (tree_code_type, tree_code_length): Define these
50546         arrays for C++14 and older.
50548 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
50550         * config/riscv/riscv-vsetvl.h: Change it into public.
50552 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
50554         * config/riscv/riscv-passes.def (INSERT_PASS_BEFORE): Reorder VSETVL
50555         pass.
50557 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
50559         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::execute): Always call split_all_insns.
50561 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
50563         * config/riscv/vector.md: Fix incorrect attributes.
50565 2023-01-27  Richard Biener  <rguenther@suse.de>
50567         PR target/55522
50568         * config/loongarch/gnu-user.h (GNU_USER_TARGET_MATHFILE_SPEC):
50569         Don't add crtfastmath.o for -shared.
50571 2023-01-27  Alexandre Oliva  <oliva@gnu.org>
50573         * doc/options.texi (option, RejectNegative): Mention that
50574         -g-started options are also implicitly negatable.
50576 2023-01-26  Kito Cheng  <kito.cheng@sifive.com>
50578         * config/riscv/riscv-vector-builtins.cc (register_builtin_types):
50579         Use get_typenode_from_name to get fixed-width integer type
50580         nodes.
50581         * config/riscv/riscv-vector-builtins.def: Update define with
50582         fixed-width integer type nodes.
50584 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
50586         * config/riscv/riscv-vsetvl.cc (same_bb_and_before_p): Remove it.
50587         (real_insn_and_same_bb_p): New function.
50588         (same_bb_and_after_or_equal_p): Remove it.
50589         (before_p): New function.
50590         (reg_killed_by_bb_p): Ditto.
50591         (has_vsetvl_killed_avl_p): Ditto.
50592         (get_vl): Move location so that we can call it.
50593         (anticipatable_occurrence_p): Fix issue of AVL=REG support.
50594         (available_occurrence_p): Ditto.
50595         (dominate_probability_p): Remove it.
50596         (can_backward_propagate_p): Remove it.
50597         (get_all_nonphi_defs): New function.
50598         (get_all_predecessors): Ditto.
50599         (any_insn_in_bb_p): Ditto.
50600         (insert_vsetvl): Adjust AVL REG.
50601         (source_equal_p): New function.
50602         (extract_single_source): Ditto.
50603         (avl_info::single_source_equal_p): Ditto.
50604         (avl_info::operator==): Adjust for AVL=REG.
50605         (vl_vtype_info::same_avl_p): Ditto.
50606         (vector_insn_info::set_demand_info): Remove it.
50607         (vector_insn_info::compatible_p): Adjust for AVL=REG.
50608         (vector_insn_info::compatible_avl_p): New function.
50609         (vector_insn_info::merge): Adjust AVL=REG.
50610         (vector_insn_info::dump): Ditto.
50611         (pass_vsetvl::merge_successors): Remove it.
50612         (enum fusion_type): New enum.
50613         (pass_vsetvl::get_backward_fusion_type): New function.
50614         (pass_vsetvl::backward_demand_fusion): Adjust for AVL=REG.
50615         (pass_vsetvl::forward_demand_fusion): Ditto.
50616         (pass_vsetvl::demand_fusion): Ditto.
50617         (pass_vsetvl::prune_expressions): Ditto.
50618         (pass_vsetvl::compute_local_properties): Ditto.
50619         (pass_vsetvl::cleanup_vsetvls): Ditto.
50620         (pass_vsetvl::commit_vsetvls): Ditto.
50621         (pass_vsetvl::init): Ditto.
50622         * config/riscv/riscv-vsetvl.h (enum fusion_type): New enum.
50623         (enum merge_type): New enum.
50625 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
50627         * config/riscv/riscv-vsetvl.cc
50628         (vector_infos_manager::vector_infos_manager): Add probability.
50629         (vector_infos_manager::dump): Ditto.
50630         (pass_vsetvl::compute_probabilities): Ditto.
50631         * config/riscv/riscv-vsetvl.h (struct vector_block_info): Ditto.
50633 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
50635         * config/riscv/riscv-vsetvl.cc (vector_insn_info::operator==): Remove dirty_pat.
50636         (vector_insn_info::merge): Ditto.
50637         (vector_insn_info::dump): Ditto.
50638         (pass_vsetvl::merge_successors): Ditto.
50639         (pass_vsetvl::backward_demand_fusion): Ditto.
50640         (pass_vsetvl::forward_demand_fusion): Ditto.
50641         (pass_vsetvl::commit_vsetvls): Ditto.
50642         * config/riscv/riscv-vsetvl.h: Ditto.
50644 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
50646         * config/riscv/riscv-vsetvl.cc (add_label_notes): Rename insn to
50647         rinsn.
50649 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
50651         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::backward_demand_fusion): Refine codes.
50653 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
50655         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::forward_demand_fusion):
50656         Add pre-check for redundant flow.
50658 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
50660         * config/riscv/riscv-vsetvl.cc (vector_infos_manager::create_bitmap_vectors): New function.
50661         (vector_infos_manager::free_bitmap_vectors): Ditto.
50662         (pass_vsetvl::pre_vsetvl): Adjust codes.
50663         * config/riscv/riscv-vsetvl.h: New function declaration.
50665 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
50667         * config/riscv/riscv-vsetvl.cc (can_backward_propagate_p): Fix for null iter_bb.
50668         (vector_insn_info::set_demand_info): New function.
50669         (pass_vsetvl::emit_local_forward_vsetvls): Adjust for refinement of Phase 3.
50670         (pass_vsetvl::merge_successors): Ditto.
50671         (pass_vsetvl::compute_global_backward_infos): Ditto.
50672         (pass_vsetvl::backward_demand_fusion): Ditto.
50673         (pass_vsetvl::forward_demand_fusion): Ditto.
50674         (pass_vsetvl::demand_fusion): New function.
50675         (pass_vsetvl::lazy_vsetvl): Adjust for refinement of phase 3.
50676         * config/riscv/riscv-vsetvl.h: New function declaration.
50678 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
50680         * config/riscv/riscv-vsetvl.cc (vector_insn_info::operator>=): Fix available condition.
50682 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
50684         * config/riscv/riscv-vsetvl.cc (change_vsetvl_insn): New function.
50685         (pass_vsetvl::compute_global_backward_infos): Simplify codes.
50687 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
50689         * config/riscv/riscv-vsetvl.cc (loop_basic_block_p): Adjust function.
50690         (backward_propagate_worthwhile_p): Fix non-worthwhile.
50692 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
50694         * config/riscv/riscv-vsetvl.cc (change_insn): Adjust in_group in validate_change.
50696 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
50698         * config/riscv/riscv-vsetvl.cc (vector_infos_manager::all_same_avl_p): New function.
50699         (pass_vsetvl::can_refine_vsetvl_p): Add AVL check.
50700         (pass_vsetvl::commit_vsetvls): Ditto.
50701         * config/riscv/riscv-vsetvl.h: New function declaration.
50703 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
50705         * config/riscv/vector.md:
50707 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
50709         * config/riscv/riscv-vector-builtins-bases.cc (class loadstore): use
50710         pred_store for vse.
50711         * config/riscv/riscv-vector-builtins.cc
50712         (function_expander::add_mem_operand): Refine function.
50713         (function_expander::use_contiguous_load_insn): Adjust new
50714         implementation.
50715         (function_expander::use_contiguous_store_insn): Ditto.
50716         * config/riscv/riscv-vector-builtins.h: Refine function.
50717         * config/riscv/vector.md (@pred_store<mode>): New pattern.
50719 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
50721         * config/riscv/riscv-vector-builtins.cc: Change to scalar pointer.
50723 2023-01-26  Marek Polacek  <polacek@redhat.com>
50725         PR middle-end/108543
50726         * opts.cc (parse_sanitizer_options): Don't always clear SANITIZE_ADDRESS
50727         if it was previously set.
50729 2023-01-26  Jakub Jelinek  <jakub@redhat.com>
50731         PR tree-optimization/108540
50732         * range-op-float.cc (foperator_equal::fold_range): If both op1 and op2
50733         are singletons, use range_true even if op1 != op2
50734         when one range is [-0.0, -0.0] and another [0.0, 0.0].  Similarly,
50735         even if intersection of the ranges is empty and one has
50736         zero low bound and another zero high bound, use range_true_and_false
50737         rather than range_false.
50738         (foperator_not_equal::fold_range): If both op1 and op2
50739         are singletons, use range_false even if op1 != op2
50740         when one range is [-0.0, -0.0] and another [0.0, 0.0].  Similarly,
50741         even if intersection of the ranges is empty and one has
50742         zero low bound and another zero high bound, use range_true_and_false
50743         rather than range_true.
50745 2023-01-26  Jakub Jelinek  <jakub@redhat.com>
50747         * value-relation.cc (kind_string): Add const.
50748         (rr_negate_table, rr_swap_table, rr_intersect_table,
50749         rr_union_table, rr_transitive_table): Add static const, change
50750         element type from relation_kind to unsigned char.
50751         (relation_negate, relation_swap, relation_intersect, relation_union,
50752         relation_transitive): Cast rr_*_table element to relation_kind.
50753         (relation_to_code): Add static const.
50754         (relation_tests): Assert VREL_LAST is smaller than UCHAR_MAX.
50756 2023-01-26  Richard Biener  <rguenther@suse.de>
50758         PR tree-optimization/108547
50759         * gimple-predicate-analysis.cc (value_sat_pred_p):
50760         Use widest_int.
50762 2023-01-26  Siddhesh Poyarekar  <siddhesh@gotplt.org>
50764         PR tree-optimization/108522
50765         * tree-object-size.cc (compute_object_offset): Make EXPR
50766         argument non-const.  Call component_ref_field_offset.
50768 2023-01-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
50770         * config/aarch64/aarch64-option-extensions.def (cssc): Specify
50771         FEATURE_STRING field.
50773 2023-01-26  Gerald Pfeifer  <gerald@pfeifer.com>
50775         * doc/sourcebuild.texi: Refer to projects as GCC and GDB.
50777 2023-01-25  Iain Sandoe  <iain@sandoe.co.uk>
50779         PR modula2/102343
50780         PR modula2/108182
50781         * gcc.cc: Provide default specs for Modula-2 so that when the
50782         language is not built-in better diagnostics are emitted for
50783         attempts to use .mod or .m2i file extensions.
50785 2023-01-25  Andrea Corallo  <andrea.corallo@arm.com>
50787         * config/arm/mve.md (mve_vqnegq_s<mode>): Fix spacing.
50789 2023-01-25  Andrea Corallo  <andrea.corallo@arm.com>
50791         * config/arm/mve.md (mve_vqabsq_s<mode>): Fix spacing.
50793 2023-01-25  Andrea Corallo  <andrea.corallo@arm.com>
50795         * config/arm/mve.md (mve_vnegq_f<mode>, mve_vnegq_s<mode>):
50796         Fix spacing.
50798 2023-01-25  Andrea Corallo  <andrea.corallo@arm.com>
50800         * config/arm/mve.md (@mve_vclzq_s<mode>): Fix spacing.
50802 2023-01-25  Andrea Corallo  <andrea.corallo@arm.com>
50804         * config/arm/mve.md (mve_vclsq_s<mode>): Fix spacing.
50806 2023-01-25  Richard Biener  <rguenther@suse.de>
50808         PR tree-optimization/108523
50809         * tree-ssa-sccvn.cc (visit_phi): Avoid using the exclusive
50810         backedge value for the result when using predication to
50811         prove equivalence.
50813 2023-01-25  Richard Biener  <rguenther@suse.de>
50815         * doc/lto.texi (Command line options): Reword and update reference
50816         to removed lto_read_all_file_options.
50818 2023-01-25  Richard Sandiford  <richard.sandiford@arm.com>
50820         * config/aarch64/aarch64.md (umax<mode>3): Separate the CNT and CSSC
50821         tests.
50823 2023-01-25  Gerald Pfeifer  <gerald@pfeifer.com>
50825         * doc/contrib.texi: Add Jose E. Marchesi.
50827 2023-01-25  Jakub Jelinek  <jakub@redhat.com>
50829         PR tree-optimization/108498
50830         * gimple-ssa-store-merging.cc (class store_operand_info):
50831         End coment with full stop rather than comma.
50832         (split_group): Likewise.
50833         (merged_store_group::apply_stores): Clear string_concatenation if
50834         start or end aren't on a byte boundary.
50836 2023-01-25  Siddhesh Poyarekar  <siddhesh@gotplt.org>
50837             Jakub Jelinek  <jakub@redhat.com>
50839         PR tree-optimization/108522
50840         * tree-object-size.cc (compute_object_offset): Use
50841         TREE_OPERAND(ref, 2) for COMPONENT_REF when available.
50843 2023-01-24  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
50845         * config/xtensa/xtensa.md:
50846         Fix exit from loops detecting references before overwriting in the
50847         split pattern.
50849 2023-01-24  Vladimir N. Makarov  <vmakarov@redhat.com>
50851         * lra-constraints.cc (get_hard_regno): Remove final_p arg.  Always
50852         do elimination but only for hard register.
50853         (operands_match_p, uses_hard_regs_p, process_alt_operands): Adjust
50854         calls of get_hard_regno.
50856 2023-01-24  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
50858         * config/s390/s390-d.cc (s390_d_target_versions): Fix detection
50859         of CPU version.
50861 2023-01-24  Andre Vieira  <andre.simoesdiasvieira@arm.com>
50863         PR target/108177
50864         * config/arm/mve.md (mve_vstrbq_p_<supf><mode>, mve_vstrhq_p_fv8hf,
50865         mve_vstrhq_p_<supf><mode>, mve_vstrwq_p_<supf>v4si): Add memory operand
50866         as input operand.
50868 2023-01-24  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
50870         * config.gcc(csky-*-linux*): Define CSKY_ENABLE_MULTILIB
50871         and only include 'csky/t-csky-linux' when enable multilib.
50872         * config/csky/csky-linux-elf.h(SYSROOT_SUFFIX_SPEC): Don't
50873         define it when disable multilib.
50875 2023-01-24  Richard Biener  <rguenther@suse.de>
50877         PR tree-optimization/108500
50878         * dominance.h (calculate_dominance_info): Add parameter
50879         to indicate fast-query compute, defaulted to true.
50880         * dominance.cc (calculate_dominance_info): Honor
50881         fast-query compute parameter.
50882         * tree-cfgcleanup.cc (cleanup_tree_cfg_noloop): Do
50883         not compute the dominator fast-query DFS numbers.
50885 2023-01-24  Eric Biggers  <ebiggers@google.com>
50887         PR bootstrap/90543
50888         * optc-save-gen.awk: Fix copy-and-paste error.
50890 2023-01-24  Jakub Jelinek  <jakub@redhat.com>
50892         PR c++/108474
50893         * cgraphbuild.cc: Include gimplify.h.
50894         (record_reference): Replace VAR_DECLs with DECL_HAS_VALUE_EXPR_P with
50895         their corresponding DECL_VALUE_EXPR expressions after unsharing.
50897 2023-01-24  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
50899         PR target/108505
50900         * config.gcc (tm_file): Move the variable out of loop.
50902 2023-01-24  Lulu Cheng  <chenglulu@loongson.cn>
50903             Yang Yujie  <yangyujie@loongson.cn>
50905         PR target/107731
50906         * config/loongarch/loongarch.cc (loongarch_classify_address):
50907         Add precessint for CONST_INT.
50908         (loongarch_print_operand_reloc): Operand modifier 'c' is supported.
50909         (loongarch_print_operand): Increase the processing of '%c'.
50910         * doc/extend.texi: Adds documents for LoongArch operand modifiers.
50911         And port the public operand modifiers information to this document.
50913 2023-01-23  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
50915         * doc/invoke.texi (-mbranch-protection): Update documentation.
50917 2023-01-23  Richard Biener  <rguenther@suse.de>
50919         PR target/55522
50920         * config/sparc/freebsd.h (ENDFILE_SPEC): Don't add crtfastmath.o
50921         for -shared.
50922         * config/sparc/linux.h (ENDFILE_SPEC): Likewise.
50923         * config/sparc/linux64.h (ENDFILE_SPEC): Likewise.
50924         * config/sparc/sp-elf.h (ENDFILE_SPEC): Likewise.
50925         * config/sparc/sp64-elf.h (ENDFILE_SPEC): Likewise.
50927 2023-01-23  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
50929         * config/arm/aout.h (ra_auth_code): Add entry in enum.
50930         * config/arm/arm.cc (emit_multi_reg_push): Add RA_AUTH_CODE register
50931         to dwarf frame expression.
50932         (arm_emit_multi_reg_pop): Restore RA_AUTH_CODE register.
50933         (arm_expand_prologue): Update frame related information and reg notes
50934         for pac/pacbit insn.
50935         (arm_regno_class): Check for pac pseudo reigster.
50936         (arm_dbx_register_number): Assign ra_auth_code register number in dwarf.
50937         (arm_init_machine_status): Set pacspval_needed to zero.
50938         (arm_debugger_regno): Check for PAC register.
50939         (arm_unwind_emit_sequence): Print .save directive with ra_auth_code
50940         register.
50941         (arm_unwind_emit_set): Add entry for IP_REGNUM in switch case.
50942         (arm_unwind_emit): Update REG_CFA_REGISTER case._
50943         * config/arm/arm.h (FIRST_PSEUDO_REGISTER): Modify.
50944         (DWARF_PAC_REGNUM): Define.
50945         (IS_PAC_REGNUM): Likewise.
50946         (enum reg_class): Add PAC_REG entry.
50947         (machine_function): Add pacbti_needed state to structure.
50948         * config/arm/arm.md (RA_AUTH_CODE): Define.
50950 2023-01-23  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
50952         * config.gcc ($tm_file): Update variable.
50953         * config/arm/arm-mlib.h: Create new header file.
50954         * config/arm/t-rmprofile (MULTI_ARCH_DIRS_RM): Rename mbranch-protection
50955         multilib arch directory.
50956         (MULTILIB_REUSE): Add multilib reuse rules.
50957         (MULTILIB_MATCHES): Add multilib match rules.
50959 2023-01-23  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
50961         * config/arm/arm-cpus.in (cortex-m85): Define new CPU.
50962         * config/arm/arm-tables.opt: Regenerate.
50963         * config/arm/arm-tune.md: Likewise.
50964         * doc/invoke.texi (Arm Options): Document -mcpu=cortex-m85.
50965         * (-mfix-cmse-cve-2021-35465): Likewise.
50967 2023-01-23  Richard Biener  <rguenther@suse.de>
50969         PR tree-optimization/108482
50970         * tree-vect-generic.cc (expand_vector_operations): Fold remaining
50971         .LOOP_DIST_ALIAS calls.
50973 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
50975         * config.gcc (arm*-*-*): Add 'aarch-bti-insert.o' object.
50976         * config/arm/arm-protos.h: Update.
50977         * config/arm/aarch-common-protos.h: Declare
50978         'aarch_bti_arch_check'.
50979         * config/arm/arm.cc (aarch_bti_enabled) Update.
50980         (aarch_bti_j_insn_p, aarch_pac_insn_p, aarch_gen_bti_c)
50981         (aarch_gen_bti_j, aarch_bti_arch_check): New functions.
50982         * config/arm/arm.md (bti_nop): New insn.
50983         * config/arm/t-arm (PASSES_EXTRA): Add 'arm-passes.def'.
50984         (aarch-bti-insert.o): New target.
50985         * config/arm/unspecs.md (VUNSPEC_BTI_NOP): New unspec.
50986         * config/arm/aarch-bti-insert.cc (rest_of_insert_bti): Verify arch
50987         compatibility.
50988         (gate): Make use of 'aarch_bti_arch_check'.
50989         * config/arm/arm-passes.def: New file.
50990         * config/aarch64/aarch64.cc (aarch_bti_arch_check): New function.
50992 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
50994         * config.gcc (aarch64*-*-*): Rename 'aarch64-bti-insert.o' into
50995         'aarch-bti-insert.o'.
50996         * config/aarch64/aarch64-protos.h: Remove 'aarch64_bti_enabled'
50997         proto.
50998         * config/aarch64/aarch64.cc (aarch_bti_enabled): Rename.
50999         (aarch_bti_j_insn_p, aarch_pac_insn_p): New functions.
51000         (aarch64_output_mi_thunk)
51001         (aarch64_print_patchable_function_entry)
51002         (aarch64_file_end_indicate_exec_stack): Update renamed function
51003         calls to renamed functions.
51004         * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Likewise.
51005         * config/aarch64/t-aarch64 (aarch-bti-insert.o): Update
51006         target.
51007         * config/aarch64/aarch64-bti-insert.cc: Delete.
51008         * config/arm/aarch-bti-insert.cc: New file including and
51009         generalizing code from aarch64-bti-insert.cc.
51010         * config/arm/aarch-common-protos.h: Update.
51012 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
51014         * config/arm/arm.h (arm_arch8m_main): Declare it.
51015         * config/arm/arm-protos.h (arm_current_function_pac_enabled_p):
51016         Declare it.
51017         * config/arm/arm.cc (arm_arch8m_main): Define it.
51018         (arm_option_reconfigure_globals): Set arm_arch8m_main.
51019         (arm_compute_frame_layout, arm_expand_prologue)
51020         (thumb2_expand_return, arm_expand_epilogue)
51021         (arm_conditional_register_usage): Update for pac codegen.
51022         (arm_current_function_pac_enabled_p): New function.
51023         (aarch_bti_enabled) New function.
51024         (use_return_insn): Return zero when pac is enabled.
51025         * config/arm/arm.md (pac_ip_lr_sp, pacbti_ip_lr_sp, aut_ip_lr_sp):
51026         Add new patterns.
51027         * config/arm/unspecs.md (UNSPEC_PAC_NOP)
51028         (VUNSPEC_PACBTI_NOP, VUNSPEC_AUT_NOP): Add unspecs.
51030 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
51032         * config/arm/t-rmprofile: Add multilib rules for march +pacbti and
51033         mbranch-protection.
51035 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
51036             Tejas Belagod   <tbelagod@arm.com>
51038         * config/arm/arm.cc (arm_file_start): Emit EABI attributes for
51039         Tag_PAC_extension, Tag_BTI_extension, TAG_BTI_use, TAG_PACRET_use.
51041 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
51042             Tejas Belagod   <tbelagod@arm.com>
51043             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
51045         * ginclude/unwind-arm-common.h (_Unwind_VRS_RegClass): Introduce
51046         new pseudo register class _UVRSC_PAC.
51048 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
51049             Tejas Belagod   <tbelagod@arm.com>
51051         * config/arm/arm-c.cc (arm_cpu_builtins): Define
51052         __ARM_FEATURE_BTI_DEFAULT, __ARM_FEATURE_PAC_DEFAULT,
51053         __ARM_FEATURE_PAUTH and __ARM_FEATURE_BTI.
51055 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
51056             Tejas Belagod   <tbelagod@arm.com>
51058         * doc/sourcebuild.texi: Document arm_pacbti_hw.
51060 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
51061             Tejas Belagod   <tbelagod@arm.com>
51062             Richard Earnshaw  <Richard.Earnshaw@arm.com>
51064         * config/arm/arm.cc (arm_configure_build_target): Parse and validate
51065         -mbranch-protection option and initialize appropriate data structures.
51066         * config/arm/arm.opt (-mbranch-protection): New option.
51067         * doc/invoke.texi (Arm Options): Document it.
51069 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
51070             Tejas Belagod   <tbelagod@arm.com>
51072         * config/arm/arm.h (TARGET_HAVE_PACBTI): New macro.
51073         * config/arm/arm-cpus.in (pacbti): New feature.
51074         * doc/invoke.texi (Arm Options): Document it.
51076 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
51077             Tejas Belagod   <tbelagod@arm.com>
51079         * common/config/aarch64/aarch64-common.cc: Include aarch-common.h.
51080         (all_architectures): Fix comment.
51081         (aarch64_parse_extension): Rename return type, enum value names.
51082         * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Rename
51083         factored out aarch_ra_sign_scope and aarch_ra_sign_key variables.
51084         Also rename corresponding enum values.
51085         * config/aarch64/aarch64-opts.h (aarch64_function_type): Factor
51086         out aarch64_function_type and move it to common code as
51087         aarch_function_type in aarch-common.h.
51088         * config/aarch64/aarch64-protos.h: Include common types header,
51089         move out types aarch64_parse_opt_result and aarch64_key_type to
51090         aarch-common.h
51091         * config/aarch64/aarch64.cc: Move mbranch-protection parsing types
51092         and functions out into aarch-common.h and aarch-common.cc.  Fix up
51093         all the name changes resulting from the move.
51094         * config/aarch64/aarch64.md: Fix up aarch64_ra_sign_key type name change
51095         and enum value.
51096         * config/aarch64/aarch64.opt: Include aarch-common.h to import
51097         type move.  Fix up name changes from factoring out common code and
51098         data.
51099         * config/arm/aarch-common-protos.h: Export factored out routines to both
51100         backends.
51101         * config/arm/aarch-common.cc: Include newly factored out types.
51102         Move all mbranch-protection code and data structures from
51103         aarch64.cc.
51104         * config/arm/aarch-common.h: New header that declares types shared
51105         between aarch32 and aarch64 backends.
51106         * config/arm/arm-protos.h: Declare types and variables that are
51107         made common to aarch64 and aarch32 backends - aarch_ra_sign_key,
51108         aarch_ra_sign_scope and aarch_enable_bti.
51109         * config/arm/arm.opt (config/arm/aarch-common.h): Include header.
51110         (aarch_ra_sign_scope, aarch_enable_bti): Declare variable.
51111         * config/arm/arm.cc: Add missing includes.
51113 2023-01-23  Tobias Burnus  <tobias@codesourcery.com>
51115         * doc/install.texi (amdgcn, nvptx): Require newlib 4.3.0.
51117 2023-01-23  Richard Biener  <rguenther@suse.de>
51119         PR tree-optimization/108449
51120         * cgraphunit.cc (check_global_declaration): Do not turn
51121         undefined statics into externs.
51123 2023-01-22  Dimitar Dimitrov  <dimitar@dinux.eu>
51125         * config/pru/pru.h (CLZ_DEFINED_VALUE_AT_ZERO): Fix value for QI
51126         and HI input modes.
51127         * config/pru/pru.md (clz): Fix generated code for QI and HI
51128         input modes.
51130 2023-01-22  Cupertino Miranda  <cupertino.miranda@oracle.com>
51132         * config/v850/v850.cc (v850_select_section): Put const volatile
51133         objects into read-only sections.
51135 2023-01-20  Tejas Belagod  <tejas.belagod@arm.com>
51137         * config/aarch64/arm_neon.h (vmull_p64, vmull_high_p64, vaeseq_u8,
51138         vaesdq_u8, vaesmcq_u8, vaesimcq_u8): Gate under "nothing+aes".
51139         (vsha1*_u32, vsha256*_u32): Gate under "nothing+sha2".
51141 2023-01-20  Jakub Jelinek  <jakub@redhat.com>
51143         PR tree-optimization/108457
51144         * tree-ssa-loop-niter.cc (build_cltz_expr): Use
51145         SCALAR_INT_TYPE_MODE (utype) directly as C[LT]Z_DEFINED_VALUE_AT_ZERO
51146         argument instead of a temporary.  Formatting fixes.
51148 2023-01-19  Jakub Jelinek  <jakub@redhat.com>
51150         PR tree-optimization/108447
51151         * value-relation.cc (rr_union_table): Fix VREL_UNDEFINED row order.
51152         (relation_tests): Add self-tests for relation_{intersect,union}
51153         commutativity.
51154         * selftest.h (relation_tests): Declare.
51155         * function-tests.cc (test_ranges): Call it.
51157 2023-01-19  H.J. Lu  <hjl.tools@gmail.com>
51159         PR target/108436
51160         * config/i386/i386-expand.cc (ix86_expand_builtin): Check
51161         invalid third argument to __builtin_ia32_prefetch.
51163 2023-01-19  Jakub Jelinek  <jakub@redhat.com>
51165         PR middle-end/108459
51166         * omp-expand.cc (expand_omp_for_init_counts): Use fold_build1 rather
51167         than fold_unary for NEGATE_EXPR.
51169 2023-01-19  Christophe Lyon  <christophe.lyon@arm.com>
51171         PR target/108411
51172         * config/aarch64/aarch64.cc (aarch64_layout_arg): Improve
51173         comment. Move assert about alignment a bit later.
51175 2023-01-19  Jakub Jelinek  <jakub@redhat.com>
51177         PR tree-optimization/108440
51178         * tree-ssa-forwprop.cc: Include gimple-range.h.
51179         (simplify_rotate): For the forms with T2 wider than T and shift counts of
51180         Y and B - Y add & (B - 1) masking for the rotate count if Y could be equal
51181         to B.  For the forms with T2 wider than T and shift counts of
51182         Y and (-Y) & (B - 1), don't punt if range could be [B, B2], but only if
51183         range doesn't guarantee Y < B or Y = N * B.  If range doesn't guarantee
51184         Y < B, also add & (B - 1) masking for the rotate count.  Use lazily created
51185         pass specific ranger instead of get_global_range_query.
51186         (pass_forwprop::execute): Disable that ranger at the end of pass if it has
51187         been created.
51189 2023-01-19  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
51191         * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set<mode>): Use
51192         exact_log2 (INTVAL (operands[2])) >= 0 as condition for gating
51193         the pattern.
51194         (aarch64_simd_vec_copy_lane<mode>): Likewise.
51195         (aarch64_simd_vec_copy_lane_<vswap_width_name><mode>): Likewise.
51197 2023-01-19  Alexandre Oliva  <oliva@adacore.com>
51199         PR debug/106746
51200         * sched-deps.cc (sched_analyze_2): Skip cselib address lookup
51201         within debug insns.
51203 2023-01-18  Martin Jambor  <mjambor@suse.cz>
51205         PR ipa/107944
51206         * cgraph.cc (cgraph_node::remove): Check whether nodes up the
51207         lcone_of chain also do not need the body.
51209 2023-01-18  Richard Biener  <rguenther@suse.de>
51211         Revert:
51212         2022-12-16  Richard Biener  <rguenther@suse.de>
51214         PR middle-end/108086
51215         * tree-inline.cc (remap_ssa_name): Do not unshare the
51216         result from the decl_map.
51218 2023-01-18  Murray Steele  <murray.steele@arm.com>
51220         PR target/108442
51221         * config/arm/arm_mve.h (__arm_vst1q_p_u8): Use prefixed intrinsic
51222         function.
51223         (__arm_vst1q_p_s8): Likewise.
51224         (__arm_vld1q_z_u8): Likewise.
51225         (__arm_vld1q_z_s8): Likewise.
51226         (__arm_vst1q_p_u16): Likewise.
51227         (__arm_vst1q_p_s16): Likewise.
51228         (__arm_vld1q_z_u16): Likewise.
51229         (__arm_vld1q_z_s16): Likewise.
51230         (__arm_vst1q_p_u32): Likewise.
51231         (__arm_vst1q_p_s32): Likewise.
51232         (__arm_vld1q_z_u32): Likewise.
51233         (__arm_vld1q_z_s32): Likewise.
51234         (__arm_vld1q_z_f16): Likewise.
51235         (__arm_vst1q_p_f16): Likewise.
51236         (__arm_vld1q_z_f32): Likewise.
51237         (__arm_vst1q_p_f32): Likewise.
51239 2023-01-18  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
51241         * config/xtensa/xtensa.md (xorsi3_internal):
51242         Rename from the original of "xorsi3".
51243         (xorsi3): New expansion pattern that emits addition rather than
51244         bitwise-XOR when the second source is a constant of -2147483648
51245         if TARGET_DENSITY.
51247 2023-01-18  Kewen Lin  <linkw@linux.ibm.com>
51248             Andrew Pinski  <apinski@marvell.com>
51250         PR target/108396
51251         * config/rs6000/rs6000-overload.def (VEC_VSUBCUQ): Fix typo
51252         vec_vsubcuqP with vec_vsubcuq.
51254 2023-01-18  Kewen Lin  <linkw@linux.ibm.com>
51256         PR target/108348
51257         * config/rs6000/rs6000.cc (rs6000_opaque_type_invalid_use_p): Add the
51258         support for invalid uses of MMA opaque type in function arguments.
51260 2023-01-18  liuhongt  <hongtao.liu@intel.com>
51262         PR target/55522
51263         * config/i386/cygwin.h (ENDFILE_SPEC): Link crtfastmath.o
51264         whenever -mdaz-ftz is specified. Don't link crtfastmath.o when
51265         -share or -mno-daz-ftz is specified.
51266         * config/i386/darwin.h (ENDFILE_SPEC): Ditto.
51267         * config/i386/mingw32.h (ENDFILE_SPEC): Ditto.
51269 2023-01-17  Jose E. Marchesi  <jose.marchesi@oracle.com>
51271         * config/bpf/bpf.cc (bpf_option_override): Disable
51272         -fstack-protector.
51274 2023-01-17  Jakub Jelinek  <jakub@redhat.com>
51276         PR tree-optimization/106523
51277         * tree-ssa-forwprop.cc (simplify_rotate): For the
51278         patterns with (-Y) & (B - 1) in one operand's shift
51279         count and Y in another, if T2 has wider precision than T,
51280         punt if Y could have a value in [B, B2 - 1] range.
51282 2023-01-16  H.J. Lu  <hjl.tools@gmail.com>
51284         PR target/105980
51285         * config/i386/i386.cc (x86_output_mi_thunk): Disable
51286         -mforce-indirect-call for PIC in 32-bit mode.
51288 2023-01-16  Jan Hubicka  <hubicka@ucw.cz>
51290         PR ipa/106077
51291         * ipa-modref.cc (modref_access_analysis::analyze): Use
51292         find_always_executed_bbs.
51293         * ipa-sra.cc (process_scan_results): Likewise.
51294         * ipa-utils.cc (stmt_may_terminate_function_p): New function.
51295         (find_always_executed_bbs): New function.
51296         * ipa-utils.h (stmt_may_terminate_function_p): Declare.
51297         (find_always_executed_bbs): Declare.
51299 2023-01-16  Jan Hubicka  <jh@suse.cz>
51301         * config/i386/i386.cc (ix86_vectorize_builtin_scatter): Guard scatter
51302         by TARGET_USE_SCATTER.
51303         * config/i386/i386.h (TARGET_USE_SCATTER_2PARTS,
51304         TARGET_USE_SCATTER_4PARTS, TARGET_USE_SCATTER): New macros.
51305         * config/i386/x86-tune.def (TARGET_USE_SCATTER_2PARTS,
51306         TARGET_USE_SCATTER_4PARTS, TARGET_USE_SCATTER): New tunes.
51307         (X86_TUNE_AVOID_256FMA_CHAINS, X86_TUNE_AVOID_512FMA_CHAINS): Disable
51308         for znver4.  (X86_TUNE_USE_GATHER): Disable for zen4.
51310 2023-01-16  Richard Biener  <rguenther@suse.de>
51312         PR target/55522
51313         * config/sol2.h (ENDFILE_SPEC): Don't add crtfastmath.o for -shared.
51315 2023-01-16  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
51317         PR target/96795
51318         PR target/107515
51319         * config/arm/arm_mve.h (__ARM_mve_coerce2): Split types.
51320         (__ARM_mve_coerce3): Likewise.
51322 2023-01-16  Andrew Carlotti  <andrew.carlotti@arm.com>
51324         * tree-ssa-loop-niter.cc (build_popcount_expr): Add IFN support.
51326 2023-01-16  Andrew Carlotti  <andrew.carlotti@arm.com>
51328         * tree-ssa-loop-niter.cc (number_of_iterations_cltz): New.
51329         (number_of_iterations_bitcount): Add call to the above.
51330         (number_of_iterations_exit_assumptions): Add EQ_EXPR case for
51331         c[lt]z idiom recognition.
51333 2023-01-16  Andrew Carlotti  <andrew.carlotti@arm.com>
51335         * doc/sourcebuild.texi: Add missing target attributes.
51337 2023-01-16  Andrew Carlotti  <andrew.carlotti@arm.com>
51339         PR tree-optimization/94793
51340         * tree-scalar-evolution.cc (expression_expensive_p): Add checks
51341         for c[lt]z optabs.
51342         * tree-ssa-loop-niter.cc (build_cltz_expr): New.
51343         (number_of_iterations_cltz_complement): New.
51344         (number_of_iterations_bitcount): Add call to the above.
51346 2023-01-16  Jonathan Wakely  <jwakely@redhat.com>
51348         * doc/extend.texi (Common Function Attributes): Fix grammar.
51350 2023-01-16  Jakub Jelinek  <jakub@redhat.com>
51352         PR other/108413
51353         * config/riscv/riscv-vsetvl.h: Add space in between Copyright and (C).
51354         * config/riscv/riscv-vsetvl.cc: Likewise.
51356 2023-01-16  Jakub Jelinek  <jakub@redhat.com>
51358         PR c++/105593
51359         * config/i386/xmmintrin.h (_mm_undefined_ps): Temporarily
51360         disable -Winit-self using pragma GCC diagnostic ignored.
51361         * config/i386/emmintrin.h (_mm_undefined_pd, _mm_undefined_si128):
51362         Likewise.
51363         * config/i386/avxintrin.h (_mm256_undefined_pd, _mm256_undefined_ps,
51364         _mm256_undefined_si256): Likewise.
51365         * config/i386/avx512fintrin.h (_mm512_undefined_pd,
51366         _mm512_undefined_ps, _mm512_undefined_epi32): Likewise.
51367         * config/i386/avx512fp16intrin.h (_mm_undefined_ph,
51368         _mm256_undefined_ph, _mm512_undefined_ph): Likewise.
51370 2023-01-16  Kewen Lin  <linkw@linux.ibm.com>
51372         PR target/108272
51373         * config/rs6000/rs6000.cc (rs6000_opaque_type_invalid_use_p): Add the
51374         support for invalid uses in inline asm, factor out the checking and
51375         erroring to lambda function check_and_error_invalid_use.
51377 2023-01-15  Aldy Hernandez  <aldyh@redhat.com>
51379         PR tree-optimization/107608
51380         * range-op-float.cc (range_operator_float::fold_range): Avoid
51381         folding into INF when flag_trapping_math.
51382         * value-range.h (frange::known_isinf): Return false for possible NANs.
51384 2023-01-15  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
51386         * config.gcc (csky-*-*): Support --with-float=softfp.
51388 2023-01-14  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
51390         * config/xtensa/xtensa-protos.h (order_regs_for_local_alloc):
51391         Rename to xtensa_adjust_reg_alloc_order.
51392         * config/xtensa/xtensa.cc (xtensa_adjust_reg_alloc_order):
51393         Ditto.  And also remove code to reorder register numbers for
51394         leaf functions, rename the tables, and adjust the allocation
51395         order for the call0 ABI to use register A0 more.
51396         (xtensa_leaf_regs): Remove.
51397         * config/xtensa/xtensa.h (REG_ALLOC_ORDER): Cosmetics.
51398         (order_regs_for_local_alloc): Rename as the above.
51399         (LEAF_REGISTERS, LEAF_REG_REMAP, leaf_function): Remove.
51401 2023-01-14  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
51403         * config/aarch64/aarch64-sve.md (aarch64_vec_duplicate_vq<mode>_le):
51404         Change to define_insn_and_split to fold ldr+dup to ld1rq.
51405         * config/aarch64/predicates.md (aarch64_sve_dup_ld1rq_operand): New.
51407 2023-01-14  Alexandre Oliva  <oliva@adacore.com>
51409         * hash-table.h (is_deleted): Precheck !is_empty.
51410         (mark_deleted): Postcheck !is_empty.
51411         (copy constructor): Test is_empty before is_deleted.
51413 2023-01-14  Alexandre Oliva  <oliva@adacore.com>
51415         PR target/40457
51416         * config/arm/arm.md (movmisaligndi): Prefer aligned SImode
51417         moves.
51419 2023-01-13  Eric Botcazou  <ebotcazou@adacore.com>
51421         PR rtl-optimization/108274
51422         * function.cc (thread_prologue_and_epilogue_insns): Also update the
51423         DF information for calls in a few more cases.
51425 2023-01-13  John David Anglin  <danglin@gcc.gnu.org>
51427         * config/pa/pa-linux.h (TARGET_SYNC_LIBCALL): Delete define.
51428         * config/pa/pa.cc (pa_init_libfuncs): Use MAX_SYNC_LIBFUNC_SIZE
51429         define.
51430         * config/pa/pa.h (TARGET_SYNC_LIBCALLS): Use flag_sync_libcalls.
51431         (MAX_SYNC_LIBFUNC_SIZE): Define.
51432         (TARGET_CPU_CPP_BUILTINS): Define __SOFTFP__ when soft float is
51433         enabled.
51434         * config/pa/pa.md (atomic_storeqi): Emit __atomic_exchange_1
51435         libcall when sync libcalls are disabled.
51436         (atomic_storehi, atomic_storesi, atomic_storedi): Likewise.
51437         (atomic_loaddi): Emit __atomic_load_8 libcall when sync libcalls
51438         are disabled on 32-bit target.
51439         * config/pa/pa.opt (matomic-libcalls): New option.
51440         * doc/invoke.texi (HPPA Options): Update.
51442 2023-01-13  Alexander Monakov  <amonakov@ispras.ru>
51444         PR rtl-optimization/108117
51445         PR rtl-optimization/108132
51446         * sched-deps.cc (deps_analyze_insn): Do not schedule across
51447         calls before reload.
51449 2023-01-13  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
51451         * common/config/arm/arm-common.cc (arm_canon_arch_option_1): Ignore cde
51452         options for -mlibarch.
51453         * config/arm/arm-cpus.in (begin cpu cortex-m55): Add cde options.
51454         * doc/invoke.texi (CDE): Document options for Cortex-M55 CPU.
51456 2023-01-13  Qing Zhao  <qing.zhao@oracle.com>
51458         * attribs.cc (strict_flex_array_level_of): Move this function to ...
51459         * attribs.h (strict_flex_array_level_of): Remove the declaration.
51460         * gimple-array-bounds.cc (array_bounds_checker::check_array_ref):
51461         replace the referece to strict_flex_array_level_of with
51462         DECL_NOT_FLEXARRAY.
51463         * tree.cc (component_ref_size): Likewise.
51465 2023-01-13  Richard Biener  <rguenther@suse.de>
51467         PR target/55522
51468         * config/arm/linux-eabi.h (ENDFILE_SPEC): Don't add
51469         crtfastmath.o for -shared.
51470         * config/arm/unknown-elf.h (STARTFILE_SPEC): Likewise.
51472 2023-01-13  Richard Biener  <rguenther@suse.de>
51474         PR target/55522
51475         * config/aarch64/aarch64-elf-raw.h (ENDFILE_SPEC): Don't add
51476         crtfastmath.o for -shared.
51477         * config/aarch64/aarch64-freebsd.h (GNU_USER_TARGET_MATHFILE_SPEC):
51478         Likewise.
51479         * config/aarch64/aarch64-linux.h (GNU_USER_TARGET_MATHFILE_SPEC):
51480         Likewise.
51482 2023-01-13  Richard Sandiford  <richard.sandiford@arm.com>
51484         * config/aarch64/aarch64.cc (aarch64_dwarf_frame_reg_mode): New
51485         function.
51486         (TARGET_DWARF_FRAME_REG_MODE): Define.
51488 2023-01-13  Richard Biener  <rguenther@suse.de>
51490         PR target/107209
51491         * config/aarch64/aarch64.cc (aarch64_gimple_fold_builtin): Don't
51492         update EH info on the fly.
51494 2023-01-13  Richard Biener  <rguenther@suse.de>
51496         PR tree-optimization/108387
51497         * tree-ssa-sccvn.cc (visit_nary_op): Check for SSA_NAME
51498         value before inserting expression into the tables.
51500 2023-01-12  Andrew Pinski  <apinski@marvell.com>
51501             Roger Sayle  <roger@nextmovesoftware.com>
51503         PR tree-optimization/92342
51504         * match.pd ((m1 CMP m2) * d -> (m1 CMP m2) ? d : 0):
51505         Use tcc_comparison and :c for the multiply.
51506         (b & -(a CMP c) -> (a CMP c)?b:0): New pattern.
51508 2023-01-12  Christophe Lyon  <christophe.lyon@arm.com>
51509             Richard Sandiford  <richard.sandiford@arm.com>
51511         PR target/105549
51512         * config/aarch64/aarch64.cc (aarch64_function_arg_alignment):
51513         Check DECL_PACKED for bitfield.
51514         (aarch64_layout_arg): Warn when parameter passing ABI changes.
51515         (aarch64_function_arg_boundary): Do not warn here.
51516         (aarch64_gimplify_va_arg_expr): Warn when parameter passing ABI
51517         changes.
51519 2023-01-12  Christophe Lyon  <christophe.lyon@arm.com>
51520             Richard Sandiford  <richard.sandiford@arm.com>
51522         * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Fix
51523         comment.
51524         (aarch64_layout_arg): Factorize warning conditions.
51525         (aarch64_function_arg_boundary): Fix typo.
51526         * function.cc (currently_expanding_function_start): New variable.
51527         (expand_function_start): Handle
51528         currently_expanding_function_start.
51529         * function.h (currently_expanding_function_start): Declare.
51531 2023-01-12  Richard Biener  <rguenther@suse.de>
51533         PR tree-optimization/99412
51534         * tree-ssa-reassoc.cc (is_phi_for_stmt): Remove.
51535         (swap_ops_for_binary_stmt): Remove reduction handling.
51536         (rewrite_expr_tree_parallel): Adjust.
51537         (reassociate_bb): Likewise.
51538         * tree-parloops.cc (build_new_reduction): Handle MINUS_EXPR.
51540 2023-01-12  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
51542         * config/xtensa/xtensa.md (ctzsi2, ffssi2):
51543         Rearrange the emitting codes.
51545 2023-01-12  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
51547         * config/xtensa/xtensa.md (*btrue):
51548         Correct value of the attribute "length" that depends on
51549         TARGET_DENSITY and operands, and add '?' character to the register
51550         constraint of the compared operand.
51552 2023-01-12  Alexandre Oliva  <oliva@adacore.com>
51554         * hash-table.h (expand): Check elements and deleted counts.
51555         (verify): Likewise.
51557 2023-01-11  Roger Sayle  <roger@nextmovesoftware.com>
51559         PR tree-optimization/71343
51560         * tree-ssa-sccvn.cc (visit_nary_op) <case LSHIFT_EXPR>: Make
51561         the value number of the expression X << C the same as the value
51562         number for the multiplication X * (1<<C).
51564 2023-01-11  David Faust  <david.faust@oracle.com>
51566         PR target/108293
51567         * config/bpf/bpf.cc (bpf_print_operand): Correct handling for
51568         floating point modes.
51570 2023-01-11  Eric Botcazou  <ebotcazou@adacore.com>
51572         PR tree-optimization/108199
51573         * tree-sra.cc (sra_modify_expr): Deal with reverse storage order
51574         for bit-field references.
51576 2023-01-11  Kewen Lin  <linkw@linux.ibm.com>
51578         * config/rs6000/rs6000.cc (rs6000_option_override_internal): Make
51579         OPTION_MASK_P10_FUSION implicit setting honour Power10 tuning setting.
51580         * config/rs6000/rs6000-cpus.def (ISA_3_1_MASKS_SERVER): Remove
51581         OPTION_MASK_P10_FUSION.
51583 2023-01-11  Richard Biener  <rguenther@suse.de>
51585         PR tree-optimization/107767
51586         * tree-cfgcleanup.cc (phi_alternatives_equal): Export.
51587         * tree-cfgcleanup.h (phi_alternatives_equal): Declare.
51588         * tree-switch-conversion.cc (switch_conversion::collect):
51589         Count unique non-default targets accounting for later
51590         merging opportunities.
51592 2023-01-11  Martin Liska  <mliska@suse.cz>
51594         PR middle-end/107976
51595         * params.opt: Limit JT params.
51596         * stmt.cc (emit_case_dispatch_table): Use auto_vec.
51598 2023-01-11  Richard Biener  <rguenther@suse.de>
51600         PR tree-optimization/108352
51601         * tree-ssa-threadbackward.cc
51602         (back_threader_profitability::profitable_path_p): Adjust
51603         heuristic that allows non-multi-way branch threads creating
51604         irreducible loops.
51605         * doc/invoke.texi (--param fsm-scale-path-blocks): Remove.
51606         (--param fsm-scale-path-stmts): Adjust.
51607         * params.opt (--param=fsm-scale-path-blocks=): Remove.
51608         (-param=fsm-scale-path-stmts=): Adjust description.
51610 2023-01-11  Richard Biener  <rguenther@suse.de>
51612         PR tree-optimization/108353
51613         * tree-ssa-propagate.cc (cfg_blocks_back, ssa_edge_worklist_back):
51614         Remove.
51615         (add_ssa_edge): Simplify.
51616         (add_control_edge): Likewise.
51617         (ssa_prop_init): Likewise.
51618         (ssa_prop_fini): Likewise.
51619         (ssa_propagation_engine::ssa_propagate): Likewise.
51621 2023-01-11  Andreas Krebbel  <krebbel@linux.ibm.com>
51623         * config/s390/s390.md (*not<mode>): New pattern.
51625 2023-01-11  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
51627         * config/xtensa/xtensa.cc (xtensa_insn_cost):
51628         Let insn cost for size be obtained by applying COSTS_N_INSNS()
51629         to instruction length and then dividing by 3.
51631 2023-01-10  Richard Biener  <rguenther@suse.de>
51633         PR tree-optimization/106293
51634         * tree-ssa-dse.cc (dse_classify_store): Use a worklist to
51635         process degenerate PHI defs.
51637 2023-01-10  Roger Sayle  <roger@nextmovesoftware.com>
51639         PR rtl-optimization/106421
51640         * cprop.cc (bypass_block): Check that DEST is local to this
51641         function (non-NULL) before calling find_edge.
51643 2023-01-10  Martin Jambor  <mjambor@suse.cz>
51645         PR ipa/108110
51646         * ipa-param-manipulation.h (ipa_param_body_adjustments): New members
51647         sort_replacements, lookup_first_base_replacement and
51648         m_sorted_replacements_p.
51649         * ipa-param-manipulation.cc: Define INCLUDE_ALGORITHM.
51650         (ipa_param_body_adjustments::register_replacement): Set
51651         m_sorted_replacements_p to false.
51652         (compare_param_body_replacement): New function.
51653         (ipa_param_body_adjustments::sort_replacements): Likewise.
51654         (ipa_param_body_adjustments::common_initialization): Call
51655         sort_replacements.
51656         (ipa_param_body_adjustments::ipa_param_body_adjustments): Initialize
51657         m_sorted_replacements_p.
51658         (ipa_param_body_adjustments::lookup_replacement_1): Rework to use
51659         std::lower_bound.
51660         (ipa_param_body_adjustments::lookup_first_base_replacement): New
51661         function.
51662         (ipa_param_body_adjustments::modify_call_stmt): Use
51663         lookup_first_base_replacement.
51664         * omp-simd-clone.cc (ipa_simd_modify_function_body): Call
51665         adjustments->sort_replacements.
51667 2023-01-10  Richard Biener  <rguenther@suse.de>
51669         PR tree-optimization/108314
51670         * tree-vect-stmts.cc (vectorizable_condition): Do not
51671         perform BIT_NOT_EXPR optimization for EXTRACT_LAST_REDUCTION.
51673 2023-01-10  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
51675         * config/csky/csky-linux-elf.h (SYSROOT_SUFFIX_SPEC): New.
51677 2023-01-10  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
51679         * config/csky/csky.h (MULTILIB_DEFAULTS): Fix float abi option.
51681 2023-01-10  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
51683         * config/csky/csky.cc (csky_cpu_cpp_builtins): Add builtin
51684         defines for soft float abi.
51686 2023-01-10  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
51688         * config/csky/csky.md (smart_bseti): Change condition to CSKY_ISA_FEATURE (E1).
51689         (smart_bclri): Likewise.
51690         (fast_bseti): Change condition to CSKY_ISA_FEATURE (E2).
51691         (fast_bclri): Likewise.
51692         (fast_cmpnesi_i): Likewise.
51693         (*fast_cmpltsi_i): Likewise.
51694         (*fast_cmpgeusi_i): Likewise.
51696 2023-01-10  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
51698         * config/csky/csky_insn_fpuv3.md (l<frm_pattern><fixsuop><mode>si2): Test
51699         flag_fp_int_builtin_inexact || !flag_trapping_math.
51700         (<frm_pattern><mode>2): Likewise.
51702 2023-01-10  Andreas Krebbel  <krebbel@linux.ibm.com>
51704         * config/s390/s390.cc (s390_register_info): Check call_used_regs
51705         instead of hard-coding the register numbers for call saved
51706         registers.
51707         (s390_optimize_register_info): Likewise.
51709 2023-01-09  Eric Botcazou  <ebotcazou@adacore.com>
51711         * doc/gm2.texi (Overview): Fix @node markers.
51712         (Using): Likewise.  Remove subsections that were moved to Overview
51713         from the menu and move others around.
51715 2023-01-09  Richard Biener  <rguenther@suse.de>
51717         PR middle-end/108209
51718         * genmatch.cc (commutative_op): Fix return value for
51719         user-id with non-commutative first replacement.
51721 2023-01-09  Jakub Jelinek  <jakub@redhat.com>
51723         PR target/107453
51724         * calls.cc (expand_call): For calls with
51725         TYPE_NO_NAMED_ARGS_STDARG_P (funtype) use zero for n_named_args.
51726         Formatting fix.
51728 2023-01-09  Richard Biener  <rguenther@suse.de>
51730         PR middle-end/69482
51731         * cfgexpand.cc (discover_nonconstant_array_refs_r): Volatile
51732         qualified accesses also force objects to memory.
51734 2023-01-09  Martin Liska  <mliska@suse.cz>
51736         PR lto/108330
51737         * lto-cgraph.cc (compute_ltrans_boundary): Do not insert
51738         NULL (deleleted value) to a hash_set.
51740 2023-01-08  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
51742         * config/xtensa/xtensa.md (*splice_bits):
51743         New insn_and_split pattern.
51745 2023-01-07  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
51747         * config/xtensa/xtensa.cc
51748         (xtensa_split_imm_two_addends, xtensa_emit_add_imm):
51749         New helper functions.
51750         (xtensa_set_return_address, xtensa_output_mi_thunk):
51751         Change to use the helper function.
51752         (xtensa_emit_adjust_stack_ptr): Ditto.
51753         And also change to try reusing the content of scratch register
51754         A9 if the register is not modified in the function body.
51756 2023-01-07  LIU Hao  <lh_mouse@126.com>
51758         PR middle-end/108300
51759         * config/xtensa/xtensa-dynconfig.c: Define `WIN32_LEAN_AND_MEAN`
51760         before <windows.h>.
51761         * diagnostic-color.cc: Likewise.
51762         * plugin.cc: Likewise.
51763         * prefix.cc: Likewise.
51765 2023-01-06  Joseph Myers  <joseph@codesourcery.com>
51767         * doc/extend.texi (__builtin_tgmath): Do not restate standard rule
51768         for handling real integer types.
51770 2023-01-06  Tamar Christina  <tamar.christina@arm.com>
51772         Revert:
51773         2022-12-12  Tamar Christina  <tamar.christina@arm.com>
51775         * config/aarch64/aarch64-simd.md (*aarch64_simd_movv2hf): New.
51776         (mov<mode>, movmisalign<mode>, aarch64_dup_lane<mode>,
51777         aarch64_store_lane0<mode>, aarch64_simd_vec_set<mode>,
51778         @aarch64_simd_vec_copy_lane<mode>, vec_set<mode>,
51779         reduc_<optab>_scal_<mode>, reduc_<fmaxmin>_scal_<mode>,
51780         aarch64_reduc_<optab>_internal<mode>, aarch64_get_lane<mode>,
51781         vec_init<mode><Vel>, vec_extract<mode><Vel>): Support V2HF.
51782         (aarch64_simd_dupv2hf): New.
51783         * config/aarch64/aarch64.cc (aarch64_classify_vector_mode):
51784         Add E_V2HFmode.
51785         * config/aarch64/iterators.md (VHSDF_P): New.
51786         (V2F, VMOVE, nunits, Vtype, Vmtype, Vetype, stype, VEL,
51787         Vel, q, vp): Add V2HF.
51788         * config/arm/types.md (neon_fp_reduc_add_h): New.
51790 2023-01-06  Martin Liska  <mliska@suse.cz>
51792         PR middle-end/107966
51793         * doc/options.texi: Fix Var documentation in internal manual.
51795 2023-01-05  Roger Sayle  <roger@nextmovesoftware.com>
51797         Revert:
51798         2023-01-03  Roger Sayle  <roger@nextmovesoftware.com>
51800         * config/i386/i386-expand.cc (ix86_expand_int_movcc): Rewrite
51801         RTL expansion to allow condition (mask) to be shared/reused,
51802         by avoiding overwriting pseudos and adding REG_EQUAL notes.
51804 2023-01-05  Iain Sandoe  <iain@sandoe.co.uk>
51806         * common.opt: Add -static-libgm2.
51807         * config/darwin.h (LINK_SPEC): Handle static-libgm2.
51808         * doc/gm2.texi: Document static-libgm2.
51809         * gcc.cc (driver_handle_option): Allow static-libgm2.
51811 2023-01-05  Tejas Joshi  <TejasSanjay.Joshi@amd.com>
51813         * common/config/i386/i386-common.cc (processor_alias_table):
51814         Use CPU_ZNVER4 for znver4.
51815         * config/i386/i386.md: Add znver4.md.
51816         * config/i386/znver4.md: New.
51818 2023-01-04  Jakub Jelinek  <jakub@redhat.com>
51820         PR tree-optimization/108253
51821         * tree-vrp.cc (maybe_set_nonzero_bits): Handle var with pointer
51822         types.
51824 2023-01-04  Jakub Jelinek  <jakub@redhat.com>
51826         PR middle-end/108237
51827         * generic-match-head.cc: Include tree-pass.h.
51828         (canonicalize_math_p, optimize_vectors_before_lowering_p): Define
51829         to false if cfun and cfun->curr_properties has PROP_gimple_opt_math
51830         resp. PROP_gimple_lvec property set.
51832 2023-01-04  Jakub Jelinek  <jakub@redhat.com>
51834         PR sanitizer/108256
51835         * convert.cc (do_narrow): Punt for MULT_EXPR if original
51836         type doesn't wrap around and -fsanitize=signed-integer-overflow
51837         is on.
51838         * fold-const.cc (fold_unary_loc) <CASE_CONVERT>: Likewise.
51840 2023-01-04  Hu, Lin1  <lin1.hu@intel.com>
51842         * common/config/i386/cpuinfo.h (get_intel_cpu): Handle Emeraldrapids.
51843         * common/config/i386/i386-common.cc: Add Emeraldrapids.
51845 2023-01-04  Hu, Lin1  <lin1.hu@intel.com>
51847         * common/config/i386/cpuinfo.h (get_intel_cpu): Remove case 0xb5
51848         for meteorlake.
51850 2023-01-03  Sandra Loosemore  <sandra@codesourcery.com>
51852         * cgraph.h (struct cgraph_node): Add gc_candidate bit, modify
51853         default constructor to initialize it.
51854         * cgraphunit.cc (expand_all_functions): Save gc_candidate functions
51855         for last and iterate to handle recursive calls.  Delete leftover
51856         candidates at the end.
51857         * omp-simd-clone.cc (simd_clone_create): Set gc_candidate bit
51858         on local clones.
51859         * tree-vect-stmts.cc (vectorizable_simd_clone_call): Clear
51860         gc_candidate bit when a clone is used.
51862 2023-01-03  Florian Weimer  <fweimer@redhat.com>
51864         Revert:
51865         2023-01-02  Florian Weimer  <fweimer@redhat.com>
51867         * dwarf2cfi.cc (init_return_column_size): Remove.
51868         (init_one_dwarf_reg_size): Adjust.
51869         (generate_dwarf_reg_sizes): New function.  Extracted
51870         from expand_builtin_init_dwarf_reg_sizes.
51871         (expand_builtin_init_dwarf_reg_sizes): Call
51872         generate_dwarf_reg_sizes.
51873         * target.def (init_dwarf_reg_sizes_extra): Adjust
51874         hook signature.
51875         * config/msp430/msp430.cc
51876         (msp430_init_dwarf_reg_sizes_extra): Adjust.
51877         * config/rs6000/rs6000.cc
51878         (rs6000_init_dwarf_reg_sizes_extra): Likewise.
51879         * doc/tm.texi: Update.
51881 2023-01-03  Florian Weimer  <fweimer@redhat.com>
51883         Revert:
51884         2023-01-02  Florian Weimer  <fweimer@redhat.com>
51886         * debug.h (dwarf_reg_sizes_constant): Declare.
51887         * dwarf2cfi.cc (dwarf_reg_sizes_constant): New function.
51889 2023-01-03  Siddhesh Poyarekar  <siddhesh@gotplt.org>
51891         PR tree-optimization/105043
51892         * doc/extend.texi (Object Size Checking): Split out into two
51893         subsections and mention _FORTIFY_SOURCE.
51895 2023-01-03  Roger Sayle  <roger@nextmovesoftware.com>
51897         * config/i386/i386-expand.cc (ix86_expand_int_movcc): Rewrite
51898         RTL expansion to allow condition (mask) to be shared/reused,
51899         by avoiding overwriting pseudos and adding REG_EQUAL notes.
51901 2023-01-03  Roger Sayle  <roger@nextmovesoftware.com>
51903         PR target/108229
51904         * config/i386/i386-features.cc
51905         (general_scalar_chain::compute_convert_gain) <case PLUS>: Consider
51906         the gain/cost of converting a MEM operand.
51908 2023-01-03  Jakub Jelinek  <jakub@redhat.com>
51910         PR middle-end/108264
51911         * expr.cc (store_expr): For stores into SUBREG_PROMOTED_* targets
51912         from source which doesn't have scalar integral mode first convert
51913         it to outer_mode.
51915 2023-01-03  Jakub Jelinek  <jakub@redhat.com>
51917         PR rtl-optimization/108263
51918         * cfgrtl.cc (fixup_reorder_chain): Avoid trying to redirect
51919         asm goto to EXIT.
51921 2023-01-02  Alexander Monakov  <amonakov@ispras.ru>
51923         PR target/87832
51924         * config/i386/lujiazui.md (lujiazui_div): New automaton.
51925         (lua_div): New unit.
51926         (lua_idiv_qi): Correct unit in the reservation.
51927         (lua_idiv_qi_load): Ditto.
51928         (lua_idiv_hi): Ditto.
51929         (lua_idiv_hi_load): Ditto.
51930         (lua_idiv_si): Ditto.
51931         (lua_idiv_si_load): Ditto.
51932         (lua_idiv_di): Ditto.
51933         (lua_idiv_di_load): Ditto.
51934         (lua_fdiv_SF): Ditto.
51935         (lua_fdiv_SF_load): Ditto.
51936         (lua_fdiv_DF): Ditto.
51937         (lua_fdiv_DF_load): Ditto.
51938         (lua_fdiv_XF): Ditto.
51939         (lua_fdiv_XF_load): Ditto.
51940         (lua_ssediv_SF): Ditto.
51941         (lua_ssediv_load_SF): Ditto.
51942         (lua_ssediv_V4SF): Ditto.
51943         (lua_ssediv_load_V4SF): Ditto.
51944         (lua_ssediv_V8SF): Ditto.
51945         (lua_ssediv_load_V8SF): Ditto.
51946         (lua_ssediv_SD): Ditto.
51947         (lua_ssediv_load_SD): Ditto.
51948         (lua_ssediv_V2DF): Ditto.
51949         (lua_ssediv_load_V2DF): Ditto.
51950         (lua_ssediv_V4DF): Ditto.
51951         (lua_ssediv_load_V4DF): Ditto.
51953 2023-01-02  Florian Weimer  <fweimer@redhat.com>
51955         * debug.h (dwarf_reg_sizes_constant): Declare.
51956         * dwarf2cfi.cc (dwarf_reg_sizes_constant): New function.
51958 2023-01-02  Florian Weimer  <fweimer@redhat.com>
51960         * dwarf2cfi.cc (init_return_column_size): Remove.
51961         (init_one_dwarf_reg_size): Adjust.
51962         (generate_dwarf_reg_sizes): New function.  Extracted
51963         from expand_builtin_init_dwarf_reg_sizes.
51964         (expand_builtin_init_dwarf_reg_sizes): Call
51965         generate_dwarf_reg_sizes.
51966         * target.def (init_dwarf_reg_sizes_extra): Adjust
51967         hook signature.
51968         * config/msp430/msp430.cc
51969         (msp430_init_dwarf_reg_sizes_extra): Adjust.
51970         * config/rs6000/rs6000.cc
51971         (rs6000_init_dwarf_reg_sizes_extra): Likewise.
51972         * doc/tm.texi: Update.
51974 2023-01-02  Jakub Jelinek  <jakub@redhat.com>
51976         * gcc.cc (process_command): Update copyright notice dates.
51977         * gcov-dump.cc (print_version): Ditto.
51978         * gcov.cc (print_version): Ditto.
51979         * gcov-tool.cc (print_version): Ditto.
51980         * gengtype.cc (create_file): Ditto.
51981         * doc/cpp.texi: Bump @copying's copyright year.
51982         * doc/cppinternals.texi: Ditto.
51983         * doc/gcc.texi: Ditto.
51984         * doc/gccint.texi: Ditto.
51985         * doc/gcov.texi: Ditto.
51986         * doc/install.texi: Ditto.
51987         * doc/invoke.texi: Ditto.
51989 2023-01-01  Roger Sayle  <roger@nextmovesoftware.com>
51990             Uroš Bizjak  <ubizjak@gmail.com>
51992         * config/i386/i386.md (extendditi2): New define_insn.
51993         (define_split): Use DWIH mode iterator to treat new extendditi2
51994         identically to existing extendsidi2_1.
51995         (define_peephole2): Likewise.
51996         (define_peephole2): Likewise.
51997         (define_Split): Likewise.
52000 Copyright (C) 2023 Free Software Foundation, Inc.
52002 Copying and distribution of this file, with or without modification,
52003 are permitted in any medium without royalty provided the copyright
52004 notice and this notice are preserved.