]> git.ipfire.org Git - thirdparty/gcc.git/blob - gcc/ChangeLog
Daily bump.
[thirdparty/gcc.git] / gcc / ChangeLog
1 2023-08-18 Uros Bizjak <ubizjak@gmail.com>
2
3 PR target/111023
4 * config/i386/i386-expand.cc (ix86_split_mmx_punpck):
5 Also handle V2QImode.
6 (ix86_expand_sse_extend): New function.
7 * config/i386/i386-protos.h (ix86_expand_sse_extend): New prototype.
8 * config/i386/mmx.md (<any_extend:insn>v4qiv4hi2): Enable for
9 TARGET_SSE2. Expand through ix86_expand_sse_extend for !TARGET_SSE4_1.
10 (<any_extend:insn>v2hiv2si2): Ditto.
11 (<any_extend:insn>v2qiv2hi2): Ditto.
12 * config/i386/sse.md (<any_extend:insn>v8qiv8hi2): Ditto.
13 (<any_extend:insn>v4hiv4si2): Ditto.
14 (<any_extend:insn>v2siv2di2): Ditto.
15
16 2023-08-18 Aldy Hernandez <aldyh@redhat.com>
17
18 PR ipa/110753
19 * value-range.cc (irange::union_bitmask): Return FALSE if updated
20 bitmask is semantically equivalent to the original mask.
21 (irange::intersect_bitmask): Same.
22 (irange::get_bitmask): Add comment.
23
24 2023-08-18 Richard Biener <rguenther@suse.de>
25
26 PR tree-optimization/111019
27 * tree-ssa-loop-im.cc (gather_mem_refs_stmt): When canonicalizing
28 also scrap base and offset in case the ref is indirect.
29
30 2023-08-18 Jose E. Marchesi <jose.marchesi@oracle.com>
31
32 * config/bpf/bpf.opt (mframe-limit): Set default to 32767.
33
34 2023-08-18 Kewen Lin <linkw@linux.ibm.com>
35
36 PR bootstrap/111021
37 * Makefile.in (TM_P_H): Add $(TREE_H) as dependence.
38
39 2023-08-18 Kewen Lin <linkw@linux.ibm.com>
40
41 * tree-vect-stmts.cc (vect_build_scatter_store_calls): New, factor
42 out from ...
43 (vectorizable_store): ... here.
44
45 2023-08-18 Richard Biener <rguenther@suse.de>
46
47 PR tree-optimization/111048
48 * fold-const.cc (fold_vec_perm_cst): Check for non-VLA
49 vectors first.
50
51 2023-08-18 Haochen Jiang <haochen.jiang@intel.com>
52
53 PR target/111051
54 * config/i386/avx512vldqintrin.h: Push AVX2 when AVX2 is
55 disabled.
56
57 2023-08-18 Kewen Lin <linkw@linux.ibm.com>
58
59 * tree-vect-stmts.cc (vectorizable_load): Move the handlings on
60 VMAT_GATHER_SCATTER in the final loop nest to its own loop,
61 and update the final nest accordingly.
62
63 2023-08-18 Andrew Pinski <apinski@marvell.com>
64
65 * doc/md.texi (Standard patterns): Document cond_neg, cond_one_cmpl,
66 cond_len_neg and cond_len_one_cmpl.
67
68 2023-08-18 Lehua Ding <lehua.ding@rivai.ai>
69
70 * config/riscv/iterators.md (TARGET_HARD_FLOAT || TARGET_ZFINX): New.
71 * config/riscv/pic.md (*local_pic_load<ANYF:mode>): Change ANYF.
72 (*local_pic_load<ANYLSF:mode>): To ANYLSF.
73 (*local_pic_load_32d<ANYF:mode>): Ditto.
74 (*local_pic_load_32d<ANYLSF:mode>): Ditto.
75 (*local_pic_store<ANYF:mode>): Ditto.
76 (*local_pic_store<ANYLSF:mode>): Ditto.
77 (*local_pic_store_32d<ANYF:mode>): Ditto.
78 (*local_pic_store_32d<ANYLSF:mode>): Ditto.
79
80 2023-08-18 Lehua Ding <lehua.ding@rivai.ai>
81 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
82
83 * config/riscv/predicates.md (vector_const_0_operand): New.
84 * config/riscv/vector.md (*pred_broadcast<mode>_zero): Ditto.
85
86 2023-08-18 Lehua Ding <lehua.ding@rivai.ai>
87
88 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::backward_demand_fusion):
89 Forbidden.
90
91 2023-08-17 Andrew MacLeod <amacleod@redhat.com>
92
93 PR tree-optimization/111009
94 * range-op.cc (operator_addr_expr::op1_range): Be more restrictive.
95
96 2023-08-17 Vladimir N. Makarov <vmakarov@redhat.com>
97
98 * lra-spills.cc (assign_stack_slot_num_and_sort_pseudos): Moving
99 slots_num initialization from here ...
100 (lra_spill): ... to here before the 1st call of
101 assign_stack_slot_num_and_sort_pseudos. Add the 2nd call after
102 fp->sp elimination.
103
104 2023-08-17 Jose E. Marchesi <jose.marchesi@oracle.com>
105
106 PR c/106537
107 * doc/invoke.texi (Option Summary): Mention
108 -Wcompare-distinct-pointer-types under `Warning Options'.
109 (Warning Options): Document -Wcompare-distinct-pointer-types.
110
111 2023-08-17 Jan-Benedict Glaw <jbglaw@lug-owl.de>
112
113 * recog.cc (memory_address_addr_space_p): Mark possibly unused
114 argument as unused.
115
116 2023-08-17 Richard Biener <rguenther@suse.de>
117
118 PR tree-optimization/111039
119 * tree-ssa-ifcombine.cc (ifcombine_ifandif): Check for
120 SSA_NAME_OCCURS_IN_ABNORMAL_PHI.
121
122 2023-08-17 Alex Coplan <alex.coplan@arm.com>
123
124 * doc/rtl.texi: Fix up sample code for RTL-SSA insn changes.
125
126 2023-08-17 Jose E. Marchesi <jose.marchesi@oracle.com>
127
128 PR target/111046
129 * config/bpf/bpf.cc (bpf_attribute_table): Add entry for the
130 `naked' function attribute.
131 (bpf_warn_func_return): New function.
132 (TARGET_WARN_FUNC_RETURN): Define.
133 (bpf_expand_prologue): Add preventive comment.
134 (bpf_expand_epilogue): Likewise.
135 * doc/extend.texi (BPF Function Attributes): Document the `naked'
136 function attribute.
137
138 2023-08-17 Richard Biener <rguenther@suse.de>
139
140 * tree-vect-slp.cc (vect_slp_check_for_roots): Use
141 !needs_fold_left_reduction_p to decide whether we can
142 handle the reduction with association.
143 (vectorize_slp_instance_root_stmt): For TYPE_OVERFLOW_UNDEFINED
144 reductions perform all arithmetic in an unsigned type.
145
146 2023-08-17 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
147
148 * configure.ac (gcc_cv_ld64_version): Allow for dyld in ld -v
149 output.
150 * configure: Regenerate.
151
152 2023-08-17 Pan Li <pan2.li@intel.com>
153
154 * config/riscv/riscv-vector-builtins-bases.cc
155 (widen_freducop): Add frm_opt_type template arg.
156 (vfwredosum_frm_obj): New declaration.
157 (BASE): Ditto.
158 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
159 * config/riscv/riscv-vector-builtins-functions.def
160 (vfwredosum_frm): New intrinsic function def.
161
162 2023-08-17 Pan Li <pan2.li@intel.com>
163
164 * config/riscv/riscv-vector-builtins-bases.cc
165 (vfredosum_frm_obj): New declaration.
166 (BASE): Ditto.
167 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
168 * config/riscv/riscv-vector-builtins-functions.def
169 (vfredosum_frm): New intrinsic function def.
170
171 2023-08-17 Pan Li <pan2.li@intel.com>
172
173 * config/riscv/riscv-vector-builtins-bases.cc
174 (class freducop): Add frm_op_type template arg.
175 (vfredusum_frm_obj): New declaration.
176 (BASE): Ditto.
177 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
178 * config/riscv/riscv-vector-builtins-functions.def
179 (vfredusum_frm): New intrinsic function def.
180 * config/riscv/riscv-vector-builtins-shapes.cc
181 (struct reduc_alu_frm_def): New class for frm shape.
182 (SHAPE): New declaration.
183 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
184
185 2023-08-17 Pan Li <pan2.li@intel.com>
186
187 * config/riscv/riscv-vector-builtins-bases.cc
188 (class vfncvt_f): Add frm_op_type template arg.
189 (vfncvt_f_frm_obj): New declaration.
190 (BASE): Ditto.
191 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
192 * config/riscv/riscv-vector-builtins-functions.def
193 (vfncvt_f_frm): New intrinsic function def.
194
195 2023-08-17 Pan Li <pan2.li@intel.com>
196
197 * config/riscv/riscv-vector-builtins-bases.cc
198 (vfncvt_xu_frm_obj): New declaration.
199 (BASE): Ditto.
200 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
201 * config/riscv/riscv-vector-builtins-functions.def
202 (vfncvt_xu_frm): New intrinsic function def.
203
204 2023-08-17 Pan Li <pan2.li@intel.com>
205
206 * config/riscv/riscv-vector-builtins-bases.cc
207 (class vfncvt_x): Add frm_op_type template arg.
208 (BASE): New declaration.
209 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
210 * config/riscv/riscv-vector-builtins-functions.def
211 (vfncvt_x_frm): New intrinsic function def.
212 * config/riscv/riscv-vector-builtins-shapes.cc
213 (struct narrow_alu_frm_def): New shape function for frm.
214 (SHAPE): New declaration.
215 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
216
217 2023-08-17 Haochen Jiang <haochen.jiang@intel.com>
218
219 * config/i386/avx512vldqintrin.h: Remove target attribute.
220 * config/i386/i386-builtin.def (BDESC):
221 Add OPTION_MASK_ISA2_AVX10_1.
222 * config/i386/sse.md (VF_AVX512VLDQ_AVX10_1): New.
223 (VFH_AVX512VLDQ_AVX10_1): Ditto.
224 (VF1_AVX512VLDQ_AVX10_1): Ditto.
225 (<mask_codefor>reducep<mode><mask_name><round_saeonly_name>):
226 Change iterator to VFH_AVX512VLDQ_AVX10_1. Remove target check.
227 (vec_pack<floatprefix>_float_<mode>): Change iterator to
228 VI8_AVX512VLDQ_AVX10_1. Remove target check.
229 (vec_unpack_<fixprefix>fix_trunc_lo_<mode>): Change iterator to
230 VF1_AVX512VLDQ_AVX10_1. Remove target check.
231 (vec_unpack_<fixprefix>fix_trunc_hi_<mode>): Ditto.
232 (VI48F_256_DQVL_AVX10_1): Rename from VI48F_256_DQ.
233 (avx512vl_vextractf128<mode>): Change iterator to
234 VI48F_256_DQVL_AVX10_1. Remove target check.
235 (vec_extract_hi_<mode>_mask): Add TARGET_AVX10_1.
236 (vec_extract_hi_<mode>): Ditto.
237 (avx512vl_vinsert<mode>): Ditto.
238 (vec_set_lo_<mode><mask_name>): Ditto.
239 (vec_set_hi_<mode><mask_name>): Ditto.
240 (avx512dq_rangep<mode><mask_name><round_saeonly_name>): Change
241 iterator to VF_AVX512VLDQ_AVX10_1. Remove target check.
242 (avx512dq_fpclass<mode><mask_scalar_merge_name>): Change
243 iterator to VFH_AVX512VLDQ_AVX10_1. Remove target check.
244 * config/i386/subst.md (mask_avx512dq_condition): Add
245 TARGET_AVX10_1.
246 (mask_scalar_merge): Ditto.
247
248 2023-08-17 Haochen Jiang <haochen.jiang@intel.com>
249
250 * config/i386/avx512vldqintrin.h: Remove target attribute.
251 * config/i386/i386-builtin.def (BDESC):
252 Add OPTION_MASK_ISA2_AVX10_1.
253 * config/i386/i386.cc (standard_sse_constant_opcode): Add TARGET_AVX10_1.
254 * config/i386/sse.md: (VI48_AVX512VL_AVX10_1): New.
255 (VI48_AVX512VLDQ_AVX10_1): Ditto.
256 (VF2_AVX512VL): Remove.
257 (VI8_256_512VLDQ_AVX10_1): Rename from VI8_256_512.
258 Add TARGET_AVX10_1.
259 (*<code><mode>3<mask_name>): Change isa attribute to
260 avx10_1_or_avx512dq. Add TARGET_AVX10_1.
261 (<code><mode>3): Add TARGET_AVX10_1. Change isa attr
262 to avx10_1_or_avx512vl.
263 (<mask_codefor>avx512dq_cvtps2qq<mode><mask_name><round_name>):
264 Change iterator to VI8_256_512VLDQ_AVX10_1. Remove target check.
265 (<mask_codefor>avx512dq_cvtps2qqv2di<mask_name>):
266 Add TARGET_AVX10_1.
267 (<mask_codefor>avx512dq_cvtps2uqq<mode><mask_name><round_name>):
268 Change iterator to VI8_256_512VLDQ_AVX10_1. Remove target check.
269 (<mask_codefor>avx512dq_cvtps2uqqv2di<mask_name>):
270 Add TARGET_AVX10_1.
271 (float<floatunssuffix><sseintvecmodelower><mode>2<mask_name><round_name>):
272 Change iterator to VF2_AVX512VLDQ_AVX10_1. Remove target check.
273 (float<floatunssuffix><sselongvecmodelower><mode>2<mask_name><round_name>):
274 Change iterator to VF1_128_256VLDQ_AVX10_1. Remove target check.
275 (float<floatunssuffix>v4div4sf2<mask_name>):
276 Add TARGET_AVX10_1.
277 (avx512dq_float<floatunssuffix>v2div2sf2): Ditto.
278 (*avx512dq_float<floatunssuffix>v2div2sf2): Ditto.
279 (float<floatunssuffix>v2div2sf2): Ditto.
280 (float<floatunssuffix>v2div2sf2_mask): Ditto.
281 (*float<floatunssuffix>v2div2sf2_mask): Ditto.
282 (*float<floatunssuffix>v2div2sf2_mask_1): Ditto.
283 (<avx512>_cvt<ssemodesuffix>2mask<mode>):
284 Change iterator to VI48_AVX512VLDQ_AVX10_1. Remove target check.
285 (<avx512>_cvtmask2<ssemodesuffix><mode>): Ditto.
286 (*<avx512>_cvtmask2<ssemodesuffix><mode>):
287 Change iterator to VI48_AVX512VL_AVX10_1. Remove target check.
288 Change when constraint is enabled.
289
290 2023-08-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
291
292 PR target/111037
293 * config/riscv/riscv-vsetvl.cc (float_insn_valid_sew_p): New function.
294 (second_sew_less_than_first_sew_p): Fix bug.
295 (first_sew_less_than_second_sew_p): Ditto.
296
297 2023-08-17 Haochen Jiang <haochen.jiang@intel.com>
298
299 * config/i386/avx512vldqintrin.h: Remove target attribute.
300 * config/i386/i386-builtin.def (BDESC):
301 Add OPTION_MASK_ISA2_AVX10_1.
302 * config/i386/i386-builtins.cc (def_builtin): Handle AVX10_1.
303 * config/i386/i386-expand.cc
304 (ix86_check_builtin_isa_match): Ditto.
305 (ix86_expand_sse2_mulvxdi3): Add TARGET_AVX10_1.
306 * config/i386/i386.md: Add new isa attribute avx10_1_or_avx512dq
307 and avx10_1_or_avx512vl.
308 * config/i386/sse.md: (VF2_AVX512VLDQ_AVX10_1): New.
309 (VF1_128_256VLDQ_AVX10_1): Ditto.
310 (VI8_AVX512VLDQ_AVX10_1): Ditto.
311 (<sse>_andnot<mode>3<mask_name>):
312 Add TARGET_AVX10_1 and change isa attr from avx512dq to
313 avx10_1_or_avx512dq.
314 (*andnot<mode>3): Add TARGET_AVX10_1 and change isa attr from
315 avx512vl to avx10_1_or_avx512vl.
316 (fix<fixunssuffix>_trunc<mode><sseintvecmodelower>2<mask_name><round_saeonly_name>):
317 Change iterator to VF2_AVX512VLDQ_AVX10_1. Remove target check.
318 (fix_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
319 Ditto.
320 (ufix_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
321 Ditto.
322 (fix<fixunssuffix>_trunc<mode><sselongvecmodelower>2<mask_name><round_saeonly_name>):
323 Change iterator to VF1_128_256VLDQ_AVX10_1. Remove target check.
324 (avx512dq_fix<fixunssuffix>_truncv2sfv2di2<mask_name>):
325 Add TARGET_AVX10_1.
326 (fix<fixunssuffix>_truncv2sfv2di2): Ditto.
327 (cond_mul<mode>): Change iterator to VI8_AVX10_1_AVX512DQVL.
328 Remove target check.
329 (avx512dq_mul<mode>3<mask_name>): Ditto.
330 (*avx512dq_mul<mode>3<mask_name>): Ditto.
331 (VI4F_BRCST32x2): Add TARGET_AVX512DQ and TARGET_AVX10_1.
332 (<mask_codefor>avx512dq_broadcast<mode><mask_name>):
333 Remove target check.
334 (VI8F_BRCST64x2): Add TARGET_AVX512DQ and TARGET_AVX10_1.
335 (<mask_codefor>avx512dq_broadcast<mode><mask_name>_1):
336 Remove target check.
337 * config/i386/subst.md (mask_mode512bit_condition): Add TARGET_AVX10_1.
338 (mask_avx512vl_condition): Ditto.
339 (mask): Ditto.
340
341 2023-08-17 Haochen Jiang <haochen.jiang@intel.com>
342
343 * common/config/i386/i386-common.cc
344 (ix86_check_avx10_vector_width): New function to check isa_flags
345 to emit a warning when there is a conflict in AVX10 options for
346 vector width.
347 (ix86_handle_option): Add check for avx10.1-256 and avx10.1-512.
348 * config/i386/driver-i386.cc (host_detect_local_cpu):
349 Do not append -mno-avx10-max-512bit for -march=native.
350
351 2023-08-17 Haochen Jiang <haochen.jiang@intel.com>
352
353 * common/config/i386/i386-common.cc
354 (ix86_check_avx10): New function to check isa_flags and
355 isa_flags_explicit to emit warning when AVX10 is enabled
356 by "-m" option.
357 (ix86_check_avx512): New function to check isa_flags and
358 isa_flags_explicit to emit warning when AVX512 is enabled
359 by "-m" option.
360 (ix86_handle_option): Do not change the flags when warning
361 is emitted.
362 * config/i386/driver-i386.cc (host_detect_local_cpu):
363 Do not append -mno-avx10.1 for -march=native.
364
365 2023-08-17 Haochen Jiang <haochen.jiang@intel.com>
366
367 * common/config/i386/cpuinfo.h (get_available_features):
368 Add avx10_set and version and detect avx10.1.
369 (cpu_indicator_init): Handle avx10.1-512.
370 * common/config/i386/i386-common.cc
371 (OPTION_MASK_ISA2_AVX10_512BIT_SET): New.
372 (OPTION_MASK_ISA2_AVX10_1_SET): Ditto.
373 (OPTION_MASK_ISA2_AVX10_512BIT_UNSET): Ditto.
374 (OPTION_MASK_ISA2_AVX10_1_UNSET): Ditto.
375 (OPTION_MASK_ISA2_AVX2_UNSET): Modify for AVX10_1.
376 (ix86_handle_option): Handle -mavx10.1, -mavx10.1-256 and
377 -mavx10.1-512.
378 * common/config/i386/i386-cpuinfo.h (enum processor_features):
379 Add FEATURE_AVX10_512BIT, FEATURE_AVX10_1 and
380 FEATURE_AVX10_512BIT.
381 * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
382 AVX10_512BIT, AVX10_1 and AVX10_1_512.
383 * config/i386/constraints.md (Yk): Add AVX10_1.
384 (Yv): Ditto.
385 (k): Ditto.
386 * config/i386/cpuid.h (bit_AVX10): New.
387 (bit_AVX10_256): Ditto.
388 (bit_AVX10_512): Ditto.
389 * config/i386/i386-c.cc (ix86_target_macros_internal):
390 Define AVX10_512BIT and AVX10_1.
391 * config/i386/i386-isa.def
392 (AVX10_512BIT): Add DEF_PTA(AVX10_512BIT).
393 (AVX10_1): Add DEF_PTA(AVX10_1).
394 * config/i386/i386-options.cc (isa2_opts): Add -mavx10.1.
395 (ix86_valid_target_attribute_inner_p): Handle avx10-512bit, avx10.1
396 and avx10.1-512.
397 (ix86_option_override_internal): Enable AVX512{F,VL,BW,DQ,CD,BF16,
398 FP16,VBMI,VBMI2,VNNI,IFMA,BITALG,VPOPCNTDQ} features for avx10.1-512.
399 (ix86_valid_target_attribute_inner_p): Handle AVX10_1.
400 * config/i386/i386.cc (ix86_get_ssemov): Add AVX10_1.
401 (ix86_conditional_register_usage): Ditto.
402 (ix86_hard_regno_mode_ok): Ditto.
403 (ix86_rtx_costs): Ditto.
404 * config/i386/i386.h (VALID_MASK_AVX10_MODE): New macro.
405 * config/i386/i386.opt: Add option -mavx10.1, -mavx10.1-256 and
406 -mavx10.1-512.
407 * doc/extend.texi: Document avx10.1, avx10.1-256 and avx10.1-512.
408 * doc/invoke.texi: Document -mavx10.1, -mavx10.1-256 and -mavx10.1-512.
409 * doc/sourcebuild.texi: Document target avx10.1, avx10.1-256
410 and avx10.1-512.
411
412 2023-08-17 Sergei Trofimovich <siarheit@google.com>
413
414 * flag-types.h (vrp_mode): Remove unused.
415
416 2023-08-17 Yanzhang Wang <yanzhang.wang@intel.com>
417
418 * simplify-rtx.cc (simplify_context::simplify_binary_operation_1): Use
419 CONSTM1_RTX.
420
421 2023-08-17 Andrew Pinski <apinski@marvell.com>
422
423 * internal-fn.def (COND_NOT): New internal function.
424 * match.pd (UNCOND_UNARY, COND_UNARY): Add bit_not/not
425 to the lists.
426 (`vec (a ? -1 : 0) ^ b`): New pattern to convert
427 into conditional not.
428 * optabs.def (cond_one_cmpl): New optab.
429 (cond_len_one_cmpl): Likewise.
430
431 2023-08-16 Surya Kumari Jangala <jskumari@linux.ibm.com>
432
433 PR rtl-optimization/110254
434 * ira-color.cc (improve_allocation): Update array
435 allocated_hard_reg_p.
436
437 2023-08-16 Vladimir N. Makarov <vmakarov@redhat.com>
438
439 * lra-int.h (lra_update_fp2sp_elimination): Change the prototype.
440 * lra-eliminations.cc (spill_pseudos): Record spilled pseudos.
441 (lra_update_fp2sp_elimination): Ditto.
442 (update_reg_eliminate): Adjust spill_pseudos call.
443 * lra-spills.cc (lra_spill): Assign stack slots to pseudos spilled
444 in lra_update_fp2sp_elimination.
445
446 2023-08-16 Richard Ball <richard.ball@arm.com>
447
448 * config/aarch64/aarch64-cores.def (AARCH64_CORE): Add Cortex-A720 CPU.
449 * config/aarch64/aarch64-tune.md: Regenerate.
450 * doc/invoke.texi: Document Cortex-A720 CPU.
451
452 2023-08-16 Robin Dapp <rdapp@ventanamicro.com>
453
454 * config/riscv/autovec.md (<u>avg<v_double_trunc>3_floor):
455 Implement expander.
456 (<u>avg<v_double_trunc>3_ceil): Ditto.
457 * config/riscv/vector-iterators.md (ashiftrt): New iterator.
458 (ASHIFTRT): Ditto.
459
460 2023-08-16 Robin Dapp <rdapp@ventanamicro.com>
461
462 * internal-fn.cc (vec_extract_direct): Change type argument
463 numbers.
464 (expand_vec_extract_optab_fn): Call convert_optab_fn.
465 (direct_vec_extract_optab_supported_p): Use
466 convert_optab_supported_p.
467
468 2023-08-16 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
469 Richard Sandiford <richard.sandiford@arm.com>
470
471 * fold-const.cc (INCLUDE_ALGORITHM): Add Include.
472 (valid_mask_for_fold_vec_perm_cst_p): New function.
473 (fold_vec_perm_cst): Likewise.
474 (fold_vec_perm): Adjust assert and call fold_vec_perm_cst.
475 (test_fold_vec_perm_cst): New namespace.
476 (test_fold_vec_perm_cst::build_vec_cst_rand): New function.
477 (test_fold_vec_perm_cst::validate_res): Likewise.
478 (test_fold_vec_perm_cst::validate_res_vls): Likewise.
479 (test_fold_vec_perm_cst::builder_push_elems): Likewise.
480 (test_fold_vec_perm_cst::test_vnx4si_v4si): Likewise.
481 (test_fold_vec_perm_cst::test_v4si_vnx4si): Likewise.
482 (test_fold_vec_perm_cst::test_all_nunits): Likewise.
483 (test_fold_vec_perm_cst::test_nunits_min_2): Likewise.
484 (test_fold_vec_perm_cst::test_nunits_min_4): Likewise.
485 (test_fold_vec_perm_cst::test_nunits_min_8): Likewise.
486 (test_fold_vec_perm_cst::test_nunits_max_4): Likewise.
487 (test_fold_vec_perm_cst::is_simple_vla_size): Likewise.
488 (test_fold_vec_perm_cst::test): Likewise.
489 (fold_const_cc_tests): Call test_fold_vec_perm_cst::test.
490
491 2023-08-16 Pan Li <pan2.li@intel.com>
492
493 * config/riscv/riscv-vector-builtins-bases.cc
494 (BASE): New declaration.
495 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
496 * config/riscv/riscv-vector-builtins-functions.def
497 (vfwcvt_xu_frm): New intrinsic function def.
498
499 2023-08-16 Pan Li <pan2.li@intel.com>
500
501 * config/riscv/riscv-vector-builtins-bases.cc: Use explicit argument.
502
503 2023-08-16 Pan Li <pan2.li@intel.com>
504
505 * config/riscv/riscv-vector-builtins-bases.cc
506 (BASE): New declaration.
507 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
508 * config/riscv/riscv-vector-builtins-functions.def
509 (vfwcvt_x_frm): New intrinsic function def.
510
511 2023-08-16 Pan Li <pan2.li@intel.com>
512
513 * config/riscv/riscv-vector-builtins-bases.cc (BASE): New declaration.
514 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
515 * config/riscv/riscv-vector-builtins-functions.def
516 (vfcvt_f_frm): New intrinsic function def.
517
518 2023-08-16 Pan Li <pan2.li@intel.com>
519
520 * config/riscv/riscv-vector-builtins-bases.cc
521 (BASE): New declaration.
522 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
523 * config/riscv/riscv-vector-builtins-functions.def
524 (vfcvt_xu_frm): New intrinsic function def..
525
526 2023-08-16 Haochen Gui <guihaoc@gcc.gnu.org>
527
528 PR target/110429
529 * config/rs6000/vsx.md (*vsx_extract_<mode>_store_p9): Skip vector
530 extract when the element is 7 on BE while 8 on LE for byte or 3 on
531 BE while 4 on LE for halfword.
532
533 2023-08-16 Haochen Gui <guihaoc@gcc.gnu.org>
534
535 PR target/106769
536 * config/rs6000/vsx.md (expand vsx_extract_<mode>): Set it only
537 for V8HI and V16QI.
538 (vsx_extract_v4si): New expand for V4SI extraction.
539 (vsx_extract_v4si_w1): New insn pattern for V4SI extraction on
540 word 1 from BE order.
541 (*mfvsrwz): New insn pattern for mfvsrwz.
542 (*vsx_extract_<mode>_di_p9): Assert that it won't be generated on
543 word 1 from BE order.
544 (*vsx_extract_si): Remove.
545 (*vsx_extract_v4si_w023): New insn and split pattern on word 0, 2,
546 3 from BE order.
547
548 2023-08-16 Juzhe-Zhong <juzhe.zhong@rivai.ai>
549
550 * config/riscv/autovec.md (vec_mask_len_load_lanes<mode><vsingle>):
551 New pattern.
552 (vec_mask_len_store_lanes<mode><vsingle>): Ditto.
553 * config/riscv/riscv-protos.h (expand_lanes_load_store): New function.
554 * config/riscv/riscv-v.cc (get_mask_mode): Add tuple mask mode.
555 (expand_lanes_load_store): New function.
556 * config/riscv/vector-iterators.md: New iterator.
557
558 2023-08-16 Juzhe-Zhong <juzhe.zhong@rivai.ai>
559
560 * internal-fn.cc (internal_load_fn_p): Apply
561 MASK_LEN_{LOAD_LANES,STORE_LANES} into vectorizer.
562 (internal_store_fn_p): Ditto.
563 (internal_fn_len_index): Ditto.
564 (internal_fn_mask_index): Ditto.
565 (internal_fn_stored_value_index): Ditto.
566 * tree-vect-data-refs.cc (vect_store_lanes_supported): Ditto.
567 (vect_load_lanes_supported): Ditto.
568 * tree-vect-loop.cc: Ditto.
569 * tree-vect-slp.cc (vect_slp_prefer_store_lanes_p): Ditto.
570 * tree-vect-stmts.cc (check_load_store_for_partial_vectors): Ditto.
571 (get_group_load_store_type): Ditto.
572 (vectorizable_store): Ditto.
573 (vectorizable_load): Ditto.
574 * tree-vectorizer.h (vect_store_lanes_supported): Ditto.
575 (vect_load_lanes_supported): Ditto.
576
577 2023-08-16 Pan Li <pan2.li@intel.com>
578
579 * config/riscv/riscv-vector-builtins-bases.cc
580 (enum frm_op_type): New type for frm.
581 (BASE): New declaration.
582 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
583 * config/riscv/riscv-vector-builtins-functions.def
584 (vfcvt_x_frm): New intrinsic function def.
585
586 2023-08-16 liuhongt <hongtao.liu@intel.com>
587
588 * config/i386/i386-builtins.cc
589 (ix86_vectorize_builtin_gather): Adjust for use_gather_8parts.
590 * config/i386/i386-options.cc (parse_mtune_ctrl_str):
591 Set/Clear tune features use_{gather,scatter}_{2parts, 4parts,
592 8parts} for -mtune-crtl={,^}{use_gather,use_scatter}.
593 * config/i386/i386.cc (ix86_vectorize_builtin_scatter): Adjust
594 for use_scatter_8parts
595 * config/i386/i386.h (TARGET_USE_GATHER): Rename to ..
596 (TARGET_USE_GATHER_8PARTS): .. this.
597 (TARGET_USE_SCATTER): Rename to ..
598 (TARGET_USE_SCATTER_8PARTS): .. this.
599 * config/i386/x86-tune.def (X86_TUNE_USE_GATHER): Rename to
600 (X86_TUNE_USE_GATHER_8PARTS): .. this.
601 (X86_TUNE_USE_SCATTER): Rename to
602 (X86_TUNE_USE_SCATTER_8PARTS): .. this.
603 * config/i386/i386.opt: Add new options mgather, mscatter.
604
605 2023-08-16 liuhongt <hongtao.liu@intel.com>
606
607 * config/i386/i386-options.cc (m_GDS): New macro.
608 * config/i386/x86-tune.def (X86_TUNE_USE_GATHER_2PARTS): Don't
609 enable for m_GDS.
610 (X86_TUNE_USE_GATHER_4PARTS): Ditto.
611 (X86_TUNE_USE_GATHER): Ditto.
612
613 2023-08-16 liuhongt <hongtao.liu@intel.com>
614
615 * config/i386/i386.md (movdf_internal): Generate vmovapd instead of
616 vmovsd when moving DFmode between SSE_REGS.
617 (movhi_internal): Generate vmovdqa instead of vmovsh when
618 moving HImode between SSE_REGS.
619 (mov<mode>_internal): Use vmovaps instead of vmovsh when
620 moving HF/BFmode between SSE_REGS.
621
622 2023-08-15 David Faust <david.faust@oracle.com>
623
624 * config/bpf/bpf.md (extendsisi2): Delete useless define_insn.
625
626 2023-08-15 David Faust <david.faust@oracle.com>
627
628 PR target/111029
629 * config/bpf/bpf.cc (bpf_print_register): Print 'w' registers
630 for any mode 32-bits or smaller, not just SImode.
631
632 2023-08-15 Martin Jambor <mjambor@suse.cz>
633
634 PR ipa/68930
635 PR ipa/92497
636 * ipa-prop.h (ipcp_get_aggregate_const): Declare.
637 * ipa-prop.cc (ipcp_get_aggregate_const): New function.
638 (ipcp_transform_function): Do not deallocate transformation info.
639 * tree-ssa-sccvn.cc: Include alloc-pool.h, symbol-summary.h and
640 ipa-prop.h.
641 (vn_reference_lookup_2): When hitting default-def vuse, query
642 IPA-CP transformation info for any known constants.
643
644 2023-08-15 Chung-Lin Tang <cltang@codesourcery.com>
645 Thomas Schwinge <thomas@codesourcery.com>
646
647 * gimplify.cc (oacc_region_type_name): New function.
648 (oacc_default_clause): If no 'default' clause appears on this
649 compute construct, see if one appears on a lexically containing
650 'data' construct.
651 (gimplify_scan_omp_clauses): Upon OMP_CLAUSE_DEFAULT case, set
652 ctx->oacc_default_clause_ctx to current context.
653
654 2023-08-15 Juzhe-Zhong <juzhe.zhong@rivai.ai>
655
656 PR target/110989
657 * config/riscv/predicates.md: Fix predicate.
658
659 2023-08-15 Richard Biener <rguenther@suse.de>
660
661 * tree-vect-slp.cc (vect_analyze_slp_instance): Remove
662 slp_inst_kind_ctor handling.
663 (vect_analyze_slp): Simplify.
664 (vect_build_slp_instance): Dump when we analyze a CTOR.
665 (vect_slp_check_for_constructors): Rename to ...
666 (vect_slp_check_for_roots): ... this. Register a
667 slp_root for CONSTRUCTORs instead of shoving them to
668 the set of grouped stores.
669 (vect_slp_analyze_bb_1): Adjust.
670
671 2023-08-15 Richard Biener <rguenther@suse.de>
672
673 * tree-vectorizer.h (_slp_instance::remain_stmts): Change
674 to ...
675 (_slp_instance::remain_defs): ... this.
676 (SLP_INSTANCE_REMAIN_STMTS): Rename to ...
677 (SLP_INSTANCE_REMAIN_DEFS): ... this.
678 (slp_root::remain): New.
679 (slp_root::slp_root): Adjust.
680 * tree-vect-slp.cc (vect_free_slp_instance): Adjust.
681 (vect_build_slp_instance): Get extra remain parameter,
682 adjust former handling of a cut off stmt.
683 (vect_analyze_slp_instance): Adjust.
684 (vect_analyze_slp): Likewise.
685 (_bb_vec_info::~_bb_vec_info): Likewise.
686 (vectorizable_bb_reduc_epilogue): Dump something if we fail.
687 (vect_slp_check_for_constructors): Handle non-internal
688 defs as remain defs of a reduction.
689 (vectorize_slp_instance_root_stmt): Adjust.
690
691 2023-08-15 Richard Biener <rguenther@suse.de>
692
693 * tree-ssa-loop-ivcanon.cc: Include tree-vectorizer.h
694 (canonicalize_loop_induction_variables): Use find_loop_location.
695
696 2023-08-15 Hans-Peter Nilsson <hp@axis.com>
697
698 PR bootstrap/111021
699 * config/cris/cris-protos.h: Revert recent change.
700 * config/cris/cris.cc (cris_legitimate_address_p): Remove
701 code_helper unused parameter.
702 (cris_legitimate_address_p_hook): New wrapper function.
703 (TARGET_LEGITIMATE_ADDRESS_P): Change to
704 cris_legitimate_address_p_hook.
705
706 2023-08-15 Richard Biener <rguenther@suse.de>
707
708 PR tree-optimization/110963
709 * tree-ssa-pre.cc (do_pre_regular_insertion): Also insert
710 a PHI node when the expression is available on all edges
711 and we insert at most one copy from a constant.
712
713 2023-08-15 Richard Biener <rguenther@suse.de>
714
715 PR tree-optimization/110991
716 * tree-ssa-loop-ivcanon.cc (constant_after_peeling): Handle
717 VIEW_CONVERT_EXPR <op>, handle more simple IV-like SSA cycles
718 that will end up constant.
719
720 2023-08-15 Kewen Lin <linkw@linux.ibm.com>
721
722 PR bootstrap/111021
723 * Makefile.in (RECOG_H): Add $(TREE_H) as dependence.
724
725 2023-08-15 Kewen Lin <linkw@linux.ibm.com>
726
727 * tree-vect-stmts.cc (vectorizable_load): Move the handlings on
728 VMAT_LOAD_STORE_LANES in the final loop nest to its own loop,
729 and update the final nest accordingly.
730
731 2023-08-15 Kewen Lin <linkw@linux.ibm.com>
732
733 * tree-vect-stmts.cc (vectorizable_load): Remove some useless checks
734 on VMAT_INVARIANT.
735
736 2023-08-15 Pan Li <pan2.li@intel.com>
737
738 * mode-switching.cc (create_pre_exit): Add SET insn check.
739
740 2023-08-15 Pan Li <pan2.li@intel.com>
741
742 * config/riscv/riscv-vector-builtins-bases.cc
743 (class vfrec7_frm): New class for frm.
744 (vfrec7_frm_obj): New declaration.
745 (BASE): Ditto.
746 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
747 * config/riscv/riscv-vector-builtins-functions.def
748 (vfrec7_frm): New intrinsic function definition.
749 * config/riscv/vector-iterators.md
750 (VFMISC): Remove VFREC7.
751 (misc_op): Ditto.
752 (float_insn_type): Ditto.
753 (VFMISC_FRM): New int iterator.
754 (misc_frm_op): New op for frm.
755 (float_frm_insn_type): New type for frm.
756 * config/riscv/vector.md (@pred_<misc_frm_op><mode>):
757 New pattern for misc frm.
758
759 2023-08-14 Vladimir N. Makarov <vmakarov@redhat.com>
760
761 * lra-constraints.cc (curr_insn_transform): Process output stack
762 pointer reloads before emitting reload insns.
763
764 2023-08-14 benjamin priour <vultkayn@gcc.gnu.org>
765
766 PR analyzer/110543
767 * doc/invoke.texi: Add documentation of
768 fanalyzer-show-events-in-system-headers
769
770 2023-08-14 Jan Hubicka <jh@suse.cz>
771
772 PR gcov-profile/110988
773 * tree-cfg.cc (fold_loop_internal_call): Avoid division by zero.
774
775 2023-08-14 Jiawei <jiawei@iscas.ac.cn>
776
777 * config/riscv/riscv-c.cc (riscv_cpu_cpp_builtins):
778 Enable compressed builtins when ZC* extensions enabled.
779 * config/riscv/riscv-shorten-memrefs.cc:
780 Enable shorten_memrefs pass when ZC* extensions enabled.
781 * config/riscv/riscv.cc (riscv_compressed_reg_p):
782 Enable compressible registers when ZC* extensions enabled.
783 (riscv_rtx_costs): Allow adjusting rtx costs when ZC* extensions enabled.
784 (riscv_address_cost): Allow adjusting address cost when ZC* extensions enabled.
785 (riscv_first_stack_step): Allow compression of the register saves
786 without adding extra instructions.
787 * config/riscv/riscv.h (FUNCTION_BOUNDARY): Adjusts function boundary
788 to 16 bits when ZC* extensions enabled.
789
790 2023-08-14 Jiawei <jiawei@iscas.ac.cn>
791
792 * common/config/riscv/riscv-common.cc (riscv_subset_list::parse): New extensions.
793 * config/riscv/riscv-opts.h (MASK_ZCA): New mask.
794 (MASK_ZCB): Ditto.
795 (MASK_ZCE): Ditto.
796 (MASK_ZCF): Ditto.
797 (MASK_ZCD): Ditto.
798 (MASK_ZCMP): Ditto.
799 (MASK_ZCMT): Ditto.
800 (TARGET_ZCA): New target.
801 (TARGET_ZCB): Ditto.
802 (TARGET_ZCE): Ditto.
803 (TARGET_ZCF): Ditto.
804 (TARGET_ZCD): Ditto.
805 (TARGET_ZCMP): Ditto.
806 (TARGET_ZCMT): Ditto.
807 * config/riscv/riscv.opt: New target variable.
808
809 2023-08-14 Juzhe-Zhong <juzhe.zhong@rivai.ai>
810
811 Revert:
812 2023-05-17 Jin Ma <jinma@linux.alibaba.com>
813
814 * genrecog.cc (print_nonbool_test): Fix type error of
815 switch (SUBREG_BYTE (op))'.
816
817 2023-08-14 Richard Biener <rguenther@suse.de>
818
819 * tree-cfg.cc (print_loop_info): Dump to 'file', not 'dump_file'.
820
821 2023-08-14 Pan Li <pan2.li@intel.com>
822
823 * config/riscv/riscv-vector-builtins-bases.cc
824 (class unop_frm): New class for frm.
825 (vfsqrt_frm_obj): New declaration.
826 (BASE): Ditto.
827 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
828 * config/riscv/riscv-vector-builtins-functions.def
829 (vfsqrt_frm): New intrinsic function definition.
830
831 2023-08-14 Pan Li <pan2.li@intel.com>
832
833 * config/riscv/riscv-vector-builtins-bases.cc
834 (class vfwnmsac_frm): New class for frm.
835 (vfwnmsac_frm_obj): New declaration.
836 (BASE): Ditto.
837 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
838 * config/riscv/riscv-vector-builtins-functions.def
839 (vfwnmsac_frm): New intrinsic function definition.
840
841 2023-08-14 Pan Li <pan2.li@intel.com>
842
843 * config/riscv/riscv-vector-builtins-bases.cc
844 (class vfwmsac_frm): New class for frm.
845 (vfwmsac_frm_obj): New declaration.
846 (BASE): Ditto.
847 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
848 * config/riscv/riscv-vector-builtins-functions.def
849 (vfwmsac_frm): New intrinsic function definition.
850
851 2023-08-14 Pan Li <pan2.li@intel.com>
852
853 * config/riscv/riscv-vector-builtins-bases.cc
854 (class vfwnmacc_frm): New class for frm.
855 (vfwnmacc_frm_obj): New declaration.
856 (BASE): Ditto.
857 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
858 * config/riscv/riscv-vector-builtins-functions.def
859 (vfwnmacc_frm): New intrinsic function definition.
860
861 2023-08-14 Cui, Lili <lili.cui@intel.com>
862
863 * common/config/i386/cpuinfo.h (get_intel_cpu): Add model value 0xba
864 to Raptorlake.
865
866 2023-08-14 Hans-Peter Nilsson <hp@axis.com>
867
868 * config/mmix/predicates.md (mmix_address_operand): Use
869 lra_in_progress, not reload_in_progress.
870
871 2023-08-14 Hans-Peter Nilsson <hp@axis.com>
872
873 * config/mmix/mmix.cc: Re-enable LRA.
874
875 2023-08-14 Hans-Peter Nilsson <hp@axis.com>
876
877 * config/mmix/predicates.md (frame_pointer_operand): Handle FP+offset
878 when lra_in_progress.
879
880 2023-08-14 Hans-Peter Nilsson <hp@axis.com>
881
882 * config/mmix/mmix.cc: Disable LRA for MMIX.
883
884 2023-08-14 Pan Li <pan2.li@intel.com>
885
886 * config/riscv/riscv-vector-builtins-bases.cc
887 (class vfwmacc_frm): New class for vfwmacc frm.
888 (vfwmacc_frm_obj): New declaration.
889 (BASE): Ditto.
890 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
891 * config/riscv/riscv-vector-builtins-functions.def
892 (vfwmacc_frm): Function definition for vfwmacc.
893 * config/riscv/riscv-vector-builtins.cc
894 (function_expander::use_widen_ternop_insn): Add frm support.
895
896 2023-08-14 Pan Li <pan2.li@intel.com>
897
898 * config/riscv/riscv-vector-builtins-bases.cc
899 (class vfnmsub_frm): New class for vfnmsub frm.
900 (vfnmsub_frm): New declaration.
901 (BASE): Ditto.
902 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
903 * config/riscv/riscv-vector-builtins-functions.def
904 (vfnmsub_frm): New function declaration.
905
906 2023-08-14 Vladimir N. Makarov <vmakarov@redhat.com>
907
908 * lra-constraints.cc (curr_insn_transform): Set done_p up and
909 check it on true after processing output stack pointer reload.
910
911 2023-08-12 Jakub Jelinek <jakub@redhat.com>
912
913 * Makefile.in (USER_H): Add stdckdint.h.
914 * ginclude/stdckdint.h: New file.
915
916 2023-08-12 Juzhe-Zhong <juzhe.zhong@rivai.ai>
917
918 PR target/110994
919 * config/riscv/riscv-opts.h (TARGET_VECTOR_VLS): Add TARGET_VETOR.
920
921 2023-08-12 Patrick Palka <ppalka@redhat.com>
922
923 * tree-pretty-print.cc (dump_generic_node) <case TREE_VEC>:
924 Delimit output with braces.
925
926 2023-08-12 Juzhe-Zhong <juzhe.zhong@rivai.ai>
927
928 PR target/110985
929 * config/riscv/riscv-v.cc (expand_vec_series): Refactor the expander.
930
931 2023-08-12 Juzhe-Zhong <juzhe.zhong@rivai.ai>
932
933 * config/riscv/autovec.md: Add VLS CONST_VECTOR.
934 * config/riscv/riscv.cc (riscv_const_insns): Ditto.
935 * config/riscv/vector.md: Ditto.
936
937 2023-08-11 David Malcolm <dmalcolm@redhat.com>
938
939 PR analyzer/105899
940 * doc/analyzer.texi (__analyzer_get_strlen): New.
941 * doc/invoke.texi: Add -Wanalyzer-unterminated-string.
942
943 2023-08-11 Jeff Law <jlaw@ventanamicro.com>
944
945 * config/rx/rx.md (subdi3): Fix test for borrow.
946
947 2023-08-11 Juzhe-Zhong <juzhe.zhong@rivai.ai>
948
949 PR middle-end/110989
950 * tree-vect-stmts.cc (vectorizable_store): Replace iv_type with sizetype.
951 (vectorizable_load): Ditto.
952
953 2023-08-11 Jose E. Marchesi <jose.marchesi@oracle.com>
954
955 * config/bpf/bpf.md (allocate_stack): Define.
956 * config/bpf/bpf.h (FIRST_PSEUDO_REGISTER): Make room for fake
957 stack pointer register.
958 (FIXED_REGISTERS): Adjust accordingly.
959 (CALL_USED_REGISTERS): Likewise.
960 (REG_CLASS_CONTENTS): Likewise.
961 (REGISTER_NAMES): Likewise.
962 * config/bpf/bpf.cc (bpf_compute_frame_layout): Do not reserve
963 space for callee-saved registers.
964 (bpf_expand_prologue): Do not save callee-saved registers in xbpf.
965 (bpf_expand_epilogue): Do not restore callee-saved registers in
966 xbpf.
967
968 2023-08-11 Jose E. Marchesi <jose.marchesi@oracle.com>
969
970 * config/bpf/bpf.cc (bpf_function_arg_advance): Do not complain
971 about too many arguments if function is always inlined.
972
973 2023-08-11 Patrick Palka <ppalka@redhat.com>
974
975 * tree-pretty-print.cc (dump_generic_node) <case COMPONENT_REF>:
976 Don't call component_ref_field_offset if the RHS isn't a decl.
977
978 2023-08-11 John David Anglin <danglin@gcc.gnu.org>
979
980 PR bootstrap/110646
981 * gensupport.cc(class conlist): Use strtol instead of std::stoi.
982
983 2023-08-11 Vladimir N. Makarov <vmakarov@redhat.com>
984
985 * lra-constraints.cc (goal_alt_out_sp_reload_p): New flag.
986 (process_alt_operands): Set the flag.
987 (curr_insn_transform): Modify stack pointer offsets if output
988 stack pointer reload is generated.
989
990 2023-08-11 Joseph Myers <joseph@codesourcery.com>
991
992 * configure: Regenerate.
993
994 2023-08-11 Richard Biener <rguenther@suse.de>
995
996 PR tree-optimization/110979
997 * tree-vect-loop.cc (vectorizable_reduction): For
998 FOLD_LEFT_REDUCTION without target support make sure
999 we don't need to honor signed zeros and sign dependent rounding.
1000
1001 2023-08-11 Richard Biener <rguenther@suse.de>
1002
1003 * tree-vect-slp.cc (vect_slp_region): Provide opt-info for all SLP
1004 subgraph entries. Dump the used vector size based on the
1005 SLP subgraph entry root vector type.
1006
1007 2023-08-11 Pan Li <pan2.li@intel.com>
1008
1009 * config/riscv/riscv-vector-builtins-bases.cc
1010 (class vfmsub_frm): New class for vfmsub frm.
1011 (vfmsub_frm): New declaration.
1012 (BASE): Ditto.
1013 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
1014 * config/riscv/riscv-vector-builtins-functions.def
1015 (vfmsub_frm): New function declaration.
1016
1017 2023-08-11 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1018
1019 * doc/md.texi: Add vec_mask_len_{load_lanes,store_lanes} patterns.
1020 * internal-fn.cc (expand_partial_load_optab_fn): Ditto.
1021 (expand_partial_store_optab_fn): Ditto.
1022 * internal-fn.def (MASK_LEN_LOAD_LANES): Ditto.
1023 (MASK_LEN_STORE_LANES): Ditto.
1024 * optabs.def (OPTAB_CD): Ditto.
1025
1026 2023-08-11 Pan Li <pan2.li@intel.com>
1027
1028 * config/riscv/riscv-vector-builtins-bases.cc
1029 (class vfnmadd_frm): New class for vfnmadd frm.
1030 (vfnmadd_frm): New declaration.
1031 (BASE): Ditto.
1032 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
1033 * config/riscv/riscv-vector-builtins-functions.def
1034 (vfnmadd_frm): New function declaration.
1035
1036 2023-08-11 Drew Ross <drross@redhat.com>
1037 Jakub Jelinek <jakub@redhat.com>
1038
1039 PR tree-optimization/109938
1040 * match.pd (((x ^ y) & z) | x -> (z & y) | x): New simplification.
1041
1042 2023-08-11 Pan Li <pan2.li@intel.com>
1043
1044 * config/riscv/riscv-vector-builtins-bases.cc
1045 (class vfmadd_frm): New class for vfmadd frm.
1046 (vfmadd_frm_obj): New declaration.
1047 (BASE): Ditto.
1048 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
1049 * config/riscv/riscv-vector-builtins-functions.def
1050 (vfmadd_frm): New function definition.
1051
1052 2023-08-11 Pan Li <pan2.li@intel.com>
1053
1054 * config/riscv/riscv-vector-builtins-bases.cc
1055 (class vfnmsac_frm): New class for vfnmsac frm.
1056 (vfnmsac_frm_obj): New declaration.
1057 (BASE): Ditto.
1058 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
1059 * config/riscv/riscv-vector-builtins-functions.def
1060 (vfnmsac_frm): New function definition.
1061
1062 2023-08-11 Jakub Jelinek <jakub@redhat.com>
1063
1064 * doc/extend.texi (Typeof): Document typeof_unqual
1065 and __typeof_unqual__.
1066
1067 2023-08-11 Andrew Pinski <apinski@marvell.com>
1068
1069 PR tree-optimization/110954
1070 * generic-match-head.cc (bitwise_inverted_equal_p): Add
1071 wascmp argument and set it accordingly.
1072 * gimple-match-head.cc (bitwise_inverted_equal_p): Add
1073 wascmp argument to the macro.
1074 (gimple_bitwise_inverted_equal_p): Add
1075 wascmp argument and set it accordingly.
1076 * match.pd (`a & ~a`, `a ^| ~a`): Update call
1077 to bitwise_inverted_equal_p and handle wascmp case.
1078 (`(~x | y) & x`, `(~x | y) & x`, `a?~t:t`): Update
1079 call to bitwise_inverted_equal_p and check to see
1080 if was !wascmp or if precision was 1.
1081
1082 2023-08-11 Martin Uecker <uecker@tugraz.at>
1083
1084 PR c/84510
1085 * doc/invoke.texi: Update.
1086
1087 2023-08-11 Pan Li <pan2.li@intel.com>
1088
1089 * config/riscv/riscv-vector-builtins-bases.cc
1090 (class vfmsac_frm): New class for vfmsac frm.
1091 (vfmsac_frm_obj): New declaration.
1092 (BASE): Ditto.
1093 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
1094 * config/riscv/riscv-vector-builtins-functions.def
1095 (vfmsac_frm): New function definition
1096
1097 2023-08-10 Jan Hubicka <jh@suse.cz>
1098
1099 PR middle-end/110923
1100 * tree-ssa-loop-split.cc (split_loop): Watch for division by zero.
1101
1102 2023-08-10 Patrick O'Neill <patrick@rivosinc.com>
1103
1104 * common/config/riscv/riscv-common.cc: Add Ztso and mark Ztso as
1105 dependent on 'a' extension.
1106 * config/riscv/riscv-opts.h (MASK_ZTSO): New mask.
1107 (TARGET_ZTSO): New target.
1108 * config/riscv/riscv.cc (riscv_memmodel_needs_amo_acquire): Add
1109 Ztso case.
1110 (riscv_memmodel_needs_amo_release): Add Ztso case.
1111 (riscv_print_operand): Add Ztso case for LR/SC annotations.
1112 * config/riscv/riscv.md: Import sync-rvwmo.md and sync-ztso.md.
1113 * config/riscv/riscv.opt: Add Ztso target variable.
1114 * config/riscv/sync.md (mem_thread_fence_1): Expand to RVWMO or
1115 Ztso specific insn.
1116 (atomic_load<mode>): Expand to RVWMO or Ztso specific insn.
1117 (atomic_store<mode>): Expand to RVWMO or Ztso specific insn.
1118 * config/riscv/sync-rvwmo.md: New file. Seperate out RVWMO
1119 specific load/store/fence mappings.
1120 * config/riscv/sync-ztso.md: New file. Seperate out Ztso
1121 specific load/store/fence mappings.
1122
1123 2023-08-10 Jan Hubicka <jh@suse.cz>
1124
1125 * cfgloopmanip.cc (duplicate_loop_body_to_header_edge): Special case loops with
1126 0 iteration count.
1127
1128 2023-08-10 Jan Hubicka <jh@suse.cz>
1129
1130 * tree-ssa-threadupdate.cc (ssa_fix_duplicate_block_edges): Fix profile update.
1131
1132 2023-08-10 Jan Hubicka <jh@suse.cz>
1133
1134 * profile-count.cc (profile_count::differs_from_p): Fix overflow and
1135 handling of undefined values.
1136
1137 2023-08-10 Jakub Jelinek <jakub@redhat.com>
1138
1139 PR c/102989
1140 * tree-ssa-phiopt.cc (single_non_singleton_phi_for_edges): Never
1141 return virtual phis and return NULL if there is a virtual phi
1142 where the arguments from E0 and E1 edges aren't equal.
1143
1144 2023-08-10 Richard Biener <rguenther@suse.de>
1145
1146 * internal-fn.def (VCOND, VCONDU, VCONDEQ, VCOND_MASK,
1147 VEC_SET, VEC_EXTRACT): Make ECF_CONST | ECF_NOTHROW.
1148
1149 2023-08-10 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1150
1151 PR target/110962
1152 * config/riscv/autovec.md (vec_duplicate<mode>): New pattern.
1153
1154 2023-08-10 Pan Li <pan2.li@intel.com>
1155
1156 * config/riscv/riscv-vector-builtins-bases.cc
1157 (class vfnmacc_frm): New class for vfnmacc.
1158 (vfnmacc_frm_obj): New declaration.
1159 (BASE): Ditto.
1160 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
1161 * config/riscv/riscv-vector-builtins-functions.def
1162 (vfnmacc_frm): New function definition.
1163
1164 2023-08-10 Pan Li <pan2.li@intel.com>
1165
1166 * config/riscv/riscv-vector-builtins-bases.cc
1167 (class vfmacc_frm): New class for vfmacc frm.
1168 (vfmacc_frm_obj): New declaration.
1169 (BASE): Ditto.
1170 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
1171 * config/riscv/riscv-vector-builtins-functions.def
1172 (vfmacc_frm): New function definition.
1173
1174 2023-08-10 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1175
1176 PR target/110964
1177 * config/riscv/riscv-v.cc (expand_cond_len_ternop): Add integer ternary.
1178
1179 2023-08-10 Richard Biener <rguenther@suse.de>
1180
1181 * tree-vectorizer.h (vectorizable_live_operation): Remove
1182 gimple_stmt_iterator * argument.
1183 * tree-vect-loop.cc (vectorizable_live_operation): Likewise.
1184 Adjust plumbing around vect_get_loop_mask.
1185 (vect_analyze_loop_operations): Adjust.
1186 * tree-vect-slp.cc (vect_slp_analyze_node_operations_1): Likewise.
1187 (vect_bb_slp_mark_live_stmts): Likewise.
1188 (vect_schedule_slp_node): Likewise.
1189 * tree-vect-stmts.cc (can_vectorize_live_stmts): Likewise.
1190 Remove gimple_stmt_iterator * argument.
1191 (vect_transform_stmt): Adjust.
1192
1193 2023-08-10 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1194
1195 * config/riscv/vector-iterators.md: Add missing modes.
1196
1197 2023-08-10 Jakub Jelinek <jakub@redhat.com>
1198
1199 PR c/102989
1200 * lto-streamer-in.cc (lto_input_tree_1): Assert TYPE_PRECISION
1201 is up to WIDE_INT_MAX_PRECISION rather than MAX_BITSIZE_MODE_ANY_INT.
1202
1203 2023-08-10 Jakub Jelinek <jakub@redhat.com>
1204
1205 PR c/102989
1206 * expr.cc (expand_expr_real_1) <case MEM_REF>: Add an early return for
1207 EXPAND_WRITE or EXPAND_MEMORY modifiers to avoid testing it multiple
1208 times.
1209
1210 2023-08-10 liuhongt <hongtao.liu@intel.com>
1211
1212 PR target/110832
1213 * config/i386/mmx.md: (movq_<mode>_to_sse): Also do not
1214 sanitize upper part of V4HFmode register with
1215 -fno-trapping-math.
1216 (<insn>v4hf3): Enable for ix86_partial_vec_fp_math.
1217 (<divv4hf3): Ditto.
1218 (<insn>v2hf3): Ditto.
1219 (divv2hf3): Ditto.
1220 (movd_v2hf_to_sse): Do not sanitize upper part of V2HFmode
1221 register with -fno-trapping-math.
1222
1223 2023-08-10 Pan Li <pan2.li@intel.com>
1224 Kito Cheng <kito.cheng@sifive.com>
1225
1226 * config/riscv/riscv-protos.h
1227 (enum floating_point_rounding_mode): Add NONE, DYN_EXIT and DYN_CALL.
1228 (get_frm_mode): New declaration.
1229 * config/riscv/riscv-v.cc (get_frm_mode): New function to get frm mode.
1230 * config/riscv/riscv-vector-builtins.cc
1231 (function_expander::use_ternop_insn): Take care of frm reg.
1232 * config/riscv/riscv.cc (riscv_static_frm_mode_p): Migrate to FRM_XXX.
1233 (riscv_emit_frm_mode_set): Ditto.
1234 (riscv_emit_mode_set): Ditto.
1235 (riscv_frm_adjust_mode_after_call): Ditto.
1236 (riscv_frm_mode_needed): Ditto.
1237 (riscv_frm_mode_after): Ditto.
1238 (riscv_mode_entry): Ditto.
1239 (riscv_mode_exit): Ditto.
1240 * config/riscv/riscv.h (NUM_MODES_FOR_MODE_SWITCHING): Ditto.
1241 * config/riscv/vector.md
1242 (rne,rtz,rdn,rup,rmm,dyn,dyn_exit,dyn_call,none): Removed
1243 (symbol_ref): * config/riscv/vector.md: Set frm_mode attr explicitly.
1244
1245 2023-08-09 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1246
1247 * config/riscv/riscv-vsetvl.cc (anticipatable_occurrence_p): Fix
1248 incorrect anticipate info.
1249
1250 2023-08-09 Tsukasa OI <research_trasio@irq.a4lg.com>
1251
1252 * common/config/riscv/riscv-common.cc (riscv_ext_version_table):
1253 Remove 'Zve32d' from the version list.
1254
1255 2023-08-09 Jin Ma <jinma@linux.alibaba.com>
1256
1257 * config/riscv/riscv.cc (riscv_sched_variable_issue): New function.
1258 (TARGET_SCHED_VARIABLE_ISSUE): New macro.
1259 Co-authored-by: Philipp Tomsich <philipp.tomsich@vrull.eu>
1260 Co-authored-by: Jeff Law <jlaw@ventanamicro.com>
1261
1262 2023-08-09 Jivan Hakobyan <jivanhakobyan9@gmail.com>
1263
1264 * config/riscv/riscv.cc (riscv_legitimize_address): Handle folding.
1265 (mem_shadd_or_shadd_rtx_p): New function.
1266
1267 2023-08-09 Andrew Pinski <apinski@marvell.com>
1268
1269 PR tree-optimization/110937
1270 PR tree-optimization/100798
1271 * match.pd (`a ? ~b : b`): Handle this
1272 case.
1273
1274 2023-08-09 Uros Bizjak <ubizjak@gmail.com>
1275
1276 * config/i386/i386.opt (mpartial-vector-fp-math): Add dot.
1277
1278 2023-08-09 Richard Ball <richard.ball@arm.com>
1279
1280 * config/aarch64/aarch64-cores.def (AARCH64_CORE): Add Cortex-A520 CPU.
1281 * config/aarch64/aarch64-tune.md: Regenerate.
1282 * doc/invoke.texi: Document Cortex-A520 CPU.
1283
1284 2023-08-09 Carl Love <cel@us.ibm.com>
1285
1286 * config/rs6000/rs6000-builtins.def (vcmpneb, vcmpneh, vcmpnew):
1287 Move definitions to Altivec stanza.
1288 * config/rs6000/altivec.md (vcmpneb, vcmpneh, vcmpnew): New
1289 define_expand.
1290
1291 2023-08-09 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1292
1293 PR target/110950
1294 * config/riscv/riscv-v.cc (expand_const_vector): Add NPATTERNS = 1
1295 stepped vector support.
1296
1297 2023-08-09 liuhongt <hongtao.liu@intel.com>
1298
1299 * common/config/i386/cpuinfo.h (get_available_features):
1300 Rename local variable subleaf_level to max_subleaf_level.
1301
1302 2023-08-09 Richard Biener <rguenther@suse.de>
1303
1304 PR rtl-optimization/110587
1305 * lra-assigns.cc (find_hard_regno_for_1): Re-order checks.
1306
1307 2023-08-09 Kewen Lin <linkw@linux.ibm.com>
1308
1309 PR tree-optimization/110248
1310 * config/rs6000/rs6000.cc (rs6000_legitimate_address_p): Check if
1311 the given code is for ifn LEN_{LOAD,STORE}, if yes then make it not
1312 legitimate when outer code is PLUS.
1313
1314 2023-08-09 Kewen Lin <linkw@linux.ibm.com>
1315
1316 PR tree-optimization/110248
1317 * recog.cc (memory_address_addr_space_p): Add one more argument ch of
1318 type code_helper and pass it to targetm.addr_space.legitimate_address_p
1319 instead of ERROR_MARK.
1320 (offsettable_address_addr_space_p): Update one function pointer with
1321 one more argument of type code_helper as its assignees
1322 memory_address_addr_space_p and strict_memory_address_addr_space_p
1323 have been adjusted, and adjust some call sites with ERROR_MARK.
1324 * recog.h (tree.h): New include header file for tree_code ERROR_MARK.
1325 (memory_address_addr_space_p): Adjust with one more unnamed argument
1326 of type code_helper with default ERROR_MARK.
1327 (strict_memory_address_addr_space_p): Likewise.
1328 * reload.cc (strict_memory_address_addr_space_p): Add one unnamed
1329 argument of type code_helper.
1330 * tree-ssa-address.cc (valid_mem_ref_p): Add one more argument ch of
1331 type code_helper and pass it to memory_address_addr_space_p.
1332 * tree-ssa-address.h (valid_mem_ref_p): Adjust the declaration with
1333 one more unnamed argument of type code_helper with default value
1334 ERROR_MARK.
1335 * tree-ssa-loop-ivopts.cc (get_address_cost): Use ERROR_MARK as code
1336 by default, change it with ifn code for USE_PTR_ADDRESS type use, and
1337 pass it to all valid_mem_ref_p calls.
1338
1339 2023-08-09 Kewen Lin <linkw@linux.ibm.com>
1340
1341 PR tree-optimization/110248
1342 * coretypes.h (class code_helper): Add forward declaration.
1343 * doc/tm.texi: Regenerate.
1344 * lra-constraints.cc (valid_address_p): Call target hook
1345 targetm.addr_space.legitimate_address_p with an extra parameter
1346 ERROR_MARK as its prototype changes.
1347 * recog.cc (memory_address_addr_space_p): Likewise.
1348 * reload.cc (strict_memory_address_addr_space_p): Likewise.
1349 * target.def (legitimate_address_p, addr_space.legitimate_address_p):
1350 Extend with one more argument of type code_helper, update the
1351 documentation accordingly.
1352 * targhooks.cc (default_legitimate_address_p): Adjust for the
1353 new code_helper argument.
1354 (default_addr_space_legitimate_address_p): Likewise.
1355 * targhooks.h (default_legitimate_address_p): Likewise.
1356 (default_addr_space_legitimate_address_p): Likewise.
1357 * config/aarch64/aarch64.cc (aarch64_legitimate_address_hook_p): Adjust
1358 with extra unnamed code_helper argument with default ERROR_MARK.
1359 * config/alpha/alpha.cc (alpha_legitimate_address_p): Likewise.
1360 * config/arc/arc.cc (arc_legitimate_address_p): Likewise.
1361 * config/arm/arm-protos.h (arm_legitimate_address_p): Likewise.
1362 (tree.h): New include for tree_code ERROR_MARK.
1363 * config/arm/arm.cc (arm_legitimate_address_p): Adjust with extra
1364 unnamed code_helper argument with default ERROR_MARK.
1365 * config/avr/avr.cc (avr_addr_space_legitimate_address_p): Likewise.
1366 * config/bfin/bfin.cc (bfin_legitimate_address_p): Likewise.
1367 * config/bpf/bpf.cc (bpf_legitimate_address_p): Likewise.
1368 * config/c6x/c6x.cc (c6x_legitimate_address_p): Likewise.
1369 * config/cris/cris-protos.h (cris_legitimate_address_p): Likewise.
1370 (tree.h): New include for tree_code ERROR_MARK.
1371 * config/cris/cris.cc (cris_legitimate_address_p): Adjust with extra
1372 unnamed code_helper argument with default ERROR_MARK.
1373 * config/csky/csky.cc (csky_legitimate_address_p): Likewise.
1374 * config/epiphany/epiphany.cc (epiphany_legitimate_address_p):
1375 Likewise.
1376 * config/frv/frv.cc (frv_legitimate_address_p): Likewise.
1377 * config/ft32/ft32.cc (ft32_addr_space_legitimate_address_p): Likewise.
1378 * config/gcn/gcn.cc (gcn_addr_space_legitimate_address_p): Likewise.
1379 * config/h8300/h8300.cc (h8300_legitimate_address_p): Likewise.
1380 * config/i386/i386.cc (ix86_legitimate_address_p): Likewise.
1381 * config/ia64/ia64.cc (ia64_legitimate_address_p): Likewise.
1382 * config/iq2000/iq2000.cc (iq2000_legitimate_address_p): Likewise.
1383 * config/lm32/lm32.cc (lm32_legitimate_address_p): Likewise.
1384 * config/loongarch/loongarch.cc (loongarch_legitimate_address_p):
1385 Likewise.
1386 * config/m32c/m32c.cc (m32c_legitimate_address_p): Likewise.
1387 (m32c_addr_space_legitimate_address_p): Likewise.
1388 * config/m32r/m32r.cc (m32r_legitimate_address_p): Likewise.
1389 * config/m68k/m68k.cc (m68k_legitimate_address_p): Likewise.
1390 * config/mcore/mcore.cc (mcore_legitimate_address_p): Likewise.
1391 * config/microblaze/microblaze-protos.h (tree.h): New include for
1392 tree_code ERROR_MARK.
1393 (microblaze_legitimate_address_p): Adjust with extra unnamed
1394 code_helper argument with default ERROR_MARK.
1395 * config/microblaze/microblaze.cc (microblaze_legitimate_address_p):
1396 Likewise.
1397 * config/mips/mips.cc (mips_legitimate_address_p): Likewise.
1398 * config/mmix/mmix.cc (mmix_legitimate_address_p): Likewise.
1399 * config/mn10300/mn10300.cc (mn10300_legitimate_address_p): Likewise.
1400 * config/moxie/moxie.cc (moxie_legitimate_address_p): Likewise.
1401 * config/msp430/msp430.cc (msp430_legitimate_address_p): Likewise.
1402 (msp430_addr_space_legitimate_address_p): Adjust with extra code_helper
1403 argument with default ERROR_MARK and adjust the call to function
1404 msp430_legitimate_address_p.
1405 * config/nds32/nds32.cc (nds32_legitimate_address_p): Adjust with extra
1406 unnamed code_helper argument with default ERROR_MARK.
1407 * config/nios2/nios2.cc (nios2_legitimate_address_p): Likewise.
1408 * config/nvptx/nvptx.cc (nvptx_legitimate_address_p): Likewise.
1409 * config/or1k/or1k.cc (or1k_legitimate_address_p): Likewise.
1410 * config/pa/pa.cc (pa_legitimate_address_p): Likewise.
1411 * config/pdp11/pdp11.cc (pdp11_legitimate_address_p): Likewise.
1412 * config/pru/pru.cc (pru_addr_space_legitimate_address_p): Likewise.
1413 * config/riscv/riscv.cc (riscv_legitimate_address_p): Likewise.
1414 * config/rl78/rl78-protos.h (rl78_as_legitimate_address): Likewise.
1415 (tree.h): New include for tree_code ERROR_MARK.
1416 * config/rl78/rl78.cc (rl78_as_legitimate_address): Adjust with
1417 extra unnamed code_helper argument with default ERROR_MARK.
1418 * config/rs6000/rs6000.cc (rs6000_legitimate_address_p): Likewise.
1419 (rs6000_debug_legitimate_address_p): Adjust with extra code_helper
1420 argument and adjust the call to function rs6000_legitimate_address_p.
1421 * config/rx/rx.cc (rx_is_legitimate_address): Adjust with extra
1422 unnamed code_helper argument with default ERROR_MARK.
1423 * config/s390/s390.cc (s390_legitimate_address_p): Likewise.
1424 * config/sh/sh.cc (sh_legitimate_address_p): Likewise.
1425 * config/sparc/sparc.cc (sparc_legitimate_address_p): Likewise.
1426 * config/v850/v850.cc (v850_legitimate_address_p): Likewise.
1427 * config/vax/vax.cc (vax_legitimate_address_p): Likewise.
1428 * config/visium/visium.cc (visium_legitimate_address_p): Likewise.
1429 * config/xtensa/xtensa.cc (xtensa_legitimate_address_p): Likewise.
1430 * config/stormy16/stormy16-protos.h (xstormy16_legitimate_address_p):
1431 Likewise.
1432 (tree.h): New include for tree_code ERROR_MARK.
1433 * config/stormy16/stormy16.cc (xstormy16_legitimate_address_p):
1434 Adjust with extra unnamed code_helper argument with default
1435 ERROR_MARK.
1436
1437 2023-08-09 liuhongt <hongtao.liu@intel.com>
1438
1439 * common/config/i386/cpuinfo.h (get_available_features): Check
1440 EAX for valid subleaf before use CPUID.
1441
1442 2023-08-08 Jeff Law <jlaw@ventanamicro.com>
1443
1444 * config/riscv/riscv.cc (riscv_expand_conditional_move): Use word_mode
1445 for the temporary when canonicalizing the condition.
1446
1447 2023-08-08 Cupertino Miranda <cupertino.miranda@oracle.com>
1448
1449 * config/bpf/core-builtins.cc: Cleaned include headers.
1450 (struct cr_builtins): Added GTY.
1451 (cr_builtins_ref): Created.
1452 (builtins_data) Changed to GC root.
1453 (allocate_builtin_data): Changed.
1454 Included gt-core-builtins.h.
1455 * config/bpf/coreout.cc: (bpf_core_extra) Added GTY.
1456 (bpf_core_extra_ref): Created.
1457 (bpf_comment_info): Changed to GC root.
1458 (bpf_core_reloc_add, output_btfext_header, btf_ext_init): Changed.
1459
1460 2023-08-08 Uros Bizjak <ubizjak@gmail.com>
1461
1462 PR target/110832
1463 * config/i386/i386.opt (mpartial-vector-fp-math): New option.
1464 * config/i386/mmx.md (movq_<mode>_to_sse): Do not sanitize
1465 upper part of V2SFmode register with -fno-trapping-math.
1466 (<plusminusmult:insn>v2sf3): Enable for ix86_partial_vec_fp_math.
1467 (divv2sf3): Ditto.
1468 (<smaxmin:code>v2sf3): Ditto.
1469 (sqrtv2sf2): Ditto.
1470 (*mmx_haddv2sf3_low): Ditto.
1471 (*mmx_hsubv2sf3_low): Ditto.
1472 (vec_addsubv2sf3): Ditto.
1473 (vec_cmpv2sfv2si): Ditto.
1474 (vcond<V2FI:mode>v2sf): Ditto.
1475 (fmav2sf4): Ditto.
1476 (fmsv2sf4): Ditto.
1477 (fnmav2sf4): Ditto.
1478 (fnmsv2sf4): Ditto.
1479 (fix_truncv2sfv2si2): Ditto.
1480 (fixuns_truncv2sfv2si2): Ditto.
1481 (floatv2siv2sf2): Ditto.
1482 (floatunsv2siv2sf2): Ditto.
1483 (nearbyintv2sf2): Ditto.
1484 (rintv2sf2): Ditto.
1485 (lrintv2sfv2si2): Ditto.
1486 (ceilv2sf2): Ditto.
1487 (lceilv2sfv2si2): Ditto.
1488 (floorv2sf2): Ditto.
1489 (lfloorv2sfv2si2): Ditto.
1490 (btruncv2sf2): Ditto.
1491 (roundv2sf2): Ditto.
1492 (lroundv2sfv2si2): Ditto.
1493 * doc/invoke.texi (x86 Options): Document
1494 -mpartial-vector-fp-math option.
1495
1496 2023-08-08 Andrew Pinski <apinski@marvell.com>
1497
1498 PR tree-optimization/103281
1499 PR tree-optimization/28794
1500 * vr-values.cc (simplify_using_ranges::simplify_cond_using_ranges_1): Split out
1501 majority to ...
1502 (simplify_using_ranges::simplify_compare_using_ranges_1): Here.
1503 (simplify_using_ranges::simplify_casted_cond): Rename to ...
1504 (simplify_using_ranges::simplify_casted_compare): This
1505 and change arguments to take op0 and op1.
1506 (simplify_using_ranges::simplify_compare_assign_using_ranges_1): New method.
1507 (simplify_using_ranges::simplify): For tcc_comparison assignments call
1508 simplify_compare_assign_using_ranges_1.
1509 * vr-values.h (simplify_using_ranges): Add
1510 new methods, simplify_compare_using_ranges_1 and simplify_compare_assign_using_ranges_1.
1511 Rename simplify_casted_cond and simplify_casted_compare and
1512 update argument types.
1513
1514 2023-08-08 Andrzej Turko <andrzej.turko@gmail.com>
1515
1516 * genmatch.cc: Log line numbers indirectly.
1517
1518 2023-08-08 Andrzej Turko <andrzej.turko@gmail.com>
1519
1520 * genmatch.cc: Make sinfo map ordered.
1521 * Makefile.in: Require the ordered map header for genmatch.o.
1522
1523 2023-08-08 Andrzej Turko <andrzej.turko@gmail.com>
1524
1525 * ordered-hash-map.h: Add get_or_insert.
1526 * ordered-hash-map-tests.cc: Use get_or_insert in tests.
1527
1528 2023-08-08 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1529
1530 * config/riscv/autovec.md (cond_<optab><mode>): New pattern.
1531 (cond_len_<optab><mode>): Ditto.
1532 (cond_fma<mode>): Ditto.
1533 (cond_len_fma<mode>): Ditto.
1534 (cond_fnma<mode>): Ditto.
1535 (cond_len_fnma<mode>): Ditto.
1536 (cond_fms<mode>): Ditto.
1537 (cond_len_fms<mode>): Ditto.
1538 (cond_fnms<mode>): Ditto.
1539 (cond_len_fnms<mode>): Ditto.
1540 * config/riscv/riscv-protos.h (riscv_get_v_regno_alignment): Export
1541 global.
1542 (enum insn_type): Add new enum type.
1543 (prepare_ternary_operands): New function.
1544 * config/riscv/riscv-v.cc (emit_vlmax_masked_fp_mu_insn): Ditto.
1545 (emit_nonvlmax_tumu_insn): Ditto.
1546 (emit_nonvlmax_fp_tumu_insn): Ditto.
1547 (expand_cond_len_binop): Add condtional operations.
1548 (expand_cond_len_ternop): Ditto.
1549 (prepare_ternary_operands): New function.
1550 * config/riscv/riscv.cc (riscv_memmodel_needs_amo_release): Export
1551 riscv_get_v_regno_alignment as global scope.
1552 * config/riscv/vector.md: Fix ternary bugs.
1553
1554 2023-08-08 Richard Biener <rguenther@suse.de>
1555
1556 PR tree-optimization/49955
1557 * tree-vectorizer.h (_slp_instance::remain_stmts): New.
1558 (SLP_INSTANCE_REMAIN_STMTS): Likewise.
1559 * tree-vect-slp.cc (vect_free_slp_instance): Release
1560 SLP_INSTANCE_REMAIN_STMTS.
1561 (vect_build_slp_instance): Make the number of lanes of
1562 a BB reduction even.
1563 (vectorize_slp_instance_root_stmt): Handle unvectorized
1564 defs of a BB reduction.
1565
1566 2023-08-08 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
1567
1568 * internal-fn.cc (get_len_internal_fn): New function.
1569 (DEF_INTERNAL_COND_FN): Ditto.
1570 (DEF_INTERNAL_SIGNED_COND_FN): Ditto.
1571 * internal-fn.h (get_len_internal_fn): Ditto.
1572 * tree-vect-stmts.cc (vectorizable_call): Add CALL auto-vectorization.
1573
1574 2023-08-08 Richard Biener <rguenther@suse.de>
1575
1576 PR tree-optimization/110924
1577 * tree-ssa-live.h (virtual_operand_live): Update comment.
1578 * tree-ssa-live.cc (virtual_operand_live::get_live_in): Remove
1579 optimization, look at each predecessor.
1580 * tree-ssa-sink.cc (pass_sink_code::execute): Mark backedges.
1581
1582 2023-08-08 yulong <shiyulong@iscas.ac.cn>
1583
1584 * config/riscv/riscv-v.cc (slide1_sew64_helper): Modify.
1585
1586 2023-08-08 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1587
1588 * config/riscv/autovec-vls.md (<optab><mode>2): Add VLS neg.
1589 * config/riscv/vector.md: Ditto.
1590
1591 2023-08-08 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1592
1593 * config/riscv/autovec.md: Add VLS shift.
1594
1595 2023-08-07 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1596
1597 * config/riscv/autovec-vls.md (<optab><mode>3): Add VLS modes.
1598 * config/riscv/vector-iterators.md: Ditto.
1599 * config/riscv/vector.md: Ditto.
1600
1601 2023-08-07 Jonathan Wakely <jwakely@redhat.com>
1602
1603 * config/i386/i386.cc (ix86_invalid_conversion): Fix grammar.
1604
1605 2023-08-07 Nick Alcock <nick.alcock@oracle.com>
1606
1607 * configure: Regenerate.
1608
1609 2023-08-07 John Ericson <git@JohnEricson.me>
1610
1611 * configure: Regenerate.
1612
1613 2023-08-07 Alan Modra <amodra@gmail.com>
1614
1615 * configure: Regenerate.
1616
1617 2023-08-07 Alexander von Gluck IV <kallisti5@unixzen.com>
1618
1619 * configure: Regenerate.
1620
1621 2023-08-07 Nick Alcock <nick.alcock@oracle.com>
1622
1623 * configure: Regenerate.
1624
1625 2023-08-07 Nick Alcock <nick.alcock@oracle.com>
1626
1627 * configure: Regenerate.
1628
1629 2023-08-07 H.J. Lu <hjl.tools@gmail.com>
1630
1631 * configure: Regenerate.
1632
1633 2023-08-07 H.J. Lu <hjl.tools@gmail.com>
1634
1635 * configure: Regenerate.
1636
1637 2023-08-07 Jeff Law <jlaw@ventanamicro.com>
1638
1639 * config/riscv/riscv.cc (riscv_expand_conditional_move): Allow
1640 VOIDmode operands to conditional before canonicalization.
1641
1642 2023-08-07 Manolis Tsamis <manolis.tsamis@vrull.eu>
1643
1644 * regcprop.cc (maybe_copy_reg_attrs): Remove unnecessary function.
1645 (find_oldest_value_reg): Inline stack_pointer_rtx check.
1646 (copyprop_hardreg_forward_1): Inline stack_pointer_rtx check.
1647
1648 2023-08-07 Martin Jambor <mjambor@suse.cz>
1649
1650 PR ipa/110378
1651 * ipa-param-manipulation.h (class ipa_param_body_adjustments): New
1652 members get_ddef_if_exists_and_is_used and mark_clobbers_dead.
1653 * ipa-sra.cc (isra_track_scalar_value_uses): Ignore clobbers.
1654 (ptr_parm_has_nonarg_uses): Likewise.
1655 * ipa-param-manipulation.cc
1656 (ipa_param_body_adjustments::get_ddef_if_exists_and_is_used): New.
1657 (ipa_param_body_adjustments::mark_dead_statements): Move initial
1658 checks to get_ddef_if_exists_and_is_used.
1659 (ipa_param_body_adjustments::mark_clobbers_dead): New.
1660 (ipa_param_body_adjustments::common_initialization): Call
1661 mark_clobbers_dead when splitting.
1662
1663 2023-08-07 Raphael Zinsly <rzinsly@ventanamicro.com>
1664
1665 * config/riscv/riscv.cc (riscv_expand_int_scc): Add invert_ptr
1666 as an argument and pass it to riscv_emit_int_order_test.
1667 (riscv_expand_conditional_move): Handle cases where the condition
1668 is not EQ/NE or the second argument to the conditional is not
1669 (const_int 0).
1670 * config/riscv/riscv-protos.h (riscv_expand_int_scc): Update prototype.
1671 Co-authored-by: Jeff Law <jlaw@ventanamicro.com>
1672
1673 2023-08-07 Andrew Pinski <apinski@marvell.com>
1674
1675 PR tree-optimization/109959
1676 * match.pd (`(a > 1) ? 0 : (cast)a`, `(a <= 1) & (cast)a`):
1677 New patterns.
1678
1679 2023-08-07 Richard Biener <rguenther@suse.de>
1680
1681 * tree-ssa-sink.cc (pass_sink_code::execute): Do not
1682 calculate post-dominators. Calculate RPO on the inverted
1683 graph and process blocks in that order.
1684
1685 2023-08-07 liuhongt <hongtao.liu@intel.com>
1686
1687 PR target/110926
1688 * config/i386/i386-protos.h
1689 (vpternlog_redundant_operand_mask): Adjust parameter type.
1690 * config/i386/i386.cc (vpternlog_redundant_operand_mask): Use
1691 INTVAL instead of XINT, also adjust parameter type from rtx*
1692 to rtx since the function only needs operands[4] in vpternlog
1693 pattern.
1694 (substitute_vpternlog_operands): Pass operands[4] instead of
1695 operands to vpternlog_redundant_operand_mask.
1696 * config/i386/sse.md: Ditto.
1697
1698 2023-08-07 Richard Biener <rguenther@suse.de>
1699
1700 * tree-vect-slp.cc (vect_slp_region): Save/restore vect_location
1701 around dumping code.
1702
1703 2023-08-07 liuhongt <hongtao.liu@intel.com>
1704
1705 PR target/110762
1706 * config/i386/mmx.md (<insn><mode>3): Changed from define_insn
1707 to define_expand and break into ..
1708 (<insn>v4hf3): .. this.
1709 (divv4hf3): .. this.
1710 (<insn>v2hf3): .. this.
1711 (divv2hf3): .. this.
1712 (movd_v2hf_to_sse): New define_expand.
1713 (movq_<mode>_to_sse): Extend to V4HFmode.
1714 (mmxdoublevecmode): Ditto.
1715 (V2FI_V4HF): New mode iterator.
1716 * config/i386/sse.md (*vec_concatv4sf): Extend to hanlde V8HF
1717 by using mode iterator V4SF_V8HF, renamed to ..
1718 (*vec_concat<mode>): .. this.
1719 (*vec_concatv4sf_0): Extend to handle V8HF by using mode
1720 iterator V4SF_V8HF, renamed to ..
1721 (*vec_concat<mode>_0): .. this.
1722 (*vec_concatv8hf_movss): New define_insn.
1723 (V4SF_V8HF): New mode iterator.
1724
1725 2023-08-07 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1726
1727 * tree-vect-patterns.cc (vect_recog_over_widening_pattern): Add op vectype.
1728
1729 2023-08-07 Jan Beulich <jbeulich@suse.com>
1730
1731 * config/i386/mmx.md (*mmx_pinsrd): Drop "prefix_data16".
1732 (*mmx_pinsrb): Likewise.
1733 (*mmx_pextrb): Likewise.
1734 (*mmx_pextrb_zext): Likewise.
1735 (mmx_pshufbv8qi3): Likewise.
1736 (mmx_pshufbv4qi3): Likewise.
1737 (mmx_pswapdv2si2): Likewise.
1738 (*pinsrb): Likewise.
1739 (*pextrb): Likewise.
1740 (*pextrb_zext): Likewise.
1741 * config/i386/sse.md (*sse4_1_mulv2siv2di3<mask_name>): Likewise.
1742 (*sse2_eq<mode>3): Likewise.
1743 (*sse2_gt<mode>3): Likewise.
1744 (<sse2p4_1>_pinsr<ssemodesuffix>): Likewise.
1745 (*vec_extract<mode>): Likewise.
1746 (*vec_extract<PEXTR_MODE12:mode>_zext): Likewise.
1747 (*vec_extractv16qi_zext): Likewise.
1748 (ssse3_ph<plusminus_mnemonic>wv8hi3): Likewise.
1749 (ssse3_pmaddubsw128): Likewise.
1750 (*<ssse3_avx2>_pmulhrsw<mode>3<mask_name>): Likewise.
1751 (<ssse3_avx2>_pshufb<mode>3<mask_name>): Likewise.
1752 (<ssse3_avx2>_psign<mode>3): Likewise.
1753 (<ssse3_avx2>_palignr<mode>): Likewise.
1754 (*abs<mode>2): Likewise.
1755 (sse4_2_pcmpestr): Likewise.
1756 (sse4_2_pcmpestri): Likewise.
1757 (sse4_2_pcmpestrm): Likewise.
1758 (sse4_2_pcmpestr_cconly): Likewise.
1759 (sse4_2_pcmpistr): Likewise.
1760 (sse4_2_pcmpistri): Likewise.
1761 (sse4_2_pcmpistrm): Likewise.
1762 (sse4_2_pcmpistr_cconly): Likewise.
1763 (vgf2p8affineinvqb_<mode><mask_name>): Likewise.
1764 (vgf2p8affineqb_<mode><mask_name>): Likewise.
1765 (vgf2p8mulb_<mode><mask_name>): Likewise.
1766 (*<code>v8hi3 [smaxmin]): Drop "prefix_data16" and
1767 "prefix_extra".
1768 (*<code>v16qi3 [umaxmin]): Likewise.
1769
1770 2023-08-07 Jan Beulich <jbeulich@suse.com>
1771
1772 * config/i386/i386.md (sse4_1_round<mode>2): Make
1773 "length_immediate" uniformly 1.
1774 * config/i386/mmx.md (mmx_pblendvb_v8qi): Likewise.
1775 (mmx_pblendvb_<mode>): Likewise.
1776
1777 2023-08-07 Jan Beulich <jbeulich@suse.com>
1778
1779 * config/i386/sse.md
1780 (<avx512>_<complexopname>_<mode><maskc_name><round_name>): Add
1781 "prefix" attribute.
1782 (avx512fp16_<complexopname>sh_v8hf<mask_scalarc_name><round_scalarcz_name>):
1783 Likewise.
1784
1785 2023-08-07 Jan Beulich <jbeulich@suse.com>
1786
1787 * config/i386/sse.md (xop_phadd<u>bw): Add "prefix",
1788 "prefix_extra", and "mode" attributes.
1789 (xop_phadd<u>bd): Likewise.
1790 (xop_phadd<u>bq): Likewise.
1791 (xop_phadd<u>wd): Likewise.
1792 (xop_phadd<u>wq): Likewise.
1793 (xop_phadd<u>dq): Likewise.
1794 (xop_phsubbw): Likewise.
1795 (xop_phsubwd): Likewise.
1796 (xop_phsubdq): Likewise.
1797 (xop_rotl<mode>3): Add "prefix" and "prefix_extra" attributes.
1798 (xop_rotr<mode>3): Likewise.
1799 (xop_frcz<mode>2): Likewise.
1800 (*xop_vmfrcz<mode>2): Likewise.
1801 (xop_vrotl<mode>3): Add "prefix" attribute. Change
1802 "prefix_extra" to 1.
1803 (xop_sha<mode>3): Likewise.
1804 (xop_shl<mode>3): Likewise.
1805
1806 2023-08-07 Jan Beulich <jbeulich@suse.com>
1807
1808 * config/i386/sse.md
1809 (*<avx512>_eq<mode>3<mask_scalar_merge_name>_1): Drop
1810 "prefix_extra".
1811 (avx512dq_vextract<shuffletype>64x2_1_mask): Likewise.
1812 (*avx512dq_vextract<shuffletype>64x2_1): Likewise.
1813 (avx512f_vextract<shuffletype>32x4_1_mask): Likewise.
1814 (*avx512f_vextract<shuffletype>32x4_1): Likewise.
1815 (vec_extract_lo_<mode>_mask [AVX512 forms]): Likewise.
1816 (vec_extract_lo_<mode> [AVX512 forms]): Likewise.
1817 (vec_extract_hi_<mode>_mask [AVX512 forms]): Likewise.
1818 (vec_extract_hi_<mode> [AVX512 forms]): Likewise.
1819 (@vec_extract_lo_<mode> [AVX512 forms]): Likewise.
1820 (@vec_extract_hi_<mode> [AVX512 forms]): Likewise.
1821 (vec_extract_lo_v64qi): Likewise.
1822 (vec_extract_hi_v64qi): Likewise.
1823 (*vec_widen_umult_even_v16si<mask_name>): Likewise.
1824 (*vec_widen_smult_even_v16si<mask_name>): Likewise.
1825 (*avx512f_<code><mode>3<mask_name>): Likewise.
1826 (*vec_extractv4ti): Likewise.
1827 (avx512bw_<code>v32qiv32hi2<mask_name>): Likewise.
1828 (<mask_codefor>avx512dq_broadcast<mode><mask_name>_1): Likewise.
1829 Add "length_immediate".
1830
1831 2023-08-07 Jan Beulich <jbeulich@suse.com>
1832
1833 * config/i386/i386.md (@rdrand<mode>): Add "prefix_0f". Drop
1834 "prefix_extra".
1835 (@rdseed<mode>): Likewise.
1836 * config/i386/mmx.md (<code><mode>3 [smaxmin and umaxmin cases]):
1837 Adjust "prefix_extra".
1838 * config/i386/sse.md (@vec_set<mode>_0): Likewise.
1839 (*sse4_1_<code><mode>3<mask_name>): Likewise.
1840 (*avx2_eq<mode>3): Likewise.
1841 (avx2_gt<mode>3): Likewise.
1842 (<sse2p4_1>_pinsr<ssemodesuffix>): Likewise.
1843 (*vec_extract<mode>): Likewise.
1844 (<vi8_sse4_1_avx2_avx512>_movntdqa): Likewise.
1845
1846 2023-08-07 Jan Beulich <jbeulich@suse.com>
1847
1848 * config/i386/i386.md (rd<fsgs>base<mode>): Add "prefix_0f" and
1849 "prefix_rep". Drop "prefix_extra".
1850 (wr<fsgs>base<mode>): Likewise.
1851 (ptwrite<mode>): Likewise.
1852
1853 2023-08-07 Jan Beulich <jbeulich@suse.com>
1854
1855 * config/i386/i386.md (isa): Move up.
1856 (length_immediate): Handle "fma4".
1857 (prefix): Handle "ssemuladd".
1858 * config/i386/sse.md (*fma_fmadd_<mode>): Add "prefix" attribute.
1859 (<sd_mask_codefor>fma_fmadd_<mode><sd_maskz_name><round_name>):
1860 Likewise.
1861 (<avx512>_fmadd_<mode>_mask<round_name>): Likewise.
1862 (<avx512>_fmadd_<mode>_mask3<round_name>): Likewise.
1863 (<sd_mask_codefor>fma_fmsub_<mode><sd_maskz_name><round_name>):
1864 Likewise.
1865 (<avx512>_fmsub_<mode>_mask<round_name>): Likewise.
1866 (<avx512>_fmsub_<mode>_mask3<round_name>): Likewise.
1867 (*fma_fnmadd_<mode>): Likewise.
1868 (<sd_mask_codefor>fma_fnmadd_<mode><sd_maskz_name><round_name>):
1869 Likewise.
1870 (<avx512>_fnmadd_<mode>_mask<round_name>): Likewise.
1871 (<avx512>_fnmadd_<mode>_mask3<round_name>): Likewise.
1872 (<sd_mask_codefor>fma_fnmsub_<mode><sd_maskz_name><round_name>):
1873 Likewise.
1874 (<avx512>_fnmsub_<mode>_mask<round_name>): Likewise.
1875 (<avx512>_fnmsub_<mode>_mask3<round_name>): Likewise.
1876 (<sd_mask_codefor>fma_fmaddsub_<mode><sd_maskz_name><round_name>):
1877 Likewise.
1878 (<avx512>_fmaddsub_<mode>_mask<round_name>): Likewise.
1879 (<avx512>_fmaddsub_<mode>_mask3<round_name>): Likewise.
1880 (<sd_mask_codefor>fma_fmsubadd_<mode><sd_maskz_name><round_name>):
1881 Likewise.
1882 (<avx512>_fmsubadd_<mode>_mask<round_name>): Likewise.
1883 (<avx512>_fmsubadd_<mode>_mask3<round_name>): Likewise.
1884 (*fmai_fmadd_<mode>): Likewise.
1885 (*fmai_fmsub_<mode>): Likewise.
1886 (*fmai_fnmadd_<mode><round_name>): Likewise.
1887 (*fmai_fnmsub_<mode><round_name>): Likewise.
1888 (avx512f_vmfmadd_<mode>_mask<round_name>): Likewise.
1889 (avx512f_vmfmadd_<mode>_mask3<round_name>): Likewise.
1890 (avx512f_vmfmadd_<mode>_maskz_1<round_name>): Likewise.
1891 (*avx512f_vmfmsub_<mode>_mask<round_name>): Likewise.
1892 (avx512f_vmfmsub_<mode>_mask3<round_name>): Likewise.
1893 (*avx512f_vmfmsub_<mode>_maskz_1<round_name>): Likewise.
1894 (avx512f_vmfnmadd_<mode>_mask<round_name>): Likewise.
1895 (avx512f_vmfnmadd_<mode>_mask3<round_name>): Likewise.
1896 (avx512f_vmfnmadd_<mode>_maskz_1<round_name>): Likewise.
1897 (*avx512f_vmfnmsub_<mode>_mask<round_name>): Likewise.
1898 (*avx512f_vmfnmsub_<mode>_mask3<round_name>): Likewise.
1899 (*avx512f_vmfnmsub_<mode>_maskz_1<round_name>): Likewise.
1900 (*fma4i_vmfmadd_<mode>): Likewise.
1901 (*fma4i_vmfmsub_<mode>): Likewise.
1902 (*fma4i_vmfnmadd_<mode>): Likewise.
1903 (*fma4i_vmfnmsub_<mode>): Likewise.
1904 (fma_<complexopname>_<mode><sdc_maskz_name><round_name>): Likewise.
1905 (<avx512>_<complexopname>_<mode>_mask<round_name>): Likewise.
1906 (avx512fp16_fma_<complexopname>sh_v8hf<mask_scalarcz_name><round_scalarcz_name>):
1907 Likewise.
1908 (avx512fp16_<complexopname>sh_v8hf_mask<round_name>): Likewise.
1909 (xop_p<macs><ssemodesuffix><ssemodesuffix>): Likewise.
1910 (xop_p<macs>dql): Likewise.
1911 (xop_p<macs>dqh): Likewise.
1912 (xop_p<macs>wd): Likewise.
1913 (xop_p<madcs>wd): Likewise.
1914 (fma_<complexpairopname>_<mode>_pair): Likewise. Add "mode" attribute.
1915
1916 2023-08-07 Jan Beulich <jbeulich@suse.com>
1917
1918 * config/i386/i386.md (length_immediate): Handle "sse4arg".
1919 (prefix): Likewise.
1920 (*xop_pcmov_<mode>): Add "mode" attribute.
1921 * config/i386/mmx.md (*xop_maskcmp<mode>3): Drop "prefix_data16",
1922 "prefix_rep", "prefix_extra", and "length_immediate" attributes.
1923 (*xop_maskcmp_uns<mode>3): Likewise. Switch "type" to "sse4arg".
1924 (*xop_pcmov_<mode>): Add "mode" attribute.
1925 * config/i386/sse.md (xop_pcmov_<mode><avxsizesuffix>): Add "mode"
1926 attribute.
1927 (xop_maskcmp<mode>3): Drop "prefix_data16", "prefix_rep",
1928 "prefix_extra", and "length_immediate" attributes.
1929 (xop_maskcmp_uns<mode>3): Likewise. Switch "type" to "sse4arg".
1930 (xop_maskcmp_uns2<mode>3): Drop "prefix_data16", "prefix_extra",
1931 and "length_immediate" attributes. Switch "type" to "sse4arg".
1932 (xop_pcom_tf<mode>3): Likewise.
1933 (xop_vpermil2<mode>3): Drop "length_immediate" attribute.
1934
1935 2023-08-07 Jan Beulich <jbeulich@suse.com>
1936
1937 * config/i386/i386.md (prefix_extra): Correct comment. Fold
1938 cases yielding 2 into ones yielding 1.
1939
1940 2023-08-07 Jan Hubicka <jh@suse.cz>
1941
1942 PR tree-optimization/106293
1943 * tree-vect-loop-manip.cc (vect_loop_versioning): Fix profile update.
1944 * tree-vect-loop.cc (vect_transform_loop): Likewise.
1945
1946 2023-08-07 Andrew Pinski <apinski@marvell.com>
1947
1948 PR tree-optimization/96695
1949 * match.pd (min_value, max_value): Extend to
1950 pointer types too.
1951
1952 2023-08-06 Jan Hubicka <jh@suse.cz>
1953
1954 * config/i386/cpuid.h (__get_cpuid_count, __get_cpuid_max): Add
1955 __builtin_expect that CPU likely supports cpuid.
1956
1957 2023-08-06 Jan Hubicka <jh@suse.cz>
1958
1959 * tree-loop-distribution.cc (loop_distribution::execute): Disable
1960 distribution for loops with estimated iterations 0.
1961
1962 2023-08-06 Jan Hubicka <jh@suse.cz>
1963
1964 * tree-vect-loop-manip.cc (vect_do_peeling): Fix profile update of peeled epilogues.
1965
1966 2023-08-04 Xiao Zeng <zengxiao@eswincomputing.com>
1967
1968 * config/riscv/riscv.cc (riscv_expand_conditional_move): Recognize
1969 more Zicond patterns. Fix whitespace typo.
1970 (riscv_rtx_costs): Remove accidental code duplication.
1971 Co-authored-by: Jeff Law <jlaw@ventanamicro.com>
1972
1973 2023-08-04 Yan Simonaytes <simonaytes.yan@ispras.ru>
1974
1975 PR target/110202
1976 * config/i386/i386-protos.h
1977 (vpternlog_redundant_operand_mask): Declare.
1978 (substitute_vpternlog_operands): Declare.
1979 * config/i386/i386.cc
1980 (vpternlog_redundant_operand_mask): New helper.
1981 (substitute_vpternlog_operands): New function. Use them...
1982 * config/i386/sse.md: ... here in new VPTERNLOG define_splits.
1983
1984 2023-08-04 Roger Sayle <roger@nextmovesoftware.com>
1985
1986 * expmed.cc (extract_bit_field_1): Document that an UNSIGNEDP
1987 value of -1 is equivalent to don't care.
1988 (extract_integral_bit_field): Indicate that we don't require
1989 the most significant word to be zero extended, if we're about
1990 to sign extend it.
1991 (extract_fixed_bit_field_1): Document that an UNSIGNEDP value
1992 of -1 is equivalent to don't care. Don't clear the most
1993 significant bits with AND mask when UNSIGNEDP is -1.
1994
1995 2023-08-04 Roger Sayle <roger@nextmovesoftware.com>
1996
1997 * config/i386/sse.md (define_split): Convert highpart:DF extract
1998 from V2DFmode register into a sse2_storehpd instruction.
1999 (define_split): Likewise, convert lowpart:DF extract from V2DF
2000 register into a sse2_storelpd instruction.
2001
2002 2023-08-04 Qing Zhao <qing.zhao@oracle.com>
2003
2004 * doc/invoke.texi (-Wflex-array-member-not-at-end): Document
2005 new option.
2006
2007 2023-08-04 Vladimir N. Makarov <vmakarov@redhat.com>
2008
2009 * lra-lives.cc (process_bb_lives): Check input insn pattern hard regs
2010 against early clobber hard regs.
2011
2012 2023-08-04 Tamar Christina <tamar.christina@arm.com>
2013
2014 * doc/extend.texi: Document it.
2015
2016 2023-08-04 Tamar Christina <tamar.christina@arm.com>
2017
2018 PR target/106346
2019 * config/aarch64/aarch64-simd.md (vec_widen_<sur>shiftl_lo_<mode>,
2020 vec_widen_<sur>shiftl_hi_<mode>): Remove.
2021 (aarch64_<sur>shll<mode>_internal): Renamed to...
2022 (aarch64_<su>shll<mode>): .. This.
2023 (aarch64_<sur>shll2<mode>_internal): Renamed to...
2024 (aarch64_<su>shll2<mode>): .. This.
2025 (aarch64_<sur>shll_n<mode>, aarch64_<sur>shll2_n<mode>): Re-use new
2026 optabs.
2027 * config/aarch64/constraints.md (D2, DL): New.
2028 * config/aarch64/predicates.md (aarch64_simd_shll_imm_vec): New.
2029
2030 2023-08-04 Tamar Christina <tamar.christina@arm.com>
2031
2032 * gensupport.cc (conlist): Support length 0 attribute.
2033
2034 2023-08-04 Tamar Christina <tamar.christina@arm.com>
2035
2036 * config/aarch64/aarch64.cc (aarch64_bool_compound_p): New.
2037 (aarch64_adjust_stmt_cost, aarch64_vector_costs::count_ops): Use it.
2038
2039 2023-08-04 Tamar Christina <tamar.christina@arm.com>
2040
2041 * config/aarch64/aarch64.cc (aarch64_multiply_add_p): Update handling
2042 of constants.
2043 (aarch64_adjust_stmt_cost): Use it.
2044 (aarch64_vector_costs::count_ops): Likewise.
2045 (aarch64_vector_costs::add_stmt_cost): Pass vinfo to
2046 aarch64_adjust_stmt_cost.
2047
2048 2023-08-04 Richard Biener <rguenther@suse.de>
2049
2050 PR tree-optimization/110838
2051 * tree-vect-patterns.cc (vect_recog_over_widening_pattern):
2052 Fix right-shift value sanitizing. Properly emit external
2053 def mangling in the preheader rather than in the pattern
2054 def sequence where it will fail vectorizing.
2055
2056 2023-08-04 Matthew Malcomson <matthew.malcomson@arm.com>
2057
2058 PR middle-end/110316
2059 PR middle-end/9903
2060 * timevar.cc (NANOSEC_PER_SEC, TICKS_TO_NANOSEC,
2061 CLOCKS_TO_NANOSEC, nanosec_to_floating_sec, percent_of): New.
2062 (TICKS_TO_MSEC, CLOCKS_TO_MSEC): Remove these macros.
2063 (timer::validate_phases): Use integral arithmetic to check
2064 validity.
2065 (timer::print_row, timer::print): Convert from integral
2066 nanoseconds to floating point seconds before printing.
2067 (timer::all_zero): Change limit to nanosec count instead of
2068 fractional count of seconds.
2069 (make_json_for_timevar_time_def): Convert from integral
2070 nanoseconds to floating point seconds before recording.
2071 * timevar.h (struct timevar_time_def): Update all measurements
2072 to use uint64_t nanoseconds rather than seconds stored in a
2073 double.
2074
2075 2023-08-04 Richard Biener <rguenther@suse.de>
2076
2077 PR tree-optimization/110838
2078 * match.pd (([rl]shift @0 out-of-bounds) -> zero): Restrict
2079 the arithmetic right-shift case to non-negative operands.
2080
2081 2023-08-04 Pan Li <pan2.li@intel.com>
2082
2083 Revert:
2084 2023-08-04 Pan Li <pan2.li@intel.com>
2085
2086 * config/riscv/riscv-vector-builtins-bases.cc
2087 (class vfmacc_frm): New class for vfmacc frm.
2088 (vfmacc_frm_obj): New declaration.
2089 (BASE): Ditto.
2090 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
2091 * config/riscv/riscv-vector-builtins-functions.def
2092 (vfmacc_frm): New function definition.
2093 * config/riscv/riscv-vector-builtins.cc
2094 (function_expander::use_ternop_insn): Add frm operand support.
2095 * config/riscv/vector.md: Add vfmuladd to frm_mode.
2096
2097 2023-08-04 Pan Li <pan2.li@intel.com>
2098
2099 Revert:
2100 2023-08-04 Pan Li <pan2.li@intel.com>
2101
2102 * config/riscv/riscv-vector-builtins-bases.cc
2103 (class vfnmacc_frm): New class for vfnmacc.
2104 (vfnmacc_frm_obj): New declaration.
2105 (BASE): Ditto.
2106 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
2107 * config/riscv/riscv-vector-builtins-functions.def
2108 (vfnmacc_frm): New function definition.
2109
2110 2023-08-04 Pan Li <pan2.li@intel.com>
2111
2112 Revert:
2113 2023-08-04 Pan Li <pan2.li@intel.com>
2114
2115 * config/riscv/riscv-vector-builtins-bases.cc
2116 (class vfmsac_frm): New class for vfmsac frm.
2117 (vfmsac_frm_obj): New declaration.
2118 (BASE): Ditto.
2119 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
2120 * config/riscv/riscv-vector-builtins-functions.def
2121 (vfmsac_frm): New function definition.
2122
2123 2023-08-04 Pan Li <pan2.li@intel.com>
2124
2125 Revert:
2126 2023-08-04 Pan Li <pan2.li@intel.com>
2127
2128 * config/riscv/riscv-vector-builtins-bases.cc
2129 (class vfnmsac_frm): New class for vfnmsac frm.
2130 (vfnmsac_frm_obj): New declaration.
2131 (BASE): Ditto.
2132 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
2133 * config/riscv/riscv-vector-builtins-functions.def
2134 (vfnmsac_frm): New function definition.
2135
2136 2023-08-04 Georg-Johann Lay <avr@gjlay.de>
2137
2138 * config/avr/avr-mcus.def (avr64dd14, avr64dd20, avr64dd28, avr64dd32)
2139 (avr64ea28, avr64ea32, avr64ea48, attiny424, attiny426, attiny427)
2140 (attiny824, attiny826, attiny827, attiny1624, attiny1626, attiny1627)
2141 (attiny3224, attiny3226, attiny3227, avr16dd14, avr16dd20, avr16dd28)
2142 (avr16dd32, avr32dd14, avr32dd20, avr32dd28, avr32dd32)
2143 (attiny102, attiny104): New devices.
2144 * doc/avr-mmcu.texi: Regenerate.
2145
2146 2023-08-04 Georg-Johann Lay <avr@gjlay.de>
2147
2148 * config/avr/avr-mcus.def (avr128d*, avr64d*): Fix their FLASH_SIZE
2149 and PM_OFFSET entries.
2150
2151 2023-08-04 Andrew Pinski <apinski@marvell.com>
2152
2153 PR tree-optimization/110874
2154 * gimple-match-head.cc (gimple_bit_not_with_nop): New declaration.
2155 (gimple_maybe_cmp): Likewise.
2156 (gimple_bitwise_inverted_equal_p): Rewrite to use gimple_bit_not_with_nop
2157 and gimple_maybe_cmp instead of being recursive.
2158 * match.pd (bit_not_with_nop): New match pattern.
2159 (maybe_cmp): Likewise.
2160
2161 2023-08-04 Drew Ross <drross@redhat.com>
2162
2163 PR middle-end/101955
2164 * match.pd ((signed x << c) >> c): New canonicalization.
2165
2166 2023-08-04 Pan Li <pan2.li@intel.com>
2167
2168 * config/riscv/riscv-vector-builtins-bases.cc
2169 (class vfnmsac_frm): New class for vfnmsac frm.
2170 (vfnmsac_frm_obj): New declaration.
2171 (BASE): Ditto.
2172 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
2173 * config/riscv/riscv-vector-builtins-functions.def
2174 (vfnmsac_frm): New function definition.
2175
2176 2023-08-04 Pan Li <pan2.li@intel.com>
2177
2178 * config/riscv/riscv-vector-builtins-bases.cc
2179 (class vfmsac_frm): New class for vfmsac frm.
2180 (vfmsac_frm_obj): New declaration.
2181 (BASE): Ditto.
2182 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
2183 * config/riscv/riscv-vector-builtins-functions.def
2184 (vfmsac_frm): New function definition.
2185
2186 2023-08-04 Pan Li <pan2.li@intel.com>
2187
2188 * config/riscv/riscv-vector-builtins-bases.cc
2189 (class vfnmacc_frm): New class for vfnmacc.
2190 (vfnmacc_frm_obj): New declaration.
2191 (BASE): Ditto.
2192 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
2193 * config/riscv/riscv-vector-builtins-functions.def
2194 (vfnmacc_frm): New function definition.
2195
2196 2023-08-04 Hao Liu <hliu@os.amperecomputing.com>
2197
2198 PR target/110625
2199 * config/aarch64/aarch64.cc (aarch64_force_single_cycle): check
2200 STMT_VINFO_REDUC_DEF to avoid failures in info_for_reduction.
2201
2202 2023-08-04 Pan Li <pan2.li@intel.com>
2203
2204 * config/riscv/riscv-vector-builtins-bases.cc
2205 (class vfmacc_frm): New class for vfmacc frm.
2206 (vfmacc_frm_obj): New declaration.
2207 (BASE): Ditto.
2208 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
2209 * config/riscv/riscv-vector-builtins-functions.def
2210 (vfmacc_frm): New function definition.
2211 * config/riscv/riscv-vector-builtins.cc
2212 (function_expander::use_ternop_insn): Add frm operand support.
2213 * config/riscv/vector.md: Add vfmuladd to frm_mode.
2214
2215 2023-08-04 Pan Li <pan2.li@intel.com>
2216
2217 * config/riscv/riscv-vector-builtins-bases.cc
2218 (vfwmul_frm_obj): New declaration.
2219 (vfwmul_frm): Ditto.
2220 * config/riscv/riscv-vector-builtins-bases.h:
2221 (vfwmul_frm): Ditto.
2222 * config/riscv/riscv-vector-builtins-functions.def
2223 (vfwmul_frm): New function definition.
2224 * config/riscv/vector.md: (frm_mode) Add vfwmul to frm_mode.
2225
2226 2023-08-04 Pan Li <pan2.li@intel.com>
2227
2228 * config/riscv/riscv-vector-builtins-bases.cc
2229 (binop_frm): New declaration.
2230 (reverse_binop_frm): Likewise.
2231 (BASE): Likewise.
2232 * config/riscv/riscv-vector-builtins-bases.h:
2233 (vfdiv_frm): New extern declaration.
2234 (vfrdiv_frm): Likewise.
2235 * config/riscv/riscv-vector-builtins-functions.def
2236 (vfdiv_frm): New function definition.
2237 (vfrdiv_frm): Likewise.
2238 * config/riscv/vector.md: Add vfdiv to frm_mode.
2239
2240 2023-08-03 Jan Hubicka <jh@suse.cz>
2241
2242 * tree-cfg.cc (print_loop_info): Print entry count.
2243
2244 2023-08-03 Jan Hubicka <jh@suse.cz>
2245
2246 * tree-ssa-loop-split.cc (split_loop): Update estimated iteration counts.
2247
2248 2023-08-03 Jan Hubicka <jh@suse.cz>
2249
2250 PR bootstrap/110857
2251 * cfgloopmanip.cc (scale_loop_profile): (Un)initialize
2252 unadjusted_exit_count.
2253
2254 2023-08-03 Aldy Hernandez <aldyh@redhat.com>
2255
2256 * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Read global
2257 value/mask.
2258
2259 2023-08-03 Xiao Zeng <zengxiao@eswincomputing.com>
2260
2261 * config/riscv/riscv.cc (riscv_expand_conditional_move): Recognize
2262 various Zicond patterns.
2263 * config/riscv/riscv.md (mov<mode>cc): Allow TARGET_ZICOND. Use
2264 sfb_alu_operand for both arms of the conditional move.
2265 Co-authored-by: Jeff Law <jlaw@ventanamicro.com>
2266
2267 2023-08-03 Cupertino Miranda <cupertino.miranda@oracle.com>
2268
2269 PR target/107844
2270 PR target/107479
2271 PR target/107480
2272 PR target/107481
2273 * config.gcc: Added core-builtins.cc and .o files.
2274 * config/bpf/bpf-passes.def: Removed file.
2275 * config/bpf/bpf-protos.h (bpf_add_core_reloc,
2276 bpf_replace_core_move_operands): New prototypes.
2277 * config/bpf/bpf.cc (enum bpf_builtins, is_attr_preserve_access,
2278 maybe_make_core_relo, bpf_core_field_info, bpf_core_compute,
2279 bpf_core_get_index, bpf_core_new_decl, bpf_core_walk,
2280 bpf_is_valid_preserve_field_info_arg, is_attr_preserve_access,
2281 handle_attr_preserve, pass_data_bpf_core_attr, pass_bpf_core_attr):
2282 Removed.
2283 (def_builtin, bpf_expand_builtin, bpf_resolve_overloaded_builtin): Changed.
2284 * config/bpf/bpf.md (define_expand mov<MM:mode>): Changed.
2285 (mov_reloc_core<mode>): Added.
2286 * config/bpf/core-builtins.cc (struct cr_builtin, enum
2287 cr_decision struct cr_local, struct cr_final, struct
2288 core_builtin_helpers, enum bpf_plugin_states): Added types.
2289 (builtins_data, core_builtin_helpers, core_builtin_type_defs):
2290 Added variables.
2291 (allocate_builtin_data, get_builtin-data, search_builtin_data,
2292 remove_parser_plugin, compare_same_kind, compare_same_ptr_expr,
2293 compare_same_ptr_type, is_attr_preserve_access, core_field_info,
2294 bpf_core_get_index, compute_field_expr,
2295 pack_field_expr_for_access_index, pack_field_expr_for_preserve_field,
2296 process_field_expr, pack_enum_value, process_enum_value, pack_type,
2297 process_type, bpf_require_core_support, make_core_relo, read_kind,
2298 kind_access_index, kind_preserve_field_info, kind_enum_value,
2299 kind_type_id, kind_preserve_type_info, get_core_builtin_fndecl_for_type,
2300 bpf_handle_plugin_finish_type, bpf_init_core_builtins,
2301 construct_builtin_core_reloc, bpf_resolve_overloaded_core_builtin,
2302 bpf_expand_core_builtin, bpf_add_core_reloc,
2303 bpf_replace_core_move_operands): Added functions.
2304 * config/bpf/core-builtins.h (enum bpf_builtins): Added.
2305 (bpf_init_core_builtins, bpf_expand_core_builtin,
2306 bpf_resolve_overloaded_core_builtin): Added functions.
2307 * config/bpf/coreout.cc (struct bpf_core_extra): Added.
2308 (bpf_core_reloc_add, output_asm_btfext_core_reloc): Changed.
2309 * config/bpf/coreout.h (bpf_core_reloc_add) Changed prototype.
2310 * config/bpf/t-bpf: Added core-builtins.o.
2311 * doc/extend.texi: Added documentation for new BPF builtins.
2312
2313 2023-08-03 Andrew MacLeod <amacleod@redhat.com>
2314
2315 * gimple-range-fold.cc (fold_using_range::range_of_range_op): Add
2316 ranges to the call to relation_fold_and_or.
2317 (fold_using_range::relation_fold_and_or): Add op1 and op2 ranges.
2318 (fur_source::register_outgoing_edges): Add op1 and op2 ranges.
2319 * gimple-range-fold.h (relation_fold_and_or): Adjust params.
2320 * gimple-range-gori.cc (gori_compute::compute_operand_range): Add
2321 a varying op1 and op2 to call.
2322 * range-op-float.cc (range_operator::op1_op2_relation): New dafaults.
2323 (operator_equal::op1_op2_relation): New float version.
2324 (operator_not_equal::op1_op2_relation): Ditto.
2325 (operator_lt::op1_op2_relation): Ditto.
2326 (operator_le::op1_op2_relation): Ditto.
2327 (operator_gt::op1_op2_relation): Ditto.
2328 (operator_ge::op1_op2_relation) Ditto.
2329 * range-op-mixed.h (operator_equal::op1_op2_relation): New float
2330 prototype.
2331 (operator_not_equal::op1_op2_relation): Ditto.
2332 (operator_lt::op1_op2_relation): Ditto.
2333 (operator_le::op1_op2_relation): Ditto.
2334 (operator_gt::op1_op2_relation): Ditto.
2335 (operator_ge::op1_op2_relation): Ditto.
2336 * range-op.cc (range_op_handler::op1_op2_relation): Dispatch new
2337 variations.
2338 (range_operator::op1_op2_relation): Add extra params.
2339 (operator_equal::op1_op2_relation): Ditto.
2340 (operator_not_equal::op1_op2_relation): Ditto.
2341 (operator_lt::op1_op2_relation): Ditto.
2342 (operator_le::op1_op2_relation): Ditto.
2343 (operator_gt::op1_op2_relation): Ditto.
2344 (operator_ge::op1_op2_relation): Ditto.
2345 * range-op.h (range_operator): New prototypes.
2346 (range_op_handler): Ditto.
2347
2348 2023-08-03 Andrew MacLeod <amacleod@redhat.com>
2349
2350 * gimple-range-gori.cc (gori_compute::compute_operand1_range):
2351 Use identity relation.
2352 (gori_compute::compute_operand2_range): Ditto.
2353 * value-relation.cc (get_identity_relation): New.
2354 * value-relation.h (get_identity_relation): New prototype.
2355
2356 2023-08-03 Andrew MacLeod <amacleod@redhat.com>
2357
2358 * value-range.h (Value_Range::set_varying): Set the type.
2359 (Value_Range::set_zero): Ditto.
2360 (Value_Range::set_nonzero): Ditto.
2361
2362 2023-08-03 Jeff Law <jeffreyalaw@gmail.com>
2363
2364 * config/riscv/riscv.cc (riscv_rtx_costs): Remove errant hunk from
2365 recent commit.
2366
2367 2023-08-03 Pan Li <pan2.li@intel.com>
2368
2369 * config/riscv/riscv-vector-builtins-bases.cc: Add vfsub.
2370
2371 2023-08-03 Richard Sandiford <richard.sandiford@arm.com>
2372
2373 * poly-int.h (can_div_trunc_p): Succeed for more boundary conditions.
2374
2375 2023-08-03 Richard Biener <rguenther@suse.de>
2376
2377 PR tree-optimization/110838
2378 * tree-vect-patterns.cc (vect_recog_over_widening_pattern):
2379 Adjust the shift operand of RSHIFT_EXPRs.
2380
2381 2023-08-03 Richard Biener <rguenther@suse.de>
2382
2383 PR tree-optimization/110702
2384 * tree-ssa-loop-ivopts.cc (rewrite_use_address): When
2385 we created a NULL pointer based access rewrite that to
2386 a LEA.
2387
2388 2023-08-03 Richard Biener <rguenther@suse.de>
2389
2390 * tree-ssa-sink.cc: Include tree-ssa-live.h.
2391 (pass_sink_code::execute): Instantiate virtual_operand_live
2392 and pass it down.
2393 (sink_code_in_bb): Pass down virtual_operand_live.
2394 (statement_sink_location): Get virtual_operand_live and
2395 verify we are not sinking loads across stores by looking up
2396 the live virtual operand at the sink location.
2397
2398 2023-08-03 Richard Biener <rguenther@suse.de>
2399
2400 * tree-ssa-live.h (class virtual_operand_live): New.
2401 * tree-ssa-live.cc (virtual_operand_live::init): New.
2402 (virtual_operand_live::get_live_in): Likewise.
2403 (virtual_operand_live::get_live_out): Likewise.
2404
2405 2023-08-03 Richard Biener <rguenther@suse.de>
2406
2407 * passes.def: Exchange loop splitting and final value
2408 replacement passes.
2409
2410 2023-08-03 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
2411
2412 * config/s390/s390.cc (expand_perm_as_a_vlbr_vstbr_candidate):
2413 New function which handles bswap patterns for vec_perm_const.
2414 (vectorize_vec_perm_const_1): Call new function.
2415 * config/s390/vector.md (*bswap<mode>): Fix operands in output
2416 template.
2417 (*vstbr<mode>): New insn.
2418
2419 2023-08-03 Alexandre Oliva <oliva@adacore.com>
2420
2421 * config/vxworks-smp.opt: New. Introduce -msmp.
2422 * config.gcc: Enable it on powerpc* vxworks prior to 7r*.
2423 * config/rs6000/vxworks.h (STARTFILE_PREFIX_SPEC): Choose
2424 lib_smp when -msmp is present in the command line.
2425 * doc/invoke.texi: Document it.
2426
2427 2023-08-03 Yanzhang Wang <yanzhang.wang@intel.com>
2428
2429 * config/riscv/riscv.cc (riscv_save_reg_p): Save ra for leaf
2430 when enabling -mno-omit-leaf-frame-pointer
2431 (riscv_option_override): Override omit-frame-pointer.
2432 (riscv_frame_pointer_required): Save s0 for non-leaf function
2433 (TARGET_FRAME_POINTER_REQUIRED): Override defination
2434 * config/riscv/riscv.opt: Add option support.
2435
2436 2023-08-03 Roger Sayle <roger@nextmovesoftware.com>
2437
2438 PR target/110792
2439 * config/i386/i386.md (<any_rotate>ti3): For rotations by 64 bits
2440 place operand in a register before gen_<insn>64ti2_doubleword.
2441 (<any_rotate>di3): Likewise, for rotations by 32 bits, place
2442 operand in a register before gen_<insn>32di2_doubleword.
2443 (<any_rotate>32di2_doubleword): Constrain operand to be in register.
2444 (<any_rotate>64ti2_doubleword): Likewise.
2445
2446 2023-08-03 Pan Li <pan2.li@intel.com>
2447
2448 * config/riscv/riscv-vector-builtins-bases.cc
2449 (vfmul_frm_obj): New declaration.
2450 (Base): Likewise.
2451 * config/riscv/riscv-vector-builtins-bases.h: Likewise.
2452 * config/riscv/riscv-vector-builtins-functions.def
2453 (vfmul_frm): New function definition.
2454 * config/riscv/vector.md: Add vfmul to frm_mode.
2455
2456 2023-08-03 Andrew Pinski <apinski@marvell.com>
2457
2458 * match.pd (`~X & X`): Check that the types match.
2459 (`~x | x`, `~x ^ x`): Likewise.
2460
2461 2023-08-03 Pan Li <pan2.li@intel.com>
2462
2463 * config/riscv/riscv-vector-builtins-bases.h: Remove
2464 redudant declaration.
2465
2466 2023-08-03 Pan Li <pan2.li@intel.com>
2467
2468 * config/riscv/riscv-vector-builtins-bases.cc (BASE): Add
2469 vfwsub frm.
2470 * config/riscv/riscv-vector-builtins-bases.h: Add declaration.
2471 * config/riscv/riscv-vector-builtins-functions.def (vfwsub_frm):
2472 Add vfwsub function definitions.
2473
2474 2023-08-02 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
2475
2476 PR rtl-optimization/110867
2477 * combine.cc (simplify_compare_const): Try the optimization only
2478 in case the constant fits into the comparison mode.
2479
2480 2023-08-02 Jeff Law <jlaw@ventanamicro.com>
2481
2482 * config/riscv/zicond.md: Remove incorrect zicond patterns and
2483 renumber/rename them.
2484 (zero.nez.<GPR:MODE><X:mode>.opt2): Fix output string.
2485
2486 2023-08-02 Richard Biener <rguenther@suse.de>
2487
2488 * tree-phinodes.h (add_phi_node_to_bb): Remove.
2489 * tree-phinodes.cc (add_phi_node_to_bb): Make static.
2490
2491 2023-08-02 Jan Beulich <jbeulich@suse.com>
2492
2493 * config/i386/sse.md (vec_dupv2df<mask_name>): Fold the middle
2494 two of the alternatives.
2495
2496 2023-08-02 Richard Biener <rguenther@suse.de>
2497
2498 PR tree-optimization/92335
2499 * tree-ssa-sink.cc (select_best_block): Before loop
2500 optimizations avoid sinking unconditional loads/stores
2501 in innermost loops to conditional executed places.
2502
2503 2023-08-02 Andrew Pinski <apinski@marvell.com>
2504
2505 * gimple-match-head.cc (gimple_bitwise_inverted_equal_p): Valueize
2506 the comparison operands before comparing them.
2507
2508 2023-08-02 Andrew Pinski <apinski@marvell.com>
2509
2510 * match.pd (`~X & X`, `~X | X`): Move over to
2511 use bitwise_inverted_equal_p, removing :c as bitwise_inverted_equal_p
2512 handles that already.
2513 Remove range test simplifications to true/false as they
2514 are now handled by these patterns.
2515
2516 2023-08-02 Andrew Pinski <apinski@marvell.com>
2517
2518 * tree-ssa-phiopt.cc (match_simplify_replacement): Mark's cond
2519 statement's lhs and rhs to check if trivial dead.
2520 Rename inserted_exprs to exprs_maybe_dce; also move it so
2521 bitmap is not allocated if not needed.
2522
2523 2023-08-02 Pan Li <pan2.li@intel.com>
2524
2525 * config/riscv/riscv-vector-builtins-bases.cc
2526 (class widen_binop_frm): New class for binop frm.
2527 (BASE): Add vfwadd_frm.
2528 * config/riscv/riscv-vector-builtins-bases.h: New declaration.
2529 * config/riscv/riscv-vector-builtins-functions.def
2530 (vfwadd_frm): New function definition.
2531 * config/riscv/riscv-vector-builtins-shapes.cc
2532 (BASE_NAME_MAX_LEN): New macro.
2533 (struct alu_frm_def): Leverage new base class.
2534 (struct build_frm_base): New build base for frm.
2535 (struct widen_alu_frm_def): New struct for widen alu frm.
2536 (SHAPE): Add widen_alu_frm shape.
2537 * config/riscv/riscv-vector-builtins-shapes.h: New declaration.
2538 * config/riscv/vector.md (frm_mode): Add vfwalu type.
2539
2540 2023-08-02 Jan Hubicka <jh@suse.cz>
2541
2542 * cfgloop.h (loop_count_in): Declare.
2543 * cfgloopanal.cc (expected_loop_iterations_by_profile): Use count_in.
2544 (loop_count_in): Move here from ...
2545 * cfgloopmanip.cc (loop_count_in): ... here.
2546 (scale_loop_profile): Improve dumping; cast iteration bound to sreal.
2547
2548 2023-08-02 Jan Hubicka <jh@suse.cz>
2549
2550 * cfg.cc (scale_strictly_dominated_blocks): New function.
2551 * cfg.h (scale_strictly_dominated_blocks): Declare.
2552 * tree-cfg.cc (fold_loop_internal_call): Fixup CFG profile.
2553
2554 2023-08-02 Richard Biener <rguenther@suse.de>
2555
2556 PR rtl-optimization/110587
2557 * lra-spills.cc (return_regno_p): Remove.
2558 (regno_in_use_p): Likewise.
2559 (lra_final_code_change): Do not remove noop moves
2560 between hard registers.
2561
2562 2023-08-02 liuhongt <hongtao.liu@intel.com>
2563
2564 PR target/81904
2565 * config/i386/sse.md (vec_fmaddsub<mode>4): Extend to vector
2566 HFmode, use mode iterator VFH instead.
2567 (vec_fmsubadd<mode>4): Ditto.
2568 (<sd_mask_codefor>fma_fmaddsub_<mode><sd_maskz_name><round_name>):
2569 Remove scalar mode from iterator, use VFH_AVX512VL instead.
2570 (<sd_mask_codefor>fma_fmsubadd_<mode><sd_maskz_name><round_name>):
2571 Ditto.
2572
2573 2023-08-02 liuhongt <hongtao.liu@intel.com>
2574
2575 * config/i386/sse.md (*avx2_lddqu_inserti_to_bcasti): New
2576 pre_reload define_insn_and_split.
2577
2578 2023-08-02 Xiao Zeng <zengxiao@eswincomputing.com>
2579
2580 * config/riscv/riscv.cc (riscv_rtx_costs): Add costing for
2581 using Zicond to implement some conditional moves.
2582
2583 2023-08-02 Jeff Law <jlaw@ventanamicro.com>
2584
2585 * config/riscv/zicond.md: Use the X iterator instead of ANYI
2586 on the comparison input operands.
2587
2588 2023-08-02 Xiao Zeng <zengxiao@eswincomputing.com>
2589
2590 * config/riscv/riscv.cc (riscv_rtx_costs, case IF_THEN_ELSE): Add
2591 Zicond costing.
2592 (case SET): For INSNs that just set a REG, take the cost from the
2593 SET_SRC.
2594 Co-authored-by: Jeff Law <jlaw@ventanamicro.com>
2595
2596 2023-08-02 Hu, Lin1 <lin1.hu@intel.com>
2597
2598 * common/config/i386/i386-common.cc (OPTION_MASK_ISA2_AMX_INT8_SET):
2599 Change OPTION_MASK_ISA2_AMX_TILE to OPTION_MASK_ISA2_AMX_TILE_SET.
2600 (OPTION_MASK_ISA2_AMX_BF16_SET): Ditto
2601 (OPTION_MASK_ISA2_AMX_FP16_SET): Ditto
2602 (OPTION_MASK_ISA2_AMX_COMPLEX_SET): Ditto
2603 (OPTION_MASK_ISA_ABM_SET):
2604 Change OPTION_MASK_ISA_POPCNT to OPTION_MASK_ISA_POPCNT_SET.
2605
2606 2023-08-01 Andreas Krebbel <krebbel@linux.ibm.com>
2607
2608 * config/s390/s390.cc (s390_encode_section_info): Assume external
2609 symbols without explicit alignment to be unaligned if
2610 -munaligned-symbols has been specified.
2611 * config/s390/s390.opt (-munaligned-symbols): New option.
2612
2613 2023-08-01 Richard Ball <richard.ball@arm.com>
2614
2615 * gimple-fold.cc (fold_ctor_reference):
2616 Add support for poly_int.
2617
2618 2023-08-01 Georg-Johann Lay <avr@gjlay.de>
2619
2620 PR target/110220
2621 * config/avr/avr.cc (avr_optimize_casesi): Set JUMP_LABEL and
2622 LABEL_NUSES of new conditional branch instruction.
2623
2624 2023-08-01 Jan Hubicka <jh@suse.cz>
2625
2626 * tree-vect-loop-manip.cc (vect_do_peeling): Fix profile update after
2627 constant prologue peeling.
2628
2629 2023-08-01 Christophe Lyon <christophe.lyon@linaro.org>
2630
2631 * doc/sourcebuild.texi (arm_v8_1m_main_cde_mve_fp): Fix spelling.
2632
2633 2023-08-01 Pan Li <pan2.li@intel.com>
2634 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2635
2636 * config/riscv/riscv.cc (DYNAMIC_FRM_RTL): New macro.
2637 (STATIC_FRM_P): Ditto.
2638 (struct mode_switching_info): New struct for mode switching.
2639 (struct machine_function): Add new field mode switching.
2640 (riscv_emit_frm_mode_set): Add DYN_CALL emit.
2641 (riscv_frm_adjust_mode_after_call): New function for call mode.
2642 (riscv_frm_emit_after_call_in_bb_end): New function for emit
2643 insn when call as the end of bb.
2644 (riscv_frm_mode_needed): New function for frm mode needed.
2645 (frm_unknown_dynamic_p): Remove call check.
2646 (riscv_mode_needed): Extrac function for frm.
2647 (riscv_frm_mode_after): Add DYN_CALL after.
2648 (riscv_mode_entry): Remove backup rtl initialization.
2649 * config/riscv/vector.md (frm_mode): Add dyn_call.
2650 (fsrmsi_restore_exit): Rename to _volatile.
2651 (fsrmsi_restore_volatile): Likewise.
2652
2653 2023-08-01 Pan Li <pan2.li@intel.com>
2654
2655 * config/riscv/riscv-vector-builtins-bases.cc
2656 (class reverse_binop_frm): Add new template for reversed frm.
2657 (vfsub_frm_obj): New obj.
2658 (vfrsub_frm_obj): Likewise.
2659 * config/riscv/riscv-vector-builtins-bases.h:
2660 (vfsub_frm): New declaration.
2661 (vfrsub_frm): Likewise.
2662 * config/riscv/riscv-vector-builtins-functions.def
2663 (vfsub_frm): New function define.
2664 (vfrsub_frm): Likewise.
2665
2666 2023-08-01 Andrew Pinski <apinski@marvell.com>
2667
2668 PR tree-optimization/93044
2669 * match.pd (nested int casts): A truncation (to the same size or smaller)
2670 can always remove the inner cast.
2671
2672 2023-07-31 Hamza Mahfooz <someguy@effective-light.com>
2673
2674 PR c/65213
2675 * doc/invoke.texi (-Wmissing-variable-declarations): Document
2676 new option.
2677
2678 2023-07-31 Andrew Pinski <apinski@marvell.com>
2679
2680 PR tree-optimization/106164
2681 * match.pd (`a != b & a <= b`, `a != b & a >= b`,
2682 `a == b | a < b`, `a == b | a > b`): Handle these cases
2683 too.
2684
2685 2023-07-31 Andrew Pinski <apinski@marvell.com>
2686
2687 PR tree-optimization/106164
2688 * match.pd: Extend the `(X CMP1 CST1) AND/IOR (X CMP2 CST2)`
2689 patterns to support `(X CMP1 Y) AND/IOR (X CMP2 Y)`.
2690
2691 2023-07-31 Andrew Pinski <apinski@marvell.com>
2692
2693 PR tree-optimization/100864
2694 * generic-match-head.cc (bitwise_inverted_equal_p): New function.
2695 * gimple-match-head.cc (bitwise_inverted_equal_p): New macro.
2696 (gimple_bitwise_inverted_equal_p): New function.
2697 * match.pd ((~x | y) & x): Use bitwise_inverted_equal_p
2698 instead of direct matching bit_not.
2699
2700 2023-07-31 Costas Argyris <costas.argyris@gmail.com>
2701
2702 PR driver/77576
2703 * gcc-ar.cc (main): Expand argv and use
2704 temporary response file to call ar if any
2705 expansions were made.
2706
2707 2023-07-31 Andrew MacLeod <amacleod@redhat.com>
2708
2709 PR tree-optimization/110582
2710 * gimple-range-fold.cc (fur_list::get_operand): Do not use the
2711 range vector for non-ssa names.
2712
2713 2023-07-31 David Malcolm <dmalcolm@redhat.com>
2714
2715 PR analyzer/109361
2716 * diagnostic-client-data-hooks.h (class sarif_object): New forward
2717 decl.
2718 (diagnostic_client_data_hooks::add_sarif_invocation_properties):
2719 New vfunc.
2720 * diagnostic-format-sarif.cc: Include "diagnostic-format-sarif.h".
2721 (class sarif_invocation): Inherit from sarif_object rather than
2722 json::object.
2723 (class sarif_result): Likewise.
2724 (class sarif_ice_notification): Likewise.
2725 (sarif_object::get_or_create_properties): New.
2726 (sarif_invocation::prepare_to_flush): Add "context" param. Use it
2727 to call the context's add_sarif_invocation_properties hook.
2728 (sarif_builder::flush_to_file): Pass m_context to
2729 sarif_invocation::prepare_to_flush.
2730 * diagnostic-format-sarif.h: New header.
2731 * doc/invoke.texi (Developer Options): Clarify that -ftime-report
2732 writes to stderr. Document that if SARIF diagnostic output is
2733 requested then any timing information is written in JSON form as
2734 part of the SARIF output, rather than to stderr.
2735 * timevar.cc: Include "json.h".
2736 (timer::named_items::m_hash_map): Split out type into...
2737 (timer::named_items::hash_map_t): ...this new typedef.
2738 (timer::named_items::make_json): New function.
2739 (timevar_diff): New function.
2740 (make_json_for_timevar_time_def): New function.
2741 (timer::timevar_def::make_json): New function.
2742 (timer::make_json): New function.
2743 * timevar.h (class json::value): New forward decl.
2744 (timer::make_json): New decl.
2745 (timer::timevar_def::make_json): New decl.
2746 * tree-diagnostic-client-data-hooks.cc: Include
2747 "diagnostic-format-sarif.h" and "timevar.h".
2748 (compiler_data_hooks::add_sarif_invocation_properties): New vfunc
2749 implementation.
2750
2751 2023-07-31 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
2752
2753 * combine.cc (simplify_compare_const): Narrow comparison of
2754 memory and constant.
2755 (try_combine): Adapt new function signature.
2756 (simplify_comparison): Adapt new function signature.
2757
2758 2023-07-31 Kito Cheng <kito.cheng@sifive.com>
2759
2760 * config/riscv/riscv-v.cc (expand_vec_series): Drop unused
2761 variable.
2762 (expand_vector_init_insert_elems): Ditto.
2763
2764 2023-07-31 Hao Liu <hliu@os.amperecomputing.com>
2765
2766 PR target/110625
2767 * config/aarch64/aarch64.cc (count_ops): Only '* count' for
2768 single_defuse_cycle while counting reduction_latency.
2769
2770 2023-07-31 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
2771
2772 * internal-fn.def (DEF_INTERNAL_COND_FN): New macro.
2773 (DEF_INTERNAL_SIGNED_COND_FN): Ditto.
2774 (COND_ADD): Remove.
2775 (COND_SUB): Ditto.
2776 (COND_MUL): Ditto.
2777 (COND_DIV): Ditto.
2778 (COND_MOD): Ditto.
2779 (COND_RDIV): Ditto.
2780 (COND_MIN): Ditto.
2781 (COND_MAX): Ditto.
2782 (COND_FMIN): Ditto.
2783 (COND_FMAX): Ditto.
2784 (COND_AND): Ditto.
2785 (COND_IOR): Ditto.
2786 (COND_XOR): Ditto.
2787 (COND_SHL): Ditto.
2788 (COND_SHR): Ditto.
2789 (COND_FMA): Ditto.
2790 (COND_FMS): Ditto.
2791 (COND_FNMA): Ditto.
2792 (COND_FNMS): Ditto.
2793 (COND_NEG): Ditto.
2794 (COND_LEN_ADD): Ditto.
2795 (COND_LEN_SUB): Ditto.
2796 (COND_LEN_MUL): Ditto.
2797 (COND_LEN_DIV): Ditto.
2798 (COND_LEN_MOD): Ditto.
2799 (COND_LEN_RDIV): Ditto.
2800 (COND_LEN_MIN): Ditto.
2801 (COND_LEN_MAX): Ditto.
2802 (COND_LEN_FMIN): Ditto.
2803 (COND_LEN_FMAX): Ditto.
2804 (COND_LEN_AND): Ditto.
2805 (COND_LEN_IOR): Ditto.
2806 (COND_LEN_XOR): Ditto.
2807 (COND_LEN_SHL): Ditto.
2808 (COND_LEN_SHR): Ditto.
2809 (COND_LEN_FMA): Ditto.
2810 (COND_LEN_FMS): Ditto.
2811 (COND_LEN_FNMA): Ditto.
2812 (COND_LEN_FNMS): Ditto.
2813 (COND_LEN_NEG): Ditto.
2814 (ADD): New macro define.
2815 (SUB): Ditto.
2816 (MUL): Ditto.
2817 (DIV): Ditto.
2818 (MOD): Ditto.
2819 (RDIV): Ditto.
2820 (MIN): Ditto.
2821 (MAX): Ditto.
2822 (FMIN): Ditto.
2823 (FMAX): Ditto.
2824 (AND): Ditto.
2825 (IOR): Ditto.
2826 (XOR): Ditto.
2827 (SHL): Ditto.
2828 (SHR): Ditto.
2829 (FMA): Ditto.
2830 (FMS): Ditto.
2831 (FNMA): Ditto.
2832 (FNMS): Ditto.
2833 (NEG): Ditto.
2834
2835 2023-07-31 Roger Sayle <roger@nextmovesoftware.com>
2836
2837 PR target/110843
2838 * config/i386/i386-features.cc (compute_convert_gain): Check
2839 TARGET_AVX512VL (not TARGET_AVX512F) when considering V2DImode
2840 and V4SImode rotates in STV.
2841 (general_scalar_chain::convert_rotate): Likewise.
2842
2843 2023-07-31 Kito Cheng <kito.cheng@sifive.com>
2844
2845 * config/riscv/autovec.md (abs<mode>2): Remove `.require ()`.
2846 * config/riscv/riscv-protos.h (get_mask_mode): Update return
2847 type.
2848 * config/riscv/riscv-v.cc (rvv_builder::rvv_builder): Remove
2849 `.require ()`.
2850 (emit_vlmax_insn): Ditto.
2851 (emit_vlmax_fp_insn): Ditto.
2852 (emit_vlmax_ternary_insn): Ditto.
2853 (emit_vlmax_fp_ternary_insn): Ditto.
2854 (emit_nonvlmax_fp_ternary_tu_insn): Ditto.
2855 (emit_nonvlmax_insn): Ditto.
2856 (emit_vlmax_slide_insn): Ditto.
2857 (emit_nonvlmax_slide_tu_insn): Ditto.
2858 (emit_vlmax_merge_insn): Ditto.
2859 (emit_vlmax_masked_insn): Ditto.
2860 (emit_nonvlmax_masked_insn): Ditto.
2861 (emit_vlmax_masked_store_insn): Ditto.
2862 (emit_nonvlmax_masked_store_insn): Ditto.
2863 (emit_vlmax_masked_mu_insn): Ditto.
2864 (emit_nonvlmax_tu_insn): Ditto.
2865 (emit_nonvlmax_fp_tu_insn): Ditto.
2866 (emit_scalar_move_insn): Ditto.
2867 (emit_vlmax_compress_insn): Ditto.
2868 (emit_vlmax_reduction_insn): Ditto.
2869 (emit_vlmax_fp_reduction_insn): Ditto.
2870 (emit_nonvlmax_fp_reduction_insn): Ditto.
2871 (expand_vec_series): Ditto.
2872 (expand_vector_init_merge_repeating_sequence): Ditto.
2873 (expand_vec_perm): Ditto.
2874 (shuffle_merge_patterns): Ditto.
2875 (shuffle_compress_patterns): Ditto.
2876 (shuffle_decompress_patterns): Ditto.
2877 (expand_reduction): Ditto.
2878 (get_mask_mode): Update return type.
2879 * config/riscv/riscv.cc (riscv_get_mask_mode): Check vector type
2880 is valid, and use new get_mask_mode interface.
2881
2882 2023-07-31 Pan Li <pan2.li@intel.com>
2883
2884 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_frm_def):
2885 Move rm suffix before mask.
2886
2887 2023-07-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2888
2889 * config/riscv/autovec-vls.md (@vec_duplicate<mode>): New pattern.
2890 * config/riscv/riscv-v.cc (autovectorize_vector_modes): Add VLS autovec
2891 support.
2892
2893 2023-07-29 Roger Sayle <roger@nextmovesoftware.com>
2894
2895 PR target/110790
2896 * config/i386/i386.md (extv<mode>): Use QImode for offsets.
2897 (extzv<mode>): Likewise.
2898 (insv<mode>): Likewise.
2899 (*testqi_ext_3): Likewise.
2900 (*btr<mode>_2): Likewise.
2901 (define_split): Likewise.
2902 (*btsq_imm): Likewise.
2903 (*btrq_imm): Likewise.
2904 (*btcq_imm): Likewise.
2905 (define_peephole2 x3): Likewise.
2906 (*bt<mode>): Likewise
2907 (*bt<mode>_mask): New define_insn_and_split.
2908 (*jcc_bt<mode>): Use QImode for offsets.
2909 (*jcc_bt<mode>_1): Delete obsolete pattern.
2910 (*jcc_bt<mode>_mask): Use QImode offsets.
2911 (*jcc_bt<mode>_mask_1): Likewise.
2912 (define_split): Likewise.
2913 (*bt<mode>_setcqi): Likewise.
2914 (*bt<mode>_setncqi): Likewise.
2915 (*bt<mode>_setnc<mode>): Likewise.
2916 (*bt<mode>_setncqi_2): Likewise.
2917 (*bt<mode>_setc<mode>_mask): New define_insn_and_split.
2918 (bmi2_bzhi_<mode>3): Use QImode offsets.
2919 (*bmi2_bzhi_<mode>3): Likewise.
2920 (*bmi2_bzhi_<mode>3_1): Likewise.
2921 (*bmi2_bzhi_<mode>3_1_ccz): Likewise.
2922 (@tbm_bextri_<mode>): Likewise.
2923
2924 2023-07-29 Jan Hubicka <jh@suse.cz>
2925
2926 * profile-count.cc (profile_probability::sqrt): New member function.
2927 (profile_probability::pow): Likewise.
2928 * profile-count.h: (profile_probability::sqrt): Declare
2929 (profile_probability::pow): Likewise.
2930 * tree-vect-loop-manip.cc (vect_loop_versioning): Fix profile update.
2931
2932 2023-07-28 Andrew MacLeod <amacleod@redhat.com>
2933
2934 * gimple-range-cache.cc (ssa_cache::merge_range): New.
2935 (ssa_lazy_cache::merge_range): New.
2936 * gimple-range-cache.h (class ssa_cache): Adjust protoypes.
2937 (class ssa_lazy_cache): Ditto.
2938 * gimple-range.cc (assume_query::calculate_op): Use merge_range.
2939
2940 2023-07-28 Andrew MacLeod <amacleod@redhat.com>
2941
2942 * tree-ssa-propagate.cc (substitute_and_fold_engine::value_on_edge):
2943 Move from value-query.cc.
2944 (substitute_and_fold_engine::value_of_stmt): Ditto.
2945 (substitute_and_fold_engine::range_of_expr): New.
2946 * tree-ssa-propagate.h (substitute_and_fold_engine): Inherit from
2947 range_query. New prototypes.
2948 * value-query.cc (value_query::value_on_edge): Relocate.
2949 (value_query::value_of_stmt): Ditto.
2950 * value-query.h (class value_query): Remove.
2951 (class range_query): Remove base class. Adjust prototypes.
2952
2953 2023-07-28 Andrew MacLeod <amacleod@redhat.com>
2954
2955 PR tree-optimization/110205
2956 * gimple-range-cache.h (ranger_cache::m_estimate): Delete.
2957 * range-op-mixed.h (operator_bitwise_xor::op1_op2_relation_effect):
2958 Add final override.
2959 * range-op.cc (operator_lshift): Add missing final overrides.
2960 (operator_rshift): Ditto.
2961
2962 2023-07-28 Jose E. Marchesi <jose.marchesi@oracle.com>
2963
2964 * config/bpf/bpf.cc (bpf_option_override): Disable tail-call
2965 optimizations in BPF target.
2966
2967 2023-07-28 Honza <jh@ryzen4.suse.cz>
2968
2969 * cfgloopmanip.cc (loop_count_in): Break out from ...
2970 (loop_exit_for_scaling): Break out from ...
2971 (update_loop_exit_probability_scale_dom_bbs): Break out from ...;
2972 add more sanity check and debug info.
2973 (scale_loop_profile): ... here.
2974 (create_empty_loop_on_edge): Fix whitespac.
2975 * cfgloopmanip.h (update_loop_exit_probability_scale_dom_bbs): Declare.
2976 * loop-unroll.cc (unroll_loop_constant_iterations): Use
2977 update_loop_exit_probability_scale_dom_bbs.
2978 * tree-ssa-loop-manip.cc (update_exit_probability_after_unrolling): Remove.
2979 (tree_transform_and_unroll_loop): Use
2980 update_loop_exit_probability_scale_dom_bbs.
2981 * tree-ssa-loop-split.cc (split_loop): Use
2982 update_loop_exit_probability_scale_dom_bbs.
2983
2984 2023-07-28 Jan Hubicka <jh@suse.cz>
2985
2986 PR middle-end/77689
2987 * tree-ssa-loop-split.cc: Include value-query.h.
2988 (split_at_bb_p): Analyze cases where EQ/NE can be turned
2989 into LT/LE/GT/GE; return updated guard code.
2990 (split_loop): Use guard code.
2991
2992 2023-07-28 Roger Sayle <roger@nextmovesoftware.com>
2993 Richard Biener <rguenther@suse.de>
2994
2995 PR middle-end/28071
2996 PR rtl-optimization/110587
2997 * expr.cc (emit_group_load_1): Simplify logic for calling
2998 force_reg on ORIG_SRC, to avoid making a copy if the source
2999 is already in a pseudo register.
3000
3001 2023-07-28 Jan Hubicka <jh@suse.cz>
3002
3003 PR middle-end/106923
3004 * tree-ssa-loop-split.cc (connect_loops): Change probability
3005 of the test preconditioning second loop to very_likely.
3006 (fix_loop_bb_probability): Handle correctly case where
3007 on of the arms of the conditional is empty.
3008 (split_loop): Fold the test guarding first condition to
3009 see if it is constant true; Set correct entry block
3010 probabilities of the split loops; determine correct loop
3011 eixt probabilities.
3012
3013 2023-07-28 xuli <xuli1@eswincomputing.com>
3014
3015 * config/riscv/riscv-vector-builtins-bases.cc: remove rounding mode of
3016 vsadd[u] and vssub[u].
3017 * config/riscv/vector.md: Ditto.
3018
3019 2023-07-28 Jan Hubicka <jh@suse.cz>
3020
3021 * tree-ssa-loop-split.cc (split_loop): Also support NE driven
3022 loops when IV test is not overflowing.
3023
3024 2023-07-28 liuhongt <hongtao.liu@intel.com>
3025
3026 PR target/110788
3027 * config/i386/sse.md (avx512cd_maskb_vec_dup<mode>): Add
3028 UNSPEC_MASKOP.
3029 (avx512cd_maskw_vec_dup<mode>): Ditto.
3030
3031 2023-07-27 David Faust <david.faust@oracle.com>
3032
3033 PR target/110782
3034 PR target/110784
3035 * config/bpf/bpf.opt (msmov): New option.
3036 * config/bpf/bpf.cc (bpf_option_override): Handle it here.
3037 * config/bpf/bpf.md (*extendsidi2): New.
3038 (extendhidi2): New.
3039 (extendqidi2): New.
3040 (extendsisi2): New.
3041 (extendhisi2): New.
3042 (extendqisi2): New.
3043 * doc/invoke.texi (Option Summary): Add -msmov eBPF option.
3044 (eBPF Options): Add -m[no-]smov. Document that -mcpu=v4
3045 also enables -msmov.
3046
3047 2023-07-27 David Faust <david.faust@oracle.com>
3048
3049 * doc/invoke.texi (Option Summary): Remove -mkernel eBPF option.
3050 Add -mbswap and -msdiv eBPF options.
3051 (eBPF Options): Remove -mkernel. Add -mno-{jmpext, jmp32,
3052 alu32, v3-atomics, bswap, sdiv}. Document that -mcpu=v4 also
3053 enables -msdiv.
3054
3055 2023-07-27 David Faust <david.faust@oracle.com>
3056
3057 * config/bpf/bpf.md (add<AM:mode>3): Use %w2 instead of %w1
3058 in pseudo-C dialect output template.
3059 (sub<AM:mode>3): Likewise.
3060
3061 2023-07-27 Jan Hubicka <jh@suse.cz>
3062
3063 * tree-vect-loop.cc (optimize_mask_stores): Make store
3064 likely.
3065
3066 2023-07-27 Jan Hubicka <jh@suse.cz>
3067
3068 * cfgloop.h (single_dom_exit): Declare.
3069 * cfgloopmanip.h (update_exit_probability_after_unrolling): Declare.
3070 * cfgrtl.cc (struct cfg_hooks): Fix comment.
3071 * loop-unroll.cc (unroll_loop_constant_iterations): Update exit edge.
3072 * tree-ssa-loop-ivopts.h (single_dom_exit): Do not declare it here.
3073 * tree-ssa-loop-manip.cc (update_exit_probability_after_unrolling):
3074 Break out from ...
3075 (tree_transform_and_unroll_loop): ... here;
3076
3077 2023-07-27 Jan Hubicka <jh@suse.cz>
3078
3079 * cfgloopmanip.cc (scale_dominated_blocks_in_loop): Move here from
3080 tree-ssa-loop-manip.cc and avoid recursion.
3081 (scale_loop_profile): Use scale_dominated_blocks_in_loop.
3082 (duplicate_loop_body_to_header_edge): Add DLTHE_FLAG_FLAT_PROFILE
3083 flag.
3084 * cfgloopmanip.h (DLTHE_FLAG_FLAT_PROFILE): Define.
3085 (scale_dominated_blocks_in_loop): Declare.
3086 * predict.cc (dump_prediction): Do not ICE on uninitialized probability.
3087 (change_edge_frequency): Remove.
3088 * predict.h (change_edge_frequency): Remove.
3089 * tree-ssa-loop-manip.cc (scale_dominated_blocks_in_loop): Move to
3090 cfgloopmanip.cc.
3091 (niter_for_unrolled_loop): Remove.
3092 (tree_transform_and_unroll_loop): Fix profile update.
3093
3094 2023-07-27 Jan Hubicka <jh@suse.cz>
3095
3096 * tree-ssa-loop-im.cc (execute_sm_if_changed): Turn cap probability
3097 to guessed; fix count of new_bb.
3098
3099 2023-07-27 Jan Hubicka <jh@suse.cz>
3100
3101 * profile-count.h (profile_count::apply_probability): Fix
3102 handling of uninitialized probabilities, optimize scaling
3103 by probability 1.
3104
3105 2023-07-27 Richard Biener <rguenther@suse.de>
3106
3107 PR tree-optimization/91838
3108 * gimple-match-head.cc: Include attribs.h and asan.h.
3109 * generic-match-head.cc: Likewise.
3110 * match.pd (([rl]shift @0 out-of-bounds) -> zero): New pattern.
3111
3112 2023-07-27 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3113
3114 * config/riscv/riscv-modes.def (VECTOR_BOOL_MODE): Add VLS modes.
3115 (ADJUST_ALIGNMENT): Ditto.
3116 (ADJUST_PRECISION): Ditto.
3117 (VLS_MODES): Ditto.
3118 (VECTOR_MODE_WITH_PREFIX): Ditto.
3119 * config/riscv/riscv-opts.h (TARGET_VECTOR_VLS): New macro.
3120 * config/riscv/riscv-protos.h (riscv_v_ext_vls_mode_p): New function.
3121 * config/riscv/riscv-v.cc (INCLUDE_ALGORITHM): Add include.
3122 (legitimize_move): Enable basic VLS modes support.
3123 (get_vlmul): Ditto.
3124 (get_ratio): Ditto.
3125 (get_vector_mode): Ditto.
3126 * config/riscv/riscv-vector-switch.def (VLS_ENTRY): Add vls modes.
3127 * config/riscv/riscv.cc (riscv_v_ext_vls_mode_p): New function.
3128 (VLS_ENTRY): New macro.
3129 (riscv_v_ext_mode_p): Add vls modes.
3130 (riscv_get_v_regno_alignment): New function.
3131 (riscv_print_operand): Add vls modes.
3132 (riscv_hard_regno_nregs): Ditto.
3133 (riscv_hard_regno_mode_ok): Ditto.
3134 (riscv_regmode_natural_size): Ditto.
3135 (riscv_vectorize_preferred_vector_alignment): Ditto.
3136 * config/riscv/riscv.md: Ditto.
3137 * config/riscv/vector-iterators.md: Ditto.
3138 * config/riscv/vector.md: Ditto.
3139 * config/riscv/autovec-vls.md: New file.
3140
3141 2023-07-27 Pan Li <pan2.li@intel.com>
3142
3143 * config/riscv/riscv_vector.h (enum RVV_CSR): Removed.
3144 (vread_csr): Ditto.
3145 (vwrite_csr): Ditto.
3146
3147 2023-07-27 demin.han <demin.han@starfivetech.com>
3148
3149 * config/riscv/autovec.md: Delete which_alternative use in split
3150
3151 2023-07-27 Richard Biener <rguenther@suse.de>
3152
3153 * tree-ssa-sink.cc (sink_code_in_bb): Remove recursion, instead
3154 use a worklist ...
3155 (pass_sink_code::execute): ... in the caller.
3156
3157 2023-07-27 Kewen Lin <linkw@linux.ibm.com>
3158 Richard Biener <rguenther@suse.de>
3159
3160 PR tree-optimization/110776
3161 * tree-vect-stmts.cc (vectorizable_load): Always cost VMAT_ELEMENTWISE
3162 as scalar load.
3163
3164 2023-07-26 Xiao Zeng <zengxiao@eswincomputing.com>
3165
3166 * config/riscv/riscv.md: Include zicond.md
3167 * config/riscv/zicond.md: New file.
3168
3169 2023-07-26 Xiao Zeng <zengxiao@eswincomputing.com>
3170
3171 * common/config/riscv/riscv-common.cc: New extension.
3172 * config/riscv/riscv-opts.h (MASK_ZICOND): New mask.
3173 (TARGET_ZICOND): New target.
3174
3175 2023-07-26 Carl Love <cel@us.ibm.com>
3176
3177 * config/rs6000/rs6000-c.cc (find_instance): Add new parameter that
3178 specifies the number of built-in arguments to check.
3179 (altivec_resolve_overloaded_builtin): Update calls to find_instance
3180 to pass the number of built-in arguments to be checked.
3181
3182 2023-07-26 David Faust <david.faust@oracle.com>
3183
3184 * config/bpf/bpf.opt (mv3-atomics): New option.
3185 * config/bpf/bpf.cc (bpf_option_override): Handle it here.
3186 * config/bpf/bpf.h (enum_reg_class): Add R0 class.
3187 (REG_CLASS_NAMES): Likewise.
3188 (REG_CLASS_CONTENTS): Likewise.
3189 (REGNO_REG_CLASS): Handle R0.
3190 * config/bpf/bpf.md (UNSPEC_XADD): Rename to UNSPEC_AADD.
3191 (UNSPEC_AAND): New unspec.
3192 (UNSPEC_AOR): Likewise.
3193 (UNSPEC_AXOR): Likewise.
3194 (UNSPEC_AFADD): Likewise.
3195 (UNSPEC_AFAND): Likewise.
3196 (UNSPEC_AFOR): Likewise.
3197 (UNSPEC_AFXOR): Likewise.
3198 (UNSPEC_AXCHG): Likewise.
3199 (UNSPEC_ACMPX): Likewise.
3200 (atomic_add<mode>): Use UNSPEC_AADD and atomic type attribute.
3201 Move to...
3202 * config/bpf/atomic.md: ...Here. New file.
3203 * config/bpf/constraints.md (t): New constraint for R0.
3204 * doc/invoke.texi (eBPF Options): Document -mv3-atomics.
3205
3206 2023-07-26 Matthew Malcomson <matthew.malcomson@arm.com>
3207
3208 * tree-vect-stmts.cc (get_group_load_store_type): Reformat
3209 comment.
3210
3211 2023-07-26 Carl Love <cel@us.ibm.com>
3212
3213 * config/rs6000/rs6000-builtins.def: Rename
3214 __builtin_altivec_vreplace_un_uv2di as __builtin_altivec_vreplace_un_udi
3215 __builtin_altivec_vreplace_un_uv4si as __builtin_altivec_vreplace_un_usi
3216 __builtin_altivec_vreplace_un_v2df as __builtin_altivec_vreplace_un_df
3217 __builtin_altivec_vreplace_un_v2di as __builtin_altivec_vreplace_un_di
3218 __builtin_altivec_vreplace_un_v4sf as __builtin_altivec_vreplace_un_sf
3219 __builtin_altivec_vreplace_un_v4si as __builtin_altivec_vreplace_un_si.
3220 Rename VREPLACE_UN_UV2DI as VREPLACE_UN_UDI, VREPLACE_UN_UV4SI as
3221 VREPLACE_UN_USI, VREPLACE_UN_V2DF as VREPLACE_UN_DF,
3222 VREPLACE_UN_V2DI as VREPLACE_UN_DI, VREPLACE_UN_V4SF as
3223 VREPLACE_UN_SF, VREPLACE_UN_V4SI as VREPLACE_UN_SI.
3224 Rename vreplace_un_v2di as vreplace_un_di, vreplace_un_v4si as
3225 vreplace_un_si, vreplace_un_v2df as vreplace_un_df,
3226 vreplace_un_v2di as vreplace_un_di, vreplace_un_v4sf as
3227 vreplace_un_sf, vreplace_un_v4si as vreplace_un_si.
3228 * config/rs6000/rs6000-c.cc (find_instance): Add case
3229 RS6000_OVLD_VEC_REPLACE_UN.
3230 * config/rs6000/rs6000-overload.def (__builtin_vec_replace_un):
3231 Fix first argument type. Rename VREPLACE_UN_UV4SI as
3232 VREPLACE_UN_USI, VREPLACE_UN_V4SI as VREPLACE_UN_SI,
3233 VREPLACE_UN_UV2DI as VREPLACE_UN_UDI, VREPLACE_UN_V2DI as
3234 VREPLACE_UN_DI, VREPLACE_UN_V4SF as VREPLACE_UN_SF,
3235 VREPLACE_UN_V2DF as VREPLACE_UN_DF.
3236 * config/rs6000/vsx.md (REPLACE_ELT): Rename the mode_iterator
3237 REPLACE_ELT_V for vector modes.
3238 (REPLACE_ELT): New scalar mode iterator.
3239 (REPLACE_ELT_char): Add scalar attributes.
3240 (vreplace_un_<mode>): Change iterator and mode attribute.
3241
3242 2023-07-26 David Malcolm <dmalcolm@redhat.com>
3243
3244 PR analyzer/104940
3245 * Makefile.in (ANALYZER_OBJS): Add analyzer/symbol.o.
3246
3247 2023-07-26 Richard Biener <rguenther@suse.de>
3248
3249 PR tree-optimization/106081
3250 * tree-vect-slp.cc (vect_optimize_slp_pass::start_choosing_layouts):
3251 Assign layout -1 to splats.
3252
3253 2023-07-26 Aldy Hernandez <aldyh@redhat.com>
3254
3255 * range-op-mixed.h (class operator_cast): Add update_bitmask.
3256 * range-op.cc (operator_cast::update_bitmask): New.
3257 (operator_cast::fold_range): Call update_bitmask.
3258
3259 2023-07-26 Li Xu <xuli1@eswincomputing.com>
3260
3261 * config/riscv/riscv-vector-builtins.def (vfloat16mf4x2_t): Change
3262 scalar type to float16, eliminate warning.
3263 (vfloat16mf4x3_t): Ditto.
3264 (vfloat16mf4x4_t): Ditto.
3265 (vfloat16mf4x5_t): Ditto.
3266 (vfloat16mf4x6_t): Ditto.
3267 (vfloat16mf4x7_t): Ditto.
3268 (vfloat16mf4x8_t): Ditto.
3269 (vfloat16mf2x2_t): Ditto.
3270 (vfloat16mf2x3_t): Ditto.
3271 (vfloat16mf2x4_t): Ditto.
3272 (vfloat16mf2x5_t): Ditto.
3273 (vfloat16mf2x6_t): Ditto.
3274 (vfloat16mf2x7_t): Ditto.
3275 (vfloat16mf2x8_t): Ditto.
3276 (vfloat16m1x2_t): Ditto.
3277 (vfloat16m1x3_t): Ditto.
3278 (vfloat16m1x4_t): Ditto.
3279 (vfloat16m1x5_t): Ditto.
3280 (vfloat16m1x6_t): Ditto.
3281 (vfloat16m1x7_t): Ditto.
3282 (vfloat16m1x8_t): Ditto.
3283 (vfloat16m2x2_t): Ditto.
3284 (vfloat16m2x3_t): Ditto.
3285 (vfloat16m2x4_t): Ditto.
3286 (vfloat16m4x2_t): Ditto.
3287 * config/riscv/vector-iterators.md: add RVVM4x2DF in iterator V4T.
3288 * config/riscv/vector.md: add tuple mode in attr sew.
3289
3290 2023-07-26 Uros Bizjak <ubizjak@gmail.com>
3291
3292 PR target/110762
3293 * config/i386/i386.md (plusminusmult): New code iterator.
3294 * config/i386/mmx.md (mmxdoublevecmode): New mode attribute.
3295 (movq_<mode>_to_sse): New expander.
3296 (<plusminusmult:insn>v2sf3): Macroize expander from addv2sf3,
3297 subv2sf3 and mulv2sf3 using plusminusmult code iterator. Rewrite
3298 as a wrapper around V4SFmode operation.
3299 (mmx_addv2sf3): Change operand 1 and operand 2 predicates to
3300 nonimmediate_operand.
3301 (*mmx_addv2sf3): Remove SSE alternatives. Change operand 1 and
3302 operand 2 predicates to nonimmediate_operand.
3303 (mmx_subv2sf3): Change operand 2 predicate to nonimmediate_operand.
3304 (mmx_subrv2sf3): Change operand 1 predicate to nonimmediate_operand.
3305 (*mmx_subv2sf3): Remove SSE alternatives. Change operand 1 and
3306 operand 2 predicates to nonimmediate_operand.
3307 (mmx_mulv2sf3): Change operand 1 and operand 2 predicates to
3308 nonimmediate_operand.
3309 (*mmx_mulv2sf3): Remove SSE alternatives. Change operand 1 and
3310 operand 2 predicates to nonimmediate_operand.
3311 (divv2sf3): Rewrite as a wrapper around V4SFmode operation.
3312 (<smaxmin:code>v2sf3): Ditto.
3313 (mmx_<smaxmin:code>v2sf3): Change operand 1 and operand 2
3314 predicates to nonimmediate_operand.
3315 (*mmx_<smaxmin:code>v2sf3): Remove SSE alternatives. Change
3316 operand 1 and operand 2 predicates to nonimmediate_operand.
3317 (mmx_ieee_<ieee_maxmin>v2sf3): Ditto.
3318 (sqrtv2sf2): Rewrite as a wrapper around V4SFmode operation.
3319 (*mmx_haddv2sf3_low): Ditto.
3320 (*mmx_hsubv2sf3_low): Ditto.
3321 (vec_addsubv2sf3): Ditto.
3322 (*mmx_maskcmpv2sf3_comm): Remove.
3323 (*mmx_maskcmpv2sf3): Remove.
3324 (vec_cmpv2sfv2si): Rewrite as a wrapper around V4SFmode operation.
3325 (vcond<V2FI:mode>v2sf): Ditto.
3326 (fmav2sf4): Ditto.
3327 (fmsv2sf4): Ditto.
3328 (fnmav2sf4): Ditto.
3329 (fnmsv2sf4): Ditto.
3330 (fix_truncv2sfv2si2): Ditto.
3331 (fixuns_truncv2sfv2si2): Ditto.
3332 (mmx_fix_truncv2sfv2si2): Remove SSE alternatives.
3333 Change operand 1 predicate to nonimmediate_operand.
3334 (floatv2siv2sf2): Rewrite as a wrapper around V4SFmode operation.
3335 (floatunsv2siv2sf2): Ditto.
3336 (mmx_floatv2siv2sf2): Remove SSE alternatives.
3337 Change operand 1 predicate to nonimmediate_operand.
3338 (nearbyintv2sf2): Rewrite as a wrapper around V4SFmode operation.
3339 (rintv2sf2): Ditto.
3340 (lrintv2sfv2si2): Ditto.
3341 (ceilv2sf2): Ditto.
3342 (lceilv2sfv2si2): Ditto.
3343 (floorv2sf2): Ditto.
3344 (lfloorv2sfv2si2): Ditto.
3345 (btruncv2sf2): Ditto.
3346 (roundv2sf2): Ditto.
3347 (lroundv2sfv2si2): Ditto.
3348 (*mmx_roundv2sf2): Remove.
3349
3350 2023-07-26 Jose E. Marchesi <jose.marchesi@oracle.com>
3351
3352 * config/bpf/bpf.md: Fix neg{SI,DI}2 insn.
3353
3354 2023-07-26 Richard Biener <rguenther@suse.de>
3355
3356 PR tree-optimization/110799
3357 * tree-ssa-pre.cc (compute_avail): More thoroughly match
3358 up TBAA behavior of redundant loads.
3359
3360 2023-07-26 Jakub Jelinek <jakub@redhat.com>
3361
3362 PR tree-optimization/110755
3363 * range-op-float.cc (frange_arithmetic): Change +0 result to -0
3364 for PLUS_EXPR or MINUS_EXPR if -frounding-math, inf is negative and
3365 it is exact op1 + (-op1) or op1 - op1.
3366
3367 2023-07-26 Kewen Lin <linkw@linux.ibm.com>
3368
3369 PR target/110741
3370 * config/rs6000/vsx.md (define_insn xxeval): Correct vsx
3371 operands output with "x".
3372
3373 2023-07-26 Aldy Hernandez <aldyh@redhat.com>
3374
3375 * range-op.cc (class operator_absu): Add update_bitmask.
3376 (operator_absu::update_bitmask): New.
3377
3378 2023-07-26 Aldy Hernandez <aldyh@redhat.com>
3379
3380 * range-op-mixed.h (class operator_abs): Add update_bitmask.
3381 * range-op.cc (operator_abs::update_bitmask): New.
3382
3383 2023-07-26 Aldy Hernandez <aldyh@redhat.com>
3384
3385 * range-op-mixed.h (class operator_bitwise_not): Add update_bitmask.
3386 * range-op.cc (operator_bitwise_not::update_bitmask): New.
3387
3388 2023-07-26 Aldy Hernandez <aldyh@redhat.com>
3389
3390 * range-op.cc (update_known_bitmask): Handle unary operators.
3391
3392 2023-07-26 Aldy Hernandez <aldyh@redhat.com>
3393
3394 * tree-ssa-ccp.cc (bit_value_unop): Initialize val when appropriate.
3395
3396 2023-07-26 Jin Ma <jinma@linux.alibaba.com>
3397
3398 * config/riscv/riscv.md: Likewise.
3399
3400 2023-07-26 Jan Hubicka <jh@suse.cz>
3401
3402 * profile-count.cc (profile_count::to_sreal_scale): Value is not know
3403 if we divide by zero.
3404
3405 2023-07-25 David Faust <david.faust@oracle.com>
3406
3407 * config/bpf/bpf.cc (bpf_print_operand_address): Don't print
3408 enclosing parentheses for pseudo-C dialect.
3409 * config/bpf/bpf.md (zero_exdendhidi2): Add parentheses around
3410 operands of pseudo-C dialect output templates where needed.
3411 (zero_extendqidi2): Likewise.
3412 (zero_extendsidi2): Likewise.
3413 (*mov<MM:mode>): Likewise.
3414
3415 2023-07-25 Aldy Hernandez <aldyh@redhat.com>
3416
3417 * tree-ssa-ccp.cc (value_mask_to_min_max): Make static.
3418 (bit_value_mult_const): Same.
3419 (get_individual_bits): Same.
3420
3421 2023-07-25 Haochen Gui <guihaoc@gcc.gnu.org>
3422
3423 PR target/103605
3424 * config/rs6000/rs6000-builtin.cc (rs6000_gimple_fold_builtin): Gimple
3425 fold RS6000_BIF_XSMINDP and RS6000_BIF_XSMAXDP when fast-math is set.
3426 * config/rs6000/rs6000.md (FMINMAX): New int iterator.
3427 (minmax_op): New int attribute.
3428 (UNSPEC_FMAX, UNSPEC_FMIN): New unspecs.
3429 (f<minmax_op><mode>3): New pattern by UNSPEC_FMAX and UNSPEC_FMIN.
3430 * config/rs6000/rs6000-builtins.def (__builtin_vsx_xsmaxdp): Set
3431 pattern to fmaxdf3.
3432 (__builtin_vsx_xsmindp): Set pattern to fmindf3.
3433
3434 2023-07-24 David Faust <david.faust@oracle.com>
3435
3436 * config/bpf/bpf.md (nop): Add pseudo-c asm dialect template.
3437
3438 2023-07-24 Drew Ross <drross@redhat.com>
3439 Jakub Jelinek <jakub@redhat.com>
3440
3441 PR middle-end/109986
3442 * generic-match-head.cc (bitwise_equal_p): New macro.
3443 * gimple-match-head.cc (bitwise_equal_p): New macro.
3444 (gimple_nop_convert): Declare.
3445 (gimple_bitwise_equal_p): Helper for bitwise_equal_p.
3446 * match.pd ((~X | Y) ^ X -> ~(X & Y)): New simplification.
3447
3448 2023-07-24 Jeff Law <jlaw@ventanamicro.com>
3449
3450 * common/config/riscv/riscv-common.cc (riscv_subset_list::add): Use
3451 single quote rather than backquote in diagnostic.
3452
3453 2023-07-24 Jose E. Marchesi <jose.marchesi@oracle.com>
3454
3455 PR target/110783
3456 * config/bpf/bpf.opt: New command-line option -msdiv.
3457 * config/bpf/bpf.md: Conditionalize sdiv/smod on bpf_has_sdiv.
3458 * config/bpf/bpf.cc (bpf_option_override): Initialize
3459 bpf_has_sdiv.
3460 * doc/invoke.texi (eBPF Options): Document -msdiv.
3461
3462 2023-07-24 Jeff Law <jlaw@ventanamicro.com>
3463
3464 * config/riscv/riscv.cc (riscv_option_override): Spell out
3465 greater than and use cannot in diagnostic string.
3466
3467 2023-07-24 Richard Biener <rguenther@suse.de>
3468
3469 * tree-vectorizer.h (_slp_tree::push_vec_def): Add.
3470 (_slp_tree::vec_stmts): Remove.
3471 (SLP_TREE_VEC_STMTS): Remove.
3472 * tree-vect-slp.cc (_slp_tree::push_vec_def): Define.
3473 (_slp_tree::_slp_tree): Adjust.
3474 (_slp_tree::~_slp_tree): Likewise.
3475 (vect_get_slp_vect_def): Simplify.
3476 (vect_get_slp_defs): Likewise.
3477 (vect_transform_slp_perm_load_1): Adjust.
3478 (vect_add_slp_permutation): Likewise.
3479 (vect_schedule_slp_node): Likewise.
3480 (vectorize_slp_instance_root_stmt): Likewise.
3481 (vect_schedule_scc): Likewise.
3482 * tree-vect-stmts.cc (vectorizable_bswap): Use push_vec_def.
3483 (vectorizable_call): Likewise.
3484 (vectorizable_call): Likewise.
3485 (vect_create_vectorized_demotion_stmts): Likewise.
3486 (vectorizable_conversion): Likewise.
3487 (vectorizable_assignment): Likewise.
3488 (vectorizable_shift): Likewise.
3489 (vectorizable_operation): Likewise.
3490 (vectorizable_load): Likewise.
3491 (vectorizable_condition): Likewise.
3492 (vectorizable_comparison): Likewise.
3493 * tree-vect-loop.cc (vect_create_epilog_for_reduction): Adjust.
3494 (vectorize_fold_left_reduction): Use push_vec_def.
3495 (vect_transform_reduction): Likewise.
3496 (vect_transform_cycle_phi): Likewise.
3497 (vectorizable_lc_phi): Likewise.
3498 (vectorizable_phi): Likewise.
3499 (vectorizable_recurr): Likewise.
3500 (vectorizable_induction): Likewise.
3501 (vectorizable_live_operation): Likewise.
3502
3503 2023-07-24 Richard Biener <rguenther@suse.de>
3504
3505 * tree-ssa-loop.cc: Remove unused tree-vectorizer.h include.
3506
3507 2023-07-24 Richard Biener <rguenther@suse.de>
3508
3509 * config/i386/i386-builtins.cc: Remove tree-vectorizer.h include.
3510 * config/i386/i386-expand.cc: Likewise.
3511 * config/i386/i386-features.cc: Likewise.
3512 * config/i386/i386-options.cc: Likewise.
3513
3514 2023-07-24 Robin Dapp <rdapp@ventanamicro.com>
3515
3516 * tree-vect-stmts.cc (vectorizable_conversion): Handle
3517 more demotion/promotion for modifier == NONE.
3518
3519 2023-07-24 Roger Sayle <roger@nextmovesoftware.com>
3520
3521 PR target/110787
3522 PR target/110790
3523 Revert patch.
3524 * config/i386/i386.md (extv<mode>): Use QImode for offsets.
3525 (extzv<mode>): Likewise.
3526 (insv<mode>): Likewise.
3527 (*testqi_ext_3): Likewise.
3528 (*btr<mode>_2): Likewise.
3529 (define_split): Likewise.
3530 (*btsq_imm): Likewise.
3531 (*btrq_imm): Likewise.
3532 (*btcq_imm): Likewise.
3533 (define_peephole2 x3): Likewise.
3534 (*bt<mode>): Likewise
3535 (*bt<mode>_mask): New define_insn_and_split.
3536 (*jcc_bt<mode>): Use QImode for offsets.
3537 (*jcc_bt<mode>_1): Delete obsolete pattern.
3538 (*jcc_bt<mode>_mask): Use QImode offsets.
3539 (*jcc_bt<mode>_mask_1): Likewise.
3540 (define_split): Likewise.
3541 (*bt<mode>_setcqi): Likewise.
3542 (*bt<mode>_setncqi): Likewise.
3543 (*bt<mode>_setnc<mode>): Likewise.
3544 (*bt<mode>_setncqi_2): Likewise.
3545 (*bt<mode>_setc<mode>_mask): New define_insn_and_split.
3546 (bmi2_bzhi_<mode>3): Use QImode offsets.
3547 (*bmi2_bzhi_<mode>3): Likewise.
3548 (*bmi2_bzhi_<mode>3_1): Likewise.
3549 (*bmi2_bzhi_<mode>3_1_ccz): Likewise.
3550 (@tbm_bextri_<mode>): Likewise.
3551
3552 2023-07-24 Jose E. Marchesi <jose.marchesi@oracle.com>
3553
3554 * config/bpf/bpf-opts.h (enum bpf_kernel_version): Remove enum.
3555 * config/bpf/bpf.opt (mkernel): Remove option.
3556 * config/bpf/bpf.cc (bpf_target_macros): Do not define
3557 BPF_KERNEL_VERSION_CODE.
3558
3559 2023-07-24 Jose E. Marchesi <jose.marchesi@oracle.com>
3560
3561 PR target/110786
3562 * config/bpf/bpf.opt (mcpu): Add ISA_V4 and make it the default.
3563 (mbswap): New option.
3564 * config/bpf/bpf-opts.h (enum bpf_isa_version): New value ISA_V4.
3565 * config/bpf/bpf.cc (bpf_option_override): Set bpf_has_bswap.
3566 * config/bpf/bpf.md: Use bswap instructions if available for
3567 bswap* insn, and fix constraint.
3568 * doc/invoke.texi (eBPF Options): Document -mcpu=v4 and -mbswap.
3569
3570 2023-07-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3571
3572 * config/riscv/autovec.md (fold_left_plus_<mode>): New pattern.
3573 (mask_len_fold_left_plus_<mode>): Ditto.
3574 * config/riscv/riscv-protos.h (enum insn_type): New enum.
3575 (enum reduction_type): Ditto.
3576 (expand_reduction): Add in-order reduction.
3577 * config/riscv/riscv-v.cc (emit_nonvlmax_fp_reduction_insn): New function.
3578 (expand_reduction): Add in-order reduction.
3579
3580 2023-07-24 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
3581
3582 * tree-vect-loop.cc (get_masked_reduction_fn): Add mask_len_fold_left_plus.
3583 (vectorize_fold_left_reduction): Ditto.
3584 (vectorizable_reduction): Ditto.
3585 (vect_transform_reduction): Ditto.
3586
3587 2023-07-24 Richard Biener <rguenther@suse.de>
3588
3589 PR tree-optimization/110777
3590 * tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_avail):
3591 Avoid propagating abnormals.
3592
3593 2023-07-24 Richard Biener <rguenther@suse.de>
3594
3595 PR tree-optimization/110766
3596 * tree-scalar-evolution.cc
3597 (analyze_and_compute_bitwise_induction_effect): Check the PHI
3598 is defined in the loop header.
3599
3600 2023-07-24 Kewen Lin <linkw@linux.ibm.com>
3601
3602 PR tree-optimization/110740
3603 * tree-vect-loop.cc (vect_analyze_loop_costing): Do not vectorize a
3604 loop with a single scalar iteration.
3605
3606 2023-07-24 Pan Li <pan2.li@intel.com>
3607
3608 * config/riscv/riscv-vector-builtins-shapes.cc
3609 (struct alu_frm_def): Take range check.
3610
3611 2023-07-22 Vineet Gupta <vineetg@rivosinc.com>
3612
3613 PR target/110748
3614 * config/riscv/predicates.md (const_0_operand): Add back
3615 const_double.
3616
3617 2023-07-22 Roger Sayle <roger@nextmovesoftware.com>
3618
3619 * config/i386/i386-expand.cc (ix86_expand_move): Disable the
3620 64-bit insertions into TImode optimizations with -O0, unless
3621 the function has the "naked" attribute (for PR target/110533).
3622
3623 2023-07-22 Andrew Pinski <apinski@marvell.com>
3624
3625 PR target/110778
3626 * rtl.h (extended_count): Change last argument type
3627 to bool.
3628
3629 2023-07-22 Roger Sayle <roger@nextmovesoftware.com>
3630
3631 * config/i386/i386.md (extv<mode>): Use QImode for offsets.
3632 (extzv<mode>): Likewise.
3633 (insv<mode>): Likewise.
3634 (*testqi_ext_3): Likewise.
3635 (*btr<mode>_2): Likewise.
3636 (define_split): Likewise.
3637 (*btsq_imm): Likewise.
3638 (*btrq_imm): Likewise.
3639 (*btcq_imm): Likewise.
3640 (define_peephole2 x3): Likewise.
3641 (*bt<mode>): Likewise
3642 (*bt<mode>_mask): New define_insn_and_split.
3643 (*jcc_bt<mode>): Use QImode for offsets.
3644 (*jcc_bt<mode>_1): Delete obsolete pattern.
3645 (*jcc_bt<mode>_mask): Use QImode offsets.
3646 (*jcc_bt<mode>_mask_1): Likewise.
3647 (define_split): Likewise.
3648 (*bt<mode>_setcqi): Likewise.
3649 (*bt<mode>_setncqi): Likewise.
3650 (*bt<mode>_setnc<mode>): Likewise.
3651 (*bt<mode>_setncqi_2): Likewise.
3652 (*bt<mode>_setc<mode>_mask): New define_insn_and_split.
3653 (bmi2_bzhi_<mode>3): Use QImode offsets.
3654 (*bmi2_bzhi_<mode>3): Likewise.
3655 (*bmi2_bzhi_<mode>3_1): Likewise.
3656 (*bmi2_bzhi_<mode>3_1_ccz): Likewise.
3657 (@tbm_bextri_<mode>): Likewise.
3658
3659 2023-07-22 Jeff Law <jlaw@ventanamicro.com>
3660
3661 * config/bfin/bfin.md (ones): Fix length computation.
3662
3663 2023-07-22 Vladimir N. Makarov <vmakarov@redhat.com>
3664
3665 * lra-eliminations.cc (update_reg_eliminate): Fix the assert.
3666 (lra_update_fp2sp_elimination): Use HARD_FRAME_POINTER_REGNUM
3667 instead of FRAME_POINTER_REGNUM to spill pseudos.
3668
3669 2023-07-21 Roger Sayle <roger@nextmovesoftware.com>
3670 Richard Biener <rguenther@suse.de>
3671
3672 PR c/110699
3673 * gimplify.cc (gimplify_compound_lval): If the array's type
3674 is error_mark_node then return GS_ERROR.
3675
3676 2023-07-21 Cupertino Miranda <cupertino.miranda@oracle.com>
3677
3678 PR target/110770
3679 * config/bpf/bpf.opt: Added option -masm=<dialect>.
3680 * config/bpf/bpf-opts.h (enum bpf_asm_dialect): New type.
3681 * config/bpf/bpf.cc (bpf_print_register): New function.
3682 (bpf_print_register): Support pseudo-c syntax for registers.
3683 (bpf_print_operand_address): Likewise.
3684 * config/bpf/bpf.h (ASM_SPEC): handle -msasm.
3685 (ASSEMBLER_DIALECT): Define.
3686 * config/bpf/bpf.md: Added pseudo-c templates.
3687 * doc/invoke.texi (-masm=): New eBPF option item.
3688
3689 2023-07-21 Cupertino Miranda <cupertino.miranda@oracle.com>
3690
3691 * config/bpf/bpf.md: fixed template for neg instruction.
3692
3693 2023-07-21 Jan Hubicka <jh@suse.cz>
3694
3695 PR target/110727
3696 * tree-vect-loop.cc (scale_profile_for_vect_loop): Avoid scaling flat
3697 profiles by vectorization factor.
3698 (vect_transform_loop): Check for flat profiles.
3699
3700 2023-07-21 Jan Hubicka <jh@suse.cz>
3701
3702 * cfgloop.h (maybe_flat_loop_profile): Declare
3703 * cfgloopanal.cc (maybe_flat_loop_profile): New function.
3704 * tree-cfg.cc (print_loop_info): Print info about flat profiles.
3705
3706 2023-07-21 Jan Hubicka <jh@suse.cz>
3707
3708 * cfgloop.cc (get_estimated_loop_iterations): Use sreal::to_nearest_int
3709 * cfgloopanal.cc (expected_loop_iterations_unbounded): Likewise.
3710 * predict.cc (estimate_bb_frequencies): Likewise.
3711 * profile.cc (branch_prob): Likewise.
3712 * tree-ssa-loop-niter.cc (estimate_numbers_of_iterations): Likewise
3713
3714 2023-07-21 Iain Sandoe <iain@sandoe.co.uk>
3715
3716 * config.in: Regenerate.
3717 * config/darwin.h (DARWIN_LD_DEMANGLE): New.
3718 (LINK_COMMAND_SPEC_A): Add demangle handling.
3719 * configure: Regenerate.
3720 * configure.ac: Detect linker support for '-demangle'.
3721
3722 2023-07-21 Jan Hubicka <jh@suse.cz>
3723
3724 * sreal.cc (sreal::to_nearest_int): New.
3725 (sreal_verify_basics): Verify also to_nearest_int.
3726 (verify_aritmetics): Likewise.
3727 (sreal_verify_conversions): New.
3728 (sreal_cc_tests): Call sreal_verify_conversions.
3729 * sreal.h: (sreal::to_nearest_int): Declare
3730
3731 2023-07-21 Jan Hubicka <jh@suse.cz>
3732
3733 * tree-ssa-loop-ch.cc (enum ch_decision): New enum.
3734 (should_duplicate_loop_header_p): Return info on profitability.
3735 (do_while_loop_p): Watch for constant conditionals.
3736 (update_profile_after_ch): Do not sanity check that all
3737 static exits are taken.
3738 (ch_base::copy_headers): Run on all loops.
3739 (pass_ch::process_loop_p): Improve heuristics by handling also
3740 do_while loop and duplicating shortest sequence containing all
3741 winning blocks.
3742
3743 2023-07-21 Jan Hubicka <jh@suse.cz>
3744
3745 * tree-ssa-loop-niter.cc (finite_loop_p): Reorder to do cheap
3746 tests first; update finite_p flag.
3747
3748 2023-07-21 Jan Hubicka <jh@suse.cz>
3749
3750 * cfgloop.cc (flow_loop_dump): Use print_loop_info.
3751 * cfgloop.h (print_loop_info): Declare.
3752 * tree-cfg.cc (print_loop_info): Break out from ...; add
3753 printing of missing fields and profile
3754 (print_loop): ... here.
3755
3756 2023-07-21 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3757
3758 * config/riscv/riscv-v.cc (expand_gather_scatter): Remove redundant variables.
3759
3760 2023-07-21 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3761
3762 * tree-vect-stmts.cc (check_load_store_for_partial_vectors): Change condition order.
3763 (vectorizable_operation): Ditto.
3764
3765 2023-07-21 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3766
3767 * config/riscv/autovec.md: Align order of mask and len.
3768 * config/riscv/riscv-v.cc (expand_load_store): Ditto.
3769 (expand_gather_scatter): Ditto.
3770 * doc/md.texi: Ditto.
3771 * internal-fn.cc (add_len_and_mask_args): Ditto.
3772 (add_mask_and_len_args): Ditto.
3773 (expand_partial_load_optab_fn): Ditto.
3774 (expand_partial_store_optab_fn): Ditto.
3775 (expand_scatter_store_optab_fn): Ditto.
3776 (expand_gather_load_optab_fn): Ditto.
3777 (internal_fn_len_index): Ditto.
3778 (internal_fn_mask_index): Ditto.
3779 (internal_len_load_store_bias): Ditto.
3780 * tree-vect-stmts.cc (vectorizable_store): Ditto.
3781 (vectorizable_load): Ditto.
3782
3783 2023-07-21 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3784
3785 * config/riscv/autovec.md (len_maskload<mode><vm>): Change LEN_MASK into MASK_LEN.
3786 (mask_len_load<mode><vm>): Ditto.
3787 (len_maskstore<mode><vm>): Ditto.
3788 (mask_len_store<mode><vm>): Ditto.
3789 (len_mask_gather_load<RATIO64:mode><RATIO64I:mode>): Ditto.
3790 (mask_len_gather_load<RATIO64:mode><RATIO64I:mode>): Ditto.
3791 (len_mask_gather_load<RATIO32:mode><RATIO32I:mode>): Ditto.
3792 (mask_len_gather_load<RATIO32:mode><RATIO32I:mode>): Ditto.
3793 (len_mask_gather_load<RATIO16:mode><RATIO16I:mode>): Ditto.
3794 (mask_len_gather_load<RATIO16:mode><RATIO16I:mode>): Ditto.
3795 (len_mask_gather_load<RATIO8:mode><RATIO8I:mode>): Ditto.
3796 (mask_len_gather_load<RATIO8:mode><RATIO8I:mode>): Ditto.
3797 (len_mask_gather_load<RATIO4:mode><RATIO4I:mode>): Ditto.
3798 (mask_len_gather_load<RATIO4:mode><RATIO4I:mode>): Ditto.
3799 (len_mask_gather_load<RATIO2:mode><RATIO2I:mode>): Ditto.
3800 (mask_len_gather_load<RATIO2:mode><RATIO2I:mode>): Ditto.
3801 (len_mask_gather_load<RATIO1:mode><RATIO1:mode>): Ditto.
3802 (mask_len_gather_load<RATIO1:mode><RATIO1:mode>): Ditto.
3803 (len_mask_scatter_store<RATIO64:mode><RATIO64I:mode>): Ditto.
3804 (mask_len_scatter_store<RATIO64:mode><RATIO64I:mode>): Ditto.
3805 (len_mask_scatter_store<RATIO32:mode><RATIO32I:mode>): Ditto.
3806 (mask_len_scatter_store<RATIO32:mode><RATIO32I:mode>): Ditto.
3807 (len_mask_scatter_store<RATIO16:mode><RATIO16I:mode>): Ditto.
3808 (mask_len_scatter_store<RATIO16:mode><RATIO16I:mode>): Ditto.
3809 (len_mask_scatter_store<RATIO8:mode><RATIO8I:mode>): Ditto.
3810 (mask_len_scatter_store<RATIO8:mode><RATIO8I:mode>): Ditto.
3811 (len_mask_scatter_store<RATIO4:mode><RATIO4I:mode>): Ditto.
3812 (mask_len_scatter_store<RATIO4:mode><RATIO4I:mode>): Ditto.
3813 (len_mask_scatter_store<RATIO2:mode><RATIO2I:mode>): Ditto.
3814 (mask_len_scatter_store<RATIO2:mode><RATIO2I:mode>): Ditto.
3815 (len_mask_scatter_store<RATIO1:mode><RATIO1:mode>): Ditto.
3816 (mask_len_scatter_store<RATIO1:mode><RATIO1:mode>): Ditto.
3817 * doc/md.texi: Ditto.
3818 * genopinit.cc (main): Ditto.
3819 (CMP_NAME): Ditto. Ditto.
3820 * gimple-fold.cc (arith_overflowed_p): Ditto.
3821 (gimple_fold_partial_load_store_mem_ref): Ditto.
3822 (gimple_fold_call): Ditto.
3823 * internal-fn.cc (len_maskload_direct): Ditto.
3824 (mask_len_load_direct): Ditto.
3825 (len_maskstore_direct): Ditto.
3826 (mask_len_store_direct): Ditto.
3827 (expand_call_mem_ref): Ditto.
3828 (expand_len_maskload_optab_fn): Ditto.
3829 (expand_mask_len_load_optab_fn): Ditto.
3830 (expand_len_maskstore_optab_fn): Ditto.
3831 (expand_mask_len_store_optab_fn): Ditto.
3832 (direct_len_maskload_optab_supported_p): Ditto.
3833 (direct_mask_len_load_optab_supported_p): Ditto.
3834 (direct_len_maskstore_optab_supported_p): Ditto.
3835 (direct_mask_len_store_optab_supported_p): Ditto.
3836 (internal_load_fn_p): Ditto.
3837 (internal_store_fn_p): Ditto.
3838 (internal_gather_scatter_fn_p): Ditto.
3839 (internal_fn_len_index): Ditto.
3840 (internal_fn_mask_index): Ditto.
3841 (internal_fn_stored_value_index): Ditto.
3842 (internal_len_load_store_bias): Ditto.
3843 * internal-fn.def (LEN_MASK_GATHER_LOAD): Ditto.
3844 (MASK_LEN_GATHER_LOAD): Ditto.
3845 (LEN_MASK_LOAD): Ditto.
3846 (MASK_LEN_LOAD): Ditto.
3847 (LEN_MASK_SCATTER_STORE): Ditto.
3848 (MASK_LEN_SCATTER_STORE): Ditto.
3849 (LEN_MASK_STORE): Ditto.
3850 (MASK_LEN_STORE): Ditto.
3851 * optabs-query.cc (supports_vec_gather_load_p): Ditto.
3852 (supports_vec_scatter_store_p): Ditto.
3853 * optabs-tree.cc (target_supports_mask_load_store_p): Ditto.
3854 (target_supports_len_load_store_p): Ditto.
3855 * optabs.def (OPTAB_CD): Ditto.
3856 * tree-ssa-alias.cc (ref_maybe_used_by_call_p_1): Ditto.
3857 (call_may_clobber_ref_p_1): Ditto.
3858 * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Ditto.
3859 (dse_optimize_stmt): Ditto.
3860 * tree-ssa-loop-ivopts.cc (get_mem_type_for_internal_fn): Ditto.
3861 (get_alias_ptr_type_for_ptr_address): Ditto.
3862 * tree-vect-data-refs.cc (vect_gather_scatter_fn_p): Ditto.
3863 * tree-vect-patterns.cc (vect_recog_gather_scatter_pattern): Ditto.
3864 * tree-vect-stmts.cc (check_load_store_for_partial_vectors): Ditto.
3865 (vect_get_strided_load_store_ops): Ditto.
3866 (vectorizable_store): Ditto.
3867 (vectorizable_load): Ditto.
3868
3869 2023-07-21 Haochen Jiang <haochen.jiang@intel.com>
3870
3871 * config/i386/i386.opt: Fix a typo.
3872
3873 2023-07-21 Richard Biener <rguenther@suse.de>
3874
3875 PR tree-optimization/88540
3876 * tree-ssa-phiopt.cc (minmax_replacement): Do not give up
3877 with NaNs but handle the simple case by if-converting to a
3878 COND_EXPR.
3879
3880 2023-07-21 Andrew Pinski <apinski@marvell.com>
3881
3882 * match.pd (minmax<minmax<a,b>,a>->minmax<a,b>): New
3883 transformation.
3884
3885 2023-07-21 Richard Biener <rguenther@suse.de>
3886
3887 PR tree-optimization/110742
3888 * tree-vect-slp.cc (vect_optimize_slp_pass::get_result_with_layout):
3889 Do not materialize an edge permutation in an external node with
3890 vector defs.
3891 (vect_slp_analyze_node_operations_1): Guard purely internal
3892 nodes better.
3893
3894 2023-07-21 Jan Hubicka <jh@suse.cz>
3895
3896 * cfgloop.cc: Include sreal.h.
3897 (flow_loop_dump): Dump sreal iteration exsitmate.
3898 (get_estimated_loop_iterations): Update.
3899 * cfgloop.h (expected_loop_iterations_by_profile): Declare.
3900 * cfgloopanal.cc (expected_loop_iterations_by_profile): New function.
3901 (expected_loop_iterations_unbounded): Use new API.
3902 * cfgloopmanip.cc (scale_loop_profile): Use
3903 expected_loop_iterations_by_profile
3904 * predict.cc (pass_profile::execute): Likewise.
3905 * profile.cc (branch_prob): Likewise.
3906 * tree-ssa-loop-niter.cc: Include sreal.h.
3907 (estimate_numbers_of_iterations): Likewise
3908
3909 2023-07-21 Kewen Lin <linkw@linux.ibm.com>
3910
3911 PR tree-optimization/110744
3912 * tree-ssa-sccvn.cc (vn_reference_lookup_3): Correct the index of bias
3913 operand for ifn IFN_LEN_STORE.
3914
3915 2023-07-21 liuhongt <hongtao.liu@intel.com>
3916
3917 PR target/89701
3918 * common.opt: (fcf-protection=): Add EnumSet attribute to
3919 support combination of params.
3920
3921 2023-07-21 David Malcolm <dmalcolm@redhat.com>
3922
3923 PR middle-end/110612
3924 * text-art/table.cc (table_geometry::table_geometry): Drop m_table
3925 field.
3926 (table_geometry::table_x_to_canvas_x): Add cast to comparison.
3927 (table_geometry::table_y_to_canvas_y): Likewise.
3928 * text-art/table.h (table_geometry::m_table): Drop unused field.
3929 * text-art/widget.h (wrapper_widget::update_child_alloc_rects):
3930 Add "override".
3931
3932 2023-07-20 Uros Bizjak <ubizjak@gmail.com>
3933
3934 PR target/110717
3935 * config/i386/i386-features.cc
3936 (general_scalar_chain::compute_convert_gain): Calculate gain
3937 for extend higpart case.
3938 (general_scalar_chain::convert_op): Handle
3939 ASHIFTRT/ASHIFT combined RTX.
3940 (general_scalar_to_vector_candidate_p): Enable ASHIFTRT for
3941 SImode for SSE2 targets. Handle ASHIFTRT/ASHIFT combined RTX.
3942 * config/i386/i386.md (*extend<dwi>2_doubleword_highpart):
3943 New define_insn_and_split pattern.
3944 (*extendv2di2_highpart_stv): Ditto.
3945
3946 2023-07-20 Vladimir N. Makarov <vmakarov@redhat.com>
3947
3948 * lra-constraints.cc (simplify_operand_subreg): Check frame pointer
3949 simplification.
3950
3951 2023-07-20 Andrew Pinski <apinski@marvell.com>
3952
3953 * combine.cc (dump_combine_stats): Remove.
3954 (dump_combine_total_stats): Remove.
3955 (total_attempts, total_merges, total_extras,
3956 total_successes): Remove.
3957 (combine_instructions): Don't increment total stats
3958 instead use statistics_counter_event.
3959 * dumpfile.cc (print_combine_total_stats): Remove.
3960 * dumpfile.h (print_combine_total_stats): Remove.
3961 (dump_combine_total_stats): Remove.
3962 * passes.cc (finish_optimization_passes):
3963 Don't call print_combine_total_stats.
3964 * rtl.h (dump_combine_total_stats): Remove.
3965 (dump_combine_stats): Remove.
3966
3967 2023-07-20 Jan Hubicka <jh@suse.cz>
3968
3969 * tree-ssa-loop-ch.cc (should_duplicate_loop_header_p): Use BIT instead of TRUTH
3970 logical ops.
3971
3972 2023-07-20 Martin Jambor <mjambor@suse.cz>
3973
3974 * doc/invoke.texi (analyzer-text-art-string-ellipsis-threshold): New.
3975 (analyzer-text-art-ideal-canvas-width): Likewise.
3976 (analyzer-text-art-string-ellipsis-head-len): Likewise.
3977 (analyzer-text-art-string-ellipsis-tail-len): Likewise.
3978
3979 2023-07-20 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
3980
3981 * tree-vect-stmts.cc (check_load_store_for_partial_vectors):
3982 Refine code structure.
3983
3984 2023-07-20 Jan Hubicka <jh@suse.cz>
3985
3986 * tree-ssa-loop-ch.cc (edge_range_query): Rename to ...
3987 (get_range_query): ... this one; do
3988 (static_loop_exit): Add query parametr, turn ranger to reference.
3989 (loop_static_stmt_p): New function.
3990 (loop_static_op_p): New function.
3991 (loop_iv_derived_p): Remove.
3992 (loop_combined_static_and_iv_p): New function.
3993 (should_duplicate_loop_header_p): Discover combined onditionals;
3994 do not track iv derived; improve dumps.
3995 (pass_ch::execute): Fix whitespace.
3996
3997 2023-07-20 Richard Biener <rguenther@suse.de>
3998
3999 PR tree-optimization/110204
4000 * tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_avail):
4001 Look through copies generated by PRE.
4002
4003 2023-07-20 Matthew Malcomson <matthew.malcomson@arm.com>
4004
4005 * tree-vect-stmts.cc (get_group_load_store_type): Account for
4006 `gap` when checking if need to peel twice.
4007
4008 2023-07-20 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
4009
4010 PR middle-end/77928
4011 * doc/extend.texi: Document iseqsig builtin.
4012 * builtins.cc (fold_builtin_iseqsig): New function.
4013 (fold_builtin_2): Handle BUILT_IN_ISEQSIG.
4014 (is_inexpensive_builtin): Handle BUILT_IN_ISEQSIG.
4015 * builtins.def (BUILT_IN_ISEQSIG): New built-in.
4016
4017 2023-07-20 Pan Li <pan2.li@intel.com>
4018
4019 * config/riscv/vector.md: Fix incorrect match_operand.
4020
4021 2023-07-20 Roger Sayle <roger@nextmovesoftware.com>
4022
4023 * config/i386/i386-expand.cc (ix86_expand_move): Don't call
4024 force_reg, to use SUBREG rather than create a new pseudo when
4025 inserting DFmode fields into TImode with insvti_{high,low}part.
4026 * config/i386/i386.md (*concat<mode><dwi>3_3): Split into two
4027 define_insn_and_split...
4028 (*concatditi3_3): 64-bit implementation. Provide alternative
4029 that allows register allocation to use SSE registers that is
4030 split into vec_concatv2di after reload.
4031 (*concatsidi3_3): 32-bit implementation.
4032
4033 2023-07-20 Richard Biener <rguenther@suse.de>
4034
4035 PR middle-end/61747
4036 * internal-fn.cc (expand_vec_cond_optab_fn): When the
4037 value operands are equal to the original comparison operands
4038 preserve that equality by re-using the comparison expansion.
4039 * optabs.cc (emit_conditional_move): When the value operands
4040 are equal to the comparison operands and would be forced to
4041 a register by prepare_cmp_insn do so earlier, preserving the
4042 equality.
4043
4044 2023-07-20 Pan Li <pan2.li@intel.com>
4045
4046 * config/riscv/vector.md: Align pattern format.
4047
4048 2023-07-20 Haochen Jiang <haochen.jiang@intel.com>
4049
4050 * doc/invoke.texi: Remove AVX512VP2INTERSECT in
4051 Granite Rapids{, D} from documentation.
4052
4053 2023-07-20 Juzhe-Zhong <juzhe.zhong@rivai.ai>
4054
4055 * config/riscv/autovec.md
4056 (len_mask_gather_load<VNX16_QHSD:mode><VNX16_QHSDI:mode>):
4057 Refactor RVV machine modes.
4058 (len_mask_gather_load<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
4059 (len_mask_gather_load<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
4060 (len_mask_gather_load<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
4061 (len_mask_gather_load<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
4062 (len_mask_gather_load<mode><mode>): Ditto.
4063 (len_mask_gather_load<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
4064 (len_mask_scatter_store<VNX16_QHSD:mode><VNX16_QHSDI:mode>): Ditto.
4065 (len_mask_scatter_store<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
4066 (len_mask_scatter_store<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
4067 (len_mask_scatter_store<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
4068 (len_mask_scatter_store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
4069 (len_mask_scatter_store<mode><mode>): Ditto.
4070 (len_mask_scatter_store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
4071 * config/riscv/riscv-modes.def (VECTOR_BOOL_MODE): Ditto.
4072 (ADJUST_NUNITS): Ditto.
4073 (ADJUST_ALIGNMENT): Ditto.
4074 (ADJUST_BYTESIZE): Ditto.
4075 (ADJUST_PRECISION): Ditto.
4076 (RVV_MODES): Ditto.
4077 (RVV_WHOLE_MODES): Ditto.
4078 (RVV_FRACT_MODE): Ditto.
4079 (RVV_NF8_MODES): Ditto.
4080 (RVV_NF4_MODES): Ditto.
4081 (VECTOR_MODES_WITH_PREFIX): Ditto.
4082 (VECTOR_MODE_WITH_PREFIX): Ditto.
4083 (RVV_TUPLE_MODES): Ditto.
4084 (RVV_NF2_MODES): Ditto.
4085 (RVV_TUPLE_PARTIAL_MODES): Ditto.
4086 * config/riscv/riscv-v.cc (struct mode_vtype_group): Ditto.
4087 (ENTRY): Ditto.
4088 (TUPLE_ENTRY): Ditto.
4089 (get_vlmul): Ditto.
4090 (get_nf): Ditto.
4091 (get_ratio): Ditto.
4092 (preferred_simd_mode): Ditto.
4093 (autovectorize_vector_modes): Ditto.
4094 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TYPE): Ditto.
4095 * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE): Ditto.
4096 (vbool64_t): Ditto.
4097 (vbool32_t): Ditto.
4098 (vbool16_t): Ditto.
4099 (vbool8_t): Ditto.
4100 (vbool4_t): Ditto.
4101 (vbool2_t): Ditto.
4102 (vbool1_t): Ditto.
4103 (vint8mf8_t): Ditto.
4104 (vuint8mf8_t): Ditto.
4105 (vint8mf4_t): Ditto.
4106 (vuint8mf4_t): Ditto.
4107 (vint8mf2_t): Ditto.
4108 (vuint8mf2_t): Ditto.
4109 (vint8m1_t): Ditto.
4110 (vuint8m1_t): Ditto.
4111 (vint8m2_t): Ditto.
4112 (vuint8m2_t): Ditto.
4113 (vint8m4_t): Ditto.
4114 (vuint8m4_t): Ditto.
4115 (vint8m8_t): Ditto.
4116 (vuint8m8_t): Ditto.
4117 (vint16mf4_t): Ditto.
4118 (vuint16mf4_t): Ditto.
4119 (vint16mf2_t): Ditto.
4120 (vuint16mf2_t): Ditto.
4121 (vint16m1_t): Ditto.
4122 (vuint16m1_t): Ditto.
4123 (vint16m2_t): Ditto.
4124 (vuint16m2_t): Ditto.
4125 (vint16m4_t): Ditto.
4126 (vuint16m4_t): Ditto.
4127 (vint16m8_t): Ditto.
4128 (vuint16m8_t): Ditto.
4129 (vint32mf2_t): Ditto.
4130 (vuint32mf2_t): Ditto.
4131 (vint32m1_t): Ditto.
4132 (vuint32m1_t): Ditto.
4133 (vint32m2_t): Ditto.
4134 (vuint32m2_t): Ditto.
4135 (vint32m4_t): Ditto.
4136 (vuint32m4_t): Ditto.
4137 (vint32m8_t): Ditto.
4138 (vuint32m8_t): Ditto.
4139 (vint64m1_t): Ditto.
4140 (vuint64m1_t): Ditto.
4141 (vint64m2_t): Ditto.
4142 (vuint64m2_t): Ditto.
4143 (vint64m4_t): Ditto.
4144 (vuint64m4_t): Ditto.
4145 (vint64m8_t): Ditto.
4146 (vuint64m8_t): Ditto.
4147 (vfloat16mf4_t): Ditto.
4148 (vfloat16mf2_t): Ditto.
4149 (vfloat16m1_t): Ditto.
4150 (vfloat16m2_t): Ditto.
4151 (vfloat16m4_t): Ditto.
4152 (vfloat16m8_t): Ditto.
4153 (vfloat32mf2_t): Ditto.
4154 (vfloat32m1_t): Ditto.
4155 (vfloat32m2_t): Ditto.
4156 (vfloat32m4_t): Ditto.
4157 (vfloat32m8_t): Ditto.
4158 (vfloat64m1_t): Ditto.
4159 (vfloat64m2_t): Ditto.
4160 (vfloat64m4_t): Ditto.
4161 (vfloat64m8_t): Ditto.
4162 * config/riscv/riscv-vector-switch.def (ENTRY): Ditto.
4163 (TUPLE_ENTRY): Ditto.
4164 * config/riscv/riscv-vsetvl.cc (change_insn): Ditto.
4165 * config/riscv/riscv.cc (riscv_valid_lo_sum_p): Ditto.
4166 (riscv_v_adjust_nunits): Ditto.
4167 (riscv_v_adjust_bytesize): Ditto.
4168 (riscv_v_adjust_precision): Ditto.
4169 (riscv_convert_vector_bits): Ditto.
4170 * config/riscv/riscv.h (riscv_v_adjust_nunits): Ditto.
4171 * config/riscv/riscv.md: Ditto.
4172 * config/riscv/vector-iterators.md: Ditto.
4173 * config/riscv/vector.md
4174 (@pred_indexed_<order>store<VNX16_QHSD:mode><VNX16_QHSDI:mode>): Ditto.
4175 (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
4176 (@pred_indexed_<order>store<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
4177 (@pred_indexed_<order>store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
4178 (@pred_indexed_<order>store<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
4179 (@pred_indexed_<order>store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
4180 (@pred_indexed_<order>store<VNX128_Q:mode><VNX128_Q:mode>): Ditto.
4181 (@pred_indexed_<order>load<V1T:mode><V1I:mode>): Ditto.
4182 (@pred_indexed_<order>load<V1T:mode><VNX1_QHSDI:mode>): Ditto.
4183 (@pred_indexed_<order>load<V2T:mode><V2I:mode>): Ditto.
4184 (@pred_indexed_<order>load<V2T:mode><VNX2_QHSDI:mode>): Ditto.
4185 (@pred_indexed_<order>load<V4T:mode><V4I:mode>): Ditto.
4186 (@pred_indexed_<order>load<V4T:mode><VNX4_QHSDI:mode>): Ditto.
4187 (@pred_indexed_<order>load<V8T:mode><V8I:mode>): Ditto.
4188 (@pred_indexed_<order>load<V8T:mode><VNX8_QHSDI:mode>): Ditto.
4189 (@pred_indexed_<order>load<V16T:mode><V16I:mode>): Ditto.
4190 (@pred_indexed_<order>load<V16T:mode><VNX16_QHSI:mode>): Ditto.
4191 (@pred_indexed_<order>load<V32T:mode><V32I:mode>): Ditto.
4192 (@pred_indexed_<order>load<V32T:mode><VNX32_QHI:mode>): Ditto.
4193 (@pred_indexed_<order>load<V64T:mode><V64I:mode>): Ditto.
4194 (@pred_indexed_<order>store<V1T:mode><V1I:mode>): Ditto.
4195 (@pred_indexed_<order>store<V1T:mode><VNX1_QHSDI:mode>): Ditto.
4196 (@pred_indexed_<order>store<V2T:mode><V2I:mode>): Ditto.
4197 (@pred_indexed_<order>store<V2T:mode><VNX2_QHSDI:mode>): Ditto.
4198 (@pred_indexed_<order>store<V4T:mode><V4I:mode>): Ditto.
4199 (@pred_indexed_<order>store<V4T:mode><VNX4_QHSDI:mode>): Ditto.
4200 (@pred_indexed_<order>store<V8T:mode><V8I:mode>): Ditto.
4201 (@pred_indexed_<order>store<V8T:mode><VNX8_QHSDI:mode>): Ditto.
4202 (@pred_indexed_<order>store<V16T:mode><V16I:mode>): Ditto.
4203 (@pred_indexed_<order>store<V16T:mode><VNX16_QHSI:mode>): Ditto.
4204 (@pred_indexed_<order>store<V32T:mode><V32I:mode>): Ditto.
4205 (@pred_indexed_<order>store<V32T:mode><VNX32_QHI:mode>): Ditto.
4206 (@pred_indexed_<order>store<V64T:mode><V64I:mode>): Ditto.
4207
4208 2023-07-19 Vladimir N. Makarov <vmakarov@redhat.com>
4209
4210 * lra-int.h (lra_update_fp2sp_elimination): New prototype.
4211 (lra_asm_insn_error): New prototype.
4212 * lra-spills.cc (remove_pseudos): Add check for pseudo slot memory
4213 existence.
4214 (lra_spill): Call lra_update_fp2sp_elimination.
4215 * lra-eliminations.cc: Remove trailing spaces.
4216 (elimination_fp2sp_occured_p): New static flag.
4217 (lra_eliminate_regs_1): Set the flag up.
4218 (update_reg_eliminate): Modify the assert for stack to frame
4219 pointer elimination.
4220 (lra_update_fp2sp_elimination): New function.
4221 (lra_eliminate): Clear flag elimination_fp2sp_occured_p.
4222
4223 2023-07-19 Andrew Carlotti <andrew.carlotti@arm.com>
4224
4225 * config/aarch64/aarch64.h (TARGET_MEMTAG): Remove armv8.5
4226 dependency.
4227 * config/aarch64/arm_acle.h: Remove unnecessary armv8.x
4228 dependencies from target pragmas.
4229 * config/aarch64/arm_fp16.h (target): Likewise.
4230 * config/aarch64/arm_neon.h (target): Likewise.
4231
4232 2023-07-19 Andrew Pinski <apinski@marvell.com>
4233
4234 PR tree-optimization/110252
4235 * tree-ssa-phiopt.cc (class auto_flow_sensitive): New class.
4236 (auto_flow_sensitive::auto_flow_sensitive): New constructor.
4237 (auto_flow_sensitive::~auto_flow_sensitive): New deconstructor.
4238 (match_simplify_replacement): Temporarily
4239 remove the flow sensitive info on the two statements that might
4240 be moved.
4241
4242 2023-07-19 Andrew Pinski <apinski@marvell.com>
4243
4244 * gimple-fold.cc (fosa_unwind): Replace `vrange_storage *`
4245 with flow_sensitive_info_storage.
4246 (follow_outer_ssa_edges): Update how to save off the flow
4247 sensitive info.
4248 (maybe_fold_comparisons_from_match_pd): Update restoring
4249 of flow sensitive info.
4250 * tree-ssanames.cc (flow_sensitive_info_storage::save): New method.
4251 (flow_sensitive_info_storage::restore): New method.
4252 (flow_sensitive_info_storage::save_and_clear): New method.
4253 (flow_sensitive_info_storage::clear_storage): New method.
4254 * tree-ssanames.h (class flow_sensitive_info_storage): New class.
4255
4256 2023-07-19 Andrew Pinski <apinski@marvell.com>
4257
4258 PR tree-optimization/110726
4259 * match.pd ((a|b)&(a==b),a|(a==b),(a&b)|(a==b)):
4260 Add checks to make sure the type was one bit precision
4261 intergal type.
4262
4263 2023-07-19 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
4264
4265 * doc/md.texi: Add mask_len_fold_left_plus.
4266 * internal-fn.cc (mask_len_fold_left_direct): Ditto.
4267 (expand_mask_len_fold_left_optab_fn): Ditto.
4268 (direct_mask_len_fold_left_optab_supported_p): Ditto.
4269 * internal-fn.def (MASK_LEN_FOLD_LEFT_PLUS): Ditto.
4270 * optabs.def (OPTAB_D): Ditto.
4271
4272 2023-07-19 Jakub Jelinek <jakub@redhat.com>
4273
4274 * tree-switch-conversion.h (class bit_test_cluster): Fix comment typo.
4275
4276 2023-07-19 Jakub Jelinek <jakub@redhat.com>
4277
4278 PR tree-optimization/110731
4279 * wide-int.cc (wi::divmod_internal): Always unpack dividend and
4280 divisor as UNSIGNED regardless of sgn.
4281
4282 2023-07-19 Lehua Ding <lehua.ding@rivai.ai>
4283
4284 * common/config/riscv/riscv-common.cc (riscv_supported_std_ext): Init.
4285 (standard_extensions_p): Add check.
4286 (riscv_subset_list::add): Just return NULL if it failed before.
4287 (riscv_subset_list::parse_std_ext): Continue parse when find a error
4288 (riscv_subset_list::parse): Just return NULL if it failed before.
4289 * config/riscv/riscv-subset.h (class riscv_subset_list): Add field.
4290
4291 2023-07-19 Jan Beulich <jbeulich@suse.com>
4292
4293 * config/i386/i386-expand.cc (ix86_expand_vector_init_duplicate):
4294 Use gen_vec_set_0.
4295 (ix86_expand_vector_extract): Use gen_vec_extract_lo /
4296 gen_vec_extract_hi.
4297 (expand_vec_perm_broadcast_1): Use gen_vec_interleave_high /
4298 gen_vec_interleave_low. Rename local variable.
4299
4300 2023-07-19 Jan Beulich <jbeulich@suse.com>
4301
4302 * config/i386/sse.md (vec_dupv2df<mask_name>): Add new AVX512F
4303 alternative. Move AVX512VL part of condition to new "enabled"
4304 attribute.
4305
4306 2023-07-19 liuhongt <hongtao.liu@intel.com>
4307
4308 PR target/109504
4309 * config/i386/i386-builtins.cc
4310 (ix86_register_float16_builtin_type): Remove TARGET_SSE2.
4311 (ix86_register_bf16_builtin_type): Ditto.
4312 * config/i386/i386-c.cc (ix86_target_macros): When TARGET_SSE2
4313 isn't available, undef the macros which are used to check the
4314 backend support of the _Float16/__bf16 types when building
4315 libstdc++ and libgcc.
4316 * config/i386/i386.cc (construct_container): Issue errors for
4317 HFmode/BFmode when TARGET_SSE2 is not available.
4318 (function_value_32): Ditto.
4319 (ix86_scalar_mode_supported_p): Remove TARGET_SSE2 for HFmode/BFmode.
4320 (ix86_libgcc_floating_mode_supported_p): Ditto.
4321 (ix86_emit_support_tinfos): Adjust codes.
4322 (ix86_invalid_conversion): Return diagnostic message string
4323 when there's conversion from/to BF/HFmode w/o TARGET_SSE2.
4324 (ix86_invalid_unary_op): New function.
4325 (ix86_invalid_binary_op): Ditto.
4326 (TARGET_INVALID_UNARY_OP): Define.
4327 (TARGET_INVALID_BINARY_OP): Define.
4328 * config/i386/immintrin.h [__SSE2__]: Remove for fp16/bf16
4329 related instrinsics header files.
4330 * config/i386/i386.h (VALID_SSE2_TYPE_MODE): New macro.
4331
4332 2023-07-18 Uros Bizjak <ubizjak@gmail.com>
4333
4334 * dwarf2asm.cc: Change FALSE to false.
4335 * dwarf2cfi.cc (execute_dwarf2_frame): Change return type to void.
4336 * dwarf2out.cc (matches_main_base): Change return type from
4337 int to bool. Change "last_match" variable to bool.
4338 (dump_struct_debug): Change return type from int to bool.
4339 Change "matches" and "result" function arguments to bool.
4340 (is_pseudo_reg): Change return type from int to bool.
4341 (is_tagged_type): Ditto.
4342 (same_loc_p): Ditto.
4343 (same_dw_val_p): Change return type from int to bool and adjust
4344 function body accordingly.
4345 (same_attr_p): Ditto.
4346 (same_die_p): Ditto.
4347 (is_type_die): Ditto.
4348 (is_declaration_die): Ditto.
4349 (should_move_die_to_comdat): Ditto.
4350 (is_base_type): Ditto.
4351 (is_based_loc): Ditto.
4352 (local_scope_p): Ditto.
4353 (class_scope_p): Ditto.
4354 (class_or_namespace_scope_p): Ditto.
4355 (is_tagged_type): Ditto.
4356 (is_rust): Use void argument.
4357 (is_nested_in_subprogram): Change return type from int to bool.
4358 (contains_subprogram_definition): Ditto.
4359 (gen_struct_or_union_type_die): Change "nested", "complete"
4360 and "ns_decl" variables to bool.
4361 (is_naming_typedef_decl): Change FALSE to false.
4362
4363 2023-07-18 Jan Hubicka <jh@suse.cz>
4364
4365 * tree-ssa-loop-ch.cc (edge_range_query): Take loop argument; be ready
4366 for queries not in headers.
4367 (static_loop_exit): Add basic blck parameter; update use of
4368 edge_range_query
4369 (should_duplicate_loop_header_p): Add ranger and static_exits
4370 parameter. Do not account statements that will be optimized
4371 out after duplicaiton in overall size. Add ranger query to
4372 find static exits.
4373 (update_profile_after_ch): Take static_exits has set instead of
4374 single eliminated_edge.
4375 (ch_base::copy_headers): Do all analysis in the first pass;
4376 remember invariant_exits and static_exits.
4377
4378 2023-07-18 Jason Merrill <jason@redhat.com>
4379
4380 * fold-const.cc (native_interpret_aggregate): Skip empty fields.
4381
4382 2023-07-18 Gaius Mulley <gaiusmod2@gmail.com>
4383
4384 * doc/gm2.texi (Semantic checking): Change example testwithptr
4385 to testnew6.
4386
4387 2023-07-18 Richard Biener <rguenther@suse.de>
4388
4389 PR middle-end/105715
4390 * gimple-isel.cc (gimple_expand_vec_exprs): Merge into...
4391 (pass_gimple_isel::execute): ... this. Duplicate
4392 comparison defs of COND_EXPRs.
4393
4394 2023-07-18 Juzhe-Zhong <juzhe.zhong@rivai.ai>
4395
4396 * config/riscv/riscv-selftests.cc (run_poly_int_selftests): Add more selftests.
4397 * config/riscv/riscv.cc (riscv_legitimize_poly_move): Dynamic adjust size of VLA vectors.
4398 (riscv_convert_vector_bits): Ditto.
4399
4400 2023-07-18 Juzhe-Zhong <juzhe.zhong@rivai.ai>
4401
4402 * config/riscv/autovec.md (vec_shl_insert_<mode>): New patterns.
4403 * config/riscv/riscv-v.cc (shuffle_compress_patterns): Fix bugs.
4404
4405 2023-07-18 Juergen Christ <jchrist@linux.ibm.com>
4406
4407 * config/s390/vx-builtins.md: New vsel pattern.
4408
4409 2023-07-18 liuhongt <hongtao.liu@intel.com>
4410
4411 PR target/110438
4412 * config/i386/sse.md (<mask_codefor>one_cmpl<mode>2<mask_name>):
4413 Remove # from assemble output.
4414
4415 2023-07-18 liuhongt <hongtao.liu@intel.com>
4416
4417 PR target/110591
4418 * config/i386/sync.md (cmpccxadd_<mode>): Adjust the pattern
4419 to explicitly set FLAGS_REG like *cmp<mode>_1, also add extra
4420 3 define_peephole2 after the pattern.
4421
4422 2023-07-18 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
4423
4424 * rtl-ssa/internals.inl: Fix when mode1 and mode2 are not ordred.
4425
4426 2023-07-18 Pan Li <pan2.li@intel.com>
4427 Juzhe-Zhong <juzhe.zhong@rivai.ai>
4428
4429 * config/riscv/riscv.cc (struct machine_function): Add new field.
4430 (riscv_static_frm_mode_p): New function.
4431 (riscv_emit_frm_mode_set): New function for emit FRM.
4432 (riscv_emit_mode_set): Extract function for FRM.
4433 (riscv_mode_needed): Fix the TODO.
4434 (riscv_mode_entry): Initial dynamic frm RTL.
4435 (riscv_mode_exit): Return DYN_EXIT.
4436 * config/riscv/riscv.md: Add rdfrm.
4437 * config/riscv/vector-iterators.md (unspecv): Add DYN_EXIT unspecv.
4438 * config/riscv/vector.md (frm_modee): Add new mode dyn_exit.
4439 (fsrm): Removed.
4440 (fsrmsi_backup): New pattern for swap.
4441 (fsrmsi_restore): New pattern for restore.
4442 (fsrmsi_restore_exit): New pattern for restore exit.
4443 (frrmsi): New pattern for backup.
4444
4445 2023-07-17 Arsen Arsenović <arsen@aarsen.me>
4446
4447 * doc/extend.texi: Add @cindex on __auto_type.
4448
4449 2023-07-17 Uros Bizjak <ubizjak@gmail.com>
4450
4451 * combine-stack-adj.cc (stack_memref_p): Change return type from
4452 int to bool and adjust function body accordingly.
4453 (rest_of_handle_stack_adjustments): Change return type to void.
4454
4455 2023-07-17 Uros Bizjak <ubizjak@gmail.com>
4456
4457 * combine.cc (struct reg_stat_type): Change last_set_invalid to bool.
4458 (cant_combine_insn_p): Change return type from int to bool and adjust
4459 function body accordingly.
4460 (can_combine_p): Ditto.
4461 (combinable_i3pat): Ditto. Change "i1_not_in_src" and "i0_not_in_src"
4462 function arguments from int to bool.
4463 (contains_muldiv): Change return type from int to bool and adjust
4464 function body accordingly.
4465 (try_combine): Ditto. Change "new_direct_jump" pointer function
4466 argument from int to bool. Change "substed_i2", "substed_i1",
4467 "substed_i0", "added_sets_0", "added_sets_1", "added_sets_2",
4468 "i2dest_in_i2src", "i1dest_in_i1src", "i2dest_in_i1src",
4469 "i0dest_in_i0src", "i1dest_in_i0src", "i2dest_in_i0src",
4470 "i2dest_killed", "i1dest_killed", "i0dest_killed", "i1_feeds_i2_n",
4471 "i0_feeds_i2_n", "i0_feeds_i1_n", "i3_subst_into_i2", "have_mult",
4472 "swap_i2i3", "split_i2i3" and "changed_i3_dest" variables
4473 from int to bool.
4474 (subst): Change "in_dest", "in_cond" and "unique_copy" function
4475 arguments from int to bool.
4476 (combine_simplify_rtx): Change "in_dest" and "in_cond" function
4477 arguments from int to bool.
4478 (make_extraction): Change "unsignedp", "in_dest" and "in_compare"
4479 function argument from int to bool.
4480 (force_int_to_mode): Change "just_select" function argument
4481 from int to bool. Change "next_select" variable to bool.
4482 (rtx_equal_for_field_assignment_p): Change return type from
4483 int to bool and adjust function body accordingly.
4484 (merge_outer_ops): Ditto. Change "pcomp_p" pointer function
4485 argument from int to bool.
4486 (get_last_value_validate): Change return type from int to bool
4487 and adjust function body accordingly.
4488 (reg_dead_at_p): Ditto.
4489 (reg_bitfield_target_p): Ditto.
4490 (combine_instructions): Ditto. Change "new_direct_jump"
4491 variable to bool.
4492 (can_combine_p): Change return type from int to bool
4493 and adjust function body accordingly.
4494 (likely_spilled_retval_p): Ditto.
4495 (can_change_dest_mode): Change "added_sets" function argument
4496 from int to bool.
4497 (find_split_point): Change "unsignedp" variable to bool.
4498 (simplify_if_then_else): Change "comparison_p" and "swapped"
4499 variables to bool.
4500 (simplify_set): Change "other_changed" variable to bool.
4501 (expand_compound_operation): Change "unsignedp" variable to bool.
4502 (force_to_mode): Change "just_select" function argument
4503 from int to bool. Change "next_select" variable to bool.
4504 (extended_count): Change "unsignedp" function argument to bool.
4505 (simplify_shift_const_1): Change "complement_p" variable to bool.
4506 (simplify_comparison): Change "changed" variable to bool.
4507 (rest_of_handle_combine): Change return type to void.
4508
4509 2023-07-17 Andre Vieira <andre.simoesdiasvieira@arm.com>
4510
4511 PR plugins/110610
4512 * Makefile.in (INTERNAL_FN_H): Add insn-opinit.h.
4513
4514 2023-07-17 Senthil Kumar Selvaraj <saaadhu@gcc.gnu.org>
4515
4516 * ira.cc (setup_reg_class_relations): Continue
4517 if regclass cl3 is hard_reg_set_empty_p.
4518
4519 2023-07-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
4520
4521 * config/riscv/riscv.cc (riscv_option_override): Add sorry check.
4522
4523 2023-07-17 Martin Jambor <mjambor@suse.cz>
4524
4525 * tree-ssa-loop-ivcanon.cc (try_peel_loop): Remove unused variable
4526 entry_count.
4527
4528 2023-07-17 Aldy Hernandez <aldyh@redhat.com>
4529
4530 * tree-ssa-ccp.cc (ccp_finalize): Export value/mask known bits.
4531
4532 2023-07-17 Lehua Ding <lehua.ding@rivai.ai>
4533
4534 PR target/110696
4535 * common/config/riscv/riscv-common.cc (riscv_subset_list::handle_implied_ext):
4536 recur add all implied extensions.
4537 (riscv_subset_list::check_implied_ext): Add new method.
4538 (riscv_subset_list::parse): Call checker check_implied_ext.
4539 * config/riscv/riscv-subset.h: Add new method.
4540
4541 2023-07-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
4542
4543 * config/riscv/autovec.md (reduc_plus_scal_<mode>): New pattern.
4544 (reduc_smax_scal_<mode>): Ditto.
4545 (reduc_umax_scal_<mode>): Ditto.
4546 (reduc_smin_scal_<mode>): Ditto.
4547 (reduc_umin_scal_<mode>): Ditto.
4548 (reduc_and_scal_<mode>): Ditto.
4549 (reduc_ior_scal_<mode>): Ditto.
4550 (reduc_xor_scal_<mode>): Ditto.
4551 * config/riscv/riscv-protos.h (enum insn_type): Add reduction.
4552 (expand_reduction): New function.
4553 * config/riscv/riscv-v.cc (emit_vlmax_reduction_insn): Ditto.
4554 (emit_vlmax_fp_reduction_insn): Ditto.
4555 (get_m1_mode): Ditto.
4556 (expand_cond_len_binop): Fix name.
4557 (expand_reduction): New function
4558 * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): Fix VSETVL BUG.
4559 (validate_change_or_fail): New function.
4560 (change_insn): Fix VSETVL BUG.
4561 (change_vsetvl_insn): Ditto.
4562 (pass_vsetvl::backward_demand_fusion): Ditto.
4563 (pass_vsetvl::df_post_optimization): Ditto.
4564
4565 2023-07-17 Aldy Hernandez <aldyh@redhat.com>
4566
4567 * ipa-prop.cc (ipcp_update_bits): Export value/mask known bits.
4568
4569 2023-07-17 Christoph Müllner <christoph.muellner@vrull.eu>
4570
4571 * config/riscv/riscv.cc (riscv_regno_ok_for_index_p):
4572 Remove parameter name from declaration of unused parameter.
4573
4574 2023-07-17 Kewen Lin <linkw@linux.ibm.com>
4575
4576 PR tree-optimization/110652
4577 * tree-vect-stmts.cc (vectorizable_load): Initialize new_temp as
4578 NULL_TREE.
4579
4580 2023-07-17 Richard Biener <rguenther@suse.de>
4581
4582 PR tree-optimization/110669
4583 * tree-scalar-evolution.cc (analyze_and_compute_bitop_with_inv_effect):
4584 Check we matched a header PHI.
4585
4586 2023-07-17 Aldy Hernandez <aldyh@redhat.com>
4587
4588 * tree-ssanames.cc (set_bitmask): New.
4589 * tree-ssanames.h (set_bitmask): New.
4590
4591 2023-07-17 Aldy Hernandez <aldyh@redhat.com>
4592
4593 * value-range.cc (irange_bitmask::verify_mask): Mask need not be
4594 normalized.
4595 * value-range.h (irange_bitmask::union_): Normalize beforehand.
4596 (irange_bitmask::intersect): Same.
4597
4598 2023-07-17 Andrew Pinski <apinski@marvell.com>
4599
4600 PR tree-optimization/95923
4601 * match.pd ((a|b)&(a==b),a|(a==b),(a&b)|(a==b)): New transformation.
4602
4603 2023-07-17 Roger Sayle <roger@nextmovesoftware.com>
4604
4605 * tree-if-conv.cc (predicate_scalar_phi): Make the arguments
4606 to the std::sort comparison lambda function const.
4607
4608 2023-07-17 Andrew Pinski <apinski@marvell.com>
4609
4610 PR tree-optimization/110666
4611 * match.pd (A NEEQ (A NEEQ CST)): Fix Outer EQ case.
4612
4613 2023-07-17 Mo, Zewei <zewei.mo@intel.com>
4614
4615 * common/config/i386/cpuinfo.h (get_intel_cpu): Handle Lunar Lake,
4616 Arrow Lake and Arrow Lake S.
4617 * common/config/i386/i386-common.cc:
4618 (processor_name): Add arrowlake.
4619 (processor_alias_table): Add arrow lake, arrow lake s and lunar
4620 lake.
4621 * common/config/i386/i386-cpuinfo.h (enum processor_subtypes):
4622 Add INTEL_COREI7_ARROWLAKE and INTEL_COREI7_ARROWLAKE_S.
4623 * config.gcc: Add -march=arrowlake and -march=arrowlake-s.
4624 * config/i386/driver-i386.cc (host_detect_local_cpu): Handle
4625 arrowlake-s.
4626 * config/i386/i386-c.cc (ix86_target_macros_internal): Add
4627 arrowlake.
4628 * config/i386/i386-options.cc (m_ARROWLAKE): New.
4629 (processor_cost_table): Add arrowlake.
4630 * config/i386/i386.h (enum processor_type):
4631 Add PROCESSOR_ARROWLAKE.
4632 * config/i386/x86-tune.def: Add m_ARROWLAKE.
4633 * doc/extend.texi: Add arrowlake and arrowlake-s.
4634 * doc/invoke.texi: Ditto.
4635
4636 2023-07-17 Haochen Jiang <haochen.jiang@intel.com>
4637
4638 * config/i386/sse.md (VI2_AVX2): Delete V32HI since we actually
4639 have the same iterator. Also renaming all the occurence to
4640 VI2_AVX2_AVX512BW.
4641 (usdot_prod<mode>): New define_expand.
4642 (udot_prod<mode>): Ditto.
4643
4644 2023-07-17 Haochen Jiang <haochen.jiang@intel.com>
4645
4646 * common/config/i386/cpuinfo.h (get_available_features):
4647 Detech SM4.
4648 * common/config/i386/i386-common.cc (OPTION_MASK_ISA2_SM4_SET,
4649 OPTION_MASK_ISA2_SM4_UNSET): New.
4650 (OPTION_MASK_ISA2_AVX_UNSET): Add SM4.
4651 (ix86_handle_option): Handle -msm4.
4652 * common/config/i386/i386-cpuinfo.h (enum processor_features):
4653 Add FEATURE_SM4.
4654 * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
4655 sm4.
4656 * config.gcc: Add sm4intrin.h.
4657 * config/i386/cpuid.h (bit_SM4): New.
4658 * config/i386/i386-builtin.def (BDESC): Add new builtins.
4659 * config/i386/i386-c.cc (ix86_target_macros_internal): Define
4660 __SM4__.
4661 * config/i386/i386-isa.def (SM4): Add DEF_PTA(SM4).
4662 * config/i386/i386-options.cc (isa2_opts): Add -msm4.
4663 (ix86_valid_target_attribute_inner_p): Handle sm4.
4664 * config/i386/i386.opt: Add option -msm4.
4665 * config/i386/immintrin.h: Include sm4intrin.h
4666 * config/i386/sse.md (vsm4key4_<mode>): New define insn.
4667 (vsm4rnds4_<mode>): Ditto.
4668 * doc/extend.texi: Document sm4.
4669 * doc/invoke.texi: Document -msm4.
4670 * doc/sourcebuild.texi: Document target sm4.
4671 * config/i386/sm4intrin.h: New file.
4672
4673 2023-07-17 Haochen Jiang <haochen.jiang@intel.com>
4674
4675 * common/config/i386/cpuinfo.h (get_available_features):
4676 Detect SHA512.
4677 * common/config/i386/i386-common.cc (OPTION_MASK_ISA2_SHA512_SET,
4678 OPTION_MASK_ISA2_SHA512_UNSET): New.
4679 (OPTION_MASK_ISA2_AVX_UNSET): Add SHA512.
4680 (ix86_handle_option): Handle -msha512.
4681 * common/config/i386/i386-cpuinfo.h (enum processor_features):
4682 Add FEATURE_SHA512.
4683 * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
4684 sha512.
4685 * config.gcc: Add sha512intrin.h.
4686 * config/i386/cpuid.h (bit_SHA512): New.
4687 * config/i386/i386-builtin-types.def:
4688 Add DEF_FUNCTION_TYPE (V4DI, V4DI, V4DI, V2DI).
4689 * config/i386/i386-builtin.def (BDESC): Add new builtins.
4690 * config/i386/i386-c.cc (ix86_target_macros_internal): Define
4691 __SHA512__.
4692 * config/i386/i386-expand.cc (ix86_expand_args_builtin): Handle
4693 V4DI_FTYPE_V4DI_V4DI_V2DI and V4DI_FTYPE_V4DI_V2DI.
4694 * config/i386/i386-isa.def (SHA512): Add DEF_PTA(SHA512).
4695 * config/i386/i386-options.cc (isa2_opts): Add -msha512.
4696 (ix86_valid_target_attribute_inner_p): Handle sha512.
4697 * config/i386/i386.opt: Add option -msha512.
4698 * config/i386/immintrin.h: Include sha512intrin.h.
4699 * config/i386/sse.md (vsha512msg1): New define insn.
4700 (vsha512msg2): Ditto.
4701 (vsha512rnds2): Ditto.
4702 * doc/extend.texi: Document sha512.
4703 * doc/invoke.texi: Document -msha512.
4704 * doc/sourcebuild.texi: Document target sha512.
4705 * config/i386/sha512intrin.h: New file.
4706
4707 2023-07-17 Haochen Jiang <haochen.jiang@intel.com>
4708
4709 * common/config/i386/cpuinfo.h (get_available_features):
4710 Detect SM3.
4711 * common/config/i386/i386-common.cc (OPTION_MASK_ISA2_SM3_SET,
4712 OPTION_MASK_ISA2_SM3_UNSET): New.
4713 (OPTION_MASK_ISA2_AVX_UNSET): Add SM3.
4714 (ix86_handle_option): Handle -msm3.
4715 * common/config/i386/i386-cpuinfo.h (enum processor_features):
4716 Add FEATURE_SM3.
4717 * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
4718 SM3.
4719 * config.gcc: Add sm3intrin.h
4720 * config/i386/cpuid.h (bit_SM3): New.
4721 * config/i386/i386-builtin-types.def:
4722 Add DEF_FUNCTION_TYPE (V4SI, V4SI, V4SI, V4SI, INT).
4723 * config/i386/i386-builtin.def (BDESC): Add new builtins.
4724 * config/i386/i386-c.cc (ix86_target_macros_internal): Define
4725 __SM3__.
4726 * config/i386/i386-expand.cc (ix86_expand_args_builtin): Handle
4727 V4SI_FTYPE_V4SI_V4SI_V4SI_INT.
4728 * config/i386/i386-isa.def (SM3): Add DEF_PTA(SM3).
4729 * config/i386/i386-options.cc (isa2_opts): Add -msm3.
4730 (ix86_valid_target_attribute_inner_p): Handle sm3.
4731 * config/i386/i386.opt: Add option -msm3.
4732 * config/i386/immintrin.h: Include sm3intrin.h.
4733 * config/i386/sse.md (vsm3msg1): New define insn.
4734 (vsm3msg2): Ditto.
4735 (vsm3rnds2): Ditto.
4736 * doc/extend.texi: Document sm3.
4737 * doc/invoke.texi: Document -msm3.
4738 * doc/sourcebuild.texi: Document target sm3.
4739 * config/i386/sm3intrin.h: New file.
4740
4741 2023-07-17 Kong Lingling <lingling.kong@intel.com>
4742 Haochen Jiang <haochen.jiang@intel.com>
4743
4744 * common/config/i386/cpuinfo.h (get_available_features): Detect
4745 avxvnniint16.
4746 * common/config/i386/i386-common.cc
4747 (OPTION_MASK_ISA2_AVXVNNIINT16_SET): New.
4748 (OPTION_MASK_ISA2_AVXVNNIINT16_UNSET): Ditto.
4749 (ix86_handle_option): Handle -mavxvnniint16.
4750 * common/config/i386/i386-cpuinfo.h (enum processor_features):
4751 Add FEATURE_AVXVNNIINT16.
4752 * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
4753 avxvnniint16.
4754 * config.gcc: Add avxvnniint16.h.
4755 * config/i386/avxvnniint16intrin.h: New file.
4756 * config/i386/cpuid.h (bit_AVXVNNIINT16): New.
4757 * config/i386/i386-builtin.def: Add new builtins.
4758 * config/i386/i386-c.cc (ix86_target_macros_internal): Define
4759 __AVXVNNIINT16__.
4760 * config/i386/i386-options.cc (isa2_opts): Add -mavxvnniint16.
4761 (ix86_valid_target_attribute_inner_p): Handle avxvnniint16intrin.h.
4762 * config/i386/i386-isa.def: Add DEF_PTA(AVXVNNIINT16).
4763 * config/i386/i386.opt: Add option -mavxvnniint16.
4764 * config/i386/immintrin.h: Include avxvnniint16.h.
4765 * config/i386/sse.md
4766 (vpdp<vpdpwprodtype>_<mode>): New define_insn.
4767 * doc/extend.texi: Document avxvnniint16.
4768 * doc/invoke.texi: Document -mavxvnniint16.
4769 * doc/sourcebuild.texi: Document target avxvnniint16.
4770
4771 2023-07-16 Jan Hubicka <jh@suse.cz>
4772
4773 PR middle-end/110649
4774 * tree-vect-loop.cc (scale_profile_for_vect_loop): Rewrite.
4775 (vect_transform_loop): Move scale_profile_for_vect_loop after
4776 upper bound updates.
4777
4778 2023-07-16 Jan Hubicka <jh@suse.cz>
4779
4780 PR tree-optimization/110649
4781 * tree-vect-loop.cc (optimize_mask_stores): Set correctly
4782 probability of the if-then-else construct.
4783
4784 2023-07-16 Jan Hubicka <jh@suse.cz>
4785
4786 PR middle-end/110649
4787 * tree-ssa-loop-ivcanon.cc (try_peel_loop): Avoid double profile update.
4788
4789 2023-07-15 Andrew Pinski <apinski@marvell.com>
4790
4791 * doc/contrib.texi: Update my entry.
4792
4793 2023-07-15 John David Anglin <danglin@gcc.gnu.org>
4794
4795 * config/pa/pa.md: Define constants R1_REGNUM, R19_REGNUM and
4796 R27_REGNUM.
4797 (tgd_load): Restrict to !TARGET_64BIT. Use register constants.
4798 (tld_load): Likewise.
4799 (tgd_load_pic): Change to expander.
4800 (tld_load_pic, tld_offset_load, tp_load): Likewise.
4801 (tie_load_pic, tle_load): Likewise.
4802 (tgd_load_picsi, tgd_load_picdi): New.
4803 (tld_load_picsi, tld_load_picdi): New.
4804 (tld_offset_load<P:mode>): New.
4805 (tp_load<P:mode>): New.
4806 (tie_load_picsi, tie_load_picdi): New.
4807 (tle_load<P:mode>): New.
4808
4809 2023-07-14 Christophe Lyon <christophe.lyon@linaro.org>
4810
4811 * config/arm/arm-mve-builtins-base.cc (vcmlaq, vcmlaq_rot90)
4812 (vcmlaq_rot180, vcmlaq_rot270): New.
4813 * config/arm/arm-mve-builtins-base.def (vcmlaq, vcmlaq_rot90)
4814 (vcmlaq_rot180, vcmlaq_rot270): New.
4815 * config/arm/arm-mve-builtins-base.h: (vcmlaq, vcmlaq_rot90)
4816 (vcmlaq_rot180, vcmlaq_rot270): New.
4817 * config/arm/arm-mve-builtins.cc
4818 (function_instance::has_inactive_argument): Handle vcmlaq,
4819 vcmlaq_rot90, vcmlaq_rot180, vcmlaq_rot270.
4820 * config/arm/arm_mve.h (vcmlaq): Delete.
4821 (vcmlaq_rot180): Delete.
4822 (vcmlaq_rot270): Delete.
4823 (vcmlaq_rot90): Delete.
4824 (vcmlaq_m): Delete.
4825 (vcmlaq_rot180_m): Delete.
4826 (vcmlaq_rot270_m): Delete.
4827 (vcmlaq_rot90_m): Delete.
4828 (vcmlaq_f16): Delete.
4829 (vcmlaq_rot180_f16): Delete.
4830 (vcmlaq_rot270_f16): Delete.
4831 (vcmlaq_rot90_f16): Delete.
4832 (vcmlaq_f32): Delete.
4833 (vcmlaq_rot180_f32): Delete.
4834 (vcmlaq_rot270_f32): Delete.
4835 (vcmlaq_rot90_f32): Delete.
4836 (vcmlaq_m_f32): Delete.
4837 (vcmlaq_m_f16): Delete.
4838 (vcmlaq_rot180_m_f32): Delete.
4839 (vcmlaq_rot180_m_f16): Delete.
4840 (vcmlaq_rot270_m_f32): Delete.
4841 (vcmlaq_rot270_m_f16): Delete.
4842 (vcmlaq_rot90_m_f32): Delete.
4843 (vcmlaq_rot90_m_f16): Delete.
4844 (__arm_vcmlaq_f16): Delete.
4845 (__arm_vcmlaq_rot180_f16): Delete.
4846 (__arm_vcmlaq_rot270_f16): Delete.
4847 (__arm_vcmlaq_rot90_f16): Delete.
4848 (__arm_vcmlaq_f32): Delete.
4849 (__arm_vcmlaq_rot180_f32): Delete.
4850 (__arm_vcmlaq_rot270_f32): Delete.
4851 (__arm_vcmlaq_rot90_f32): Delete.
4852 (__arm_vcmlaq_m_f32): Delete.
4853 (__arm_vcmlaq_m_f16): Delete.
4854 (__arm_vcmlaq_rot180_m_f32): Delete.
4855 (__arm_vcmlaq_rot180_m_f16): Delete.
4856 (__arm_vcmlaq_rot270_m_f32): Delete.
4857 (__arm_vcmlaq_rot270_m_f16): Delete.
4858 (__arm_vcmlaq_rot90_m_f32): Delete.
4859 (__arm_vcmlaq_rot90_m_f16): Delete.
4860 (__arm_vcmlaq): Delete.
4861 (__arm_vcmlaq_rot180): Delete.
4862 (__arm_vcmlaq_rot270): Delete.
4863 (__arm_vcmlaq_rot90): Delete.
4864 (__arm_vcmlaq_m): Delete.
4865 (__arm_vcmlaq_rot180_m): Delete.
4866 (__arm_vcmlaq_rot270_m): Delete.
4867 (__arm_vcmlaq_rot90_m): Delete.
4868
4869 2023-07-14 Christophe Lyon <christophe.lyon@linaro.org>
4870
4871 * config/arm/arm_mve_builtins.def (vcmlaq_rot90_f)
4872 (vcmlaq_rot270_f, vcmlaq_rot180_f, vcmlaq_f): Add "_f" suffix.
4873 * config/arm/iterators.md (MVE_VCMLAQ_M): New.
4874 (mve_insn): Add vcmla.
4875 (rot): Add VCMLAQ_M_F, VCMLAQ_ROT90_M_F, VCMLAQ_ROT180_M_F,
4876 VCMLAQ_ROT270_M_F.
4877 (mve_rot): Add VCMLAQ_M_F, VCMLAQ_ROT90_M_F, VCMLAQ_ROT180_M_F,
4878 VCMLAQ_ROT270_M_F.
4879 * config/arm/mve.md (mve_vcmlaq<mve_rot><mode>): Rename into ...
4880 (@mve_<mve_insn>q<mve_rot>_f<mode>): ... this.
4881 (mve_vcmlaq_m_f<mode>, mve_vcmlaq_rot180_m_f<mode>)
4882 (mve_vcmlaq_rot270_m_f<mode>, mve_vcmlaq_rot90_m_f<mode>): Merge
4883 into ...
4884 (@mve_<mve_insn>q<mve_rot>_m_f<mode>): ... this.
4885
4886 2023-07-14 Christophe Lyon <christophe.lyon@linaro.org>
4887
4888 * config/arm/arm-mve-builtins-base.cc (vcmulq, vcmulq_rot90)
4889 (vcmulq_rot180, vcmulq_rot270): New.
4890 * config/arm/arm-mve-builtins-base.def (vcmulq, vcmulq_rot90)
4891 (vcmulq_rot180, vcmulq_rot270): New.
4892 * config/arm/arm-mve-builtins-base.h: (vcmulq, vcmulq_rot90)
4893 (vcmulq_rot180, vcmulq_rot270): New.
4894 * config/arm/arm_mve.h (vcmulq_rot90): Delete.
4895 (vcmulq_rot270): Delete.
4896 (vcmulq_rot180): Delete.
4897 (vcmulq): Delete.
4898 (vcmulq_m): Delete.
4899 (vcmulq_rot180_m): Delete.
4900 (vcmulq_rot270_m): Delete.
4901 (vcmulq_rot90_m): Delete.
4902 (vcmulq_x): Delete.
4903 (vcmulq_rot90_x): Delete.
4904 (vcmulq_rot180_x): Delete.
4905 (vcmulq_rot270_x): Delete.
4906 (vcmulq_rot90_f16): Delete.
4907 (vcmulq_rot270_f16): Delete.
4908 (vcmulq_rot180_f16): Delete.
4909 (vcmulq_f16): Delete.
4910 (vcmulq_rot90_f32): Delete.
4911 (vcmulq_rot270_f32): Delete.
4912 (vcmulq_rot180_f32): Delete.
4913 (vcmulq_f32): Delete.
4914 (vcmulq_m_f32): Delete.
4915 (vcmulq_m_f16): Delete.
4916 (vcmulq_rot180_m_f32): Delete.
4917 (vcmulq_rot180_m_f16): Delete.
4918 (vcmulq_rot270_m_f32): Delete.
4919 (vcmulq_rot270_m_f16): Delete.
4920 (vcmulq_rot90_m_f32): Delete.
4921 (vcmulq_rot90_m_f16): Delete.
4922 (vcmulq_x_f16): Delete.
4923 (vcmulq_x_f32): Delete.
4924 (vcmulq_rot90_x_f16): Delete.
4925 (vcmulq_rot90_x_f32): Delete.
4926 (vcmulq_rot180_x_f16): Delete.
4927 (vcmulq_rot180_x_f32): Delete.
4928 (vcmulq_rot270_x_f16): Delete.
4929 (vcmulq_rot270_x_f32): Delete.
4930 (__arm_vcmulq_rot90_f16): Delete.
4931 (__arm_vcmulq_rot270_f16): Delete.
4932 (__arm_vcmulq_rot180_f16): Delete.
4933 (__arm_vcmulq_f16): Delete.
4934 (__arm_vcmulq_rot90_f32): Delete.
4935 (__arm_vcmulq_rot270_f32): Delete.
4936 (__arm_vcmulq_rot180_f32): Delete.
4937 (__arm_vcmulq_f32): Delete.
4938 (__arm_vcmulq_m_f32): Delete.
4939 (__arm_vcmulq_m_f16): Delete.
4940 (__arm_vcmulq_rot180_m_f32): Delete.
4941 (__arm_vcmulq_rot180_m_f16): Delete.
4942 (__arm_vcmulq_rot270_m_f32): Delete.
4943 (__arm_vcmulq_rot270_m_f16): Delete.
4944 (__arm_vcmulq_rot90_m_f32): Delete.
4945 (__arm_vcmulq_rot90_m_f16): Delete.
4946 (__arm_vcmulq_x_f16): Delete.
4947 (__arm_vcmulq_x_f32): Delete.
4948 (__arm_vcmulq_rot90_x_f16): Delete.
4949 (__arm_vcmulq_rot90_x_f32): Delete.
4950 (__arm_vcmulq_rot180_x_f16): Delete.
4951 (__arm_vcmulq_rot180_x_f32): Delete.
4952 (__arm_vcmulq_rot270_x_f16): Delete.
4953 (__arm_vcmulq_rot270_x_f32): Delete.
4954 (__arm_vcmulq_rot90): Delete.
4955 (__arm_vcmulq_rot270): Delete.
4956 (__arm_vcmulq_rot180): Delete.
4957 (__arm_vcmulq): Delete.
4958 (__arm_vcmulq_m): Delete.
4959 (__arm_vcmulq_rot180_m): Delete.
4960 (__arm_vcmulq_rot270_m): Delete.
4961 (__arm_vcmulq_rot90_m): Delete.
4962 (__arm_vcmulq_x): Delete.
4963 (__arm_vcmulq_rot90_x): Delete.
4964 (__arm_vcmulq_rot180_x): Delete.
4965 (__arm_vcmulq_rot270_x): Delete.
4966
4967 2023-07-14 Christophe Lyon <christophe.lyon@linaro.org>
4968
4969 * config/arm/arm_mve_builtins.def (vcmulq_rot90_f)
4970 (vcmulq_rot270_f, vcmulq_rot180_f, vcmulq_f): Add "_f" suffix.
4971 * config/arm/iterators.md (MVE_VCADDQ_VCMULQ)
4972 (MVE_VCADDQ_VCMULQ_M): New.
4973 (mve_insn): Add vcmul.
4974 (rot): Add VCMULQ_M_F, VCMULQ_ROT90_M_F, VCMULQ_ROT180_M_F,
4975 VCMULQ_ROT270_M_F.
4976 (VCMUL): Delete.
4977 (mve_rot): Add VCMULQ_M_F, VCMULQ_ROT90_M_F, VCMULQ_ROT180_M_F,
4978 VCMULQ_ROT270_M_F.
4979 * config/arm/mve.md (mve_vcmulq<mve_rot><mode>): Merge into
4980 @mve_<mve_insn>q<mve_rot>_f<mode>.
4981 (mve_vcmulq_m_f<mode>, mve_vcmulq_rot180_m_f<mode>)
4982 (mve_vcmulq_rot270_m_f<mode>, mve_vcmulq_rot90_m_f<mode>): Merge
4983 into @mve_<mve_insn>q<mve_rot>_m_f<mode>.
4984
4985 2023-07-14 Christophe Lyon <christophe.lyon@linaro.org>
4986
4987 * config/arm/arm-mve-builtins-base.cc (vcaddq_rot90)
4988 (vcaddq_rot270, vhcaddq_rot90, vhcaddq_rot270): New.
4989 * config/arm/arm-mve-builtins-base.def (vcaddq_rot90)
4990 (vcaddq_rot270, vhcaddq_rot90, vhcaddq_rot270): New.
4991 * config/arm/arm-mve-builtins-base.h: (vcaddq_rot90)
4992 (vcaddq_rot270, vhcaddq_rot90, vhcaddq_rot270): New.
4993 * config/arm/arm-mve-builtins-functions.h (class
4994 unspec_mve_function_exact_insn_rot): New.
4995 * config/arm/arm_mve.h (vcaddq_rot90): Delete.
4996 (vcaddq_rot270): Delete.
4997 (vhcaddq_rot90): Delete.
4998 (vhcaddq_rot270): Delete.
4999 (vcaddq_rot270_m): Delete.
5000 (vcaddq_rot90_m): Delete.
5001 (vhcaddq_rot270_m): Delete.
5002 (vhcaddq_rot90_m): Delete.
5003 (vcaddq_rot90_x): Delete.
5004 (vcaddq_rot270_x): Delete.
5005 (vhcaddq_rot90_x): Delete.
5006 (vhcaddq_rot270_x): Delete.
5007 (vcaddq_rot90_u8): Delete.
5008 (vcaddq_rot270_u8): Delete.
5009 (vhcaddq_rot90_s8): Delete.
5010 (vhcaddq_rot270_s8): Delete.
5011 (vcaddq_rot90_s8): Delete.
5012 (vcaddq_rot270_s8): Delete.
5013 (vcaddq_rot90_u16): Delete.
5014 (vcaddq_rot270_u16): Delete.
5015 (vhcaddq_rot90_s16): Delete.
5016 (vhcaddq_rot270_s16): Delete.
5017 (vcaddq_rot90_s16): Delete.
5018 (vcaddq_rot270_s16): Delete.
5019 (vcaddq_rot90_u32): Delete.
5020 (vcaddq_rot270_u32): Delete.
5021 (vhcaddq_rot90_s32): Delete.
5022 (vhcaddq_rot270_s32): Delete.
5023 (vcaddq_rot90_s32): Delete.
5024 (vcaddq_rot270_s32): Delete.
5025 (vcaddq_rot90_f16): Delete.
5026 (vcaddq_rot270_f16): Delete.
5027 (vcaddq_rot90_f32): Delete.
5028 (vcaddq_rot270_f32): Delete.
5029 (vcaddq_rot270_m_s8): Delete.
5030 (vcaddq_rot270_m_s32): Delete.
5031 (vcaddq_rot270_m_s16): Delete.
5032 (vcaddq_rot270_m_u8): Delete.
5033 (vcaddq_rot270_m_u32): Delete.
5034 (vcaddq_rot270_m_u16): Delete.
5035 (vcaddq_rot90_m_s8): Delete.
5036 (vcaddq_rot90_m_s32): Delete.
5037 (vcaddq_rot90_m_s16): Delete.
5038 (vcaddq_rot90_m_u8): Delete.
5039 (vcaddq_rot90_m_u32): Delete.
5040 (vcaddq_rot90_m_u16): Delete.
5041 (vhcaddq_rot270_m_s8): Delete.
5042 (vhcaddq_rot270_m_s32): Delete.
5043 (vhcaddq_rot270_m_s16): Delete.
5044 (vhcaddq_rot90_m_s8): Delete.
5045 (vhcaddq_rot90_m_s32): Delete.
5046 (vhcaddq_rot90_m_s16): Delete.
5047 (vcaddq_rot270_m_f32): Delete.
5048 (vcaddq_rot270_m_f16): Delete.
5049 (vcaddq_rot90_m_f32): Delete.
5050 (vcaddq_rot90_m_f16): Delete.
5051 (vcaddq_rot90_x_s8): Delete.
5052 (vcaddq_rot90_x_s16): Delete.
5053 (vcaddq_rot90_x_s32): Delete.
5054 (vcaddq_rot90_x_u8): Delete.
5055 (vcaddq_rot90_x_u16): Delete.
5056 (vcaddq_rot90_x_u32): Delete.
5057 (vcaddq_rot270_x_s8): Delete.
5058 (vcaddq_rot270_x_s16): Delete.
5059 (vcaddq_rot270_x_s32): Delete.
5060 (vcaddq_rot270_x_u8): Delete.
5061 (vcaddq_rot270_x_u16): Delete.
5062 (vcaddq_rot270_x_u32): Delete.
5063 (vhcaddq_rot90_x_s8): Delete.
5064 (vhcaddq_rot90_x_s16): Delete.
5065 (vhcaddq_rot90_x_s32): Delete.
5066 (vhcaddq_rot270_x_s8): Delete.
5067 (vhcaddq_rot270_x_s16): Delete.
5068 (vhcaddq_rot270_x_s32): Delete.
5069 (vcaddq_rot90_x_f16): Delete.
5070 (vcaddq_rot90_x_f32): Delete.
5071 (vcaddq_rot270_x_f16): Delete.
5072 (vcaddq_rot270_x_f32): Delete.
5073 (__arm_vcaddq_rot90_u8): Delete.
5074 (__arm_vcaddq_rot270_u8): Delete.
5075 (__arm_vhcaddq_rot90_s8): Delete.
5076 (__arm_vhcaddq_rot270_s8): Delete.
5077 (__arm_vcaddq_rot90_s8): Delete.
5078 (__arm_vcaddq_rot270_s8): Delete.
5079 (__arm_vcaddq_rot90_u16): Delete.
5080 (__arm_vcaddq_rot270_u16): Delete.
5081 (__arm_vhcaddq_rot90_s16): Delete.
5082 (__arm_vhcaddq_rot270_s16): Delete.
5083 (__arm_vcaddq_rot90_s16): Delete.
5084 (__arm_vcaddq_rot270_s16): Delete.
5085 (__arm_vcaddq_rot90_u32): Delete.
5086 (__arm_vcaddq_rot270_u32): Delete.
5087 (__arm_vhcaddq_rot90_s32): Delete.
5088 (__arm_vhcaddq_rot270_s32): Delete.
5089 (__arm_vcaddq_rot90_s32): Delete.
5090 (__arm_vcaddq_rot270_s32): Delete.
5091 (__arm_vcaddq_rot270_m_s8): Delete.
5092 (__arm_vcaddq_rot270_m_s32): Delete.
5093 (__arm_vcaddq_rot270_m_s16): Delete.
5094 (__arm_vcaddq_rot270_m_u8): Delete.
5095 (__arm_vcaddq_rot270_m_u32): Delete.
5096 (__arm_vcaddq_rot270_m_u16): Delete.
5097 (__arm_vcaddq_rot90_m_s8): Delete.
5098 (__arm_vcaddq_rot90_m_s32): Delete.
5099 (__arm_vcaddq_rot90_m_s16): Delete.
5100 (__arm_vcaddq_rot90_m_u8): Delete.
5101 (__arm_vcaddq_rot90_m_u32): Delete.
5102 (__arm_vcaddq_rot90_m_u16): Delete.
5103 (__arm_vhcaddq_rot270_m_s8): Delete.
5104 (__arm_vhcaddq_rot270_m_s32): Delete.
5105 (__arm_vhcaddq_rot270_m_s16): Delete.
5106 (__arm_vhcaddq_rot90_m_s8): Delete.
5107 (__arm_vhcaddq_rot90_m_s32): Delete.
5108 (__arm_vhcaddq_rot90_m_s16): Delete.
5109 (__arm_vcaddq_rot90_x_s8): Delete.
5110 (__arm_vcaddq_rot90_x_s16): Delete.
5111 (__arm_vcaddq_rot90_x_s32): Delete.
5112 (__arm_vcaddq_rot90_x_u8): Delete.
5113 (__arm_vcaddq_rot90_x_u16): Delete.
5114 (__arm_vcaddq_rot90_x_u32): Delete.
5115 (__arm_vcaddq_rot270_x_s8): Delete.
5116 (__arm_vcaddq_rot270_x_s16): Delete.
5117 (__arm_vcaddq_rot270_x_s32): Delete.
5118 (__arm_vcaddq_rot270_x_u8): Delete.
5119 (__arm_vcaddq_rot270_x_u16): Delete.
5120 (__arm_vcaddq_rot270_x_u32): Delete.
5121 (__arm_vhcaddq_rot90_x_s8): Delete.
5122 (__arm_vhcaddq_rot90_x_s16): Delete.
5123 (__arm_vhcaddq_rot90_x_s32): Delete.
5124 (__arm_vhcaddq_rot270_x_s8): Delete.
5125 (__arm_vhcaddq_rot270_x_s16): Delete.
5126 (__arm_vhcaddq_rot270_x_s32): Delete.
5127 (__arm_vcaddq_rot90_f16): Delete.
5128 (__arm_vcaddq_rot270_f16): Delete.
5129 (__arm_vcaddq_rot90_f32): Delete.
5130 (__arm_vcaddq_rot270_f32): Delete.
5131 (__arm_vcaddq_rot270_m_f32): Delete.
5132 (__arm_vcaddq_rot270_m_f16): Delete.
5133 (__arm_vcaddq_rot90_m_f32): Delete.
5134 (__arm_vcaddq_rot90_m_f16): Delete.
5135 (__arm_vcaddq_rot90_x_f16): Delete.
5136 (__arm_vcaddq_rot90_x_f32): Delete.
5137 (__arm_vcaddq_rot270_x_f16): Delete.
5138 (__arm_vcaddq_rot270_x_f32): Delete.
5139 (__arm_vcaddq_rot90): Delete.
5140 (__arm_vcaddq_rot270): Delete.
5141 (__arm_vhcaddq_rot90): Delete.
5142 (__arm_vhcaddq_rot270): Delete.
5143 (__arm_vcaddq_rot270_m): Delete.
5144 (__arm_vcaddq_rot90_m): Delete.
5145 (__arm_vhcaddq_rot270_m): Delete.
5146 (__arm_vhcaddq_rot90_m): Delete.
5147 (__arm_vcaddq_rot90_x): Delete.
5148 (__arm_vcaddq_rot270_x): Delete.
5149 (__arm_vhcaddq_rot90_x): Delete.
5150 (__arm_vhcaddq_rot270_x): Delete.
5151
5152 2023-07-14 Christophe Lyon <christophe.lyon@linaro.org>
5153
5154 * config/arm/arm_mve_builtins.def (vcaddq_rot90_, vcaddq_rot270_)
5155 (vcaddq_rot90_f, vcaddq_rot90_f): Add "_" or "_f" suffix.
5156 * config/arm/iterators.md (mve_insn): Add vcadd, vhcadd.
5157 (isu): Add UNSPEC_VCADD90, UNSPEC_VCADD270, VCADDQ_ROT270_M_U,
5158 VCADDQ_ROT270_M_S, VCADDQ_ROT90_M_U, VCADDQ_ROT90_M_S,
5159 VHCADDQ_ROT90_M_S, VHCADDQ_ROT270_M_S, VHCADDQ_ROT90_S,
5160 VHCADDQ_ROT270_S.
5161 (rot): Add VCADDQ_ROT90_M_F, VCADDQ_ROT90_M_S, VCADDQ_ROT90_M_U,
5162 VCADDQ_ROT270_M_F, VCADDQ_ROT270_M_S, VCADDQ_ROT270_M_U,
5163 VHCADDQ_ROT90_S, VHCADDQ_ROT270_S, VHCADDQ_ROT90_M_S,
5164 VHCADDQ_ROT270_M_S.
5165 (mve_rot): Add VCADDQ_ROT90_M_F, VCADDQ_ROT90_M_S,
5166 VCADDQ_ROT90_M_U, VCADDQ_ROT270_M_F, VCADDQ_ROT270_M_S,
5167 VCADDQ_ROT270_M_U, VHCADDQ_ROT90_S, VHCADDQ_ROT270_S,
5168 VHCADDQ_ROT90_M_S, VHCADDQ_ROT270_M_S.
5169 (supf): Add VHCADDQ_ROT90_M_S, VHCADDQ_ROT270_M_S,
5170 VHCADDQ_ROT90_S, VHCADDQ_ROT270_S, UNSPEC_VCADD90,
5171 UNSPEC_VCADD270.
5172 (VCADDQ_ROT270_M): Delete.
5173 (VCADDQ_M_F VxCADDQ VxCADDQ_M): New.
5174 (VCADDQ_ROT90_M): Delete.
5175 * config/arm/mve.md (mve_vcaddq<mve_rot><mode>)
5176 (mve_vhcaddq_rot270_s<mode>, mve_vhcaddq_rot90_s<mode>): Merge
5177 into ...
5178 (@mve_<mve_insn>q<mve_rot>_<supf><mode>): ... this.
5179 (mve_vcaddq<mve_rot><mode>): Rename into ...
5180 (@mve_<mve_insn>q<mve_rot>_f<mode>): ... this
5181 (mve_vcaddq_rot270_m_<supf><mode>)
5182 (mve_vcaddq_rot90_m_<supf><mode>, mve_vhcaddq_rot270_m_s<mode>)
5183 (mve_vhcaddq_rot90_m_s<mode>): Merge into ...
5184 (@mve_<mve_insn>q<mve_rot>_m_<supf><mode>): ... this.
5185 (mve_vcaddq_rot270_m_f<mode>, mve_vcaddq_rot90_m_f<mode>): Merge
5186 into ...
5187 (@mve_<mve_insn>q<mve_rot>_m_f<mode>): ... this.
5188
5189 2023-07-14 Roger Sayle <roger@nextmovesoftware.com>
5190
5191 PR target/110588
5192 * config/i386/i386.md (*bt<mode>_setcqi): Prefer string form
5193 preparation statement over braces for a single statement.
5194 (*bt<mode>_setncqi): Likewise.
5195 (*bt<mode>_setncqi_2): New define_insn_and_split.
5196
5197 2023-07-14 Roger Sayle <roger@nextmovesoftware.com>
5198
5199 * config/i386/i386-expand.cc (ix86_expand_move): Generalize special
5200 case inserting of 64-bit values into a TImode register, to handle
5201 both DImode and DFmode using either *insvti_lowpart_1
5202 or *isnvti_highpart_1.
5203
5204 2023-07-14 Uros Bizjak <ubizjak@gmail.com>
5205
5206 PR target/110206
5207 * fwprop.cc (contains_paradoxical_subreg_p): Move to ...
5208 * rtlanal.cc (contains_paradoxical_subreg_p): ... here.
5209 * rtlanal.h (contains_paradoxical_subreg_p): Add prototype.
5210 * cprop.cc (try_replace_reg): Do not set REG_EQUAL note
5211 when the original source contains a paradoxical subreg.
5212
5213 2023-07-14 Jan Hubicka <jh@suse.cz>
5214
5215 * passes.cc (execute_function_todo): Remove
5216 TODO_rebuild_frequencies
5217 * passes.def: Add rebuild_frequencies pass.
5218 * predict.cc (estimate_bb_frequencies): Drop
5219 force parameter.
5220 (tree_estimate_probability): Update call of
5221 estimate_bb_frequencies.
5222 (rebuild_frequencies): Turn into a pass; verify CFG profile consistency
5223 first and do not rebuild if not necessary.
5224 (class pass_rebuild_frequencies): New.
5225 (make_pass_rebuild_frequencies): New.
5226 * profile-count.h: Add profile_count::very_large_p.
5227 * tree-inline.cc (optimize_inline_calls): Do not return
5228 TODO_rebuild_frequencies
5229 * tree-pass.h (TODO_rebuild_frequencies): Remove.
5230 (make_pass_rebuild_frequencies): Declare.
5231
5232 2023-07-14 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5233
5234 * config/riscv/autovec.md (cond_len_fma<mode>): New pattern.
5235 * config/riscv/riscv-protos.h (enum insn_type): New enum.
5236 (expand_cond_len_ternop): New function.
5237 * config/riscv/riscv-v.cc (emit_nonvlmax_fp_ternary_tu_insn): Ditto.
5238 (expand_cond_len_ternop): Ditto.
5239
5240 2023-07-14 Jose E. Marchesi <jose.marchesi@oracle.com>
5241
5242 PR target/110657
5243 * config/bpf/bpf.md: Enable instruction scheduling.
5244
5245 2023-07-14 Tamar Christina <tamar.christina@arm.com>
5246
5247 PR tree-optimization/109154
5248 * tree-if-conv.cc (INCLUDE_ALGORITHM): Include.
5249 (struct bb_predicate): Add no_predicate_stmts.
5250 (set_bb_predicate): Increase predicate count.
5251 (set_bb_predicate_gimplified_stmts): Conditionally initialize
5252 no_predicate_stmts.
5253 (get_bb_num_predicate_stmts): New.
5254 (init_bb_predicate): Initialzie no_predicate_stmts.
5255 (release_bb_predicate): Cleanup no_predicate_stmts.
5256 (insert_gimplified_predicates): Preserve no_predicate_stmts.
5257
5258 2023-07-14 Tamar Christina <tamar.christina@arm.com>
5259
5260 PR tree-optimization/109154
5261 * tree-if-conv.cc (gen_simplified_condition,
5262 gen_phi_nest_statement): New.
5263 (gen_phi_arg_condition, predicate_scalar_phi): Use it.
5264
5265 2023-07-14 Richard Biener <rguenther@suse.de>
5266
5267 * gimple.h (gimple_phi_arg): New const overload.
5268 (gimple_phi_arg_def): Make gimple arg const.
5269 (gimple_phi_arg_def_from_edge): New inline function.
5270 * tree-phinodes.h (gimple_phi_arg_imm_use_ptr_from_edge):
5271 Likewise.
5272 * tree-ssa-operands.h (PHI_ARG_DEF_FROM_EDGE): Direct to
5273 new inline function.
5274 (PHI_ARG_DEF_PTR_FROM_EDGE): Likewise.
5275
5276 2023-07-14 Monk Chiang <monk.chiang@sifive.com>
5277
5278 * common/config/riscv/riscv-common.cc:
5279 (riscv_implied_info): Add zihintntl item.
5280 (riscv_ext_version_table): Ditto.
5281 (riscv_ext_flag_table): Ditto.
5282 * config/riscv/riscv-opts.h (MASK_ZIHINTNTL): New macro.
5283 (TARGET_ZIHINTNTL): Ditto.
5284
5285 2023-07-14 Die Li <lidie@eswincomputing.com>
5286
5287 * config/riscv/riscv.md: Remove redundant portion in and<mode>3.
5288
5289 2023-07-14 Oleg Endo <olegendo@gcc.gnu.org>
5290
5291 PR target/101469
5292 * config/sh/sh.md (peephole2): Handle case where eliminated reg is also
5293 used by the address of the following memory operand.
5294
5295 2023-07-13 Mikael Pettersson <mikpelinux@gmail.com>
5296
5297 PR target/107841
5298 * config/pdp11/pdp11.cc (pdp11_expand_epilogue): Also
5299 deallocate alloca-only frame.
5300
5301 2023-07-13 Iain Sandoe <iain@sandoe.co.uk>
5302
5303 PR target/110624
5304 * config/darwin.h (DARWIN_PLATFORM_ID): New.
5305 (LINK_COMMAND_A): Use DARWIN_PLATFORM_ID to pass OS, OS version
5306 and SDK data to the static linker.
5307
5308 2023-07-13 Carl Love <cel@us.ibm.com>
5309
5310 * config/rs6000/rs6000-builtins.def (__builtin_set_fpscr_rn): Update
5311 built-in definition return type.
5312 * config/rs6000/rs6000-c.cc (rs6000_target_modify_macros): Add check,
5313 define __SET_FPSCR_RN_RETURNS_FPSCR__ macro.
5314 * config/rs6000/rs6000.md (rs6000_set_fpscr_rn): Add return
5315 argument to return FPSCR fields.
5316 * doc/extend.texi (__builtin_set_fpscr_rn): Update description for
5317 the return value. Add description for
5318 __SET_FPSCR_RN_RETURNS_FPSCR__ macro.
5319
5320 2023-07-13 Uros Bizjak <ubizjak@gmail.com>
5321
5322 PR target/106966
5323 * config/alpha/alpha.cc (alpha_emit_set_long_const):
5324 Always use DImode when constructing long const.
5325
5326 2023-07-13 Uros Bizjak <ubizjak@gmail.com>
5327
5328 * haifa-sched.cc: Change TRUE/FALSE to true/false.
5329 * ira.cc: Ditto.
5330 * lra-assigns.cc: Ditto.
5331 * lra-constraints.cc: Ditto.
5332 * sel-sched.cc: Ditto.
5333
5334 2023-07-13 Andrew Pinski <apinski@marvell.com>
5335
5336 PR tree-optimization/110293
5337 PR tree-optimization/110539
5338 * match.pd: Expand the `x != (typeof x)(x == 0)`
5339 pattern to handle where the inner and outer comparsions
5340 are either `!=` or `==` and handle other constants
5341 than 0.
5342
5343 2023-07-13 Vladimir N. Makarov <vmakarov@redhat.com>
5344
5345 PR middle-end/109520
5346 * lra-int.h (lra_insn_recog_data): Add member asm_reloads_num.
5347 (lra_asm_insn_error): New prototype.
5348 * lra.cc: Include rtl_error.h.
5349 (lra_set_insn_recog_data): Initialize asm_reloads_num.
5350 (lra_asm_insn_error): New func whose code is taken from ...
5351 * lra-assigns.cc (lra_split_hard_reg_for): ... here. Use lra_asm_insn_error.
5352 * lra-constraints.cc (curr_insn_transform): Check reloads nummber for asm.
5353
5354 2023-07-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
5355
5356 * genmatch.cc (commutative_op): Add COND_LEN_*
5357 * internal-fn.cc (first_commutative_argument): Ditto.
5358 (CASE): Ditto.
5359 (get_unconditional_internal_fn): Ditto.
5360 (can_interpret_as_conditional_op_p): Ditto.
5361 (internal_fn_len_index): Ditto.
5362 * internal-fn.h (can_interpret_as_conditional_op_p): Ditt.
5363 * tree-ssa-math-opts.cc (convert_mult_to_fma_1): Ditto.
5364 (convert_mult_to_fma): Ditto.
5365 (math_opts_dom_walker::after_dom_children): Ditto.
5366
5367 2023-07-13 Pan Li <pan2.li@intel.com>
5368
5369 * config/riscv/riscv.cc (vxrm_rtx): New static var.
5370 (frm_rtx): Ditto.
5371 (global_state_unknown_p): Removed.
5372 (riscv_entity_mode_after): Removed.
5373 (asm_insn_p): New function.
5374 (vxrm_unknown_p): New function for fixed-point.
5375 (riscv_vxrm_mode_after): Ditto.
5376 (frm_unknown_dynamic_p): New function for floating-point.
5377 (riscv_frm_mode_after): Ditto.
5378 (riscv_mode_after): Leverage new functions.
5379
5380 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
5381
5382 * tree-vect-stmts.cc (vect_model_load_cost): Remove.
5383 (vectorizable_load): Adjust the cost handling on VMAT_CONTIGUOUS without
5384 calling vect_model_load_cost.
5385
5386 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
5387
5388 * tree-vect-stmts.cc (vect_model_load_cost): Assert this function only
5389 handle memory_access_type VMAT_CONTIGUOUS, remove some
5390 VMAT_CONTIGUOUS_PERMUTE related handlings.
5391 (vectorizable_load): Adjust the cost handling on VMAT_CONTIGUOUS_PERMUTE
5392 without calling vect_model_load_cost.
5393
5394 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
5395
5396 * tree-vect-stmts.cc (vect_model_load_cost): Assert it won't get
5397 VMAT_CONTIGUOUS_REVERSE any more.
5398 (vectorizable_load): Adjust the costing handling on
5399 VMAT_CONTIGUOUS_REVERSE without calling vect_model_load_cost.
5400
5401 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
5402
5403 * tree-vect-stmts.cc (vectorizable_load): Adjust the cost handling on
5404 VMAT_LOAD_STORE_LANES without calling vect_model_load_cost.
5405 (vectorizable_load): Remove VMAT_LOAD_STORE_LANES related handling and
5406 assert it will never get VMAT_LOAD_STORE_LANES.
5407
5408 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
5409
5410 * tree-vect-stmts.cc (vectorizable_load): Adjust the cost handling on
5411 VMAT_GATHER_SCATTER without calling vect_model_load_cost.
5412 (vect_model_load_cost): Adjut the assertion on VMAT_GATHER_SCATTER,
5413 remove VMAT_GATHER_SCATTER related handlings and the related parameter
5414 gs_info.
5415
5416 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
5417
5418 * tree-vect-stmts.cc (vectorizable_load): Adjust the cost handling
5419 on VMAT_ELEMENTWISE and VMAT_STRIDED_SLP without calling
5420 vect_model_load_cost.
5421 (vect_model_load_cost): Assert it won't get VMAT_ELEMENTWISE and
5422 VMAT_STRIDED_SLP any more, and remove their related handlings.
5423
5424 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
5425
5426 * tree-vect-stmts.cc (hoist_defs_of_uses): Add one argument HOIST_P.
5427 (vectorizable_load): Adjust the handling on VMAT_INVARIANT to respect
5428 hoisting decision and without calling vect_model_load_cost.
5429 (vect_model_load_cost): Assert it won't get VMAT_INVARIANT any more
5430 and remove VMAT_INVARIANT related handlings.
5431
5432 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
5433
5434 * tree-vect-stmts.cc (vect_build_gather_load_calls): Add the handlings
5435 on costing with one extra argument cost_vec.
5436 (vectorizable_load): Adjust the call to vect_build_gather_load_calls.
5437 (vect_model_load_cost): Assert it won't get VMAT_GATHER_SCATTER with
5438 gs_info.decl set any more.
5439
5440 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
5441
5442 * tree-vect-stmts.cc (vectorizable_load): Move and duplicate the call
5443 to vect_model_load_cost down to some different transform paths
5444 according to the handlings of different vect_memory_access_types.
5445
5446 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
5447
5448 * tree.h (wi::from_mpz): Hide from GENERATOR_FILE.
5449
5450 2023-07-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
5451
5452 * config/riscv/autovec.md
5453 (len_mask_gather_load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): New pattern.
5454 (len_mask_gather_load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
5455 (len_mask_gather_load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
5456 (len_mask_gather_load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
5457 (len_mask_gather_load<VNX16_QHSD:mode><VNX16_QHSDI:mode>): Ditto.
5458 (len_mask_gather_load<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
5459 (len_mask_gather_load<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
5460 (len_mask_gather_load<mode><mode>): Ditto.
5461 (len_mask_scatter_store<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Ditto.
5462 (len_mask_scatter_store<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
5463 (len_mask_scatter_store<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
5464 (len_mask_scatter_store<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
5465 (len_mask_scatter_store<VNX16_QHSD:mode><VNX16_QHSDI:mode>): Ditto.
5466 (len_mask_scatter_store<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
5467 (len_mask_scatter_store<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
5468 (len_mask_scatter_store<mode><mode>): Ditto.
5469 * config/riscv/predicates.md (const_1_operand): New predicate.
5470 (vector_gs_scale_operand_16): Ditto.
5471 (vector_gs_scale_operand_32): Ditto.
5472 (vector_gs_scale_operand_64): Ditto.
5473 (vector_gs_extension_operand): Ditto.
5474 (vector_gs_scale_operand_16_rv32): Ditto.
5475 (vector_gs_scale_operand_32_rv32): Ditto.
5476 * config/riscv/riscv-protos.h (enum insn_type): Add gather/scatter.
5477 (expand_gather_scatter): New function.
5478 * config/riscv/riscv-v.cc (gen_const_vector_dup): Add gather/scatter.
5479 (emit_vlmax_masked_store_insn): New function.
5480 (emit_nonvlmax_masked_store_insn): Ditto.
5481 (modulo_sel_indices): Ditto.
5482 (expand_vec_perm): Fix SLP for gather/scatter.
5483 (prepare_gather_scatter): New function.
5484 (expand_gather_scatter): Ditto.
5485 * config/riscv/riscv.cc (riscv_legitimize_move): Fix bug of
5486 (subreg:SI (DI CONST_POLY_INT)).
5487 * config/riscv/vector-iterators.md: Add gather/scatter.
5488 * config/riscv/vector.md (vec_duplicate<mode>): Use "@" instead.
5489 (@vec_duplicate<mode>): Ditto.
5490 (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSDI:mode>):
5491 Fix name.
5492 (@pred_indexed_<order>store<VNX16_QHSD:mode><VNX16_QHSDI:mode>): Ditto.
5493
5494 2023-07-12 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5495
5496 * config/riscv/autovec.md (cond_len_<optab><mode>): New pattern.
5497 * config/riscv/riscv-protos.h (enum insn_type): New enum.
5498 (expand_cond_len_binop): New function.
5499 * config/riscv/riscv-v.cc (emit_nonvlmax_tu_insn): Ditto.
5500 (emit_nonvlmax_fp_tu_insn): Ditto.
5501 (need_fp_rounding_p): Ditto.
5502 (expand_cond_len_binop): Ditto.
5503 * config/riscv/riscv.cc (riscv_preferred_else_value): Ditto.
5504 (TARGET_PREFERRED_ELSE_VALUE): New target hook.
5505
5506 2023-07-12 Jan Hubicka <jh@suse.cz>
5507
5508 * tree-cfg.cc (gimple_duplicate_sese_region): Rename to ...
5509 (gimple_duplicate_seme_region): ... this; break out profile updating
5510 code to ...
5511 * tree-ssa-loop-ch.cc (update_profile_after_ch): ... here.
5512 (ch_base::copy_headers): Update.
5513 * tree-cfg.h (gimple_duplicate_sese_region): Rename to ...
5514 (gimple_duplicate_seme_region): ... this.
5515
5516 2023-07-12 Aldy Hernandez <aldyh@redhat.com>
5517
5518 PR tree-optimization/107043
5519 * range-op.cc (operator_bitwise_and::op1_range): Update bitmask.
5520
5521 2023-07-12 Aldy Hernandez <aldyh@redhat.com>
5522
5523 PR tree-optimization/107053
5524 * gimple-range-op.cc (cfn_popcount): Use known set bits.
5525
5526 2023-07-12 Uros Bizjak <ubizjak@gmail.com>
5527
5528 * ira.cc (equiv_init_varies_p): Change return type from int to bool
5529 and adjust function body accordingly.
5530 (equiv_init_movable_p): Ditto.
5531 (memref_used_between_p): Ditto.
5532 * lra-constraints.cc (valid_address_p): Ditto.
5533
5534 2023-07-12 Aldy Hernandez <aldyh@redhat.com>
5535
5536 * range-op.cc (irange_to_masked_value): Remove.
5537 (update_known_bitmask): Update irange value/mask pair instead of
5538 only updating nonzero bits.
5539
5540 2023-07-12 Jan Hubicka <jh@suse.cz>
5541
5542 * tree-cfg.cc (gimple_duplicate_sese_region): Add ORIG_ELIMINATED_EDGES
5543 parameter and rewrite profile updating code to handle edges elimination.
5544 * tree-cfg.h (gimple_duplicate_sese_region): Update prototpe.
5545 * tree-ssa-loop-ch.cc (loop_invariant_op_p): New function.
5546 (loop_iv_derived_p): New function.
5547 (should_duplicate_loop_header_p): Track invariant exit edges; fix handling
5548 of PHIs and propagation of IV derived variables.
5549 (ch_base::copy_headers): Pass around the invariant edges hash set.
5550
5551 2023-07-12 Uros Bizjak <ubizjak@gmail.com>
5552
5553 * ifcvt.cc (cond_exec_changed_p): Change variable to bool.
5554 (last_active_insn): Change "skip_use_p" function argument to bool.
5555 (noce_operand_ok): Change return type from int to bool.
5556 (find_cond_trap): Ditto.
5557 (block_jumps_and_fallthru_p): Change "fallthru_p" and
5558 "jump_p" variables to bool.
5559 (noce_find_if_block): Change return type from int to bool.
5560 (cond_exec_find_if_block): Ditto.
5561 (find_if_case_1): Ditto.
5562 (find_if_case_2): Ditto.
5563 (dead_or_predicable): Ditto. Change "reversep" function arg to bool.
5564 (block_jumps_and_fallthru): Rename from block_jumps_and_fallthru_p.
5565 (cond_exec_process_insns): Change return type from int to bool.
5566 Change "mod_ok" function arg to bool.
5567 (cond_exec_process_if_block): Change return type from int to bool.
5568 Change "do_multiple_p" function arg to bool. Change "then_mod_ok"
5569 variable to bool.
5570 (noce_emit_store_flag): Change return type from int to bool.
5571 Change "reversep" function arg to bool. Change "cond_complex"
5572 variable to bool.
5573 (noce_try_move): Change return type from int to bool.
5574 (noce_try_ifelse_collapse): Ditto.
5575 (noce_try_store_flag): Ditto. Change "reversep" variable to bool.
5576 (noce_try_addcc): Change return type from int to bool. Change
5577 "subtract" variable to bool.
5578 (noce_try_store_flag_constants): Change return type from int to bool.
5579 (noce_try_store_flag_mask): Ditto. Change "reversep" variable to bool.
5580 (noce_try_cmove): Change return type from int to bool.
5581 (noce_try_cmove_arith): Ditto. Change "is_mem" variable to bool.
5582 (noce_try_minmax): Change return type from int to bool. Change
5583 "unsignedp" variable to bool.
5584 (noce_try_abs): Change return type from int to bool. Change
5585 "negate" variable to bool.
5586 (noce_try_sign_mask): Change return type from int to bool.
5587 (noce_try_move): Ditto.
5588 (noce_try_store_flag_constants): Ditto.
5589 (noce_try_cmove): Ditto.
5590 (noce_try_cmove_arith): Ditto.
5591 (noce_try_minmax): Ditto. Change "unsignedp" variable to bool.
5592 (noce_try_bitop): Change return type from int to bool.
5593 (noce_operand_ok): Ditto.
5594 (noce_convert_multiple_sets): Ditto.
5595 (noce_convert_multiple_sets_1): Ditto.
5596 (noce_process_if_block): Ditto.
5597 (check_cond_move_block): Ditto.
5598 (cond_move_process_if_block): Ditto. Change "success_p"
5599 variable to bool.
5600 (rest_of_handle_if_conversion): Change return type to void.
5601
5602 2023-07-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
5603
5604 * internal-fn.cc (FOR_EACH_CODE_MAPPING): Adapt for COND_LEN_* support.
5605 (CASE): Ditto.
5606 (get_conditional_len_internal_fn): New function.
5607 * internal-fn.h (get_conditional_len_internal_fn): Ditto.
5608 * tree-vect-stmts.cc (vectorizable_operation): Adapt for COND_LEN_*
5609 support.
5610
5611 2023-07-12 Roger Sayle <roger@nextmovesoftware.com>
5612
5613 PR target/91681
5614 * config/i386/i386.md (*add<dwi>3_doubleword_concat_zext): Typo.
5615
5616 2023-07-12 Roger Sayle <roger@nextmovesoftware.com>
5617
5618 PR target/91681
5619 * config/i386/i386.md (*add<dwi>3_doubleword_concat_zext): New
5620 define_insn_and_split derived from *add<dwi>3_doubleword_concat
5621 and *add<dwi>3_doubleword_zext.
5622
5623 2023-07-12 Roger Sayle <roger@nextmovesoftware.com>
5624
5625 PR target/110598
5626 * config/i386/i386.md (peephole2): Check !reg_mentioned_p when
5627 optimizing rega = 0; rega op= regb for op in [XOR,IOR,PLUS].
5628 (peephole2): Simplify rega = 0; rega op= rega cases.
5629
5630 2023-07-12 Roger Sayle <roger@nextmovesoftware.com>
5631
5632 * config/i386/i386-expand.cc (ix86_expand_int_compare): If
5633 testing a TImode SUBREG of a 128-bit vector register against
5634 zero, use a PTEST instruction instead of first moving it to
5635 a pair of scalar registers.
5636
5637 2023-07-12 Robin Dapp <rdapp@ventanamicro.com>
5638
5639 * genopinit.cc (main): Adjust maximal number of optabs and
5640 machine modes.
5641 * gensupport.cc (find_optab): Shift optab by 20 and mode by
5642 10 bits.
5643 * optabs-query.h (optab_handler): Ditto.
5644 (convert_optab_handler): Ditto.
5645
5646 2023-07-12 Richard Biener <rguenther@suse.de>
5647
5648 PR tree-optimization/110630
5649 * tree-vect-slp.cc (vect_add_slp_permutation): New
5650 offset parameter, honor that for the extract code generation.
5651 (vectorizable_slp_permutation_1): Handle offsetted identities.
5652
5653 2023-07-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
5654
5655 * config/riscv/autovec.md (smul<mode>3_highpart): New pattern.
5656 (umul<mode>3_highpart): Ditto.
5657
5658 2023-07-12 Jan Beulich <jbeulich@suse.com>
5659
5660 * config/i386/i386.md (extendbfsf2_1): Add new AVX512F
5661 alternative. Adjust original last alternative's "prefix"
5662 attribute to maybe_evex.
5663
5664 2023-07-12 Jan Beulich <jbeulich@suse.com>
5665
5666 * config/i386/sse.md (vec_dupv4sf): Make first alternative use
5667 vbroadcastss for AVX2. New AVX512F alternative.
5668 (*vec_dupv4si): New AVX2 and AVX512F alternatives using
5669 vpbroadcastd. Replace sselog1 by sseshuf1 in "type" attribute.
5670
5671 2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu>
5672
5673 * config/riscv/peephole.md: Remove XThead* peephole passes.
5674 * config/riscv/thead.md: Include thead-peephole.md.
5675 * config/riscv/thead-peephole.md: New file.
5676
5677 2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu>
5678
5679 * config/riscv/riscv-protos.h (riscv_regno_ok_for_index_p):
5680 New prototype.
5681 (riscv_index_reg_class): Likewise.
5682 * config/riscv/riscv.cc (riscv_regno_ok_for_index_p): New function.
5683 (riscv_index_reg_class): New function.
5684 * config/riscv/riscv.h (INDEX_REG_CLASS): Call new function
5685 riscv_index_reg_class().
5686 (REGNO_OK_FOR_INDEX_P): Call new function
5687 riscv_regno_ok_for_index_p().
5688
5689 2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu>
5690
5691 * config/riscv/riscv-protos.h (enum riscv_address_type):
5692 New location of type definition.
5693 (struct riscv_address_info): Likewise.
5694 * config/riscv/riscv.cc (enum riscv_address_type):
5695 Old location of type definition.
5696 (struct riscv_address_info): Likewise.
5697
5698 2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu>
5699
5700 * config/riscv/riscv.h (Xmode): New macro.
5701
5702 2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu>
5703
5704 * config/riscv/riscv.cc (riscv_print_operand_address): Use
5705 output_addr_const rather than riscv_print_operand.
5706
5707 2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu>
5708
5709 * config/riscv/thead.md: Adjust constraints of th_addsl.
5710
5711 2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu>
5712
5713 * config/riscv/thead.cc (th_mempair_operands_p):
5714 Fix documentation of th_mempair_order_operands().
5715
5716 2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu>
5717
5718 * config/riscv/thead.cc (th_mempair_save_regs):
5719 Emit REG_FRAME_RELATED_EXPR notes in prologue.
5720
5721 2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu>
5722
5723 * config/riscv/riscv.md: No base-ISA extension splitter for XThead*.
5724 * config/riscv/thead.md (*extend<SHORT:mode><SUPERQI:mode>2_th_ext):
5725 New XThead extension INSN.
5726 (*zero_extendsidi2_th_extu): New XThead extension INSN.
5727 (*zero_extendhi<GPR:mode>2_th_extu): New XThead extension INSN.
5728
5729 2023-07-12 liuhongt <hongtao.liu@intel.com>
5730
5731 PR target/110438
5732 PR target/110202
5733 * config/i386/predicates.md
5734 (int_float_vector_all_ones_operand): New predicate.
5735 * config/i386/sse.md (*vmov<mode>_constm1_pternlog_false_dep): New
5736 define_insn.
5737 (*<avx512>_cvtmask2<ssemodesuffix><mode>_pternlog_false_dep):
5738 Ditto.
5739 (*<avx512>_cvtmask2<ssemodesuffix><mode>_pternlog_false_dep):
5740 Ditto.
5741 (*<avx512>_cvtmask2<ssemodesuffix><mode>): Adjust to
5742 define_insn_and_split to avoid false dependence.
5743 (*<avx512>_cvtmask2<ssemodesuffix><mode>): Ditto.
5744 (<mask_codefor>one_cmpl<mode>2<mask_name>): Adjust constraint
5745 of operands 1 to '0' to avoid false dependence.
5746 (*andnot<mode>3): Ditto.
5747 (iornot<mode>3): Ditto.
5748 (*<nlogic><mode>3): Ditto.
5749
5750 2023-07-12 Mo, Zewei <zewei.mo@intel.com>
5751
5752 * common/config/i386/cpuinfo.h
5753 (get_intel_cpu): Handle Granite Rapids D.
5754 * common/config/i386/i386-common.cc:
5755 (processor_alias_table): Add graniterapids-d.
5756 * common/config/i386/i386-cpuinfo.h
5757 (enum processor_subtypes): Add INTEL_COREI7_GRANITERAPIDS_D.
5758 * config.gcc: Add -march=graniterapids-d.
5759 * config/i386/driver-i386.cc (host_detect_local_cpu):
5760 Handle graniterapids-d.
5761 * config/i386/i386.h: (PTA_GRANITERAPIDS_D): New.
5762 * doc/extend.texi: Add graniterapids-d.
5763 * doc/invoke.texi: Ditto.
5764
5765 2023-07-12 Haochen Jiang <haochen.jiang@intel.com>
5766
5767 * config/i386/i386-builtins.cc (ix86_init_mmx_sse_builtins):
5768 Add OPTION_MASK_ISA_AVX512VL.
5769 * config/i386/i386-expand.cc (ix86_check_builtin_isa_match):
5770 Ditto.
5771
5772 2023-07-11 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
5773
5774 * config/riscv/riscv-protos.h (enum insn_type): Add vcompress optimization.
5775 * config/riscv/riscv-v.cc (emit_vlmax_compress_insn): Ditto.
5776 (shuffle_compress_patterns): Ditto.
5777 (expand_vec_perm_const_1): Ditto.
5778
5779 2023-07-11 Uros Bizjak <ubizjak@gmail.com>
5780
5781 * cfghooks.cc (verify_flow_info): Change "err" variable to bool.
5782 * cfghooks.h (struct cfg_hooks): Change return type of
5783 verify_flow_info from integer to bool.
5784 * cfgrtl.cc (can_delete_note_p): Change return type from int to bool.
5785 (can_delete_label_p): Ditto.
5786 (rtl_verify_flow_info): Change return type from int to bool
5787 and adjust function body accordingly. Change "err" variable to bool.
5788 (rtl_verify_flow_info_1): Ditto.
5789 (free_bb_for_insn): Change return type to void.
5790 (rtl_merge_blocks): Change "b_empty" variable to bool.
5791 (try_redirect_by_replacing_jump): Change "fallthru" variable to bool.
5792 (verify_hot_cold_block_grouping): Change return type from int to bool.
5793 Change "err" variable to bool.
5794 (rtl_verify_edges): Ditto.
5795 (rtl_verify_bb_insns): Ditto.
5796 (rtl_verify_bb_pointers): Ditto.
5797 (rtl_verify_bb_insn_chain): Ditto.
5798 (rtl_verify_fallthru): Ditto.
5799 (rtl_verify_bb_layout): Ditto.
5800 (purge_all_dead_edges): Change "purged" variable to bool.
5801 * cfgrtl.h (free_bb_for_insn): Change return type from int to void.
5802 * postreload-gcse.cc (expr_hasher::equal): Change "equiv_p" to bool.
5803 (load_killed_in_block_p): Change return type from int to bool
5804 and adjust function body accordingly.
5805 (oprs_unchanged_p): Return true/false.
5806 (rest_of_handle_gcse2): Change return type to void.
5807 * tree-cfg.cc (gimple_verify_flow_info): Change return type from
5808 int to bool. Change "err" variable to bool.
5809
5810 2023-07-11 Gaius Mulley <gaiusmod2@gmail.com>
5811
5812 * doc/gm2.texi (-Wuninit-variable-checking=) New item.
5813
5814 2023-07-11 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
5815
5816 * doc/md.texi: Add COND_LEN_* operations for loop control with length.
5817 * internal-fn.cc (cond_len_unary_direct): Ditto.
5818 (cond_len_binary_direct): Ditto.
5819 (cond_len_ternary_direct): Ditto.
5820 (expand_cond_len_unary_optab_fn): Ditto.
5821 (expand_cond_len_binary_optab_fn): Ditto.
5822 (expand_cond_len_ternary_optab_fn): Ditto.
5823 (direct_cond_len_unary_optab_supported_p): Ditto.
5824 (direct_cond_len_binary_optab_supported_p): Ditto.
5825 (direct_cond_len_ternary_optab_supported_p): Ditto.
5826 * internal-fn.def (COND_LEN_ADD): Ditto.
5827 (COND_LEN_SUB): Ditto.
5828 (COND_LEN_MUL): Ditto.
5829 (COND_LEN_DIV): Ditto.
5830 (COND_LEN_MOD): Ditto.
5831 (COND_LEN_RDIV): Ditto.
5832 (COND_LEN_MIN): Ditto.
5833 (COND_LEN_MAX): Ditto.
5834 (COND_LEN_FMIN): Ditto.
5835 (COND_LEN_FMAX): Ditto.
5836 (COND_LEN_AND): Ditto.
5837 (COND_LEN_IOR): Ditto.
5838 (COND_LEN_XOR): Ditto.
5839 (COND_LEN_SHL): Ditto.
5840 (COND_LEN_SHR): Ditto.
5841 (COND_LEN_FMA): Ditto.
5842 (COND_LEN_FMS): Ditto.
5843 (COND_LEN_FNMA): Ditto.
5844 (COND_LEN_FNMS): Ditto.
5845 (COND_LEN_NEG): Ditto.
5846 * optabs.def (OPTAB_D): Ditto.
5847
5848 2023-07-11 Richard Biener <rguenther@suse.de>
5849
5850 PR tree-optimization/110614
5851 * tree-vect-data-refs.cc (vect_supportable_dr_alignment):
5852 SLP splats are not suitable for re-align ops.
5853
5854 2023-07-10 Peter Bergner <bergner@linux.ibm.com>
5855
5856 * config/rs6000/predicates.md (quad_memory_operand): Remove redundant
5857 MEM_P usage.
5858 (vsx_quad_dform_memory_operand): Likewise.
5859
5860 2023-07-10 Uros Bizjak <ubizjak@gmail.com>
5861
5862 * reorg.cc (stop_search_p): Change return type from int to bool
5863 and adjust function body accordingly.
5864 (resource_conflicts_p): Ditto.
5865 (insn_references_resource_p): Change return type from int to bool.
5866 (insn_sets_resource_p): Ditto.
5867 (redirect_with_delay_slots_safe_p): Ditto.
5868 (condition_dominates_p): Change return type from int to bool
5869 and adjust function body accordingly.
5870 (redirect_with_delay_list_safe_p): Ditto.
5871 (check_annul_list_true_false): Ditto. Change "annul_true_p"
5872 function argument to bool.
5873 (steal_delay_list_from_target): Change "pannul_p" function
5874 argument to bool pointer. Change "must_annul" and "used_annul"
5875 variables from int to bool.
5876 (steal_delay_list_from_fallthrough): Ditto.
5877 (own_thread_p): Change return type from int to bool and adjust
5878 function body accordingly. Change "allow_fallthrough" function
5879 argument to bool.
5880 (reorg_redirect_jump): Change return type from int to bool.
5881 (fill_simple_delay_slots): Change "non_jumps_p" function
5882 argument from int to bool. Change "maybe_never" varible to bool.
5883 (fill_slots_from_thread): Change "likely", "thread_if_true" and
5884 "own_thread" function arguments to bool. Change "lose" and
5885 "must_annul" variables to bool.
5886 (delete_from_delay_slot): Change "had_barrier" variable to bool.
5887 (try_merge_delay_insns): Change "annul_p" variable to bool.
5888 (fill_eager_delay_slots): Change "own_target" and "own_fallthrouhg"
5889 variables to bool.
5890 (rest_of_handle_delay_slots): Change return type from int to void
5891 and adjust function body accordingly.
5892
5893 2023-07-10 Kito Cheng <kito.cheng@sifive.com>
5894
5895 * doc/extend.texi (RISC-V Operand Modifiers): New.
5896
5897 2023-07-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
5898
5899 * config/riscv/riscv-vsetvl.cc (add_label_notes): Remove it.
5900 (insert_insn_end_basic_block): Ditto.
5901 (pass_vsetvl::commit_vsetvls): Adapt for new helper function.
5902 * gcse.cc (insert_insn_end_basic_block): Export as global function.
5903 * gcse.h (insert_insn_end_basic_block): Ditto.
5904
5905 2023-07-10 Christophe Lyon <christophe.lyon@linaro.org>
5906
5907 PR target/110268
5908 * config/arm/arm-builtins.cc (arm_init_mve_builtins): Handle LTO.
5909 (arm_builtin_decl): Hahndle MVE builtins.
5910 * config/arm/arm-mve-builtins.cc (builtin_decl): New function.
5911 (add_unique_function): Fix handling of
5912 __ARM_MVE_PRESERVE_USER_NAMESPACE.
5913 (add_overloaded_function): Likewise.
5914 * config/arm/arm-protos.h (builtin_decl): New declaration.
5915
5916 2023-07-10 Christophe Lyon <christophe.lyon@linaro.org>
5917
5918 * doc/sourcebuild.texi (arm_v8_1m_main_cde_mve_fp): Document.
5919
5920 2023-07-10 Xi Ruoyao <xry111@xry111.site>
5921
5922 PR tree-optimization/110557
5923 * tree-vect-patterns.cc (vect_recog_bitfield_ref_pattern):
5924 Ensure the output sign-extended if necessary.
5925
5926 2023-07-10 Roger Sayle <roger@nextmovesoftware.com>
5927
5928 * config/i386/i386.md (peephole2): Transform xchg insn with a
5929 REG_UNUSED note to a (simple) move.
5930 (*insvti_lowpart_1): New define_insn_and_split.
5931 (*insvdi_lowpart_1): Likewise.
5932
5933 2023-07-10 Roger Sayle <roger@nextmovesoftware.com>
5934
5935 * config/i386/i386-features.cc (compute_convert_gain): Tweak
5936 gains/costs for ROTATE/ROTATERT by integer constant on AVX512VL.
5937 (general_scalar_chain::convert_rotate): On TARGET_AVX512F generate
5938 avx512vl_rolv2di or avx412vl_rolv4si when appropriate.
5939
5940 2023-07-10 liuhongt <hongtao.liu@intel.com>
5941
5942 PR target/110170
5943 * config/i386/i386.md (*ieee_max<mode>3_1): New pre_reload
5944 splitter to detect fp max pattern.
5945 (*ieee_min<mode>3_1): Ditto, but for fp min pattern.
5946
5947 2023-07-09 Jan Hubicka <jh@suse.cz>
5948
5949 * cfg.cc (check_bb_profile): Dump counts with relative frequency.
5950 (dump_edge_info): Likewise.
5951 (dump_bb_info): Likewise.
5952 * profile-count.cc (profile_count::dump): Add comma between quality and
5953 freq.
5954
5955 2023-07-08 Jan Hubicka <jh@suse.cz>
5956
5957 PR tree-optimization/110600
5958 * cfgloopmanip.cc (scale_loop_profile): Add mising profile_dump check.
5959
5960 2023-07-08 Jan Hubicka <jh@suse.cz>
5961
5962 PR middle-end/110590
5963 * cfgloopmanip.cc (scale_loop_profile): Avoid scaling exits within
5964 inner loops and be more careful about inconsistent profiles.
5965 (duplicate_loop_body_to_header_edge): Fix profile update when eliminated
5966 exit is followed by other exit.
5967
5968 2023-07-08 Uros Bizjak <ubizjak@gmail.com>
5969
5970 * cprop.cc (reg_available_p): Change return type from int to bool.
5971 (reg_not_set_p): Ditto.
5972 (try_replace_reg): Ditto. Change "success" variable to bool.
5973 (cprop_jump): Change return type from int to void
5974 and adjust function body accordingly.
5975 (constprop_register): Ditto.
5976 (cprop_insn): Ditto. Change "changed" variable to bool.
5977 (local_cprop_pass): Change return type from int to void
5978 and adjust function body accordingly.
5979 (bypass_block): Ditto. Change "change", "may_be_loop_header"
5980 and "removed_p" variables to bool.
5981 (bypass_conditional_jumps): Change return type from int to void
5982 and adjust function body accordingly. Change "changed"
5983 variable to bool.
5984 (one_cprop_pass): Ditto.
5985
5986 2023-07-08 Uros Bizjak <ubizjak@gmail.com>
5987
5988 * gcse.cc (expr_equiv_p): Change return type from int to bool.
5989 (oprs_unchanged_p): Change return type from int to void
5990 and adjust function body accordingly.
5991 (oprs_anticipatable_p): Ditto.
5992 (oprs_available_p): Ditto.
5993 (insert_expr_in_table): Ditto. Change "antic_p" and "avail_p"
5994 arguments to bool. Change "found" variable to bool.
5995 (load_killed_in_block_p): Change return type from int to void and
5996 adjust function body accordingly. Change "avail_p" argument to bool.
5997 (pre_expr_reaches_here_p): Change return type from int to void
5998 and adjust function body accordingly.
5999 (pre_delete): Ditto. Change "changed" variable to bool.
6000 (pre_gcse): Change return type from int to void
6001 and adjust function body accordingly. Change "did_insert" and
6002 "changed" variables to bool.
6003 (one_pre_gcse_pass): Change return type from int to void
6004 and adjust function body accordingly. Change "changed" variable
6005 to bool.
6006 (should_hoist_expr_to_dom): Change return type from int to void
6007 and adjust function body accordingly. Change
6008 "visited_allocated_locally" variable to bool.
6009 (hoist_code): Change return type from int to void and adjust
6010 function body accordingly. Change "changed" variable to bool.
6011 (one_code_hoisting_pass): Ditto.
6012 (pre_edge_insert): Change return type from int to void and adjust
6013 function body accordingly. Change "did_insert" variable to bool.
6014 (pre_expr_reaches_here_p_work): Change return type from int to void
6015 and adjust function body accordingly.
6016 (simple_mem): Ditto.
6017 (want_to_gcse_p): Change return type from int to void
6018 and adjust function body accordingly.
6019 (can_assign_to_reg_without_clobbers_p): Update function body
6020 for bool return type.
6021 (hash_scan_set): Change "antic_p" and "avail_p" variables to bool.
6022 (pre_insert_copies): Change "added_copy" variable to bool.
6023
6024 2023-07-08 Jonathan Wakely <jwakely@redhat.com>
6025
6026 PR c++/110595
6027 PR c++/110596
6028 * doc/invoke.texi (Warning Options): Fix typos.
6029
6030 2023-07-07 Jan Hubicka <jh@suse.cz>
6031
6032 * profile-count.cc (profile_count::dump): Add FUN
6033 parameter; print relative frequency.
6034 (profile_count::debug): Update.
6035 * profile-count.h (profile_count::dump): Update
6036 prototype.
6037
6038 2023-07-07 Roger Sayle <roger@nextmovesoftware.com>
6039
6040 PR target/43644
6041 PR target/110533
6042 * config/i386/i386-expand.cc (ix86_expand_move): Convert SETs of
6043 TImode destinations from paradoxical SUBREGs (setting the lowpart)
6044 into explicit zero extensions. Use *insvti_highpart_1 instruction
6045 to set the highpart of a TImode destination.
6046
6047 2023-07-07 Jan Hubicka <jh@suse.cz>
6048
6049 * predict.cc (force_edge_cold): Use
6050 set_edge_probability_and_rescale_others; improve dumps.
6051
6052 2023-07-07 Jan Hubicka <jh@suse.cz>
6053
6054 * cfgloopmanip.cc (scale_loop_profile): Fix computation of count_in and scaling blocks
6055 after exit.
6056 * tree-vect-loop-manip.cc (vect_do_peeling): Scale loop profile of the epilogue if bound
6057 is known.
6058
6059 2023-07-07 Juergen Christ <jchrist@linux.ibm.com>
6060
6061 * config/s390/s390.cc (vec_init): Fix default case
6062
6063 2023-07-07 Vladimir N. Makarov <vmakarov@redhat.com>
6064
6065 * lra-assigns.cc (assign_by_spills): Add reload insns involving
6066 reload pseudos with non-refined class to be processed on the next
6067 sub-pass.
6068 * lra-constraints.cc (enough_allocatable_hard_regs_p): New func.
6069 (in_class_p): Use it.
6070 (print_curr_insn_alt): New func.
6071 (process_alt_operands): Use it. Improve debug info.
6072 (curr_insn_transform): Use print_curr_insn_alt. Refine reload
6073 pseudo class if it is not refined yet.
6074
6075 2023-07-07 Aldy Hernandez <aldyh@redhat.com>
6076
6077 * value-range.cc (irange::get_bitmask_from_range): Return all the
6078 known bits for a singleton.
6079 (irange::set_range_from_bitmask): Set a range of a singleton when
6080 all bits are known.
6081
6082 2023-07-07 Aldy Hernandez <aldyh@redhat.com>
6083
6084 * value-range.cc (irange::intersect): Leave normalization to
6085 caller.
6086
6087 2023-07-07 Aldy Hernandez <aldyh@redhat.com>
6088
6089 * data-streamer-in.cc (streamer_read_value_range): Adjust for
6090 value/mask.
6091 * data-streamer-out.cc (streamer_write_vrange): Same.
6092 * range-op.cc (operator_cast::fold_range): Same.
6093 * value-range-pretty-print.cc
6094 (vrange_printer::print_irange_bitmasks): Same.
6095 * value-range-storage.cc (irange_storage::write_lengths_address):
6096 Same.
6097 (irange_storage::set_irange): Same.
6098 (irange_storage::get_irange): Same.
6099 (irange_storage::size): Same.
6100 (irange_storage::dump): Same.
6101 * value-range-storage.h: Same.
6102 * value-range.cc (debug): New.
6103 (irange_bitmask::dump): New.
6104 (add_vrange): Adjust for value/mask.
6105 (irange::operator=): Same.
6106 (irange::set): Same.
6107 (irange::verify_range): Same.
6108 (irange::operator==): Same.
6109 (irange::contains_p): Same.
6110 (irange::irange_single_pair_union): Same.
6111 (irange::union_): Same.
6112 (irange::intersect): Same.
6113 (irange::invert): Same.
6114 (irange::get_nonzero_bits_from_range): Rename to...
6115 (irange::get_bitmask_from_range): ...this.
6116 (irange::set_range_from_nonzero_bits): Rename to...
6117 (irange::set_range_from_bitmask): ...this.
6118 (irange::set_nonzero_bits): Rename to...
6119 (irange::update_bitmask): ...this.
6120 (irange::get_nonzero_bits): Rename to...
6121 (irange::get_bitmask): ...this.
6122 (irange::intersect_nonzero_bits): Rename to...
6123 (irange::intersect_bitmask): ...this.
6124 (irange::union_nonzero_bits): Rename to...
6125 (irange::union_bitmask): ...this.
6126 (irange_bitmask::verify_mask): New.
6127 * value-range.h (class irange_bitmask): New.
6128 (irange_bitmask::set_unknown): New.
6129 (irange_bitmask::unknown_p): New.
6130 (irange_bitmask::irange_bitmask): New.
6131 (irange_bitmask::get_precision): New.
6132 (irange_bitmask::get_nonzero_bits): New.
6133 (irange_bitmask::set_nonzero_bits): New.
6134 (irange_bitmask::operator==): New.
6135 (irange_bitmask::union_): New.
6136 (irange_bitmask::intersect): New.
6137 (class irange): Friend vrange_printer.
6138 (irange::varying_compatible_p): Adjust for bitmask.
6139 (irange::set_varying): Same.
6140 (irange::set_nonzero): Same.
6141
6142 2023-07-07 Jan Beulich <jbeulich@suse.com>
6143
6144 * config/i386/sse.md (*vec_extractv2ti): Drop g modifiers.
6145
6146 2023-07-07 Jan Beulich <jbeulich@suse.com>
6147
6148 * config/i386/sse.md (@vec_extract_hi_<mode>): Drop last
6149 alternative. Switch new last alternative's "isa" attribute to
6150 "avx512vl".
6151 (vec_extract_hi_v32qi): Likewise.
6152
6153 2023-07-07 Pan Li <pan2.li@intel.com>
6154 Robin Dapp <rdapp@ventanamicro.com>
6155
6156 * config/riscv/riscv.cc (riscv_emit_mode_set): Avoid emit insn
6157 when FRM_MODE_DYN.
6158 (riscv_mode_entry): Take FRM_MODE_DYN as entry mode.
6159 (riscv_mode_exit): Likewise for exit mode.
6160 (riscv_mode_needed): Likewise for needed mode.
6161 (riscv_mode_after): Likewise for after mode.
6162
6163 2023-07-07 Pan Li <pan2.li@intel.com>
6164
6165 * config/riscv/vector.md: Fix typo.
6166
6167 2023-07-06 Jan Hubicka <jh@suse.cz>
6168
6169 PR middle-end/25623
6170 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Scale loop frequency to maximal number
6171 of iterations determined.
6172 * tree-ssa-loop-ivcanon.cc (try_unroll_loop_completely): Likewise.
6173
6174 2023-07-06 Jan Hubicka <jh@suse.cz>
6175
6176 * cfgloopmanip.cc (scale_loop_profile): Rewrite exit edge
6177 probability update to be safe on loops with subloops.
6178 Make bound parameter to be iteration bound.
6179 * tree-ssa-loop-ivcanon.cc (try_peel_loop): Update call
6180 of scale_loop_profile.
6181 * tree-vect-loop-manip.cc (vect_do_peeling): Likewise.
6182
6183 2023-07-06 Hao Liu OS <hliu@os.amperecomputing.com>
6184
6185 PR tree-optimization/110449
6186 * tree-vect-loop.cc (vectorizable_induction): use vec_n to replace
6187 vec_loop for the unrolled loop.
6188
6189 2023-07-06 Jan Hubicka <jh@suse.cz>
6190
6191 * cfg.cc (set_edge_probability_and_rescale_others): New function.
6192 (update_bb_profile_for_threading): Use it; simplify the rest.
6193 * cfg.h (set_edge_probability_and_rescale_others): Declare.
6194 * profile-count.h (profile_probability::apply_scale): New.
6195
6196 2023-07-06 Claudiu Zissulescu <claziss@gmail.com>
6197
6198 * doc/extend.texi (ARC Built-in Functions): Update documentation
6199 with missing builtins.
6200
6201 2023-07-06 Richard Biener <rguenther@suse.de>
6202
6203 PR tree-optimization/110556
6204 * tree-ssa-tail-merge.cc (gimple_equal_p): Check
6205 assign code and all operands of non-stores.
6206
6207 2023-07-06 Richard Biener <rguenther@suse.de>
6208
6209 PR tree-optimization/110563
6210 * tree-vectorizer.h (vect_determine_partial_vectors_and_peeling):
6211 Remove second argument.
6212 * tree-vect-loop.cc (vect_determine_partial_vectors_and_peeling):
6213 Remove for_epilogue_p argument. Merge assert ...
6214 (vect_analyze_loop_2): ... with check done before determining
6215 partial vectors by moving it after.
6216 * tree-vect-loop-manip.cc (vect_do_peeling): Adjust.
6217
6218 2023-07-06 Thomas Schwinge <thomas@codesourcery.com>
6219
6220 * ggc-common.cc (gt_pch_note_reorder, gt_pch_save): Tighten up a
6221 few things re 'reorder' option and strings.
6222 * stringpool.cc (gt_pch_p_S): This is now 'gcc_unreachable'.
6223
6224 2023-07-06 Thomas Schwinge <thomas@codesourcery.com>
6225
6226 * gengtype-parse.cc: Clean up obsolete parametrized structs
6227 remnants.
6228 * gengtype.cc: Likewise.
6229 * gengtype.h: Likewise.
6230
6231 2023-07-06 Thomas Schwinge <thomas@codesourcery.com>
6232
6233 * gengtype.cc (struct walk_type_data): Remove 'needs_cast_p'.
6234 Adjust all users.
6235
6236 2023-07-06 Thomas Schwinge <thomas@codesourcery.com>
6237
6238 * gengtype-parse.cc (token_names): Add '"user"'.
6239 * gengtype.h (gty_token): Add 'UNUSED_PARAM_IS' for use with
6240 'FIRST_TOKEN_WITH_VALUE'.
6241
6242 2023-07-06 Thomas Schwinge <thomas@codesourcery.com>
6243
6244 * doc/gty.texi (GTY Options) <string_length>: Enhance.
6245
6246 2023-07-06 Thomas Schwinge <thomas@codesourcery.com>
6247
6248 * gengtype.cc (write_root, write_roots): Explicitly reject
6249 'string_length' option.
6250 * doc/gty.texi (GTY Options) <string_length>: Document.
6251
6252 2023-07-06 Thomas Schwinge <thomas@codesourcery.com>
6253
6254 * ggc-internal.h (ggc_pch_count_object, ggc_pch_alloc_object)
6255 (ggc_pch_write_object): Remove 'bool is_string' argument.
6256 * ggc-common.cc: Adjust.
6257 * ggc-page.cc: Likewise.
6258
6259 2023-07-06 Roger Sayle <roger@nextmovesoftware.com>
6260
6261 * dwarf2out.cc (mem_loc_descriptor): Handle COPYSIGN.
6262
6263 2023-07-06 Hongyu Wang <hongyu.wang@intel.com>
6264
6265 * doc/extend.texi: Move x86 inlining rule to a new subsubsection
6266 and add description for inling of function with arch and tune
6267 attributes.
6268
6269 2023-07-06 Richard Biener <rguenther@suse.de>
6270
6271 PR tree-optimization/110515
6272 * tree-ssa-pre.cc (compute_avail): Make code dealing
6273 with hoisting loads with different alias-sets more
6274 robust.
6275
6276 2023-07-06 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
6277
6278 * tree-vect-stmts.cc (vect_get_strided_load_store_ops): Fix ICE.
6279
6280 2023-07-06 Hongyu Wang <hongyu.wang@intel.com>
6281
6282 * config/i386/i386.cc (ix86_can_inline_p): If callee has
6283 default arch=x86-64 and tune=generic, do not block the
6284 inlining to its caller. Also allow callee with different
6285 arch= to be inlined if it has always_inline attribute and
6286 it's ISA is subset of caller's.
6287
6288 2023-07-06 liuhongt <hongtao.liu@intel.com>
6289
6290 * config/i386/i386.cc (ix86_rtx_costs): Adjust rtx_cost for
6291 DF/SFmode AND/IOR/XOR/ANDN operations.
6292
6293 2023-07-06 Andrew Pinski <apinski@marvell.com>
6294
6295 PR middle-end/110554
6296 * tree-vect-generic.cc (expand_vector_condition): For comparisons,
6297 just build using boolean_type_node instead of the cond_type.
6298 For non-comparisons/non-scalar-bitmask, build a ` != 0` gimple
6299 that will feed into the COND_EXPR.
6300
6301 2023-07-06 liuhongt <hongtao.liu@intel.com>
6302
6303 PR target/110170
6304 * config/i386/i386.md (movdf_internal): Disparage slightly for
6305 2 alternatives (r,v) and (v,r) by adding constraint modifier
6306 '?'.
6307
6308 2023-07-06 Jeevitha Palanisamy <jeevitha@linux.ibm.com>
6309
6310 PR target/106907
6311 * config/rs6000/rs6000.cc (rs6000_expand_vector_extract): Remove redundant
6312 initialization of new_addr.
6313
6314 2023-07-06 Hao Liu <hliu@os.amperecomputing.com>
6315
6316 PR tree-optimization/110474
6317 * tree-vect-loop.cc (vect_analyze_loop_2): unscale the VF by suggested
6318 unroll factor while selecting the epilog vect loop VF.
6319
6320 2023-07-05 Andrew MacLeod <amacleod@redhat.com>
6321
6322 * gimple-range-gori.cc (compute_operand_range): Convert to a tail
6323 call.
6324
6325 2023-07-05 Andrew MacLeod <amacleod@redhat.com>
6326
6327 * gimple-range-gori.cc (compute_operand_range): After calling
6328 compute_operand2_range, recursively call self if needed.
6329 (compute_operand2_range): Turn into a leaf function.
6330 (gori_compute::compute_operand1_and_operand2_range): Finish
6331 operand2 calculation.
6332 * gimple-range-gori.h (compute_operand2_range): Remove name param.
6333
6334 2023-07-05 Andrew MacLeod <amacleod@redhat.com>
6335
6336 * gimple-range-gori.cc (compute_operand_range): After calling
6337 compute_operand1_range, recursively call self if needed.
6338 (compute_operand1_range): Turn into a leaf function.
6339 (gori_compute::compute_operand1_and_operand2_range): Finish
6340 operand1 calculation.
6341 * gimple-range-gori.h (compute_operand1_range): Remove name param.
6342
6343 2023-07-05 Andrew MacLeod <amacleod@redhat.com>
6344
6345 * gimple-range-gori.cc (compute_operand_range): Check for
6346 operand interdependence when both op1 and op2 are computed.
6347 (compute_operand1_and_operand2_range): No checks required now.
6348
6349 2023-07-05 Andrew MacLeod <amacleod@redhat.com>
6350
6351 * gimple-range-gori.cc (compute_operand_range): Check for
6352 a relation between op1 and op2 and use that instead.
6353 (compute_operand1_range): Don't look for a relation override.
6354 (compute_operand2_range): Ditto.
6355
6356 2023-07-05 Jonathan Wakely <jwakely@redhat.com>
6357
6358 * doc/contrib.texi (Contributors): Update my entry.
6359
6360 2023-07-05 Filip Kastl <filip.kastl@gmail.com>
6361
6362 * value-prof.cc (gimple_mod_subtract_transform): Correct edge
6363 prob calculation.
6364
6365 2023-07-05 Uros Bizjak <ubizjak@gmail.com>
6366
6367 * sched-int.h (struct haifa_sched_info): Change can_schedule_ready_p,
6368 scehdule_more_p and contributes_to_priority indirect frunction
6369 type from int to bool.
6370 (no_real_insns_p): Change return type from int to bool.
6371 (contributes_to_priority): Ditto.
6372 * haifa-sched.cc (no_real_insns_p): Change return type from
6373 int to bool and adjust function body accordingly.
6374 * modulo-sched.cc (try_scheduling_node_in_cycle): Change "success"
6375 variable type from int to bool.
6376 (ps_insn_advance_column): Change return type from int to bool.
6377 (ps_has_conflicts): Ditto. Change "has_conflicts"
6378 variable type from int to bool.
6379 * sched-deps.cc (deps_may_trap_p): Change return type from int to bool.
6380 (conditions_mutex_p): Ditto.
6381 * sched-ebb.cc (schedule_more_p): Ditto.
6382 (ebb_contributes_to_priority): Change return type from
6383 int to bool and adjust function body accordingly.
6384 * sched-rgn.cc (is_cfg_nonregular): Ditto.
6385 (check_live_1): Ditto.
6386 (is_pfree): Ditto.
6387 (find_conditional_protection): Ditto.
6388 (is_conditionally_protected): Ditto.
6389 (is_prisky): Ditto.
6390 (is_exception_free): Ditto.
6391 (haifa_find_rgns): Change "unreachable" and "too_large_failure"
6392 variables from int to bool.
6393 (extend_rgns): Change "rescan" variable from int to bool.
6394 (check_live): Change return type from
6395 int to bool and adjust function body accordingly.
6396 (can_schedule_ready_p): Ditto.
6397 (schedule_more_p): Ditto.
6398 (contributes_to_priority): Ditto.
6399
6400 2023-07-05 Robin Dapp <rdapp@ventanamicro.com>
6401
6402 * doc/md.texi: Document that vec_set and vec_extract must not
6403 fail.
6404 * gimple-isel.cc (gimple_expand_vec_set_expr): Rename this...
6405 (gimple_expand_vec_set_extract_expr): ...to this.
6406 (gimple_expand_vec_exprs): Call renamed function.
6407 * internal-fn.cc (vec_extract_direct): Add.
6408 (expand_vec_extract_optab_fn): New function to expand
6409 vec_extract optab.
6410 (direct_vec_extract_optab_supported_p): Add.
6411 * internal-fn.def (VEC_EXTRACT): Add.
6412 * optabs.cc (can_vec_extract_var_idx_p): New function.
6413 * optabs.h (can_vec_extract_var_idx_p): Declare.
6414
6415 2023-07-05 Robin Dapp <rdapp@ventanamicro.com>
6416
6417 * config/riscv/autovec.md: Add gen_lowpart.
6418
6419 2023-07-05 Robin Dapp <rdapp@ventanamicro.com>
6420
6421 * config/riscv/autovec.md: Allow register index operand.
6422
6423 2023-07-05 Pan Li <pan2.li@intel.com>
6424
6425 * config/riscv/riscv-vector-builtins.cc
6426 (function_expander::use_exact_insn): Use FRM_DYN instead of const0.
6427
6428 2023-07-05 Robin Dapp <rdapp@ventanamicro.com>
6429
6430 * config/riscv/autovec.md: Use float_truncate.
6431
6432 2023-07-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
6433
6434 * internal-fn.cc (internal_fn_len_index): Apply
6435 LEN_MASK_GATHER_LOAD/SCATTER_STORE into vectorizer.
6436 (internal_fn_mask_index): Ditto.
6437 * optabs-query.cc (supports_vec_gather_load_p): Ditto.
6438 (supports_vec_scatter_store_p): Ditto.
6439 * tree-vect-data-refs.cc (vect_gather_scatter_fn_p): Ditto.
6440 * tree-vect-patterns.cc (vect_recog_gather_scatter_pattern): Ditto.
6441 * tree-vect-stmts.cc (check_load_store_for_partial_vectors): Ditto.
6442 (vect_get_strided_load_store_ops): Ditto.
6443 (vectorizable_store): Ditto.
6444 (vectorizable_load): Ditto.
6445
6446 2023-07-05 Robin Dapp <rdapp@ventanamicro.com>
6447 Juzhe-Zhong <juzhe.zhong@rivai.ai>
6448
6449 * simplify-rtx.cc (native_encode_rtx): Ditto.
6450 (native_decode_vector_rtx): Ditto.
6451 (simplify_const_vector_byte_offset): Ditto.
6452 (simplify_const_vector_subreg): Ditto.
6453 * tree.cc (build_truth_vector_type_for_mode): Ditto.
6454 * varasm.cc (output_constant_pool_2): Ditto.
6455
6456 2023-07-05 YunQiang Su <yunqiang.su@cipunited.com>
6457
6458 * config/mips/mips.cc (mips_expand_block_move): don't expand for
6459 r6 with -mno-unaligned-access option if one or both of src and
6460 dest are unaligned. restruct: return directly if length is not const.
6461 (mips_block_move_straight): emit_move if ISA_HAS_UNALIGNED_ACCESS.
6462
6463 2023-07-05 Jan Beulich <jbeulich@suse.com>
6464
6465 PR target/100711
6466 * config/i386/sse.md: New splitters to simplify
6467 not;vec_duplicate as a singular vpternlog.
6468 (one_cmpl<mode>2): Allow broadcast for operand 1.
6469 (<mask_codefor>one_cmpl<mode>2<mask_name>): Likewise.
6470
6471 2023-07-05 Jan Beulich <jbeulich@suse.com>
6472
6473 PR target/100711
6474 * config/i386/sse.md: New splitters to simplify
6475 not;vec_duplicate;{ior,xor} as vec_duplicate;{iornot,xnor}.
6476
6477 2023-07-05 Jan Beulich <jbeulich@suse.com>
6478
6479 PR target/100711
6480 * config/i386/sse.md: Permit non-immediate operand 1 in AVX2
6481 form of splitter for PR target/100711.
6482
6483 2023-07-05 Richard Biener <rguenther@suse.de>
6484
6485 PR middle-end/110541
6486 * tree.def (VEC_PERM_EXPR): Adjust documentation to reflect
6487 reality.
6488
6489 2023-07-05 Jan Beulich <jbeulich@suse.com>
6490
6491 PR target/93768
6492 * config/i386/sse.md (*andnot<mode>3): Add new alternatives
6493 for memory form operand 1.
6494
6495 2023-07-05 Jan Beulich <jbeulich@suse.com>
6496
6497 PR target/93768
6498 * config/i386/i386.cc (ix86_rtx_costs): Further special-case
6499 bitwise vector operations.
6500 * config/i386/sse.md (*iornot<mode>3): New insn.
6501 (*xnor<mode>3): Likewise.
6502 (*<nlogic><mode>3): Likewise.
6503 (andor): New code iterator.
6504 (nlogic): New code attribute.
6505 (ternlog_nlogic): Likewise.
6506
6507 2023-07-05 Richard Biener <rguenther@suse.de>
6508
6509 * tree-vect-stmts.cc (vect_mark_relevant): Fix typo.
6510
6511 2023-07-05 yulong <shiyulong@iscas.ac.cn>
6512
6513 * config/riscv/vector.md: Add float16 attr at sew、vlmul and ratio.
6514
6515 2023-07-05 yulong <shiyulong@iscas.ac.cn>
6516
6517 * config/riscv/genrvv-type-indexer.cc (valid_type): Enable FP16 tuple.
6518 * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): New macro.
6519 (ADJUST_ALIGNMENT): Ditto.
6520 (RVV_TUPLE_PARTIAL_MODES): Ditto.
6521 (ADJUST_NUNITS): Ditto.
6522 * config/riscv/riscv-vector-builtins-types.def (vfloat16mf4x2_t):
6523 New types.
6524 (vfloat16mf4x3_t): Ditto.
6525 (vfloat16mf4x4_t): Ditto.
6526 (vfloat16mf4x5_t): Ditto.
6527 (vfloat16mf4x6_t): Ditto.
6528 (vfloat16mf4x7_t): Ditto.
6529 (vfloat16mf4x8_t): Ditto.
6530 (vfloat16mf2x2_t): Ditto.
6531 (vfloat16mf2x3_t): Ditto.
6532 (vfloat16mf2x4_t): Ditto.
6533 (vfloat16mf2x5_t): Ditto.
6534 (vfloat16mf2x6_t): Ditto.
6535 (vfloat16mf2x7_t): Ditto.
6536 (vfloat16mf2x8_t): Ditto.
6537 (vfloat16m1x2_t): Ditto.
6538 (vfloat16m1x3_t): Ditto.
6539 (vfloat16m1x4_t): Ditto.
6540 (vfloat16m1x5_t): Ditto.
6541 (vfloat16m1x6_t): Ditto.
6542 (vfloat16m1x7_t): Ditto.
6543 (vfloat16m1x8_t): Ditto.
6544 (vfloat16m2x2_t): Ditto.
6545 (vfloat16m2x3_t): Ditto.
6546 (vfloat16m2x4_t): Ditto.
6547 (vfloat16m4x2_t): Ditto.
6548 * config/riscv/riscv-vector-builtins.def (vfloat16mf4x2_t): New macro.
6549 (vfloat16mf4x3_t): Ditto.
6550 (vfloat16mf4x4_t): Ditto.
6551 (vfloat16mf4x5_t): Ditto.
6552 (vfloat16mf4x6_t): Ditto.
6553 (vfloat16mf4x7_t): Ditto.
6554 (vfloat16mf4x8_t): Ditto.
6555 (vfloat16mf2x2_t): Ditto.
6556 (vfloat16mf2x3_t): Ditto.
6557 (vfloat16mf2x4_t): Ditto.
6558 (vfloat16mf2x5_t): Ditto.
6559 (vfloat16mf2x6_t): Ditto.
6560 (vfloat16mf2x7_t): Ditto.
6561 (vfloat16mf2x8_t): Ditto.
6562 (vfloat16m1x2_t): Ditto.
6563 (vfloat16m1x3_t): Ditto.
6564 (vfloat16m1x4_t): Ditto.
6565 (vfloat16m1x5_t): Ditto.
6566 (vfloat16m1x6_t): Ditto.
6567 (vfloat16m1x7_t): Ditto.
6568 (vfloat16m1x8_t): Ditto.
6569 (vfloat16m2x2_t): Ditto.
6570 (vfloat16m2x3_t): Ditto.
6571 (vfloat16m2x4_t): Ditto.
6572 (vfloat16m4x2_t): Ditto.
6573 * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): New.
6574 * config/riscv/riscv.md: New.
6575 * config/riscv/vector-iterators.md: New.
6576
6577 2023-07-04 Andrew Pinski <apinski@marvell.com>
6578
6579 PR tree-optimization/110487
6580 * match.pd (a !=/== CST1 ? CST2 : CST3): Always
6581 build a nonstandard integer and use that.
6582
6583 2023-07-04 Andrew Pinski <apinski@marvell.com>
6584
6585 * match.pd (a?-1:0): Cast type an integer type
6586 rather the type before the negative.
6587 (a?0:-1): Likewise.
6588
6589 2023-07-04 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
6590
6591 * config/xtensa/xtensa.cc (machine_function, xtensa_expand_prologue):
6592 Change to use HARD_REG_BIT and its macros.
6593 * config/xtensa/xtensa.md
6594 (peephole2: regmove elimination during DFmode input reload):
6595 Likewise.
6596
6597 2023-07-04 Richard Biener <rguenther@suse.de>
6598
6599 PR tree-optimization/110491
6600 * tree-ssa-phiopt.cc (match_simplify_replacement): Check
6601 whether the PHI args are possibly undefined before folding
6602 the COND_EXPR.
6603
6604 2023-07-04 Pan Li <pan2.li@intel.com>
6605 Thomas Schwinge <thomas@codesourcery.com>
6606
6607 * lto-streamer-in.cc (lto_input_mode_table): Stream in the mode
6608 bits for machine mode table.
6609 * lto-streamer-out.cc (lto_write_mode_table): Stream out the
6610 HOST machine mode bits.
6611 * lto-streamer.h (struct lto_file_decl_data): New fields mode_bits.
6612 * tree-streamer.cc (streamer_mode_table): Take MAX_MACHINE_MODE
6613 as the table size.
6614 * tree-streamer.h (streamer_mode_table): Ditto.
6615 (bp_pack_machine_mode): Take 1 << ceil_log2 (MAX_MACHINE_MODE)
6616 as the packing limit.
6617 (bp_unpack_machine_mode): Ditto with 'file_data->mode_bits'.
6618
6619 2023-07-04 Thomas Schwinge <thomas@codesourcery.com>
6620
6621 * lto-streamer.h (class lto_input_block): Capture
6622 'lto_file_decl_data *file_data' instead of just
6623 'unsigned char *mode_table'.
6624 * ipa-devirt.cc (ipa_odr_read_section): Adjust.
6625 * ipa-fnsummary.cc (inline_read_section): Likewise.
6626 * ipa-icf.cc (sem_item_optimizer::read_section): Likewise.
6627 * ipa-modref.cc (read_section): Likewise.
6628 * ipa-prop.cc (ipa_prop_read_section, read_replacements_section):
6629 Likewise.
6630 * ipa-sra.cc (isra_read_summary_section): Likewise.
6631 * lto-cgraph.cc (input_cgraph_opt_section): Likewise.
6632 * lto-section-in.cc (lto_create_simple_input_block): Likewise.
6633 * lto-streamer-in.cc (lto_read_body_or_constructor)
6634 (lto_input_toplevel_asms): Likewise.
6635 * tree-streamer.h (bp_unpack_machine_mode): Likewise.
6636
6637 2023-07-04 Richard Biener <rguenther@suse.de>
6638
6639 * tree-ssa-phiopt.cc (pass_phiopt::execute): Mark SSA undefs.
6640 (empty_bb_or_one_feeding_into_p): Check for them.
6641 * tree-ssa.h (gimple_uses_undefined_value_p): Remove.
6642 * tree-ssa.cc (gimple_uses_undefined_value_p): Likewise.
6643
6644 2023-07-04 Richard Biener <rguenther@suse.de>
6645
6646 * tree-vect-loop.cc (vect_analyze_loop_costing): Remove
6647 check guarding scalar_niter underflow.
6648
6649 2023-07-04 Hao Liu <hliu@os.amperecomputing.com>
6650
6651 PR tree-optimization/110531
6652 * tree-vect-loop.cc (vect_analyze_loop_1): initialize
6653 slp_done_for_suggested_uf to false.
6654
6655 2023-07-04 Richard Biener <rguenther@suse.de>
6656
6657 PR tree-optimization/110228
6658 * tree-ssa-ifcombine.cc (pass_tree_ifcombine::execute):
6659 Mark SSA may-undefs.
6660 (bb_no_side_effects_p): Check stmt uses for undefs.
6661
6662 2023-07-04 Richard Biener <rguenther@suse.de>
6663
6664 PR tree-optimization/110436
6665 * tree-vect-stmts.cc (vect_mark_relevant): Expand dumping,
6666 force live but not relevant pattern stmts relevant.
6667
6668 2023-07-04 Lili Cui <lili.cui@intel.com>
6669
6670 * config/i386/i386.h: Add PTA_ENQCMD and PTA_UINTR to PTA_SIERRAFOREST.
6671 * doc/invoke.texi: Update new isa to march=sierraforest and grandridge.
6672
6673 2023-07-04 Richard Biener <rguenther@suse.de>
6674
6675 PR middle-end/110495
6676 * tree.h (TREE_OVERFLOW): Do not mention VECTOR_CSTs
6677 since we do not set TREE_OVERFLOW on those since the
6678 introduction of VL vectors.
6679 * match.pd (x +- CST +- CST): For VECTOR_CST do not look
6680 at TREE_OVERFLOW to determine validity of association.
6681
6682 2023-07-04 Richard Biener <rguenther@suse.de>
6683
6684 PR tree-optimization/110310
6685 * tree-vect-loop.cc (vect_determine_partial_vectors_and_peeling):
6686 Move costing part ...
6687 (vect_analyze_loop_costing): ... here. Integrate better
6688 estimate for epilogues from ...
6689 (vect_analyze_loop_2): Call vect_determine_partial_vectors_and_peeling
6690 with actual epilogue status.
6691 * tree-vect-loop-manip.cc (vect_do_peeling): ... here and
6692 avoid cancelling epilogue vectorization.
6693 (vect_update_epilogue_niters): Remove. No longer update
6694 epilogue LOOP_VINFO_NITERS.
6695
6696 2023-07-04 Pan Li <pan2.li@intel.com>
6697
6698 Revert:
6699 2023-07-03 Pan Li <pan2.li@intel.com>
6700
6701 * config/riscv/vector.md: Fix typo.
6702
6703 2023-07-04 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
6704
6705 * doc/md.texi: Add len_mask_gather_load/len_mask_scatter_store.
6706 * internal-fn.cc (expand_scatter_store_optab_fn): Ditto.
6707 (expand_gather_load_optab_fn): Ditto.
6708 (internal_load_fn_p): Ditto.
6709 (internal_store_fn_p): Ditto.
6710 (internal_gather_scatter_fn_p): Ditto.
6711 (internal_fn_len_index): Ditto.
6712 (internal_fn_mask_index): Ditto.
6713 (internal_fn_stored_value_index): Ditto.
6714 * internal-fn.def (LEN_MASK_GATHER_LOAD): Ditto.
6715 (LEN_MASK_SCATTER_STORE): Ditto.
6716 * optabs.def (OPTAB_CD): Ditto.
6717
6718 2023-07-04 Juzhe-Zhong <juzhe.zhong@rivai.ai>
6719
6720 * config/riscv/riscv-vsetvl.cc
6721 (vector_insn_info::parse_insn): Add early break.
6722
6723 2023-07-04 Hans-Peter Nilsson <hp@axis.com>
6724
6725 * config/cris/cris.md (CRIS_UNSPEC_SWAP_BITS): Remove.
6726 ("cris_swap_bits", "ctzsi2"): Use bitreverse instead.
6727
6728 2023-07-04 Hans-Peter Nilsson <hp@axis.com>
6729
6730 * dwarf2out.cc (mem_loc_descriptor): Handle BITREVERSE.
6731
6732 2023-07-03 Christoph Müllner <christoph.muellner@vrull.eu>
6733
6734 * common/config/riscv/riscv-common.cc: Add support for zvbb,
6735 zvbc, zvkg, zvkned, zvknha, zvknhb, zvksed, zvksh, zvkn,
6736 zvknc, zvkng, zvks, zvksc, zvksg, zvkt and the implied subsets.
6737 * config/riscv/arch-canonicalize: Add canonicalization info for
6738 zvkn, zvknc, zvkng, zvks, zvksc, zvksg.
6739 * config/riscv/riscv-opts.h (MASK_ZVBB): New macro.
6740 (MASK_ZVBC): Likewise.
6741 (TARGET_ZVBB): Likewise.
6742 (TARGET_ZVBC): Likewise.
6743 (MASK_ZVKG): Likewise.
6744 (MASK_ZVKNED): Likewise.
6745 (MASK_ZVKNHA): Likewise.
6746 (MASK_ZVKNHB): Likewise.
6747 (MASK_ZVKSED): Likewise.
6748 (MASK_ZVKSH): Likewise.
6749 (MASK_ZVKN): Likewise.
6750 (MASK_ZVKNC): Likewise.
6751 (MASK_ZVKNG): Likewise.
6752 (MASK_ZVKS): Likewise.
6753 (MASK_ZVKSC): Likewise.
6754 (MASK_ZVKSG): Likewise.
6755 (MASK_ZVKT): Likewise.
6756 (TARGET_ZVKG): Likewise.
6757 (TARGET_ZVKNED): Likewise.
6758 (TARGET_ZVKNHA): Likewise.
6759 (TARGET_ZVKNHB): Likewise.
6760 (TARGET_ZVKSED): Likewise.
6761 (TARGET_ZVKSH): Likewise.
6762 (TARGET_ZVKN): Likewise.
6763 (TARGET_ZVKNC): Likewise.
6764 (TARGET_ZVKNG): Likewise.
6765 (TARGET_ZVKS): Likewise.
6766 (TARGET_ZVKSC): Likewise.
6767 (TARGET_ZVKSG): Likewise.
6768 (TARGET_ZVKT): Likewise.
6769 * config/riscv/riscv.opt: Introduction of riscv_zv{b,k}_subext.
6770
6771 2023-07-03 Andrew Pinski <apinski@marvell.com>
6772
6773 PR middle-end/110510
6774 * except.h (struct eh_landing_pad_d): Add chain_next GTY.
6775
6776 2023-07-03 Iain Sandoe <iain@sandoe.co.uk>
6777
6778 * config/darwin.h: Avoid duplicate multiply_defined specs on
6779 earlier Darwin versions with shared libgcc.
6780
6781 2023-07-03 Uros Bizjak <ubizjak@gmail.com>
6782
6783 * tree.h (tree_int_cst_equal): Change return type from int to bool.
6784 (operand_equal_for_phi_arg_p): Ditto.
6785 (tree_map_base_marked_p): Ditto.
6786 * tree.cc (contains_placeholder_p): Update function body
6787 for bool return type.
6788 (type_cache_hasher::equal): Ditto.
6789 (tree_map_base_hash): Change return type
6790 from int to void and adjust function body accordingly.
6791 (tree_int_cst_equal): Ditto.
6792 (operand_equal_for_phi_arg_p): Ditto.
6793 (get_narrower): Change "first" variable to bool.
6794 (cl_option_hasher::equal): Update function body for bool return type.
6795 * ggc.h (ggc_set_mark): Change return type from int to bool.
6796 (ggc_marked_p): Ditto.
6797 * ggc-page.cc (gt_ggc_mx): Change return type
6798 from int to void and adjust function body accordingly.
6799 (ggc_set_mark): Ditto.
6800
6801 2023-07-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
6802
6803 * config/riscv/autovec.md: Change order of
6804 LEN_MASK_LOAD/LEN_MASK_STORE/LEN_LOAD/LEN_STORE arguments.
6805 * config/riscv/riscv-v.cc (expand_load_store): Ditto.
6806 * doc/md.texi: Ditto.
6807 * gimple-fold.cc (gimple_fold_partial_load_store_mem_ref): Ditto.
6808 * internal-fn.cc (len_maskload_direct): Ditto.
6809 (len_maskstore_direct): Ditto.
6810 (add_len_and_mask_args): New function.
6811 (expand_partial_load_optab_fn): Change order of
6812 LEN_MASK_LOAD/LEN_MASK_STORE/LEN_LOAD/LEN_STORE arguments.
6813 (expand_partial_store_optab_fn): Ditto.
6814 (internal_fn_len_index): New function.
6815 (internal_fn_mask_index): Change order of
6816 LEN_MASK_LOAD/LEN_MASK_STORE/LEN_LOAD/LEN_STORE arguments.
6817 (internal_fn_stored_value_index): Ditto.
6818 (internal_len_load_store_bias): Ditto.
6819 * internal-fn.h (internal_fn_len_index): New function.
6820 * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Change order of
6821 LEN_MASK_LOAD/LEN_MASK_STORE/LEN_LOAD/LEN_STORE arguments.
6822 * tree-vect-stmts.cc (vectorizable_store): Ditto.
6823 (vectorizable_load): Ditto.
6824
6825 2023-07-03 Gaius Mulley <gaiusmod2@gmail.com>
6826
6827 PR modula2/110125
6828 * doc/gm2.texi (Semantic checking): Include examples using
6829 -Wuninit-variable-checking.
6830
6831 2023-07-03 Juzhe-Zhong <juzhe.zhong@rivai.ai>
6832
6833 * config/riscv/autovec-opt.md (*double_widen_fnma<mode>): New pattern.
6834 (*single_widen_fnma<mode>): Ditto.
6835 (*double_widen_fms<mode>): Ditto.
6836 (*single_widen_fms<mode>): Ditto.
6837 (*double_widen_fnms<mode>): Ditto.
6838 (*single_widen_fnms<mode>): Ditto.
6839
6840 2023-07-03 Juzhe-Zhong <juzhe.zhong@rivai.ai>
6841
6842 * config/riscv/autovec-opt.md (@pred_single_widen_mul<any_extend:su><mode>): Change "@"
6843 into "*" in pattern name which simplifies build files.
6844 (*pred_single_widen_mul<any_extend:su><mode>): Ditto.
6845 (*pred_single_widen_mul<mode>): New pattern.
6846
6847 2023-07-03 Richard Sandiford <richard.sandiford@arm.com>
6848
6849 * config/aarch64/aarch64-simd.md (vec_extract<mode><Vhalf>): Expect
6850 the index to be 0 or 1.
6851
6852 2023-07-03 Lehua Ding <lehua.ding@rivai.ai>
6853
6854 Revert:
6855 2023-07-03 Juzhe-Zhong <juzhe.zhong@rivai.ai>
6856
6857 * config/riscv/autovec-opt.md (*double_widen_fnma<mode>): New pattern.
6858 (*single_widen_fnma<mode>): Ditto.
6859 (*double_widen_fms<mode>): Ditto.
6860 (*single_widen_fms<mode>): Ditto.
6861 (*double_widen_fnms<mode>): Ditto.
6862 (*single_widen_fnms<mode>): Ditto.
6863
6864 2023-07-03 Juzhe-Zhong <juzhe.zhong@rivai.ai>
6865
6866 * config/riscv/autovec-opt.md (*double_widen_fnma<mode>): New pattern.
6867 (*single_widen_fnma<mode>): Ditto.
6868 (*double_widen_fms<mode>): Ditto.
6869 (*single_widen_fms<mode>): Ditto.
6870 (*double_widen_fnms<mode>): Ditto.
6871 (*single_widen_fnms<mode>): Ditto.
6872
6873 2023-07-03 Pan Li <pan2.li@intel.com>
6874
6875 * config/riscv/vector.md: Fix typo.
6876
6877 2023-07-03 Richard Biener <rguenther@suse.de>
6878
6879 PR tree-optimization/110506
6880 * tree-vect-patterns.cc (vect_recog_rotate_pattern): Re-order
6881 TYPE_PRECISION access with INTEGRAL_TYPE_P check.
6882
6883 2023-07-03 Richard Biener <rguenther@suse.de>
6884
6885 PR tree-optimization/110506
6886 * tree-ssa-ccp.cc (get_value_for_expr): Check for integral
6887 type before relying on TYPE_PRECISION to produce a nonzero mask.
6888
6889 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
6890
6891 * config/mips/mips.md(*and<mode>3_mips16): Generates
6892 ZEB/ZEH instructions.
6893
6894 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
6895
6896 * config/mips/mips.cc(mips_9bit_offset_address_p): Restrict the
6897 address register to M16_REGS for MIPS16.
6898 (BUILTIN_AVAIL_MIPS16E2): Defined a new macro.
6899 (AVAIL_MIPS16E2_OR_NON_MIPS16): Same as above.
6900 (AVAIL_NON_MIPS16 (cache..)): Update to
6901 AVAIL_MIPS16E2_OR_NON_MIPS16.
6902 * config/mips/mips.h (ISA_HAS_CACHE): Add clause for ISA_HAS_MIPS16E2.
6903 * config/mips/mips.md (mips_cache): Mark as extended MIPS16.
6904
6905 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
6906
6907 * config/mips/mips.h(ISA_HAS_9BIT_DISPLACEMENT): Add clause
6908 for ISA_HAS_MIPS16E2.
6909 (ISA_HAS_SYNC): Same as above.
6910 (ISA_HAS_LL_SC): Same as above.
6911
6912 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
6913
6914 * config/mips/mips.cc(mips_expand_ins_as_unaligned_store):
6915 Add logics for generating instruction.
6916 * config/mips/mips.h(ISA_HAS_LWL_LWR): Add clause for ISA_HAS_MIPS16E2.
6917 * config/mips/mips.md(mov_<load>l): Generates instructions.
6918 (mov_<load>r): Same as above.
6919 (mov_<store>l): Adjusted for the conditions above.
6920 (mov_<store>r): Same as above.
6921 (mov_<store>l_mips16e2): Add machine description for `define_insn mov_<store>l_mips16e2`.
6922 (mov_<store>r_mips16e2): Add machine description for `define_insn mov_<store>r_mips16e2`.
6923
6924 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
6925
6926 * config/mips/mips.cc(mips_symbol_insns_1): Generates LUI instruction.
6927 (mips_const_insns): Same as above.
6928 (mips_output_move): Same as above.
6929 (mips_output_function_prologue): Same as above.
6930 * config/mips/mips.md: Same as above
6931
6932 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
6933
6934 * config/mips/constraints.md(Yz): New constraints for mips16e2.
6935 * config/mips/mips-protos.h(mips_bit_clear_p): Declared new function.
6936 (mips_bit_clear_info): Same as above.
6937 * config/mips/mips.cc(mips_bit_clear_info): New function for
6938 generating instructions.
6939 (mips_bit_clear_p): Same as above.
6940 * config/mips/mips.h(ISA_HAS_EXT_INS): Add clause for ISA_HAS_MIPS16E2.
6941 * config/mips/mips.md(extended_mips16): Generates EXT and INS instructions.
6942 (*and<mode>3): Generates INS instruction.
6943 (*and<mode>3_mips16): Generates EXT, INS and ANDI instructions.
6944 (ior<mode>3): Add logics for ORI instruction.
6945 (*ior<mode>3_mips16_asmacro): Generates ORI instrucion.
6946 (*ior<mode>3_mips16): Add logics for XORI instruction.
6947 (*xor<mode>3_mips16): Generates XORI instrucion.
6948 (*extzv<mode>): Add logics for EXT instruction.
6949 (*insv<mode>): Add logics for INS instruction.
6950 * config/mips/predicates.md(bit_clear_operand): New predicate for
6951 generating bitwise instructions.
6952 (and_reg_operand): Add logics for generating bitwise instructions.
6953
6954 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
6955
6956 * config/mips/mips.cc(mips_regno_mode_ok_for_base_p): Generate instructions
6957 that uses global pointer register.
6958 (mips16_unextended_reference_p): Same as above.
6959 (mips_pic_base_register): Same as above.
6960 (mips_init_relocs): Same as above.
6961 * config/mips/mips.h(MIPS16_GP_LOADS): Defined a new macro.
6962 (GLOBAL_POINTER_REGNUM): Moved to machine description `mips.md`.
6963 * config/mips/mips.md(GLOBAL_POINTER_REGNUM): Moved to here from above.
6964 (*lowsi_mips16_gp):New `define_insn *low<mode>_mips16`.
6965
6966 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
6967
6968 * config/mips/mips.h(ISA_HAS_CONDMOVE): Add condition for ISA_HAS_MIPS16E2.
6969 * config/mips/mips.md(*mov<GPR:mode>_on_<MOVECC:mode>): Add logics for MOVx insts.
6970 (*mov<GPR:mode>_on_<MOVECC:mode>_mips16e2): Generate MOVx instruction.
6971 (*mov<GPR:mode>_on_<GPR2:mode>_ne): Add logics for MOVx insts.
6972 (*mov<GPR:mode>_on_<GPR2:mode>_ne_mips16e2): Generate MOVx instruction.
6973 * config/mips/predicates.md(reg_or_0_operand_mips16e2): New predicate for MOVx insts.
6974
6975 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
6976
6977 * config/mips/mips.cc(mips_file_start): Add mips16e2 info
6978 for output file.
6979 * config/mips/mips.h(__mips_mips16e2): Defined a new
6980 predefine macro.
6981 (ISA_HAS_MIPS16E2): Defined a new macro.
6982 (ASM_SPEC): Pass mmips16e2 to the assembler.
6983 * config/mips/mips.opt: Add -m(no-)mips16e2 option.
6984 * config/mips/predicates.md: Add clause for TARGET_MIPS16E2.
6985 * doc/invoke.texi: Add -m(no-)mips16e2 option..
6986
6987 2023-07-02 Jakub Jelinek <jakub@redhat.com>
6988
6989 PR tree-optimization/110508
6990 * tree-ssa-math-opts.cc (match_uaddc_usubc): Only replace re2 with
6991 REALPART_EXPR opf nlhs if re2 is non-NULL.
6992
6993 2023-07-02 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
6994
6995 * config/xtensa/xtensa.cc (xtensa_match_CLAMPS_imms_p):
6996 Simplify.
6997 * config/xtensa/xtensa.md (*xtensa_clamps):
6998 Add TARGET_MINMAX to the condition.
6999
7000 2023-07-02 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
7001
7002 * config/xtensa/xtensa.md (*eqne_INT_MIN):
7003 Add missing ":SI" to the match_operator.
7004
7005 2023-07-02 Iain Sandoe <iain@sandoe.co.uk>
7006
7007 PR target/108743
7008 * config/darwin.opt: Add fconstant-cfstrings alias to
7009 mconstant-cfstrings.
7010 * doc/invoke.texi: Amend invocation descriptions to reflect
7011 that the fconstant-cfstrings is a target-option alias and to
7012 add the missing mconstant-cfstrings option description to the
7013 Darwin section.
7014
7015 2023-07-01 Jan Hubicka <jh@suse.cz>
7016
7017 * tree-cfg.cc (gimple_duplicate_sese_region): Add elliminated_edge
7018 parmaeter; update profile.
7019 * tree-cfg.h (gimple_duplicate_sese_region): Update prototype.
7020 * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Rename to ...
7021 (static_loop_exit): ... this; return the edge to be elliminated.
7022 (ch_base::copy_headers): Handle profile updating for eliminated exits.
7023
7024 2023-07-01 Roger Sayle <roger@nextmovesoftware.com>
7025
7026 * config/i386/i386-features.cc (compute_convert_gain): Provide
7027 gains/costs for ROTATE and ROTATERT (by an integer constant).
7028 (general_scalar_chain::convert_rotate): New helper function to
7029 convert a DImode or SImode rotation by an integer constant into
7030 SSE vector form.
7031 (general_scalar_chain::convert_insn): Call the new convert_rotate
7032 for ROTATE and ROTATERT.
7033 (general_scalar_to_vector_candidate_p): Consider ROTATE and
7034 ROTATERT to be candidates if the second operand is an integer
7035 constant, valid for a rotation (or shift) in the given mode.
7036 * config/i386/i386-features.h (general_scalar_chain): Add new
7037 helper method convert_rotate.
7038
7039 2023-07-01 Jan Hubicka <jh@suse.cz>
7040
7041 PR tree-optimization/103680
7042 * cfg.cc (update_bb_profile_for_threading): Fix profile update;
7043 make message clearer.
7044
7045 2023-06-30 Qing Zhao <qing.zhao@oracle.com>
7046
7047 PR tree-optimization/101832
7048 * tree-object-size.cc (addr_object_size): Handle structure/union type
7049 when it has flexible size.
7050
7051 2023-06-30 Eric Botcazou <ebotcazou@adacore.com>
7052
7053 * gimple-fold.cc (fold_array_ctor_reference): Fix head comment.
7054 (fold_nonarray_ctor_reference): Likewise. Specifically deal
7055 with integral bit-fields.
7056 (fold_ctor_reference): Make sure that the constructor uses the
7057 native storage order.
7058
7059 2023-06-30 Jan Hubicka <jh@suse.cz>
7060
7061 PR middle-end/109849
7062 * predict.cc (estimate_bb_frequencies): Turn to static function.
7063 (expr_expected_value_1): Fix handling of binary expressions with
7064 predicted values.
7065 * predict.def (PRED_MALLOC_NONNULL): Move later in the priority queue.
7066 (PRED_BUILTIN_EXPECT_WITH_PROBABILITY): Move to almost top of the priority
7067 queue.
7068 * predict.h (estimate_bb_frequencies): No longer declare it.
7069
7070 2023-06-30 Uros Bizjak <ubizjak@gmail.com>
7071
7072 * fold-const.h (multiple_of_p): Change return type from int to bool.
7073 * fold-const.cc (split_tree): Change negl_p, neg_litp_p,
7074 neg_conp_p and neg_var_p variables to bool.
7075 (const_binop): Change sat_p variable to bool.
7076 (merge_ranges): Change no_overlap variable to bool.
7077 (extract_muldiv_1): Change same_p variable to bool.
7078 (tree_swap_operands_p): Update function body for bool return type.
7079 (fold_truth_andor): Change commutative variable to bool.
7080 (multiple_of_p): Change return type
7081 from int to void and adjust function body accordingly.
7082 * optabs.h (expand_twoval_unop): Change return type from int to bool.
7083 (expand_twoval_binop): Ditto.
7084 (can_compare_p): Ditto.
7085 (have_add2_insn): Ditto.
7086 (have_addptr3_insn): Ditto.
7087 (have_sub2_insn): Ditto.
7088 (have_insn_for): Ditto.
7089 * optabs.cc (add_equal_note): Ditto.
7090 (widen_operand): Change no_extend argument from int to bool.
7091 (expand_binop): Ditto.
7092 (expand_twoval_unop): Change return type
7093 from int to void and adjust function body accordingly.
7094 (expand_twoval_binop): Ditto.
7095 (can_compare_p): Ditto.
7096 (have_add2_insn): Ditto.
7097 (have_addptr3_insn): Ditto.
7098 (have_sub2_insn): Ditto.
7099 (have_insn_for): Ditto.
7100
7101 2023-06-30 Oluwatamilore Adebayo <oluwatamilore.adebayo@arm.com>
7102
7103 * config/aarch64/aarch64-simd.md
7104 (vec_widen_<su>abdl_lo_<mode>, vec_widen_<su>abdl_hi_<mode>):
7105 Expansions for abd vec widen optabs.
7106 (aarch64_<su>abdl<mode>_insn): VQW based abdl RTL.
7107 * config/aarch64/iterators.md (USMAX_EXT): Code attributes
7108 that give the appropriate extend RTL for the max RTL.
7109
7110 2023-06-30 Oluwatamilore Adebayo <oluwatamilore.adebayo@arm.com>
7111
7112 * internal-fn.def (VEC_WIDEN_ABD): New internal hilo optab.
7113 * optabs.def (vec_widen_sabd_optab,
7114 vec_widen_sabd_hi_optab, vec_widen_sabd_lo_optab,
7115 vec_widen_sabd_odd_even, vec_widen_sabd_even_optab,
7116 vec_widen_uabd_optab,
7117 vec_widen_uabd_hi_optab, vec_widen_uabd_lo_optab,
7118 vec_widen_uabd_odd_even, vec_widen_uabd_even_optab):
7119 New optabs.
7120 * doc/md.texi: Document them.
7121 * tree-vect-patterns.cc (vect_recog_abd_pattern): Update to
7122 to build a VEC_WIDEN_ABD call if the input precision is smaller
7123 than the precision of the output.
7124 (vect_recog_widen_abd_pattern): Should an ABD expression be
7125 found preceeding an extension, replace the two with a
7126 VEC_WIDEN_ABD.
7127
7128 2023-06-30 Pan Li <pan2.li@intel.com>
7129
7130 * config/riscv/vector.md: Refactor the common condition.
7131
7132 2023-06-30 Richard Biener <rguenther@suse.de>
7133
7134 PR tree-optimization/110496
7135 * gimple-ssa-store-merging.cc (find_bswap_or_nop_1): Re-order
7136 verifying and TYPE_PRECISION query for the BIT_FIELD_REF case.
7137
7138 2023-06-30 Richard Biener <rguenther@suse.de>
7139
7140 PR middle-end/110489
7141 * statistics.cc (curr_statistics_hash): Add argument
7142 indicating whether we should allocate the hash.
7143 (statistics_fini_pass): If the hash isn't allocated
7144 only print the summary header.
7145
7146 2023-06-30 Segher Boessenkool <segher@kernel.crashing.org>
7147 Thomas Schwinge <thomas@codesourcery.com>
7148
7149 * config/nvptx/nvptx.cc (TARGET_LRA_P): Remove.
7150
7151 2023-06-30 Jovan Dmitrović <jovan.dmitrovic@syrmia.com>
7152
7153 PR target/109435
7154 * config/mips/mips.cc (mips_function_arg_alignment): Returns
7155 the alignment of function argument. In case of typedef type,
7156 it returns the aligment of the aliased type.
7157 (mips_function_arg_boundary): Relocated calculation of the
7158 aligment of function arguments.
7159
7160 2023-06-29 Jan Hubicka <jh@suse.cz>
7161
7162 PR tree-optimization/109849
7163 * ipa-fnsummary.cc (decompose_param_expr): Skip
7164 functions returning its parameter.
7165 (set_cond_stmt_execution_predicate): Return early
7166 if predicate was constructed.
7167
7168 2023-06-29 Qing Zhao <qing.zhao@oracle.com>
7169
7170 PR c/77650
7171 * doc/extend.texi: Document GCC extension on a structure containing
7172 a flexible array member to be a member of another structure.
7173
7174 2023-06-29 Qing Zhao <qing.zhao@oracle.com>
7175
7176 * print-tree.cc (print_node): Print new bit type_include_flexarray.
7177 * tree-core.h (struct tree_type_common): Use bit no_named_args_stdarg_p
7178 as type_include_flexarray for RECORD_TYPE or UNION_TYPE.
7179 * tree-streamer-in.cc (unpack_ts_type_common_value_fields): Stream
7180 in bit no_named_args_stdarg_p properly for its corresponding type.
7181 * tree-streamer-out.cc (pack_ts_type_common_value_fields): Stream
7182 out bit no_named_args_stdarg_p properly for its corresponding type.
7183 * tree.h (TYPE_INCLUDES_FLEXARRAY): New macro TYPE_INCLUDES_FLEXARRAY.
7184
7185 2023-06-29 Aldy Hernandez <aldyh@redhat.com>
7186
7187 * tree-vrp.cc (maybe_set_nonzero_bits): Move from here...
7188 * tree-ssa-dom.cc (maybe_set_nonzero_bits): ...to here.
7189 * tree-vrp.h (maybe_set_nonzero_bits): Remove.
7190
7191 2023-06-29 Aldy Hernandez <aldyh@redhat.com>
7192
7193 * value-range.cc (frange::set): Do not call verify_range.
7194 (frange::normalize_kind): Verify range.
7195 (frange::union_nans): Do not call verify_range.
7196 (frange::union_): Same.
7197 (frange::intersect): Same.
7198 (irange::irange_single_pair_union): Call normalize_kind if
7199 necessary.
7200 (irange::union_): Same.
7201 (irange::intersect): Same.
7202 (irange::set_range_from_nonzero_bits): Verify range.
7203 (irange::set_nonzero_bits): Call normalize_kind if necessary.
7204 (irange::get_nonzero_bits): Tweak comment.
7205 (irange::intersect_nonzero_bits): Call normalize_kind if
7206 necessary.
7207 (irange::union_nonzero_bits): Same.
7208 * value-range.h (irange::normalize_kind): Verify range.
7209
7210 2023-06-29 Uros Bizjak <ubizjak@gmail.com>
7211
7212 * cselib.h (rtx_equal_for_cselib_1):
7213 Change return type from int to bool.
7214 (references_value_p): Ditto.
7215 (rtx_equal_for_cselib_p): Ditto.
7216 * expr.h (can_store_by_pieces): Ditto.
7217 (try_casesi): Ditto.
7218 (try_tablejump): Ditto.
7219 (safe_from_p): Ditto.
7220 * sbitmap.h (bitmap_equal_p): Ditto.
7221 * cselib.cc (references_value_p): Change return type
7222 from int to void and adjust function body accordingly.
7223 (rtx_equal_for_cselib_1): Ditto.
7224 * expr.cc (is_aligning_offset): Ditto.
7225 (can_store_by_pieces): Ditto.
7226 (mostly_zeros_p): Ditto.
7227 (all_zeros_p): Ditto.
7228 (safe_from_p): Ditto.
7229 (is_aligning_offset): Ditto.
7230 (try_casesi): Ditto.
7231 (try_tablejump): Ditto.
7232 (store_constructor): Change "need_to_clear" and
7233 "const_bounds_p" variables to bool.
7234 * sbitmap.cc (bitmap_equal_p): Change return type from int to bool.
7235
7236 2023-06-29 Robin Dapp <rdapp@ventanamicro.com>
7237
7238 * tree-ssa-math-opts.cc (divmod_candidate_p): Use
7239 element_precision.
7240
7241 2023-06-29 Richard Biener <rguenther@suse.de>
7242
7243 PR tree-optimization/110460
7244 * tree-vect-stmts.cc (get_related_vectype_for_scalar_type):
7245 Only allow integral, pointer and scalar float type scalar_type.
7246
7247 2023-06-29 Lili Cui <lili.cui@intel.com>
7248
7249 PR tree-optimization/110148
7250 * tree-ssa-reassoc.cc (rewrite_expr_tree_parallel): Handle loop-carried
7251 ops in this function.
7252
7253 2023-06-29 Richard Biener <rguenther@suse.de>
7254
7255 PR middle-end/110452
7256 * expr.cc (store_constructor): Handle uniform boolean
7257 vectors with integer mode specially.
7258
7259 2023-06-29 Richard Biener <rguenther@suse.de>
7260
7261 PR middle-end/110461
7262 * match.pd (bitop (convert@2 @0) (convert?@3 @1)): Disable
7263 for VECTOR_TYPE_P.
7264
7265 2023-06-29 Richard Sandiford <richard.sandiford@arm.com>
7266
7267 * vec.h (gt_pch_nx): Add overloads for va_gc_atomic.
7268 (array_slice): Relax va_gc constructor to handle all vectors
7269 with a vl_embed layout.
7270
7271 2023-06-29 Pan Li <pan2.li@intel.com>
7272
7273 * config/riscv/riscv.cc (riscv_emit_mode_set): Add emit for FRM.
7274 (riscv_mode_needed): Likewise.
7275 (riscv_entity_mode_after): Likewise.
7276 (riscv_mode_after): Likewise.
7277 (riscv_mode_entry): Likewise.
7278 (riscv_mode_exit): Likewise.
7279 * config/riscv/riscv.h (NUM_MODES_FOR_MODE_SWITCHING): Add number
7280 for FRM.
7281 * config/riscv/riscv.md: Add FRM register.
7282 * config/riscv/vector-iterators.md: Add FRM type.
7283 * config/riscv/vector.md (frm_mode): Define new attr for FRM mode.
7284 (fsrm): Define new insn for fsrm instruction.
7285
7286 2023-06-29 Pan Li <pan2.li@intel.com>
7287
7288 * config/riscv/riscv-protos.h (enum floating_point_rounding_mode):
7289 Add macro for static frm min and max.
7290 * config/riscv/riscv-vector-builtins-bases.cc
7291 (class binop_frm): New class for floating-point with frm.
7292 (BASE): Add vfadd for frm.
7293 * config/riscv/riscv-vector-builtins-bases.h: Likewise.
7294 * config/riscv/riscv-vector-builtins-functions.def
7295 (vfadd_frm): Likewise.
7296 * config/riscv/riscv-vector-builtins-shapes.cc
7297 (struct alu_frm_def): New struct for alu with frm.
7298 (SHAPE): Add alu with frm.
7299 * config/riscv/riscv-vector-builtins-shapes.h: Likewise.
7300 * config/riscv/riscv-vector-builtins.cc
7301 (function_checker::report_out_of_range_and_not): New function
7302 for report out of range and not val.
7303 (function_checker::require_immediate_range_or): New function
7304 for checking in range or one val.
7305 * config/riscv/riscv-vector-builtins.h: Add function decl.
7306
7307 2023-06-29 Cui, Lili <lili.cui@intel.com>
7308
7309 * common/config/i386/cpuinfo.h (get_intel_cpu): Remove model value 0xa8
7310 from Rocketlake, move model value 0xbf from Alderlake to Raptorlake.
7311
7312 2023-06-28 Hans-Peter Nilsson <hp@axis.com>
7313
7314 PR target/110144
7315 * config/cris/cris.cc (cris_postdbr_cmpelim): Don't apply PATTERN
7316 to insn before validating it.
7317
7318 2023-06-28 Jan Hubicka <jh@suse.cz>
7319
7320 PR middle-end/110334
7321 * ipa-fnsummary.h (ipa_fn_summary): Add
7322 safe_to_inline_to_always_inline.
7323 * ipa-inline.cc (can_early_inline_edge_p): ICE
7324 if SSA is not built; do cycle checking for
7325 always_inline functions.
7326 (inline_always_inline_functions): Be recrusive;
7327 watch for cycles; do not updat overall summary.
7328 (early_inliner): Do not give up on always_inlines.
7329 * ipa-utils.cc (ipa_reverse_postorder): Do not skip
7330 always inlines.
7331
7332 2023-06-28 Uros Bizjak <ubizjak@gmail.com>
7333
7334 * output.h (leaf_function_p): Change return type from int to bool.
7335 (final_forward_branch_p): Ditto.
7336 (only_leaf_regs_used): Ditto.
7337 (maybe_assemble_visibility): Ditto.
7338 * varasm.h (supports_one_only): Ditto.
7339 * rtl.h (compute_alignments): Change return type from int to void.
7340 * final.cc (app_on): Change return type from int to bool.
7341 (compute_alignments): Change return type from int to void
7342 and adjust function body accordingly.
7343 (shorten_branches): Change "something_changed" variable
7344 type from int to bool.
7345 (leaf_function_p): Change return type from int to bool
7346 and adjust function body accordingly.
7347 (final_forward_branch_p): Ditto.
7348 (only_leaf_regs_used): Ditto.
7349 * varasm.cc (contains_pointers_p): Change return type from
7350 int to bool and adjust function body accordingly.
7351 (compare_constant): Ditto.
7352 (maybe_assemble_visibility): Ditto.
7353 (supports_one_only): Ditto.
7354
7355 2023-06-28 Manolis Tsamis <manolis.tsamis@vrull.eu>
7356
7357 PR debug/110308
7358 * regcprop.cc (maybe_mode_change): Check stack_pointer_rtx mode.
7359 (maybe_copy_reg_attrs): New function.
7360 (find_oldest_value_reg): Use maybe_copy_reg_attrs.
7361 (copyprop_hardreg_forward_1): Ditto.
7362
7363 2023-06-28 Richard Biener <rguenther@suse.de>
7364
7365 PR tree-optimization/110434
7366 * tree-nrv.cc (pass_nrv::execute): Remove CLOBBERs of
7367 VAR we replace with <retval>.
7368
7369 2023-06-28 Richard Biener <rguenther@suse.de>
7370
7371 PR tree-optimization/110451
7372 * tree-ssa-loop-im.cc (stmt_cost): [VEC_]COND_EXPR and
7373 tcc_comparison are expensive.
7374
7375 2023-06-28 Roger Sayle <roger@nextmovesoftware.com>
7376
7377 * config/i386/i386-expand.cc (ix86_expand_branch): Also use ptest
7378 for TImode comparisons on 32-bit architectures.
7379 * config/i386/i386.md (cbranch<mode>4): Change from SDWIM to
7380 SWIM1248x to exclude/avoid TImode being conditional on -m64.
7381 (cbranchti4): New define_expand for TImode on both TARGET_64BIT
7382 and/or with TARGET_SSE4_1.
7383 * config/i386/predicates.md (ix86_timode_comparison_operator):
7384 New predicate that depends upon TARGET_64BIT.
7385 (ix86_timode_comparison_operand): Likewise.
7386
7387 2023-06-28 Roger Sayle <roger@nextmovesoftware.com>
7388
7389 PR target/78794
7390 * config/i386/i386-features.cc (compute_convert_gain): Provide
7391 more accurate gains for conversion of scalar comparisons to
7392 PTEST.
7393
7394 2023-06-28 Richard Biener <rguenther@suse.de>
7395
7396 PR tree-optimization/110443
7397 * tree-vect-slp.cc (vect_build_slp_tree_1): Reject non-grouped
7398 gather loads.
7399
7400 2023-06-28 Haochen Gui <guihaoc@gcc.gnu.org>
7401
7402 * config/rs6000/rs6000.md (peephole2 for compare_and_move): New.
7403 (peephole2 for move_and_compare): New.
7404 (mode_iterator WORD): New. Set the mode to SI/DImode by
7405 TARGET_POWERPC64.
7406 (*mov<mode>_internal2): Change the mode iterator from P to WORD.
7407 (split pattern for compare_and_move): Likewise.
7408
7409 2023-06-28 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7410
7411 * config/riscv/autovec-opt.md (*double_widen_fma<mode>): New pattern.
7412 (*single_widen_fma<mode>): Ditto.
7413
7414 2023-06-28 Haochen Gui <guihaoc@gcc.gnu.org>
7415
7416 PR target/104124
7417 * config/rs6000/altivec.md (*altivec_vupkhs<VU_char>_direct): Rename
7418 to...
7419 (altivec_vupkhs<VU_char>_direct): ...this.
7420 * config/rs6000/predicates.md (vspltisw_vupkhsw_constant_split): New
7421 predicate to test if a constant can be loaded with vspltisw and
7422 vupkhsw.
7423 (easy_vector_constant): Call vspltisw_vupkhsw_constant_p to Check if
7424 a vector constant can be synthesized with a vspltisw and a vupkhsw.
7425 * config/rs6000/rs6000-protos.h (vspltisw_vupkhsw_constant_p):
7426 Declare.
7427 * config/rs6000/rs6000.cc (vspltisw_vupkhsw_constant_p): New
7428 function to return true if OP mode is V2DI and can be synthesized
7429 with vupkhsw and vspltisw.
7430 * config/rs6000/vsx.md (*vspltisw_v2di_split): New insn to load up
7431 constants with vspltisw and vupkhsw.
7432
7433 2023-06-28 Jan Hubicka <jh@suse.cz>
7434
7435 PR tree-optimization/110377
7436 * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Pass statement to
7437 the ranger query.
7438 (ipa_analyze_node): Enable ranger.
7439
7440 2023-06-28 Richard Biener <rguenther@suse.de>
7441
7442 * tree.h (TYPE_PRECISION): Check for non-VECTOR_TYPE.
7443 (TYPE_PRECISION_RAW): Provide raw access to the precision
7444 field.
7445 * tree.cc (verify_type_variant): Compare TYPE_PRECISION_RAW.
7446 (gimple_canonical_types_compatible_p): Likewise.
7447 * tree-streamer-out.cc (pack_ts_type_common_value_fields):
7448 Stream TYPE_PRECISION_RAW.
7449 * tree-streamer-in.cc (unpack_ts_type_common_value_fields):
7450 Likewise.
7451 * lto-streamer-out.cc (hash_tree): Hash TYPE_PRECISION_RAW.
7452
7453 2023-06-28 Alexandre Oliva <oliva@adacore.com>
7454
7455 * doc/extend.texi (zero-call-used-regs): Document leafy and
7456 variants thereof.
7457 * flag-types.h (zero_regs_flags): Add LEAFY_MODE, as well as
7458 LEAFY and variants.
7459 * function.cc (gen_call_ued_regs_seq): Set only_used for leaf
7460 functions in leafy mode.
7461 * opts.cc (zero_call_used_regs_opts): Add leafy and variants.
7462
7463 2023-06-28 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7464
7465 * config/riscv/riscv-vector-builtins-bases.cc: Adapt expand.
7466 * config/riscv/vector.md (@pred_single_widen_<plus_minus:optab><mode>):
7467 Remove.
7468 (@pred_single_widen_add<mode>): New pattern.
7469 (@pred_single_widen_sub<mode>): New pattern.
7470
7471 2023-06-28 liuhongt <hongtao.liu@intel.com>
7472
7473 * config/i386/i386.cc (ix86_invalid_conversion): New function.
7474 (TARGET_INVALID_CONVERSION): Define as
7475 ix86_invalid_conversion.
7476
7477 2023-06-27 Robin Dapp <rdapp@ventanamicro.com>
7478
7479 * config/riscv/autovec.md (<optab><vnconvert><mode>2): New
7480 expander.
7481 (<float_cvt><vnconvert><mode>2): Ditto.
7482 (<optab><mode><vnconvert>2): Ditto.
7483 (<float_cvt><mode><vnconvert>2): Ditto.
7484 * config/riscv/vector-iterators.md: Add vnconvert.
7485
7486 2023-06-27 Robin Dapp <rdapp@ventanamicro.com>
7487
7488 * config/riscv/autovec.md (extend<v_double_trunc><mode>2): New
7489 expander.
7490 (extend<v_quad_trunc><mode>2): Ditto.
7491 (trunc<mode><v_double_trunc>2): Ditto.
7492 (trunc<mode><v_quad_trunc>2): Ditto.
7493 * config/riscv/vector-iterators.md: Add VQEXTF and HF to
7494 V_QUAD_TRUNC and v_quad_trunc.
7495
7496 2023-06-27 Robin Dapp <rdapp@ventanamicro.com>
7497
7498 * config/riscv/autovec.md (<float_cvt><vconvert><mode>2): New
7499 expander.
7500
7501 2023-06-27 Robin Dapp <rdapp@ventanamicro.com>
7502
7503 * config/riscv/autovec.md (copysign<mode>3): Add expander.
7504 (xorsign<mode>3): Ditto.
7505 * config/riscv/riscv-vector-builtins-bases.cc (class vfsgnjn):
7506 New class.
7507 * config/riscv/vector-iterators.md (copysign): Remove ncopysign.
7508 (xorsign): Ditto.
7509 (n): Ditto.
7510 (x): Ditto.
7511 * config/riscv/vector.md (@pred_ncopysign<mode>): Split off.
7512 (@pred_ncopysign<mode>_scalar): Ditto.
7513
7514 2023-06-27 Robin Dapp <rdapp@ventanamicro.com>
7515
7516 * config/riscv/autovec.md: VF_AUTO -> VF.
7517 * config/riscv/vector-iterators.md: Introduce VF_ZVFHMIN,
7518 VWEXTF_ZVFHMIN and use TARGET_ZVFH in VWCONVERTI, VHF and
7519 VHF_LMUL1.
7520 * config/riscv/vector.md: Use new iterators.
7521
7522 2023-06-27 Robin Dapp <rdapp@ventanamicro.com>
7523
7524 * match.pd: Use element_mode and check if target supports
7525 operation with new type.
7526
7527 2023-06-27 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
7528
7529 * config/aarch64/aarch64-sve-builtins-base.cc
7530 (svdupq_impl::fold_nonconst_dupq): New method.
7531 (svdupq_impl::fold): Call fold_nonconst_dupq.
7532
7533 2023-06-27 Andrew Pinski <apinski@marvell.com>
7534
7535 PR middle-end/110420
7536 PR middle-end/103979
7537 PR middle-end/98619
7538 * gimplify.cc (gimplify_asm_expr): Mark asm with labels as volatile.
7539
7540 2023-06-27 Aldy Hernandez <aldyh@redhat.com>
7541
7542 * ipa-cp.cc (decide_whether_version_node): Adjust comment.
7543 * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Adjust
7544 for Value_Range.
7545 (set_switch_stmt_execution_predicate): Same.
7546 * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Same.
7547
7548 2023-06-27 Aldy Hernandez <aldyh@redhat.com>
7549
7550 * ipa-prop.cc (struct ipa_vr_ggc_hash_traits): Adjust for use with
7551 ipa_vr instead of value_range.
7552 (gt_pch_nx): Same.
7553 (gt_ggc_mx): Same.
7554 (ipa_get_value_range): Same.
7555 * value-range.cc (gt_pch_nx): Move to ipa-prop.cc and adjust for
7556 ipa_vr.
7557 (gt_ggc_mx): Same.
7558
7559 2023-06-27 Aldy Hernandez <aldyh@redhat.com>
7560
7561 * ipa-cp.cc (ipa_vr_operation_and_type_effects): New.
7562 * ipa-prop.cc (ipa_get_value_range): Adjust for ipa_vr.
7563 (ipa_set_jfunc_vr): Take a range.
7564 (ipa_compute_jump_functions_for_edge): Pass range to
7565 ipa_set_jfunc_vr.
7566 (ipa_write_jump_function): Call streamer write helper.
7567 (ipa_read_jump_function): Call streamer read helper.
7568 * ipa-prop.h (class ipa_vr): Change m_vr to an ipa_vr.
7569
7570 2023-06-27 Richard Sandiford <richard.sandiford@arm.com>
7571
7572 * gengtype-parse.cc (consume_until_comma_or_eos): Parse "= { ... }"
7573 as a probable initializer rather than a probable complete statement.
7574
7575 2023-06-27 Richard Biener <rguenther@suse.de>
7576
7577 PR tree-optimization/96208
7578 * tree-vect-slp.cc (vect_build_slp_tree_1): Allow
7579 a non-grouped load if it is the same for all lanes.
7580 (vect_build_slp_tree_2): Handle not grouped loads.
7581 (vect_optimize_slp_pass::remove_redundant_permutations):
7582 Likewise.
7583 (vect_transform_slp_perm_load_1): Likewise.
7584 * tree-vect-stmts.cc (vect_model_load_cost): Likewise.
7585 (get_group_load_store_type): Likewise. Handle
7586 invariant accesses.
7587 (vectorizable_load): Likewise.
7588
7589 2023-06-27 liuhongt <hongtao.liu@intel.com>
7590
7591 PR rtl-optimization/110237
7592 * config/i386/sse.md (<avx512>_store<mode>_mask): Refine with
7593 UNSPEC_MASKMOV.
7594 (maskstore<mode><avx512fmaskmodelower): Ditto.
7595 (*<avx512>_store<mode>_mask): New define_insn, it's renamed
7596 from original <avx512>_store<mode>_mask.
7597
7598 2023-06-27 liuhongt <hongtao.liu@intel.com>
7599
7600 * config/i386/i386-features.cc (pass_insert_vzeroupper:gate):
7601 Move flag_expensive_optimizations && !optimize_size to ..
7602 * config/i386/i386-options.cc (ix86_option_override_internal):
7603 .. this, it makes -mvzeroupper independent of optimization
7604 level, but still keeps the behavior of architecture
7605 tuning(emit_vzeroupper) unchanged.
7606
7607 2023-06-27 liuhongt <hongtao.liu@intel.com>
7608
7609 PR target/82735
7610 * config/i386/i386.cc (ix86_avx_u127_mode_needed): Don't emit
7611 vzeroupper for vzeroupper call_insn.
7612
7613 2023-06-27 Andrew Pinski <apinski@marvell.com>
7614
7615 * doc/extend.texi (__builtin_alloca_with_align_and_max): Fix
7616 defbuiltin usage.
7617
7618 2023-06-27 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7619
7620 * config/riscv/riscv-v.cc (expand_const_vector): Fix stepped vector
7621 with base != 0.
7622
7623 2023-06-26 Andrew Pinski <apinski@marvell.com>
7624
7625 * doc/extend.texi (access attribute): Add
7626 cindex for it.
7627 (interrupt/interrupt_handler attribute):
7628 Likewise.
7629
7630 2023-06-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
7631
7632 * config/aarch64/aarch64-simd.md (aarch64_sqrshrun_n<mode>_insn):
7633 Use <DWI> instead of <V2XWIDE>.
7634 (aarch64_sqrshrun_n<mode>): Likewise.
7635
7636 2023-06-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
7637
7638 * config/aarch64/aarch64-protos.h (aarch64_const_vec_rsra_rnd_imm_p):
7639 Rename to...
7640 (aarch64_rnd_imm_p): ... This.
7641 * config/aarch64/predicates.md (aarch64_simd_rsra_rnd_imm_vec):
7642 Rename to...
7643 (aarch64_int_rnd_operand): ... This.
7644 (aarch64_simd_rshrn_imm_vec): Delete.
7645 * config/aarch64/aarch64-simd.md (aarch64_<sra_op>rsra_n<mode>_insn):
7646 Adjust for the above.
7647 (aarch64_<sra_op>rshr_n<mode><vczle><vczbe>_insn): Likewise.
7648 (*aarch64_<shrn_op>rshrn_n<mode>_insn): Likewise.
7649 (*aarch64_sqrshrun_n<mode>_insn<vczle><vczbe>): Likewise.
7650 (aarch64_sqrshrun_n<mode>_insn): Likewise.
7651 (aarch64_<shrn_op>rshrn2_n<mode>_insn_le): Likewise.
7652 (aarch64_<shrn_op>rshrn2_n<mode>_insn_be): Likewise.
7653 (aarch64_sqrshrun2_n<mode>_insn_le): Likewise.
7654 (aarch64_sqrshrun2_n<mode>_insn_be): Likewise.
7655 * config/aarch64/aarch64.cc (aarch64_const_vec_rsra_rnd_imm_p):
7656 Rename to...
7657 (aarch64_rnd_imm_p): ... This.
7658
7659 2023-06-26 Andreas Krebbel <krebbel@linux.ibm.com>
7660
7661 * config/s390/s390.cc (s390_encode_section_info): Set
7662 SYMBOL_FLAG_SET_NOTALIGN2 only if the symbol has explicitely been
7663 misaligned.
7664
7665 2023-06-26 Jan Hubicka <jh@suse.cz>
7666
7667 PR tree-optimization/109849
7668 * tree-ssa-dce.cc (make_forwarders_with_degenerate_phis): Fix profile
7669 count of newly constructed forwarder block.
7670
7671 2023-06-26 Andrew Carlotti <andrew.carlotti@arm.com>
7672
7673 * doc/optinfo.texi: Fix "steam" -> "stream".
7674
7675 2023-06-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
7676
7677 * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Add LEN_MASK_STORE and
7678 fix LEN_STORE.
7679 (dse_optimize_stmt): Add LEN_MASK_STORE.
7680
7681 2023-06-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
7682
7683 * gimple-fold.cc (gimple_fold_partial_load_store_mem_ref): Fix gimple
7684 fold of LOAD/STORE with length.
7685
7686 2023-06-26 Andrew MacLeod <amacleod@redhat.com>
7687
7688 * gimple-range-gori.cc (compute_operand1_and_operand2_range):
7689 Check for interdependence between operands 1 and 2.
7690
7691 2023-06-26 Richard Sandiford <richard.sandiford@arm.com>
7692
7693 * tree-vect-stmts.cc (vectorizable_conversion): Take multi_step_cvt
7694 into account when costing non-widening/truncating conversions.
7695
7696 2023-06-26 Richard Biener <rguenther@suse.de>
7697
7698 PR tree-optimization/110381
7699 * tree-vect-slp.cc (vect_optimize_slp_pass::start_choosing_layouts):
7700 Materialize permutes before fold-left reductions.
7701
7702 2023-06-26 Pan Li <pan2.li@intel.com>
7703
7704 * config/riscv/riscv-vector-builtins-bases.h: Remove duplicated decl.
7705
7706 2023-06-26 Richard Biener <rguenther@suse.de>
7707
7708 * varasm.cc (initializer_constant_valid_p_1): Also
7709 constrain the type of value to be scalar integral
7710 before dispatching to narrowing_initializer_constant_valid_p.
7711
7712 2023-06-26 Richard Biener <rguenther@suse.de>
7713
7714 * tree-ssa-scopedtables.cc (hashable_expr_equal_p):
7715 Use element_precision.
7716
7717 2023-06-26 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7718
7719 * config/riscv/autovec.md (vcond<V:mode><VI:mode>): Remove redundant
7720 vcond patterns.
7721 (vcondu<V:mode><VI:mode>): Ditto.
7722 * config/riscv/riscv-protos.h (expand_vcond): Ditto.
7723 * config/riscv/riscv-v.cc (expand_vcond): Ditto.
7724
7725 2023-06-26 Richard Biener <rguenther@suse.de>
7726
7727 PR tree-optimization/110392
7728 * gimple-predicate-analysis.cc (uninit_analysis::is_use_guarded):
7729 Do early exits on true/false predicate only after normalization.
7730
7731 2023-06-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
7732
7733 * tree-ssa-sccvn.cc (vn_reference_lookup_3): Change name "len" into
7734 "length".
7735
7736 2023-06-26 Roger Sayle <roger@nextmovesoftware.com>
7737
7738 * config/i386/i386.md (peephole2): Simplify zeroing a register
7739 followed by an IOR, XOR or PLUS operation on it, into a move.
7740 (*ashl<dwi>3_doubleword_highpart): New define_insn_and_split to
7741 eliminate (and hide from reload) unnecessary word to doubleword
7742 extensions that are followed by left shifts by sufficiently large,
7743 but valid, bit counts.
7744
7745 2023-06-26 liuhongt <hongtao.liu@intel.com>
7746
7747 PR tree-optimization/110371
7748 PR tree-optimization/110018
7749 * tree-vect-stmts.cc (vectorizable_conversion): Use cvt_op to
7750 save intermediate type operand instead of "subtle" vec_dest
7751 for case NONE.
7752
7753 2023-06-26 liuhongt <hongtao.liu@intel.com>
7754
7755 PR tree-optimization/110371
7756 PR tree-optimization/110018
7757 * tree-vect-stmts.cc (vectorizable_conversion): Don't use
7758 intermiediate type for FIX_TRUNC_EXPR when ftrapping-math.
7759
7760 2023-06-26 Hongyu Wang <hongyu.wang@intel.com>
7761
7762 * config/i386/i386-options.cc (ix86_valid_target_attribute_tree):
7763 Override tune_string with arch_string if tune_string is not
7764 explicitly specified.
7765
7766 2023-06-25 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7767
7768 * config/riscv/riscv-vsetvl.cc (vector_insn_info::parse_insn): Ehance
7769 AVL propagation.
7770 * config/riscv/riscv-vsetvl.h: New function.
7771
7772 2023-06-25 Li Xu <xuli1@eswincomputing.com>
7773
7774 * config/riscv/riscv-vector-builtins-bases.cc: change emit_insn to
7775 emit_move_insn
7776
7777 2023-06-25 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7778
7779 * config/riscv/autovec.md (len_load_<mode>): Remove.
7780 (len_maskload<mode><vm>): Remove.
7781 (len_store_<mode>): New pattern.
7782 (len_maskstore<mode><vm>): New pattern.
7783 * config/riscv/predicates.md (autovec_length_operand): New predicate.
7784 * config/riscv/riscv-protos.h (enum insn_type): New enum.
7785 (expand_load_store): New function.
7786 * config/riscv/riscv-v.cc (emit_vlmax_masked_insn): Ditto.
7787 (emit_nonvlmax_masked_insn): Ditto.
7788 (expand_load_store): Ditto.
7789 * config/riscv/riscv-vector-builtins.cc
7790 (function_expander::use_contiguous_store_insn): Add avl_type operand
7791 into pred_store.
7792 * config/riscv/vector.md: Ditto.
7793
7794 2023-06-25 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
7795
7796 * internal-fn.cc (expand_partial_store_optab_fn): Fix bug of BIAS
7797 argument index.
7798
7799 2023-06-25 Pan Li <pan2.li@intel.com>
7800
7801 * config/riscv/vector.md: Revert.
7802
7803 2023-06-25 Pan Li <pan2.li@intel.com>
7804
7805 * config/riscv/genrvv-type-indexer.cc (valid_type): Revert changes.
7806 * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): Ditto.
7807 (ADJUST_ALIGNMENT): Ditto.
7808 (RVV_TUPLE_PARTIAL_MODES): Ditto.
7809 (ADJUST_NUNITS): Ditto.
7810 * config/riscv/riscv-vector-builtins-types.def (vfloat16mf4x2_t): Ditto.
7811 (vfloat16mf4x3_t): Ditto.
7812 (vfloat16mf4x4_t): Ditto.
7813 (vfloat16mf4x5_t): Ditto.
7814 (vfloat16mf4x6_t): Ditto.
7815 (vfloat16mf4x7_t): Ditto.
7816 (vfloat16mf4x8_t): Ditto.
7817 (vfloat16mf2x2_t): Ditto.
7818 (vfloat16mf2x3_t): Ditto.
7819 (vfloat16mf2x4_t): Ditto.
7820 (vfloat16mf2x5_t): Ditto.
7821 (vfloat16mf2x6_t): Ditto.
7822 (vfloat16mf2x7_t): Ditto.
7823 (vfloat16mf2x8_t): Ditto.
7824 (vfloat16m1x2_t): Ditto.
7825 (vfloat16m1x3_t): Ditto.
7826 (vfloat16m1x4_t): Ditto.
7827 (vfloat16m1x5_t): Ditto.
7828 (vfloat16m1x6_t): Ditto.
7829 (vfloat16m1x7_t): Ditto.
7830 (vfloat16m1x8_t): Ditto.
7831 (vfloat16m2x2_t): Ditto.
7832 (vfloat16m2x3_t): Diito.
7833 (vfloat16m2x4_t): Diito.
7834 (vfloat16m4x2_t): Diito.
7835 * config/riscv/riscv-vector-builtins.def (vfloat16mf4x2_t): Ditto.
7836 (vfloat16mf4x3_t): Ditto.
7837 (vfloat16mf4x4_t): Ditto.
7838 (vfloat16mf4x5_t): Ditto.
7839 (vfloat16mf4x6_t): Ditto.
7840 (vfloat16mf4x7_t): Ditto.
7841 (vfloat16mf4x8_t): Ditto.
7842 (vfloat16mf2x2_t): Ditto.
7843 (vfloat16mf2x3_t): Ditto.
7844 (vfloat16mf2x4_t): Ditto.
7845 (vfloat16mf2x5_t): Ditto.
7846 (vfloat16mf2x6_t): Ditto.
7847 (vfloat16mf2x7_t): Ditto.
7848 (vfloat16mf2x8_t): Ditto.
7849 (vfloat16m1x2_t): Ditto.
7850 (vfloat16m1x3_t): Ditto.
7851 (vfloat16m1x4_t): Ditto.
7852 (vfloat16m1x5_t): Ditto.
7853 (vfloat16m1x6_t): Ditto.
7854 (vfloat16m1x7_t): Ditto.
7855 (vfloat16m1x8_t): Ditto.
7856 (vfloat16m2x2_t): Ditto.
7857 (vfloat16m2x3_t): Ditto.
7858 (vfloat16m2x4_t): Ditto.
7859 (vfloat16m4x2_t): Ditto.
7860 * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): Ditto.
7861 * config/riscv/riscv.md: Ditto.
7862 * config/riscv/vector-iterators.md: Ditto.
7863
7864 2023-06-25 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
7865
7866 * gimple-fold.cc (arith_overflowed_p): Apply LEN_MASK_{LOAD,STORE}.
7867 (gimple_fold_partial_load_store_mem_ref): Ditto.
7868 (gimple_fold_partial_store): Ditto.
7869 (gimple_fold_call): Ditto.
7870
7871 2023-06-25 liuhongt <hongtao.liu@intel.com>
7872
7873 PR target/110309
7874 * config/i386/sse.md (maskload<mode><avx512fmaskmodelower>):
7875 Refine pattern with UNSPEC_MASKLOAD.
7876 (maskload<mode><avx512fmaskmodelower>): Ditto.
7877 (*<avx512>_load<mode>_mask): Extend mode iterator to
7878 VI12HFBF_AVX512VL.
7879 (*<avx512>_load<mode>): Ditto.
7880
7881 2023-06-25 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
7882
7883 * tree-ssa-alias.cc (call_may_clobber_ref_p_1): Add LEN_MASK_STORE.
7884
7885 2023-06-25 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
7886
7887 * tree-ssa-alias.cc (ref_maybe_used_by_call_p_1): Apply
7888 LEN_MASK_{LOAD,STORE}
7889
7890 2023-06-25 yulong <shiyulong@iscas.ac.cn>
7891
7892 * config/riscv/vector.md: Add float16 attr at sew、vlmul and ratio.
7893
7894 2023-06-24 Roger Sayle <roger@nextmovesoftware.com>
7895
7896 * config/i386/i386.md (*<code>qi_ext<mode>_3): New define_insn.
7897
7898 2023-06-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7899
7900 * config/riscv/autovec.md (*fma<mode>): set clobber to Pmode in expand stage.
7901 (*fma<VI:mode><P:mode>): Ditto.
7902 (*fnma<mode>): Ditto.
7903 (*fnma<VI:mode><P:mode>): Ditto.
7904
7905 2023-06-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7906
7907 * config/riscv/autovec.md (fma<mode>4): New pattern.
7908 (*fma<mode>): Ditto.
7909 (fnma<mode>4): Ditto.
7910 (*fnma<mode>): Ditto.
7911 (fms<mode>4): Ditto.
7912 (*fms<mode>): Ditto.
7913 (fnms<mode>4): Ditto.
7914 (*fnms<mode>): Ditto.
7915 * config/riscv/riscv-protos.h (emit_vlmax_fp_ternary_insn):
7916 New function.
7917 * config/riscv/riscv-v.cc (emit_vlmax_fp_ternary_insn): Ditto.
7918 * config/riscv/vector.md: Fix attribute bug.
7919
7920 2023-06-24 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
7921
7922 * tree-ssa-loop-ivopts.cc (get_mem_type_for_internal_fn):
7923 Apply LEN_MASK_{LOAD,STORE}.
7924
7925 2023-06-24 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
7926
7927 * tree-ssa-loop-ivopts.cc (get_alias_ptr_type_for_ptr_address):
7928 Add LEN_MASK_{LOAD,STORE}.
7929
7930 2023-06-24 David Malcolm <dmalcolm@redhat.com>
7931
7932 * diagnostic-format-sarif.cc: Add #define INCLUDE_VECTOR.
7933 * diagnostic.cc: Likewise.
7934 * text-art/box-drawing.cc: Likewise.
7935 * text-art/canvas.cc: Likewise.
7936 * text-art/ruler.cc: Likewise.
7937 * text-art/selftests.cc: Likewise.
7938 * text-art/selftests.h (text_art::canvas): New forward decl.
7939 * text-art/style.cc: Add #define INCLUDE_VECTOR.
7940 * text-art/styled-string.cc: Likewise.
7941 * text-art/table.cc: Likewise.
7942 * text-art/table.h: Remove #include <vector>.
7943 * text-art/theme.cc: Add #define INCLUDE_VECTOR.
7944 * text-art/types.h: Check that INCLUDE_VECTOR is defined.
7945 Remove #include of <vector> and <string>.
7946 * text-art/widget.cc: Add #define INCLUDE_VECTOR.
7947 * text-art/widget.h: Remove #include <vector>.
7948
7949 2023-06-24 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
7950
7951 * internal-fn.cc (expand_partial_store_optab_fn): Adapt for LEN_MASK_STORE.
7952 (internal_load_fn_p): Add LEN_MASK_LOAD.
7953 (internal_store_fn_p): Add LEN_MASK_STORE.
7954 (internal_fn_mask_index): Add LEN_MASK_{LOAD,STORE}.
7955 (internal_fn_stored_value_index): Add LEN_MASK_STORE.
7956 (internal_len_load_store_bias): Add LEN_MASK_{LOAD,STORE}.
7957 * optabs-tree.cc (can_vec_mask_load_store_p): Adapt for LEN_MASK_{LOAD,STORE}.
7958 (get_len_load_store_mode): Ditto.
7959 * optabs-tree.h (can_vec_mask_load_store_p): Ditto.
7960 (get_len_load_store_mode): Ditto.
7961 * tree-vect-stmts.cc (check_load_store_for_partial_vectors): Ditto.
7962 (get_all_ones_mask): New function.
7963 (vectorizable_store): Apply LEN_MASK_{LOAD,STORE} into vectorizer.
7964 (vectorizable_load): Ditto.
7965
7966 2023-06-23 Marek Polacek <polacek@redhat.com>
7967
7968 * doc/cpp.texi (__cplusplus): Document value for -std=c++26 and
7969 -std=gnu++26. Document that for C++23, its value is 202302L.
7970 * doc/invoke.texi: Document -std=c++26 and -std=gnu++26.
7971 * dwarf2out.cc (highest_c_language): Handle GNU C++26.
7972 (gen_compile_unit_die): Likewise.
7973
7974 2023-06-23 Jan Hubicka <jh@suse.cz>
7975
7976 * tree-ssa-phiprop.cc (propagate_with_phi): Compute post dominators on
7977 demand.
7978 (pass_phiprop::execute): Do not compute it here; return
7979 update_ssa_only_virtuals if something changed.
7980 (pass_data_phiprop): Remove TODO_update_ssa from todos.
7981
7982 2023-06-23 Michael Meissner <meissner@linux.ibm.com>
7983 Aaron Sawdey <acsawdey@linux.ibm.com>
7984
7985 PR target/105325
7986 * config/rs6000/genfusion.pl (gen_ld_cmpi_p10_one): Fix problems that
7987 allowed prefixed lwa to be generated.
7988 * config/rs6000/fusion.md: Regenerate.
7989 * config/rs6000/predicates.md (ds_form_mem_operand): Delete.
7990 * config/rs6000/rs6000.md (prefixed attribute): Add support for load
7991 plus compare immediate fused insns.
7992 (maybe_prefixed): Likewise.
7993
7994 2023-06-23 Roger Sayle <roger@nextmovesoftware.com>
7995
7996 * simplify-rtx.cc (simplify_subreg): Optimize lowpart SUBREGs
7997 of ASHIFT to const0_rtx with sufficiently large shift count.
7998 Optimize highpart SUBREGs of ASHIFT as the shift operand when
7999 the shift count is the correct offset. Optimize SUBREGs of
8000 multi-word logic operations if the SUBREGs of both operands
8001 can be simplified.
8002
8003 2023-06-23 Richard Biener <rguenther@suse.de>
8004
8005 * varasm.cc (initializer_constant_valid_p_1): Only
8006 allow conversions between scalar floating point types.
8007
8008 2023-06-23 Richard Biener <rguenther@suse.de>
8009
8010 * tree-vect-stmts.cc (vectorizable_assignment):
8011 Properly handle non-integral operands when analyzing
8012 conversions.
8013
8014 2023-06-23 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
8015
8016 PR tree-optimization/110280
8017 * match.pd (vec_perm_expr(v, v, mask) -> v): Explicitly build vector
8018 using build_vector_from_val with the element of input operand, and
8019 mask's type if operand and mask's types don't match.
8020
8021 2023-06-23 Richard Biener <rguenther@suse.de>
8022
8023 * fold-const.cc (tree_simple_nonnegative_warnv_p): Guard
8024 the truth_value_p case with !VECTOR_TYPE_P.
8025
8026 2023-06-23 Richard Biener <rguenther@suse.de>
8027
8028 * tree-vect-patterns.cc (vect_look_through_possible_promotion):
8029 Exit early when the type isn't scalar integral.
8030
8031 2023-06-23 Richard Biener <rguenther@suse.de>
8032
8033 * match.pd ((outertype)((innertype0)a+(innertype1)b)
8034 -> ((newtype)a+(newtype)b)): Use element_precision
8035 where appropriate.
8036
8037 2023-06-23 Richard Biener <rguenther@suse.de>
8038
8039 * fold-const.cc (fold_binary_loc): Use element_precision
8040 when trying (double)float1 CMP (double)float2 to
8041 float1 CMP float2 simplification.
8042 * match.pd: Likewise.
8043
8044 2023-06-23 Richard Biener <rguenther@suse.de>
8045
8046 * tree-vect-stmts.cc (vectorizable_load): Avoid useless
8047 copies of VMAT_INVARIANT vectorized stmts, fix SLP support.
8048
8049 2023-06-23 Richard Biener <rguenther@suse.de>
8050
8051 * tree-vect-stmts.cc (vector_vector_composition_type):
8052 Handle composition of a vector from a number of elements that
8053 happens to match its number of lanes.
8054
8055 2023-06-22 Marek Polacek <polacek@redhat.com>
8056
8057 * configure.ac (--enable-host-bind-now): New check. Add
8058 -Wl,-z,now to LD_PICFLAG if --enable-host-bind-now.
8059 * configure: Regenerate.
8060 * doc/install.texi: Document --enable-host-bind-now.
8061
8062 2023-06-22 Di Zhao OS <dizhao@os.amperecomputing.com>
8063
8064 * config/aarch64/aarch64.cc: Change fma_reassoc_width for ampere1.
8065
8066 2023-06-22 Richard Biener <rguenther@suse.de>
8067
8068 PR tree-optimization/110332
8069 * tree-ssa-phiprop.cc (propagate_with_phi): Always
8070 check aliasing with edge inserted loads.
8071
8072 2023-06-22 Roger Sayle <roger@nextmovesoftware.com>
8073 Uros Bizjak <ubizjak@gmail.com>
8074
8075 * config/i386/i386-expand.cc (ix86_expand_sse_ptest): Recognize
8076 expansion of ptestc with equal operands as producing const1_rtx.
8077 * config/i386/i386.cc (ix86_rtx_costs): Provide accurate cost
8078 estimates of UNSPEC_PTEST, where the ptest performs the PAND
8079 or PAND of its operands.
8080 * config/i386/sse.md (define_split): Transform CCCmode UNSPEC_PTEST
8081 of reg_equal_p operands into an x86_stc instruction.
8082 (define_split): Split pandn/ptestz/set{n?}e into ptestc/set{n?}c.
8083 (define_split): Similar to above for strict_low_part destinations.
8084 (define_split): Split pandn/ptestz/j{n?}e into ptestc/j{n?}c.
8085
8086 2023-06-22 David Malcolm <dmalcolm@redhat.com>
8087
8088 PR analyzer/106626
8089 * Makefile.in (ANALYZER_OBJS): Add analyzer/access-diagram.o.
8090 * doc/invoke.texi (Wanalyzer-out-of-bounds): Add description of
8091 text art.
8092 (fanalyzer-debug-text-art): New.
8093
8094 2023-06-22 David Malcolm <dmalcolm@redhat.com>
8095
8096 * Makefile.in (OBJS-libcommon): Add text-art/box-drawing.o,
8097 text-art/canvas.o, text-art/ruler.o, text-art/selftests.o,
8098 text-art/style.o, text-art/styled-string.o, text-art/table.o,
8099 text-art/theme.o, and text-art/widget.o.
8100 * color-macros.h (COLOR_FG_BRIGHT_BLACK): New.
8101 (COLOR_FG_BRIGHT_RED): New.
8102 (COLOR_FG_BRIGHT_GREEN): New.
8103 (COLOR_FG_BRIGHT_YELLOW): New.
8104 (COLOR_FG_BRIGHT_BLUE): New.
8105 (COLOR_FG_BRIGHT_MAGENTA): New.
8106 (COLOR_FG_BRIGHT_CYAN): New.
8107 (COLOR_FG_BRIGHT_WHITE): New.
8108 (COLOR_BG_BRIGHT_BLACK): New.
8109 (COLOR_BG_BRIGHT_RED): New.
8110 (COLOR_BG_BRIGHT_GREEN): New.
8111 (COLOR_BG_BRIGHT_YELLOW): New.
8112 (COLOR_BG_BRIGHT_BLUE): New.
8113 (COLOR_BG_BRIGHT_MAGENTA): New.
8114 (COLOR_BG_BRIGHT_CYAN): New.
8115 (COLOR_BG_BRIGHT_WHITE): New.
8116 * common.opt (fdiagnostics-text-art-charset=): New option.
8117 (diagnostic-text-art.h): New SourceInclude.
8118 (diagnostic_text_art_charset) New Enum and EnumValues.
8119 * configure: Regenerate.
8120 * configure.ac (gccdepdir): Add text-art to loop.
8121 * diagnostic-diagram.h: New file.
8122 * diagnostic-format-json.cc (json_emit_diagram): New.
8123 (diagnostic_output_format_init_json): Wire it up to
8124 context->m_diagrams.m_emission_cb.
8125 * diagnostic-format-sarif.cc: Include "diagnostic-diagram.h" and
8126 "text-art/canvas.h".
8127 (sarif_result::on_nested_diagnostic): Move code to...
8128 (sarif_result::add_related_location): ...this new function.
8129 (sarif_result::on_diagram): New.
8130 (sarif_builder::emit_diagram): New.
8131 (sarif_builder::make_message_object_for_diagram): New.
8132 (sarif_emit_diagram): New.
8133 (diagnostic_output_format_init_sarif): Set
8134 context->m_diagrams.m_emission_cb to sarif_emit_diagram.
8135 * diagnostic-text-art.h: New file.
8136 * diagnostic.cc: Include "diagnostic-text-art.h",
8137 "diagnostic-diagram.h", and "text-art/theme.h".
8138 (diagnostic_initialize): Initialize context->m_diagrams and
8139 call diagnostics_text_art_charset_init.
8140 (diagnostic_finish): Clean up context->m_diagrams.m_theme.
8141 (diagnostic_emit_diagram): New.
8142 (diagnostics_text_art_charset_init): New.
8143 * diagnostic.h (text_art::theme): New forward decl.
8144 (class diagnostic_diagram): Likewise.
8145 (diagnostic_context::m_diagrams): New field.
8146 (diagnostic_emit_diagram): New decl.
8147 * doc/invoke.texi (Diagnostic Message Formatting Options): Add
8148 -fdiagnostics-text-art-charset=.
8149 (-fdiagnostics-plain-output): Add
8150 -fdiagnostics-text-art-charset=none.
8151 * gcc.cc: Include "diagnostic-text-art.h".
8152 (driver_handle_option): Handle OPT_fdiagnostics_text_art_charset_.
8153 * opts-common.cc (decode_cmdline_options_to_array): Add
8154 "-fdiagnostics-text-art-charset=none" to expanded_args for
8155 -fdiagnostics-plain-output.
8156 * opts.cc: Include "diagnostic-text-art.h".
8157 (common_handle_option): Handle OPT_fdiagnostics_text_art_charset_.
8158 * pretty-print.cc (pp_unicode_character): New.
8159 * pretty-print.h (pp_unicode_character): New decl.
8160 * selftest-run-tests.cc: Include "text-art/selftests.h".
8161 (selftest::run_tests): Call text_art_tests.
8162 * text-art/box-drawing-chars.inc: New file, generated by
8163 contrib/unicode/gen-box-drawing-chars.py.
8164 * text-art/box-drawing.cc: New file.
8165 * text-art/box-drawing.h: New file.
8166 * text-art/canvas.cc: New file.
8167 * text-art/canvas.h: New file.
8168 * text-art/ruler.cc: New file.
8169 * text-art/ruler.h: New file.
8170 * text-art/selftests.cc: New file.
8171 * text-art/selftests.h: New file.
8172 * text-art/style.cc: New file.
8173 * text-art/styled-string.cc: New file.
8174 * text-art/table.cc: New file.
8175 * text-art/table.h: New file.
8176 * text-art/theme.cc: New file.
8177 * text-art/theme.h: New file.
8178 * text-art/types.h: New file.
8179 * text-art/widget.cc: New file.
8180 * text-art/widget.h: New file.
8181
8182 2023-06-21 Uros Bizjak <ubizjak@gmail.com>
8183
8184 * function.h (emit_initial_value_sets):
8185 Change return type from int to void.
8186 (aggregate_value_p): Change return type from int to bool.
8187 (prologue_contains): Ditto.
8188 (epilogue_contains): Ditto.
8189 (prologue_epilogue_contains): Ditto.
8190 * function.cc (temp_slot): Make "in_use" variable bool.
8191 (make_slot_available): Update for changed "in_use" variable.
8192 (assign_stack_temp_for_type): Ditto.
8193 (emit_initial_value_sets): Change return type from int to void
8194 and update function body accordingly.
8195 (instantiate_virtual_regs): Ditto.
8196 (rest_of_handle_thread_prologue_and_epilogue): Ditto.
8197 (safe_insn_predicate): Change return type from int to bool.
8198 (aggregate_value_p): Change return type from int to bool
8199 and update function body accordingly.
8200 (prologue_contains): Change return type from int to bool.
8201 (prologue_epilogue_contains): Ditto.
8202
8203 2023-06-21 Alexander Monakov <amonakov@ispras.ru>
8204
8205 * common.opt (fp_contract_mode) [on]: Remove fallback.
8206 * config/sh/sh.md (*fmasf4): Correct flag_fp_contract_mode test.
8207 * doc/invoke.texi (-ffp-contract): Update.
8208 * trans-mem.cc (diagnose_tm_1): Skip internal function calls.
8209
8210 2023-06-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8211
8212 * config/aarch64/aarch64-sve.md (mask_gather_load<mode><v_int_container>):
8213 Add alternatives to prefer to avoid same input and output Z register.
8214 (mask_gather_load<mode><v_int_container>): Likewise.
8215 (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise.
8216 (*mask_gather_load<mode><v_int_container>_sxtw): Likewise.
8217 (*mask_gather_load<mode><v_int_container>_uxtw): Likewise.
8218 (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>):
8219 Likewise.
8220 (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
8221 Likewise.
8222 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
8223 <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked): Likewise.
8224 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
8225 <SVE_2BHSI:mode>_sxtw): Likewise.
8226 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
8227 <SVE_2BHSI:mode>_uxtw): Likewise.
8228 (@aarch64_ldff1_gather<mode>): Likewise.
8229 (@aarch64_ldff1_gather<mode>): Likewise.
8230 (*aarch64_ldff1_gather<mode>_sxtw): Likewise.
8231 (*aarch64_ldff1_gather<mode>_uxtw): Likewise.
8232 (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode>
8233 <VNx4_NARROW:mode>): Likewise.
8234 (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
8235 <VNx2_NARROW:mode>): Likewise.
8236 (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
8237 <VNx2_NARROW:mode>_sxtw): Likewise.
8238 (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
8239 <VNx2_NARROW:mode>_uxtw): Likewise.
8240 * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): Likewise.
8241 (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode>
8242 <SVE_PARTIAL_I:mode>): Likewise.
8243
8244 2023-06-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8245
8246 * config/aarch64/aarch64-sve.md (mask_gather_load<mode><v_int_container>):
8247 Convert to compact alternatives syntax.
8248 (mask_gather_load<mode><v_int_container>): Likewise.
8249 (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise.
8250 (*mask_gather_load<mode><v_int_container>_sxtw): Likewise.
8251 (*mask_gather_load<mode><v_int_container>_uxtw): Likewise.
8252 (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>):
8253 Likewise.
8254 (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
8255 Likewise.
8256 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
8257 <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked): Likewise.
8258 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
8259 <SVE_2BHSI:mode>_sxtw): Likewise.
8260 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
8261 <SVE_2BHSI:mode>_uxtw): Likewise.
8262 (@aarch64_ldff1_gather<mode>): Likewise.
8263 (@aarch64_ldff1_gather<mode>): Likewise.
8264 (*aarch64_ldff1_gather<mode>_sxtw): Likewise.
8265 (*aarch64_ldff1_gather<mode>_uxtw): Likewise.
8266 (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode>
8267 <VNx4_NARROW:mode>): Likewise.
8268 (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
8269 <VNx2_NARROW:mode>): Likewise.
8270 (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
8271 <VNx2_NARROW:mode>_sxtw): Likewise.
8272 (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
8273 <VNx2_NARROW:mode>_uxtw): Likewise.
8274 * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): Likewise.
8275 (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode>
8276 <SVE_PARTIAL_I:mode>): Likewise.
8277
8278 2023-06-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8279
8280 Revert:
8281 2023-06-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8282
8283 * config/aarch64/aarch64-sve.md (mask_gather_load<mode><v_int_container>):
8284 Convert to compact alternatives syntax.
8285 (mask_gather_load<mode><v_int_container>): Likewise.
8286 (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise.
8287 (*mask_gather_load<mode><v_int_container>_sxtw): Likewise.
8288 (*mask_gather_load<mode><v_int_container>_uxtw): Likewise.
8289 (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>):
8290 Likewise.
8291 (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
8292 Likewise.
8293 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
8294 <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked): Likewise.
8295 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
8296 <SVE_2BHSI:mode>_sxtw): Likewise.
8297 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
8298 <SVE_2BHSI:mode>_uxtw): Likewise.
8299 (@aarch64_ldff1_gather<mode>): Likewise.
8300 (@aarch64_ldff1_gather<mode>): Likewise.
8301 (*aarch64_ldff1_gather<mode>_sxtw): Likewise.
8302 (*aarch64_ldff1_gather<mode>_uxtw): Likewise.
8303 (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode>
8304 <VNx4_NARROW:mode>): Likewise.
8305 (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
8306 <VNx2_NARROW:mode>): Likewise.
8307 (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
8308 <VNx2_NARROW:mode>_sxtw): Likewise.
8309 (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
8310 <VNx2_NARROW:mode>_uxtw): Likewise.
8311 * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): Likewise.
8312 (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode>
8313 <SVE_PARTIAL_I:mode>): Likewise.
8314
8315 2023-06-21 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
8316
8317 * optabs-query.cc (can_vec_mask_load_store_p): Move to optabs-tree.cc.
8318 (get_len_load_store_mode): Ditto.
8319 * optabs-query.h (can_vec_mask_load_store_p): Move to optabs-tree.h.
8320 (get_len_load_store_mode): Ditto.
8321 * optabs-tree.cc (can_vec_mask_load_store_p): New function.
8322 (get_len_load_store_mode): Ditto.
8323 * optabs-tree.h (can_vec_mask_load_store_p): Ditto.
8324 (get_len_load_store_mode): Ditto.
8325 * tree-if-conv.cc: include optabs-tree instead of optabs-query
8326
8327 2023-06-21 Richard Biener <rguenther@suse.de>
8328
8329 * tree-ssa-loop-ivopts.cc (add_iv_candidate_for_use): Use
8330 split_constant_offset for the POINTER_PLUS_EXPR case.
8331
8332 2023-06-21 Richard Biener <rguenther@suse.de>
8333
8334 * tree-ssa-loop-ivopts.cc (record_group_use): Use
8335 split_constant_offset.
8336
8337 2023-06-21 Richard Biener <rguenther@suse.de>
8338
8339 * tree-loop-distribution.cc (classify_builtin_st): Use
8340 split_constant_offset.
8341 * tree-ssa-loop-ivopts.h (strip_offset): Remove.
8342 * tree-ssa-loop-ivopts.cc (strip_offset): Make static.
8343
8344 2023-06-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8345
8346 * config/aarch64/aarch64-sve.md (mask_gather_load<mode><v_int_container>):
8347 Convert to compact alternatives syntax.
8348 (mask_gather_load<mode><v_int_container>): Likewise.
8349 (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise.
8350 (*mask_gather_load<mode><v_int_container>_sxtw): Likewise.
8351 (*mask_gather_load<mode><v_int_container>_uxtw): Likewise.
8352 (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>):
8353 Likewise.
8354 (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
8355 Likewise.
8356 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
8357 <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked): Likewise.
8358 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
8359 <SVE_2BHSI:mode>_sxtw): Likewise.
8360 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
8361 <SVE_2BHSI:mode>_uxtw): Likewise.
8362 (@aarch64_ldff1_gather<mode>): Likewise.
8363 (@aarch64_ldff1_gather<mode>): Likewise.
8364 (*aarch64_ldff1_gather<mode>_sxtw): Likewise.
8365 (*aarch64_ldff1_gather<mode>_uxtw): Likewise.
8366 (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode>
8367 <VNx4_NARROW:mode>): Likewise.
8368 (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
8369 <VNx2_NARROW:mode>): Likewise.
8370 (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
8371 <VNx2_NARROW:mode>_sxtw): Likewise.
8372 (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
8373 <VNx2_NARROW:mode>_uxtw): Likewise.
8374 * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): Likewise.
8375 (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode>
8376 <SVE_PARTIAL_I:mode>): Likewise.
8377
8378 2023-06-21 Tamar Christina <tamar.christina@arm.com>
8379
8380 PR other/110329
8381 * doc/md.texi: Replace backslashchar.
8382
8383 2023-06-21 Richard Biener <rguenther@suse.de>
8384
8385 * config/i386/i386.cc (ix86_vector_costs::finish_cost):
8386 Overload. For masked main loops make sure the vectorization
8387 factor isn't more than double the number of iterations.
8388
8389 2023-06-21 Jan Beulich <jbeulich@suse.com>
8390
8391 * config/i386/i386-expand.cc (ix86_expand_copysign): Request
8392 value duplication by ix86_build_signbit_mask() when AVX512F and
8393 not HFmode.
8394 * config/i386/sse.md (*<avx512>_vternlog<mode>_all): Convert to
8395 2-alternative form. Adjust "mode" attribute. Add "enabled"
8396 attribute.
8397 (*<avx512>_vpternlog<mode>_1): Also permit when TARGET_AVX512F
8398 && !TARGET_PREFER_AVX256.
8399 (*<avx512>_vpternlog<mode>_2): Likewise.
8400 (*<avx512>_vpternlog<mode>_3): Likewise.
8401
8402 2023-06-21 liuhongt <hongtao.liu@intel.com>
8403
8404 PR target/110018
8405 * tree-vect-stmts.cc (vectorizable_conversion): Use
8406 intermiediate integer type for float_expr/fix_trunc_expr when
8407 direct optab is not existed.
8408
8409 2023-06-20 Tamar Christina <tamar.christina@arm.com>
8410
8411 PR bootstrap/110324
8412 * gensupport.cc (convert_syntax): Explicitly check for RTX code.
8413
8414 2023-06-20 Richard Sandiford <richard.sandiford@arm.com>
8415
8416 * config/aarch64/aarch64.md (stack_tie): Hard-code the first
8417 register operand to the stack pointer. Require the second register
8418 operand to have the number specified in a separate const_int operand.
8419 * config/aarch64/aarch64.cc (aarch64_emit_stack_tie): New function.
8420 (aarch64_allocate_and_probe_stack_space): Use it.
8421 (aarch64_expand_prologue, aarch64_expand_epilogue): Likewise.
8422 (aarch64_expand_epilogue): Likewise.
8423
8424 2023-06-20 Jakub Jelinek <jakub@redhat.com>
8425
8426 PR middle-end/79173
8427 * tree-ssa-math-opts.cc (match_uaddc_usubc): Remember lhs of
8428 IMAGPART_EXPR of arg2/arg3 and use that as arg3 if it has the right
8429 type.
8430
8431 2023-06-20 Uros Bizjak <ubizjak@gmail.com>
8432
8433 * calls.h (setjmp_call_p): Change return type from int to bool.
8434 * calls.cc (struct arg_data): Change "pass_on_stack" to bool.
8435 (store_one_arg): Change return type from int to bool
8436 and adjust function body accordingly. Change "sibcall_failure"
8437 variable to bool.
8438 (finalize_must_preallocate): Ditto. Change *must_preallocate pointer
8439 argument to bool. Change "partial_seen" variable to bool.
8440 (load_register_parameters): Change *sibcall_failure
8441 pointer argument to bool.
8442 (check_sibcall_argument_overlap_1): Change return type from int to bool
8443 and adjust function body accordingly.
8444 (check_sibcall_argument_overlap): Ditto. Change
8445 "mark_stored_args_map" argument to bool.
8446 (emit_call_1): Change "already_popped" variable to bool.
8447 (setjmp_call_p): Change return type from int to bool
8448 and adjust function body accordingly.
8449 (initialize_argument_information): Change *must_preallocate
8450 pointer argument to bool.
8451 (expand_call): Change "pcc_struct_value", "must_preallocate"
8452 and "sibcall_failure" variables to bool.
8453 (emit_library_call_value_1): Change "pcc_struct_value"
8454 variable to bool.
8455
8456 2023-06-20 Martin Jambor <mjambor@suse.cz>
8457
8458 PR ipa/110276
8459 * ipa-sra.cc (struct caller_issues): New field there_is_one.
8460 (check_for_caller_issues): Set it.
8461 (check_all_callers_for_issues): Check it.
8462
8463 2023-06-20 Martin Jambor <mjambor@suse.cz>
8464
8465 * ipa-prop.h (ipa_uid_to_idx_map_elt): New type.
8466 (struct ipcp_transformation): Rearrange members according to
8467 C++ class coding convention, add m_uid_to_idx,
8468 get_param_index and maybe_create_parm_idx_map.
8469 * ipa-cp.cc (ipcp_transformation::get_param_index): New function.
8470 (compare_uids): Likewise.
8471 (ipcp_transformation::maype_create_parm_idx_map): Likewise.
8472 * ipa-prop.cc (ipcp_get_parm_bits): Use get_param_index.
8473 (ipcp_update_bits): Accept TS as a parameter, assume it is not NULL.
8474 (ipcp_update_vr): Likewise.
8475 (ipcp_transform_function): Call, maybe_create_parm_idx_map of TS, bail
8476 out quickly if empty, pass it to ipcp_update_bits and ipcp_update_vr.
8477
8478 2023-06-20 Carl Love <cel@us.ibm.com>
8479
8480 * config/rs6000/rs6000-builtin.cc (rs6000_expand_builtin):
8481 Rename CODE_FOR_xsxsigqp_tf to CODE_FOR_xsxsigqp_tf_ti.
8482 Rename CODE_FOR_xsxsigqp_kf to CODE_FOR_xsxsigqp_kf_ti.
8483 Rename CCDE_FOR_xsxexpqp_tf to CODE_FOR_xsxexpqp_tf_di.
8484 Rename CODE_FOR_xsxexpqp_kf to CODE_FOR_xsxexpqp_kf_di.
8485 (CODE_FOR_xsxexpqp_kf_v2di, CODE_FOR_xsxsigqp_kf_v1ti,
8486 CODE_FOR_xsiexpqp_kf_v2di): Add case statements.
8487 * config/rs6000/rs6000-builtins.def
8488 (__builtin_vsx_scalar_extract_exp_to_vec,
8489 __builtin_vsx_scalar_extract_sig_to_vec,
8490 __builtin_vsx_scalar_insert_exp_vqp): Add new builtin definitions.
8491 Rename xsxexpqp_kf, xsxsigqp_kf, xsiexpqp_kf to xsexpqp_kf_di,
8492 xsxsigqp_kf_ti, xsiexpqp_kf_di respectively.
8493 * config/rs6000/rs6000-c.cc (altivec_resolve_overloaded_builtin):
8494 Update case RS6000_OVLD_VEC_VSIE to handle MODE_VECTOR_INT for new
8495 overloaded instance. Update comments.
8496 * config/rs6000/rs6000-overload.def
8497 (__builtin_vec_scalar_insert_exp): Add new overload definition with
8498 vector arguments.
8499 (scalar_extract_exp_to_vec, scalar_extract_sig_to_vec): New
8500 overloaded definitions.
8501 * config/rs6000/vsx.md (V2DI_DI): New mode iterator.
8502 (DI_to_TI): New mode attribute.
8503 Rename xsxexpqp_<mode> to sxexpqp_<IEEE128:mode>_<V2DI_DI:mode>.
8504 Rename xsxsigqp_<mode> to xsxsigqp_<IEEE128:mode>_<VEC_TI:mode>.
8505 Rename xsiexpqp_<mode> to xsiexpqp_<IEEE128:mode>_<V2DI_DI:mode>.
8506 * doc/extend.texi (scalar_extract_exp_to_vec,
8507 scalar_extract_sig_to_vec): Add documentation for new builtins.
8508 (scalar_insert_exp): Add new overloaded builtin definition.
8509
8510 2023-06-20 Li Xu <xuli1@eswincomputing.com>
8511
8512 * config/riscv/riscv.cc (riscv_regmode_natural_size): set the natural
8513 size of vector mask mode to one rvv register.
8514
8515 2023-06-20 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8516
8517 * config/riscv/riscv-v.cc (expand_const_vector): Optimize codegen.
8518
8519 2023-06-20 Lehua Ding <lehua.ding@rivai.ai>
8520
8521 * config/riscv/riscv.cc (riscv_arg_has_vector): Add default
8522 switch handler.
8523
8524 2023-06-20 Richard Biener <rguenther@suse.de>
8525
8526 * tree-ssa-dse.cc (dse_classify_store): When we found
8527 no defs and the basic-block with the original definition
8528 ends in __builtin_unreachable[_trap] the store is dead.
8529
8530 2023-06-20 Richard Biener <rguenther@suse.de>
8531
8532 * tree-ssa-phiprop.cc (phiprop_insert_phi): For simple loads
8533 keep the virtual SSA form up-to-date.
8534
8535 2023-06-20 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8536
8537 * config/aarch64/aarch64-simd.md (*aarch64_addp_same_reg<mode>):
8538 New define_insn_and_split.
8539
8540 2023-06-20 Tamar Christina <tamar.christina@arm.com>
8541
8542 * config/aarch64/aarch64.md (*mov<mode>_aarch64): Drop test comment.
8543
8544 2023-06-20 Jan Beulich <jbeulich@suse.com>
8545
8546 * config/i386/sse.md (vec_dupv2di): Correct %vmovddup input
8547 constraint. Add new AVX512F alternative.
8548
8549 2023-06-20 Richard Biener <rguenther@suse.de>
8550
8551 PR debug/110295
8552 * dwarf2out.cc (process_scope_var): Continue processing
8553 the decl after setting a parent in case the existing DIE
8554 was in limbo.
8555
8556 2023-06-20 Lehua Ding <lehua.ding@rivai.ai>
8557
8558 * config/riscv/riscv.cc (riscv_scalable_vector_type_p): Delete.
8559 (riscv_arg_has_vector): Simplify.
8560 (riscv_pass_in_vector_p): Adjust warning message.
8561
8562 2023-06-19 Jin Ma <jinma@linux.alibaba.com>
8563
8564 * config/riscv/riscv.cc (riscv_compute_frame_info): Allocate frame for FCSR.
8565 (riscv_for_each_saved_reg): Save and restore FCSR in interrupt functions.
8566 * config/riscv/riscv.md (riscv_frcsr): New patterns.
8567 (riscv_fscsr): Likewise.
8568
8569 2023-06-19 Toru Kisuki <tkisuki@tachyum.com>
8570
8571 PR rtl-optimization/110305
8572 * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
8573 Handle HONOR_SNANS for x + 0.0.
8574
8575 2023-06-19 Jan Hubicka <jh@suse.cz>
8576
8577 PR tree-optimization/109811
8578 PR tree-optimization/109849
8579 * passes.def: Add phiprop to early optimization passes.
8580 * tree-ssa-phiprop.cc: Allow clonning.
8581
8582 2023-06-19 Tamar Christina <tamar.christina@arm.com>
8583
8584 * config/aarch64/aarch64.md (arches): Add nosimd.
8585 (*mov<mode>_aarch64, *movsi_aarch64, *movdi_aarch64): Rewrite to
8586 compact syntax.
8587
8588 2023-06-19 Tamar Christina <tamar.christina@arm.com>
8589 Omar Tahir <Omar.Tahir2@arm.com>
8590
8591 * gensupport.cc (class conlist, add_constraints, add_attributes,
8592 skip_spaces, expect_char, preprocess_compact_syntax,
8593 parse_section_layout, parse_section, convert_syntax): New.
8594 (process_rtx): Check for conversion.
8595 * genoutput.cc (process_template): Check for unresolved iterators.
8596 (class data): Add compact_syntax_p.
8597 (gen_insn): Use it.
8598 * gensupport.h (compact_syntax): New.
8599 (hash-set.h): Include.
8600 * doc/md.texi: Document it.
8601
8602 2023-06-19 Uros Bizjak <ubizjak@gmail.com>
8603
8604 * recog.h (check_asm_operands): Change return type from int to bool.
8605 (insn_invalid_p): Ditto.
8606 (verify_changes): Ditto.
8607 (apply_change_group): Ditto.
8608 (constrain_operands): Ditto.
8609 (constrain_operands_cached): Ditto.
8610 (validate_replace_rtx_subexp): Ditto.
8611 (validate_replace_rtx): Ditto.
8612 (validate_replace_rtx_part): Ditto.
8613 (validate_replace_rtx_part_nosimplify): Ditto.
8614 (added_clobbers_hard_reg_p): Ditto.
8615 (peep2_regno_dead_p): Ditto.
8616 (peep2_reg_dead_p): Ditto.
8617 (store_data_bypass_p): Ditto.
8618 (if_test_bypass_p): Ditto.
8619 * rtl.h (split_all_insns_noflow): Change
8620 return type from unsigned int to void.
8621 * genemit.cc (output_added_clobbers_hard_reg_p): Change return type
8622 of generated added_clobbers_hard_reg_p from int to bool and adjust
8623 function body accordingly. Change "used" variable type from
8624 int to bool.
8625 * recog.cc (check_asm_operands): Change return type
8626 from int to bool and adjust function body accordingly.
8627 (insn_invalid_p): Ditto. Change "is_asm" variable to bool.
8628 (verify_changes): Change return type from int to bool.
8629 (apply_change_group): Change return type from int to bool
8630 and adjust function body accordingly.
8631 (validate_replace_rtx_subexp): Change return type from int to bool.
8632 (validate_replace_rtx): Ditto.
8633 (validate_replace_rtx_part): Ditto.
8634 (validate_replace_rtx_part_nosimplify): Ditto.
8635 (constrain_operands_cached): Ditto.
8636 (constrain_operands): Ditto. Change "lose" and "win"
8637 variables type from int to bool.
8638 (split_all_insns_noflow): Change return type from unsigned int
8639 to void and adjust function body accordingly.
8640 (peep2_regno_dead_p): Change return type from int to bool.
8641 (peep2_reg_dead_p): Ditto.
8642 (peep2_find_free_register): Change "success"
8643 variable type from int to bool
8644 (store_data_bypass_p_1): Change return type from int to bool.
8645 (store_data_bypass_p): Ditto.
8646
8647 2023-06-19 Li Xu <xuli1@eswincomputing.com>
8648
8649 * config/riscv/vector-iterators.md: zvfh/zvfhmin depends on the
8650 Zve32f extension.
8651
8652 2023-06-19 Pan Li <pan2.li@intel.com>
8653
8654 PR target/110299
8655 * config/riscv/riscv-vector-builtins-bases.cc: Adjust expand for
8656 modes.
8657 * config/riscv/vector-iterators.md: Remove VWLMUL1, VWLMUL1_ZVE64,
8658 VWLMUL1_ZVE32, VI_ZVE64, VI_ZVE32, VWI, VWI_ZVE64, VWI_ZVE32,
8659 VF_ZVE63 and VF_ZVE32.
8660 * config/riscv/vector.md
8661 (@pred_widen_reduc_plus<v_su><mode><vwlmul1>): Removed.
8662 (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve64>): Ditto.
8663 (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve32>): Ditto.
8664 (@pred_widen_reduc_plus<order><mode><vwlmul1>): Ditto.
8665 (@pred_widen_reduc_plus<order><mode><vwlmul1_zve64>): Ditto.
8666 (@pred_widen_reduc_plus<v_su><VQI:mode><VHI_LMUL1:mode>): New pattern.
8667 (@pred_widen_reduc_plus<v_su><VHI:mode><VSI_LMUL1:mode>): Ditto.
8668 (@pred_widen_reduc_plus<v_su><VSI:mode><VDI_LMUL1:mode>): Ditto.
8669 (@pred_widen_reduc_plus<order><VHF:mode><VSF_LMUL1:mode>): Ditto.
8670 (@pred_widen_reduc_plus<order><VSF:mode><VDF_LMUL1:mode>): Ditto.
8671
8672 2023-06-19 Pan Li <pan2.li@intel.com>
8673
8674 PR target/110277
8675 * config/riscv/riscv-vector-builtins-bases.cc: Adjust expand for
8676 ret_mode.
8677 * config/riscv/vector-iterators.md: Add VHF, VSF, VDF,
8678 VHF_LMUL1, VSF_LMUL1, VDF_LMUL1, and remove unused attr.
8679 * config/riscv/vector.md (@pred_reduc_<reduc><mode><vlmul1>): Removed.
8680 (@pred_reduc_<reduc><mode><vlmul1_zve64>): Ditto.
8681 (@pred_reduc_<reduc><mode><vlmul1_zve32>): Ditto.
8682 (@pred_reduc_plus<order><mode><vlmul1>): Ditto.
8683 (@pred_reduc_plus<order><mode><vlmul1_zve32>): Ditto.
8684 (@pred_reduc_plus<order><mode><vlmul1_zve64>): Ditto.
8685 (@pred_reduc_<reduc><VHF:mode><VHF_LMUL1:mode>): New pattern.
8686 (@pred_reduc_<reduc><VSF:mode><VSF_LMUL1:mode>): Ditto.
8687 (@pred_reduc_<reduc><VDF:mode><VDF_LMUL1:mode>): Ditto.
8688 (@pred_reduc_plus<order><VHF:mode><VHF_LMUL1:mode>): Ditto.
8689 (@pred_reduc_plus<order><VSF:mode><VSF_LMUL1:mode>): Ditto.
8690 (@pred_reduc_plus<order><VDF:mode><VDF_LMUL1:mode>): Ditto.
8691
8692 2023-06-19 Andrew Stubbs <ams@codesourcery.com>
8693
8694 * config/gcn/gcn.cc (gcn_expand_divmod_libfunc): New function.
8695 (gcn_init_libfuncs): Add div and mod functions for all modes.
8696 Add placeholders for divmod functions.
8697 (TARGET_EXPAND_DIVMOD_LIBFUNC): Define.
8698
8699 2023-06-19 Andrew Stubbs <ams@codesourcery.com>
8700
8701 * tree-vect-generic.cc: Include optabs-libfuncs.h.
8702 (get_compute_type): Check optab_libfunc.
8703 * tree-vect-stmts.cc: Include optabs-libfuncs.h.
8704 (vectorizable_operation): Check optab_libfunc.
8705
8706 2023-06-19 Andrew Stubbs <ams@codesourcery.com>
8707
8708 * config/gcn/gcn-protos.h (vgpr_4reg_mode_p): New function.
8709 * config/gcn/gcn-valu.md (V_4REG, V_4REG_ALT): New iterators.
8710 (V_MOV, V_MOV_ALT): Likewise.
8711 (scalar_mode, SCALAR_MODE): Add TImode.
8712 (vnsi, VnSI, vndi, VnDI): Likewise.
8713 (vec_merge, vec_merge_with_clobber, vec_merge_with_vcc): Use V_MOV.
8714 (mov<mode>, mov<mode>_unspec): Use V_MOV.
8715 (*mov<mode>_4reg): New insn.
8716 (mov<mode>_exec): New 4reg variant.
8717 (mov<mode>_sgprbase): Likewise.
8718 (reload_in<mode>, reload_out<mode>): Use V_MOV.
8719 (vec_set<mode>): Likewise.
8720 (vec_duplicate<mode><exec>): New 4reg variant.
8721 (vec_extract<mode><scalar_mode>): Likewise.
8722 (vec_extract<V_ALL:mode><V_ALL_ALT:mode>): Rename to ...
8723 (vec_extract<V_MOV:mode><V_MOV_ALT:mode>): ... this, and use V_MOV.
8724 (vec_extract<V_4REG:mode><V_4REG_ALT:mode>_nop): New 4reg variant.
8725 (fold_extract_last_<mode>): Use V_MOV.
8726 (vec_init<V_ALL:mode><V_ALL_ALT:mode>): Rename to ...
8727 (vec_init<V_MOV:mode><V_MOV_ALT:mode>): ... this, and use V_MOV.
8728 (gather_load<mode><vnsi>, gather<mode>_expr<exec>,
8729 gather<mode>_insn_1offset<exec>, gather<mode>_insn_1offset_ds<exec>,
8730 gather<mode>_insn_2offsets<exec>): Use V_MOV.
8731 (scatter_store<mode><vnsi>, scatter<mode>_expr<exec_scatter>,
8732 scatter<mode>_insn_1offset<exec_scatter>,
8733 scatter<mode>_insn_1offset_ds<exec_scatter>,
8734 scatter<mode>_insn_2offsets<exec_scatter>): Likewise.
8735 (maskload<mode>di, maskstore<mode>di, mask_gather_load<mode><vnsi>,
8736 mask_scatter_store<mode><vnsi>): Likewise.
8737 * config/gcn/gcn.cc (gcn_class_max_nregs): Use vgpr_4reg_mode_p.
8738 (gcn_hard_regno_mode_ok): Likewise.
8739 (GEN_VNM): Add TImode support.
8740 (USE_TI): New macro. Separate TImode operations from non-TImode ones.
8741 (gcn_vector_mode_supported_p): Add V64TImode, V32TImode, V16TImode,
8742 V8TImode, and V2TImode.
8743 (print_operand): Add 'J' and 'K' print codes.
8744
8745 2023-06-19 Richard Biener <rguenther@suse.de>
8746
8747 PR tree-optimization/110298
8748 * tree-ssa-loop-ivcanon.cc (tree_unroll_loops_completely):
8749 Clear number of iterations info before cleaning up the CFG.
8750
8751 2023-06-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8752
8753 * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
8754 Simplify vec_concat of lowpart subreg and high part vec_select.
8755
8756 2023-06-19 Tobias Burnus <tobias@codesourcery.com>
8757
8758 * doc/invoke.texi (-foffload-options): Remove '-O3' from the examples.
8759
8760 2023-06-19 Richard Sandiford <richard.sandiford@arm.com>
8761
8762 * tree-vect-loop-manip.cc (vect_set_loop_condition_partial_vectors):
8763 Handle null niters_skip.
8764
8765 2023-06-19 Richard Biener <rguenther@suse.de>
8766
8767 * config/aarch64/aarch64.cc
8768 (aarch64_vector_costs::analyze_loop_vinfo): Fix reference
8769 to LOOP_VINFO_MASKS.
8770
8771 2023-06-19 Senthil Kumar Selvaraj <saaadhu@gcc.gnu.org>
8772
8773 PR target/105523
8774 * common/config/avr/avr-common.cc: Remove setting
8775 of OPT_fdelete_null_pointer_checks.
8776 * config/avr/avr.cc (avr_option_override): Clear
8777 flag_delete_null_pointer_checks if zero_address_valid.
8778 (avr_addr_space_zero_address_valid): New function.
8779 (TARGET_ADDR_SPACE_ZERO_ADDRESS_VALID): Provide target
8780 hook.
8781
8782 2023-06-19 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
8783 Robin Dapp <rdapp.gcc@gmail.com>
8784
8785 * doc/md.texi: Add len_mask{load,store}.
8786 * genopinit.cc (main): Ditto.
8787 (CMP_NAME): Ditto.
8788 * internal-fn.cc (len_maskload_direct): Ditto.
8789 (len_maskstore_direct): Ditto.
8790 (expand_call_mem_ref): Ditto.
8791 (expand_partial_load_optab_fn): Ditto.
8792 (expand_len_maskload_optab_fn): Ditto.
8793 (expand_partial_store_optab_fn): Ditto.
8794 (expand_len_maskstore_optab_fn): Ditto.
8795 (direct_len_maskload_optab_supported_p): Ditto.
8796 (direct_len_maskstore_optab_supported_p): Ditto.
8797 * internal-fn.def (LEN_MASK_LOAD): Ditto.
8798 (LEN_MASK_STORE): Ditto.
8799 * optabs.def (OPTAB_CD): Ditto.
8800
8801 2023-06-19 Robin Dapp <rdapp@ventanamicro.com>
8802
8803 * config/riscv/autovec.md (<optab><mode>2): Add unop expanders.
8804
8805 2023-06-19 Robin Dapp <rdapp@ventanamicro.com>
8806
8807 * config/riscv/autovec.md (<optab><mode>3): Implement binop
8808 expander.
8809 * config/riscv/riscv-protos.h (emit_vlmax_fp_insn): Declare.
8810 (enum vxrm_field_enum): Rename this...
8811 (enum fixed_point_rounding_mode): ...to this.
8812 (enum frm_field_enum): Rename this...
8813 (enum floating_point_rounding_mode): ...to this.
8814 * config/riscv/riscv-v.cc (emit_vlmax_fp_insn): New function
8815 * config/riscv/riscv.cc (riscv_const_insns): Clarify const
8816 vector handling.
8817 (riscv_libgcc_floating_mode_supported_p): Adjust comment.
8818 (riscv_excess_precision): Do not convert to float for ZVFH.
8819 * config/riscv/vector-iterators.md: Add VF_AUTO iterator.
8820
8821 2023-06-19 Robin Dapp <rdapp@ventanamicro.com>
8822
8823 * config/riscv/vector-iterators.md: Add VI_QH iterator.
8824 * config/riscv/autovec-opt.md
8825 (@pred_extract_first_sextdi<mode>): New vmv.x.s pattern
8826 that includes sign extension.
8827 (@pred_extract_first_sextsi<mode>): Dito for SImode.
8828
8829 2023-06-19 Robin Dapp <rdapp@ventanamicro.com>
8830
8831 * config/riscv/autovec.md (vec_set<mode>): Implement.
8832 (vec_extract<mode><vel>): Implement.
8833 * config/riscv/riscv-protos.h (enum insn_type): Add slide insn.
8834 (emit_vlmax_slide_insn): Declare.
8835 (emit_nonvlmax_slide_tu_insn): Declare.
8836 (emit_scalar_move_insn): Export.
8837 (emit_nonvlmax_integer_move_insn): Export.
8838 * config/riscv/riscv-v.cc (emit_vlmax_slide_insn): New function.
8839 (emit_nonvlmax_slide_tu_insn): New function.
8840 (emit_vlmax_masked_mu_insn): No change.
8841 (emit_vlmax_integer_move_insn): Export.
8842
8843 2023-06-19 Richard Biener <rguenther@suse.de>
8844
8845 * tree-vectorizer.h (enum vect_partial_vector_style): New.
8846 (_loop_vec_info::partial_vector_style): Likewise.
8847 (LOOP_VINFO_PARTIAL_VECTORS_STYLE): Likewise.
8848 (rgroup_controls::compare_type): Add.
8849 (vec_loop_masks): Change from a typedef to auto_vec<>
8850 to a structure.
8851 * tree-vect-loop-manip.cc (vect_set_loop_condition_partial_vectors):
8852 Adjust. Convert niters_skip to compare_type.
8853 (vect_set_loop_condition_partial_vectors_avx512): New function
8854 implementing the AVX512 partial vector codegen.
8855 (vect_set_loop_condition): Dispatch to the correct
8856 vect_set_loop_condition_partial_vectors_* function based on
8857 LOOP_VINFO_PARTIAL_VECTORS_STYLE.
8858 (vect_prepare_for_masked_peels): Compute LOOP_VINFO_MASK_SKIP_NITERS
8859 in the original niter type.
8860 * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): Initialize
8861 partial_vector_style.
8862 (can_produce_all_loop_masks_p): Adjust.
8863 (vect_verify_full_masking): Produce the rgroup_controls vector
8864 here. Set LOOP_VINFO_PARTIAL_VECTORS_STYLE on success.
8865 (vect_verify_full_masking_avx512): New function implementing
8866 verification of AVX512 style masking.
8867 (vect_verify_loop_lens): Set LOOP_VINFO_PARTIAL_VECTORS_STYLE.
8868 (vect_analyze_loop_2): Also try AVX512 style masking.
8869 Adjust condition.
8870 (vect_estimate_min_profitable_iters): Implement AVX512 style
8871 mask producing cost.
8872 (vect_record_loop_mask): Do not build the rgroup_controls
8873 vector here but record masks in a hash-set.
8874 (vect_get_loop_mask): Implement AVX512 style mask query,
8875 complementing the existing while_ult style.
8876
8877 2023-06-19 Richard Biener <rguenther@suse.de>
8878
8879 * tree-vectorizer.h (vect_get_loop_mask): Add loop_vec_info
8880 argument.
8881 * tree-vect-loop.cc (vect_get_loop_mask): Likewise.
8882 (vectorize_fold_left_reduction): Adjust.
8883 (vect_transform_reduction): Likewise.
8884 (vectorizable_live_operation): Likewise.
8885 * tree-vect-stmts.cc (vectorizable_call): Likewise.
8886 (vectorizable_operation): Likewise.
8887 (vectorizable_store): Likewise.
8888 (vectorizable_load): Likewise.
8889 (vectorizable_condition): Likewise.
8890
8891 2023-06-19 Senthil Kumar Selvaraj <saaadhu@gcc.gnu.org>
8892
8893 PR target/110086
8894 * config/avr/avr.opt (mgas-isr-prologues, mmain-is-OS_task):
8895 Add Optimization option property.
8896
8897 2023-06-19 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
8898
8899 * config/xtensa/xtensa.cc (xtensa_constantsynth_2insn):
8900 Add new pattern for the abovementioned case.
8901
8902 2023-06-19 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
8903
8904 * config/xtensa/xtensa.cc
8905 (TARGET_MEMORY_MOVE_COST, xtensa_memory_move_cost): Remove.
8906
8907 2023-06-19 Jiufu Guo <guojiufu@linux.ibm.com>
8908
8909 * config/rs6000/rs6000.cc (TARGET_CONST_ANCHOR): New define.
8910
8911 2023-06-19 Jiufu Guo <guojiufu@linux.ibm.com>
8912
8913 * cse.cc (try_const_anchors): Check SCALAR_INT_MODE.
8914
8915 2023-06-19 liuhongt <hongtao.liu@intel.com>
8916
8917 PR target/110235
8918 * config/i386/sse.md (<sse2_avx2>_packsswb<mask_name>):
8919 Substitute with ..
8920 (sse2_packsswb<mask_name>): .. this, ..
8921 (avx2_packsswb<mask_name>): .. this and ..
8922 (avx512bw_packsswb<mask_name>): .. this.
8923 (<sse2_avx2>_packssdw<mask_name>): Substitute with ..
8924 (sse2_packssdw<mask_name>): .. this, ..
8925 (avx2_packssdw<mask_name>): .. this and ..
8926 (avx512bw_packssdw<mask_name>): .. this.
8927
8928 2023-06-19 liuhongt <hongtao.liu@intel.com>
8929
8930 PR target/110235
8931 * config/i386/i386-expand.cc (ix86_split_mmx_pack): Use
8932 UNSPEC_US_TRUNCATE instead of original us_truncate for
8933 packusdw/packuswb.
8934 * config/i386/mmx.md (mmx_pack<s_trunsuffix>swb): Substitute
8935 with ..
8936 (mmx_packsswb): .. this and ..
8937 (mmx_packuswb): .. this.
8938 (mmx_packusdw): Use UNSPEC_US_TRUNCATE instead of original
8939 us_truncate.
8940 (s_trunsuffix): Removed code iterator.
8941 (any_s_truncate): Ditto.
8942 * config/i386/sse.md (<sse2_avx2>_packuswb<mask_name>): Use
8943 UNSPEC_US_TRUNCATE instead of original us_truncate.
8944 (<sse4_1_avx2>_packusdw<mask_name>): Ditto.
8945 * config/i386/i386.md (UNSPEC_US_TRUNCATE): New unspec_c_enum.
8946
8947 2023-06-18 Pan Li <pan2.li@intel.com>
8948
8949 * config/riscv/riscv-vector-builtins-bases.cc: Fix one typo.
8950
8951 2023-06-18 Uros Bizjak <ubizjak@gmail.com>
8952
8953 * rtl.h (*rtx_equal_p_callback_function):
8954 Change return type from int to bool.
8955 (rtx_equal_p): Ditto.
8956 (*hash_rtx_callback_function): Ditto.
8957 * rtl.cc (rtx_equal_p): Change return type from int to bool
8958 and adjust function body accordingly.
8959 * early-remat.cc (scratch_equal): Ditto.
8960 * sel-sched-ir.cc (skip_unspecs_callback): Ditto.
8961 (hash_with_unspec_callback): Ditto.
8962
8963 2023-06-18 Jeff Law <jlaw@ventanamicro.com>
8964
8965 * config/arc/arc.md (movqi_insn): Allow certain constants to
8966 be stored into memory in the pattern's condition.
8967 (movsf_insn): Similarly.
8968
8969 2023-06-18 Honza <jh@ryzen3.suse.cz>
8970
8971 PR tree-optimization/109849
8972 * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Add new parameter
8973 ES; handle ipa_predicate::not_sra_candidate.
8974 (evaluate_properties_for_edge): Pass es to
8975 evaluate_conditions_for_known_args.
8976 (ipa_fn_summary_t::duplicate): Handle sra candidates.
8977 (dump_ipa_call_summary): Dump points_to_possible_sra_candidate.
8978 (load_or_store_of_ptr_parameter): New function.
8979 (points_to_possible_sra_candidate_p): New function.
8980 (analyze_function_body): Initialize points_to_possible_sra_candidate;
8981 determine sra predicates.
8982 (estimate_ipcp_clone_size_and_time): Update call of
8983 evaluate_conditions_for_known_args.
8984 (remap_edge_params): Update points_to_possible_sra_candidate.
8985 (read_ipa_call_summary): Stream points_to_possible_sra_candidate
8986 (write_ipa_call_summary): Likewise.
8987 * ipa-predicate.cc (ipa_predicate::add_clause): Handle not_sra_candidate.
8988 (dump_condition): Dump it.
8989 * ipa-predicate.h (struct inline_param_summary): Add
8990 points_to_possible_sra_candidate.
8991
8992 2023-06-18 Roger Sayle <roger@nextmovesoftware.com>
8993
8994 * config/i386/i386-expand.cc (ix86_expand_carry): New helper
8995 function for setting the carry flag.
8996 (ix86_expand_builtin) <handlecarry>: Use it here.
8997 * config/i386/i386-protos.h (ix86_expand_carry): Prototype here.
8998 * config/i386/i386.md (uaddc<mode>5): Use ix86_expand_carry.
8999 (usubc<mode>5): Likewise.
9000
9001 2023-06-18 Roger Sayle <roger@nextmovesoftware.com>
9002
9003 * config/i386/i386.md (*concat<mode><dwi>3_1): Use QImode
9004 for the immediate constant shift count.
9005 (*concat<mode><dwi>3_2): Likewise.
9006 (*concat<mode><dwi>3_3): Likewise.
9007 (*concat<mode><dwi>3_4): Likewise.
9008 (*concat<mode><dwi>3_5): Likewise.
9009 (*concat<mode><dwi>3_6): Likewise.
9010
9011 2023-06-18 Uros Bizjak <ubizjak@gmail.com>
9012
9013 * cse.cc (hash_rtx_cb): Rename to hash_rtx.
9014 (hash_rtx): Remove.
9015 * early-remat.cc (remat_candidate_hasher::equal): Update
9016 to call rtx_equal_p with rtx_equal_p_callback_function argument.
9017 * rtl.cc (rtx_equal_p_cb): Rename to rtx_equal_p.
9018 (rtx_equal_p): Remove.
9019 * rtl.h (rtx_equal_p): Add rtx_equal_p_callback_function
9020 argument with NULL default value.
9021 (rtx_equal_p_cb): Remove function declaration.
9022 (hash_rtx_cb): Ditto.
9023 (hash_rtx): Add hash_rtx_callback_function argument
9024 with NULL default value.
9025 * sel-sched-ir.cc (free_nop_pool): Update function comment.
9026 (skip_unspecs_callback): Ditto.
9027 (vinsn_init): Update to call hash_rtx with
9028 hash_rtx_callback_function argument.
9029 (vinsn_equal_p): Ditto.
9030
9031 2023-06-18 yulong <shiyulong@iscas.ac.cn>
9032
9033 * config/riscv/genrvv-type-indexer.cc (valid_type): Enable FP16 tuple.
9034 * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): New macro.
9035 (ADJUST_ALIGNMENT): Ditto.
9036 (RVV_TUPLE_PARTIAL_MODES): Ditto.
9037 (ADJUST_NUNITS): Ditto.
9038 * config/riscv/riscv-vector-builtins-types.def (vfloat16mf4x2_t):
9039 New types.
9040 (vfloat16mf4x3_t): Ditto.
9041 (vfloat16mf4x4_t): Ditto.
9042 (vfloat16mf4x5_t): Ditto.
9043 (vfloat16mf4x6_t): Ditto.
9044 (vfloat16mf4x7_t): Ditto.
9045 (vfloat16mf4x8_t): Ditto.
9046 (vfloat16mf2x2_t): Ditto.
9047 (vfloat16mf2x3_t): Ditto.
9048 (vfloat16mf2x4_t): Ditto.
9049 (vfloat16mf2x5_t): Ditto.
9050 (vfloat16mf2x6_t): Ditto.
9051 (vfloat16mf2x7_t): Ditto.
9052 (vfloat16mf2x8_t): Ditto.
9053 (vfloat16m1x2_t): Ditto.
9054 (vfloat16m1x3_t): Ditto.
9055 (vfloat16m1x4_t): Ditto.
9056 (vfloat16m1x5_t): Ditto.
9057 (vfloat16m1x6_t): Ditto.
9058 (vfloat16m1x7_t): Ditto.
9059 (vfloat16m1x8_t): Ditto.
9060 (vfloat16m2x2_t): Ditto.
9061 (vfloat16m2x3_t): Ditto.
9062 (vfloat16m2x4_t): Ditto.
9063 (vfloat16m4x2_t): Ditto.
9064 * config/riscv/riscv-vector-builtins.def (vfloat16mf4x2_t): New macro.
9065 (vfloat16mf4x3_t): Ditto.
9066 (vfloat16mf4x4_t): Ditto.
9067 (vfloat16mf4x5_t): Ditto.
9068 (vfloat16mf4x6_t): Ditto.
9069 (vfloat16mf4x7_t): Ditto.
9070 (vfloat16mf4x8_t): Ditto.
9071 (vfloat16mf2x2_t): Ditto.
9072 (vfloat16mf2x3_t): Ditto.
9073 (vfloat16mf2x4_t): Ditto.
9074 (vfloat16mf2x5_t): Ditto.
9075 (vfloat16mf2x6_t): Ditto.
9076 (vfloat16mf2x7_t): Ditto.
9077 (vfloat16mf2x8_t): Ditto.
9078 (vfloat16m1x2_t): Ditto.
9079 (vfloat16m1x3_t): Ditto.
9080 (vfloat16m1x4_t): Ditto.
9081 (vfloat16m1x5_t): Ditto.
9082 (vfloat16m1x6_t): Ditto.
9083 (vfloat16m1x7_t): Ditto.
9084 (vfloat16m1x8_t): Ditto.
9085 (vfloat16m2x2_t): Ditto.
9086 (vfloat16m2x3_t): Ditto.
9087 (vfloat16m2x4_t): Ditto.
9088 (vfloat16m4x2_t): Ditto.
9089 * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): New.
9090 * config/riscv/riscv.md: New.
9091 * config/riscv/vector-iterators.md: New.
9092
9093 2023-06-17 Roger Sayle <roger@nextmovesoftware.com>
9094
9095 * config/i386/i386-expand.cc (ix86_expand_move): Check that OP1 is
9096 CONST_WIDE_INT_P before calling ix86_convert_wide_int_to_broadcast.
9097 Generalize special case for converting TImode to V1TImode to handle
9098 all 128-bit vector conversions.
9099
9100 2023-06-17 Costas Argyris <costas.argyris@gmail.com>
9101
9102 * gcc-ar.cc (main): Refactor to slightly reduce code
9103 duplication. Avoid unnecessary elements in nargv.
9104
9105 2023-06-16 Pan Li <pan2.li@intel.com>
9106
9107 PR target/110265
9108 * config/riscv/riscv-vector-builtins-bases.cc: Add ret_mode for
9109 integer reduction expand.
9110 * config/riscv/vector-iterators.md: Add VQI, VHI, VSI and VDI,
9111 and the LMUL1 attr respectively.
9112 * config/riscv/vector.md
9113 (@pred_reduc_<reduc><mode><vlmul1>): Removed.
9114 (@pred_reduc_<reduc><mode><vlmul1_zve64>): Likewise.
9115 (@pred_reduc_<reduc><mode><vlmul1_zve32>): Likewise.
9116 (@pred_reduc_<reduc><VQI:mode><VQI_LMUL1:mode>): New pattern.
9117 (@pred_reduc_<reduc><VHI:mode><VHI_LMUL1:mode>): Likewise.
9118 (@pred_reduc_<reduc><VSI:mode><VSI_LMUL1:mode>): Likewise.
9119 (@pred_reduc_<reduc><VDI:mode><VDI_LMUL1:mode>): Likewise.
9120
9121 2023-06-16 Juzhe-Zhong <juzhe.zhong@rivai.ai>
9122
9123 PR target/110264
9124 * config/riscv/riscv-vsetvl.cc (insert_vsetvl): Fix bug.
9125
9126 2023-06-16 Jakub Jelinek <jakub@redhat.com>
9127
9128 PR middle-end/79173
9129 * builtin-types.def (BT_FN_UINT_UINT_UINT_UINT_UINTPTR,
9130 BT_FN_ULONG_ULONG_ULONG_ULONG_ULONGPTR,
9131 BT_FN_ULONGLONG_ULONGLONG_ULONGLONG_ULONGLONG_ULONGLONGPTR): New
9132 types.
9133 * builtins.def (BUILT_IN_ADDC, BUILT_IN_ADDCL, BUILT_IN_ADDCLL,
9134 BUILT_IN_SUBC, BUILT_IN_SUBCL, BUILT_IN_SUBCLL): New builtins.
9135 * builtins.cc (fold_builtin_addc_subc): New function.
9136 (fold_builtin_varargs): Handle BUILT_IN_{ADD,SUB}C{,L,LL}.
9137 * doc/extend.texi (__builtin_addc, __builtin_subc): Document.
9138
9139 2023-06-16 Jakub Jelinek <jakub@redhat.com>
9140
9141 PR tree-optimization/110271
9142 * tree-ssa-math-opts.cc (math_opts_dom_walker::after_dom_children)
9143 <case PLUS_EXPR>: Ignore return value from match_arith_overflow,
9144 instead call match_uaddc_usubc only if gsi_stmt (gsi) is still stmt.
9145
9146 2023-06-16 Martin Jambor <mjambor@suse.cz>
9147
9148 * configure: Regenerate.
9149
9150 2023-06-16 Roger Sayle <roger@nextmovesoftware.com>
9151 Uros Bizjak <ubizjak@gmail.com>
9152
9153 PR target/31985
9154 * config/i386/i386.md (*add<dwi>3_doubleword_concat): New
9155 define_insn_and_split combine *add<dwi>3_doubleword with
9156 a *concat<mode><dwi>3 for more efficient lowering after reload.
9157
9158 2023-06-16 Vladimir N. Makarov <vmakarov@redhat.com>
9159
9160 * ira-lives.cc: Include except.h.
9161 (process_bb_node_lives): Ignore conflicts from cleanup exceptions
9162 when the pseudo does not live at the exception landing pad.
9163
9164 2023-06-16 Alex Coplan <alex.coplan@arm.com>
9165
9166 * doc/invoke.texi: Document -Welaborated-enum-base.
9167
9168 2023-06-16 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
9169
9170 * config/aarch64/aarch64-simd-builtins.def (shrn2_n): Rename builtins to...
9171 (ushrn2_n): ... This.
9172 (sqshrn2_n): Rename builtins to...
9173 (ssqshrn2_n): ... This.
9174 (uqshrn2_n): Rename builtins to...
9175 (uqushrn2_n): ... This.
9176 * config/aarch64/arm_neon.h (vqshrn_high_n_s16): Adjust for the above.
9177 (vqshrn_high_n_s32): Likewise.
9178 (vqshrn_high_n_s64): Likewise.
9179 (vqshrn_high_n_u16): Likewise.
9180 (vqshrn_high_n_u32): Likewise.
9181 (vqshrn_high_n_u64): Likewise.
9182 (vshrn_high_n_s16): Likewise.
9183 (vshrn_high_n_s32): Likewise.
9184 (vshrn_high_n_s64): Likewise.
9185 (vshrn_high_n_u16): Likewise.
9186 (vshrn_high_n_u32): Likewise.
9187 (vshrn_high_n_u64): Likewise.
9188 * config/aarch64/aarch64-simd.md (aarch64_<shrn_op>shrn2_n<mode>_insn_le):
9189 Rename to...
9190 (aarch64_<shrn_op><sra_op>shrn2_n<mode>_insn_le): ... This.
9191 Use SHIFTRT iterator and AARCH64_VALID_SHRN_OP check.
9192 (aarch64_<shrn_op>shrn2_n<mode>_insn_be): Rename to...
9193 (aarch64_<shrn_op><sra_op>shrn2_n<mode>_insn_be): ... This.
9194 Use SHIFTRT iterator and AARCH64_VALID_SHRN_OP check.
9195 (aarch64_<shrn_op>shrn2_n<mode>): Rename to...
9196 (aarch64_<shrn_op><sra_op>shrn2_n<mode>): ... This.
9197 Update expander for the above.
9198
9199 2023-06-16 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
9200
9201 * config/aarch64/aarch64-simd-builtins.def (shrn2): Rename builtins to...
9202 (shrn2_n): ... This.
9203 (rshrn2): Rename builtins to...
9204 (rshrn2_n): ... This.
9205 * config/aarch64/arm_neon.h (vrshrn_high_n_s16): Adjust for the above.
9206 (vrshrn_high_n_s32): Likewise.
9207 (vrshrn_high_n_s64): Likewise.
9208 (vrshrn_high_n_u16): Likewise.
9209 (vrshrn_high_n_u32): Likewise.
9210 (vrshrn_high_n_u64): Likewise.
9211 (vshrn_high_n_s16): Likewise.
9212 (vshrn_high_n_s32): Likewise.
9213 (vshrn_high_n_s64): Likewise.
9214 (vshrn_high_n_u16): Likewise.
9215 (vshrn_high_n_u32): Likewise.
9216 (vshrn_high_n_u64): Likewise.
9217 * config/aarch64/aarch64-simd.md (*aarch64_<srn_op>shrn<mode>2_vect_le):
9218 Delete.
9219 (*aarch64_<srn_op>shrn<mode>2_vect_be): Likewise.
9220 (aarch64_shrn2<mode>_insn_le): Likewise.
9221 (aarch64_shrn2<mode>_insn_be): Likewise.
9222 (aarch64_shrn2<mode>): Likewise.
9223 (aarch64_rshrn2<mode>_insn_le): Likewise.
9224 (aarch64_rshrn2<mode>_insn_be): Likewise.
9225 (aarch64_rshrn2<mode>): Likewise.
9226 (aarch64_<sur>q<r>shr<u>n2_n<mode>_insn_le): Likewise.
9227 (aarch64_<shrn_op>shrn2_n<mode>_insn_le): New define_insn.
9228 (aarch64_<sur>q<r>shr<u>n2_n<mode>_insn_be): Delete.
9229 (aarch64_<shrn_op>shrn2_n<mode>_insn_be): New define_insn.
9230 (aarch64_<sur>q<r>shr<u>n2_n<mode>): Delete.
9231 (aarch64_<shrn_op>shrn2_n<mode>): New define_expand.
9232 (aarch64_<shrn_op>rshrn2_n<mode>_insn_le): New define_insn.
9233 (aarch64_<shrn_op>rshrn2_n<mode>_insn_be): New define_insn.
9234 (aarch64_<shrn_op>rshrn2_n<mode>): New define_expand.
9235 (aarch64_sqshrun2_n<mode>_insn_le): New define_insn.
9236 (aarch64_sqshrun2_n<mode>_insn_be): New define_insn.
9237 (aarch64_sqshrun2_n<mode>): New define_expand.
9238 (aarch64_sqrshrun2_n<mode>_insn_le): New define_insn.
9239 (aarch64_sqrshrun2_n<mode>_insn_be): New define_insn.
9240 (aarch64_sqrshrun2_n<mode>): New define_expand.
9241 * config/aarch64/iterators.md (UNSPEC_SQSHRUN, UNSPEC_SQRSHRUN,
9242 UNSPEC_SQSHRN, UNSPEC_UQSHRN, UNSPEC_SQRSHRN, UNSPEC_UQRSHRN):
9243 Delete unspec values.
9244 (VQSHRN_N): Delete int iterator.
9245
9246 2023-06-16 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
9247
9248 * config/aarch64/aarch64.h (AARCH64_VALID_SHRN_OP): Define.
9249 * config/aarch64/aarch64-simd.md
9250 (*aarch64_<shrn_op>shrn_n<mode>_insn<vczle><vczbe>): Rename to...
9251 (*aarch64_<shrn_op><shrn_s>shrn_n<mode>_insn<vczle><vczbe>): ... This.
9252 Use SHIFTRT iterator and add AARCH64_VALID_SHRN_OP to condition.
9253 * config/aarch64/iterators.md (shrn_s): New code attribute.
9254
9255 2023-06-16 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
9256
9257 * config/aarch64/aarch64-simd.md (aarch64_<sur>q<r>shr<u>n_n<mode>):
9258 Rename to...
9259 (aarch64_<shrn_op>shrn_n<mode>): ... This. Reimplement with RTL codes.
9260 (*aarch64_<shrn_op>rshrn_n<mode>_insn): New define_insn.
9261 (aarch64_sqrshrun_n<mode>_insn): Likewise.
9262 (aarch64_sqshrun_n<mode>_insn): Likewise.
9263 (aarch64_<shrn_op>rshrn_n<mode>): New define_expand.
9264 (aarch64_sqshrun_n<mode>): Likewise.
9265 (aarch64_sqrshrun_n<mode>): Likewise.
9266 * config/aarch64/iterators.md (V2XWIDE): Add HI and SI modes.
9267
9268 2023-06-16 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
9269
9270 * config/aarch64/aarch64-simd-builtins.def (shrn): Rename builtins to...
9271 (shrn_n): ... This.
9272 (rshrn): Rename builtins to...
9273 (rshrn_n): ... This.
9274 * config/aarch64/arm_neon.h (vshrn_n_s16): Adjust for the above.
9275 (vshrn_n_s32): Likewise.
9276 (vshrn_n_s64): Likewise.
9277 (vshrn_n_u16): Likewise.
9278 (vshrn_n_u32): Likewise.
9279 (vshrn_n_u64): Likewise.
9280 (vrshrn_n_s16): Likewise.
9281 (vrshrn_n_s32): Likewise.
9282 (vrshrn_n_s64): Likewise.
9283 (vrshrn_n_u16): Likewise.
9284 (vrshrn_n_u32): Likewise.
9285 (vrshrn_n_u64): Likewise.
9286 * config/aarch64/aarch64-simd.md
9287 (*aarch64_<srn_op>shrn<mode><vczle><vczbe>): Delete.
9288 (aarch64_shrn<mode>): Likewise.
9289 (aarch64_rshrn<mode><vczle><vczbe>_insn): Likewise.
9290 (aarch64_rshrn<mode>): Likewise.
9291 (aarch64_<sur>q<r>shr<u>n_n<mode>_insn<vczle><vczbe>): Likewise.
9292 (aarch64_<sur>q<r>shr<u>n_n<mode>): Likewise.
9293 (*aarch64_<shrn_op>shrn_n<mode>_insn<vczle><vczbe>): New define_insn.
9294 (*aarch64_<shrn_op>rshrn_n<mode>_insn<vczle><vczbe>): Likewise.
9295 (*aarch64_sqshrun_n<mode>_insn<vczle><vczbe>): Likewise.
9296 (*aarch64_sqrshrun_n<mode>_insn<vczle><vczbe>): Likewise.
9297 (aarch64_<shrn_op>shrn_n<mode>): New define_expand.
9298 (aarch64_<shrn_op>rshrn_n<mode>): Likewise.
9299 (aarch64_sqshrun_n<mode>): Likewise.
9300 (aarch64_sqrshrun_n<mode>): Likewise.
9301 * config/aarch64/iterators.md (ALL_TRUNC): New code iterator.
9302 (TRUNCEXTEND): New code attribute.
9303 (TRUNC_SHIFT): Likewise.
9304 (shrn_op): Likewise.
9305 * config/aarch64/predicates.md (aarch64_simd_umax_quarter_mode):
9306 New predicate.
9307
9308 2023-06-16 Pan Li <pan2.li@intel.com>
9309
9310 * config/riscv/riscv-vsetvl.cc
9311 (pass_vsetvl::global_eliminate_vsetvl_insn): Initialize var by NULL.
9312
9313 2023-06-16 Richard Biener <rguenther@suse.de>
9314
9315 PR tree-optimization/110278
9316 * match.pd (uns < (typeof uns)(uns != 0) -> false): New.
9317 (x != (typeof x)(x == 0) -> true): Likewise.
9318
9319 2023-06-16 Pali Rohár <pali@kernel.org>
9320
9321 * config/i386/mingw-w64.h (CPP_SPEC): Adjust for -mcrtdll=.
9322 (REAL_LIBGCC_SPEC): New define.
9323 * config/i386/mingw.opt: Add mcrtdll=
9324 * config/i386/mingw32.h (CPP_SPEC): Adjust for -mcrtdll=.
9325 (REAL_LIBGCC_SPEC): Adjust for -mcrtdll=.
9326 (STARTFILE_SPEC): Adjust for -mcrtdll=.
9327 * doc/invoke.texi: Add mcrtdll= documentation.
9328
9329 2023-06-16 Simon Dardis <simon.dardis@imgtec.com>
9330
9331 * config/mips/mips.cc (enum mips_code_readable_setting):New enmu.
9332 (mips_handle_code_readable_attr):New static function.
9333 (mips_get_code_readable_attr):New static enum function.
9334 (mips_set_current_function):Set the code_readable mode.
9335 (mips_option_override):Same as above.
9336 * doc/extend.texi:Document code_readable.
9337
9338 2023-06-16 Richard Biener <rguenther@suse.de>
9339
9340 PR tree-optimization/110269
9341 * fold-const.cc (fold_binary_loc): Merge x != 0 folding
9342 with tree_expr_nonzero_p ...
9343 * match.pd (cmp (convert? addr@0) integer_zerop): With this
9344 pattern.
9345
9346 2023-06-15 Marek Polacek <polacek@redhat.com>
9347
9348 * Makefile.in: Set LD_PICFLAG. Use it. Set enable_host_pie.
9349 Remove NO_PIE_CFLAGS and NO_PIE_FLAG. Pass LD_PICFLAG to
9350 ALL_LINKERFLAGS. Use the "pic" build of libiberty if --enable-host-pie.
9351 * configure.ac (--enable-host-shared): Don't set PICFLAG here.
9352 (--enable-host-pie): New check. Set PICFLAG and LD_PICFLAG after this
9353 check.
9354 * configure: Regenerate.
9355 * doc/install.texi: Document --enable-host-pie.
9356
9357 2023-06-15 Manolis Tsamis <manolis.tsamis@vrull.eu>
9358
9359 * regcprop.cc (maybe_mode_change): Enable stack pointer
9360 propagation.
9361
9362 2023-06-15 Andrew MacLeod <amacleod@redhat.com>
9363
9364 PR tree-optimization/110266
9365 * gimple-range-fold.cc (adjust_imagpart_expr): Check for integer
9366 complex type.
9367 (adjust_realpart_expr): Ditto.
9368
9369 2023-06-15 Jan Beulich <jbeulich@suse.com>
9370
9371 * config/i386/sse.md (<avx512>_vec_dup<mode><mask_name>): Use
9372 vmovddup.
9373
9374 2023-06-15 Jan Beulich <jbeulich@suse.com>
9375
9376 * config/i386/constraints.md: Mention k and r for B.
9377
9378 2023-06-15 Lulu Cheng <chenglulu@loongson.cn>
9379 Andrew Pinski <apinski@marvell.com>
9380
9381 PR target/110136
9382 * config/loongarch/loongarch.md: Modify the register constraints for template
9383 "jumptable" and "indirect_jump" from "r" to "e".
9384
9385 2023-06-15 Xi Ruoyao <xry111@xry111.site>
9386
9387 * config/loongarch/loongarch-tune.h (loongarch_align): New
9388 struct.
9389 * config/loongarch/loongarch-def.h (loongarch_cpu_align): New
9390 array.
9391 * config/loongarch/loongarch-def.c (loongarch_cpu_align): Define
9392 the array.
9393 * config/loongarch/loongarch.cc
9394 (loongarch_option_override_internal): Set the value of
9395 -falign-functions= if -falign-functions is enabled but no value
9396 is given. Likewise for -falign-labels=.
9397
9398 2023-06-15 Jakub Jelinek <jakub@redhat.com>
9399
9400 PR middle-end/79173
9401 * internal-fn.def (UADDC, USUBC): New internal functions.
9402 * internal-fn.cc (expand_UADDC, expand_USUBC): New functions.
9403 (commutative_ternary_fn_p): Return true also for IFN_UADDC.
9404 * optabs.def (uaddc5_optab, usubc5_optab): New optabs.
9405 * tree-ssa-math-opts.cc (uaddc_cast, uaddc_ne0, uaddc_is_cplxpart,
9406 match_uaddc_usubc): New functions.
9407 (math_opts_dom_walker::after_dom_children): Call match_uaddc_usubc
9408 for PLUS_EXPR, MINUS_EXPR, BIT_IOR_EXPR and BIT_XOR_EXPR unless
9409 other optimizations have been successful for those.
9410 * gimple-fold.cc (gimple_fold_call): Handle IFN_UADDC and IFN_USUBC.
9411 * fold-const-call.cc (fold_const_call): Likewise.
9412 * gimple-range-fold.cc (adjust_imagpart_expr): Likewise.
9413 * tree-ssa-dce.cc (eliminate_unnecessary_stmts): Likewise.
9414 * doc/md.texi (uaddc<mode>5, usubc<mode>5): Document new named
9415 patterns.
9416 * config/i386/i386.md (uaddc<mode>5, usubc<mode>5): New
9417 define_expand patterns.
9418 (*setcc_qi_addqi3_cconly_overflow_1_<mode>, *setccc): Split
9419 into NOTE_INSN_DELETED note rather than nop instruction.
9420 (*setcc_qi_negqi_ccc_1_<mode>, *setcc_qi_negqi_ccc_2_<mode>):
9421 Likewise.
9422
9423 2023-06-15 Jakub Jelinek <jakub@redhat.com>
9424
9425 PR middle-end/79173
9426 * config/i386/i386.md (subborrow<mode>): Add alternative with
9427 memory destination and add for it define_peephole2
9428 TARGET_READ_MODIFY_WRITE/-Os patterns to prefer using memory
9429 destination in these patterns.
9430
9431 2023-06-15 Jakub Jelinek <jakub@redhat.com>
9432
9433 PR middle-end/79173
9434 * config/i386/i386.md (*sub<mode>_3, @add<mode>3_carry,
9435 addcarry<mode>, @sub<mode>3_carry, *add<mode>3_cc_overflow_1): Add
9436 define_peephole2 TARGET_READ_MODIFY_WRITE/-Os patterns to prefer
9437 using memory destination in these patterns.
9438
9439 2023-06-15 Jakub Jelinek <jakub@redhat.com>
9440
9441 * gimple-fold.cc (gimple_fold_call): Move handling of arg0
9442 as well as arg1 INTEGER_CSTs for .UBSAN_CHECK_{ADD,SUB,MUL}
9443 and .{ADD,SUB,MUL}_OVERFLOW calls from here...
9444 * fold-const-call.cc (fold_const_call): ... here.
9445
9446 2023-06-15 Oluwatamilore Adebayo <oluwatamilore.adebayo@arm.com>
9447
9448 * config/aarch64/aarch64-simd.md (aarch64_<su>abd<mode>):
9449 Rename to <su>abd<mode>3.
9450 * config/aarch64/aarch64-sve.md (<su>abd<mode>_3): Rename
9451 to <su>abd<mode>3.
9452
9453 2023-06-15 Oluwatamilore Adebayo <oluwatamilore.adebayo@arm.com>
9454
9455 * doc/md.texi (sabd, uabd): Document them.
9456 * internal-fn.def (ABD): Use new optab.
9457 * optabs.def (sabd_optab, uabd_optab): New optabs,
9458 * tree-vect-patterns.cc (vect_recog_absolute_difference):
9459 Recognize the following idiom abs (a - b).
9460 (vect_recog_sad_pattern): Refactor to use
9461 vect_recog_absolute_difference.
9462 (vect_recog_abd_pattern): Use patterns found by
9463 vect_recog_absolute_difference to build a new ABD
9464 internal call.
9465
9466 2023-06-15 chenxiaolong <chenxl04200420@163.com>
9467
9468 * config/loongarch/loongarch.h (LARCH_CALL_RATIO): Modify the value
9469 of macro LARCH_CALL_RATIO on LoongArch to make it perform optimally.
9470
9471 2023-06-15 Juzhe-Zhong <juzhe.zhong@rivai.ai>
9472
9473 * config/riscv/riscv-v.cc (shuffle_merge_patterns): New pattern.
9474 (expand_vec_perm_const_1): Add merge optmization.
9475
9476 2023-06-15 Lehua Ding <lehua.ding@rivai.ai>
9477
9478 PR target/110119
9479 * config/riscv/riscv.cc (riscv_get_arg_info): Return NULL_RTX for vector mode
9480 (riscv_pass_by_reference): Return true for vector mode
9481
9482 2023-06-15 Pan Li <pan2.li@intel.com>
9483
9484 * config/riscv/autovec-opt.md: Align the predictor sytle.
9485 * config/riscv/autovec.md: Ditto.
9486
9487 2023-06-15 Pan Li <pan2.li@intel.com>
9488
9489 * config/riscv/riscv-v.cc (rvv_builder::get_merge_scalar_mask):
9490 Take elen instead of scalar BITS_PER_WORD.
9491 (expand_vector_init_merge_repeating_sequence): Use inner_bits_size
9492 instead of scaler BITS_PER_WORD.
9493
9494 2023-06-14 Jivan Hakobyan <jivanhakobyan9@gmail.com>
9495
9496 * config/moxie/uclinux.h (MFWRAP_SPEC): Remove
9497
9498 2023-06-14 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
9499
9500 * config/aarch64/aarch64-sve-builtins-base.cc (svlast_impl::fold):
9501 Fix signed comparison warning in loop from npats to enelts.
9502
9503 2023-06-14 Thomas Schwinge <thomas@codesourcery.com>
9504
9505 * gcc.cc (driver_handle_option): Forward host '-lgfortran', '-lm'
9506 to offloading compilation.
9507 * config/gcn/mkoffload.cc (main): Adjust.
9508 * config/nvptx/mkoffload.cc (main): Likewise.
9509 * doc/invoke.texi (foffload-options): Update example.
9510
9511 2023-06-14 liuhongt <hongtao.liu@intel.com>
9512
9513 PR target/110227
9514 * config/i386/sse.md (mov<mode>_internal>): Use x instead of v
9515 for alternative 2 since there's no evex version for vpcmpeqd
9516 ymm, ymm, ymm.
9517
9518 2023-06-13 Jeff Law <jlaw@ventanamicro.com>
9519
9520 * gcc.cc (LINK_COMMAND_SPEC): Remove mudflap spec handling.
9521
9522 2023-06-13 Jeff Law <jlaw@ventanamicro.com>
9523
9524 * config/sh/divtab.cc: Remove.
9525
9526 2023-06-13 Jakub Jelinek <jakub@redhat.com>
9527
9528 * config/i386/i386.cc (standard_sse_constant_opcode): Remove
9529 superfluous spaces around \t for vpcmpeqd.
9530
9531 2023-06-13 Roger Sayle <roger@nextmovesoftware.com>
9532
9533 * expr.cc (store_constructor) <case VECTOR_TYPE>: Don't bother
9534 clearing vectors with only a single element. Set CLEARED if the
9535 vector was initialized to zero.
9536
9537 2023-06-13 Lehua Ding <lehua.ding@rivai.ai>
9538
9539 * config/riscv/riscv-v.cc (struct mode_vtype_group): Remove duplicate
9540 #include.
9541 (ENTRY): Undef.
9542 (TUPLE_ENTRY): Undef.
9543
9544 2023-06-13 Juzhe-Zhong <juzhe.zhong@rivai.ai>
9545
9546 * config/riscv/riscv-v.cc (rvv_builder::single_step_npatterns_p): Add comment.
9547 (shuffle_generic_patterns): Ditto.
9548 (expand_vec_perm_const_1): Ditto.
9549
9550 2023-06-13 Juzhe-Zhong <juzhe.zhong@rivai.ai>
9551
9552 * config/riscv/riscv-v.cc (emit_vlmax_decompress_insn): Fix bug.
9553 (shuffle_decompress_patterns): Ditto.
9554
9555 2023-06-13 Richard Biener <rguenther@suse.de>
9556
9557 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Free loop BBs.
9558
9559 2023-06-13 Yanzhang Wang <yanzhang.wang@intel.com>
9560 Kito Cheng <kito.cheng@sifive.com>
9561
9562 * config/riscv/riscv-protos.h (riscv_init_cumulative_args): Set
9563 warning flag if func is not builtin
9564 * config/riscv/riscv.cc
9565 (riscv_scalable_vector_type_p): Determine whether the type is scalable vector.
9566 (riscv_arg_has_vector): Determine whether the arg is vector type.
9567 (riscv_pass_in_vector_p): Check the vector type param is passed by value.
9568 (riscv_init_cumulative_args): The same as header.
9569 (riscv_get_arg_info): Add the checking.
9570 (riscv_function_value): Check the func return and set warning flag
9571 * config/riscv/riscv.h (INIT_CUMULATIVE_ARGS): Add a flag to
9572 determine whether warning psabi or not.
9573
9574 2023-06-13 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
9575
9576 * config/arm/arm-opts.h (enum arm_tp_type): Remove TP_CP15.
9577 Add TP_TPIDRURW, TP_TPIDRURO, TP_TPIDRPRW values.
9578 * config/arm/arm-protos.h (arm_output_load_tpidr): Declare prototype.
9579 * config/arm/arm.cc (arm_option_reconfigure_globals): Replace TP_CP15
9580 with TP_TPIDRURO.
9581 (arm_output_load_tpidr): Define.
9582 * config/arm/arm.h (TARGET_HARD_TP): Define in terms of TARGET_SOFT_TP.
9583 * config/arm/arm.md (load_tp_hard): Call arm_output_load_tpidr to output
9584 assembly.
9585 (reload_tp_hard): Likewise.
9586 * config/arm/arm.opt (tpidrurw, tpidruro, tpidrprw): New values for
9587 arm_tp_type.
9588 * doc/invoke.texi (Arm Options, mtp): Document new values.
9589
9590 2023-06-13 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
9591
9592 PR target/108779
9593 * config/aarch64/aarch64-opts.h (enum aarch64_tp_reg): Add
9594 AARCH64_TPIDRRO_EL0 value.
9595 * config/aarch64/aarch64.cc (aarch64_output_load_tp): Define.
9596 * config/aarch64/aarch64.opt (tpidr_el0, tpidr_el1, tpidr_el2,
9597 tpidr_el3, tpidrro_el3): New accepted values to -mtp=.
9598 * doc/invoke.texi (AArch64 Options): Document new -mtp= options.
9599
9600 2023-06-13 Alexandre Oliva <oliva@adacore.com>
9601
9602 * range-op-float.cc (frange_nextafter): Drop inline.
9603 (frelop_early_resolve): Add static.
9604 (frange_float): Likewise.
9605
9606 2023-06-13 Richard Biener <rguenther@suse.de>
9607
9608 PR middle-end/110232
9609 * fold-const.cc (native_interpret_vector): Use TYPE_SIZE_UNIT
9610 to check whether the buffer covers the whole vector.
9611
9612 2023-06-13 Richard Biener <rguenther@suse.de>
9613
9614 * tree-ssa-alias.cc (ref_maybe_used_by_call_p_1): For
9615 .MASK_LOAD and friends set the size of the access to unknown.
9616
9617 2023-06-13 Tejas Belagod <tbelagod@arm.com>
9618
9619 PR target/96339
9620 * config/aarch64/aarch64-sve-builtins-base.cc (svlast_impl::fold): Fold sve
9621 calls that have a constant input predicate vector.
9622 (svlast_impl::is_lasta): Query to check if intrinsic is svlasta.
9623 (svlast_impl::is_lastb): Query to check if intrinsic is svlastb.
9624 (svlast_impl::vect_all_same): Check if all vector elements are equal.
9625
9626 2023-06-13 Andi Kleen <ak@linux.intel.com>
9627
9628 * config/i386/gcc-auto-profile: Regenerate.
9629
9630 2023-06-13 Juzhe-Zhong <juzhe.zhong@rivai.ai>
9631
9632 * config/riscv/vector-iterators.md: Fix requirement.
9633
9634 2023-06-13 Juzhe-Zhong <juzhe.zhong@rivai.ai>
9635
9636 * config/riscv/riscv-v.cc (emit_vlmax_decompress_insn): New function.
9637 (shuffle_decompress_patterns): New function.
9638 (expand_vec_perm_const_1): Add decompress optimization.
9639
9640 2023-06-12 Jeff Law <jlaw@ventanamicro.com>
9641
9642 PR rtl-optimization/101188
9643 * postreload.cc (reload_cse_move2add_invalidate): New function,
9644 extracted from...
9645 (reload_cse_move2add): Call reload_cse_move2add_invalidate.
9646
9647 2023-06-12 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
9648
9649 * config/aarch64/aarch64.cc (aarch64_expand_vector_init): Tweak condition
9650 if (n_var == n_elts && n_elts <= 16) to allow a single constant,
9651 and if maxv == 1, use constant element for duplicating into register.
9652
9653 2023-06-12 Tobias Burnus <tobias@codesourcery.com>
9654
9655 * gimplify.cc (gimplify_adjust_omp_clauses_1): Use
9656 GOMP_MAP_FORCE_PRESENT for 'present alloc' implicit mapping.
9657 (gimplify_adjust_omp_clauses): Change
9658 GOMP_MAP_PRESENT_{TO,TOFROM,FROM,ALLOC} to the equivalent
9659 GOMP_MAP_FORCE_PRESENT.
9660 * omp-low.cc (lower_omp_target): Remove handling of no-longer valid
9661 GOMP_MAP_PRESENT_{TO,TOFROM,FROM,ALLOC}; update map kinds used for
9662 to/from clauses with present modifier.
9663
9664 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
9665
9666 PR tree-optimization/110205
9667 * range-op-float.cc (range_operator::fold_range): Add default FII
9668 fold routine.
9669 * range-op-mixed.h (class operator_gt): Add missing final overrides.
9670 * range-op.cc (range_op_handler::fold_range): Add RO_FII case.
9671 (operator_lshift ::update_bitmask): Add final override.
9672 (operator_rshift ::update_bitmask): Add final override.
9673 * range-op.h (range_operator::fold_range): Add FII prototype.
9674
9675 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
9676
9677 * gimple-range-op.cc (gimple_range_op_handler::maybe_non_standard):
9678 Use range_op_handler directly.
9679 * range-op.cc (range_op_handler::range_op_handler): Unsigned
9680 param instead of tree-code.
9681 (ptr_op_widen_plus_signed): Delete.
9682 (ptr_op_widen_plus_unsigned): Delete.
9683 (ptr_op_widen_mult_signed): Delete.
9684 (ptr_op_widen_mult_unsigned): Delete.
9685 (range_op_table::initialize_integral_ops): Add new opcodes.
9686 * range-op.h (range_op_handler): Use unsigned.
9687 (OP_WIDEN_MULT_SIGNED): New.
9688 (OP_WIDEN_MULT_UNSIGNED): New.
9689 (OP_WIDEN_PLUS_SIGNED): New.
9690 (OP_WIDEN_PLUS_UNSIGNED): New.
9691 (RANGE_OP_TABLE_SIZE): New.
9692 (range_op_table::operator []): Use unsigned.
9693 (range_op_table::set): Use unsigned.
9694 (m_range_tree): Make unsigned.
9695 (ptr_op_widen_mult_signed): Remove.
9696 (ptr_op_widen_mult_unsigned): Remove.
9697 (ptr_op_widen_plus_signed): Remove.
9698 (ptr_op_widen_plus_unsigned): Remove.
9699
9700 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
9701
9702 * gimple-range-op.cc (gimple_range_op_handler): Set m_operator
9703 manually as there is no access to the default operator.
9704 (cfn_copysign::fold_range): Don't check for validity.
9705 (cfn_ubsan::fold_range): Ditto.
9706 (gimple_range_op_handler::maybe_builtin_call): Don't set to NULL.
9707 * range-op.cc (default_operator): New.
9708 (range_op_handler::range_op_handler): Use default_operator
9709 instead of NULL.
9710 (range_op_handler::operator bool): Move from header, compare
9711 against default operator.
9712 (range_op_handler::range_op): New.
9713 * range-op.h (range_op_handler::operator bool): Move.
9714
9715 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
9716
9717 * range-op.cc (unified_table): Delete.
9718 (range_op_table operator_table): Instantiate.
9719 (range_op_table::range_op_table): Rename from unified_table.
9720 (range_op_handler::range_op_handler): Use range_op_table.
9721 * range-op.h (range_op_table::operator []): Inline.
9722 (range_op_table::set): Inline.
9723
9724 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
9725
9726 * gimple-range-gori.cc (gori_compute::condexpr_adjust): Do not
9727 pass type.
9728 * gimple-range-op.cc (get_code): Rename from get_code_and_type
9729 and simplify.
9730 (gimple_range_op_handler::supported_p): No need for type.
9731 (gimple_range_op_handler::gimple_range_op_handler): Ditto.
9732 (cfn_copysign::fold_range): Ditto.
9733 (cfn_ubsan::fold_range): Ditto.
9734 * ipa-cp.cc (ipa_vr_operation_and_type_effects): Ditto.
9735 * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Ditto.
9736 * range-op-float.cc (operator_plus::op1_range): Ditto.
9737 (operator_mult::op1_range): Ditto.
9738 (range_op_float_tests): Ditto.
9739 * range-op.cc (get_op_handler): Remove.
9740 (range_op_handler::set_op_handler): Remove.
9741 (operator_plus::op1_range): No need for type.
9742 (operator_minus::op1_range): Ditto.
9743 (operator_mult::op1_range): Ditto.
9744 (operator_exact_divide::op1_range): Ditto.
9745 (operator_cast::op1_range): Ditto.
9746 (perator_bitwise_not::fold_range): Ditto.
9747 (operator_negate::fold_range): Ditto.
9748 * range-op.h (range_op_handler::range_op_handler): Remove type param.
9749 (range_cast): No need for type.
9750 (range_op_table::operator[]): Check for enum_code >= 0.
9751 * tree-data-ref.cc (compute_distributive_range): No need for type.
9752 * tree-ssa-loop-unswitch.cc (unswitch_predicate): Ditto.
9753 * value-query.cc (range_query::get_tree_range): Ditto.
9754 * value-relation.cc (relation_oracle::validate_relation): Ditto.
9755 * vr-values.cc (range_of_var_in_loop): Ditto.
9756 (simplify_using_ranges::fold_cond_with_ops): Ditto.
9757
9758 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
9759
9760 * range-op-mixed.h (operator_max): Remove final.
9761 * range-op-ptr.cc (pointer_table::pointer_table): Remove MAX_EXPR.
9762 (pointer_table::pointer_table): Remove.
9763 (class hybrid_max_operator): New.
9764 (range_op_table::initialize_pointer_ops): Add hybrid_max_operator.
9765 * range-op.cc (pointer_tree_table): Remove.
9766 (unified_table::unified_table): Comment out MAX_EXPR.
9767 (get_op_handler): Remove check of pointer table.
9768 * range-op.h (class pointer_table): Remove.
9769
9770 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
9771
9772 * range-op-mixed.h (operator_min): Remove final.
9773 * range-op-ptr.cc (pointer_table::pointer_table): Remove MIN_EXPR.
9774 (class hybrid_min_operator): New.
9775 (range_op_table::initialize_pointer_ops): Add hybrid_min_operator.
9776 * range-op.cc (unified_table::unified_table): Comment out MIN_EXPR.
9777
9778 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
9779
9780 * range-op-mixed.h (operator_bitwise_or): Remove final.
9781 * range-op-ptr.cc (pointer_table::pointer_table): Remove BIT_IOR_EXPR.
9782 (class hybrid_or_operator): New.
9783 (range_op_table::initialize_pointer_ops): Add hybrid_or_operator.
9784 * range-op.cc (unified_table::unified_table): Comment out BIT_IOR_EXPR.
9785
9786 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
9787
9788 * range-op-mixed.h (operator_bitwise_and): Remove final.
9789 * range-op-ptr.cc (pointer_table::pointer_table): Remove BIT_AND_EXPR.
9790 (class hybrid_and_operator): New.
9791 (range_op_table::initialize_pointer_ops): Add hybrid_and_operator.
9792 * range-op.cc (unified_table::unified_table): Comment out BIT_AND_EXPR.
9793
9794 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
9795
9796 * Makefile.in (OBJS): Add range-op-ptr.o.
9797 * range-op-mixed.h (update_known_bitmask): Move prototype here.
9798 (minus_op1_op2_relation_effect): Move prototype here.
9799 (wi_includes_zero_p): Move function to here.
9800 (wi_zero_p): Ditto.
9801 * range-op.cc (update_known_bitmask): Remove static.
9802 (wi_includes_zero_p): Move to header.
9803 (wi_zero_p): Move to header.
9804 (minus_op1_op2_relation_effect): Remove static.
9805 (operator_pointer_diff): Move class and routines to range-op-ptr.cc.
9806 (pointer_plus_operator): Ditto.
9807 (pointer_min_max_operator): Ditto.
9808 (pointer_and_operator): Ditto.
9809 (pointer_or_operator): Ditto.
9810 (pointer_table): Ditto.
9811 (range_op_table::initialize_pointer_ops): Ditto.
9812 * range-op-ptr.cc: New.
9813
9814 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
9815
9816 * range-op-mixed.h (class operator_max): Move from...
9817 * range-op.cc (unified_table::unified_table): Add MAX_EXPR.
9818 (get_op_handler): Remove the integral table.
9819 (class operator_max): Move from here.
9820 (integral_table::integral_table): Delete.
9821 * range-op.h (class integral_table): Delete.
9822
9823 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
9824
9825 * range-op-mixed.h (class operator_min): Move from...
9826 * range-op.cc (unified_table::unified_table): Add MIN_EXPR.
9827 (class operator_min): Move from here.
9828 (integral_table::integral_table): Remove MIN_EXPR.
9829
9830 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
9831
9832 * range-op-mixed.h (class operator_bitwise_or): Move from...
9833 * range-op.cc (unified_table::unified_table): Add BIT_IOR_EXPR.
9834 (class operator_bitwise_or): Move from here.
9835 (integral_table::integral_table): Remove BIT_IOR_EXPR.
9836
9837 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
9838
9839 * range-op-mixed.h (class operator_bitwise_and): Move from...
9840 * range-op.cc (unified_table::unified_table): Add BIT_AND_EXPR.
9841 (get_op_handler): Check for a pointer table entry first.
9842 (class operator_bitwise_and): Move from here.
9843 (integral_table::integral_table): Remove BIT_AND_EXPR.
9844
9845 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
9846
9847 * range-op-mixed.h (class operator_bitwise_xor): Move from...
9848 * range-op.cc (unified_table::unified_table): Add BIT_XOR_EXPR.
9849 (class operator_bitwise_xor): Move from here.
9850 (integral_table::integral_table): Remove BIT_XOR_EXPR.
9851 (pointer_table::pointer_table): Remove BIT_XOR_EXPR.
9852
9853 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
9854
9855 * range-op-mixed.h (class operator_bitwise_not): Move from...
9856 * range-op.cc (unified_table::unified_table): Add BIT_NOT_EXPR.
9857 (class operator_bitwise_not): Move from here.
9858 (integral_table::integral_table): Remove BIT_NOT_EXPR.
9859 (pointer_table::pointer_table): Remove BIT_NOT_EXPR.
9860
9861 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
9862
9863 * range-op-mixed.h (class operator_addr_expr): Move from...
9864 * range-op.cc (unified_table::unified_table): Add ADDR_EXPR.
9865 (class operator_addr_expr): Move from here.
9866 (integral_table::integral_table): Remove ADDR_EXPR.
9867 (pointer_table::pointer_table): Remove ADDR_EXPR.
9868
9869 2023-06-12 Pan Li <pan2.li@intel.com>
9870
9871 * config/riscv/riscv-vector-builtins-types.def
9872 (vfloat16m1_t): Add type to lmul1 ops.
9873 (vfloat16m2_t): Likewise.
9874 (vfloat16m4_t): Likewise.
9875
9876 2023-06-12 Richard Biener <rguenther@suse.de>
9877
9878 * tree-ssa-alias.cc (call_may_clobber_ref_p_1): For
9879 .MASK_STORE and friend set the size of the access to
9880 unknown.
9881
9882 2023-06-12 Tamar Christina <tamar.christina@arm.com>
9883
9884 * config.in: Regenerate.
9885 * configure: Regenerate.
9886 * configure.ac: Remove DEFAULT_MATCHPD_PARTITIONS.
9887
9888 2023-06-12 Juzhe-Zhong <juzhe.zhong@rivai.ai>
9889
9890 * config/riscv/autovec-opt.md
9891 (*v<any_shiftrt:optab><any_extend:optab>trunc<mode>): New pattern.
9892 (*<any_shiftrt:optab>trunc<mode>): Ditto.
9893 * config/riscv/autovec.md (<optab><mode>3): Change to
9894 define_insn_and_split.
9895 (v<optab><mode>3): Ditto.
9896 (trunc<mode><v_double_trunc>2): Ditto.
9897
9898 2023-06-12 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
9899
9900 * simplify-rtx.cc (simplify_const_unary_operation):
9901 Handle US_TRUNCATE, SS_TRUNCATE.
9902
9903 2023-06-12 Eric Botcazou <ebotcazou@adacore.com>
9904
9905 PR modula2/109952
9906 * doc/gm2.texi (Standard procedures): Fix Next link.
9907
9908 2023-06-12 Tamar Christina <tamar.christina@arm.com>
9909
9910 * config.in: Regenerate.
9911
9912 2023-06-12 Andre Vieira <andre.simoesdiasvieira@arm.com>
9913
9914 PR middle-end/110142
9915 * tree-vect-patterns.cc (vect_recog_widen_op_pattern): Don't pass
9916 subtype to vect_widened_op_tree and remove subtype parameter, also
9917 remove superfluous overloaded function definition.
9918 (vect_recog_widen_plus_pattern): Remove subtype parameter and dont pass
9919 to call to vect_recog_widen_op_pattern.
9920 (vect_recog_widen_minus_pattern): Likewise.
9921
9922 2023-06-12 liuhongt <hongtao.liu@intel.com>
9923
9924 * config/i386/sse.md (vec_pack<floatprefix>_float_<mode>): New expander.
9925 (vec_unpack_<fixprefix>fix_trunc_lo_<mode>): Ditto.
9926 (vec_unpack_<fixprefix>fix_trunc_hi_<mode>): Ditto.
9927 (vec_unpacks_lo_<mode>): Ditto.
9928 (vec_unpacks_hi_<mode>): Ditto.
9929 (sse_movlhps_<mode>): New define_insn.
9930 (ssse3_palignr<mode>_perm): Extend to V_128H.
9931 (V_128H): New mode iterator.
9932 (ssepackPHmode): New mode attribute.
9933 (vunpck_extract_mode): Ditto.
9934 (vpckfloat_concat_mode): Extend to VxSI/VxSF for _Float16.
9935 (vpckfloat_temp_mode): Ditto.
9936 (vpckfloat_op_mode): Ditto.
9937 (vunpckfixt_mode): Extend to VxHF.
9938 (vunpckfixt_model): Ditto.
9939 (vunpckfixt_extract_mode): Ditto.
9940
9941 2023-06-12 Richard Biener <rguenther@suse.de>
9942
9943 PR middle-end/110200
9944 * genmatch.cc (expr::gen_transform): Put braces around
9945 the if arm for the (convert ...) short-cut.
9946
9947 2023-06-12 Kewen Lin <linkw@linux.ibm.com>
9948
9949 PR target/109932
9950 * config/rs6000/rs6000-builtins.def (__builtin_pack_vector_int128,
9951 __builtin_unpack_vector_int128): Move from stanza power7 to vsx.
9952
9953 2023-06-12 Kewen Lin <linkw@linux.ibm.com>
9954
9955 PR target/110011
9956 * config/rs6000/rs6000.cc (output_toc): Use the mode of the 128-bit
9957 floating constant itself for real_to_target call.
9958
9959 2023-06-12 Pan Li <pan2.li@intel.com>
9960
9961 * config/riscv/riscv-vector-builtins-types.def
9962 (vfloat16mf4_t): Add type to X2/X4/X8/X16/X32 vlmul ext ops.
9963 (vfloat16mf2_t): Ditto.
9964 (vfloat16m1_t): Ditto.
9965 (vfloat16m2_t): Ditto.
9966 (vfloat16m4_t): Ditto.
9967
9968 2023-06-12 David Edelsohn <dje.gcc@gmail.com>
9969
9970 * config/rs6000/rs6000-logue.cc (rs6000_stack_info):
9971 Do not require a stack frame when debugging is enabled for AIX.
9972
9973 2023-06-11 Georg-Johann Lay <avr@gjlay.de>
9974
9975 * config/avr/avr.md (adjust_len) [insv_notbit_0, insv_notbit_7]:
9976 Remove attribute values.
9977 (insv_notbit): New post-reload insn.
9978 (*insv.not-shiftrt_split, *insv.xor1-bit.0_split)
9979 (*insv.not-bit.0_split, *insv.not-bit.7_split)
9980 (*insv.xor-extract_split): Split to insv_notbit.
9981 (*insv.not-shiftrt, *insv.xor1-bit.0, *insv.not-bit.0, *insv.not-bit.7)
9982 (*insv.xor-extract): Remove post-reload insns.
9983 * config/avr/avr.cc (avr_out_insert_notbit) [bitno]: Remove parameter.
9984 (avr_adjust_insn_length): Adjust call of avr_out_insert_notbit.
9985 [ADJUST_LEN_INSV_NOTBIT_0, ADJUST_LEN_INSV_NOTBIT_7]: Remove cases.
9986 * config/avr/avr-protos.h (avr_out_insert_notbit): Adjust prototype.
9987
9988 2023-06-11 Georg-Johann Lay <avr@gjlay.de>
9989
9990 PR target/109907
9991 * config/avr/avr.md (adjust_len) [extr, extr_not]: New elements.
9992 (MSB, SIZE): New mode attributes.
9993 (any_shift): New code iterator.
9994 (*lshr<mode>3_split, *lshr<mode>3, lshr<mode>3)
9995 (*lshr<mode>3_const_split): Add constraint alternative for
9996 the case of shift-offset = MSB. Ditch "length" attribute.
9997 (extzv<mode): New. replaces extzv. Adjust following patterns.
9998 Use avr_out_extr, avr_out_extr_not to print asm.
9999 (*extzv.subreg.<mode>, *extzv.<mode>.subreg, *extzv.xor)
10000 (*extzv<mode>.ge, *neg.ashiftrt<mode>.msb, *extzv.io.lsr7): New.
10001 * config/avr/constraints.md (C15, C23, C31, Yil): New
10002 * config/avr/predicates.md (reg_or_low_io_operand)
10003 (const7_operand, reg_or_low_io_operand)
10004 (const15_operand, const_0_to_15_operand)
10005 (const23_operand, const_0_to_23_operand)
10006 (const31_operand, const_0_to_31_operand): New.
10007 * config/avr/avr-protos.h (avr_out_extr, avr_out_extr_not): New.
10008 * config/avr/avr.cc (avr_out_extr, avr_out_extr_not): New funcs.
10009 (lshrqi3_out, lshrhi3_out, lshrpsi3_out, lshrsi3_out): Adjust
10010 MSB case to new insn constraint "r" for operands[1].
10011 (avr_adjust_insn_length) [ADJUST_LEN_EXTR_NOT, ADJUST_LEN_EXTR]:
10012 Handle these cases.
10013 (avr_rtx_costs_1): Adjust cost for a new pattern.
10014
10015 2023-06-11 Juzhe-Zhong <juzhe.zhong@rivai.ai>
10016
10017 * config/riscv/riscv-vsetvl.cc (available_occurrence_p): Enhance user vsetvl optimization.
10018 (vector_insn_info::parse_insn): Add rtx_insn parse.
10019 (pass_vsetvl::local_eliminate_vsetvl_insn): Enhance user vsetvl optimization.
10020 (get_first_vsetvl): New function.
10021 (pass_vsetvl::global_eliminate_vsetvl_insn): Ditto.
10022 (pass_vsetvl::cleanup_insns): Remove it.
10023 (pass_vsetvl::ssa_post_optimization): New function.
10024 (has_no_uses): Ditto.
10025 (pass_vsetvl::propagate_avl): Remove it.
10026 (pass_vsetvl::df_post_optimization): New function.
10027 (pass_vsetvl::lazy_vsetvl): Rework Phase 5 && Phase 6.
10028 * config/riscv/riscv-vsetvl.h: Adapt declaration.
10029
10030 2023-06-10 Aldy Hernandez <aldyh@redhat.com>
10031
10032 * ipa-cp.cc (ipcp_vr_lattice::init): Take type argument.
10033 (ipcp_vr_lattice::print): Call dump method.
10034 (ipcp_vr_lattice::meet_with): Adjust for m_vr being a
10035 Value_Range.
10036 (ipcp_vr_lattice::meet_with_1): Make argument a reference.
10037 (ipcp_vr_lattice::set_to_bottom): Set varying for an unsupported
10038 range.
10039 (initialize_node_lattices): Pass type when appropriate.
10040 (ipa_vr_operation_and_type_effects): Make type agnostic.
10041 (ipa_value_range_from_jfunc): Same.
10042 (propagate_vr_across_jump_function): Same.
10043 * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
10044 (evaluate_properties_for_edge): Same.
10045 * ipa-prop.cc (ipa_vr::get_vrange): Same.
10046 (ipcp_update_vr): Same.
10047 * ipa-prop.h (ipa_value_range_from_jfunc): Same.
10048 (ipa_range_set_and_normalize): Same.
10049
10050 2023-06-10 Georg-Johann Lay <avr@gjlay.de>
10051
10052 PR target/109650
10053 PR target/92729
10054 * config/avr/avr-passes.def (avr_pass_ifelse): Insert new pass.
10055 * config/avr/avr.cc (avr_pass_ifelse): New RTL pass.
10056 (avr_pass_data_ifelse): New pass_data for it.
10057 (make_avr_pass_ifelse, avr_redundant_compare, avr_cbranch_cost)
10058 (avr_canonicalize_comparison, avr_out_plus_set_ZN)
10059 (avr_out_cmp_ext): New functions.
10060 (compare_condtition): Make sure REG_CC dies in the branch insn.
10061 (avr_rtx_costs_1): Add computation of cbranch costs.
10062 (avr_adjust_insn_length) [ADJUST_LEN_ADD_SET_ZN, ADJUST_LEN_CMP_ZEXT]:
10063 [ADJUST_LEN_CMP_SEXT]Handle them.
10064 (TARGET_CANONICALIZE_COMPARISON): New define.
10065 (avr_simplify_comparison_p, compare_diff_p, avr_compare_pattern)
10066 (avr_reorg_remove_redundant_compare, avr_reorg): Remove functions.
10067 (TARGET_MACHINE_DEPENDENT_REORG): Remove define.
10068 * config/avr/avr-protos.h (avr_simplify_comparison_p): Remove proto.
10069 (make_avr_pass_ifelse, avr_out_plus_set_ZN, cc_reg_rtx)
10070 (avr_out_cmp_zext): New Protos
10071 * config/avr/avr.md (branch, difficult_branch): Don't split insns.
10072 (*cbranchhi.zero-extend.0", *cbranchhi.zero-extend.1")
10073 (*swapped_tst<mode>, *add.for.eqne.<mode>): New insns.
10074 (*cbranch<mode>4): Rename to cbranch<mode>4_insn.
10075 (define_peephole): Add dead_or_set_regno_p(insn,REG_CC) as needed.
10076 (define_deephole2): Add peep2_regno_dead_p(*,REG_CC) as needed.
10077 Add new RTL peepholes for decrement-and-branch and *swapped_tst<mode>.
10078 Rework signtest-and-branch peepholes for *sbrx_branch<mode>.
10079 (adjust_len) [add_set_ZN, cmp_zext]: New.
10080 (QIPSI): New mode iterator.
10081 (ALLs1, ALLs2, ALLs4, ALLs234): New mode iterators.
10082 (gelt): New code iterator.
10083 (gelt_eqne): New code attribute.
10084 (rvbranch, *rvbranch, difficult_rvbranch, *difficult_rvbranch)
10085 (branch_unspec, *negated_tst<mode>, *reversed_tst<mode>)
10086 (*cmpqi_sign_extend): Remove insns.
10087 (define_c_enum "unspec") [UNSPEC_IDENTITY]: Remove.
10088 * config/avr/avr-dimode.md (cbranch<mode>4): Canonicalize comparisons.
10089 * config/avr/predicates.md (scratch_or_d_register_operand): New.
10090 * config/avr/constraints.md (Yxx): New constraint.
10091
10092 2023-06-10 Juzhe-Zhong <juzhe.zhong@rivai.ai>
10093
10094 * config/riscv/autovec.md (select_vl<mode>): New pattern.
10095 * config/riscv/riscv-protos.h (expand_select_vl): New function.
10096 * config/riscv/riscv-v.cc (expand_select_vl): Ditto.
10097
10098 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
10099
10100 * range-op-float.cc (foperator_mult_div_base): Delete.
10101 (foperator_mult_div_base::find_range): Make static local function.
10102 (foperator_mult): Remove. Move prototypes to range-op-mixed.h
10103 (operator_mult::op1_range): Rename from foperator_mult.
10104 (operator_mult::op2_range): Ditto.
10105 (operator_mult::rv_fold): Ditto.
10106 (float_table::float_table): Remove MULT_EXPR.
10107 (class foperator_div): Inherit from range_operator.
10108 (float_table::float_table): Delete.
10109 * range-op-mixed.h (class operator_mult): Combined from integer
10110 and float files.
10111 * range-op.cc (float_tree_table): Delete.
10112 (op_mult): New object.
10113 (unified_table::unified_table): Add MULT_EXPR.
10114 (get_op_handler): Do not check float table any longer.
10115 (class cross_product_operator): Move to range-op-mixed.h.
10116 (class operator_mult): Move to range-op-mixed.h.
10117 (integral_table::integral_table): Remove MULT_EXPR.
10118 (pointer_table::pointer_table): Remove MULT_EXPR.
10119 * range-op.h (float_table): Remove.
10120
10121 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
10122
10123 * range-op-float.cc (foperator_negate): Remove. Move prototypes
10124 to range-op-mixed.h
10125 (operator_negate::fold_range): Rename from foperator_negate.
10126 (operator_negate::op1_range): Ditto.
10127 (float_table::float_table): Remove NEGATE_EXPR.
10128 * range-op-mixed.h (class operator_negate): Combined from integer
10129 and float files.
10130 * range-op.cc (op_negate): New object.
10131 (unified_table::unified_table): Add NEGATE_EXPR.
10132 (class operator_negate): Move to range-op-mixed.h.
10133 (integral_table::integral_table): Remove NEGATE_EXPR.
10134 (pointer_table::pointer_table): Remove NEGATE_EXPR.
10135
10136 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
10137
10138 * range-op-float.cc (foperator_minus): Remove. Move prototypes
10139 to range-op-mixed.h
10140 (operator_minus::fold_range): Rename from foperator_minus.
10141 (operator_minus::op1_range): Ditto.
10142 (operator_minus::op2_range): Ditto.
10143 (operator_minus::rv_fold): Ditto.
10144 (float_table::float_table): Remove MINUS_EXPR.
10145 * range-op-mixed.h (class operator_minus): Combined from integer
10146 and float files.
10147 * range-op.cc (op_minus): New object.
10148 (unified_table::unified_table): Add MINUS_EXPR.
10149 (class operator_minus): Move to range-op-mixed.h.
10150 (integral_table::integral_table): Remove MINUS_EXPR.
10151 (pointer_table::pointer_table): Remove MINUS_EXPR.
10152
10153 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
10154
10155 * range-op-float.cc (foperator_abs): Remove. Move prototypes
10156 to range-op-mixed.h
10157 (operator_abs::fold_range): Rename from foperator_abs.
10158 (operator_abs::op1_range): Ditto.
10159 (float_table::float_table): Remove ABS_EXPR.
10160 * range-op-mixed.h (class operator_abs): Combined from integer
10161 and float files.
10162 * range-op.cc (op_abs): New object.
10163 (unified_table::unified_table): Add ABS_EXPR.
10164 (class operator_abs): Move to range-op-mixed.h.
10165 (integral_table::integral_table): Remove ABS_EXPR.
10166 (pointer_table::pointer_table): Remove ABS_EXPR.
10167
10168 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
10169
10170 * range-op-float.cc (foperator_plus): Remove. Move prototypes
10171 to range-op-mixed.h
10172 (operator_plus::fold_range): Rename from foperator_plus.
10173 (operator_plus::op1_range): Ditto.
10174 (operator_plus::op2_range): Ditto.
10175 (operator_plus::rv_fold): Ditto.
10176 (float_table::float_table): Remove PLUS_EXPR.
10177 * range-op-mixed.h (class operator_plus): Combined from integer
10178 and float files.
10179 * range-op.cc (op_plus): New object.
10180 (unified_table::unified_table): Add PLUS_EXPR.
10181 (class operator_plus): Move to range-op-mixed.h.
10182 (integral_table::integral_table): Remove PLUS_EXPR.
10183 (pointer_table::pointer_table): Remove PLUS_EXPR.
10184
10185 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
10186
10187 * range-op-mixed.h (class operator_cast): Combined from integer
10188 and float files.
10189 * range-op.cc (op_cast): New object.
10190 (unified_table::unified_table): Add op_cast
10191 (class operator_cast): Move to range-op-mixed.h.
10192 (integral_table::integral_table): Remove op_cast
10193 (pointer_table::pointer_table): Remove op_cast.
10194
10195 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
10196
10197 * range-op-float.cc (operator_cst::fold_range): New.
10198 * range-op-mixed.h (class operator_cst): Move from integer file.
10199 * range-op.cc (op_cst): New object.
10200 (unified_table::unified_table): Add op_cst. Also use for REAL_CST.
10201 (class operator_cst): Move to range-op-mixed.h.
10202 (integral_table::integral_table): Remove op_cst.
10203 (pointer_table::pointer_table): Remove op_cst.
10204
10205 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
10206
10207 * range-op-float.cc (foperator_identity): Remove. Move prototypes
10208 to range-op-mixed.h
10209 (operator_identity::fold_range): Rename from foperator_identity.
10210 (operator_identity::op1_range): Ditto.
10211 (float_table::float_table): Remove fop_identity.
10212 * range-op-mixed.h (class operator_identity): Combined from integer
10213 and float files.
10214 * range-op.cc (op_identity): New object.
10215 (unified_table::unified_table): Add op_identity.
10216 (class operator_identity): Move to range-op-mixed.h.
10217 (integral_table::integral_table): Remove identity.
10218 (pointer_table::pointer_table): Remove identity.
10219
10220 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
10221
10222 * range-op-float.cc (foperator_ge): Remove. Move prototypes
10223 to range-op-mixed.h
10224 (operator_ge::fold_range): Rename from foperator_ge.
10225 (operator_ge::op1_range): Ditto.
10226 (float_table::float_table): Remove GE_EXPR.
10227 * range-op-mixed.h (class operator_ge): Combined from integer
10228 and float files.
10229 * range-op.cc (op_ge): New object.
10230 (unified_table::unified_table): Add GE_EXPR.
10231 (class operator_ge): Move to range-op-mixed.h.
10232 (ge_op1_op2_relation): Fold into
10233 operator_ge::op1_op2_relation.
10234 (integral_table::integral_table): Remove GE_EXPR.
10235 (pointer_table::pointer_table): Remove GE_EXPR.
10236 * range-op.h (ge_op1_op2_relation): Delete.
10237
10238 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
10239
10240 * range-op-float.cc (foperator_gt): Remove. Move prototypes
10241 to range-op-mixed.h
10242 (operator_gt::fold_range): Rename from foperator_gt.
10243 (operator_gt::op1_range): Ditto.
10244 (float_table::float_table): Remove GT_EXPR.
10245 * range-op-mixed.h (class operator_gt): Combined from integer
10246 and float files.
10247 * range-op.cc (op_gt): New object.
10248 (unified_table::unified_table): Add GT_EXPR.
10249 (class operator_gt): Move to range-op-mixed.h.
10250 (gt_op1_op2_relation): Fold into
10251 operator_gt::op1_op2_relation.
10252 (integral_table::integral_table): Remove GT_EXPR.
10253 (pointer_table::pointer_table): Remove GT_EXPR.
10254 * range-op.h (gt_op1_op2_relation): Delete.
10255
10256 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
10257
10258 * range-op-float.cc (foperator_le): Remove. Move prototypes
10259 to range-op-mixed.h
10260 (operator_le::fold_range): Rename from foperator_le.
10261 (operator_le::op1_range): Ditto.
10262 (float_table::float_table): Remove LE_EXPR.
10263 * range-op-mixed.h (class operator_le): Combined from integer
10264 and float files.
10265 * range-op.cc (op_le): New object.
10266 (unified_table::unified_table): Add LE_EXPR.
10267 (class operator_le): Move to range-op-mixed.h.
10268 (le_op1_op2_relation): Fold into
10269 operator_le::op1_op2_relation.
10270 (integral_table::integral_table): Remove LE_EXPR.
10271 (pointer_table::pointer_table): Remove LE_EXPR.
10272 * range-op.h (le_op1_op2_relation): Delete.
10273
10274 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
10275
10276 * range-op-float.cc (foperator_lt): Remove. Move prototypes
10277 to range-op-mixed.h
10278 (operator_lt::fold_range): Rename from foperator_lt.
10279 (operator_lt::op1_range): Ditto.
10280 (float_table::float_table): Remove LT_EXPR.
10281 * range-op-mixed.h (class operator_lt): Combined from integer
10282 and float files.
10283 * range-op.cc (op_lt): New object.
10284 (unified_table::unified_table): Add LT_EXPR.
10285 (class operator_lt): Move to range-op-mixed.h.
10286 (lt_op1_op2_relation): Fold into
10287 operator_lt::op1_op2_relation.
10288 (integral_table::integral_table): Remove LT_EXPR.
10289 (pointer_table::pointer_table): Remove LT_EXPR.
10290 * range-op.h (lt_op1_op2_relation): Delete.
10291
10292 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
10293
10294 * range-op-float.cc (foperator_not_equal): Remove. Move prototypes
10295 to range-op-mixed.h
10296 (operator_equal::fold_range): Rename from foperator_not_equal.
10297 (operator_equal::op1_range): Ditto.
10298 (float_table::float_table): Remove NE_EXPR.
10299 * range-op-mixed.h (class operator_not_equal): Combined from integer
10300 and float files.
10301 * range-op.cc (op_equal): New object.
10302 (unified_table::unified_table): Add NE_EXPR.
10303 (class operator_not_equal): Move to range-op-mixed.h.
10304 (not_equal_op1_op2_relation): Fold into
10305 operator_not_equal::op1_op2_relation.
10306 (integral_table::integral_table): Remove NE_EXPR.
10307 (pointer_table::pointer_table): Remove NE_EXPR.
10308 * range-op.h (not_equal_op1_op2_relation): Delete.
10309
10310 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
10311
10312 * range-op-float.cc (foperator_equal): Remove. Move prototypes
10313 to range-op-mixed.h
10314 (operator_equal::fold_range): Rename from foperator_equal.
10315 (operator_equal::op1_range): Ditto.
10316 (float_table::float_table): Remove EQ_EXPR.
10317 * range-op-mixed.h (class operator_equal): Combined from integer
10318 and float files.
10319 * range-op.cc (op_equal): New object.
10320 (unified_table::unified_table): Add EQ_EXPR.
10321 (class operator_equal): Move to range-op-mixed.h.
10322 (equal_op1_op2_relation): Fold into
10323 operator_equal::op1_op2_relation.
10324 (integral_table::integral_table): Remove EQ_EXPR.
10325 (pointer_table::pointer_table): Remove EQ_EXPR.
10326 * range-op.h (equal_op1_op2_relation): Delete.
10327
10328 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
10329
10330 * range-op-float.cc (class float_table): Move to header.
10331 (float_table::float_table): Move float only operators to...
10332 (range_op_table::initialize_float_ops): Here.
10333 * range-op-mixed.h: New.
10334 * range-op.cc (integral_tree_table, pointer_tree_table): Moved
10335 to top of file.
10336 (float_tree_table): Moved from range-op-float.cc.
10337 (unified_tree_table): New.
10338 (unified_table::unified_table): New. Call initialize routines.
10339 (get_op_handler): Check unified table first.
10340 (range_op_handler::range_op_handler): Handle no type constructor.
10341 (integral_table::integral_table): Move integral only operators to...
10342 (range_op_table::initialize_integral_ops): Here.
10343 (pointer_table::pointer_table): Move pointer only operators to...
10344 (range_op_table::initialize_pointer_ops): Here.
10345 * range-op.h (enum bool_range_state): Move to range-op-mixed.h.
10346 (get_bool_state): Ditto.
10347 (empty_range_varying): Ditto.
10348 (relop_early_resolve): Ditto.
10349 (class range_op_table): Add new init methods for range types.
10350 (class integral_table): Move declaration to here.
10351 (class pointer_table): Move declaration to here.
10352 (class float_table): Move declaration to here.
10353
10354 2023-06-09 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
10355 Richard Sandiford <richard.sandiford@arm.com>
10356 Richard Biener <rguenther@suse.de>
10357
10358 * doc/md.texi: Add SELECT_VL support.
10359 * internal-fn.def (SELECT_VL): Ditto.
10360 * optabs.def (OPTAB_D): Ditto.
10361 * tree-vect-loop-manip.cc (vect_set_loop_controls_directly): Ditto.
10362 * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): Ditto.
10363 * tree-vect-stmts.cc (get_select_vl_data_ref_ptr): Ditto.
10364 (vectorizable_store): Ditto.
10365 (vectorizable_load): Ditto.
10366 * tree-vectorizer.h (LOOP_VINFO_USING_SELECT_VL_P): Ditto.
10367
10368 2023-06-09 Andrew MacLeod <amacleod@redhat.com>
10369
10370 PR ipa/109886
10371 * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Check param
10372 type as well.
10373
10374 2023-06-09 Andrew MacLeod <amacleod@redhat.com>
10375
10376 * range-op.cc (range_cast): Move to...
10377 * range-op.h (range_cast): Here and add generic a version.
10378
10379 2023-06-09 Marek Polacek <polacek@redhat.com>
10380
10381 PR c/39589
10382 PR c++/96868
10383 * doc/invoke.texi: Clarify that -Wmissing-field-initializers doesn't
10384 warn about designated initializers in C only.
10385
10386 2023-06-09 Andrew Pinski <apinski@marvell.com>
10387
10388 PR tree-optimization/97711
10389 PR tree-optimization/110155
10390 * match.pd ((zero_one == 0) ? y : z <op> y): Add plus to the op.
10391 ((zero_one != 0) ? z <op> y : y): Likewise.
10392
10393 2023-06-09 Andrew Pinski <apinski@marvell.com>
10394
10395 * match.pd ((zero_one ==/!= 0) ? y : z <op> y): Use
10396 multiply rather than negation/bit_and.
10397
10398 2023-06-09 Andrew Pinski <apinski@marvell.com>
10399
10400 * match.pd (`X & -Y -> X * Y`): Allow for truncation
10401 and the same type for unsigned types.
10402
10403 2023-06-09 Andrew Pinski <apinski@marvell.com>
10404
10405 PR tree-optimization/110165
10406 PR tree-optimization/110166
10407 * match.pd (zero_one_valued_p): Don't accept
10408 signed 1-bit integers.
10409
10410 2023-06-09 Richard Biener <rguenther@suse.de>
10411
10412 * match.pd (two conversions in a row): Use element_precision
10413 to DTRT for VECTOR_TYPE.
10414
10415 2023-06-09 Pan Li <pan2.li@intel.com>
10416
10417 * config/riscv/riscv.md (enabled): Move to another place, and
10418 add fp_vector_disabled to the cond.
10419 (fp_vector_disabled): New attr defined for disabling fp.
10420 * config/riscv/vector-iterators.md: Fix V_WHOLE and V_FRACT.
10421
10422 2023-06-09 Pan Li <pan2.li@intel.com>
10423
10424 * config/riscv/riscv-protos.h (enum frm_field_enum): Adjust
10425 literal to int.
10426
10427 2023-06-09 liuhongt <hongtao.liu@intel.com>
10428
10429 PR target/110108
10430 * config/i386/i386.cc (ix86_gimple_fold_builtin): Explicitly
10431 view_convert_expr mask to signed type when folding pblendvb
10432 builtins.
10433
10434 2023-06-09 liuhongt <hongtao.liu@intel.com>
10435
10436 PR target/110108
10437 * config/i386/i386.cc (ix86_gimple_fold_builtin): Fold
10438 _mm{,256,512}_abs_{epi8,epi16,epi32,epi64} into gimple
10439 ABSU_EXPR + VCE, don't fold _mm_abs_{pi8,pi16,pi32} w/o
10440 TARGET_64BIT.
10441 * config/i386/i386-builtin.def: Replace CODE_FOR_nothing with
10442 real codename for __builtin_ia32_pabs{b,w,d}.
10443
10444 2023-06-08 Andrew MacLeod <amacleod@redhat.com>
10445
10446 * gimple-range-op.cc
10447 (gimple_range_op_handler::gimple_range_op_handler): Adjust.
10448 (gimple_range_op_handler::maybe_builtin_call): Adjust.
10449 * gimple-range-op.h (operand1, operand2): Use m_operator.
10450 * range-op.cc (integral_table, pointer_table): Relocate.
10451 (get_op_handler): Rename from get_handler and handle all types.
10452 (range_op_handler::range_op_handler): Relocate.
10453 (range_op_handler::set_op_handler): Relocate and adjust.
10454 (range_op_handler::range_op_handler): Relocate.
10455 (dispatch_trio): New.
10456 (RO_III, RO_IFI, RO_IFF, RO_FFF, RO_FIF, RO_FII): New consts.
10457 (range_op_handler::dispatch_kind): New.
10458 (range_op_handler::fold_range): Relocate and Use new dispatch value.
10459 (range_op_handler::op1_range): Ditto.
10460 (range_op_handler::op2_range): Ditto.
10461 (range_op_handler::lhs_op1_relation): Ditto.
10462 (range_op_handler::lhs_op2_relation): Ditto.
10463 (range_op_handler::op1_op2_relation): Ditto.
10464 (range_op_handler::set_op_handler): Use m_operator member.
10465 * range-op.h (range_op_handler::operator bool): Use m_operator.
10466 (range_op_handler::dispatch_kind): New.
10467 (range_op_handler::m_valid): Delete.
10468 (range_op_handler::m_int): Delete
10469 (range_op_handler::m_float): Delete
10470 (range_op_handler::m_operator): New.
10471 (range_op_table::operator[]): Relocate from .cc file.
10472 (range_op_table::set): Ditto.
10473 * value-range.h (class vrange): Make range_op_handler a friend.
10474
10475 2023-06-08 Andrew MacLeod <amacleod@redhat.com>
10476
10477 * gimple-range-op.cc (cfn_constant_float_p): Change base class.
10478 (cfn_pass_through_arg1): Adjust using statemenmt.
10479 (cfn_signbit): Change base class, adjust using statement.
10480 (cfn_copysign): Ditto.
10481 (cfn_sqrt): Ditto.
10482 (cfn_sincos): Ditto.
10483 * range-op-float.cc (fold_range): Change class to range_operator.
10484 (rv_fold): Ditto.
10485 (op1_range): Ditto
10486 (op2_range): Ditto
10487 (lhs_op1_relation): Ditto.
10488 (lhs_op2_relation): Ditto.
10489 (op1_op2_relation): Ditto.
10490 (foperator_*): Ditto.
10491 (class float_table): New. Inherit from range_op_table.
10492 (floating_tree_table) Change to range_op_table pointer.
10493 (class floating_op_table): Delete.
10494 * range-op.cc (operator_equal): Adjust using statement.
10495 (operator_not_equal): Ditto.
10496 (operator_lt, operator_le, operator_gt, operator_ge): Ditto.
10497 (operator_minus, operator_cast): Ditto.
10498 (operator_bitwise_and, pointer_plus_operator): Ditto.
10499 (get_float_handle): Change return type.
10500 * range-op.h (range_operator_float): Delete. Relocate all methods
10501 into class range_operator.
10502 (range_op_handler::m_float): Change type to range_operator.
10503 (floating_op_table): Delete.
10504 (floating_tree_table): Change type.
10505
10506 2023-06-08 Andrew MacLeod <amacleod@redhat.com>
10507
10508 * range-op.cc (range_operator::fold_range): Call virtual routine.
10509 (range_operator::update_bitmask): New.
10510 (operator_equal::update_bitmask): New.
10511 (operator_not_equal::update_bitmask): New.
10512 (operator_lt::update_bitmask): New.
10513 (operator_le::update_bitmask): New.
10514 (operator_gt::update_bitmask): New.
10515 (operator_ge::update_bitmask): New.
10516 (operator_ge::update_bitmask): New.
10517 (operator_plus::update_bitmask): New.
10518 (operator_minus::update_bitmask): New.
10519 (operator_pointer_diff::update_bitmask): New.
10520 (operator_min::update_bitmask): New.
10521 (operator_max::update_bitmask): New.
10522 (operator_mult::update_bitmask): New.
10523 (operator_div:operator_div):New.
10524 (operator_div::update_bitmask): New.
10525 (operator_div::m_code): New member.
10526 (operator_exact_divide::operator_exact_divide): New constructor.
10527 (operator_lshift::update_bitmask): New.
10528 (operator_rshift::update_bitmask): New.
10529 (operator_bitwise_and::update_bitmask): New.
10530 (operator_bitwise_or::update_bitmask): New.
10531 (operator_bitwise_xor::update_bitmask): New.
10532 (operator_trunc_mod::update_bitmask): New.
10533 (op_ident, op_unknown, op_ptr_min_max): New.
10534 (op_nop, op_convert): Delete.
10535 (op_ssa, op_paren, op_obj_type): Delete.
10536 (op_realpart, op_imagpart): Delete.
10537 (op_ptr_min, op_ptr_max): Delete.
10538 (pointer_plus_operator:update_bitmask): New.
10539 (range_op_table::set): Do not use m_code.
10540 (integral_table::integral_table): Adjust to single instances.
10541 * range-op.h (range_operator::range_operator): Delete.
10542 (range_operator::m_code): Delete.
10543 (range_operator::update_bitmask): New.
10544
10545 2023-06-08 Andrew MacLeod <amacleod@redhat.com>
10546
10547 * range-op-float.cc (range_operator_float::fold_range): Return
10548 NAN of the result type.
10549
10550 2023-06-08 Jakub Jelinek <jakub@redhat.com>
10551
10552 * optabs.cc (expand_ffs): Add forward declaration.
10553 (expand_doubleword_clz): Rename to ...
10554 (expand_doubleword_clz_ctz_ffs): ... this. Add UNOPTAB argument,
10555 handle also doubleword CTZ and FFS in addition to CLZ.
10556 (expand_unop): Adjust caller. Also call it for doubleword
10557 ctz_optab and ffs_optab.
10558
10559 2023-06-08 Jakub Jelinek <jakub@redhat.com>
10560
10561 PR target/110152
10562 * config/i386/i386-expand.cc (ix86_expand_vector_init_general): For
10563 n_words == 2 recurse with mmx_ok as first argument rather than false.
10564
10565 2023-06-07 Roger Sayle <roger@nextmovesoftware.com>
10566
10567 * wide-int.cc (wi::bitreverse_large): Use HOST_WIDE_INT_1U to
10568 avoid sign extension/undefined behaviour when setting each bit.
10569
10570 2023-06-07 Roger Sayle <roger@nextmovesoftware.com>
10571 Uros Bizjak <ubizjak@gmail.com>
10572
10573 * config/i386/i386-expand.cc (ix86_expand_builtin) <handlecarry>:
10574 Use new x86_stc instruction when the carry flag must be set.
10575 * config/i386/i386.cc (ix86_cc_mode): Use CCCmode for *x86_cmc.
10576 (ix86_rtx_costs): Provide accurate rtx_costs for *x86_cmc.
10577 * config/i386/i386.h (TARGET_SLOW_STC): New define.
10578 * config/i386/i386.md (UNSPEC_STC): New UNSPEC for stc.
10579 (x86_stc): New define_insn.
10580 (define_peephole2): Convert x86_stc into alternate implementation
10581 on pentium4 without -Os when a QImode register is available.
10582 (*x86_cmc): New define_insn.
10583 (define_peephole2): Convert *x86_cmc into alternate implementation
10584 on pentium4 without -Os when a QImode register is available.
10585 (*setccc): New define_insn_and_split for a no-op CCCmode move.
10586 (*setcc_qi_negqi_ccc_1_<mode>): New define_insn_and_split to
10587 recognize (and eliminate) the carry flag being copied to itself.
10588 (*setcc_qi_negqi_ccc_2_<mode>): Likewise.
10589 * config/i386/x86-tune.def (X86_TUNE_SLOW_STC): New tuning flag.
10590
10591 2023-06-07 Andrew Pinski <apinski@marvell.com>
10592
10593 * match.pd: Fix comment for the
10594 `(zero_one ==/!= 0) ? y : z <op> y` patterns.
10595
10596 2023-06-07 Jeff Law <jlaw@ventanamicro.com>
10597 Jeff Law <jlaw@ventanamicro.com>
10598
10599 * config/riscv/bitmanip.md (rotrdi3, rotrsi3, rotlsi3): New expanders.
10600 (rotrsi3_sext): Expose generator.
10601 (rotlsi3 pattern): Hide generator.
10602 * config/riscv/riscv-protos.h (riscv_emit_binary): New function
10603 declaration.
10604 * config/riscv/riscv.cc (riscv_emit_binary): Removed static
10605 * config/riscv/riscv.md (addsi3, subsi3, negsi2): Hide generator.
10606 (mulsi3, <optab>si3): Likewise.
10607 (addsi3, subsi3, negsi2, mulsi3, <optab>si3): New expanders.
10608 (addv<mode>4, subv<mode>4, mulv<mode>4): Use riscv_emit_binary.
10609 (<u>mulsidi3): Likewise.
10610 (addsi3_extended, subsi3_extended, negsi2_extended): Expose generator.
10611 (mulsi3_extended, <optab>si3_extended): Likewise.
10612 (splitter for shadd feeding divison): Update RTL pattern to account
10613 for changes in how 32 bit ops are expanded for TARGET_64BIT.
10614 * loop-iv.cc (get_biv_step_1): Process src of extension when it PLUS.
10615
10616 2023-06-07 Dimitar Dimitrov <dimitar@dinux.eu>
10617
10618 PR target/109725
10619 * config/riscv/riscv.cc (riscv_print_operand): Calculate
10620 memmodel only when it is valid.
10621
10622 2023-06-07 Dimitar Dimitrov <dimitar@dinux.eu>
10623
10624 * config/riscv/riscv.cc (riscv_const_insns): Recursively call
10625 for constant element of a vector.
10626
10627 2023-06-07 Jakub Jelinek <jakub@redhat.com>
10628
10629 * match.pd (zero_one_valued_p): Don't handle integer_zerop specially,
10630 instead compare tree_nonzero_bits <= 1U rather than just == 1.
10631
10632 2023-06-07 Alex Coplan <alex.coplan@arm.com>
10633
10634 PR target/110132
10635 * config/aarch64/aarch64-builtins.cc (aarch64_general_simulate_builtin):
10636 New. Use it ...
10637 (aarch64_init_ls64_builtins): ... here. Switch to declaring public ACLE
10638 names for builtins.
10639 (aarch64_general_init_builtins): Ensure we invoke the arm_acle.h
10640 setup if in_lto_p, just like we do for SVE.
10641 * config/aarch64/arm_acle.h: (__arm_ld64b): Delete.
10642 (__arm_st64b): Delete.
10643 (__arm_st64bv): Delete.
10644 (__arm_st64bv0): Delete.
10645
10646 2023-06-07 Alex Coplan <alex.coplan@arm.com>
10647
10648 PR target/110100
10649 * config/aarch64/aarch64-builtins.cc (aarch64_expand_builtin_ls64):
10650 Use input operand for the destination address.
10651 * config/aarch64/aarch64.md (st64b): Fix constraint on address
10652 operand.
10653
10654 2023-06-07 Alex Coplan <alex.coplan@arm.com>
10655
10656 PR target/110100
10657 * config/aarch64/aarch64-builtins.cc (aarch64_init_ls64_builtins_types):
10658 Replace eight consecutive spaces with tabs.
10659 (aarch64_init_ls64_builtins): Likewise.
10660 (aarch64_expand_builtin_ls64): Likewise.
10661 * config/aarch64/aarch64.md (ld64b): Likewise.
10662 (st64b): Likewise.
10663 (st64bv): Likewise
10664 (st64bv0): Likewise.
10665
10666 2023-06-07 Vladimir N. Makarov <vmakarov@redhat.com>
10667
10668 * ira-costs.cc: (find_costs_and_classes): Constrain classes of pic
10669 offset table pseudo to a general reg subset.
10670
10671 2023-06-07 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10672
10673 * config/aarch64/aarch64-simd.md (aarch64_sqmovun<mode><vczle><vczbe>):
10674 Rename to...
10675 (*aarch64_sqmovun<mode>_insn<vczle><vczbe>): ... This. Reimplement
10676 with RTL codes.
10677 (aarch64_sqmovun<mode> [SD_HSDI]): Reimplement with RTL codes.
10678 (aarch64_sqxtun2<mode>_le): Likewise.
10679 (aarch64_sqxtun2<mode>_be): Likewise.
10680 (aarch64_sqxtun2<mode>): Adjust for the above.
10681 (aarch64_sqmovun<mode>): New define_expand.
10682 * config/aarch64/iterators.md (UNSPEC_SQXTUN): Delete.
10683 (half_mask): New mode attribute.
10684 * config/aarch64/predicates.md (aarch64_simd_umax_half_mode):
10685 New predicate.
10686
10687 2023-06-07 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10688
10689 * config/aarch64/aarch64-simd.md (aarch64_addp<mode><vczle><vczbe>):
10690 Reimplement as...
10691 (aarch64_addp<mode>_insn): ... This...
10692 (aarch64_addp<mode><vczle><vczbe>_insn): ... And this.
10693 (aarch64_addp<mode>): New define_expand.
10694
10695 2023-06-07 Juzhe-Zhong <juzhe.zhong@rivai.ai>
10696
10697 * config/riscv/riscv-protos.h (expand_vec_perm_const): New function.
10698 * config/riscv/riscv-v.cc
10699 (rvv_builder::can_duplicate_repeating_sequence_p): Support POLY
10700 handling.
10701 (rvv_builder::single_step_npatterns_p): New function.
10702 (rvv_builder::npatterns_all_equal_p): Ditto.
10703 (const_vec_all_in_range_p): Support POLY handling.
10704 (gen_const_vector_dup): Ditto.
10705 (emit_vlmax_gather_insn): Add vrgatherei16.
10706 (emit_vlmax_masked_gather_mu_insn): Ditto.
10707 (expand_const_vector): Add VLA SLP const vector support.
10708 (expand_vec_perm): Support POLY.
10709 (struct expand_vec_perm_d): New struct.
10710 (shuffle_generic_patterns): New function.
10711 (expand_vec_perm_const_1): Ditto.
10712 (expand_vec_perm_const): Ditto.
10713 * config/riscv/riscv.cc (riscv_vectorize_vec_perm_const): Ditto.
10714 (TARGET_VECTORIZE_VEC_PERM_CONST): New targethook.
10715
10716 2023-06-07 Andrew Pinski <apinski@marvell.com>
10717
10718 PR middle-end/110117
10719 * expr.cc (expand_single_bit_test): Handle
10720 const_int from expand_expr.
10721
10722 2023-06-07 Andrew Pinski <apinski@marvell.com>
10723
10724 * expr.cc (do_store_flag): Rearrange the
10725 TER code so that it overrides the nonzero bits
10726 info if we had `a & POW2`.
10727
10728 2023-06-07 Andrew Pinski <apinski@marvell.com>
10729
10730 PR tree-optimization/110134
10731 * match.pd (-A CMP -B -> B CMP A): Allow EQ/NE for all integer
10732 types.
10733 (-A CMP CST -> B CMP (-CST)): Likewise.
10734
10735 2023-06-07 Andrew Pinski <apinski@marvell.com>
10736
10737 PR tree-optimization/89263
10738 PR tree-optimization/99069
10739 PR tree-optimization/20083
10740 PR tree-optimization/94898
10741 * match.pd: Add patterns to optimize `a ? onezero : onezero` with
10742 one of the operands are constant.
10743
10744 2023-06-07 Andrew Pinski <apinski@marvell.com>
10745
10746 * match.pd (zero_one_valued_p): Match 0 integer constant
10747 too.
10748
10749 2023-06-07 Pan Li <pan2.li@intel.com>
10750
10751 * config/riscv/riscv-vector-builtins-types.def
10752 (vfloat32mf2_t): Take RVV_REQUIRE_ELEN_FP_16 as requirement.
10753 (vfloat32m1_t): Ditto.
10754 (vfloat32m2_t): Ditto.
10755 (vfloat32m4_t): Ditto.
10756 (vfloat32m8_t): Ditto.
10757 (vint16mf4_t): Ditto.
10758 (vint16mf2_t): Ditto.
10759 (vint16m1_t): Ditto.
10760 (vint16m2_t): Ditto.
10761 (vint16m4_t): Ditto.
10762 (vint16m8_t): Ditto.
10763 (vuint16mf4_t): Ditto.
10764 (vuint16mf2_t): Ditto.
10765 (vuint16m1_t): Ditto.
10766 (vuint16m2_t): Ditto.
10767 (vuint16m4_t): Ditto.
10768 (vuint16m8_t): Ditto.
10769 (vint32mf2_t): Ditto.
10770 (vint32m1_t): Ditto.
10771 (vint32m2_t): Ditto.
10772 (vint32m4_t): Ditto.
10773 (vint32m8_t): Ditto.
10774 (vuint32mf2_t): Ditto.
10775 (vuint32m1_t): Ditto.
10776 (vuint32m2_t): Ditto.
10777 (vuint32m4_t): Ditto.
10778 (vuint32m8_t): Ditto.
10779
10780 2023-06-07 Jason Merrill <jason@redhat.com>
10781
10782 PR c++/58487
10783 * doc/invoke.texi: Document it.
10784
10785 2023-06-06 Roger Sayle <roger@nextmovesoftware.com>
10786
10787 * doc/rtl.texi (bitreverse, copysign): Document new RTX codes.
10788 * rtl.def (BITREVERSE, COPYSIGN): Define new RTX codes.
10789 * simplify-rtx.cc (simplify_unary_operation_1): Optimize
10790 NOT (BITREVERSE x) as BITREVERSE (NOT x).
10791 Optimize POPCOUNT (BITREVERSE x) as POPCOUNT x.
10792 Optimize PARITY (BITREVERSE x) as PARITY x.
10793 Optimize BITREVERSE (BITREVERSE x) as x.
10794 (simplify_const_unary_operation) <case BITREVERSE>: Evaluate
10795 BITREVERSE of a constant integer at compile-time.
10796 (simplify_binary_operation_1) <case COPYSIGN>: Optimize
10797 COPY_SIGN (x, x) as x. Optimize COPYSIGN (x, C) as ABS x
10798 or NEG (ABS x) for constant C. Optimize COPYSIGN (ABS x, y)
10799 and COPYSIGN (NEG x, y) as COPYSIGN (x, y).
10800 Optimize COPYSIGN (x, ABS y) as ABS x.
10801 Optimize COPYSIGN (COPYSIGN (x, y), z) as COPYSIGN (x, z).
10802 Optimize COPYSIGN (x, COPYSIGN (y, z)) as COPYSIGN (x, z).
10803 (simplify_const_binary_operation): Evaluate COPYSIGN of constant
10804 arguments at compile-time.
10805
10806 2023-06-06 Uros Bizjak <ubizjak@gmail.com>
10807
10808 * rtl.h (function_invariant_p): Change return type from int to bool.
10809 * reload1.cc (function_invariant_p): Change return type from
10810 int to bool and adjust function body accordingly.
10811
10812 2023-06-06 Juzhe-Zhong <juzhe.zhong@rivai.ai>
10813
10814 * config/riscv/autovec-opt.md (*<optab>_fma<mode>): New pattern.
10815 (*single_<optab>mult_plus<mode>): Ditto.
10816 (*double_<optab>mult_plus<mode>): Ditto.
10817 (*sign_zero_extend_fma): Ditto.
10818 (*zero_sign_extend_fma): Ditto.
10819 * config/riscv/riscv-protos.h (enum insn_type): New enum.
10820
10821 2023-06-06 Kwok Cheung Yeung <kcy@codesourcery.com>
10822 Tobias Burnus <tobias@codesourcery.com>
10823
10824 * gimplify.cc (omp_notice_variable): Apply GOVD_MAP_ALLOC_ONLY flag
10825 and defaultmap flags if the defaultmap has GOVD_MAP_FORCE_PRESENT flag
10826 set.
10827 (omp_get_attachment): Handle map clauses with 'present' modifier.
10828 (omp_group_base): Likewise.
10829 (gimplify_scan_omp_clauses): Reorder present maps to come first.
10830 Set GOVD flags for present defaultmaps.
10831 (gimplify_adjust_omp_clauses_1): Set map kind for present defaultmaps.
10832 * omp-low.cc (scan_sharing_clauses): Handle 'always, present' map
10833 clauses.
10834 (lower_omp_target): Handle map clauses with 'present' modifier.
10835 Handle 'to' and 'from' clauses with 'present'.
10836 * tree-core.h (enum omp_clause_defaultmap_kind): Add
10837 OMP_CLAUSE_DEFAULTMAP_PRESENT defaultmap kind.
10838 * tree-pretty-print.cc (dump_omp_clause): Handle 'map', 'to' and
10839 'from' clauses with 'present' modifier. Handle present defaultmap.
10840 * tree.h (OMP_CLAUSE_MOTION_PRESENT): New #define.
10841
10842 2023-06-06 Segher Boessenkool <segher@kernel.crashing.org>
10843
10844 * config/rs6000/genfusion.pl: Delete some dead code.
10845
10846 2023-06-06 Segher Boessenkool <segher@kernel.crashing.org>
10847
10848 * config/rs6000/genfusion.pl (gen_ld_cmpi_p10_one): New, rewritten and
10849 split out from...
10850 (gen_ld_cmpi_p10): ... this.
10851
10852 2023-06-06 Jeevitha Palanisamy <jeevitha@linux.ibm.com>
10853
10854 PR target/106907
10855 * config/rs6000/rs6000.cc (vec_const_128bit_to_bytes): Remove
10856 duplicate expression.
10857
10858 2023-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10859
10860 * config/aarch64/aarch64-builtins.cc (aarch64_general_gimple_fold_builtin):
10861 Handle unsigned reduc_plus_scal_ builtins.
10862 * config/aarch64/aarch64-simd-builtins.def (addp): Delete DImode instances.
10863 * config/aarch64/aarch64-simd.md (aarch64_addpdi): Delete.
10864 * config/aarch64/arm_neon.h (vpaddd_s64): Reimplement with
10865 __builtin_aarch64_reduc_plus_scal_v2di.
10866 (vpaddd_u64): Reimplement with __builtin_aarch64_reduc_plus_scal_v2di_uu.
10867
10868 2023-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10869
10870 * config/aarch64/aarch64-simd.md (aarch64_<sur>shr_n<mode>): Delete.
10871 (aarch64_<sra_op>rshr_n<mode><vczle><vczbe>_insn): New define_insn.
10872 (aarch64_<sra_op>rshr_n<mode>): New define_expand.
10873
10874 2023-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10875
10876 * config/aarch64/aarch64-simd.md (aarch64_shrn<mode>_insn_le): Delete.
10877 (aarch64_shrn<mode>_insn_be): Delete.
10878 (*aarch64_<srn_op>shrn<mode>_vect): Rename to...
10879 (*aarch64_<srn_op>shrn<mode><vczle><vczbe>): ... This.
10880 (aarch64_shrn<mode>): Remove reference to the above deleted patterns.
10881 (aarch64_rshrn<mode>_insn_le): Delete.
10882 (aarch64_rshrn<mode>_insn_be): Delete.
10883 (aarch64_rshrn<mode><vczle><vczbe>_insn): New define_insn.
10884 (aarch64_rshrn<mode>): Remove references to the above deleted patterns.
10885
10886 2023-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10887
10888 * config/aarch64/aarch64-protos.h (aarch64_parallel_select_half_p):
10889 Define prototype.
10890 (aarch64_pars_overlap_p): Likewise.
10891 * config/aarch64/aarch64-simd.md (aarch64_<su>addlv<mode>):
10892 Express in terms of UNSPEC_ADDV.
10893 (*aarch64_<su>addlv<VDQV_L:mode>_ze<GPI:mode>): Likewise.
10894 (*aarch64_<su>addlv<mode>_reduction): Define.
10895 (*aarch64_uaddlv<mode>_reduction_2): Likewise.
10896 * config/aarch64/aarch64.cc (aarch64_parallel_select_half_p): Define.
10897 (aarch64_pars_overlap_p): Likewise.
10898 * config/aarch64/iterators.md (UNSPEC_SADDLV, UNSPEC_UADDLV): Delete.
10899 (VQUADW): New mode attribute.
10900 (VWIDE2X_S): Likewise.
10901 (USADDLV): Delete.
10902 (su): Delete handling of UNSPEC_SADDLV, UNSPEC_UADDLV.
10903 * config/aarch64/predicates.md (vect_par_cnst_select_half): Define.
10904
10905 2023-06-06 Richard Biener <rguenther@suse.de>
10906
10907 PR middle-end/110055
10908 * gimplify.cc (gimplify_target_expr): Do not emit
10909 CLOBBERs for variables which have static storage duration
10910 after gimplifying their initializers.
10911
10912 2023-06-06 Richard Biener <rguenther@suse.de>
10913
10914 PR tree-optimization/109143
10915 * tree-ssa-structalias.cc (solution_set_expand): Avoid
10916 one bitmap iteration and optimize bit range setting.
10917
10918 2023-06-06 Hans-Peter Nilsson <hp@axis.com>
10919
10920 PR bootstrap/110120
10921 * postreload.cc (reload_cse_move2add, move2add_use_add2_insn): Use
10922 XVECEXP, not XEXP, to access first item of a PARALLEL.
10923
10924 2023-06-06 Pan Li <pan2.li@intel.com>
10925
10926 * config/riscv/riscv-vector-builtins-types.def
10927 (vfloat16mf4_t): Add vfloat16mf4_t to WF operations.
10928 (vfloat16mf2_t): Likewise.
10929 (vfloat16m1_t): Likewise.
10930 (vfloat16m2_t): Likewise.
10931 (vfloat16m4_t): Likewise.
10932 (vfloat16m8_t): Likewise.
10933 * config/riscv/vector-iterators.md: Add FP=16 to VWF, VWF_ZVE64,
10934 VWLMUL1, VWLMUL1_ZVE64, vwlmul1 and vwlmul1_zve64.
10935
10936 2023-06-06 Fei Gao <gaofei@eswincomputing.com>
10937
10938 * config/riscv/riscv.cc (riscv_adjust_libcall_cfi_prologue): Use Pmode
10939 for cfi reg/mem machmode
10940 (riscv_adjust_libcall_cfi_epilogue): Use Pmode for cfi reg machmode
10941
10942 2023-06-06 Li Xu <xuli1@eswincomputing.com>
10943
10944 * config/riscv/vector-iterators.md:
10945 Fix 'REQUIREMENT' for machine_mode 'MODE'.
10946 * config/riscv/vector.md (@pred_indexed_<order>store<VNX16_QHS:mode>
10947 <VNX16_QHSI:mode>): change VNX16_QHSI to VNX16_QHSDI.
10948 (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSDI:mode>): Ditto.
10949
10950 2023-06-06 Pan Li <pan2.li@intel.com>
10951
10952 * config/riscv/vector-iterators.md: Fix typo in mode attr.
10953
10954 2023-06-05 Andre Vieira <andre.simoesdiasvieira@arm.com>
10955 Joel Hutton <joel.hutton@arm.com>
10956
10957 * doc/generic.texi: Remove old tree codes.
10958 * expr.cc (expand_expr_real_2): Remove old tree code cases.
10959 * gimple-pretty-print.cc (dump_binary_rhs): Likewise.
10960 * optabs-tree.cc (optab_for_tree_code): Likewise.
10961 (supportable_half_widening_operation): Likewise.
10962 * tree-cfg.cc (verify_gimple_assign_binary): Likewise.
10963 * tree-inline.cc (estimate_operator_cost): Likewise.
10964 (op_symbol_code): Likewise.
10965 * tree-vect-data-refs.cc (vect_get_smallest_scalar_type): Likewise.
10966 (vect_analyze_data_ref_accesses): Likewise.
10967 * tree-vect-generic.cc (expand_vector_operations_1): Likewise.
10968 * cfgexpand.cc (expand_debug_expr): Likewise.
10969 * tree-vect-stmts.cc (vectorizable_conversion): Likewise.
10970 (supportable_widening_operation): Likewise.
10971 * gimple-range-op.cc (gimple_range_op_handler::maybe_non_standard):
10972 Likewise.
10973 * optabs.def (vec_widen_ssubl_hi_optab, vec_widen_ssubl_lo_optab,
10974 vec_widen_saddl_hi_optab, vec_widen_saddl_lo_optab,
10975 vec_widen_usubl_hi_optab, vec_widen_usubl_lo_optab,
10976 vec_widen_uaddl_hi_optab, vec_widen_uaddl_lo_optab): Remove optabs.
10977 * tree-pretty-print.cc (dump_generic_node): Remove tree code definition.
10978 * tree.def (WIDEN_PLUS_EXPR, WIDEN_MINUS_EXPR, VEC_WIDEN_PLUS_HI_EXPR,
10979 VEC_WIDEN_PLUS_LO_EXPR, VEC_WIDEN_MINUS_HI_EXPR,
10980 VEC_WIDEN_MINUS_LO_EXPR): Likewise.
10981
10982 2023-06-05 Andre Vieira <andre.simoesdiasvieira@arm.com>
10983 Joel Hutton <joel.hutton@arm.com>
10984 Tamar Christina <tamar.christina@arm.com>
10985
10986 * config/aarch64/aarch64-simd.md (vec_widen_<su>addl_lo_<mode>): Rename
10987 this ...
10988 (vec_widen_<su>add_lo_<mode>): ... to this.
10989 (vec_widen_<su>addl_hi_<mode>): Rename this ...
10990 (vec_widen_<su>add_hi_<mode>): ... to this.
10991 (vec_widen_<su>subl_lo_<mode>): Rename this ...
10992 (vec_widen_<su>sub_lo_<mode>): ... to this.
10993 (vec_widen_<su>subl_hi_<mode>): Rename this ...
10994 (vec_widen_<su>sub_hi_<mode>): ...to this.
10995 * doc/generic.texi: Document new IFN codes.
10996 * internal-fn.cc (lookup_hilo_internal_fn): Add lookup function.
10997 (commutative_binary_fn_p): Add widen_plus fn's.
10998 (widening_fn_p): New function.
10999 (narrowing_fn_p): New function.
11000 (direct_internal_fn_optab): Change visibility.
11001 * internal-fn.def (DEF_INTERNAL_WIDENING_OPTAB_FN): Macro to define an
11002 internal_fn that expands into multiple internal_fns for widening.
11003 (IFN_VEC_WIDEN_PLUS, IFN_VEC_WIDEN_PLUS_HI, IFN_VEC_WIDEN_PLUS_LO,
11004 IFN_VEC_WIDEN_PLUS_EVEN, IFN_VEC_WIDEN_PLUS_ODD,
11005 IFN_VEC_WIDEN_MINUS, IFN_VEC_WIDEN_MINUS_HI,
11006 IFN_VEC_WIDEN_MINUS_LO, IFN_VEC_WIDEN_MINUS_ODD,
11007 IFN_VEC_WIDEN_MINUS_EVEN): Define widening plus,minus functions.
11008 * internal-fn.h (direct_internal_fn_optab): Declare new prototype.
11009 (lookup_hilo_internal_fn): Likewise.
11010 (widening_fn_p): Likewise.
11011 (Narrowing_fn_p): Likewise.
11012 * optabs.cc (commutative_optab_p): Add widening plus optabs.
11013 * optabs.def (OPTAB_D): Define widen add, sub optabs.
11014 * tree-vect-patterns.cc (vect_recog_widen_op_pattern): Support
11015 patterns with a hi/lo or even/odd split.
11016 (vect_recog_sad_pattern): Refactor to use new IFN codes.
11017 (vect_recog_widen_plus_pattern): Likewise.
11018 (vect_recog_widen_minus_pattern): Likewise.
11019 (vect_recog_average_pattern): Likewise.
11020 * tree-vect-stmts.cc (vectorizable_conversion): Add support for
11021 _HILO IFNs.
11022 (supportable_widening_operation): Likewise.
11023 * tree.def (WIDEN_SUM_EXPR): Update example to use new IFNs.
11024
11025 2023-06-05 Andre Vieira <andre.simoesdiasvieira@arm.com>
11026 Joel Hutton <joel.hutton@arm.com>
11027
11028 * tree-vect-patterns.cc: Add include for gimple-iterator.
11029 (vect_recog_widen_op_pattern): Refactor to use code_helper.
11030 (vect_gimple_build): New function.
11031 * tree-vect-stmts.cc (simple_integer_narrowing): Refactor to use
11032 code_helper.
11033 (vectorizable_call): Likewise.
11034 (vect_gen_widened_results_half): Likewise.
11035 (vect_create_vectorized_demotion_stmts): Likewise.
11036 (vect_create_vectorized_promotion_stmts): Likewise.
11037 (vect_create_half_widening_stmts): Likewise.
11038 (vectorizable_conversion): Likewise.
11039 (supportable_widening_operation): Likewise.
11040 (supportable_narrowing_operation): Likewise.
11041 * tree-vectorizer.h (supportable_widening_operation): Change
11042 prototype to use code_helper.
11043 (supportable_narrowing_operation): Likewise.
11044 (vect_gimple_build): New function prototype.
11045 * tree.h (code_helper::safe_as_tree_code): New function.
11046 (code_helper::safe_as_fn_code): New function.
11047
11048 2023-06-05 Roger Sayle <roger@nextmovesoftware.com>
11049
11050 * wide-int.cc (wi::bitreverse_large): New function implementing
11051 bit reversal of an integer.
11052 * wide-int.h (wi::bitreverse): New (template) function prototype.
11053 (bitreverse_large): Prototype helper function/implementation.
11054 (wi::bitreverse): New template wrapper around bitreverse_large.
11055
11056 2023-06-05 Uros Bizjak <ubizjak@gmail.com>
11057
11058 * rtl.h (print_rtl_single): Change return type from int to void.
11059 (print_rtl_single_with_indent): Ditto.
11060 * print-rtl.h (class rtx_writer): Ditto. Change m_sawclose to bool.
11061 * print-rtl.cc (rtx_writer::rtx_writer): Update for m_sawclose change.
11062 (rtx_writer::print_rtx_operand_code_0): Ditto.
11063 (rtx_writer::print_rtx_operand_codes_E_and_V): Ditto.
11064 (rtx_writer::print_rtx_operand_code_i): Ditto.
11065 (rtx_writer::print_rtx_operand_code_u): Ditto.
11066 (rtx_writer::print_rtx_operand): Ditto.
11067 (rtx_writer::print_rtx): Ditto.
11068 (rtx_writer::finish_directive): Ditto.
11069 (print_rtl_single): Change return type from int to void
11070 and adjust function body accordingly.
11071 (rtx_writer::print_rtl_single_with_indent): Ditto.
11072
11073 2023-06-05 Uros Bizjak <ubizjak@gmail.com>
11074
11075 * rtl.h (reg_classes_intersect_p): Change return type from int to bool.
11076 (reg_class_subset_p): Ditto.
11077 * reginfo.cc (reg_classes_intersect_p): Ditto.
11078 (reg_class_subset_p): Ditto.
11079
11080 2023-06-05 Pan Li <pan2.li@intel.com>
11081
11082 * config/riscv/riscv-vector-builtins-types.def
11083 (vfloat32mf2_t): New type for DEF_RVV_WEXTF_OPS.
11084 (vfloat32m1_t): Ditto.
11085 (vfloat32m2_t): Ditto.
11086 (vfloat32m4_t): Ditto.
11087 (vfloat32m8_t): Ditto.
11088 (vint16mf4_t): New type for DEF_RVV_CONVERT_I_OPS.
11089 (vint16mf2_t): Ditto.
11090 (vint16m1_t): Ditto.
11091 (vint16m2_t): Ditto.
11092 (vint16m4_t): Ditto.
11093 (vint16m8_t): Ditto.
11094 (vuint16mf4_t): New type for DEF_RVV_CONVERT_U_OPS.
11095 (vuint16mf2_t): Ditto.
11096 (vuint16m1_t): Ditto.
11097 (vuint16m2_t): Ditto.
11098 (vuint16m4_t): Ditto.
11099 (vuint16m8_t): Ditto.
11100 (vint32mf2_t): New type for DEF_RVV_WCONVERT_I_OPS.
11101 (vint32m1_t): Ditto.
11102 (vint32m2_t): Ditto.
11103 (vint32m4_t): Ditto.
11104 (vint32m8_t): Ditto.
11105 (vuint32mf2_t): New type for DEF_RVV_WCONVERT_U_OPS.
11106 (vuint32m1_t): Ditto.
11107 (vuint32m2_t): Ditto.
11108 (vuint32m4_t): Ditto.
11109 (vuint32m8_t): Ditto.
11110 * config/riscv/vector-iterators.md: Add FP=16 support for V,
11111 VWCONVERTI, VCONVERT, VNCONVERT, VMUL1 and vlmul1.
11112
11113 2023-06-05 Andrew Pinski <apinski@marvell.com>
11114
11115 PR bootstrap/110085
11116 * Makefile.in (clean): Remove the removing of
11117 MULTILIB_DIR/MULTILIB_OPTIONS directories.
11118
11119 2023-06-05 YunQiang Su <yunqiang.su@cipunited.com>
11120
11121 * config/mips/mips-protos.h (mips_emit_speculation_barrier): New
11122 prototype.
11123 * config/mips/mips.cc (speculation_barrier_libfunc): New static
11124 variable.
11125 (mips_init_libfuncs): Initialize it.
11126 (mips_emit_speculation_barrier): New function.
11127 * config/mips/mips.md (speculation_barrier): Call
11128 mips_emit_speculation_barrier.
11129
11130 2023-06-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
11131
11132 * config/riscv/riscv-v.cc (class rvv_builder): Reorganize functions.
11133 (rvv_builder::can_duplicate_repeating_sequence_p): Ditto.
11134 (rvv_builder::repeating_sequence_use_merge_profitable_p): Ditto.
11135 (rvv_builder::get_merged_repeating_sequence): Ditto.
11136 (rvv_builder::get_merge_scalar_mask): Ditto.
11137 (emit_scalar_move_insn): Ditto.
11138 (emit_vlmax_integer_move_insn): Ditto.
11139 (emit_nonvlmax_integer_move_insn): Ditto.
11140 (emit_vlmax_gather_insn): Ditto.
11141 (emit_vlmax_masked_gather_mu_insn): Ditto.
11142 (get_repeating_sequence_dup_machine_mode): Ditto.
11143
11144 2023-06-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
11145
11146 * config/riscv/autovec.md: Split arguments.
11147 * config/riscv/riscv-protos.h (expand_vec_perm): Ditto.
11148 * config/riscv/riscv-v.cc (expand_vec_perm): Ditto.
11149
11150 2023-06-04 Andrew Pinski <apinski@marvell.com>
11151
11152 * expr.cc (do_store_flag): Improve for single bit testing
11153 not against zero but against that single bit.
11154
11155 2023-06-04 Andrew Pinski <apinski@marvell.com>
11156
11157 * expr.cc (do_store_flag): Extend the one bit checking case
11158 to handle the case where we don't have an and but rather still
11159 one bit is known to be non-zero.
11160
11161 2023-06-04 Jeff Law <jlaw@ventanamicro.com>
11162
11163 * config/h8300/constraints.md (Zz): Make this a normal
11164 constraint.
11165 * config/h8300/h8300.cc (TARGET_LRA_P): Remove.
11166 * config/h8300/logical.md (H8/SX bit patterns): Remove.
11167
11168 2023-06-04 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
11169
11170 * config/xtensa/xtensa.md (*btrue_INT_MIN, *eqne_INT_MIN):
11171 New insn_and_split patterns.
11172
11173 2023-06-04 Juzhe-Zhong <juzhe.zhong@rivai.ai>
11174
11175 PR target/110109
11176 * config/riscv/riscv-vector-builtins-bases.cc: Change expand approach.
11177 * config/riscv/vector.md (@vlmul_extx2<mode>): Remove it.
11178 (@vlmul_extx4<mode>): Ditto.
11179 (@vlmul_extx8<mode>): Ditto.
11180 (@vlmul_extx16<mode>): Ditto.
11181 (@vlmul_extx32<mode>): Ditto.
11182 (@vlmul_extx64<mode>): Ditto.
11183 (*vlmul_extx2<mode>): Ditto.
11184 (*vlmul_extx4<mode>): Ditto.
11185 (*vlmul_extx8<mode>): Ditto.
11186 (*vlmul_extx16<mode>): Ditto.
11187 (*vlmul_extx32<mode>): Ditto.
11188 (*vlmul_extx64<mode>): Ditto.
11189
11190 2023-06-04 Pan Li <pan2.li@intel.com>
11191
11192 * config/riscv/riscv-vector-builtins-types.def
11193 (vfloat32mf2_t): Add vfloat32mf2_t type to vfncvt.f.f.w operations.
11194 (vfloat32m1_t): Likewise.
11195 (vfloat32m2_t): Likewise.
11196 (vfloat32m4_t): Likewise.
11197 (vfloat32m8_t): Likewise.
11198 * config/riscv/riscv-vector-builtins.def: Fix typo in comments.
11199 * config/riscv/vector-iterators.md: Add single to half machine
11200 mode conversion.
11201
11202 2023-06-04 Juzhe-Zhong <juzhe.zhong@rivai.ai>
11203
11204 * config/riscv/autovec-opt.md (*<optab>not<mode>): Move to autovec-opt.md.
11205 (*n<optab><mode>): Ditto.
11206 * config/riscv/autovec.md (*<optab>not<mode>): Ditto.
11207 (*n<optab><mode>): Ditto.
11208 * config/riscv/vector.md: Ditto.
11209
11210 2023-06-04 Roger Sayle <roger@nextmovesoftware.com>
11211
11212 PR target/110083
11213 * config/i386/i386-features.cc (scalar_chain::convert_compare):
11214 Update or delete REG_EQUAL notes, converting CONST_INT and
11215 CONST_WIDE_INT immediate operands to a suitable CONST_VECTOR.
11216
11217 2023-06-04 Jason Merrill <jason@redhat.com>
11218
11219 PR c++/97720
11220 * tree-eh.cc (lower_resx): Pass the exception pointer to the
11221 failure_decl.
11222 * except.h: Tweak comment.
11223
11224 2023-06-04 Hans-Peter Nilsson <hp@axis.com>
11225
11226 * postreload.cc (move2add_use_add2_insn): Handle
11227 trivial single_sets. Rename variable PAT to SET.
11228 (move2add_use_add3_insn, reload_cse_move2add): Similar.
11229
11230 2023-06-04 Pan Li <pan2.li@intel.com>
11231
11232 * config/riscv/riscv-vector-builtins-types.def
11233 (vfloat16mf4_t): Add the float16 type to DEF_RVV_F_OPS.
11234 (vfloat16mf2_t): Likewise.
11235 (vfloat16m1_t): Likewise.
11236 (vfloat16m2_t): Likewise.
11237 (vfloat16m4_t): Likewise.
11238 (vfloat16m8_t): Likewise.
11239 * config/riscv/riscv.md: Add vfloat16*_t to attr mode.
11240 * config/riscv/vector-iterators.md: Add vfloat16*_t machine mode
11241 to V, V_WHOLE, V_FRACT, VINDEX, VM, VEL and sew.
11242 * config/riscv/vector.md: Add vfloat16*_t machine mode to sew,
11243 vlmul and ratio.
11244
11245 2023-06-03 Fei Gao <gaofei@eswincomputing.com>
11246
11247 * config/riscv/riscv.cc (riscv_expand_epilogue): fix cfi issue with
11248 correct offset.
11249
11250 2023-06-03 Die Li <lidie@eswincomputing.com>
11251
11252 * config/riscv/thead.md (*th_cond_gpr_mov<GPR:mode><GPR2:mode>): Delete.
11253
11254 2023-06-03 Juzhe-Zhong <juzhe.zhong@rivai.ai>
11255
11256 * config/riscv/predicates.md: Change INTVAL into UINTVAL.
11257
11258 2023-06-03 Juzhe-Zhong <juzhe.zhong@rivai.ai>
11259
11260 * config/riscv/vector.md: Add vector-opt.md.
11261 * config/riscv/autovec-opt.md: New file.
11262
11263 2023-06-03 liuhongt <hongtao.liu@intel.com>
11264
11265 PR tree-optimization/110067
11266 * gimple-ssa-store-merging.cc (find_bswap_or_nop): Don't try
11267 bswap + rotate when TYPE_PRECISION(n->type) > n->range.
11268
11269 2023-06-03 liuhongt <hongtao.liu@intel.com>
11270
11271 PR target/92658
11272 * config/i386/mmx.md (truncv2hiv2qi2): New define_insn.
11273 (truncv2si<mode>2): Ditto.
11274
11275 2023-06-02 Andrew Pinski <apinski@marvell.com>
11276
11277 PR rtl-optimization/102733
11278 * dse.cc (store_info): Add addrspace field.
11279 (record_store): Record the address space
11280 and check to make sure they are the same.
11281
11282 2023-06-02 Andrew Pinski <apinski@marvell.com>
11283
11284 PR rtl-optimization/110042
11285 * ifcvt.cc (bbs_ok_for_cmove_arith): Allow paradoxical subregs.
11286 (bb_valid_for_noce_process_p): Strip the subreg for the SET_DEST.
11287
11288 2023-06-02 Iain Sandoe <iain@sandoe.co.uk>
11289
11290 PR target/110044
11291 * config/rs6000/rs6000.cc (darwin_rs6000_special_round_type_align):
11292 Make sure that we do not have a cap on field alignment before altering
11293 the struct layout based on the type alignment of the first entry.
11294
11295 2023-06-02 David Faust <david.faust@oracle.com>
11296
11297 PR debug/110073
11298 * btfout.cc (btf_absolute_func_id): New function.
11299 (btf_asm_func_type): Call it here. Change index parameter from
11300 size_t to ctf_id_t. Use PRIu64 formatter.
11301
11302 2023-06-02 Alex Coplan <alex.coplan@arm.com>
11303
11304 * btfout.cc (btf_asm_type): Use PRIu64 instead of %lu for uint64_t.
11305 (btf_asm_datasec_type): Likewise.
11306
11307 2023-06-02 Carl Love <cel@us.ibm.com>
11308
11309 * config/rs6000/rs6000-builtins.def (__builtin_altivec_tr_stxvrhx,
11310 __builtin_altivec_tr_stxvrwx): Fix type of third argument.
11311
11312 2023-06-02 Jason Merrill <jason@redhat.com>
11313
11314 PR c++/110070
11315 PR c++/105838
11316 * tree.h (DECL_MERGEABLE): New.
11317 * tree-core.h (struct tree_decl_common): Mention it.
11318 * gimplify.cc (gimplify_init_constructor): Check it.
11319 * cgraph.cc (symtab_node::address_can_be_compared_p): Likewise.
11320 * varasm.cc (categorize_decl_for_section): Likewise.
11321
11322 2023-06-02 Uros Bizjak <ubizjak@gmail.com>
11323
11324 * rtl.h (stack_regs_mentioned): Change return type from int to bool.
11325 * reg-stack.cc (struct_block_info_def): Change "done" to bool.
11326 (stack_regs_mentioned_p): Change return type from int to bool
11327 and adjust function body accordingly.
11328 (stack_regs_mentioned): Ditto.
11329 (check_asm_stack_operands): Ditto. Change "malformed_asm"
11330 variable to bool.
11331 (move_for_stack_reg): Recode handling of control_flow_insn_deleted.
11332 (swap_rtx_condition_1): Change return type from int to bool
11333 and adjust function body accordingly. Change "r" variable to bool.
11334 (swap_rtx_condition): Change return type from int to bool
11335 and adjust function body accordingly.
11336 (subst_stack_regs_pat): Recode handling of control_flow_insn_deleted.
11337 (subst_stack_regs): Ditto.
11338 (convert_regs_entry): Change return type from int to bool and adjust
11339 function body accordingly. Change "inserted" variable to bool.
11340 (convert_regs_1): Recode handling of control_flow_insn_deleted.
11341 (convert_regs_2): Recode handling of cfg_altered.
11342 (convert_regs): Ditto. Change "inserted" variable to bool.
11343
11344 2023-06-02 Jason Merrill <jason@redhat.com>
11345
11346 PR c++/95226
11347 * varasm.cc (output_constant) [REAL_TYPE]: Check that sizes match.
11348 (initializer_constant_valid_p_1): Compare float precision.
11349
11350 2023-06-02 Alexander Monakov <amonakov@ispras.ru>
11351
11352 * doc/extend.texi (Vector Extensions): Clarify bitwise shift
11353 semantics.
11354
11355 2023-06-02 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
11356
11357 * tree-vect-loop-manip.cc (vect_set_loop_controls_directly): Change decrement IV flow.
11358 (vect_set_loop_condition_partial_vectors): Ditto.
11359
11360 2023-06-02 Georg-Johann Lay <avr@gjlay.de>
11361
11362 PR target/110088
11363 * config/avr/avr.md: Add an RTL peephole to optimize operations on
11364 non-LD_REGS after a move from LD_REGS.
11365 (piaop): New code iterator.
11366
11367 2023-06-02 Thomas Schwinge <thomas@codesourcery.com>
11368
11369 PR testsuite/66005
11370 * doc/install.texi: Document (optional) Perl usage for parallel
11371 testing of libgomp.
11372
11373 2023-06-02 Thomas Schwinge <thomas@codesourcery.com>
11374
11375 PR bootstrap/82856
11376 * doc/install.texi (Perl): Back to requiring "Perl version 5.6.1 (or
11377 later)".
11378
11379 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
11380 KuanLin Chen <best124612@gmail.com>
11381
11382 * config/riscv/riscv-vector-builtins-bases.cc: Add _mu overloaded intrinsics.
11383 * config/riscv/riscv-vector-builtins-shapes.cc (struct fault_load_def): Ditto.
11384
11385 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
11386
11387 * config/riscv/riscv-v.cc (expand_vec_series): Optimize reverse series index vector.
11388
11389 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
11390
11391 * config/riscv/predicates.md: Change INTVAL into UINTVAL.
11392
11393 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
11394
11395 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_VXRM_ENUM): Add
11396 __RISCV_ prefix.
11397 (DEF_RVV_FRM_ENUM): Ditto.
11398
11399 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
11400
11401 * config/riscv/riscv-vector-builtins-bases.cc: Change vwadd.wv/vwsub.wv
11402 intrinsic API expander
11403 * config/riscv/vector.md
11404 (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>): Remove it.
11405 (@pred_single_widen_sub<any_extend:su><mode>): New pattern.
11406 (@pred_single_widen_add<any_extend:su><mode>): New pattern.
11407
11408 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
11409
11410 * config/riscv/autovec.md (vec_perm<mode>): New pattern.
11411 * config/riscv/predicates.md (vector_perm_operand): New predicate.
11412 * config/riscv/riscv-protos.h (enum insn_type): New enum.
11413 (expand_vec_perm): New function.
11414 * config/riscv/riscv-v.cc (const_vec_all_in_range_p): Ditto.
11415 (gen_const_vector_dup): Ditto.
11416 (emit_vlmax_gather_insn): Ditto.
11417 (emit_vlmax_masked_gather_mu_insn): Ditto.
11418 (expand_vec_perm): Ditto.
11419
11420 2023-06-01 Jason Merrill <jason@redhat.com>
11421
11422 * doc/invoke.texi (-Wpedantic): Improve clarity.
11423
11424 2023-06-01 Uros Bizjak <ubizjak@gmail.com>
11425
11426 * rtl.h (exp_equiv_p): Change return type from int to bool.
11427 * cse.cc (mention_regs): Change return type from int to bool
11428 and adjust function body accordingly.
11429 (exp_equiv_p): Ditto.
11430 (insert_regs): Ditto. Change "modified" function argument to bool
11431 and update usage accordingly.
11432 (record_jump_cond): Remove always zero "reversed_nonequality"
11433 function argument and update usage accordingly.
11434 (fold_rtx): Change "changed" variable to bool.
11435 (record_jump_equiv): Remove unneeded "reversed_nonequality" variable.
11436 (is_dead_reg): Change return type from int to bool.
11437
11438 2023-06-01 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
11439
11440 * config/xtensa/xtensa.md (adddi3, subdi3):
11441 New RTL generation patterns implemented according to the instruc-
11442 tion idioms described in the Xtensa ISA reference manual (p. 600).
11443
11444 2023-06-01 Roger Sayle <roger@nextmovesoftware.com>
11445 Uros Bizjak <ubizjak@gmail.com>
11446
11447 PR target/109973
11448 * config/i386/i386-builtin.def (__builtin_ia32_ptestz128): Use new
11449 CODE_for_sse4_1_ptestzv2di.
11450 (__builtin_ia32_ptestc128): Use new CODE_for_sse4_1_ptestcv2di.
11451 (__builtin_ia32_ptestz256): Use new CODE_for_avx_ptestzv4di.
11452 (__builtin_ia32_ptestc256): Use new CODE_for_avx_ptestcv4di.
11453 * config/i386/i386-expand.cc (ix86_expand_branch): Use CCZmode
11454 when expanding UNSPEC_PTEST to compare against zero.
11455 * config/i386/i386-features.cc (scalar_chain::convert_compare):
11456 Likewise generate CCZmode UNSPEC_PTESTs when converting comparisons.
11457 (general_scalar_chain::convert_insn): Use CCZmode for COMPARE result.
11458 (timode_scalar_chain::convert_insn): Use CCZmode for COMPARE result.
11459 * config/i386/i386-protos.h (ix86_match_ptest_ccmode): Prototype.
11460 * config/i386/i386.cc (ix86_match_ptest_ccmode): New predicate to
11461 check for suitable matching modes for the UNSPEC_PTEST pattern.
11462 * config/i386/sse.md (define_split): When splitting UNSPEC_MOVMSK
11463 to UNSPEC_PTEST, preserve the FLAG_REG mode as CCZ.
11464 (*<sse4_1>_ptest<mode>): Add asterisk to hide define_insn. Remove
11465 ":CC" mode of FLAGS_REG, instead use ix86_match_ptest_ccmode.
11466 (<sse4_1>_ptestz<mode>): New define_expand to specify CCZ.
11467 (<sse4_1>_ptestc<mode>): New define_expand to specify CCC.
11468 (<sse4_1>_ptest<mode>): A define_expand using CC to preserve the
11469 current behavior.
11470 (*ptest<mode>_and): Specify CCZ to only perform this optimization
11471 when only the Z flag is required.
11472
11473 2023-06-01 Jonathan Wakely <jwakely@redhat.com>
11474
11475 PR target/109954
11476 * doc/invoke.texi (x86 Options): Fix description of -m32 option.
11477
11478 2023-06-01 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11479
11480 * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<VDMOV:mode>):
11481 Add =r,m and =r,m alternatives.
11482 (load_pair<DREG:mode><DREG2:mode>): Likewise.
11483 (vec_store_pair<DREG:mode><DREG2:mode>): Likewise.
11484
11485 2023-06-01 Pan Li <pan2.li@intel.com>
11486
11487 * common/config/riscv/riscv-common.cc: Add FP_16 mask to zvfhmin
11488 and zvfh.
11489 * config/riscv/genrvv-type-indexer.cc (valid_type): Allow FP16.
11490 (main): Disable FP16 tuple.
11491 * config/riscv/riscv-opts.h (MASK_VECTOR_ELEN_FP_16): New macro.
11492 (TARGET_VECTOR_ELEN_FP_16): Ditto.
11493 * config/riscv/riscv-vector-builtins.cc (check_required_extensions):
11494 Add FP16.
11495 * config/riscv/riscv-vector-builtins.def (vfloat16mf4_t): New type.
11496 (vfloat16mf2_t): Ditto.
11497 (vfloat16m1_t): Ditto.
11498 (vfloat16m2_t): Ditto.
11499 (vfloat16m4_t): Ditto.
11500 (vfloat16m8_t): Ditto.
11501 * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_ELEN_FP_16):
11502 New macro.
11503 * config/riscv/riscv-vector-switch.def (ENTRY): Allow FP16
11504 machine mode based on TARGET_VECTOR_ELEN_FP_16.
11505
11506 2023-06-01 Juzhe-Zhong <juzhe.zhong@rivai.ai>
11507
11508 * config/riscv/riscv-vector-builtins.cc (register_frm): New function.
11509 (DEF_RVV_FRM_ENUM): New macro.
11510 (handle_pragma_vector): Add FRM enum
11511 * config/riscv/riscv-vector-builtins.def (DEF_RVV_FRM_ENUM): New macro.
11512 (RNE): Ditto.
11513 (RTZ): Ditto.
11514 (RDN): Ditto.
11515 (RUP): Ditto.
11516 (RMM): Ditto.
11517
11518 2023-05-31 Roger Sayle <roger@nextmovesoftware.com>
11519 Richard Sandiford <richard.sandiford@arm.com>
11520
11521 * fold-const-call.cc (fold_const_call_ss) <CFN_BUILT_IN_BSWAP*>:
11522 Update call to wi::bswap.
11523 * simplify-rtx.cc (simplify_const_unary_operation) <case BSWAP>:
11524 Update call to wi::bswap.
11525 * tree-ssa-ccp.cc (evaluate_stmt) <case BUILT_IN_BSWAP*>:
11526 Update calls to wi::bswap.
11527 * wide-int.cc (wide_int_storage::bswap): Remove/rename to...
11528 (wi::bswap_large): New function, with revised API.
11529 * wide-int.h (wi::bswap): New (template) function prototype.
11530 (wide_int_storage::bswap): Remove method.
11531 (sext_large, zext_large): Consistent indentation/line wrapping.
11532 (bswap_large): Prototype helper function containing implementation.
11533 (wi::bswap): New template wrapper around bswap_large.
11534
11535 2023-05-31 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11536
11537 PR target/99195
11538 * config/aarch64/aarch64-simd.md (<sur>dot_prod<vsi2qi>): Rename to...
11539 (<sur>dot_prod<vsi2qi><vczle><vczbe>): ... This.
11540 (usdot_prod<vsi2qi>): Rename to...
11541 (usdot_prod<vsi2qi><vczle><vczbe>): ... This.
11542 (aarch64_<sur>dot_lane<vsi2qi>): Rename to...
11543 (aarch64_<sur>dot_lane<vsi2qi><vczle><vczbe>): ... This.
11544 (aarch64_<sur>dot_laneq<vsi2qi>): Rename to...
11545 (aarch64_<sur>dot_laneq<vsi2qi><vczle><vczbe>): ... This.
11546 (aarch64_<DOTPROD_I8MM:sur>dot_lane<VB:isquadop><VS:vsi2qi>): Rename to...
11547 (aarch64_<DOTPROD_I8MM:sur>dot_lane<VB:isquadop><VS:vsi2qi><vczle><vczbe>):
11548 ... This.
11549
11550 2023-05-31 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11551
11552 PR target/99195
11553 * config/aarch64/aarch64-simd.md (aarch64_sq<r>dmulh<mode>): Rename to...
11554 (aarch64_sq<r>dmulh<mode><vczle><vczbe>): ... This.
11555 (aarch64_sq<r>dmulh_n<mode>): Rename to...
11556 (aarch64_sq<r>dmulh_n<mode><vczle><vczbe>): ... This.
11557 (aarch64_sq<r>dmulh_lane<mode>): Rename to...
11558 (aarch64_sq<r>dmulh_lane<mode><vczle><vczbe>): ... This.
11559 (aarch64_sq<r>dmulh_laneq<mode>): Rename to...
11560 (aarch64_sq<r>dmulh_laneq<mode><vczle><vczbe>): ... This.
11561 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h<mode>): Rename to...
11562 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h<mode><vczle><vczbe>): ... This.
11563 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_lane<mode>): Rename to...
11564 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_lane<mode><vczle><vczbe>): ... This.
11565 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_laneq<mode>): Rename to...
11566 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_laneq<mode><vczle><vczbe>): ... This.
11567
11568 2023-05-31 David Faust <david.faust@oracle.com>
11569
11570 * btfout.cc (btf_kind_names): New.
11571 (btf_kind_name): New.
11572 (btf_absolute_var_id): New utility function.
11573 (btf_relative_var_id): Likewise.
11574 (btf_relative_func_id): Likewise.
11575 (btf_absolute_datasec_id): Likewise.
11576 (btf_asm_type_ref): New.
11577 (btf_asm_type): Update asm comments and use btf_asm_type_ref ().
11578 (btf_asm_array): Likewise. Accept ctf_container_ref parameter.
11579 (btf_asm_varent): Likewise.
11580 (btf_asm_func_arg): Likewise.
11581 (btf_asm_datasec_entry): Likewise.
11582 (btf_asm_datasec_type): Likewise.
11583 (btf_asm_func_type): Likewise. Add index parameter.
11584 (btf_asm_enum_const): Likewise.
11585 (btf_asm_sou_member): Likewise.
11586 (output_btf_vars): Update btf_asm_* call accordingly.
11587 (output_asm_btf_sou_fields): Likewise.
11588 (output_asm_btf_enum_list): Likewise.
11589 (output_asm_btf_func_args_list): Likewise.
11590 (output_asm_btf_vlen_bytes): Likewise.
11591 (output_btf_func_types): Add ctf_container_ref parameter.
11592 Pass it to btf_asm_func_type.
11593 (output_btf_datasec_types): Update btf_asm_datsec_type call similarly.
11594 (btf_output): Update output_btf_func_types call similarly.
11595
11596 2023-05-31 David Faust <david.faust@oracle.com>
11597
11598 * btfout.cc (btf_asm_type): Add dedicated cases for BTF_KIND_ARRAY
11599 and BTF_KIND_FWD which do not use the size/type field at all.
11600
11601 2023-05-31 Uros Bizjak <ubizjak@gmail.com>
11602
11603 * rtl.h (subreg_lowpart_p): Change return type from int to bool.
11604 (active_insn_p): Ditto.
11605 (in_sequence_p): Ditto.
11606 (unshare_all_rtl): Change return type from int to void.
11607 * emit-rtl.h (mem_expr_equal_p): Change return type from int to bool.
11608 * emit-rtl.cc (subreg_lowpart_p): Change return type from int to bool
11609 and adjust function body accordingly.
11610 (mem_expr_equal_p): Ditto.
11611 (unshare_all_rtl): Change return type from int to void
11612 and adjust function body accordingly.
11613 (verify_rtx_sharing): Remove unneeded return.
11614 (active_insn_p): Change return type from int to bool
11615 and adjust function body accordingly.
11616 (in_sequence_p): Ditto.
11617
11618 2023-05-31 Uros Bizjak <ubizjak@gmail.com>
11619
11620 * rtl.h (true_dependence): Change return type from int to bool.
11621 (canon_true_dependence): Ditto.
11622 (read_dependence): Ditto.
11623 (anti_dependence): Ditto.
11624 (canon_anti_dependence): Ditto.
11625 (output_dependence): Ditto.
11626 (canon_output_dependence): Ditto.
11627 (may_alias_p): Ditto.
11628 * alias.h (alias_sets_conflict_p): Ditto.
11629 (alias_sets_must_conflict_p): Ditto.
11630 (objects_must_conflict_p): Ditto.
11631 (nonoverlapping_memrefs_p): Ditto.
11632 * alias.cc (rtx_equal_for_memref_p): Remove forward declaration.
11633 (record_set): Ditto.
11634 (base_alias_check): Ditto.
11635 (find_base_value): Ditto.
11636 (mems_in_disjoint_alias_sets_p): Ditto.
11637 (get_alias_set_entry): Ditto.
11638 (decl_for_component_ref): Ditto.
11639 (write_dependence_p): Ditto.
11640 (memory_modified_1): Ditto.
11641 (mems_in_disjoint_alias_set_p): Change return type from int to bool
11642 and adjust function body accordingly.
11643 (alias_sets_conflict_p): Ditto.
11644 (alias_sets_must_conflict_p): Ditto.
11645 (objects_must_conflict_p): Ditto.
11646 (rtx_equal_for_memref_p): Ditto.
11647 (base_alias_check): Ditto.
11648 (read_dependence): Ditto.
11649 (nonoverlapping_memrefs_p): Ditto.
11650 (true_dependence_1): Ditto.
11651 (true_dependence): Ditto.
11652 (canon_true_dependence): Ditto.
11653 (write_dependence_p): Ditto.
11654 (anti_dependence): Ditto.
11655 (canon_anti_dependence): Ditto.
11656 (output_dependence): Ditto.
11657 (canon_output_dependence): Ditto.
11658 (may_alias_p): Ditto.
11659 (init_alias_analysis): Change "changed" variable to bool.
11660
11661 2023-05-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
11662
11663 * config/riscv/autovec.md (<optab><v_double_trunc><mode>2): Change
11664 expand into define_insn_and_split.
11665
11666 2023-05-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
11667
11668 * config/riscv/vector.md: Remove FRM.
11669
11670 2023-05-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
11671
11672 * config/riscv/vector.md: Remove FRM.
11673
11674 2023-05-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
11675
11676 * config/riscv/vector.md: Remove FRM.
11677
11678 2023-05-31 Christophe Lyon <christophe.lyon@linaro.org>
11679
11680 PR target/110039
11681 * config/aarch64/aarch64.md (aarch64_rev16si2_alt3): New
11682 pattern.
11683
11684 2023-05-31 Richard Biener <rguenther@suse.de>
11685
11686 PR ipa/109983
11687 PR tree-optimization/109143
11688 * tree-ssa-structalias.cc (struct topo_info): Remove.
11689 (init_topo_info): Likewise.
11690 (free_topo_info): Likewise.
11691 (compute_topo_order): Simplify API, put the component
11692 with ESCAPED last so it's processed first.
11693 (topo_visit): Adjust.
11694 (solve_graph): Likewise.
11695
11696 2023-05-31 Richard Biener <rguenther@suse.de>
11697
11698 * tree-ssa-structalias.cc (constraint_stats::num_avoided_edges):
11699 New.
11700 (add_graph_edge): Count redundant edges we avoid to create.
11701 (dump_sa_stats): Dump them.
11702 (ipa_pta_execute): Do not dump generating constraints when
11703 we are not dumping them.
11704
11705 2023-05-31 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11706
11707 * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<VDMOV:mode>): Rewrite
11708 output template to avoid explicit switch on which_alternative.
11709 (*aarch64_simd_mov<VQMOV:mode>): Likewise.
11710 (and<mode>3): Likewise.
11711 (ior<mode>3): Likewise.
11712 * config/aarch64/aarch64.md (*mov<mode>_aarch64): Likewise.
11713
11714 2023-05-31 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
11715
11716 * config/xtensa/predicates.md (xtensa_bit_join_operator):
11717 New predicate.
11718 * config/xtensa/xtensa.md (ior_op): Remove.
11719 (*shlrd_reg): Rename from "*shlrd_reg_<code>", and add the
11720 insn_and_split pattern of the same name to express and capture
11721 the bit-combining operation with both sides swapped.
11722 In addition, replace use of code iterator with new operator
11723 predicate.
11724 (*shlrd_const, *shlrd_per_byte):
11725 Likewise regarding the code iterator.
11726
11727 2023-05-31 Cui, Lili <lili.cui@intel.com>
11728
11729 PR tree-optimization/110038
11730 * params.opt: Add a limit on tree-reassoc-width.
11731 * tree-ssa-reassoc.cc
11732 (rewrite_expr_tree_parallel): Add width limit.
11733
11734 2023-05-31 Pan Li <pan2.li@intel.com>
11735
11736 * common/config/riscv/riscv-common.cc:
11737 (riscv_implied_info): Add zvfh item.
11738 (riscv_ext_version_table): Ditto.
11739 (riscv_ext_flag_table): Ditto.
11740 * config/riscv/riscv-opts.h (MASK_ZVFH): New macro.
11741 (TARGET_ZVFH): Ditto.
11742
11743 2023-05-30 liuhongt <hongtao.liu@intel.com>
11744
11745 PR tree-optimization/108804
11746 * tree-vect-patterns.cc (vect_get_range_info): Remove static.
11747 * tree-vect-stmts.cc (vect_create_vectorized_demotion_stmts):
11748 Add new parameter narrow_src_p.
11749 (vectorizable_conversion): Enhance NARROW FLOAT_EXPR
11750 vectorization by truncating to lower precision.
11751 * tree-vectorizer.h (vect_get_range_info): New declare.
11752
11753 2023-05-30 Vladimir N. Makarov <vmakarov@redhat.com>
11754
11755 * lra-int.h (lra_update_sp_offset): Add the prototype.
11756 * lra.cc (setup_sp_offset): Change the return type. Use
11757 lra_update_sp_offset.
11758 * lra-eliminations.cc (lra_update_sp_offset): New function.
11759 (lra_process_new_insns): Push the current insn to reprocess if the
11760 input reload changes sp offset.
11761
11762 2023-05-30 Uros Bizjak <ubizjak@gmail.com>
11763
11764 PR target/110041
11765 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
11766 Fix misleading identation.
11767
11768 2023-05-30 Uros Bizjak <ubizjak@gmail.com>
11769
11770 * rtl.h (comparison_dominates_p): Change return type from int to bool.
11771 (condjump_p): Ditto.
11772 (any_condjump_p): Ditto.
11773 (any_uncondjump_p): Ditto.
11774 (simplejump_p): Ditto.
11775 (returnjump_p): Ditto.
11776 (eh_returnjump_p): Ditto.
11777 (onlyjump_p): Ditto.
11778 (invert_jump_1): Ditto.
11779 (invert_jump): Ditto.
11780 (rtx_renumbered_equal_p): Ditto.
11781 (redirect_jump_1): Ditto.
11782 (redirect_jump): Ditto.
11783 (condjump_in_parallel_p): Ditto.
11784 * jump.cc (invert_exp_1): Adjust forward declaration.
11785 (comparison_dominates_p): Change return type from int to bool
11786 and adjust function body accordingly.
11787 (simplejump_p): Ditto.
11788 (condjump_p): Ditto.
11789 (condjump_in_parallel_p): Ditto.
11790 (any_uncondjump_p): Ditto.
11791 (any_condjump_p): Ditto.
11792 (returnjump_p): Ditto.
11793 (eh_returnjump_p): Ditto.
11794 (onlyjump_p): Ditto.
11795 (redirect_jump_1): Ditto.
11796 (redirect_jump): Ditto.
11797 (invert_exp_1): Ditto.
11798 (invert_jump_1): Ditto.
11799 (invert_jump): Ditto.
11800 (rtx_renumbered_equal_p): Ditto.
11801
11802 2023-05-30 Andrew Pinski <apinski@marvell.com>
11803
11804 * fold-const.cc (minmax_from_comparison): Add support for NE_EXPR.
11805 * match.pd ((cond (cmp (convert1? x) c1) (convert2? x) c2) pattern):
11806 Add ne as a possible cmp.
11807 ((a CMP b) ? minmax<a, c> : minmax<b, c> pattern): Likewise.
11808
11809 2023-05-30 Andrew Pinski <apinski@marvell.com>
11810
11811 * match.pd (`(a CMP CST1) ? max<a,CST2> : a`): New
11812 pattern.
11813
11814 2023-05-30 Roger Sayle <roger@nextmovesoftware.com>
11815
11816 * simplify-rtx.cc (simplify_binary_operation_1) <AND>: Use wide-int
11817 instead of HWI_COMPUTABLE_MODE_P and UINTVAL in transformation of
11818 (and (extend X) C) as (zero_extend (and X C)), to also optimize
11819 modes wider than HOST_WIDE_INT.
11820
11821 2023-05-30 Roger Sayle <roger@nextmovesoftware.com>
11822
11823 PR target/107172
11824 * simplify-rtx.cc (simplify_const_relational_operation): Return
11825 early if we have a MODE_CC comparison that isn't a COMPARE against
11826 const0_rtx.
11827
11828 2023-05-30 Robin Dapp <rdapp@ventanamicro.com>
11829
11830 * config/riscv/riscv.cc (riscv_const_insns): Allow
11831 const_vec_duplicates.
11832
11833 2023-05-30 liuhongt <hongtao.liu@intel.com>
11834
11835 PR middle-end/108938
11836 * gimple-ssa-store-merging.cc (is_bswap_or_nop_p): New
11837 function, cut from original find_bswap_or_nop function.
11838 (find_bswap_or_nop): Add a new parameter, detect bswap +
11839 rotate and save rotate result in the new parameter.
11840 (bswap_replace): Add a new parameter to indicate rotate and
11841 generate rotate stmt if needed.
11842 (maybe_optimize_vector_constructor): Adjust for new rotate
11843 parameter in the upper 2 functions.
11844 (pass_optimize_bswap::execute): Ditto.
11845 (imm_store_chain_info::output_merged_store): Ditto.
11846
11847 2023-05-30 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11848
11849 * config/aarch64/aarch64-simd.md (aarch64_<sur>adalp<mode>): Delete.
11850 (aarch64_<su>adalp<mode>): New define_expand.
11851 (*aarch64_<su>adalp<mode><vczle><vczbe>_insn): New define_insn.
11852 (aarch64_<su>addlp<mode>): Convert to define_expand.
11853 (*aarch64_<su>addlp<mode><vczle><vczbe>_insn): New define_insn.
11854 * config/aarch64/iterators.md (UNSPEC_SADDLP, UNSPEC_UADDLP): Delete.
11855 (ADALP): Likewise.
11856 (USADDLP): Likewise.
11857 * config/aarch64/predicates.md (vect_par_cnst_even_or_odd_half): Define.
11858
11859 2023-05-30 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11860
11861 * config/aarch64/aarch64-builtins.cc (VAR1): Move to after inclusion of
11862 aarch64-builtin-iterators.h. Add definition to remap shadd, uhadd,
11863 srhadd, urhadd builtin codes for standard optab ones.
11864 * config/aarch64/aarch64-simd.md (<u>avg<mode>3_floor): Rename to...
11865 (<su_optab>avg<mode>3_floor): ... This. Expand to RTL codes rather than
11866 unspec.
11867 (<u>avg<mode>3_ceil): Rename to...
11868 (<su_optab>avg<mode>3_ceil): ... This. Expand to RTL codes rather than
11869 unspec.
11870 (aarch64_<su>hsub<mode>): New define_expand.
11871 (aarch64_<sur>h<addsub><mode><vczle><vczbe>): Split into...
11872 (*aarch64_<su>h<ADDSUB:optab><mode><vczle><vczbe>_insn): ... This...
11873 (*aarch64_<su>rhadd<mode><vczle><vczbe>_insn): ... And this.
11874
11875 2023-05-30 Andreas Schwab <schwab@suse.de>
11876
11877 PR target/110036
11878 * config/riscv/riscv.cc (riscv_asan_shadow_offset): Update to
11879 match libsanitizer.
11880
11881 2023-05-30 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11882
11883 * config/aarch64/aarch64-modes.def (V16HI, V8SI, V4DI, V2TI): New modes.
11884 * config/aarch64/aarch64-protos.h (aarch64_const_vec_rnd_cst_p):
11885 Declare prototype.
11886 (aarch64_const_vec_rsra_rnd_imm_p): Likewise.
11887 * config/aarch64/aarch64-simd.md (*aarch64_simd_sra<mode>): Rename to...
11888 (aarch64_<sra_op>sra_n<mode>_insn): ... This.
11889 (aarch64_<sra_op>rsra_n<mode>_insn): New define_insn.
11890 (aarch64_<sra_op>sra_n<mode>): New define_expand.
11891 (aarch64_<sra_op>rsra_n<mode>): Likewise.
11892 (aarch64_<sur>sra_n<mode>): Rename to...
11893 (aarch64_<sur>sra_ndi): ... This.
11894 * config/aarch64/aarch64.cc (aarch64_classify_vector_mode): Add
11895 any_target_p argument.
11896 (aarch64_extract_vec_duplicate_wide_int): Define.
11897 (aarch64_const_vec_rsra_rnd_imm_p): Likewise.
11898 (aarch64_const_vec_rnd_cst_p): Likewise.
11899 (aarch64_vector_mode_supported_any_target_p): Likewise.
11900 (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Likewise.
11901 * config/aarch64/iterators.md (UNSPEC_SRSRA, UNSPEC_URSRA): Delete.
11902 (VSRA): Adjust for the above.
11903 (sur): Likewise.
11904 (V2XWIDE): New mode_attr.
11905 (vec_or_offset): Likewise.
11906 (SHIFTEXTEND): Likewise.
11907 * config/aarch64/predicates.md (aarch64_simd_rsra_rnd_imm_vec): New
11908 predicate.
11909 * doc/tm.texi (TARGET_VECTOR_MODE_SUPPORTED_P): Adjust description to
11910 clarify that it applies to current target options.
11911 (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Document.
11912 * doc/tm.texi.in: Regenerate.
11913 * stor-layout.cc (mode_for_vector): Check
11914 vector_mode_supported_any_target_p when iterating through vector modes.
11915 * target.def (TARGET_VECTOR_MODE_SUPPORTED_P): Adjust description to
11916 clarify that it applies to current target options.
11917 (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Define.
11918
11919 2023-05-30 Lili Cui <lili.cui@intel.com>
11920
11921 PR tree-optimization/98350
11922 * tree-ssa-reassoc.cc
11923 (rewrite_expr_tree_parallel): Rewrite this function.
11924 (rank_ops_for_fma): New.
11925 (reassociate_bb): Handle new function.
11926
11927 2023-05-30 Uros Bizjak <ubizjak@gmail.com>
11928
11929 * rtl.h (rtx_addr_can_trap_p): Change return type from int to bool.
11930 (rtx_unstable_p): Ditto.
11931 (reg_mentioned_p): Ditto.
11932 (reg_referenced_p): Ditto.
11933 (reg_used_between_p): Ditto.
11934 (reg_set_between_p): Ditto.
11935 (modified_between_p): Ditto.
11936 (no_labels_between_p): Ditto.
11937 (modified_in_p): Ditto.
11938 (reg_set_p): Ditto.
11939 (multiple_sets): Ditto.
11940 (set_noop_p): Ditto.
11941 (noop_move_p): Ditto.
11942 (reg_overlap_mentioned_p): Ditto.
11943 (dead_or_set_p): Ditto.
11944 (dead_or_set_regno_p): Ditto.
11945 (find_reg_fusage): Ditto.
11946 (find_regno_fusage): Ditto.
11947 (side_effects_p): Ditto.
11948 (volatile_refs_p): Ditto.
11949 (volatile_insn_p): Ditto.
11950 (may_trap_p_1): Ditto.
11951 (may_trap_p): Ditto.
11952 (may_trap_or_fault_p): Ditto.
11953 (computed_jump_p): Ditto.
11954 (auto_inc_p): Ditto.
11955 (loc_mentioned_in_p): Ditto.
11956 * rtlanal.cc (computed_jump_p_1): Adjust forward declaration.
11957 (rtx_unstable_p): Change return type from int to bool
11958 and adjust function body accordingly.
11959 (rtx_addr_can_trap_p): Ditto.
11960 (reg_mentioned_p): Ditto.
11961 (no_labels_between_p): Ditto.
11962 (reg_used_between_p): Ditto.
11963 (reg_referenced_p): Ditto.
11964 (reg_set_between_p): Ditto.
11965 (reg_set_p): Ditto.
11966 (modified_between_p): Ditto.
11967 (modified_in_p): Ditto.
11968 (multiple_sets): Ditto.
11969 (set_noop_p): Ditto.
11970 (noop_move_p): Ditto.
11971 (reg_overlap_mentioned_p): Ditto.
11972 (dead_or_set_p): Ditto.
11973 (dead_or_set_regno_p): Ditto.
11974 (find_reg_fusage): Ditto.
11975 (find_regno_fusage): Ditto.
11976 (remove_node_from_insn_list): Ditto.
11977 (volatile_insn_p): Ditto.
11978 (volatile_refs_p): Ditto.
11979 (side_effects_p): Ditto.
11980 (may_trap_p_1): Ditto.
11981 (may_trap_p): Ditto.
11982 (may_trap_or_fault_p): Ditto.
11983 (computed_jump_p): Ditto.
11984 (auto_inc_p): Ditto.
11985 (loc_mentioned_in_p): Ditto.
11986 * combine.cc (can_combine_p): Update indirect function.
11987
11988 2023-05-30 Juzhe-Zhong <juzhe.zhong@rivai.ai>
11989
11990 * config/riscv/autovec.md (<optab><mode><vconvert>2): New pattern.
11991 * config/riscv/iterators.md: New attribute.
11992 * config/riscv/vector-iterators.md: New attribute.
11993
11994 2023-05-30 From: Juzhe-Zhong <juzhe.zhong@rivai.ai>
11995
11996 * config/riscv/riscv.md: Fix signed and unsigned comparison
11997 warning.
11998
11999 2023-05-30 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12000
12001 * config/riscv/autovec.md (fnma<mode>4): New pattern.
12002 (*fnma<mode>): Ditto.
12003
12004 2023-05-29 Die Li <lidie@eswincomputing.com>
12005
12006 * config/riscv/riscv.cc (riscv_expand_conditional_move_onesided):
12007 Delete.
12008 (riscv_expand_conditional_move): Reuse the TARGET_SFB_ALU expand
12009 process for TARGET_XTHEADCONDMOV
12010
12011 2023-05-29 Uros Bizjak <ubizjak@gmail.com>
12012
12013 PR target/110021
12014 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2): Also require
12015 TARGET_AVX512BW to generate truncv16hiv16qi2.
12016
12017 2023-05-29 Jivan Hakobyan <jivanhakobyan9@gmail.com>
12018
12019 * config/riscv/riscv.md (and<mode>3): New expander.
12020 (*and<mode>3) New pattern.
12021 * config/riscv/predicates.md (arith_operand_or_mode_mask): New
12022 predicate.
12023
12024 2023-05-29 Pan Li <pan2.li@intel.com>
12025
12026 * config/riscv/riscv-v.cc (emit_vlmax_insn): Remove unnecessary
12027 comments and rename local variables.
12028 (emit_nonvlmax_insn): Diito.
12029 (emit_vlmax_merge_insn): Ditto.
12030 (emit_vlmax_cmp_insn): Ditto.
12031 (emit_vlmax_cmp_mu_insn): Ditto.
12032 (emit_scalar_move_insn): Ditto.
12033
12034 2023-05-29 Pan Li <pan2.li@intel.com>
12035
12036 * config/riscv/riscv-v.cc (emit_vlmax_insn): Eliminate the
12037 magic number.
12038 (emit_nonvlmax_insn): Ditto.
12039 (emit_vlmax_merge_insn): Ditto.
12040 (emit_vlmax_cmp_insn): Ditto.
12041 (emit_vlmax_cmp_mu_insn): Ditto.
12042 (expand_vec_series): Ditto.
12043
12044 2023-05-29 Pan Li <pan2.li@intel.com>
12045
12046 * config/riscv/riscv-protos.h (enum insn_type): New type.
12047 * config/riscv/riscv-v.cc (RVV_INSN_OPERANDS_MAX): New macro.
12048 (rvv_builder::can_duplicate_repeating_sequence_p): Align the referenced
12049 class member.
12050 (rvv_builder::get_merged_repeating_sequence): Ditto.
12051 (rvv_builder::repeating_sequence_use_merge_profitable_p): New function
12052 to evaluate the optimization cost.
12053 (rvv_builder::get_merge_scalar_mask): New function to get the merge
12054 mask.
12055 (emit_scalar_move_insn): New function to emit vmv.s.x.
12056 (emit_vlmax_integer_move_insn): New function to emit vlmax vmv.v.x.
12057 (emit_nonvlmax_integer_move_insn): New function to emit nonvlmax
12058 vmv.v.x.
12059 (get_repeating_sequence_dup_machine_mode): New function to get the dup
12060 machine mode.
12061 (expand_vector_init_merge_repeating_sequence): New function to perform
12062 the optimization.
12063 (expand_vec_init): Add this vector init optimization.
12064 * config/riscv/riscv.h (BITS_PER_WORD): New macro.
12065
12066 2023-05-29 Eric Botcazou <ebotcazou@adacore.com>
12067
12068 * tree-ssa-loop-manip.cc (create_iv): Try harder to find a SLOC to
12069 put onto the increment when it is inserted after the position.
12070
12071 2023-05-29 Eric Botcazou <ebotcazou@adacore.com>
12072
12073 * match.pd ((T)P - (T)(P + A) -> -(T) A): Avoid artificial overflow
12074 on constants.
12075
12076 2023-05-29 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12077
12078 * config/riscv/riscv-vsetvl.cc (source_equal_p): Fix ICE.
12079
12080 2023-05-29 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12081
12082 * config/riscv/autovec.md (fma<mode>4): New pattern.
12083 (*fma<mode>): Ditto.
12084 * config/riscv/riscv-protos.h (enum insn_type): New enum.
12085 (emit_vlmax_ternary_insn): New function.
12086 * config/riscv/riscv-v.cc (emit_vlmax_ternary_insn): Ditto.
12087
12088 2023-05-29 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12089
12090 * config/riscv/vector.md: Fix vimuladd instruction bug.
12091
12092 2023-05-29 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12093
12094 * config/riscv/riscv.cc (global_state_unknown_p): New function.
12095 (riscv_mode_after): Fix incorrect VXM.
12096
12097 2023-05-29 Pan Li <pan2.li@intel.com>
12098
12099 * common/config/riscv/riscv-common.cc:
12100 (riscv_implied_info): Add zvfhmin item.
12101 (riscv_ext_version_table): Ditto.
12102 (riscv_ext_flag_table): Ditto.
12103 * config/riscv/riscv-opts.h (MASK_ZVFHMIN): New macro.
12104 (TARGET_ZFHMIN): Align indent.
12105 (TARGET_ZFH): Ditto.
12106 (TARGET_ZVFHMIN): New macro.
12107
12108 2023-05-27 liuhongt <hongtao.liu@intel.com>
12109
12110 PR target/100711
12111 * config/i386/sse.md (*andnot<mode>3): Extend below splitter
12112 to VI_AVX2 to cover more modes.
12113
12114 2023-05-27 liuhongt <hongtao.liu@intel.com>
12115
12116 * config/i386/x86-tune.def (X86_TUNE_AVOID_FALSE_DEP_FOR_BMI):
12117 Remove ATOM and ICELAKE(and later) core processors.
12118
12119 2023-05-26 Robin Dapp <rdapp@ventanamicro.com>
12120
12121 * config/riscv/autovec.md (<optab><mode>2): Add vneg/vnot.
12122 (abs<mode>2): Add.
12123 * config/riscv/riscv-protos.h (emit_vlmax_masked_mu_insn):
12124 Declare.
12125 * config/riscv/riscv-v.cc (emit_vlmax_masked_mu_insn): New
12126 function.
12127
12128 2023-05-26 Robin Dapp <rdapp@ventanamicro.com>
12129 Juzhe Zhong <juzhe.zhong@rivai.ai>
12130
12131 * config/riscv/autovec.md (<optab><v_double_trunc><mode>2): New
12132 expander.
12133 (<optab><v_quad_trunc><mode>2): Dito.
12134 (<optab><v_oct_trunc><mode>2): Dito.
12135 (trunc<mode><v_double_trunc>2): Dito.
12136 (trunc<mode><v_quad_trunc>2): Dito.
12137 (trunc<mode><v_oct_trunc>2): Dito.
12138 * config/riscv/riscv-protos.h (vectorize_related_mode): Define.
12139 (autovectorize_vector_modes): Define.
12140 * config/riscv/riscv-v.cc (vectorize_related_mode): Implement
12141 hook.
12142 (autovectorize_vector_modes): Implement hook.
12143 * config/riscv/riscv.cc (riscv_autovectorize_vector_modes):
12144 Implement target hook.
12145 (riscv_vectorize_related_mode): Implement target hook.
12146 (TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_MODES): Define.
12147 (TARGET_VECTORIZE_RELATED_MODE): Define.
12148 * config/riscv/vector-iterators.md: Add lowercase versions of
12149 mode_attr iterators.
12150
12151 2023-05-26 Andrew Stubbs <ams@codesourcery.com>
12152 Tobias Burnus <tobias@codesourcery.com>
12153
12154 * config/gcn/gcn-hsa.h (XNACKOPT): New macro.
12155 (ASM_SPEC): Use XNACKOPT.
12156 * config/gcn/gcn-opts.h (enum sram_ecc_type): Rename to ...
12157 (enum hsaco_attr_type): ... this, and generalize the names.
12158 (TARGET_XNACK): New macro.
12159 * config/gcn/gcn.cc (gcn_option_override): Update to sorry for all
12160 but -mxnack=off.
12161 (output_file_start): Update xnack handling.
12162 (gcn_hsa_declare_function_name): Use TARGET_XNACK.
12163 * config/gcn/gcn.opt (-mxnack): Add the "on/off/any" syntax.
12164 (sram_ecc_type): Rename to ...
12165 (hsaco_attr_type: ... this.)
12166 * config/gcn/mkoffload.cc (SET_XNACK_ANY): New macro.
12167 (TEST_XNACK): Delete.
12168 (TEST_XNACK_ANY): New macro.
12169 (TEST_XNACK_ON): New macro.
12170 (main): Support the new -mxnack=on/off/any syntax.
12171 * doc/invoke.texi (-mxnack): Update for new syntax.
12172
12173 2023-05-26 Andrew Pinski <apinski@marvell.com>
12174
12175 * genmatch.cc (emit_debug_printf): New function.
12176 (dt_simplify::gen_1): Emit printf into the code
12177 before the `return true` or returning the folded result
12178 instead of emitting it always.
12179
12180 2023-05-26 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
12181
12182 * config/xtensa/xtensa-protos.h
12183 (xtensa_expand_block_set_unrolled_loop,
12184 xtensa_expand_block_set_small_loop): Remove.
12185 (xtensa_expand_block_set): New prototype.
12186 * config/xtensa/xtensa.cc
12187 (xtensa_expand_block_set_libcall): New subfunction.
12188 (xtensa_expand_block_set_unrolled_loop,
12189 xtensa_expand_block_set_small_loop): Rewrite as subfunctions.
12190 (xtensa_expand_block_set): New function that calls the above
12191 subfunctions.
12192 * config/xtensa/xtensa.md (memsetsi): Change to invoke only
12193 xtensa_expand_block_set().
12194
12195 2023-05-26 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
12196
12197 * config/xtensa/xtensa-protos.h (xtensa_m1_or_1_thru_15):
12198 New prototype.
12199 * config/xtensa/xtensa.cc (xtensa_m1_or_1_thru_15):
12200 New function.
12201 * config/xtensa/constraints.md (O):
12202 Change to use the above function.
12203 * config/xtensa/xtensa.md (*subsi3_from_const):
12204 New insn_and_split pattern.
12205
12206 2023-05-26 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
12207
12208 * config/xtensa/xtensa.md (*extzvsi-1bit_ashlsi3):
12209 Retract excessive line folding, and correct the value of
12210 the "length" insn attribute related to TARGET_DENSITY.
12211 (*extzvsi-1bit_addsubx): Ditto.
12212
12213 2023-05-26 Uros Bizjak <ubizjak@gmail.com>
12214
12215 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi):
12216 Do not disable call to ix86_expand_vecop_qihi2.
12217
12218 2023-05-26 liuhongt <hongtao.liu@intel.com>
12219
12220 PR target/109610
12221 PR target/109858
12222 * ira-costs.cc (scan_one_insn): Only use NO_REGS in cost
12223 calculation when !hard_regno_mode_ok for GENERAL_REGS and
12224 mode, otherwise still use GENERAL_REGS.
12225
12226 2023-05-26 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12227
12228 * config/riscv/riscv.cc (vector_zero_call_used_regs): Add
12229 explict VL and drop VL in ops.
12230
12231 2023-05-25 Jin Ma <jinma@linux.alibaba.com>
12232
12233 * sched-deps.cc (sched_macro_fuse_insns): Insns should not be fusion
12234 in different BB blocks.
12235
12236 2023-05-25 Uros Bizjak <ubizjak@gmail.com>
12237
12238 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
12239 Rewrite to expand to 2x-wider (e.g. V16QI -> V16HImode)
12240 instructions when available. Emulate truncation via
12241 ix86_expand_vec_perm_const_1 when native truncate insn
12242 is not available.
12243 (ix86_expand_vecop_qihi_partial) <case MULT>: Use pmovzx
12244 when available. Trivially rename some variables.
12245 (ix86_expand_vecop_qihi): Unconditionally call ix86_expand_vecop_qihi2.
12246 * config/i386/i386.cc (ix86_multiplication_cost): Rewrite cost
12247 calculation of V*QImode emulations to account for generation of
12248 2x-wider mode instructions.
12249 (ix86_shift_rotate_cost): Update cost calculation of V*QImode
12250 emulations to account for generation of 2x-wider mode instructions.
12251
12252 2023-05-25 Georg-Johann Lay <avr@gjlay.de>
12253
12254 PR target/104327
12255 * config/avr/avr.cc (avr_can_inline_p): New static function.
12256 (TARGET_CAN_INLINE_P): Define to that function.
12257
12258 2023-05-25 Georg-Johann Lay <avr@gjlay.de>
12259
12260 PR target/82931
12261 * config/avr/avr.md (*movbitqi.0): Rename to *movbit<mode>.0-6.
12262 Handle any bit position and use mode QISI.
12263 * config/avr/avr.cc (avr_rtx_costs_1) [IOR]: Return a cost
12264 of 2 insns for bit-transfer of respective style.
12265
12266 2023-05-25 Christophe Lyon <christophe.lyon@linaro.org>
12267
12268 * config/arm/iterators.md (MVE_6): Remove.
12269 * config/arm/mve.md: Replace MVE_6 with MVE_5.
12270
12271 2023-05-25 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
12272 Richard Sandiford <richard.sandiford@arm.com>
12273
12274 * tree-vect-loop-manip.cc (vect_adjust_loop_lens_control): New
12275 function.
12276 (vect_set_loop_controls_directly): Add decrement IV support.
12277 (vect_set_loop_condition_partial_vectors): Ditto.
12278 * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): New
12279 variable.
12280 * tree-vectorizer.h (LOOP_VINFO_USING_DECREMENTING_IV_P): New
12281 macro.
12282
12283 2023-05-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12284
12285 PR target/99195
12286 * config/aarch64/aarch64-simd.md (aarch64_fcadd<rot><mode>): Rename to...
12287 (aarch64_fcadd<rot><mode><vczle><vczbe>): ... This.
12288 Fix canonicalization of PLUS operands.
12289 (aarch64_fcmla<rot><mode>): Rename to...
12290 (aarch64_fcmla<rot><mode><vczle><vczbe>): ... This.
12291 Fix canonicalization of PLUS operands.
12292 (aarch64_fcmla_lane<rot><mode>): Rename to...
12293 (aarch64_fcmla_lane<rot><mode><vczle><vczbe>): ... This.
12294 Fix canonicalization of PLUS operands.
12295 (aarch64_fcmla_laneq<rot>v4hf): Rename to...
12296 (aarch64_fcmla_laneq<rot>v4hf<vczle><vczbe>): ... This.
12297 Fix canonicalization of PLUS operands.
12298 (aarch64_fcmlaq_lane<rot><mode>): Fix canonicalization of PLUS operands.
12299
12300 2023-05-25 Chris Sidebottom <chris.sidebottom@arm.com>
12301
12302 * config/arm/arm.md (rbitsi2): Rename to...
12303 (arm_rbit): ... This.
12304 (ctzsi2): Adjust for the above.
12305 (arm_rev16si2): Convert to define_expand.
12306 (arm_rev16si2_alt1): New pattern.
12307 (arm_rev16si2_alt): Rename to...
12308 (*arm_rev16si2_alt2): ... This.
12309 * config/arm/arm_acle.h (__ror, __rorl, __rorll, __clz, __clzl, __clzll,
12310 __cls, __clsl, __clsll, __revsh, __rev, __revl, __revll, __rev16,
12311 __rev16l, __rev16ll, __rbit, __rbitl, __rbitll): Define intrinsics.
12312 * config/arm/arm_acle_builtins.def (rbit, rev16si2): Define builtins.
12313
12314 2023-05-25 Alex Coplan <alex.coplan@arm.com>
12315
12316 PR target/109800
12317 * config/arm/arm.md (movdf): Generate temporary pseudo in DImode
12318 instead of DFmode.
12319 * config/arm/vfp.md (no_literal_pool_df_immediate): Rather than punning an
12320 lvalue DFmode pseudo into DImode, use a DImode pseudo and pun it into
12321 DFmode as an rvalue.
12322
12323 2023-05-25 Richard Biener <rguenther@suse.de>
12324
12325 PR target/109955
12326 * tree-vect-stmts.cc (vectorizable_condition): For
12327 embedded comparisons also handle the case when the target
12328 only provides vec_cmp and vcond_mask.
12329
12330 2023-05-25 Claudiu Zissulescu <claziss@gmail.com>
12331
12332 * config/arc/arc.cc (arc_call_tls_get_addr): Simplify access using
12333 TLS Local Dynamic.
12334
12335 2023-05-25 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
12336
12337 * config/aarch64/aarch64.cc (scalar_move_insn_p): New function.
12338 (seq_cost_ignoring_scalar_moves): Likewise.
12339 (aarch64_expand_vector_init): Call seq_cost_ignoring_scalar_moves.
12340
12341 2023-05-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12342
12343 * config/aarch64/arm_neon.h (vcage_f64): Reimplement with builtins.
12344 (vcage_f32): Likewise.
12345 (vcages_f32): Likewise.
12346 (vcageq_f32): Likewise.
12347 (vcaged_f64): Likewise.
12348 (vcageq_f64): Likewise.
12349 (vcagts_f32): Likewise.
12350 (vcagt_f32): Likewise.
12351 (vcagt_f64): Likewise.
12352 (vcagtq_f32): Likewise.
12353 (vcagtd_f64): Likewise.
12354 (vcagtq_f64): Likewise.
12355 (vcale_f32): Likewise.
12356 (vcale_f64): Likewise.
12357 (vcaled_f64): Likewise.
12358 (vcales_f32): Likewise.
12359 (vcaleq_f32): Likewise.
12360 (vcaleq_f64): Likewise.
12361 (vcalt_f32): Likewise.
12362 (vcalt_f64): Likewise.
12363 (vcaltd_f64): Likewise.
12364 (vcaltq_f32): Likewise.
12365 (vcaltq_f64): Likewise.
12366 (vcalts_f32): Likewise.
12367
12368 2023-05-25 Hu, Lin1 <lin1.hu@intel.com>
12369
12370 PR target/109173
12371 PR target/109174
12372 * config/i386/avx512bwintrin.h (_mm512_srli_epi16): Change type from
12373 int to const int or const int to const unsigned int.
12374 (_mm512_mask_srli_epi16): Ditto.
12375 (_mm512_slli_epi16): Ditto.
12376 (_mm512_mask_slli_epi16): Ditto.
12377 (_mm512_maskz_slli_epi16): Ditto.
12378 (_mm512_srai_epi16): Ditto.
12379 (_mm512_mask_srai_epi16): Ditto.
12380 (_mm512_maskz_srai_epi16): Ditto.
12381 * config/i386/avx512fintrin.h (_mm512_slli_epi64): Ditto.
12382 (_mm512_mask_slli_epi64): Ditto.
12383 (_mm512_maskz_slli_epi64): Ditto.
12384 (_mm512_srli_epi64): Ditto.
12385 (_mm512_mask_srli_epi64): Ditto.
12386 (_mm512_maskz_srli_epi64): Ditto.
12387 (_mm512_srai_epi64): Ditto.
12388 (_mm512_mask_srai_epi64): Ditto.
12389 (_mm512_maskz_srai_epi64): Ditto.
12390 (_mm512_slli_epi32): Ditto.
12391 (_mm512_mask_slli_epi32): Ditto.
12392 (_mm512_maskz_slli_epi32): Ditto.
12393 (_mm512_srli_epi32): Ditto.
12394 (_mm512_mask_srli_epi32): Ditto.
12395 (_mm512_maskz_srli_epi32): Ditto.
12396 (_mm512_srai_epi32): Ditto.
12397 (_mm512_mask_srai_epi32): Ditto.
12398 (_mm512_maskz_srai_epi32): Ditto.
12399 * config/i386/avx512vlbwintrin.h (_mm256_mask_srai_epi16): Ditto.
12400 (_mm256_maskz_srai_epi16): Ditto.
12401 (_mm_mask_srai_epi16): Ditto.
12402 (_mm_maskz_srai_epi16): Ditto.
12403 (_mm256_mask_slli_epi16): Ditto.
12404 (_mm256_maskz_slli_epi16): Ditto.
12405 (_mm_mask_slli_epi16): Ditto.
12406 (_mm_maskz_slli_epi16): Ditto.
12407 (_mm_maskz_srli_epi16): Ditto.
12408 * config/i386/avx512vlintrin.h (_mm256_mask_srli_epi32): Ditto.
12409 (_mm256_maskz_srli_epi32): Ditto.
12410 (_mm_mask_srli_epi32): Ditto.
12411 (_mm_maskz_srli_epi32): Ditto.
12412 (_mm256_mask_srli_epi64): Ditto.
12413 (_mm256_maskz_srli_epi64): Ditto.
12414 (_mm_mask_srli_epi64): Ditto.
12415 (_mm_maskz_srli_epi64): Ditto.
12416 (_mm256_mask_srai_epi32): Ditto.
12417 (_mm256_maskz_srai_epi32): Ditto.
12418 (_mm_mask_srai_epi32): Ditto.
12419 (_mm_maskz_srai_epi32): Ditto.
12420 (_mm256_srai_epi64): Ditto.
12421 (_mm256_mask_srai_epi64): Ditto.
12422 (_mm256_maskz_srai_epi64): Ditto.
12423 (_mm_srai_epi64): Ditto.
12424 (_mm_mask_srai_epi64): Ditto.
12425 (_mm_maskz_srai_epi64): Ditto.
12426 (_mm_mask_slli_epi32): Ditto.
12427 (_mm_maskz_slli_epi32): Ditto.
12428 (_mm_mask_slli_epi64): Ditto.
12429 (_mm_maskz_slli_epi64): Ditto.
12430 (_mm256_mask_slli_epi32): Ditto.
12431 (_mm256_maskz_slli_epi32): Ditto.
12432 (_mm256_mask_slli_epi64): Ditto.
12433 (_mm256_maskz_slli_epi64): Ditto.
12434
12435 2023-05-25 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12436
12437 * config/riscv/vector.md: Remove FRM_REGNUM dependency in rtz
12438 instructions.
12439
12440 2023-05-25 Aldy Hernandez <aldyh@redhat.com>
12441
12442 * data-streamer-in.cc (streamer_read_value_range): Handle NANs.
12443 * data-streamer-out.cc (streamer_write_vrange): Same.
12444 * value-range.h (class vrange): Make streamer_write_vrange a friend.
12445
12446 2023-05-25 Aldy Hernandez <aldyh@redhat.com>
12447
12448 * value-query.cc (range_query::get_tree_range): Set NAN directly
12449 if necessary.
12450 * value-range.cc (frange::set): Assert that bounds are not NAN.
12451
12452 2023-05-25 Aldy Hernandez <aldyh@redhat.com>
12453
12454 * value-range.cc (add_vrange): Handle known NANs.
12455
12456 2023-05-25 Aldy Hernandez <aldyh@redhat.com>
12457
12458 * value-range.h (frange::set_nan): New.
12459
12460 2023-05-25 Alexandre Oliva <oliva@adacore.com>
12461
12462 PR target/100106
12463 * emit-rtl.cc (validate_subreg): Reject a SUBREG of a MEM that
12464 requires stricter alignment than MEM's.
12465
12466 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
12467
12468 PR tree-optimization/107822
12469 PR tree-optimization/107986
12470 * Makefile.in (OBJS): Add gimple-range-phi.o.
12471 * gimple-range-cache.h (ranger_cache::m_estimate): New
12472 phi_analyzer pointer member.
12473 * gimple-range-fold.cc (fold_using_range::range_of_phi): Use
12474 phi_analyzer if no loop info is available.
12475 * gimple-range-phi.cc: New file.
12476 * gimple-range-phi.h: New file.
12477 * tree-vrp.cc (execute_ranger_vrp): Utililze a phi_analyzer.
12478
12479 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
12480
12481 * gimple-range-fold.cc (fur_list::fur_list): Add range_query param
12482 to contructors.
12483 (fold_range): Add range_query parameter.
12484 (fur_relation::fur_relation): New.
12485 (fur_relation::trio): New.
12486 (fur_relation::register_relation): New.
12487 (fold_relations): New.
12488 * gimple-range-fold.h (fold_range): Adjust prototypes.
12489 (fold_relations): New.
12490
12491 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
12492
12493 * gimple-range-cache.cc (ssa_cache::range_of_expr): New.
12494 * gimple-range-cache.h (class ssa_cache): Inherit from range_query.
12495 (ranger_cache::const_query): New.
12496 * gimple-range.cc (gimple_ranger::const_query): New.
12497 * gimple-range.h (gimple_ranger::const_query): New prototype.
12498
12499 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
12500
12501 * gimple-range-cache.cc (ssa_cache::dump): Use get_range.
12502 (ssa_cache::dump_range_query): Delete.
12503 (ssa_lazy_cache::dump_range_query): Delete.
12504 (ssa_lazy_cache::get_range): Move from header file.
12505 (ssa_lazy_cache::clear_range): ditto.
12506 (ssa_lazy_cache::clear): Ditto.
12507 * gimple-range-cache.h (class ssa_cache): Virtualize.
12508 (class ssa_lazy_cache): Inherit and virtualize.
12509
12510 2023-05-24 Aldy Hernandez <aldyh@redhat.com>
12511
12512 * value-range.h (vrange::kind): Remove.
12513
12514 2023-05-24 Roger Sayle <roger@nextmovesoftware.com>
12515
12516 PR middle-end/109840
12517 * match.pd <popcount optimizations>: Preserve zero-extension when
12518 optimizing popcount((T)bswap(x)) and popcount((T)rotate(x,y)) as
12519 popcount((T)x), so the popcount's argument keeps the same type.
12520 <parity optimizations>: Likewise preserve extensions when
12521 simplifying parity((T)bswap(x)) and parity((T)rotate(x,y)) as
12522 parity((T)x), so that the parity's argument type is the same.
12523
12524 2023-05-24 Aldy Hernandez <aldyh@redhat.com>
12525
12526 * ipa-cp.cc (ipa_value_range_from_jfunc): Use new ipa_vr API.
12527 (ipcp_store_vr_results): Same.
12528 * ipa-prop.cc (ipa_vr::ipa_vr): New.
12529 (ipa_vr::get_vrange): New.
12530 (ipa_vr::set_unknown): New.
12531 (ipa_vr::streamer_read): New.
12532 (ipa_vr::streamer_write): New.
12533 (write_ipcp_transformation_info): Use new ipa_vr API.
12534 (read_ipcp_transformation_info): Same.
12535 (ipa_vr::nonzero_p): Delete.
12536 (ipcp_update_vr): Use new ipa_vr API.
12537 * ipa-prop.h (class ipa_vr): Provide an API and hide internals.
12538 * ipa-sra.cc (zap_useless_ipcp_results): Use new ipa_vr API.
12539
12540 2023-05-24 Jan-Benedict Glaw <jbglaw@lug-owl.de>
12541
12542 * config/mcore/mcore.cc (output_inline_const) Make buffer smaller to
12543 silence overflow warnings later on.
12544
12545 2023-05-24 Uros Bizjak <ubizjak@gmail.com>
12546
12547 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
12548 Remove handling of V8QImode.
12549 * config/i386/mmx.md (v<insn>v8qi3): Move from sse.md.
12550 Call ix86_expand_vecop_qihi_partial. Enable for TARGET_MMX_WITH_SSE.
12551 (v<insn>v4qi3): Ditto.
12552 * config/i386/sse.md (v<insn>v8qi3): Remove.
12553
12554 2023-05-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12555
12556 PR target/99195
12557 * config/aarch64/aarch64-simd.md (aarch64_simd_lshr<mode>): Rename to...
12558 (aarch64_simd_lshr<mode><vczle><vczbe>): ... This.
12559 (aarch64_simd_ashr<mode>): Rename to...
12560 (aarch64_simd_ashr<mode><vczle><vczbe>): ... This.
12561 (aarch64_simd_imm_shl<mode>): Rename to...
12562 (aarch64_simd_imm_shl<mode><vczle><vczbe>): ... This.
12563 (aarch64_simd_reg_sshl<mode>): Rename to...
12564 (aarch64_simd_reg_sshl<mode><vczle><vczbe>): ... This.
12565 (aarch64_simd_reg_shl<mode>_unsigned): Rename to...
12566 (aarch64_simd_reg_shl<mode>_unsigned<vczle><vczbe>): ... This.
12567 (aarch64_simd_reg_shl<mode>_signed): Rename to...
12568 (aarch64_simd_reg_shl<mode>_signed<vczle><vczbe>): ... This.
12569 (vec_shr_<mode>): Rename to...
12570 (vec_shr_<mode><vczle><vczbe>): ... This.
12571 (aarch64_<sur>shl<mode>): Rename to...
12572 (aarch64_<sur>shl<mode><vczle><vczbe>): ... This.
12573 (aarch64_<sur>q<r>shl<mode>): Rename to...
12574 (aarch64_<sur>q<r>shl<mode><vczle><vczbe>): ... This.
12575
12576 2023-05-24 Richard Biener <rguenther@suse.de>
12577
12578 PR target/109944
12579 * config/i386/i386-expand.cc (ix86_expand_vector_init_general):
12580 Perform final vector composition using
12581 ix86_expand_vector_init_general instead of setting
12582 the highpart and lowpart which causes spilling.
12583
12584 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
12585
12586 PR tree-optimization/109695
12587 * gimple-range-cache.cc (ranger_cache::get_global_range): Add
12588 changed param.
12589 * gimple-range-cache.h (ranger_cache::get_global_range): Ditto.
12590 * gimple-range.cc (gimple_ranger::range_of_stmt): Pass changed
12591 flag to set_global_range.
12592 (gimple_ranger::prefill_stmt_dependencies): Ditto.
12593
12594 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
12595
12596 PR tree-optimization/109695
12597 * gimple-range-cache.cc (temporal_cache::temporal_value): Return
12598 a positive int.
12599 (temporal_cache::current_p): Check always_current method.
12600 (temporal_cache::set_always_current): Add param and set value
12601 appropriately.
12602 (temporal_cache::always_current_p): New.
12603 (ranger_cache::get_global_range): Adjust.
12604 (ranger_cache::set_global_range): set always current first.
12605
12606 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
12607
12608 PR tree-optimization/109695
12609 * gimple-range-cache.cc (ranger_cache::get_global_range): Call
12610 fold_range with global query to choose an initial value.
12611
12612 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12613
12614 * config/riscv/riscv-protos.h (enum frm_field_enum): Add FRM_
12615 prefix.
12616
12617 2023-05-24 Richard Biener <rguenther@suse.de>
12618
12619 PR tree-optimization/109849
12620 * tree-ssa-pre.cc (do_hoist_insertion): Do not intersect
12621 expressions but take the first sets.
12622
12623 2023-05-24 Gaius Mulley <gaiusmod2@gmail.com>
12624
12625 PR modula2/109952
12626 * doc/gm2.texi (High procedure function): New node.
12627 (Using): New menu entry for High procedure function.
12628
12629 2023-05-24 Richard Sandiford <richard.sandiford@arm.com>
12630
12631 PR rtl-optimization/109940
12632 * early-remat.cc (postorder_index): Rename to...
12633 (rpo_index): ...this.
12634 (compare_candidates): Sort by decreasing rpo_index rather than
12635 increasing postorder_index.
12636 (early_remat::sort_candidates): Calculate the forward RPO from
12637 DF_FORWARD.
12638 (early_remat::local_phase): Follow forward RPO using DF_FORWARD,
12639 rather than DF_BACKWARD in reverse.
12640
12641 2023-05-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12642
12643 PR target/109939
12644 * config/arm/arm-builtins.cc (SAT_BINOP_UNSIGNED_IMM_QUALIFIERS): Use
12645 qualifier_none for the return operand.
12646
12647 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12648
12649 * config/riscv/autovec.md (<optab><mode>3): New pattern.
12650 (one_cmpl<mode>2): Ditto.
12651 (*<optab>not<mode>): Ditto.
12652 (*n<optab><mode>): Ditto.
12653 * config/riscv/riscv-v.cc (expand_vec_cmp_float): Change to
12654 one_cmpl.
12655
12656 2023-05-24 Kewen Lin <linkw@linux.ibm.com>
12657
12658 * tree-vect-slp.cc (vect_transform_slp_perm_load_1): Adjust the
12659 calculation on n_perms by considering nvectors_per_build.
12660
12661 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12662 Richard Sandiford <richard.sandiford@arm.com>
12663
12664 * config/riscv/autovec.md (@vcond_mask_<mode><vm>): New pattern.
12665 (vec_cmp<mode><vm>): New pattern.
12666 (vec_cmpu<mode><vm>): New pattern.
12667 (vcond<V:mode><VI:mode>): New pattern.
12668 (vcondu<V:mode><VI:mode>): New pattern.
12669 * config/riscv/riscv-protos.h (enum insn_type): Add new enum.
12670 (emit_vlmax_merge_insn): New function.
12671 (emit_vlmax_cmp_insn): Ditto.
12672 (emit_vlmax_cmp_mu_insn): Ditto.
12673 (expand_vec_cmp): Ditto.
12674 (expand_vec_cmp_float): Ditto.
12675 (expand_vcond): Ditto.
12676 * config/riscv/riscv-v.cc (emit_vlmax_merge_insn): Ditto.
12677 (emit_vlmax_cmp_insn): Ditto.
12678 (emit_vlmax_cmp_mu_insn): Ditto.
12679 (get_cmp_insn_code): Ditto.
12680 (expand_vec_cmp): Ditto.
12681 (expand_vec_cmp_float): Ditto.
12682 (expand_vcond): Ditto.
12683
12684 2023-05-24 Pan Li <pan2.li@intel.com>
12685
12686 * config/riscv/genrvv-type-indexer.cc (main): Add
12687 unsigned_eew*_lmul1_interpret for indexer.
12688 * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
12689 Register vuint*m1_t interpret function.
12690 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_UNSIGNED_EEW8_LMUL1_INTERPRET_OPS):
12691 New macro for vuint8m1_t.
12692 (DEF_RVV_UNSIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
12693 (DEF_RVV_UNSIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
12694 (DEF_RVV_UNSIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
12695 (vbool1_t): Add to unsigned_eew*_interpret_ops.
12696 (vbool2_t): Likewise.
12697 (vbool4_t): Likewise.
12698 (vbool8_t): Likewise.
12699 (vbool16_t): Likewise.
12700 (vbool32_t): Likewise.
12701 (vbool64_t): Likewise.
12702 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_UNSIGNED_EEW8_LMUL1_INTERPRET_OPS):
12703 New macro for vuint*m1_t.
12704 (DEF_RVV_UNSIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
12705 (DEF_RVV_UNSIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
12706 (DEF_RVV_UNSIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
12707 (required_extensions_p): Add vuint*m1_t interpret case.
12708 * config/riscv/riscv-vector-builtins.def (unsigned_eew8_lmul1_interpret):
12709 Add vuint*m1_t interpret to base type.
12710 (unsigned_eew16_lmul1_interpret): Likewise.
12711 (unsigned_eew32_lmul1_interpret): Likewise.
12712 (unsigned_eew64_lmul1_interpret): Likewise.
12713
12714 2023-05-24 Pan Li <pan2.li@intel.com>
12715
12716 * config/riscv/genrvv-type-indexer.cc (EEW_SIZE_LIST): New macro
12717 for the eew size list.
12718 (LMUL1_LOG2): New macro for the log2 value of lmul=1.
12719 (main): Add signed_eew*_lmul1_interpret for indexer.
12720 * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
12721 Register vint*m1_t interpret function.
12722 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_SIGNED_EEW8_LMUL1_INTERPRET_OPS):
12723 New macro for vint8m1_t.
12724 (DEF_RVV_SIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
12725 (DEF_RVV_SIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
12726 (DEF_RVV_SIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
12727 (vbool1_t): Add to signed_eew*_interpret_ops.
12728 (vbool2_t): Likewise.
12729 (vbool4_t): Likewise.
12730 (vbool8_t): Likewise.
12731 (vbool16_t): Likewise.
12732 (vbool32_t): Likewise.
12733 (vbool64_t): Likewise.
12734 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_SIGNED_EEW8_LMUL1_INTERPRET_OPS):
12735 New macro for vint*m1_t.
12736 (DEF_RVV_SIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
12737 (DEF_RVV_SIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
12738 (DEF_RVV_SIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
12739 (required_extensions_p): Add vint8m1_t interpret case.
12740 * config/riscv/riscv-vector-builtins.def (signed_eew8_lmul1_interpret):
12741 Add vint*m1_t interpret to base type.
12742 (signed_eew16_lmul1_interpret): Likewise.
12743 (signed_eew32_lmul1_interpret): Likewise.
12744 (signed_eew64_lmul1_interpret): Likewise.
12745
12746 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12747
12748 * config/riscv/autovec.md: Adjust for new interface.
12749 * config/riscv/riscv-protos.h (emit_vlmax_insn): Add VL operand.
12750 (emit_nonvlmax_insn): Add AVL operand.
12751 * config/riscv/riscv-v.cc (emit_vlmax_insn): Add VL operand.
12752 (emit_nonvlmax_insn): Add AVL operand.
12753 (sew64_scalar_helper): Adjust for new interface.
12754 (expand_tuple_move): Ditto.
12755 * config/riscv/vector.md: Ditto.
12756
12757 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12758
12759 * config/riscv/riscv-v.cc (expand_vec_series): Remove magic number.
12760 (expand_const_vector): Ditto.
12761 (legitimize_move): Ditto.
12762 (sew64_scalar_helper): Ditto.
12763 (expand_tuple_move): Ditto.
12764 (expand_vector_init_insert_elems): Ditto.
12765 * config/riscv/riscv.cc (vector_zero_call_used_regs): Ditto.
12766
12767 2023-05-24 liuhongt <hongtao.liu@intel.com>
12768
12769 PR target/109900
12770 * config/i386/i386.cc (ix86_gimple_fold_builtin): Fold
12771 _mm{,256,512}_abs_{epi8,epi16,epi32,epi64} and
12772 _mm_abs_{pi8,pi16,pi32} into gimple ABS_EXPR.
12773 (ix86_masked_all_ones): Handle 64-bit mask.
12774 * config/i386/i386-builtin.def: Replace icode of related
12775 non-mask simd abs builtins with CODE_FOR_nothing.
12776
12777 2023-05-23 Martin Uecker <uecker@tugraz.at>
12778
12779 PR c/109450
12780 * function.cc (gimplify_parm_type): Remove function.
12781 (gimplify_parameters): Call gimplify_type_sizes.
12782
12783 2023-05-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
12784
12785 * config/xtensa/xtensa.md (*addsubx): Rename from '*addx',
12786 and change to also accept '*subx' pattern.
12787 (*subx): Remove.
12788
12789 2023-05-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
12790
12791 * config/xtensa/predicates.md (addsub_operator): New.
12792 * config/xtensa/xtensa.md (*extzvsi-1bit_ashlsi3,
12793 *extzvsi-1bit_addsubx): New insn_and_split patterns.
12794 * config/xtensa/xtensa.cc (xtensa_rtx_costs):
12795 Add a special case about ifcvt 'noce_try_cmove()' to handle
12796 constant loads that do not fit into signed 12 bits in the
12797 patterns added above.
12798
12799 2023-05-23 Richard Biener <rguenther@suse.de>
12800
12801 PR tree-optimization/109747
12802 * tree-vect-slp.cc (vect_prologue_cost_for_slp): Pass down
12803 the SLP node only once to the cost hook.
12804
12805 2023-05-23 Georg-Johann Lay <avr@gjlay.de>
12806
12807 * config/avr/avr.cc (avr_insn_cost): New static function.
12808 (TARGET_INSN_COST): Define to that function.
12809
12810 2023-05-23 Richard Biener <rguenther@suse.de>
12811
12812 PR target/109944
12813 * config/i386/i386.cc (ix86_vector_costs::add_stmt_cost):
12814 For vector construction or splats apply GPR->XMM move
12815 costing. QImode memory can be handled directly only
12816 with SSE4.1 pinsrb.
12817
12818 2023-05-23 Richard Biener <rguenther@suse.de>
12819
12820 PR tree-optimization/108752
12821 * tree-vect-stmts.cc (vectorizable_operation): For bit
12822 operations with generic word_mode vectors do not cost
12823 an extra stmt. For plus, minus and negate also cost the
12824 constant materialization.
12825
12826 2023-05-23 Uros Bizjak <ubizjak@gmail.com>
12827
12828 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi_partial):
12829 Call ix86_expand_vec_shift_qihi_constant for shifts
12830 with constant count operand.
12831 * config/i386/i386.cc (ix86_shift_rotate_cost):
12832 Handle V4QImode and V8QImode.
12833 * config/i386/mmx.md (<insn>v8qi3): New insn pattern.
12834 (<insn>v4qi3): Ditto.
12835
12836 2023-05-23 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12837
12838 * config/riscv/vector.md: Add mode.
12839
12840 2023-05-23 Aldy Hernandez <aldyh@redhat.com>
12841
12842 PR tree-optimization/109934
12843 * value-range.cc (irange::invert): Remove buggy special case.
12844
12845 2023-05-23 Richard Biener <rguenther@suse.de>
12846
12847 * tree-ssa-pre.cc (compute_antic_aux): Dump the correct
12848 ANTIC_OUT.
12849
12850 2023-05-23 Richard Sandiford <richard.sandiford@arm.com>
12851
12852 PR target/109632
12853 * config/aarch64/aarch64.cc (aarch64_modes_tieable_p): Allow
12854 subregs between any scalars that are 64 bits or smaller.
12855 * config/aarch64/iterators.md (SUBDI_BITS): New int iterator.
12856 (bits_etype): New int attribute.
12857 * config/aarch64/aarch64.md (*insv_reg<mode>_<SUBDI_BITS>)
12858 (*aarch64_bfi<GPI:mode><ALLX:mode>_<SUBDI_BITS>): New patterns.
12859 (*aarch64_bfidi<ALLX:mode>_subreg_<SUBDI_BITS>): Likewise.
12860
12861 2023-05-23 Richard Sandiford <richard.sandiford@arm.com>
12862
12863 * doc/md.texi: Document that <FOO> can be used to refer to the
12864 numerical value of an int iterator FOO. Tweak other parts of
12865 the int iterator documentation.
12866 * read-rtl.cc (iterator_group::has_self_attr): New field.
12867 (map_attr_string): When has_self_attr is true, make <FOO>
12868 expand to the current value of iterator FOO.
12869 (initialize_iterators): Set has_self_attr for int iterators.
12870
12871 2023-05-23 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12872
12873 * config/riscv/autovec.md: Refactor the framework of RVV auto-vectorization.
12874 * config/riscv/riscv-protos.h (RVV_MISC_OP_NUM): Ditto.
12875 (RVV_UNOP_NUM): New macro.
12876 (RVV_BINOP_NUM): Ditto.
12877 (legitimize_move): Refactor the framework of RVV auto-vectorization.
12878 (emit_vlmax_op): Ditto.
12879 (emit_vlmax_reg_op): Ditto.
12880 (emit_len_op): Ditto.
12881 (emit_len_binop): Ditto.
12882 (emit_vlmax_tany_many): Ditto.
12883 (emit_nonvlmax_tany_many): Ditto.
12884 (sew64_scalar_helper): Ditto.
12885 (expand_tuple_move): Ditto.
12886 * config/riscv/riscv-v.cc (emit_pred_op): Ditto.
12887 (emit_pred_binop): Ditto.
12888 (emit_vlmax_op): Ditto.
12889 (emit_vlmax_tany_many): New function.
12890 (emit_len_op): Remove.
12891 (emit_nonvlmax_tany_many): New function.
12892 (emit_vlmax_reg_op): Remove.
12893 (emit_len_binop): Ditto.
12894 (emit_index_op): Ditto.
12895 (expand_vec_series): Refactor the framework of RVV auto-vectorization.
12896 (expand_const_vector): Ditto.
12897 (legitimize_move): Ditto.
12898 (sew64_scalar_helper): Ditto.
12899 (expand_tuple_move): Ditto.
12900 (expand_vector_init_insert_elems): Ditto.
12901 * config/riscv/riscv.cc (vector_zero_call_used_regs): Ditto.
12902 * config/riscv/vector.md: Ditto.
12903
12904 2023-05-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12905
12906 PR target/109855
12907 * config/aarch64/aarch64-simd.md (add_vec_concat_subst_le): Add predicate
12908 and constraint for operand 0.
12909 (add_vec_concat_subst_be): Likewise.
12910
12911 2023-05-23 Richard Biener <rguenther@suse.de>
12912
12913 PR tree-optimization/109849
12914 * tree-ssa-pre.cc (do_hoist_insertion): Compute ANTIC_OUT
12915 and use that to determine what to hoist.
12916
12917 2023-05-23 Eric Botcazou <ebotcazou@adacore.com>
12918
12919 * fold-const.cc (native_encode_initializer) <CONSTRUCTOR>: Apply the
12920 specific treatment for bit-fields only if they have an integral type
12921 and filter out non-integral bit-fields that do not start and end on
12922 a byte boundary.
12923
12924 2023-05-23 Aldy Hernandez <aldyh@redhat.com>
12925
12926 PR tree-optimization/109920
12927 * value-range.h (RESIZABLE>::~int_range): Use delete[].
12928
12929 2023-05-22 Uros Bizjak <ubizjak@gmail.com>
12930
12931 * config/i386/i386.cc (ix86_shift_rotate_cost): Correct
12932 calcuation of integer vector mode costs to reflect generated
12933 instruction sequences of different integer vector modes and
12934 different target ABIs. Remove "speed" function argument.
12935 (ix86_rtx_costs): Update call for removed function argument.
12936 (ix86_vector_costs::add_stmt_cost): Ditto.
12937
12938 2023-05-22 Aldy Hernandez <aldyh@redhat.com>
12939
12940 * value-range.h (class Value_Range): Implement set_zero,
12941 set_nonzero, and nonzero_p.
12942
12943 2023-05-22 Uros Bizjak <ubizjak@gmail.com>
12944
12945 * config/i386/i386.cc (ix86_multiplication_cost): Add
12946 the cost of a memory read to the cost of V?QImode sequences.
12947
12948 2023-05-22 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12949
12950 * config/riscv/riscv-v.cc: Add "m_" prefix.
12951
12952 2023-05-22 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
12953
12954 * tree-vect-loop.cc (vect_get_loop_len): Fix issue for
12955 multiple-rgroup of length.
12956 * tree-vect-stmts.cc (vectorizable_store): Ditto.
12957 (vectorizable_load): Ditto.
12958 * tree-vectorizer.h (vect_get_loop_len): Ditto.
12959
12960 2023-05-22 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12961
12962 * config/riscv/riscv.cc (riscv_const_insns): Reorganize the
12963 codes.
12964
12965 2023-05-22 Kewen Lin <linkw@linux.ibm.com>
12966
12967 * tree-vect-slp.cc (vect_transform_slp_perm_load_1): Refactor the
12968 handling for the case index == count.
12969
12970 2023-05-21 Georg-Johann Lay <avr@gjlay.de>
12971
12972 PR target/90622
12973 * config/avr/avr.cc (avr_fold_builtin) [AVR_BUILTIN_INSERT_BITS]:
12974 Don't fold to XOR / AND / XOR if just one bit is copied to the
12975 same position.
12976
12977 2023-05-21 Roger Sayle <roger@nextmovesoftware.com>
12978
12979 * config/nvptx/nvptx.cc (nvptx_expand_brev): Expand target
12980 builtin for bit reversal using brev instruction.
12981 (enum nvptx_builtins): Add NVPTX_BUILTIN_BREV and
12982 NVPTX_BUILTIN_BREVLL.
12983 (nvptx_init_builtins): Define "brev" and "brevll".
12984 (nvptx_expand_builtin): Expand NVPTX_BUILTIN_BREV and
12985 NVPTX_BUILTIN_BREVLL via nvptx_expand_brev function.
12986 * doc/extend.texi (Nvidia PTX Builtin-in Functions): New
12987 section, document __builtin_nvptx_brev{,ll}.
12988
12989 2023-05-21 Jakub Jelinek <jakub@redhat.com>
12990
12991 PR tree-optimization/109505
12992 * match.pd ((x | CST1) & CST2 -> (x & CST2) | (CST1 & CST2),
12993 Combine successive equal operations with constants,
12994 (A +- CST1) +- CST2 -> A + CST3, (CST1 - A) +- CST2 -> CST3 - A,
12995 CST1 - (CST2 - A) -> CST3 + A): Use ! on ops with 2 CONSTANT_CLASS_P
12996 operands.
12997
12998 2023-05-21 Andrew Pinski <apinski@marvell.com>
12999
13000 * expr.cc (expand_single_bit_test): Correct bitpos for big-endian.
13001
13002 2023-05-21 Pan Li <pan2.li@intel.com>
13003
13004 * config/riscv/genrvv-type-indexer.cc (BOOL_SIZE_LIST): Add the
13005 rest bool size, aka 2, 4, 8, 16, 32, 64.
13006 * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
13007 Register vbool[2|4|8|16|32|64] interpret function.
13008 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_BOOL2_INTERPRET_OPS):
13009 New macro for vbool2_t.
13010 (DEF_RVV_BOOL4_INTERPRET_OPS): Likewise.
13011 (DEF_RVV_BOOL8_INTERPRET_OPS): Likewise.
13012 (DEF_RVV_BOOL16_INTERPRET_OPS): Likewise.
13013 (DEF_RVV_BOOL32_INTERPRET_OPS): Likewise.
13014 (DEF_RVV_BOOL64_INTERPRET_OPS): Likewise.
13015 (vint8m1_t): Add the type to bool[2|4|8|16|32|64]_interpret_ops.
13016 (vint16m1_t): Likewise.
13017 (vint32m1_t): Likewise.
13018 (vint64m1_t): Likewise.
13019 (vuint8m1_t): Likewise.
13020 (vuint16m1_t): Likewise.
13021 (vuint32m1_t): Likewise.
13022 (vuint64m1_t): Likewise.
13023 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_BOOL2_INTERPRET_OPS):
13024 New macro for vbool2_t.
13025 (DEF_RVV_BOOL4_INTERPRET_OPS): Likewise.
13026 (DEF_RVV_BOOL8_INTERPRET_OPS): Likewise.
13027 (DEF_RVV_BOOL16_INTERPRET_OPS): Likewise.
13028 (DEF_RVV_BOOL32_INTERPRET_OPS): Likewise.
13029 (DEF_RVV_BOOL64_INTERPRET_OPS): Likewise.
13030 (required_extensions_p): Add vbool[2|4|8|16|32|64] interpret case.
13031 * config/riscv/riscv-vector-builtins.def (bool2_interpret): Add
13032 vbool2_t interprect to base type.
13033 (bool4_interpret): Likewise.
13034 (bool8_interpret): Likewise.
13035 (bool16_interpret): Likewise.
13036 (bool32_interpret): Likewise.
13037 (bool64_interpret): Likewise.
13038
13039 2023-05-21 Andrew Pinski <apinski@marvell.com>
13040
13041 PR middle-end/109919
13042 * expr.cc (expand_single_bit_test): Don't use the
13043 target for expand_expr.
13044
13045 2023-05-20 Gerald Pfeifer <gerald@pfeifer.com>
13046
13047 * doc/install.texi (Specific): Remove de facto empty alpha*-*-*
13048 section.
13049
13050 2023-05-20 Pan Li <pan2.li@intel.com>
13051
13052 * mode-switching.cc (entity_map): Initialize the array to zero.
13053 (bb_info): Ditto.
13054
13055 2023-05-20 Triffid Hunter <triffid.hunter@gmail.com>
13056
13057 PR target/105753
13058 * config/avr/avr.md (divmodpsi, udivmodpsi, divmodsi, udivmodsi):
13059 Remove superfluous "parallel" in insn pattern.
13060 ([u]divmod<mode>4): Tidy code. Use gcc_unreachable() instead of
13061 printing error text to assembly.
13062
13063 2023-05-20 Andrew Pinski <apinski@marvell.com>
13064
13065 * expr.cc (fold_single_bit_test): Rename to ...
13066 (expand_single_bit_test): This and expand directly.
13067 (do_store_flag): Update for the rename function.
13068
13069 2023-05-20 Andrew Pinski <apinski@marvell.com>
13070
13071 * expr.cc (fold_single_bit_test): Use BIT_FIELD_REF
13072 instead of shift/and.
13073
13074 2023-05-20 Andrew Pinski <apinski@marvell.com>
13075
13076 * expr.cc (fold_single_bit_test): Add an assert
13077 and simplify based on code being NE_EXPR or EQ_EXPR.
13078
13079 2023-05-20 Andrew Pinski <apinski@marvell.com>
13080
13081 * expr.cc (fold_single_bit_test): Take inner and bitnum
13082 instead of arg0 and arg1. Update the code.
13083 (do_store_flag): Don't create a tree when calling
13084 fold_single_bit_test instead just call it with the bitnum
13085 and the inner tree.
13086
13087 2023-05-20 Andrew Pinski <apinski@marvell.com>
13088
13089 * expr.cc (fold_single_bit_test): Use get_def_for_expr
13090 instead of checking the inner's code.
13091
13092 2023-05-20 Andrew Pinski <apinski@marvell.com>
13093
13094 * expr.cc (fold_single_bit_test_into_sign_test): Inline into ...
13095 (fold_single_bit_test): This and simplify.
13096
13097 2023-05-20 Andrew Pinski <apinski@marvell.com>
13098
13099 * fold-const.cc (fold_single_bit_test_into_sign_test): Move to
13100 expr.cc.
13101 (fold_single_bit_test): Likewise.
13102 * expr.cc (fold_single_bit_test_into_sign_test): Move from fold-const.cc
13103 (fold_single_bit_test): Likewise and make static.
13104 * fold-const.h (fold_single_bit_test): Remove declaration.
13105
13106 2023-05-20 Die Li <lidie@eswincomputing.com>
13107
13108 * config/riscv/riscv.cc (riscv_expand_conditional_move): Fix mode
13109 checking.
13110
13111 2023-05-20 Raphael Moreira Zinsly <rzinsly@ventanamicro.com>
13112
13113 * config/riscv/bitmanip.md (branch<X:mode>_bext): New split pattern.
13114
13115 2023-05-20 Raphael Moreira Zinsly <rzinsly@ventanamicro.com>
13116
13117 PR target/106888
13118 * config/riscv/bitmanip.md
13119 (<bitmanip_optab>disi2): Match with any_extend.
13120 (<bitmanip_optab>disi2_sext): New pattern to match
13121 with sign extend using an ANDI instruction.
13122
13123 2023-05-19 Nathan Sidwell <nathan@acm.org>
13124
13125 PR other/99451
13126 * opts.h (handle_deferred_dump_options): Declare.
13127 * opts-global.cc (handle_common_deferred_options): Do not handle
13128 dump options here.
13129 (handle_deferred_dump_options): New.
13130 * toplev.cc (toplev::main): Call it after plugin init.
13131
13132 2023-05-19 Joern Rennecke <joern.rennecke@embecosm.com>
13133
13134 * config/riscv/constraints.md (DsS, DsD): Restore agreement
13135 with shiftm1 mode attribute.
13136
13137 2023-05-19 Andrew Pinski <apinski@marvell.com>
13138
13139 PR driver/33980
13140 * gcc.cc (default_compilers["@c-header"]): Add %w
13141 after the --output-pch.
13142
13143 2023-05-19 Vineet Gupta <vineetg@rivosinc.com>
13144
13145 * config/riscv/riscv.cc (riscv_split_integer): if loval is equal
13146 to hival, ASHIFT the corresponding regs.
13147
13148 2023-05-19 Robin Dapp <rdapp@ventanamicro.com>
13149
13150 * config/riscv/riscv.cc (riscv_const_insns): Remove else.
13151
13152 2023-05-19 Jakub Jelinek <jakub@redhat.com>
13153
13154 PR tree-optimization/105776
13155 * tree-ssa-math-opts.cc (arith_overflow_check_p): If cast_stmt is
13156 non-NULL, allow division statement to have a cast as single imm use
13157 rather than comparison/condition.
13158 (match_arith_overflow): In that case remove the cast stmt in addition
13159 to the division statement.
13160
13161 2023-05-19 Jakub Jelinek <jakub@redhat.com>
13162
13163 PR tree-optimization/101856
13164 * tree-ssa-math-opts.cc (match_arith_overflow): Pattern detect
13165 unsigned __builtin_mul_overflow_p even when umulv4_optab doesn't
13166 support it but umul_highpart_optab does.
13167
13168 2023-05-19 Eric Botcazou <ebotcazou@adacore.com>
13169
13170 * varasm.cc (output_constructor_bitfield): Call tree_to_uhwi instead
13171 of tree_to_shwi on array indices. Minor tweaks.
13172
13173 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
13174
13175 * alias.cc (ref_all_alias_ptr_type_p): Use _P() defines from tree.h.
13176 * attribs.cc (diag_attr_exclusions): Ditto.
13177 (decl_attributes): Ditto.
13178 (build_type_attribute_qual_variant): Ditto.
13179 * builtins.cc (fold_builtin_carg): Ditto.
13180 (fold_builtin_next_arg): Ditto.
13181 (do_mpc_arg2): Ditto.
13182 * cfgexpand.cc (expand_return): Ditto.
13183 * cgraph.h (decl_in_symtab_p): Ditto.
13184 (symtab_node::get_create): Ditto.
13185 * dwarf2out.cc (base_type_die): Ditto.
13186 (implicit_ptr_descriptor): Ditto.
13187 (gen_array_type_die): Ditto.
13188 (gen_type_die_with_usage): Ditto.
13189 (optimize_location_into_implicit_ptr): Ditto.
13190 * expr.cc (do_store_flag): Ditto.
13191 * fold-const.cc (negate_expr_p): Ditto.
13192 (fold_negate_expr_1): Ditto.
13193 (fold_convert_const): Ditto.
13194 (fold_convert_loc): Ditto.
13195 (constant_boolean_node): Ditto.
13196 (fold_binary_op_with_conditional_arg): Ditto.
13197 (build_fold_addr_expr_with_type_loc): Ditto.
13198 (fold_comparison): Ditto.
13199 (fold_checksum_tree): Ditto.
13200 (tree_unary_nonnegative_warnv_p): Ditto.
13201 (integer_valued_real_unary_p): Ditto.
13202 (fold_read_from_constant_string): Ditto.
13203 * gcc-rich-location.cc (maybe_range_label_for_tree_type_mismatch::get_text): Ditto.
13204 * gimple-expr.cc (useless_type_conversion_p): Ditto.
13205 (is_gimple_reg): Ditto.
13206 (is_gimple_asm_val): Ditto.
13207 (mark_addressable): Ditto.
13208 * gimple-expr.h (is_gimple_variable): Ditto.
13209 (virtual_operand_p): Ditto.
13210 * gimple-ssa-warn-access.cc (pass_waccess::check_dangling_stores): Ditto.
13211 * gimplify.cc (gimplify_bind_expr): Ditto.
13212 (gimplify_return_expr): Ditto.
13213 (gimple_add_padding_init_for_auto_var): Ditto.
13214 (gimplify_addr_expr): Ditto.
13215 (omp_add_variable): Ditto.
13216 (omp_notice_variable): Ditto.
13217 (omp_get_base_pointer): Ditto.
13218 (omp_strip_components_and_deref): Ditto.
13219 (omp_strip_indirections): Ditto.
13220 (omp_accumulate_sibling_list): Ditto.
13221 (omp_build_struct_sibling_lists): Ditto.
13222 (gimplify_adjust_omp_clauses_1): Ditto.
13223 (gimplify_adjust_omp_clauses): Ditto.
13224 (gimplify_omp_for): Ditto.
13225 (goa_lhs_expr_p): Ditto.
13226 (gimplify_one_sizepos): Ditto.
13227 * graphite-scop-detection.cc (scop_detection::graphite_can_represent_scev): Ditto.
13228 * ipa-devirt.cc (odr_types_equivalent_p): Ditto.
13229 * ipa-prop.cc (ipa_set_jf_constant): Ditto.
13230 (propagate_controlled_uses): Ditto.
13231 * ipa-sra.cc (type_prevails_p): Ditto.
13232 (scan_expr_access): Ditto.
13233 * optabs-tree.cc (optab_for_tree_code): Ditto.
13234 * toplev.cc (wrapup_global_declaration_1): Ditto.
13235 * trans-mem.cc (transaction_invariant_address_p): Ditto.
13236 * tree-cfg.cc (verify_types_in_gimple_reference): Ditto.
13237 (verify_gimple_comparison): Ditto.
13238 (verify_gimple_assign_binary): Ditto.
13239 (verify_gimple_assign_single): Ditto.
13240 * tree-complex.cc (get_component_ssa_name): Ditto.
13241 * tree-emutls.cc (lower_emutls_2): Ditto.
13242 * tree-inline.cc (copy_tree_body_r): Ditto.
13243 (estimate_move_cost): Ditto.
13244 (copy_decl_for_dup_finish): Ditto.
13245 * tree-nested.cc (convert_nonlocal_omp_clauses): Ditto.
13246 (note_nonlocal_vla_type): Ditto.
13247 (convert_local_omp_clauses): Ditto.
13248 (remap_vla_decls): Ditto.
13249 (fixup_vla_decls): Ditto.
13250 * tree-parloops.cc (loop_has_vector_phi_nodes): Ditto.
13251 * tree-pretty-print.cc (print_declaration): Ditto.
13252 (print_call_name): Ditto.
13253 * tree-sra.cc (compare_access_positions): Ditto.
13254 * tree-ssa-alias.cc (compare_type_sizes): Ditto.
13255 * tree-ssa-ccp.cc (get_default_value): Ditto.
13256 * tree-ssa-coalesce.cc (populate_coalesce_list_for_outofssa): Ditto.
13257 * tree-ssa-dom.cc (reduce_vector_comparison_to_scalar_comparison): Ditto.
13258 * tree-ssa-forwprop.cc (can_propagate_from): Ditto.
13259 * tree-ssa-propagate.cc (may_propagate_copy): Ditto.
13260 * tree-ssa-sccvn.cc (fully_constant_vn_reference_p): Ditto.
13261 * tree-ssa-sink.cc (statement_sink_location): Ditto.
13262 * tree-ssa-structalias.cc (type_must_have_pointers): Ditto.
13263 * tree-ssa-ter.cc (find_replaceable_in_bb): Ditto.
13264 * tree-ssa-uninit.cc (warn_uninit): Ditto.
13265 * tree-ssa.cc (maybe_rewrite_mem_ref_base): Ditto.
13266 (non_rewritable_mem_ref_base): Ditto.
13267 * tree-streamer-in.cc (lto_input_ts_type_non_common_tree_pointers): Ditto.
13268 * tree-streamer-out.cc (write_ts_type_non_common_tree_pointers): Ditto.
13269 * tree-vect-generic.cc (do_binop): Ditto.
13270 (do_cond): Ditto.
13271 * tree-vect-stmts.cc (vect_init_vector): Ditto.
13272 * tree-vector-builder.h (tree_vector_builder::note_representative): Ditto.
13273 * tree.cc (sign_mask_for): Ditto.
13274 (verify_type_variant): Ditto.
13275 (gimple_canonical_types_compatible_p): Ditto.
13276 (verify_type): Ditto.
13277 * ubsan.cc (get_ubsan_type_info_for_type): Ditto.
13278 * var-tracking.cc (prepare_call_arguments): Ditto.
13279 (vt_add_function_parameters): Ditto.
13280 * varasm.cc (decode_addr_const): Ditto.
13281
13282 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
13283
13284 * omp-low.cc (scan_sharing_clauses): Use _P() defines from tree.h.
13285 (lower_reduction_clauses): Ditto.
13286 (lower_send_clauses): Ditto.
13287 (lower_omp_task_reductions): Ditto.
13288 * omp-oacc-neuter-broadcast.cc (install_var_field): Ditto.
13289 (worker_single_copy): Ditto.
13290 * omp-offload.cc (oacc_rewrite_var_decl): Ditto.
13291 * omp-simd-clone.cc (plausible_type_for_simd_clone): Ditto.
13292
13293 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
13294
13295 * lto-streamer-in.cc (lto_input_var_decl_ref): Use _P defines from
13296 tree.h.
13297 (lto_read_body_or_constructor): Ditto.
13298 * lto-streamer-out.cc (tree_is_indexable): Ditto.
13299 (lto_output_var_decl_ref): Ditto.
13300 (DFS::DFS_write_tree_body): Ditto.
13301 (wrap_refs): Ditto.
13302 (write_symbol_extension_info): Ditto.
13303
13304 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
13305
13306 * config/aarch64/aarch64.cc (aarch64_short_vector_p): Use _P
13307 defines from tree.h.
13308 (aarch64_mangle_type): Ditto.
13309 * config/alpha/alpha.cc (alpha_in_small_data_p): Ditto.
13310 (alpha_gimplify_va_arg_1): Ditto.
13311 * config/arc/arc.cc (arc_encode_section_info): Ditto.
13312 (arc_is_aux_reg_p): Ditto.
13313 (arc_is_uncached_mem_p): Ditto.
13314 (arc_handle_aux_attribute): Ditto.
13315 * config/arm/arm.cc (arm_handle_isr_attribute): Ditto.
13316 (arm_handle_cmse_nonsecure_call): Ditto.
13317 (arm_set_default_type_attributes): Ditto.
13318 (arm_is_segment_info_known): Ditto.
13319 (arm_mangle_type): Ditto.
13320 * config/arm/unknown-elf.h (IN_NAMED_SECTION_P): Ditto.
13321 * config/avr/avr.cc (avr_lookup_function_attribute1): Ditto.
13322 (avr_decl_absdata_p): Ditto.
13323 (avr_insert_attributes): Ditto.
13324 (avr_section_type_flags): Ditto.
13325 (avr_encode_section_info): Ditto.
13326 * config/bfin/bfin.cc (bfin_handle_l2_attribute): Ditto.
13327 * config/bpf/bpf.cc (bpf_core_compute): Ditto.
13328 * config/c6x/c6x.cc (c6x_in_small_data_p): Ditto.
13329 * config/csky/csky.cc (csky_handle_isr_attribute): Ditto.
13330 (csky_mangle_type): Ditto.
13331 * config/darwin-c.cc (darwin_pragma_unused): Ditto.
13332 * config/darwin.cc (is_objc_metadata): Ditto.
13333 * config/epiphany/epiphany.cc (epiphany_function_ok_for_sibcall): Ditto.
13334 * config/epiphany/epiphany.h (ROUND_TYPE_ALIGN): Ditto.
13335 * config/frv/frv.cc (frv_emit_movsi): Ditto.
13336 * config/gcn/gcn-tree.cc (gcn_lockless_update): Ditto.
13337 * config/gcn/gcn.cc (gcn_asm_output_symbol_ref): Ditto.
13338 * config/h8300/h8300.cc (h8300_encode_section_info): Ditto.
13339 * config/i386/i386-expand.cc: Ditto.
13340 * config/i386/i386.cc (type_natural_mode): Ditto.
13341 (ix86_function_arg): Ditto.
13342 (ix86_data_alignment): Ditto.
13343 (ix86_local_alignment): Ditto.
13344 (ix86_simd_clone_compute_vecsize_and_simdlen): Ditto.
13345 * config/i386/winnt-cxx.cc (i386_pe_type_dllimport_p): Ditto.
13346 (i386_pe_type_dllexport_p): Ditto.
13347 (i386_pe_adjust_class_at_definition): Ditto.
13348 * config/i386/winnt.cc (i386_pe_determine_dllimport_p): Ditto.
13349 (i386_pe_binds_local_p): Ditto.
13350 (i386_pe_section_type_flags): Ditto.
13351 * config/ia64/ia64.cc (ia64_encode_section_info): Ditto.
13352 (ia64_gimplify_va_arg): Ditto.
13353 (ia64_in_small_data_p): Ditto.
13354 * config/iq2000/iq2000.cc (iq2000_function_arg): Ditto.
13355 * config/lm32/lm32.cc (lm32_in_small_data_p): Ditto.
13356 * config/loongarch/loongarch.cc (loongarch_handle_model_attribute): Ditto.
13357 * config/m32c/m32c.cc (m32c_insert_attributes): Ditto.
13358 * config/mcore/mcore.cc (mcore_mark_dllimport): Ditto.
13359 (mcore_encode_section_info): Ditto.
13360 * config/microblaze/microblaze.cc (microblaze_elf_in_small_data_p): Ditto.
13361 * config/mips/mips.cc (mips_output_aligned_decl_common): Ditto.
13362 * config/mmix/mmix.cc (mmix_encode_section_info): Ditto.
13363 * config/nvptx/nvptx.cc (nvptx_encode_section_info): Ditto.
13364 (pass_in_memory): Ditto.
13365 (nvptx_generate_vector_shuffle): Ditto.
13366 (nvptx_lockless_update): Ditto.
13367 * config/pa/pa.cc (pa_function_arg_padding): Ditto.
13368 (pa_function_value): Ditto.
13369 (pa_function_arg): Ditto.
13370 * config/pa/pa.h (IN_NAMED_SECTION_P): Ditto.
13371 (TEXT_SPACE_P): Ditto.
13372 * config/pa/som.h (MAKE_DECL_ONE_ONLY): Ditto.
13373 * config/pdp11/pdp11.cc (pdp11_return_in_memory): Ditto.
13374 * config/riscv/riscv.cc (riscv_in_small_data_p): Ditto.
13375 (riscv_mangle_type): Ditto.
13376 * config/rl78/rl78.cc (rl78_insert_attributes): Ditto.
13377 (rl78_addsi3_internal): Ditto.
13378 * config/rs6000/aix.h (ROUND_TYPE_ALIGN): Ditto.
13379 * config/rs6000/darwin.h (ROUND_TYPE_ALIGN): Ditto.
13380 * config/rs6000/freebsd64.h (ROUND_TYPE_ALIGN): Ditto.
13381 * config/rs6000/linux64.h (ROUND_TYPE_ALIGN): Ditto.
13382 * config/rs6000/rs6000-call.cc (rs6000_function_arg_boundary): Ditto.
13383 (rs6000_function_arg_advance_1): Ditto.
13384 (rs6000_function_arg): Ditto.
13385 (rs6000_pass_by_reference): Ditto.
13386 * config/rs6000/rs6000-logue.cc (rs6000_function_ok_for_sibcall): Ditto.
13387 * config/rs6000/rs6000.cc (rs6000_data_alignment): Ditto.
13388 (rs6000_set_default_type_attributes): Ditto.
13389 (rs6000_elf_in_small_data_p): Ditto.
13390 (IN_NAMED_SECTION): Ditto.
13391 (rs6000_xcoff_encode_section_info): Ditto.
13392 (rs6000_function_value): Ditto.
13393 (invalid_arg_for_unprototyped_fn): Ditto.
13394 * config/s390/s390-c.cc (s390_fn_types_compatible): Ditto.
13395 (s390_vec_n_elem): Ditto.
13396 * config/s390/s390.cc (s390_check_type_for_vector_abi): Ditto.
13397 (s390_function_arg_integer): Ditto.
13398 (s390_return_in_memory): Ditto.
13399 (s390_encode_section_info): Ditto.
13400 * config/sh/sh.cc (sh_gimplify_va_arg_expr): Ditto.
13401 (sh_function_value): Ditto.
13402 * config/sol2.cc (solaris_insert_attributes): Ditto.
13403 * config/sparc/sparc.cc (function_arg_slotno): Ditto.
13404 * config/sparc/sparc.h (ROUND_TYPE_ALIGN): Ditto.
13405 * config/stormy16/stormy16.cc (xstormy16_encode_section_info): Ditto.
13406 (xstormy16_handle_below100_attribute): Ditto.
13407 * config/v850/v850.cc (v850_encode_section_info): Ditto.
13408 (v850_insert_attributes): Ditto.
13409 * config/visium/visium.cc (visium_pass_by_reference): Ditto.
13410 (visium_return_in_memory): Ditto.
13411 * config/xtensa/xtensa.cc (xtensa_multibss_section_type_flags): Ditto.
13412
13413 2023-05-18 Uros Bizjak <ubizjak@gmail.com>
13414
13415 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi_partial): New.
13416 (ix86_expand_vecop_qihi): Add op2vec bool variable.
13417 Do not set REG_EQUAL note.
13418 * config/i386/i386-protos.h (ix86_expand_vecop_qihi_partial):
13419 Add prototype.
13420 * config/i386/i386.cc (ix86_multiplication_cost): Handle
13421 V4QImode and V8QImode.
13422 * config/i386/mmx.md (mulv8qi3): New expander.
13423 (mulv4qi3): Ditto.
13424 * config/i386/sse.md (mulv8qi3): Remove.
13425
13426 2023-05-18 Georg-Johann Lay <avr@gjlay.de>
13427
13428 * config/avr/gen-avr-mmcu-specs.cc: Remove stale */ after // comment.
13429
13430 2023-05-18 Jonathan Wakely <jwakely@redhat.com>
13431
13432 PR bootstrap/105831
13433 * config.gcc: Use = operator instead of ==.
13434
13435 2023-05-18 Michael Bäuerle <micha@NetBSD.org>
13436
13437 PR bootstrap/105831
13438 * config/nvptx/gen-opt.sh: Use = operator instead of ==.
13439 * configure.ac: Likewise.
13440 * configure: Regenerate.
13441
13442 2023-05-18 Stam Markianos-Wright <stam.markianos-wright@arm.com>
13443
13444 * config/arm/arm_mve.h: (__ARM_mve_typeid): Add more pointer types.
13445 (__ARM_mve_coerce1): Remove.
13446 (__ARM_mve_coerce2): Remove.
13447 (__ARM_mve_coerce3): Remove.
13448 (__ARM_mve_coerce_i_scalar): New.
13449 (__ARM_mve_coerce_s8_ptr): New.
13450 (__ARM_mve_coerce_u8_ptr): New.
13451 (__ARM_mve_coerce_s16_ptr): New.
13452 (__ARM_mve_coerce_u16_ptr): New.
13453 (__ARM_mve_coerce_s32_ptr): New.
13454 (__ARM_mve_coerce_u32_ptr): New.
13455 (__ARM_mve_coerce_s64_ptr): New.
13456 (__ARM_mve_coerce_u64_ptr): New.
13457 (__ARM_mve_coerce_f_scalar): New.
13458 (__ARM_mve_coerce_f16_ptr): New.
13459 (__ARM_mve_coerce_f32_ptr): New.
13460 (__arm_vst4q): Change _coerce_ overloads.
13461 (__arm_vbicq): Change _coerce_ overloads.
13462 (__arm_vld1q): Change _coerce_ overloads.
13463 (__arm_vld1q_z): Change _coerce_ overloads.
13464 (__arm_vld2q): Change _coerce_ overloads.
13465 (__arm_vld4q): Change _coerce_ overloads.
13466 (__arm_vldrhq_gather_offset): Change _coerce_ overloads.
13467 (__arm_vldrhq_gather_offset_z): Change _coerce_ overloads.
13468 (__arm_vldrhq_gather_shifted_offset): Change _coerce_ overloads.
13469 (__arm_vldrhq_gather_shifted_offset_z): Change _coerce_ overloads.
13470 (__arm_vldrwq_gather_offset): Change _coerce_ overloads.
13471 (__arm_vldrwq_gather_offset_z): Change _coerce_ overloads.
13472 (__arm_vldrwq_gather_shifted_offset): Change _coerce_ overloads.
13473 (__arm_vldrwq_gather_shifted_offset_z): Change _coerce_ overloads.
13474 (__arm_vst1q_p): Change _coerce_ overloads.
13475 (__arm_vst2q): Change _coerce_ overloads.
13476 (__arm_vst1q): Change _coerce_ overloads.
13477 (__arm_vstrhq): Change _coerce_ overloads.
13478 (__arm_vstrhq_p): Change _coerce_ overloads.
13479 (__arm_vstrhq_scatter_offset_p): Change _coerce_ overloads.
13480 (__arm_vstrhq_scatter_offset): Change _coerce_ overloads.
13481 (__arm_vstrhq_scatter_shifted_offset_p): Change _coerce_ overloads.
13482 (__arm_vstrhq_scatter_shifted_offset): Change _coerce_ overloads.
13483 (__arm_vstrwq_p): Change _coerce_ overloads.
13484 (__arm_vstrwq): Change _coerce_ overloads.
13485 (__arm_vstrwq_scatter_offset): Change _coerce_ overloads.
13486 (__arm_vstrwq_scatter_offset_p): Change _coerce_ overloads.
13487 (__arm_vstrwq_scatter_shifted_offset): Change _coerce_ overloads.
13488 (__arm_vstrwq_scatter_shifted_offset_p): Change _coerce_ overloads.
13489 (__arm_vsetq_lane): Change _coerce_ overloads.
13490 (__arm_vldrbq_gather_offset): Change _coerce_ overloads.
13491 (__arm_vdwdupq_x_u8): Change _coerce_ overloads.
13492 (__arm_vdwdupq_x_u16): Change _coerce_ overloads.
13493 (__arm_vdwdupq_x_u32): Change _coerce_ overloads.
13494 (__arm_viwdupq_x_u8): Change _coerce_ overloads.
13495 (__arm_viwdupq_x_u16): Change _coerce_ overloads.
13496 (__arm_viwdupq_x_u32): Change _coerce_ overloads.
13497 (__arm_vidupq_x_u8): Change _coerce_ overloads.
13498 (__arm_vddupq_x_u8): Change _coerce_ overloads.
13499 (__arm_vidupq_x_u16): Change _coerce_ overloads.
13500 (__arm_vddupq_x_u16): Change _coerce_ overloads.
13501 (__arm_vidupq_x_u32): Change _coerce_ overloads.
13502 (__arm_vddupq_x_u32): Change _coerce_ overloads.
13503 (__arm_vldrdq_gather_offset): Change _coerce_ overloads.
13504 (__arm_vldrdq_gather_offset_z): Change _coerce_ overloads.
13505 (__arm_vldrdq_gather_shifted_offset): Change _coerce_ overloads.
13506 (__arm_vldrdq_gather_shifted_offset_z): Change _coerce_ overloads.
13507 (__arm_vldrbq_gather_offset_z): Change _coerce_ overloads.
13508 (__arm_vidupq_u16): Change _coerce_ overloads.
13509 (__arm_vidupq_u32): Change _coerce_ overloads.
13510 (__arm_vidupq_u8): Change _coerce_ overloads.
13511 (__arm_vddupq_u16): Change _coerce_ overloads.
13512 (__arm_vddupq_u32): Change _coerce_ overloads.
13513 (__arm_vddupq_u8): Change _coerce_ overloads.
13514 (__arm_viwdupq_m): Change _coerce_ overloads.
13515 (__arm_viwdupq_u16): Change _coerce_ overloads.
13516 (__arm_viwdupq_u32): Change _coerce_ overloads.
13517 (__arm_viwdupq_u8): Change _coerce_ overloads.
13518 (__arm_vdwdupq_m): Change _coerce_ overloads.
13519 (__arm_vdwdupq_u16): Change _coerce_ overloads.
13520 (__arm_vdwdupq_u32): Change _coerce_ overloads.
13521 (__arm_vdwdupq_u8): Change _coerce_ overloads.
13522 (__arm_vstrbq): Change _coerce_ overloads.
13523 (__arm_vstrbq_p): Change _coerce_ overloads.
13524 (__arm_vstrbq_scatter_offset_p): Change _coerce_ overloads.
13525 (__arm_vstrdq_scatter_offset_p): Change _coerce_ overloads.
13526 (__arm_vstrdq_scatter_offset): Change _coerce_ overloads.
13527 (__arm_vstrdq_scatter_shifted_offset_p): Change _coerce_ overloads.
13528 (__arm_vstrdq_scatter_shifted_offset): Change _coerce_ overloads.
13529
13530 2023-05-18 Stam Markianos-Wright <stam.markianos-wright@arm.com>
13531
13532 * config/arm/arm_mve.h (__arm_vbicq): Change coerce on
13533 scalar constant.
13534
13535 2023-05-18 Stam Markianos-Wright <stam.markianos-wright@arm.com>
13536
13537 * config/arm/arm_mve.h (__arm_vadcq_s32): Fix arithmetic.
13538 (__arm_vadcq_u32): Likewise.
13539 (__arm_vadcq_m_s32): Likewise.
13540 (__arm_vadcq_m_u32): Likewise.
13541 (__arm_vsbcq_s32): Likewise.
13542 (__arm_vsbcq_u32): Likewise.
13543 (__arm_vsbcq_m_s32): Likewise.
13544 (__arm_vsbcq_m_u32): Likewise.
13545 * config/arm/mve.md (get_fpscr_nzcvqc): Make unspec_volatile.
13546
13547 2023-05-18 Andrea Corallo <andrea.corallo@arm.com>
13548
13549 * config/arm/mve.md (mve_vrndq_m_f<mode>, mve_vrev64q_f<mode>)
13550 (mve_vrev32q_fv8hf, mve_vcvttq_f32_f16v4sf)
13551 (mve_vcvtbq_f32_f16v4sf, mve_vcvtq_to_f_<supf><mode>)
13552 (mve_vrev64q_<supf><mode>, mve_vcvtq_from_f_<supf><mode>)
13553 (mve_vmovltq_<supf><mode>, mve_vmovlbq_<supf><mode>)
13554 (mve_vcvtpq_<supf><mode>, mve_vcvtnq_<supf><mode>)
13555 (mve_vcvtmq_<supf><mode>, mve_vcvtaq_<supf><mode>)
13556 (mve_vmvnq_n_<supf><mode>, mve_vrev16q_<supf>v16qi)
13557 (mve_vctp<MVE_vctp>q<MVE_vpred>, mve_vbrsrq_n_f<mode>)
13558 (mve_vbrsrq_n_<supf><mode>, mve_vandq_f<mode>, mve_vbicq_f<mode>)
13559 (mve_vctp<MVE_vctp>q_m<MVE_vpred>, mve_vcvtbq_f16_f32v8hf)
13560 (mve_vcvttq_f16_f32v8hf, mve_veorq_f<mode>)
13561 (mve_vmlaldavxq_s<mode>, mve_vmlsldavq_s<mode>)
13562 (mve_vmlsldavxq_s<mode>, mve_vornq_f<mode>, mve_vorrq_f<mode>)
13563 (mve_vrmlaldavhxq_sv4si, mve_vcvtq_m_to_f_<supf><mode>)
13564 (mve_vshlcq_<supf><mode>, mve_vmvnq_m_<supf><mode>)
13565 (mve_vpselq_<supf><mode>, mve_vcvtbq_m_f16_f32v8hf)
13566 (mve_vcvtbq_m_f32_f16v4sf, mve_vcvttq_m_f16_f32v8hf)
13567 (mve_vcvttq_m_f32_f16v4sf, mve_vmlaldavq_p_<supf><mode>)
13568 (mve_vmlsldavaq_s<mode>, mve_vmlsldavaxq_s<mode>)
13569 (mve_vmlsldavq_p_s<mode>, mve_vmlsldavxq_p_s<mode>)
13570 (mve_vmvnq_m_n_<supf><mode>, mve_vorrq_m_n_<supf><mode>)
13571 (mve_vpselq_f<mode>, mve_vrev32q_m_fv8hf)
13572 (mve_vrev32q_m_<supf><mode>, mve_vrev64q_m_f<mode>)
13573 (mve_vrmlaldavhaxq_sv4si, mve_vrmlaldavhxq_p_sv4si)
13574 (mve_vrmlsldavhaxq_sv4si, mve_vrmlsldavhq_p_sv4si)
13575 (mve_vrmlsldavhxq_p_sv4si, mve_vrev16q_m_<supf>v16qi)
13576 (mve_vrmlaldavhq_p_<supf>v4si, mve_vrmlsldavhaq_sv4si)
13577 (mve_vandq_m_<supf><mode>, mve_vbicq_m_<supf><mode>)
13578 (mve_veorq_m_<supf><mode>, mve_vornq_m_<supf><mode>)
13579 (mve_vorrq_m_<supf><mode>, mve_vandq_m_f<mode>)
13580 (mve_vbicq_m_f<mode>, mve_veorq_m_f<mode>, mve_vornq_m_f<mode>)
13581 (mve_vorrq_m_f<mode>)
13582 (mve_vstrdq_scatter_shifted_offset_p_<supf>v2di_insn)
13583 (mve_vstrdq_scatter_shifted_offset_<supf>v2di_insn)
13584 (mve_vstrdq_scatter_base_wb_p_<supf>v2di) : Fix spacing and
13585 capitalization in the emitted asm.
13586
13587 2023-05-18 Andrea Corallo <andrea.corallo@arm.com>
13588
13589 * config/arm/constraints.md (mve_vldrd_immediate): Move it to
13590 predicates.md.
13591 (Ri): Move constraint definition from predicates.md.
13592 (Rl): Define new constraint.
13593 * config/arm/mve.md (mve_vstrwq_scatter_base_wb_p_<supf>v4si): Add
13594 missing constraint.
13595 (mve_vstrwq_scatter_base_wb_p_fv4sf): Add missing Up constraint
13596 for op 1, use mve_vstrw_immediate predicate and Rl constraint for
13597 op 2. Fix asm output spacing.
13598 (mve_vstrdq_scatter_base_wb_p_<supf>v2di): Add missing constraint.
13599 * config/arm/predicates.md (Ri) Move constraint to constraints.md
13600 (mve_vldrd_immediate): Move it from
13601 constraints.md.
13602 (mve_vstrw_immediate): New predicate.
13603
13604 2023-05-18 Pan Li <pan2.li@intel.com>
13605 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
13606 Kito Cheng <kito.cheng@sifive.com>
13607 Richard Biener <rguenther@suse.de>
13608 Richard Sandiford <richard.sandiford@arm.com>
13609
13610 * combine.cc (struct reg_stat_type): Extend machine_mode to 16 bits.
13611 * cse.cc (struct qty_table_elem): Extend machine_mode to 16 bits
13612 (struct table_elt): Extend machine_mode to 16 bits.
13613 (struct set): Ditto.
13614 * genmodes.cc (emit_mode_wider): Extend type from char to short.
13615 (emit_mode_complex): Ditto.
13616 (emit_mode_inner): Ditto.
13617 (emit_class_narrowest_mode): Ditto.
13618 * genopinit.cc (main): Extend the machine_mode limit.
13619 * ira-int.h (struct ira_allocno): Extend machine_mode to 16 bits and
13620 re-ordered the struct fields for padding.
13621 * machmode.h (MACHINE_MODE_BITSIZE): New macro.
13622 (GET_MODE_2XWIDER_MODE): Extend type from char to short.
13623 (get_mode_alignment): Extend type from char to short.
13624 * ree.cc (struct ext_modified): Extend machine_mode to 16 bits and
13625 removed the ATTRIBUTE_PACKED.
13626 * rtl-ssa/accesses.h: Extend machine_mode to 16 bits, narrow
13627 * rtl-ssa/internals.inl (rtl_ssa::access_info): Adjust the assignment.
13628 m_kind to 2 bits and remove m_spare.
13629 * rtl.h (RTX_CODE_BITSIZE): New macro.
13630 (struct rtx_def): Swap both the bit size and location between the
13631 rtx_code and the machine_mode.
13632 (subreg_shape::unique_id): Extend the machine_mode limit.
13633 * rtlanal.h: Extend machine_mode to 16 bits.
13634 * tree-core.h (struct tree_type_common): Extend machine_mode to 16
13635 bits and re-ordered the struct fields for padding.
13636 (struct tree_decl_common): Extend machine_mode to 16 bits.
13637
13638 2023-05-17 Jin Ma <jinma@linux.alibaba.com>
13639
13640 * genrecog.cc (print_nonbool_test): Fix type error of
13641 switch (SUBREG_BYTE (op))'.
13642
13643 2023-05-17 Jin Ma <jinma@linux.alibaba.com>
13644
13645 * common/config/riscv/riscv-common.cc: Remove
13646 trailing spaces on lines.
13647 * config/riscv/riscv.cc (riscv_legitimize_move): Likewise.
13648 * config/riscv/riscv.h (enum reg_class): Likewise.
13649 * config/riscv/riscv.md: Likewise.
13650
13651 2023-05-17 John David Anglin <danglin@gcc.gnu.org>
13652
13653 * config/pa/pa.md (clear_cache): New.
13654
13655 2023-05-17 Arsen Arsenović <arsen@aarsen.me>
13656
13657 * doc/extend.texi (C++ Concepts) <forall>: Remove extraneous
13658 parenthesis. Fix misnamed index entry.
13659 <concept>: Fix misnamed index entry.
13660
13661 2023-05-17 Jivan Hakobyan <jivanhakobyan9@gmail.com>
13662
13663 * config/riscv/riscv.md (*<optab><GPR:mode>3_mask): New pattern,
13664 combined from ...
13665 (*<optab>si3_mask, *<optab>di3_mask): Here.
13666 (*<optab>si3_mask_1, *<optab>di3_mask_1): And here.
13667 * config/riscv/bitmanip.md (*<bitmanip_optab><GPR:mode>3_mask): New
13668 pattern.
13669 (*<bitmanip_optab>si3_sext_mask): Likewise.
13670 * config/riscv/iterators.md (shiftm1): Use const_si_mask_operand
13671 and const_di_mask_operand.
13672 (bitmanip_rotate): New iterator.
13673 (bitmanip_optab): Add rotates.
13674 * config/riscv/predicates.md (const_si_mask_operand): Renamed
13675 from const31_operand. Generalize to handle more mask constants.
13676 (const_di_mask_operand): Similarly.
13677
13678 2023-05-17 Jakub Jelinek <jakub@redhat.com>
13679
13680 PR c++/109884
13681 * config/i386/i386-builtin-types.def (FLOAT128): Use
13682 float128t_type_node rather than float128_type_node.
13683
13684 2023-05-17 Alexander Monakov <amonakov@ispras.ru>
13685
13686 * tree-ssa-math-opts.cc (convert_mult_to_fma): Enable only for
13687 FP_CONTRACT_FAST (no functional change).
13688
13689 2023-05-17 Uros Bizjak <ubizjak@gmail.com>
13690
13691 * config/i386/i386.cc (ix86_multiplication_cost): Correct
13692 calcuation of integer vector mode costs to reflect generated
13693 instruction sequences of different integer vector modes and
13694 different target ABIs.
13695
13696 2023-05-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
13697
13698 * config/riscv/riscv-opts.h (enum riscv_entity): New enum.
13699 * config/riscv/riscv.cc (riscv_emit_mode_set): New function.
13700 (riscv_mode_needed): Ditto.
13701 (riscv_mode_after): Ditto.
13702 (riscv_mode_entry): Ditto.
13703 (riscv_mode_exit): Ditto.
13704 (riscv_mode_priority): Ditto.
13705 (TARGET_MODE_EMIT): New target hook.
13706 (TARGET_MODE_NEEDED): Ditto.
13707 (TARGET_MODE_AFTER): Ditto.
13708 (TARGET_MODE_ENTRY): Ditto.
13709 (TARGET_MODE_EXIT): Ditto.
13710 (TARGET_MODE_PRIORITY): Ditto.
13711 * config/riscv/riscv.h (OPTIMIZE_MODE_SWITCHING): Ditto.
13712 (NUM_MODES_FOR_MODE_SWITCHING): Ditto.
13713 * config/riscv/riscv.md: Add csrwvxrm.
13714 * config/riscv/vector.md (rnu,rne,rdn,rod,none): New attribute.
13715 (vxrmsi): New pattern.
13716
13717 2023-05-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
13718
13719 * config/riscv/riscv-vector-builtins-bases.cc: Introduce rounding mode.
13720 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
13721 (struct narrow_alu_def): Ditto.
13722 * config/riscv/riscv-vector-builtins.cc (function_builder::apply_predication): Ditto.
13723 (function_expander::use_exact_insn): Ditto.
13724 * config/riscv/riscv-vector-builtins.h (function_checker::arg_num): New function.
13725 (function_base::has_rounding_mode_operand_p): New function.
13726
13727 2023-05-17 Andrew Pinski <apinski@marvell.com>
13728
13729 * tree-ssa-forwprop.cc (simplify_builtin_call): Check
13730 against 0 instead of calling integer_zerop.
13731
13732 2023-05-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
13733
13734 * config/riscv/riscv-vector-builtins.cc (register_vxrm): New function.
13735 (DEF_RVV_VXRM_ENUM): New macro.
13736 (handle_pragma_vector): Add vxrm enum register.
13737 * config/riscv/riscv-vector-builtins.def (DEF_RVV_VXRM_ENUM): New macro.
13738 (RNU): Ditto.
13739 (RNE): Ditto.
13740 (RDN): Ditto.
13741 (ROD): Ditto.
13742
13743 2023-05-17 Aldy Hernandez <aldyh@redhat.com>
13744
13745 * value-range.h (Value_Range::operator=): New.
13746
13747 2023-05-17 Aldy Hernandez <aldyh@redhat.com>
13748
13749 * value-range.cc (vrange::operator=): Add a stub to copy
13750 unsupported ranges.
13751 * value-range.h (is_a <unsupported_range>): New.
13752 (Value_Range::operator=): Support copying unsupported ranges.
13753
13754 2023-05-17 Aldy Hernandez <aldyh@redhat.com>
13755
13756 * data-streamer-in.cc (streamer_read_real_value): New.
13757 (streamer_read_value_range): New.
13758 * data-streamer-out.cc (streamer_write_real_value): New.
13759 (streamer_write_vrange): New.
13760 * data-streamer.h (streamer_write_vrange): New.
13761 (streamer_read_value_range): New.
13762
13763 2023-05-17 Jonathan Wakely <jwakely@redhat.com>
13764
13765 PR c++/109532
13766 * doc/invoke.texi (Code Gen Options): Note that -fshort-enums
13767 is ignored for a fixed underlying type.
13768 (C++ Dialect Options): Likewise for -fstrict-enums.
13769
13770 2023-05-17 Tobias Burnus <tobias@codesourcery.com>
13771
13772 * gimplify.cc (gimplify_scan_omp_clauses): Remove Fortran
13773 special case.
13774
13775 2023-05-17 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
13776
13777 * config/s390/s390.cc (TARGET_ATOMIC_ALIGN_FOR_MODE):
13778 New.
13779 (s390_atomic_align_for_mode): New.
13780
13781 2023-05-17 Jakub Jelinek <jakub@redhat.com>
13782
13783 * wide-int.cc (wi::from_array): Add missing closing paren in function
13784 comment.
13785
13786 2023-05-17 Kewen Lin <linkw@linux.ibm.com>
13787
13788 * tree-vect-loop.cc (vect_analyze_loop_1): Don't retry analysis with
13789 suggested unroll factor once the previous analysis fails.
13790
13791 2023-05-17 Pan Li <pan2.li@intel.com>
13792
13793 * config/riscv/genrvv-type-indexer.cc (BOOL_SIZE_LIST): New
13794 macro.
13795 (main): Add bool1 to the type indexer.
13796 * config/riscv/riscv-vector-builtins-functions.def
13797 (vreinterpret): Register vbool1 interpret function.
13798 * config/riscv/riscv-vector-builtins-types.def
13799 (DEF_RVV_BOOL1_INTERPRET_OPS): New macro.
13800 (vint8m1_t): Add the type to bool1_interpret_ops.
13801 (vint16m1_t): Ditto.
13802 (vint32m1_t): Ditto.
13803 (vint64m1_t): Ditto.
13804 (vuint8m1_t): Ditto.
13805 (vuint16m1_t): Ditto.
13806 (vuint32m1_t): Ditto.
13807 (vuint64m1_t): Ditto.
13808 * config/riscv/riscv-vector-builtins.cc
13809 (DEF_RVV_BOOL1_INTERPRET_OPS): New macro.
13810 (required_extensions_p): Add bool1 interpret case.
13811 * config/riscv/riscv-vector-builtins.def
13812 (bool1_interpret): Add bool1 interpret to base type.
13813 * config/riscv/vector.md (@vreinterpret<mode>): Add new expand
13814 with VB dest for vreinterpret.
13815
13816 2023-05-17 Jiufu Guo <guojiufu@linux.ibm.com>
13817
13818 PR target/106708
13819 * config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Support building
13820 constants through "lis; xoris".
13821
13822 2023-05-16 Ajit Kumar Agarwal <aagarwa1@linux.ibm.com>
13823
13824 * common/config/rs6000/rs6000-common.cc: Add REE pass as a
13825 default rs6000 target pass for O2 and above.
13826 * doc/invoke.texi: Document -free
13827
13828 2023-05-16 Kito Cheng <kito.cheng@sifive.com>
13829
13830 * common/config/riscv/riscv-common.cc (riscv_compute_multilib):
13831 Fix wrong select_kind...
13832
13833 2023-05-16 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
13834
13835 * config/s390/s390-protos.h (s390_expand_setmem): Change
13836 function signature.
13837 * config/s390/s390.cc (s390_expand_setmem): For memset's less
13838 than or equal to 256 byte do not perform a libc call.
13839 * config/s390/s390.md: Change expander into a version which
13840 takes 8 operands.
13841
13842 2023-05-16 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
13843
13844 * config/s390/s390-protos.h (s390_expand_movmem): New.
13845 * config/s390/s390.cc (s390_expand_movmem): New.
13846 * config/s390/s390.md (movmem<mode>): New.
13847 (*mvcrl): New.
13848 (mvcrl): New.
13849
13850 2023-05-16 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
13851
13852 * config/s390/s390-protos.h (s390_expand_cpymem): Change
13853 function signature.
13854 * config/s390/s390.cc (s390_expand_cpymem): For memcpy's less
13855 than or equal to 256 byte do not perform a libc call.
13856 (s390_expand_insv): Adapt new function signature of
13857 s390_expand_cpymem.
13858 * config/s390/s390.md: Change expander into a version which
13859 takes 8 operands.
13860
13861 2023-05-16 Andrew Pinski <apinski@marvell.com>
13862
13863 PR tree-optimization/109424
13864 * match.pd: Add patterns for min/max of zero_one_valued
13865 values to `&`/`|`.
13866
13867 2023-05-16 Juzhe-Zhong <juzhe.zhong@rivai.ai>
13868
13869 * config/riscv/riscv-protos.h (enum frm_field_enum): New enum.
13870 * config/riscv/riscv-vector-builtins.cc
13871 (function_expander::use_ternop_insn): Add default rounding mode.
13872 (function_expander::use_widen_ternop_insn): Ditto.
13873 * config/riscv/riscv.cc (riscv_hard_regno_nregs): Add FRM REGNUM.
13874 (riscv_hard_regno_mode_ok): Ditto.
13875 (riscv_conditional_register_usage): Ditto.
13876 * config/riscv/riscv.h (DWARF_FRAME_REGNUM): Ditto.
13877 (FRM_REG_P): Ditto.
13878 (RISCV_DWARF_FRM): Ditto.
13879 * config/riscv/riscv.md: Ditto.
13880 * config/riscv/vector-iterators.md: split no frm and has frm operations.
13881 * config/riscv/vector.md (@pred_<optab><mode>_scalar): New pattern.
13882 (@pred_<optab><mode>): Ditto.
13883
13884 2023-05-15 Aldy Hernandez <aldyh@redhat.com>
13885
13886 PR tree-optimization/109695
13887 * value-range.cc (irange::operator=): Resize range.
13888 (irange::union_): Same.
13889 (irange::intersect): Same.
13890 (irange::invert): Same.
13891 (int_range_max): Default to 3 sub-ranges and resize as needed.
13892 * value-range.h (irange::maybe_resize): New.
13893 (~int_range): New.
13894 (int_range::int_range): Adjust for resizing.
13895 (int_range::operator=): Same.
13896
13897 2023-05-15 Aldy Hernandez <aldyh@redhat.com>
13898
13899 * ipa-cp.cc (ipcp_vr_lattice::meet_with_1): Avoid unnecessary
13900 range copying
13901 * value-range.cc (irange::union_nonzero_bits): Return TRUE only
13902 when range changed.
13903
13904 2023-05-15 Juzhe-Zhong <juzhe.zhong@rivai.ai>
13905
13906 * config/riscv/riscv-protos.h (enum vxrm_field_enum): New enum.
13907 * config/riscv/riscv-vector-builtins.cc
13908 (function_expander::use_exact_insn): Add default rounding mode operand.
13909 * config/riscv/riscv.cc (riscv_hard_regno_nregs): Add VXRM_REGNUM.
13910 (riscv_hard_regno_mode_ok): Ditto.
13911 (riscv_conditional_register_usage): Ditto.
13912 * config/riscv/riscv.h (DWARF_FRAME_REGNUM): Ditto.
13913 (VXRM_REG_P): Ditto.
13914 (RISCV_DWARF_VXRM): Ditto.
13915 * config/riscv/riscv.md: Ditto.
13916 * config/riscv/vector.md: Ditto
13917
13918 2023-05-15 Pan Li <pan2.li@intel.com>
13919
13920 * optabs.cc (maybe_gen_insn): Add case to generate instruction
13921 that has 11 operands.
13922
13923 2023-05-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13924
13925 * config/aarch64/aarch64.cc (aarch64_rtx_costs, NEG case): Add costing
13926 logic for vector modes.
13927
13928 2023-05-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13929
13930 PR target/99195
13931 * config/aarch64/aarch64-simd.md (aarch64_cm<optab><mode>): Rename to...
13932 (aarch64_cm<optab><mode><vczle><vczbe>): ... This.
13933 (aarch64_cmtst<mode>): Rename to...
13934 (aarch64_cmtst<mode><vczle><vczbe>): ... This.
13935 (*aarch64_cmtst_same_<mode>): Rename to...
13936 (*aarch64_cmtst_same_<mode><vczle><vczbe>): ... This.
13937 (*aarch64_cmtstdi): Rename to...
13938 (*aarch64_cmtstdi<vczle><vczbe>): ... This.
13939 (aarch64_fac<optab><mode>): Rename to...
13940 (aarch64_fac<optab><mode><vczle><vczbe>): ... This.
13941
13942 2023-05-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13943
13944 PR target/99195
13945 * config/aarch64/aarch64-simd.md (aarch64_s<optab><mode>): Rename to...
13946 (aarch64_s<optab><mode><vczle><vczbe>): ... This.
13947
13948 2023-05-15 Pan Li <pan2.li@intel.com>
13949 Juzhe-Zhong <juzhe.zhong@rivai.ai>
13950 kito-cheng <kito.cheng@sifive.com>
13951
13952 * config/riscv/riscv-v.cc (const_vlmax_p): New function for
13953 deciding the mode is constant or not.
13954 (set_len_and_policy): Optimize VLS-VLMAX code gen to vsetivli.
13955
13956 2023-05-15 Richard Biener <rguenther@suse.de>
13957
13958 PR tree-optimization/109848
13959 * tree-ssa-forwprop.cc (pass_forwprop::execute): Put the
13960 TARGET_MEM_REF address preparation before the store, not
13961 before the CTOR.
13962
13963 2023-05-15 Juzhe-Zhong <juzhe.zhong@rivai.ai>
13964
13965 * config/riscv/riscv.cc
13966 (riscv_vectorize_preferred_vector_alignment): New function.
13967 (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): New target hook.
13968
13969 2023-05-14 Andrew Pinski <apinski@marvell.com>
13970
13971 PR tree-optimization/109829
13972 * match.pd: Add pattern for `signbit(x) !=/== 0 ? x : -x`.
13973
13974 2023-05-14 Uros Bizjak <ubizjak@gmail.com>
13975
13976 PR target/109807
13977 * config/i386/i386.cc: Revert the 2023-05-11 change.
13978 (ix86_widen_mult_cost): Return high value instead of
13979 ICEing for unsupported modes.
13980
13981 2023-05-14 Ard Biesheuvel <ardb@kernel.org>
13982
13983 * config/i386/i386.cc (x86_function_profiler): Take
13984 ix86_direct_extern_access into account when generating calls
13985 to __fentry__()
13986
13987 2023-05-14 Pan Li <pan2.li@intel.com>
13988
13989 * config/riscv/riscv-vector-builtins.cc (required_extensions_p):
13990 Refactor the or pattern to switch cases.
13991
13992 2023-05-13 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
13993
13994 * config/aarch64/aarch64.cc (aarch64_expand_vector_init_fallback): Rename
13995 aarch64_expand_vector_init to this, and remove interleaving case.
13996 Recursively call aarch64_expand_vector_init_fallback, instead of
13997 aarch64_expand_vector_init.
13998 (aarch64_unzip_vector_init): New function.
13999 (aarch64_expand_vector_init): Likewise.
14000
14001 2023-05-13 Kito Cheng <kito.cheng@sifive.com>
14002
14003 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::cleanup_insns):
14004 Pull out function call from the gcc_assert.
14005
14006 2023-05-13 Kito Cheng <kito.cheng@sifive.com>
14007
14008 * config/riscv/riscv-vsetvl.cc (vlmul_to_str): New.
14009 (policy_to_str): New.
14010 (vector_insn_info::dump): Use vlmul_to_str and policy_to_str.
14011
14012 2023-05-13 Andrew Pinski <apinski@marvell.com>
14013
14014 PR tree-optimization/109834
14015 * match.pd (popcount(bswap(x))->popcount(x)): Fix up unsigned type checking.
14016 (popcount(rotate(x,y))->popcount(x)): Likewise.
14017
14018 2023-05-12 Uros Bizjak <ubizjak@gmail.com>
14019
14020 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2): Also
14021 reject ymm instructions for TARGET_PREFER_AVX128. Use generic
14022 gen_extend_insn to generate zero/sign extension instructions.
14023 Fix comments.
14024 (ix86_expand_vecop_qihi): Initialize interleave functions
14025 for MULT code only. Fix comments.
14026
14027 2023-05-12 Uros Bizjak <ubizjak@gmail.com>
14028
14029 PR target/109797
14030 * config/i386/mmx.md (mulv2si3): Remove expander.
14031 (mulv2si3): Rename insn pattern from *mulv2si.
14032
14033 2023-05-12 Tobias Burnus <tobias@codesourcery.com>
14034
14035 PR libstdc++/109816
14036 * lto-cgraph.cc (output_symtab): Guard lto_output_toplevel_asms by
14037 '!lto_stream_offload_p'.
14038
14039 2023-05-12 Kito Cheng <kito.cheng@sifive.com>
14040 Juzhe-Zhong <juzhe.zhong@rivai.ai>
14041
14042 PR target/109743
14043 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::get_vsetvl_at_end): New.
14044 (local_avl_compatible_p): New.
14045 (pass_vsetvl::local_eliminate_vsetvl_insn): Enhance local optimizations
14046 for LCM, rewrite as a backward algorithm.
14047 (pass_vsetvl::cleanup_insns): Use new local_eliminate_vsetvl_insn
14048 interface, handle a BB at once.
14049
14050 2023-05-12 Richard Biener <rguenther@suse.de>
14051
14052 PR tree-optimization/64731
14053 * tree-ssa-forwprop.cc (pass_forwprop::execute): Also
14054 handle TARGET_MEM_REF destinations of stores from vector
14055 CTORs.
14056
14057 2023-05-12 Richard Biener <rguenther@suse.de>
14058
14059 PR tree-optimization/109791
14060 * match.pd (minus (convert ADDR_EXPR@0) (convert (pointer_plus @1 @2))):
14061 New pattern.
14062 (minus (convert (pointer_plus @1 @2)) (convert ADDR_EXPR@0)):
14063 Likewise.
14064
14065 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
14066
14067 * config/arm/arm-mve-builtins-base.cc (vsriq): New.
14068 * config/arm/arm-mve-builtins-base.def (vsriq): New.
14069 * config/arm/arm-mve-builtins-base.h (vsriq): New.
14070 * config/arm/arm-mve-builtins.cc
14071 (function_instance::has_inactive_argument): Handle vsriq.
14072 * config/arm/arm_mve.h (vsriq): Remove.
14073 (vsriq_m): Remove.
14074 (vsriq_n_u8): Remove.
14075 (vsriq_n_s8): Remove.
14076 (vsriq_n_u16): Remove.
14077 (vsriq_n_s16): Remove.
14078 (vsriq_n_u32): Remove.
14079 (vsriq_n_s32): Remove.
14080 (vsriq_m_n_s8): Remove.
14081 (vsriq_m_n_u8): Remove.
14082 (vsriq_m_n_s16): Remove.
14083 (vsriq_m_n_u16): Remove.
14084 (vsriq_m_n_s32): Remove.
14085 (vsriq_m_n_u32): Remove.
14086 (__arm_vsriq_n_u8): Remove.
14087 (__arm_vsriq_n_s8): Remove.
14088 (__arm_vsriq_n_u16): Remove.
14089 (__arm_vsriq_n_s16): Remove.
14090 (__arm_vsriq_n_u32): Remove.
14091 (__arm_vsriq_n_s32): Remove.
14092 (__arm_vsriq_m_n_s8): Remove.
14093 (__arm_vsriq_m_n_u8): Remove.
14094 (__arm_vsriq_m_n_s16): Remove.
14095 (__arm_vsriq_m_n_u16): Remove.
14096 (__arm_vsriq_m_n_s32): Remove.
14097 (__arm_vsriq_m_n_u32): Remove.
14098 (__arm_vsriq): Remove.
14099 (__arm_vsriq_m): Remove.
14100
14101 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
14102
14103 * config/arm/iterators.md (mve_insn): Add vsri.
14104 * config/arm/mve.md (mve_vsriq_n_<supf><mode>): Rename into ...
14105 (@mve_<mve_insn>q_n_<supf><mode>): .,. this.
14106 (mve_vsriq_m_n_<supf><mode>): Rename into ...
14107 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
14108
14109 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
14110
14111 * config/arm/arm-mve-builtins-shapes.cc (ternary_rshift): New.
14112 * config/arm/arm-mve-builtins-shapes.h (ternary_rshift): New.
14113
14114 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
14115
14116 * config/arm/arm-mve-builtins-base.cc (vsliq): New.
14117 * config/arm/arm-mve-builtins-base.def (vsliq): New.
14118 * config/arm/arm-mve-builtins-base.h (vsliq): New.
14119 * config/arm/arm-mve-builtins.cc
14120 (function_instance::has_inactive_argument): Handle vsliq.
14121 * config/arm/arm_mve.h (vsliq): Remove.
14122 (vsliq_m): Remove.
14123 (vsliq_n_u8): Remove.
14124 (vsliq_n_s8): Remove.
14125 (vsliq_n_u16): Remove.
14126 (vsliq_n_s16): Remove.
14127 (vsliq_n_u32): Remove.
14128 (vsliq_n_s32): Remove.
14129 (vsliq_m_n_s8): Remove.
14130 (vsliq_m_n_s32): Remove.
14131 (vsliq_m_n_s16): Remove.
14132 (vsliq_m_n_u8): Remove.
14133 (vsliq_m_n_u32): Remove.
14134 (vsliq_m_n_u16): Remove.
14135 (__arm_vsliq_n_u8): Remove.
14136 (__arm_vsliq_n_s8): Remove.
14137 (__arm_vsliq_n_u16): Remove.
14138 (__arm_vsliq_n_s16): Remove.
14139 (__arm_vsliq_n_u32): Remove.
14140 (__arm_vsliq_n_s32): Remove.
14141 (__arm_vsliq_m_n_s8): Remove.
14142 (__arm_vsliq_m_n_s32): Remove.
14143 (__arm_vsliq_m_n_s16): Remove.
14144 (__arm_vsliq_m_n_u8): Remove.
14145 (__arm_vsliq_m_n_u32): Remove.
14146 (__arm_vsliq_m_n_u16): Remove.
14147 (__arm_vsliq): Remove.
14148 (__arm_vsliq_m): Remove.
14149
14150 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
14151
14152 * config/arm/iterators.md (mve_insn>): Add vsli.
14153 * config/arm/mve.md (mve_vsliq_n_<supf><mode>): Rename into ...
14154 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
14155 (mve_vsliq_m_n_<supf><mode>): Rename into ...
14156 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
14157
14158 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
14159
14160 * config/arm/arm-mve-builtins-shapes.cc (ternary_lshift): New.
14161 * config/arm/arm-mve-builtins-shapes.h (ternary_lshift): New.
14162
14163 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
14164
14165 * config/arm/arm-mve-builtins-base.cc (vpselq): New.
14166 * config/arm/arm-mve-builtins-base.def (vpselq): New.
14167 * config/arm/arm-mve-builtins-base.h (vpselq): New.
14168 * config/arm/arm_mve.h (vpselq): Remove.
14169 (vpselq_u8): Remove.
14170 (vpselq_s8): Remove.
14171 (vpselq_u16): Remove.
14172 (vpselq_s16): Remove.
14173 (vpselq_u32): Remove.
14174 (vpselq_s32): Remove.
14175 (vpselq_u64): Remove.
14176 (vpselq_s64): Remove.
14177 (vpselq_f16): Remove.
14178 (vpselq_f32): Remove.
14179 (__arm_vpselq_u8): Remove.
14180 (__arm_vpselq_s8): Remove.
14181 (__arm_vpselq_u16): Remove.
14182 (__arm_vpselq_s16): Remove.
14183 (__arm_vpselq_u32): Remove.
14184 (__arm_vpselq_s32): Remove.
14185 (__arm_vpselq_u64): Remove.
14186 (__arm_vpselq_s64): Remove.
14187 (__arm_vpselq_f16): Remove.
14188 (__arm_vpselq_f32): Remove.
14189 (__arm_vpselq): Remove.
14190
14191 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
14192
14193 * config/arm/arm-mve-builtins-shapes.cc (vpsel): New.
14194 * config/arm/arm-mve-builtins-shapes.h (vpsel): New.
14195
14196 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
14197
14198 * config/arm/arm.cc (arm_expand_vcond): Use gen_mve_q instead of
14199 gen_mve_vpselq.
14200 * config/arm/iterators.md (MVE_VPSELQ_F): New.
14201 (mve_insn): Add vpsel.
14202 * config/arm/mve.md (@mve_vpselq_<supf><mode>): Rename into ...
14203 (@mve_<mve_insn>q_<supf><mode>): ... this.
14204 (@mve_vpselq_f<mode>): Rename into ...
14205 (@mve_<mve_insn>q_f<mode>): ... this.
14206
14207 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
14208
14209 * config/arm/arm-mve-builtins-base.cc (vfmaq, vfmasq, vfmsq): New.
14210 * config/arm/arm-mve-builtins-base.def (vfmaq, vfmasq, vfmsq): New.
14211 * config/arm/arm-mve-builtins-base.h (vfmaq, vfmasq, vfmsq): New.
14212 * config/arm/arm-mve-builtins.cc
14213 (function_instance::has_inactive_argument): Handle vfmaq, vfmasq,
14214 vfmsq.
14215 * config/arm/arm_mve.h (vfmaq): Remove.
14216 (vfmasq): Remove.
14217 (vfmsq): Remove.
14218 (vfmaq_m): Remove.
14219 (vfmasq_m): Remove.
14220 (vfmsq_m): Remove.
14221 (vfmaq_f16): Remove.
14222 (vfmaq_n_f16): Remove.
14223 (vfmasq_n_f16): Remove.
14224 (vfmsq_f16): Remove.
14225 (vfmaq_f32): Remove.
14226 (vfmaq_n_f32): Remove.
14227 (vfmasq_n_f32): Remove.
14228 (vfmsq_f32): Remove.
14229 (vfmaq_m_f32): Remove.
14230 (vfmaq_m_f16): Remove.
14231 (vfmaq_m_n_f32): Remove.
14232 (vfmaq_m_n_f16): Remove.
14233 (vfmasq_m_n_f32): Remove.
14234 (vfmasq_m_n_f16): Remove.
14235 (vfmsq_m_f32): Remove.
14236 (vfmsq_m_f16): Remove.
14237 (__arm_vfmaq_f16): Remove.
14238 (__arm_vfmaq_n_f16): Remove.
14239 (__arm_vfmasq_n_f16): Remove.
14240 (__arm_vfmsq_f16): Remove.
14241 (__arm_vfmaq_f32): Remove.
14242 (__arm_vfmaq_n_f32): Remove.
14243 (__arm_vfmasq_n_f32): Remove.
14244 (__arm_vfmsq_f32): Remove.
14245 (__arm_vfmaq_m_f32): Remove.
14246 (__arm_vfmaq_m_f16): Remove.
14247 (__arm_vfmaq_m_n_f32): Remove.
14248 (__arm_vfmaq_m_n_f16): Remove.
14249 (__arm_vfmasq_m_n_f32): Remove.
14250 (__arm_vfmasq_m_n_f16): Remove.
14251 (__arm_vfmsq_m_f32): Remove.
14252 (__arm_vfmsq_m_f16): Remove.
14253 (__arm_vfmaq): Remove.
14254 (__arm_vfmasq): Remove.
14255 (__arm_vfmsq): Remove.
14256 (__arm_vfmaq_m): Remove.
14257 (__arm_vfmasq_m): Remove.
14258 (__arm_vfmsq_m): Remove.
14259
14260 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
14261
14262 * config/arm/iterators.md (MVE_FP_M_BINARY): Add VFMAQ_M_F,
14263 VFMSQ_M_F.
14264 (MVE_FP_M_N_BINARY): Add VFMAQ_M_N_F, VFMASQ_M_N_F.
14265 (MVE_VFMxQ_F, MVE_VFMAxQ_N_F): New.
14266 (mve_insn): Add vfma, vfmas, vfms.
14267 * config/arm/mve.md (mve_vfmaq_f<mode>, mve_vfmsq_f<mode>): Merge
14268 into ...
14269 (@mve_<mve_insn>q_f<mode>): ... this.
14270 (mve_vfmaq_n_f<mode>, mve_vfmasq_n_f<mode>): Merge into ...
14271 (@mve_<mve_insn>q_n_f<mode>): ... this.
14272 (mve_vfmaq_m_f<mode>, mve_vfmsq_m_f<mode>): Merge into
14273 @mve_<mve_insn>q_m_f<mode>.
14274 (mve_vfmaq_m_n_f<mode>, mve_vfmasq_m_n_f<mode>): Merge into
14275 @mve_<mve_insn>q_m_n_f<mode>.
14276
14277 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
14278
14279 * config/arm/arm-mve-builtins-shapes.cc (ternary_opt_n): New.
14280 * config/arm/arm-mve-builtins-shapes.h (ternary_opt_n): New.
14281
14282 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
14283
14284 * config/arm/arm-mve-builtins-base.cc
14285 (FUNCTION_WITH_RTX_M_N_NO_F): New.
14286 (vmvnq): New.
14287 * config/arm/arm-mve-builtins-base.def (vmvnq): New.
14288 * config/arm/arm-mve-builtins-base.h (vmvnq): New.
14289 * config/arm/arm_mve.h (vmvnq): Remove.
14290 (vmvnq_m): Remove.
14291 (vmvnq_x): Remove.
14292 (vmvnq_s8): Remove.
14293 (vmvnq_s16): Remove.
14294 (vmvnq_s32): Remove.
14295 (vmvnq_n_s16): Remove.
14296 (vmvnq_n_s32): Remove.
14297 (vmvnq_u8): Remove.
14298 (vmvnq_u16): Remove.
14299 (vmvnq_u32): Remove.
14300 (vmvnq_n_u16): Remove.
14301 (vmvnq_n_u32): Remove.
14302 (vmvnq_m_u8): Remove.
14303 (vmvnq_m_s8): Remove.
14304 (vmvnq_m_u16): Remove.
14305 (vmvnq_m_s16): Remove.
14306 (vmvnq_m_u32): Remove.
14307 (vmvnq_m_s32): Remove.
14308 (vmvnq_m_n_s16): Remove.
14309 (vmvnq_m_n_u16): Remove.
14310 (vmvnq_m_n_s32): Remove.
14311 (vmvnq_m_n_u32): Remove.
14312 (vmvnq_x_s8): Remove.
14313 (vmvnq_x_s16): Remove.
14314 (vmvnq_x_s32): Remove.
14315 (vmvnq_x_u8): Remove.
14316 (vmvnq_x_u16): Remove.
14317 (vmvnq_x_u32): Remove.
14318 (vmvnq_x_n_s16): Remove.
14319 (vmvnq_x_n_s32): Remove.
14320 (vmvnq_x_n_u16): Remove.
14321 (vmvnq_x_n_u32): Remove.
14322 (__arm_vmvnq_s8): Remove.
14323 (__arm_vmvnq_s16): Remove.
14324 (__arm_vmvnq_s32): Remove.
14325 (__arm_vmvnq_n_s16): Remove.
14326 (__arm_vmvnq_n_s32): Remove.
14327 (__arm_vmvnq_u8): Remove.
14328 (__arm_vmvnq_u16): Remove.
14329 (__arm_vmvnq_u32): Remove.
14330 (__arm_vmvnq_n_u16): Remove.
14331 (__arm_vmvnq_n_u32): Remove.
14332 (__arm_vmvnq_m_u8): Remove.
14333 (__arm_vmvnq_m_s8): Remove.
14334 (__arm_vmvnq_m_u16): Remove.
14335 (__arm_vmvnq_m_s16): Remove.
14336 (__arm_vmvnq_m_u32): Remove.
14337 (__arm_vmvnq_m_s32): Remove.
14338 (__arm_vmvnq_m_n_s16): Remove.
14339 (__arm_vmvnq_m_n_u16): Remove.
14340 (__arm_vmvnq_m_n_s32): Remove.
14341 (__arm_vmvnq_m_n_u32): Remove.
14342 (__arm_vmvnq_x_s8): Remove.
14343 (__arm_vmvnq_x_s16): Remove.
14344 (__arm_vmvnq_x_s32): Remove.
14345 (__arm_vmvnq_x_u8): Remove.
14346 (__arm_vmvnq_x_u16): Remove.
14347 (__arm_vmvnq_x_u32): Remove.
14348 (__arm_vmvnq_x_n_s16): Remove.
14349 (__arm_vmvnq_x_n_s32): Remove.
14350 (__arm_vmvnq_x_n_u16): Remove.
14351 (__arm_vmvnq_x_n_u32): Remove.
14352 (__arm_vmvnq): Remove.
14353 (__arm_vmvnq_m): Remove.
14354 (__arm_vmvnq_x): Remove.
14355
14356 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
14357
14358 * config/arm/iterators.md (mve_insn): Add vmvn.
14359 * config/arm/mve.md (mve_vmvnq_n_<supf><mode>): Rename into ...
14360 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
14361 (mve_vmvnq_m_<supf><mode>): Rename into ...
14362 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
14363 (mve_vmvnq_m_n_<supf><mode>): Rename into ...
14364 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
14365
14366 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
14367
14368 * config/arm/arm-mve-builtins-shapes.cc (mvn): New.
14369 * config/arm/arm-mve-builtins-shapes.h (mvn): New.
14370
14371 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
14372
14373 * config/arm/arm-mve-builtins-base.cc (vbrsrq): New.
14374 * config/arm/arm-mve-builtins-base.def (vbrsrq): New.
14375 * config/arm/arm-mve-builtins-base.h (vbrsrq): New.
14376 * config/arm/arm_mve.h (vbrsrq): Remove.
14377 (vbrsrq_m): Remove.
14378 (vbrsrq_x): Remove.
14379 (vbrsrq_n_f16): Remove.
14380 (vbrsrq_n_f32): Remove.
14381 (vbrsrq_n_u8): Remove.
14382 (vbrsrq_n_s8): Remove.
14383 (vbrsrq_n_u16): Remove.
14384 (vbrsrq_n_s16): Remove.
14385 (vbrsrq_n_u32): Remove.
14386 (vbrsrq_n_s32): Remove.
14387 (vbrsrq_m_n_s8): Remove.
14388 (vbrsrq_m_n_s32): Remove.
14389 (vbrsrq_m_n_s16): Remove.
14390 (vbrsrq_m_n_u8): Remove.
14391 (vbrsrq_m_n_u32): Remove.
14392 (vbrsrq_m_n_u16): Remove.
14393 (vbrsrq_m_n_f32): Remove.
14394 (vbrsrq_m_n_f16): Remove.
14395 (vbrsrq_x_n_s8): Remove.
14396 (vbrsrq_x_n_s16): Remove.
14397 (vbrsrq_x_n_s32): Remove.
14398 (vbrsrq_x_n_u8): Remove.
14399 (vbrsrq_x_n_u16): Remove.
14400 (vbrsrq_x_n_u32): Remove.
14401 (vbrsrq_x_n_f16): Remove.
14402 (vbrsrq_x_n_f32): Remove.
14403 (__arm_vbrsrq_n_u8): Remove.
14404 (__arm_vbrsrq_n_s8): Remove.
14405 (__arm_vbrsrq_n_u16): Remove.
14406 (__arm_vbrsrq_n_s16): Remove.
14407 (__arm_vbrsrq_n_u32): Remove.
14408 (__arm_vbrsrq_n_s32): Remove.
14409 (__arm_vbrsrq_m_n_s8): Remove.
14410 (__arm_vbrsrq_m_n_s32): Remove.
14411 (__arm_vbrsrq_m_n_s16): Remove.
14412 (__arm_vbrsrq_m_n_u8): Remove.
14413 (__arm_vbrsrq_m_n_u32): Remove.
14414 (__arm_vbrsrq_m_n_u16): Remove.
14415 (__arm_vbrsrq_x_n_s8): Remove.
14416 (__arm_vbrsrq_x_n_s16): Remove.
14417 (__arm_vbrsrq_x_n_s32): Remove.
14418 (__arm_vbrsrq_x_n_u8): Remove.
14419 (__arm_vbrsrq_x_n_u16): Remove.
14420 (__arm_vbrsrq_x_n_u32): Remove.
14421 (__arm_vbrsrq_n_f16): Remove.
14422 (__arm_vbrsrq_n_f32): Remove.
14423 (__arm_vbrsrq_m_n_f32): Remove.
14424 (__arm_vbrsrq_m_n_f16): Remove.
14425 (__arm_vbrsrq_x_n_f16): Remove.
14426 (__arm_vbrsrq_x_n_f32): Remove.
14427 (__arm_vbrsrq): Remove.
14428 (__arm_vbrsrq_m): Remove.
14429 (__arm_vbrsrq_x): Remove.
14430
14431 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
14432
14433 * config/arm/iterators.md (MVE_VBRSR_M_N_FP, MVE_VBRSR_N_FP): New.
14434 (mve_insn): Add vbrsr.
14435 * config/arm/mve.md (mve_vbrsrq_n_f<mode>): Rename into ...
14436 (@mve_<mve_insn>q_n_f<mode>): ... this.
14437 (mve_vbrsrq_n_<supf><mode>): Rename into ...
14438 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
14439 (mve_vbrsrq_m_n_<supf><mode>): Rename into ...
14440 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
14441 (mve_vbrsrq_m_n_f<mode>): Rename into ...
14442 (@mve_<mve_insn>q_m_n_f<mode>): ... this.
14443
14444 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
14445
14446 * config/arm/arm-mve-builtins-shapes.cc (binary_imm32): New.
14447 * config/arm/arm-mve-builtins-shapes.h (binary_imm32): New.
14448
14449 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
14450
14451 * config/arm/arm-mve-builtins-base.cc (vqshluq): New.
14452 * config/arm/arm-mve-builtins-base.def (vqshluq): New.
14453 * config/arm/arm-mve-builtins-base.h (vqshluq): New.
14454 * config/arm/arm_mve.h (vqshluq): Remove.
14455 (vqshluq_m): Remove.
14456 (vqshluq_n_s8): Remove.
14457 (vqshluq_n_s16): Remove.
14458 (vqshluq_n_s32): Remove.
14459 (vqshluq_m_n_s8): Remove.
14460 (vqshluq_m_n_s16): Remove.
14461 (vqshluq_m_n_s32): Remove.
14462 (__arm_vqshluq_n_s8): Remove.
14463 (__arm_vqshluq_n_s16): Remove.
14464 (__arm_vqshluq_n_s32): Remove.
14465 (__arm_vqshluq_m_n_s8): Remove.
14466 (__arm_vqshluq_m_n_s16): Remove.
14467 (__arm_vqshluq_m_n_s32): Remove.
14468 (__arm_vqshluq): Remove.
14469 (__arm_vqshluq_m): Remove.
14470
14471 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
14472
14473 * config/arm/iterators.md (mve_insn): Add vqshlu.
14474 (supf): Add VQSHLUQ_M_N_S, VQSHLUQ_N_S.
14475 (VQSHLUQ_M_N, VQSHLUQ_N): New.
14476 * config/arm/mve.md (mve_vqshluq_n_s<mode>): Change name into ...
14477 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
14478 (mve_vqshluq_m_n_s<mode>): Change name into ...
14479 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
14480
14481 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
14482
14483 * config/arm/arm-mve-builtins-shapes.cc
14484 (binary_lshift_unsigned): New.
14485 * config/arm/arm-mve-builtins-shapes.h
14486 (binary_lshift_unsigned): New.
14487
14488 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
14489
14490 * config/arm/arm-mve-builtins-base.cc (vrmlaldavhaq)
14491 (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
14492 * config/arm/arm-mve-builtins-base.def (vrmlaldavhaq)
14493 (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
14494 * config/arm/arm-mve-builtins-base.h (vrmlaldavhaq)
14495 (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
14496 * config/arm/arm-mve-builtins-functions.h: Handle vrmlaldavhaq,
14497 vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq.
14498 * config/arm/arm_mve.h (vrmlaldavhaq): Remove.
14499 (vrmlaldavhaxq): Remove.
14500 (vrmlsldavhaq): Remove.
14501 (vrmlsldavhaxq): Remove.
14502 (vrmlaldavhaq_p): Remove.
14503 (vrmlaldavhaxq_p): Remove.
14504 (vrmlsldavhaq_p): Remove.
14505 (vrmlsldavhaxq_p): Remove.
14506 (vrmlaldavhaq_s32): Remove.
14507 (vrmlaldavhaq_u32): Remove.
14508 (vrmlaldavhaxq_s32): Remove.
14509 (vrmlsldavhaq_s32): Remove.
14510 (vrmlsldavhaxq_s32): Remove.
14511 (vrmlaldavhaq_p_s32): Remove.
14512 (vrmlaldavhaq_p_u32): Remove.
14513 (vrmlaldavhaxq_p_s32): Remove.
14514 (vrmlsldavhaq_p_s32): Remove.
14515 (vrmlsldavhaxq_p_s32): Remove.
14516 (__arm_vrmlaldavhaq_s32): Remove.
14517 (__arm_vrmlaldavhaq_u32): Remove.
14518 (__arm_vrmlaldavhaxq_s32): Remove.
14519 (__arm_vrmlsldavhaq_s32): Remove.
14520 (__arm_vrmlsldavhaxq_s32): Remove.
14521 (__arm_vrmlaldavhaq_p_s32): Remove.
14522 (__arm_vrmlaldavhaq_p_u32): Remove.
14523 (__arm_vrmlaldavhaxq_p_s32): Remove.
14524 (__arm_vrmlsldavhaq_p_s32): Remove.
14525 (__arm_vrmlsldavhaxq_p_s32): Remove.
14526 (__arm_vrmlaldavhaq): Remove.
14527 (__arm_vrmlaldavhaxq): Remove.
14528 (__arm_vrmlsldavhaq): Remove.
14529 (__arm_vrmlsldavhaxq): Remove.
14530 (__arm_vrmlaldavhaq_p): Remove.
14531 (__arm_vrmlaldavhaxq_p): Remove.
14532 (__arm_vrmlsldavhaq_p): Remove.
14533 (__arm_vrmlsldavhaxq_p): Remove.
14534
14535 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
14536
14537 * config/arm/iterators.md (MVE_VRMLxLDAVHAxQ)
14538 (MVE_VRMLxLDAVHAxQ_P): New.
14539 (mve_insn): Add vrmlaldavha, vrmlaldavhax, vrmlsldavha,
14540 vrmlsldavhax.
14541 (supf): Add VRMLALDAVHAXQ_P_S, VRMLALDAVHAXQ_S, VRMLSLDAVHAQ_P_S,
14542 VRMLSLDAVHAQ_S, VRMLSLDAVHAXQ_P_S, VRMLSLDAVHAXQ_S,
14543 VRMLALDAVHAQ_P_S.
14544 * config/arm/mve.md (mve_vrmlaldavhaq_<supf>v4si)
14545 (mve_vrmlaldavhaxq_sv4si, mve_vrmlsldavhaxq_sv4si)
14546 (mve_vrmlsldavhaq_sv4si): Merge into ...
14547 (@mve_<mve_insn>q_<supf>v4si): ... this.
14548 (mve_vrmlaldavhaq_p_sv4si, mve_vrmlaldavhaq_p_uv4si)
14549 (mve_vrmlaldavhaxq_p_sv4si, mve_vrmlsldavhaq_p_sv4si)
14550 (mve_vrmlsldavhaxq_p_sv4si): Merge into ...
14551 (@mve_<mve_insn>q_p_<supf>v4si): ... this.
14552
14553 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
14554
14555 * config/arm/arm-mve-builtins-base.cc (vqdmullbq, vqdmulltq): New.
14556 * config/arm/arm-mve-builtins-base.def (vqdmullbq, vqdmulltq):
14557 New.
14558 * config/arm/arm-mve-builtins-base.h (vqdmullbq, vqdmulltq): New.
14559 * config/arm/arm_mve.h (vqdmulltq): Remove.
14560 (vqdmullbq): Remove.
14561 (vqdmullbq_m): Remove.
14562 (vqdmulltq_m): Remove.
14563 (vqdmulltq_s16): Remove.
14564 (vqdmulltq_n_s16): Remove.
14565 (vqdmullbq_s16): Remove.
14566 (vqdmullbq_n_s16): Remove.
14567 (vqdmulltq_s32): Remove.
14568 (vqdmulltq_n_s32): Remove.
14569 (vqdmullbq_s32): Remove.
14570 (vqdmullbq_n_s32): Remove.
14571 (vqdmullbq_m_n_s32): Remove.
14572 (vqdmullbq_m_n_s16): Remove.
14573 (vqdmullbq_m_s32): Remove.
14574 (vqdmullbq_m_s16): Remove.
14575 (vqdmulltq_m_n_s32): Remove.
14576 (vqdmulltq_m_n_s16): Remove.
14577 (vqdmulltq_m_s32): Remove.
14578 (vqdmulltq_m_s16): Remove.
14579 (__arm_vqdmulltq_s16): Remove.
14580 (__arm_vqdmulltq_n_s16): Remove.
14581 (__arm_vqdmullbq_s16): Remove.
14582 (__arm_vqdmullbq_n_s16): Remove.
14583 (__arm_vqdmulltq_s32): Remove.
14584 (__arm_vqdmulltq_n_s32): Remove.
14585 (__arm_vqdmullbq_s32): Remove.
14586 (__arm_vqdmullbq_n_s32): Remove.
14587 (__arm_vqdmullbq_m_n_s32): Remove.
14588 (__arm_vqdmullbq_m_n_s16): Remove.
14589 (__arm_vqdmullbq_m_s32): Remove.
14590 (__arm_vqdmullbq_m_s16): Remove.
14591 (__arm_vqdmulltq_m_n_s32): Remove.
14592 (__arm_vqdmulltq_m_n_s16): Remove.
14593 (__arm_vqdmulltq_m_s32): Remove.
14594 (__arm_vqdmulltq_m_s16): Remove.
14595 (__arm_vqdmulltq): Remove.
14596 (__arm_vqdmullbq): Remove.
14597 (__arm_vqdmullbq_m): Remove.
14598 (__arm_vqdmulltq_m): Remove.
14599
14600 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
14601
14602 * config/arm/iterators.md (MVE_VQDMULLxQ, MVE_VQDMULLxQ_M)
14603 (MVE_VQDMULLxQ_M_N, MVE_VQDMULLxQ_N): New.
14604 (mve_insn): Add vqdmullb, vqdmullt.
14605 (supf): Add VQDMULLBQ_S, VQDMULLBQ_M_S, VQDMULLBQ_M_N_S,
14606 VQDMULLBQ_N_S, VQDMULLTQ_S, VQDMULLTQ_M_S, VQDMULLTQ_M_N_S,
14607 VQDMULLTQ_N_S.
14608 * config/arm/mve.md (mve_vqdmullbq_n_s<mode>)
14609 (mve_vqdmulltq_n_s<mode>): Merge into ...
14610 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
14611 (mve_vqdmullbq_s<mode>, mve_vqdmulltq_s<mode>): Merge into ...
14612 (@mve_<mve_insn>q_<supf><mode>): ... this.
14613 (mve_vqdmullbq_m_n_s<mode>, mve_vqdmulltq_m_n_s<mode>): Merge into
14614 ...
14615 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
14616 (mve_vqdmullbq_m_s<mode>, mve_vqdmulltq_m_s<mode>): Merge into ...
14617 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
14618
14619 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
14620
14621 * config/arm/arm-mve-builtins-shapes.cc (binary_widen_opt_n): New.
14622 * config/arm/arm-mve-builtins-shapes.h (binary_widen_opt_n): New.
14623
14624 2023-05-12 Kito Cheng <kito.cheng@sifive.com>
14625
14626 * common/config/riscv/riscv-common.cc (riscv_select_multilib_by_abi):
14627 Drop unused parameter.
14628 (riscv_select_multilib): Ditto.
14629 (riscv_compute_multilib): Update call site of
14630 riscv_select_multilib_by_abi and riscv_select_multilib_by_abi.
14631
14632 2023-05-12 Juzhe Zhong <juzhe.zhong@rivai.ai>
14633
14634 * config/riscv/autovec.md (vec_init<mode><vel>): New pattern.
14635 * config/riscv/riscv-protos.h (expand_vec_init): New function.
14636 * config/riscv/riscv-v.cc (class rvv_builder): New class.
14637 (rvv_builder::can_duplicate_repeating_sequence_p): New function.
14638 (rvv_builder::get_merged_repeating_sequence): Ditto.
14639 (expand_vector_init_insert_elems): Ditto.
14640 (expand_vec_init): Ditto.
14641 * config/riscv/vector-iterators.md: New attribute.
14642
14643 2023-05-12 Haochen Gui <guihaoc@gcc.gnu.org>
14644
14645 * config/rs6000/rs6000-builtins.def
14646 (__builtin_vsx_scalar_insert_exp): Replace bif-pattern from xsiexpdp
14647 to xsiexpdp_di.
14648 (__builtin_vsx_scalar_insert_exp_dp): Replace bif-pattern from
14649 xsiexpdpf to xsiexpdpf_di.
14650 * config/rs6000/vsx.md (xsiexpdp): Rename to...
14651 (xsiexpdp_<mode>): ..., set the mode of second operand to GPR and
14652 replace TARGET_64BIT with TARGET_POWERPC64.
14653 (xsiexpdpf): Rename to...
14654 (xsiexpdpf_<mode>): ..., set the mode of second operand to GPR and
14655 replace TARGET_64BIT with TARGET_POWERPC64.
14656
14657 2023-05-12 Haochen Gui <guihaoc@gcc.gnu.org>
14658
14659 * config/rs6000/rs6000-builtins.def
14660 (__builtin_vsx_scalar_extract_sig): Set return type to const signed
14661 long long.
14662 * config/rs6000/vsx.md (xsxsigdp): Replace TARGET_64BIT with
14663 TARGET_POWERPC64.
14664
14665 2023-05-12 Haochen Gui <guihaoc@gcc.gnu.org>
14666
14667 * config/rs6000/rs6000-builtins.def
14668 (__builtin_vsx_scalar_extract_exp): Set return type to const signed
14669 int and set its bif-pattern to xsxexpdp_si, move it from power9-64
14670 to power9 catalog.
14671 * config/rs6000/vsx.md (xsxexpdp): Rename to ...
14672 (xsxexpdp_<mode>): ..., set mode of operand 0 to GPR and remove
14673 TARGET_64BIT check.
14674 * doc/extend.texi (scalar_extract_exp): Remove 64-bit environment
14675 requirement when it has a 64-bit argument.
14676
14677 2023-05-12 Pan Li <pan2.li@intel.com>
14678 Richard Sandiford <richard.sandiford@arm.com>
14679 Richard Biener <rguenther@suse.de>
14680 Jakub Jelinek <jakub@redhat.com>
14681
14682 * mux-utils.h: Add overload operator == and != for pointer_mux.
14683 * var-tracking.cc: Included mux-utils.h for pointer_tmux.
14684 (decl_or_value): Changed from void * to pointer_mux<tree_node, rtx_def>.
14685 (dv_is_decl_p): Reconciled to the new type, aka pointer_mux.
14686 (dv_as_decl): Ditto.
14687 (dv_as_opaque): Removed due to unnecessary.
14688 (struct variable_hasher): Take decl_or_value as compare_type.
14689 (variable_hasher::equal): Diito.
14690 (dv_from_decl): Reconciled to the new type, aka pointer_mux.
14691 (dv_from_value): Ditto.
14692 (attrs_list_member): Ditto.
14693 (vars_copy): Ditto.
14694 (var_reg_decl_set): Ditto.
14695 (var_reg_delete_and_set): Ditto.
14696 (find_loc_in_1pdv): Ditto.
14697 (canonicalize_values_star): Ditto.
14698 (variable_post_merge_new_vals): Ditto.
14699 (dump_onepart_variable_differences): Ditto.
14700 (variable_different_p): Ditto.
14701 (set_slot_part): Ditto.
14702 (clobber_slot_part): Ditto.
14703 (clobber_variable_part): Ditto.
14704
14705 2023-05-11 mtsamis <manolis.tsamis@vrull.eu>
14706
14707 * match.pd: simplify vector shift + bit_and + multiply.
14708
14709 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
14710
14711 * config/arm/arm-mve-builtins-base.cc (vmlaq, vmlasq, vqdmlahq)
14712 (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
14713 * config/arm/arm-mve-builtins-base.def (vmlaq, vmlasq, vqdmlahq)
14714 (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
14715 * config/arm/arm-mve-builtins-base.h (vmlaq, vmlasq, vqdmlahq)
14716 (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
14717 * config/arm/arm-mve-builtins.cc
14718 (function_instance::has_inactive_argument): Handle vmlaq, vmlasq,
14719 vqdmlahq, vqdmlashq, vqrdmlahq, vqrdmlashq.
14720 * config/arm/arm_mve.h (vqrdmlashq): Remove.
14721 (vqrdmlahq): Remove.
14722 (vqdmlashq): Remove.
14723 (vqdmlahq): Remove.
14724 (vmlasq): Remove.
14725 (vmlaq): Remove.
14726 (vmlaq_m): Remove.
14727 (vmlasq_m): Remove.
14728 (vqdmlashq_m): Remove.
14729 (vqdmlahq_m): Remove.
14730 (vqrdmlahq_m): Remove.
14731 (vqrdmlashq_m): Remove.
14732 (vmlasq_n_u8): Remove.
14733 (vmlaq_n_u8): Remove.
14734 (vqrdmlashq_n_s8): Remove.
14735 (vqrdmlahq_n_s8): Remove.
14736 (vqdmlahq_n_s8): Remove.
14737 (vqdmlashq_n_s8): Remove.
14738 (vmlasq_n_s8): Remove.
14739 (vmlaq_n_s8): Remove.
14740 (vmlasq_n_u16): Remove.
14741 (vmlaq_n_u16): Remove.
14742 (vqrdmlashq_n_s16): Remove.
14743 (vqrdmlahq_n_s16): Remove.
14744 (vqdmlashq_n_s16): Remove.
14745 (vqdmlahq_n_s16): Remove.
14746 (vmlasq_n_s16): Remove.
14747 (vmlaq_n_s16): Remove.
14748 (vmlasq_n_u32): Remove.
14749 (vmlaq_n_u32): Remove.
14750 (vqrdmlashq_n_s32): Remove.
14751 (vqrdmlahq_n_s32): Remove.
14752 (vqdmlashq_n_s32): Remove.
14753 (vqdmlahq_n_s32): Remove.
14754 (vmlasq_n_s32): Remove.
14755 (vmlaq_n_s32): Remove.
14756 (vmlaq_m_n_s8): Remove.
14757 (vmlaq_m_n_s32): Remove.
14758 (vmlaq_m_n_s16): Remove.
14759 (vmlaq_m_n_u8): Remove.
14760 (vmlaq_m_n_u32): Remove.
14761 (vmlaq_m_n_u16): Remove.
14762 (vmlasq_m_n_s8): Remove.
14763 (vmlasq_m_n_s32): Remove.
14764 (vmlasq_m_n_s16): Remove.
14765 (vmlasq_m_n_u8): Remove.
14766 (vmlasq_m_n_u32): Remove.
14767 (vmlasq_m_n_u16): Remove.
14768 (vqdmlashq_m_n_s8): Remove.
14769 (vqdmlashq_m_n_s32): Remove.
14770 (vqdmlashq_m_n_s16): Remove.
14771 (vqdmlahq_m_n_s8): Remove.
14772 (vqdmlahq_m_n_s32): Remove.
14773 (vqdmlahq_m_n_s16): Remove.
14774 (vqrdmlahq_m_n_s8): Remove.
14775 (vqrdmlahq_m_n_s32): Remove.
14776 (vqrdmlahq_m_n_s16): Remove.
14777 (vqrdmlashq_m_n_s8): Remove.
14778 (vqrdmlashq_m_n_s32): Remove.
14779 (vqrdmlashq_m_n_s16): Remove.
14780 (__arm_vmlasq_n_u8): Remove.
14781 (__arm_vmlaq_n_u8): Remove.
14782 (__arm_vqrdmlashq_n_s8): Remove.
14783 (__arm_vqdmlashq_n_s8): Remove.
14784 (__arm_vqrdmlahq_n_s8): Remove.
14785 (__arm_vqdmlahq_n_s8): Remove.
14786 (__arm_vmlasq_n_s8): Remove.
14787 (__arm_vmlaq_n_s8): Remove.
14788 (__arm_vmlasq_n_u16): Remove.
14789 (__arm_vmlaq_n_u16): Remove.
14790 (__arm_vqrdmlashq_n_s16): Remove.
14791 (__arm_vqdmlashq_n_s16): Remove.
14792 (__arm_vqrdmlahq_n_s16): Remove.
14793 (__arm_vqdmlahq_n_s16): Remove.
14794 (__arm_vmlasq_n_s16): Remove.
14795 (__arm_vmlaq_n_s16): Remove.
14796 (__arm_vmlasq_n_u32): Remove.
14797 (__arm_vmlaq_n_u32): Remove.
14798 (__arm_vqrdmlashq_n_s32): Remove.
14799 (__arm_vqdmlashq_n_s32): Remove.
14800 (__arm_vqrdmlahq_n_s32): Remove.
14801 (__arm_vqdmlahq_n_s32): Remove.
14802 (__arm_vmlasq_n_s32): Remove.
14803 (__arm_vmlaq_n_s32): Remove.
14804 (__arm_vmlaq_m_n_s8): Remove.
14805 (__arm_vmlaq_m_n_s32): Remove.
14806 (__arm_vmlaq_m_n_s16): Remove.
14807 (__arm_vmlaq_m_n_u8): Remove.
14808 (__arm_vmlaq_m_n_u32): Remove.
14809 (__arm_vmlaq_m_n_u16): Remove.
14810 (__arm_vmlasq_m_n_s8): Remove.
14811 (__arm_vmlasq_m_n_s32): Remove.
14812 (__arm_vmlasq_m_n_s16): Remove.
14813 (__arm_vmlasq_m_n_u8): Remove.
14814 (__arm_vmlasq_m_n_u32): Remove.
14815 (__arm_vmlasq_m_n_u16): Remove.
14816 (__arm_vqdmlahq_m_n_s8): Remove.
14817 (__arm_vqdmlahq_m_n_s32): Remove.
14818 (__arm_vqdmlahq_m_n_s16): Remove.
14819 (__arm_vqrdmlahq_m_n_s8): Remove.
14820 (__arm_vqrdmlahq_m_n_s32): Remove.
14821 (__arm_vqrdmlahq_m_n_s16): Remove.
14822 (__arm_vqrdmlashq_m_n_s8): Remove.
14823 (__arm_vqrdmlashq_m_n_s32): Remove.
14824 (__arm_vqrdmlashq_m_n_s16): Remove.
14825 (__arm_vqdmlashq_m_n_s8): Remove.
14826 (__arm_vqdmlashq_m_n_s16): Remove.
14827 (__arm_vqdmlashq_m_n_s32): Remove.
14828 (__arm_vmlasq): Remove.
14829 (__arm_vmlaq): Remove.
14830 (__arm_vqrdmlashq): Remove.
14831 (__arm_vqdmlashq): Remove.
14832 (__arm_vqrdmlahq): Remove.
14833 (__arm_vqdmlahq): Remove.
14834 (__arm_vmlaq_m): Remove.
14835 (__arm_vmlasq_m): Remove.
14836 (__arm_vqdmlahq_m): Remove.
14837 (__arm_vqrdmlahq_m): Remove.
14838 (__arm_vqrdmlashq_m): Remove.
14839 (__arm_vqdmlashq_m): Remove.
14840
14841 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
14842
14843 * config/arm/iterators.md (MVE_VMLxQ_N): New.
14844 (mve_insn): Add vmla, vmlas, vqdmlah, vqdmlash, vqrdmlah,
14845 vqrdmlash.
14846 (supf): Add VQDMLAHQ_N_S, VQDMLASHQ_N_S, VQRDMLAHQ_N_S,
14847 VQRDMLASHQ_N_S.
14848 * config/arm/mve.md (mve_vmlaq_n_<supf><mode>)
14849 (mve_vmlasq_n_<supf><mode>, mve_vqdmlahq_n_<supf><mode>)
14850 (mve_vqdmlashq_n_<supf><mode>, mve_vqrdmlahq_n_<supf><mode>)
14851 (mve_vqrdmlashq_n_<supf><mode>): Merge into ...
14852 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
14853
14854 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
14855
14856 * config/arm/arm-mve-builtins-shapes.cc (ternary_n): New.
14857 * config/arm/arm-mve-builtins-shapes.h (ternary_n): New.
14858
14859 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
14860
14861 * config/arm/arm-mve-builtins-base.cc (vqdmladhq, vqdmladhxq)
14862 (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
14863 (vqrdmlsdhxq): New.
14864 * config/arm/arm-mve-builtins-base.def (vqdmladhq, vqdmladhxq)
14865 (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
14866 (vqrdmlsdhxq): New.
14867 * config/arm/arm-mve-builtins-base.h (vqdmladhq, vqdmladhxq)
14868 (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
14869 (vqrdmlsdhxq): New.
14870 * config/arm/arm-mve-builtins.cc
14871 (function_instance::has_inactive_argument): Handle vqrdmladhq,
14872 vqrdmladhxq, vqrdmlsdhq, vqrdmlsdhxq vqdmladhq, vqdmladhxq,
14873 vqdmlsdhq, vqdmlsdhxq.
14874 * config/arm/arm_mve.h (vqrdmlsdhxq): Remove.
14875 (vqrdmlsdhq): Remove.
14876 (vqrdmladhxq): Remove.
14877 (vqrdmladhq): Remove.
14878 (vqdmlsdhxq): Remove.
14879 (vqdmlsdhq): Remove.
14880 (vqdmladhxq): Remove.
14881 (vqdmladhq): Remove.
14882 (vqdmladhq_m): Remove.
14883 (vqdmladhxq_m): Remove.
14884 (vqdmlsdhq_m): Remove.
14885 (vqdmlsdhxq_m): Remove.
14886 (vqrdmladhq_m): Remove.
14887 (vqrdmladhxq_m): Remove.
14888 (vqrdmlsdhq_m): Remove.
14889 (vqrdmlsdhxq_m): Remove.
14890 (vqrdmlsdhxq_s8): Remove.
14891 (vqrdmlsdhq_s8): Remove.
14892 (vqrdmladhxq_s8): Remove.
14893 (vqrdmladhq_s8): Remove.
14894 (vqdmlsdhxq_s8): Remove.
14895 (vqdmlsdhq_s8): Remove.
14896 (vqdmladhxq_s8): Remove.
14897 (vqdmladhq_s8): Remove.
14898 (vqrdmlsdhxq_s16): Remove.
14899 (vqrdmlsdhq_s16): Remove.
14900 (vqrdmladhxq_s16): Remove.
14901 (vqrdmladhq_s16): Remove.
14902 (vqdmlsdhxq_s16): Remove.
14903 (vqdmlsdhq_s16): Remove.
14904 (vqdmladhxq_s16): Remove.
14905 (vqdmladhq_s16): Remove.
14906 (vqrdmlsdhxq_s32): Remove.
14907 (vqrdmlsdhq_s32): Remove.
14908 (vqrdmladhxq_s32): Remove.
14909 (vqrdmladhq_s32): Remove.
14910 (vqdmlsdhxq_s32): Remove.
14911 (vqdmlsdhq_s32): Remove.
14912 (vqdmladhxq_s32): Remove.
14913 (vqdmladhq_s32): Remove.
14914 (vqdmladhq_m_s8): Remove.
14915 (vqdmladhq_m_s32): Remove.
14916 (vqdmladhq_m_s16): Remove.
14917 (vqdmladhxq_m_s8): Remove.
14918 (vqdmladhxq_m_s32): Remove.
14919 (vqdmladhxq_m_s16): Remove.
14920 (vqdmlsdhq_m_s8): Remove.
14921 (vqdmlsdhq_m_s32): Remove.
14922 (vqdmlsdhq_m_s16): Remove.
14923 (vqdmlsdhxq_m_s8): Remove.
14924 (vqdmlsdhxq_m_s32): Remove.
14925 (vqdmlsdhxq_m_s16): Remove.
14926 (vqrdmladhq_m_s8): Remove.
14927 (vqrdmladhq_m_s32): Remove.
14928 (vqrdmladhq_m_s16): Remove.
14929 (vqrdmladhxq_m_s8): Remove.
14930 (vqrdmladhxq_m_s32): Remove.
14931 (vqrdmladhxq_m_s16): Remove.
14932 (vqrdmlsdhq_m_s8): Remove.
14933 (vqrdmlsdhq_m_s32): Remove.
14934 (vqrdmlsdhq_m_s16): Remove.
14935 (vqrdmlsdhxq_m_s8): Remove.
14936 (vqrdmlsdhxq_m_s32): Remove.
14937 (vqrdmlsdhxq_m_s16): Remove.
14938 (__arm_vqrdmlsdhxq_s8): Remove.
14939 (__arm_vqrdmlsdhq_s8): Remove.
14940 (__arm_vqrdmladhxq_s8): Remove.
14941 (__arm_vqrdmladhq_s8): Remove.
14942 (__arm_vqdmlsdhxq_s8): Remove.
14943 (__arm_vqdmlsdhq_s8): Remove.
14944 (__arm_vqdmladhxq_s8): Remove.
14945 (__arm_vqdmladhq_s8): Remove.
14946 (__arm_vqrdmlsdhxq_s16): Remove.
14947 (__arm_vqrdmlsdhq_s16): Remove.
14948 (__arm_vqrdmladhxq_s16): Remove.
14949 (__arm_vqrdmladhq_s16): Remove.
14950 (__arm_vqdmlsdhxq_s16): Remove.
14951 (__arm_vqdmlsdhq_s16): Remove.
14952 (__arm_vqdmladhxq_s16): Remove.
14953 (__arm_vqdmladhq_s16): Remove.
14954 (__arm_vqrdmlsdhxq_s32): Remove.
14955 (__arm_vqrdmlsdhq_s32): Remove.
14956 (__arm_vqrdmladhxq_s32): Remove.
14957 (__arm_vqrdmladhq_s32): Remove.
14958 (__arm_vqdmlsdhxq_s32): Remove.
14959 (__arm_vqdmlsdhq_s32): Remove.
14960 (__arm_vqdmladhxq_s32): Remove.
14961 (__arm_vqdmladhq_s32): Remove.
14962 (__arm_vqdmladhq_m_s8): Remove.
14963 (__arm_vqdmladhq_m_s32): Remove.
14964 (__arm_vqdmladhq_m_s16): Remove.
14965 (__arm_vqdmladhxq_m_s8): Remove.
14966 (__arm_vqdmladhxq_m_s32): Remove.
14967 (__arm_vqdmladhxq_m_s16): Remove.
14968 (__arm_vqdmlsdhq_m_s8): Remove.
14969 (__arm_vqdmlsdhq_m_s32): Remove.
14970 (__arm_vqdmlsdhq_m_s16): Remove.
14971 (__arm_vqdmlsdhxq_m_s8): Remove.
14972 (__arm_vqdmlsdhxq_m_s32): Remove.
14973 (__arm_vqdmlsdhxq_m_s16): Remove.
14974 (__arm_vqrdmladhq_m_s8): Remove.
14975 (__arm_vqrdmladhq_m_s32): Remove.
14976 (__arm_vqrdmladhq_m_s16): Remove.
14977 (__arm_vqrdmladhxq_m_s8): Remove.
14978 (__arm_vqrdmladhxq_m_s32): Remove.
14979 (__arm_vqrdmladhxq_m_s16): Remove.
14980 (__arm_vqrdmlsdhq_m_s8): Remove.
14981 (__arm_vqrdmlsdhq_m_s32): Remove.
14982 (__arm_vqrdmlsdhq_m_s16): Remove.
14983 (__arm_vqrdmlsdhxq_m_s8): Remove.
14984 (__arm_vqrdmlsdhxq_m_s32): Remove.
14985 (__arm_vqrdmlsdhxq_m_s16): Remove.
14986 (__arm_vqrdmlsdhxq): Remove.
14987 (__arm_vqrdmlsdhq): Remove.
14988 (__arm_vqrdmladhxq): Remove.
14989 (__arm_vqrdmladhq): Remove.
14990 (__arm_vqdmlsdhxq): Remove.
14991 (__arm_vqdmlsdhq): Remove.
14992 (__arm_vqdmladhxq): Remove.
14993 (__arm_vqdmladhq): Remove.
14994 (__arm_vqdmladhq_m): Remove.
14995 (__arm_vqdmladhxq_m): Remove.
14996 (__arm_vqdmlsdhq_m): Remove.
14997 (__arm_vqdmlsdhxq_m): Remove.
14998 (__arm_vqrdmladhq_m): Remove.
14999 (__arm_vqrdmladhxq_m): Remove.
15000 (__arm_vqrdmlsdhq_m): Remove.
15001 (__arm_vqrdmlsdhxq_m): Remove.
15002
15003 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
15004
15005 * config/arm/iterators.md (MVE_VQxDMLxDHxQ_S): New.
15006 (mve_insn): Add vqdmladh, vqdmladhx, vqdmlsdh, vqdmlsdhx,
15007 vqrdmladh, vqrdmladhx, vqrdmlsdh, vqrdmlsdhx.
15008 (supf): Add VQDMLADHQ_S, VQDMLADHXQ_S, VQDMLSDHQ_S, VQDMLSDHXQ_S,
15009 VQRDMLADHQ_S,VQRDMLADHXQ_S, VQRDMLSDHQ_S, VQRDMLSDHXQ_S.
15010 * config/arm/mve.md (mve_vqrdmladhq_s<mode>)
15011 (mve_vqrdmladhxq_s<mode>, mve_vqrdmlsdhq_s<mode>)
15012 (mve_vqrdmlsdhxq_s<mode>, mve_vqdmlsdhxq_s<mode>)
15013 (mve_vqdmlsdhq_s<mode>, mve_vqdmladhxq_s<mode>)
15014 (mve_vqdmladhq_s<mode>): Merge into ...
15015 (@mve_<mve_insn>q_<supf><mode>): ... this.
15016
15017 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
15018
15019 * config/arm/arm-mve-builtins-shapes.cc (ternary): New.
15020 * config/arm/arm-mve-builtins-shapes.h (ternary): New.
15021
15022 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
15023
15024 * config/arm/arm-mve-builtins-base.cc (vmlaldavaq, vmlaldavaxq)
15025 (vmlsldavaq, vmlsldavaxq): New.
15026 * config/arm/arm-mve-builtins-base.def (vmlaldavaq, vmlaldavaxq)
15027 (vmlsldavaq, vmlsldavaxq): New.
15028 * config/arm/arm-mve-builtins-base.h (vmlaldavaq, vmlaldavaxq)
15029 (vmlsldavaq, vmlsldavaxq): New.
15030 * config/arm/arm_mve.h (vmlaldavaq): Remove.
15031 (vmlaldavaxq): Remove.
15032 (vmlsldavaq): Remove.
15033 (vmlsldavaxq): Remove.
15034 (vmlaldavaq_p): Remove.
15035 (vmlaldavaxq_p): Remove.
15036 (vmlsldavaq_p): Remove.
15037 (vmlsldavaxq_p): Remove.
15038 (vmlaldavaq_s16): Remove.
15039 (vmlaldavaxq_s16): Remove.
15040 (vmlsldavaq_s16): Remove.
15041 (vmlsldavaxq_s16): Remove.
15042 (vmlaldavaq_u16): Remove.
15043 (vmlaldavaq_s32): Remove.
15044 (vmlaldavaxq_s32): Remove.
15045 (vmlsldavaq_s32): Remove.
15046 (vmlsldavaxq_s32): Remove.
15047 (vmlaldavaq_u32): Remove.
15048 (vmlaldavaq_p_s32): Remove.
15049 (vmlaldavaq_p_s16): Remove.
15050 (vmlaldavaq_p_u32): Remove.
15051 (vmlaldavaq_p_u16): Remove.
15052 (vmlaldavaxq_p_s32): Remove.
15053 (vmlaldavaxq_p_s16): Remove.
15054 (vmlsldavaq_p_s32): Remove.
15055 (vmlsldavaq_p_s16): Remove.
15056 (vmlsldavaxq_p_s32): Remove.
15057 (vmlsldavaxq_p_s16): Remove.
15058 (__arm_vmlaldavaq_s16): Remove.
15059 (__arm_vmlaldavaxq_s16): Remove.
15060 (__arm_vmlsldavaq_s16): Remove.
15061 (__arm_vmlsldavaxq_s16): Remove.
15062 (__arm_vmlaldavaq_u16): Remove.
15063 (__arm_vmlaldavaq_s32): Remove.
15064 (__arm_vmlaldavaxq_s32): Remove.
15065 (__arm_vmlsldavaq_s32): Remove.
15066 (__arm_vmlsldavaxq_s32): Remove.
15067 (__arm_vmlaldavaq_u32): Remove.
15068 (__arm_vmlaldavaq_p_s32): Remove.
15069 (__arm_vmlaldavaq_p_s16): Remove.
15070 (__arm_vmlaldavaq_p_u32): Remove.
15071 (__arm_vmlaldavaq_p_u16): Remove.
15072 (__arm_vmlaldavaxq_p_s32): Remove.
15073 (__arm_vmlaldavaxq_p_s16): Remove.
15074 (__arm_vmlsldavaq_p_s32): Remove.
15075 (__arm_vmlsldavaq_p_s16): Remove.
15076 (__arm_vmlsldavaxq_p_s32): Remove.
15077 (__arm_vmlsldavaxq_p_s16): Remove.
15078 (__arm_vmlaldavaq): Remove.
15079 (__arm_vmlaldavaxq): Remove.
15080 (__arm_vmlsldavaq): Remove.
15081 (__arm_vmlsldavaxq): Remove.
15082 (__arm_vmlaldavaq_p): Remove.
15083 (__arm_vmlaldavaxq_p): Remove.
15084 (__arm_vmlsldavaq_p): Remove.
15085 (__arm_vmlsldavaxq_p): Remove.
15086
15087 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
15088
15089 * config/arm/iterators.md (MVE_VMLxLDAVAxQ, MVE_VMLxLDAVAxQ_P):
15090 New.
15091 (mve_insn): Add vmlaldava, vmlaldavax, vmlsldava, vmlsldavax.
15092 (supf): Add VMLALDAVAXQ_P_S, VMLALDAVAXQ_S, VMLSLDAVAQ_P_S,
15093 VMLSLDAVAQ_S, VMLSLDAVAXQ_P_S, VMLSLDAVAXQ_S.
15094 * config/arm/mve.md (mve_vmlaldavaq_<supf><mode>)
15095 (mve_vmlsldavaq_s<mode>, mve_vmlsldavaxq_s<mode>)
15096 (mve_vmlaldavaxq_s<mode>): Merge into ...
15097 (@mve_<mve_insn>q_<supf><mode>): ... this.
15098 (mve_vmlaldavaq_p_<supf><mode>, mve_vmlaldavaxq_p_<supf><mode>)
15099 (mve_vmlsldavaq_p_s<mode>, mve_vmlsldavaxq_p_s<mode>): Merge into
15100 ...
15101 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
15102
15103 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
15104
15105 * config/arm/arm-mve-builtins-shapes.cc (binary_acca_int64): New.
15106 * config/arm/arm-mve-builtins-shapes.h (binary_acca_int64): New.
15107
15108 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
15109
15110 * config/arm/arm-mve-builtins-base.cc (vrmlaldavhq, vrmlaldavhxq)
15111 (vrmlsldavhq, vrmlsldavhxq): New.
15112 * config/arm/arm-mve-builtins-base.def (vrmlaldavhq, vrmlaldavhxq)
15113 (vrmlsldavhq, vrmlsldavhxq): New.
15114 * config/arm/arm-mve-builtins-base.h (vrmlaldavhq, vrmlaldavhxq)
15115 (vrmlsldavhq, vrmlsldavhxq): New.
15116 * config/arm/arm-mve-builtins-functions.h
15117 (unspec_mve_function_exact_insn_pred_p): Handle vrmlaldavhq,
15118 vrmlaldavhxq, vrmlsldavhq, vrmlsldavhxq.
15119 * config/arm/arm_mve.h (vrmlaldavhq): Remove.
15120 (vrmlsldavhxq): Remove.
15121 (vrmlsldavhq): Remove.
15122 (vrmlaldavhxq): Remove.
15123 (vrmlaldavhq_p): Remove.
15124 (vrmlaldavhxq_p): Remove.
15125 (vrmlsldavhq_p): Remove.
15126 (vrmlsldavhxq_p): Remove.
15127 (vrmlaldavhq_u32): Remove.
15128 (vrmlsldavhxq_s32): Remove.
15129 (vrmlsldavhq_s32): Remove.
15130 (vrmlaldavhxq_s32): Remove.
15131 (vrmlaldavhq_s32): Remove.
15132 (vrmlaldavhq_p_s32): Remove.
15133 (vrmlaldavhxq_p_s32): Remove.
15134 (vrmlsldavhq_p_s32): Remove.
15135 (vrmlsldavhxq_p_s32): Remove.
15136 (vrmlaldavhq_p_u32): Remove.
15137 (__arm_vrmlaldavhq_u32): Remove.
15138 (__arm_vrmlsldavhxq_s32): Remove.
15139 (__arm_vrmlsldavhq_s32): Remove.
15140 (__arm_vrmlaldavhxq_s32): Remove.
15141 (__arm_vrmlaldavhq_s32): Remove.
15142 (__arm_vrmlaldavhq_p_s32): Remove.
15143 (__arm_vrmlaldavhxq_p_s32): Remove.
15144 (__arm_vrmlsldavhq_p_s32): Remove.
15145 (__arm_vrmlsldavhxq_p_s32): Remove.
15146 (__arm_vrmlaldavhq_p_u32): Remove.
15147 (__arm_vrmlaldavhq): Remove.
15148 (__arm_vrmlsldavhxq): Remove.
15149 (__arm_vrmlsldavhq): Remove.
15150 (__arm_vrmlaldavhxq): Remove.
15151 (__arm_vrmlaldavhq_p): Remove.
15152 (__arm_vrmlaldavhxq_p): Remove.
15153 (__arm_vrmlsldavhq_p): Remove.
15154 (__arm_vrmlsldavhxq_p): Remove.
15155
15156 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
15157
15158 * config/arm/iterators.md (MVE_VRMLxLDAVxQ, MVE_VRMLxLDAVHxQ_P):
15159 New.
15160 (mve_insn): Add vrmlaldavh, vrmlaldavhx, vrmlsldavh, vrmlsldavhx.
15161 (supf): Add VRMLALDAVHXQ_P_S, VRMLALDAVHXQ_S, VRMLSLDAVHQ_P_S,
15162 VRMLSLDAVHQ_S, VRMLSLDAVHXQ_P_S, VRMLSLDAVHXQ_S.
15163 * config/arm/mve.md (mve_vrmlaldavhxq_sv4si)
15164 (mve_vrmlsldavhq_sv4si, mve_vrmlsldavhxq_sv4si)
15165 (mve_vrmlaldavhq_<supf>v4si): Merge into ...
15166 (@mve_<mve_insn>q_<supf>v4si): ... this.
15167 (mve_vrmlaldavhxq_p_sv4si, mve_vrmlsldavhq_p_sv4si)
15168 (mve_vrmlsldavhxq_p_sv4si, mve_vrmlaldavhq_p_<supf>v4si): Merge
15169 into ...
15170 (@mve_<mve_insn>q_p_<supf>v4si): ... this.
15171
15172 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
15173
15174 * config/arm/arm-mve-builtins-base.cc (vmlaldavq, vmlaldavxq)
15175 (vmlsldavq, vmlsldavxq): New.
15176 * config/arm/arm-mve-builtins-base.def (vmlaldavq, vmlaldavxq)
15177 (vmlsldavq, vmlsldavxq): New.
15178 * config/arm/arm-mve-builtins-base.h (vmlaldavq, vmlaldavxq)
15179 (vmlsldavq, vmlsldavxq): New.
15180 * config/arm/arm_mve.h (vmlaldavq): Remove.
15181 (vmlsldavxq): Remove.
15182 (vmlsldavq): Remove.
15183 (vmlaldavxq): Remove.
15184 (vmlaldavq_p): Remove.
15185 (vmlaldavxq_p): Remove.
15186 (vmlsldavq_p): Remove.
15187 (vmlsldavxq_p): Remove.
15188 (vmlaldavq_u16): Remove.
15189 (vmlsldavxq_s16): Remove.
15190 (vmlsldavq_s16): Remove.
15191 (vmlaldavxq_s16): Remove.
15192 (vmlaldavq_s16): Remove.
15193 (vmlaldavq_u32): Remove.
15194 (vmlsldavxq_s32): Remove.
15195 (vmlsldavq_s32): Remove.
15196 (vmlaldavxq_s32): Remove.
15197 (vmlaldavq_s32): Remove.
15198 (vmlaldavq_p_s16): Remove.
15199 (vmlaldavxq_p_s16): Remove.
15200 (vmlsldavq_p_s16): Remove.
15201 (vmlsldavxq_p_s16): Remove.
15202 (vmlaldavq_p_u16): Remove.
15203 (vmlaldavq_p_s32): Remove.
15204 (vmlaldavxq_p_s32): Remove.
15205 (vmlsldavq_p_s32): Remove.
15206 (vmlsldavxq_p_s32): Remove.
15207 (vmlaldavq_p_u32): Remove.
15208 (__arm_vmlaldavq_u16): Remove.
15209 (__arm_vmlsldavxq_s16): Remove.
15210 (__arm_vmlsldavq_s16): Remove.
15211 (__arm_vmlaldavxq_s16): Remove.
15212 (__arm_vmlaldavq_s16): Remove.
15213 (__arm_vmlaldavq_u32): Remove.
15214 (__arm_vmlsldavxq_s32): Remove.
15215 (__arm_vmlsldavq_s32): Remove.
15216 (__arm_vmlaldavxq_s32): Remove.
15217 (__arm_vmlaldavq_s32): Remove.
15218 (__arm_vmlaldavq_p_s16): Remove.
15219 (__arm_vmlaldavxq_p_s16): Remove.
15220 (__arm_vmlsldavq_p_s16): Remove.
15221 (__arm_vmlsldavxq_p_s16): Remove.
15222 (__arm_vmlaldavq_p_u16): Remove.
15223 (__arm_vmlaldavq_p_s32): Remove.
15224 (__arm_vmlaldavxq_p_s32): Remove.
15225 (__arm_vmlsldavq_p_s32): Remove.
15226 (__arm_vmlsldavxq_p_s32): Remove.
15227 (__arm_vmlaldavq_p_u32): Remove.
15228 (__arm_vmlaldavq): Remove.
15229 (__arm_vmlsldavxq): Remove.
15230 (__arm_vmlsldavq): Remove.
15231 (__arm_vmlaldavxq): Remove.
15232 (__arm_vmlaldavq_p): Remove.
15233 (__arm_vmlaldavxq_p): Remove.
15234 (__arm_vmlsldavq_p): Remove.
15235 (__arm_vmlsldavxq_p): Remove.
15236
15237 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
15238
15239 * config/arm/iterators.md (MVE_VMLxLDAVxQ, MVE_VMLxLDAVxQ_P): New.
15240 (mve_insn): Add vmlaldav, vmlaldavx, vmlsldav, vmlsldavx.
15241 (supf): Add VMLALDAVXQ_S, VMLSLDAVQ_S, VMLSLDAVXQ_S,
15242 VMLALDAVXQ_P_S, VMLSLDAVQ_P_S, VMLSLDAVXQ_P_S.
15243 * config/arm/mve.md (mve_vmlaldavq_<supf><mode>)
15244 (mve_vmlaldavxq_s<mode>, mve_vmlsldavq_s<mode>)
15245 (mve_vmlsldavxq_s<mode>): Merge into ...
15246 (@mve_<mve_insn>q_<supf><mode>): ... this.
15247 (mve_vmlaldavq_p_<supf><mode>, mve_vmlaldavxq_p_s<mode>)
15248 (mve_vmlsldavq_p_s<mode>, mve_vmlsldavxq_p_s<mode>): Merge into
15249 ...
15250 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
15251
15252 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
15253
15254 * config/arm/arm-mve-builtins-shapes.cc (binary_acc_int64): New.
15255 * config/arm/arm-mve-builtins-shapes.h (binary_acc_int64): New.
15256
15257 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
15258
15259 * config/arm/arm-mve-builtins-base.cc (vabavq): New.
15260 * config/arm/arm-mve-builtins-base.def (vabavq): New.
15261 * config/arm/arm-mve-builtins-base.h (vabavq): New.
15262 * config/arm/arm_mve.h (vabavq): Remove.
15263 (vabavq_p): Remove.
15264 (vabavq_s8): Remove.
15265 (vabavq_s16): Remove.
15266 (vabavq_s32): Remove.
15267 (vabavq_u8): Remove.
15268 (vabavq_u16): Remove.
15269 (vabavq_u32): Remove.
15270 (vabavq_p_s8): Remove.
15271 (vabavq_p_u8): Remove.
15272 (vabavq_p_s16): Remove.
15273 (vabavq_p_u16): Remove.
15274 (vabavq_p_s32): Remove.
15275 (vabavq_p_u32): Remove.
15276 (__arm_vabavq_s8): Remove.
15277 (__arm_vabavq_s16): Remove.
15278 (__arm_vabavq_s32): Remove.
15279 (__arm_vabavq_u8): Remove.
15280 (__arm_vabavq_u16): Remove.
15281 (__arm_vabavq_u32): Remove.
15282 (__arm_vabavq_p_s8): Remove.
15283 (__arm_vabavq_p_u8): Remove.
15284 (__arm_vabavq_p_s16): Remove.
15285 (__arm_vabavq_p_u16): Remove.
15286 (__arm_vabavq_p_s32): Remove.
15287 (__arm_vabavq_p_u32): Remove.
15288 (__arm_vabavq): Remove.
15289 (__arm_vabavq_p): Remove.
15290
15291 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
15292
15293 * config/arm/iterators.md (mve_insn): Add vabav.
15294 * config/arm/mve.md (mve_vabavq_<supf><mode>): Rename into ...
15295 (@mve_<mve_insn>q_<supf><mode>): ... this,.
15296 (mve_vabavq_p_<supf><mode>): Rename into ...
15297 (@mve_<mve_insn>q_p_<supf><mode>): ... this,.
15298
15299 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
15300
15301 * config/arm/arm-mve-builtins-base.cc (vmladavaxq, vmladavaq)
15302 (vmlsdavaq, vmlsdavaxq): New.
15303 * config/arm/arm-mve-builtins-base.def (vmladavaxq, vmladavaq)
15304 (vmlsdavaq, vmlsdavaxq): New.
15305 * config/arm/arm-mve-builtins-base.h (vmladavaxq, vmladavaq)
15306 (vmlsdavaq, vmlsdavaxq): New.
15307 * config/arm/arm_mve.h (vmladavaq): Remove.
15308 (vmlsdavaxq): Remove.
15309 (vmlsdavaq): Remove.
15310 (vmladavaxq): Remove.
15311 (vmladavaq_p): Remove.
15312 (vmladavaxq_p): Remove.
15313 (vmlsdavaq_p): Remove.
15314 (vmlsdavaxq_p): Remove.
15315 (vmladavaq_u8): Remove.
15316 (vmlsdavaxq_s8): Remove.
15317 (vmlsdavaq_s8): Remove.
15318 (vmladavaxq_s8): Remove.
15319 (vmladavaq_s8): Remove.
15320 (vmladavaq_u16): Remove.
15321 (vmlsdavaxq_s16): Remove.
15322 (vmlsdavaq_s16): Remove.
15323 (vmladavaxq_s16): Remove.
15324 (vmladavaq_s16): Remove.
15325 (vmladavaq_u32): Remove.
15326 (vmlsdavaxq_s32): Remove.
15327 (vmlsdavaq_s32): Remove.
15328 (vmladavaxq_s32): Remove.
15329 (vmladavaq_s32): Remove.
15330 (vmladavaq_p_s8): Remove.
15331 (vmladavaq_p_s32): Remove.
15332 (vmladavaq_p_s16): Remove.
15333 (vmladavaq_p_u8): Remove.
15334 (vmladavaq_p_u32): Remove.
15335 (vmladavaq_p_u16): Remove.
15336 (vmladavaxq_p_s8): Remove.
15337 (vmladavaxq_p_s32): Remove.
15338 (vmladavaxq_p_s16): Remove.
15339 (vmlsdavaq_p_s8): Remove.
15340 (vmlsdavaq_p_s32): Remove.
15341 (vmlsdavaq_p_s16): Remove.
15342 (vmlsdavaxq_p_s8): Remove.
15343 (vmlsdavaxq_p_s32): Remove.
15344 (vmlsdavaxq_p_s16): Remove.
15345 (__arm_vmladavaq_u8): Remove.
15346 (__arm_vmlsdavaxq_s8): Remove.
15347 (__arm_vmlsdavaq_s8): Remove.
15348 (__arm_vmladavaxq_s8): Remove.
15349 (__arm_vmladavaq_s8): Remove.
15350 (__arm_vmladavaq_u16): Remove.
15351 (__arm_vmlsdavaxq_s16): Remove.
15352 (__arm_vmlsdavaq_s16): Remove.
15353 (__arm_vmladavaxq_s16): Remove.
15354 (__arm_vmladavaq_s16): Remove.
15355 (__arm_vmladavaq_u32): Remove.
15356 (__arm_vmlsdavaxq_s32): Remove.
15357 (__arm_vmlsdavaq_s32): Remove.
15358 (__arm_vmladavaxq_s32): Remove.
15359 (__arm_vmladavaq_s32): Remove.
15360 (__arm_vmladavaq_p_s8): Remove.
15361 (__arm_vmladavaq_p_s32): Remove.
15362 (__arm_vmladavaq_p_s16): Remove.
15363 (__arm_vmladavaq_p_u8): Remove.
15364 (__arm_vmladavaq_p_u32): Remove.
15365 (__arm_vmladavaq_p_u16): Remove.
15366 (__arm_vmladavaxq_p_s8): Remove.
15367 (__arm_vmladavaxq_p_s32): Remove.
15368 (__arm_vmladavaxq_p_s16): Remove.
15369 (__arm_vmlsdavaq_p_s8): Remove.
15370 (__arm_vmlsdavaq_p_s32): Remove.
15371 (__arm_vmlsdavaq_p_s16): Remove.
15372 (__arm_vmlsdavaxq_p_s8): Remove.
15373 (__arm_vmlsdavaxq_p_s32): Remove.
15374 (__arm_vmlsdavaxq_p_s16): Remove.
15375 (__arm_vmladavaq): Remove.
15376 (__arm_vmlsdavaxq): Remove.
15377 (__arm_vmlsdavaq): Remove.
15378 (__arm_vmladavaxq): Remove.
15379 (__arm_vmladavaq_p): Remove.
15380 (__arm_vmladavaxq_p): Remove.
15381 (__arm_vmlsdavaq_p): Remove.
15382 (__arm_vmlsdavaxq_p): Remove.
15383
15384 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
15385
15386 * config/arm/arm-mve-builtins-shapes.cc (binary_acca_int32): New.
15387 * config/arm/arm-mve-builtins-shapes.h (binary_acca_int32): New.
15388
15389 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
15390
15391 * config/arm/arm-mve-builtins-base.cc (vmladavq, vmladavxq)
15392 (vmlsdavq, vmlsdavxq): New.
15393 * config/arm/arm-mve-builtins-base.def (vmladavq, vmladavxq)
15394 (vmlsdavq, vmlsdavxq): New.
15395 * config/arm/arm-mve-builtins-base.h (vmladavq, vmladavxq)
15396 (vmlsdavq, vmlsdavxq): New.
15397 * config/arm/arm_mve.h (vmladavq): Remove.
15398 (vmlsdavxq): Remove.
15399 (vmlsdavq): Remove.
15400 (vmladavxq): Remove.
15401 (vmladavq_p): Remove.
15402 (vmlsdavxq_p): Remove.
15403 (vmlsdavq_p): Remove.
15404 (vmladavxq_p): Remove.
15405 (vmladavq_u8): Remove.
15406 (vmlsdavxq_s8): Remove.
15407 (vmlsdavq_s8): Remove.
15408 (vmladavxq_s8): Remove.
15409 (vmladavq_s8): Remove.
15410 (vmladavq_u16): Remove.
15411 (vmlsdavxq_s16): Remove.
15412 (vmlsdavq_s16): Remove.
15413 (vmladavxq_s16): Remove.
15414 (vmladavq_s16): Remove.
15415 (vmladavq_u32): Remove.
15416 (vmlsdavxq_s32): Remove.
15417 (vmlsdavq_s32): Remove.
15418 (vmladavxq_s32): Remove.
15419 (vmladavq_s32): Remove.
15420 (vmladavq_p_u8): Remove.
15421 (vmlsdavxq_p_s8): Remove.
15422 (vmlsdavq_p_s8): Remove.
15423 (vmladavxq_p_s8): Remove.
15424 (vmladavq_p_s8): Remove.
15425 (vmladavq_p_u16): Remove.
15426 (vmlsdavxq_p_s16): Remove.
15427 (vmlsdavq_p_s16): Remove.
15428 (vmladavxq_p_s16): Remove.
15429 (vmladavq_p_s16): Remove.
15430 (vmladavq_p_u32): Remove.
15431 (vmlsdavxq_p_s32): Remove.
15432 (vmlsdavq_p_s32): Remove.
15433 (vmladavxq_p_s32): Remove.
15434 (vmladavq_p_s32): Remove.
15435 (__arm_vmladavq_u8): Remove.
15436 (__arm_vmlsdavxq_s8): Remove.
15437 (__arm_vmlsdavq_s8): Remove.
15438 (__arm_vmladavxq_s8): Remove.
15439 (__arm_vmladavq_s8): Remove.
15440 (__arm_vmladavq_u16): Remove.
15441 (__arm_vmlsdavxq_s16): Remove.
15442 (__arm_vmlsdavq_s16): Remove.
15443 (__arm_vmladavxq_s16): Remove.
15444 (__arm_vmladavq_s16): Remove.
15445 (__arm_vmladavq_u32): Remove.
15446 (__arm_vmlsdavxq_s32): Remove.
15447 (__arm_vmlsdavq_s32): Remove.
15448 (__arm_vmladavxq_s32): Remove.
15449 (__arm_vmladavq_s32): Remove.
15450 (__arm_vmladavq_p_u8): Remove.
15451 (__arm_vmlsdavxq_p_s8): Remove.
15452 (__arm_vmlsdavq_p_s8): Remove.
15453 (__arm_vmladavxq_p_s8): Remove.
15454 (__arm_vmladavq_p_s8): Remove.
15455 (__arm_vmladavq_p_u16): Remove.
15456 (__arm_vmlsdavxq_p_s16): Remove.
15457 (__arm_vmlsdavq_p_s16): Remove.
15458 (__arm_vmladavxq_p_s16): Remove.
15459 (__arm_vmladavq_p_s16): Remove.
15460 (__arm_vmladavq_p_u32): Remove.
15461 (__arm_vmlsdavxq_p_s32): Remove.
15462 (__arm_vmlsdavq_p_s32): Remove.
15463 (__arm_vmladavxq_p_s32): Remove.
15464 (__arm_vmladavq_p_s32): Remove.
15465 (__arm_vmladavq): Remove.
15466 (__arm_vmlsdavxq): Remove.
15467 (__arm_vmlsdavq): Remove.
15468 (__arm_vmladavxq): Remove.
15469 (__arm_vmladavq_p): Remove.
15470 (__arm_vmlsdavxq_p): Remove.
15471 (__arm_vmlsdavq_p): Remove.
15472 (__arm_vmladavxq_p): Remove.
15473
15474 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
15475
15476 * config/arm/iterators.md (MVE_VMLxDAVQ, MVE_VMLxDAVQ_P)
15477 (MVE_VMLxDAVAQ, MVE_VMLxDAVAQ_P): New.
15478 (mve_insn): Add vmladava, vmladavax, vmladav, vmladavx, vmlsdava,
15479 vmlsdavax, vmlsdav, vmlsdavx.
15480 (supf): Add VMLADAVAXQ_P_S, VMLADAVAXQ_S, VMLADAVXQ_P_S,
15481 VMLADAVXQ_S, VMLSDAVAQ_P_S, VMLSDAVAQ_S, VMLSDAVAXQ_P_S,
15482 VMLSDAVAXQ_S, VMLSDAVQ_P_S, VMLSDAVQ_S, VMLSDAVXQ_P_S,
15483 VMLSDAVXQ_S.
15484 * config/arm/mve.md (mve_vmladavq_<supf><mode>)
15485 (mve_vmladavxq_s<mode>, mve_vmlsdavq_s<mode>)
15486 (mve_vmlsdavxq_s<mode>): Merge into ...
15487 (@mve_<mve_insn>q_<supf><mode>): ... this.
15488 (mve_vmlsdavaq_s<mode>, mve_vmladavaxq_s<mode>)
15489 (mve_vmlsdavaxq_s<mode>, mve_vmladavaq_<supf><mode>): Merge into
15490 ...
15491 (@mve_<mve_insn>q_<supf><mode>): ... this.
15492 (mve_vmladavq_p_<supf><mode>, mve_vmladavxq_p_s<mode>)
15493 (mve_vmlsdavq_p_s<mode>, mve_vmlsdavxq_p_s<mode>): Merge into ...
15494 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
15495 (mve_vmladavaq_p_<supf><mode>, mve_vmladavaxq_p_s<mode>)
15496 (mve_vmlsdavaq_p_s<mode>, mve_vmlsdavaxq_p_s<mode>): Merge into
15497 ...
15498 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
15499
15500 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
15501
15502 * config/arm/arm-mve-builtins-shapes.cc (binary_acc_int32): New.
15503 * config/arm/arm-mve-builtins-shapes.h (binary_acc_int32): New.
15504
15505 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
15506
15507 * config/arm/arm-mve-builtins-base.cc (vaddlvaq): New.
15508 * config/arm/arm-mve-builtins-base.def (vaddlvaq): New.
15509 * config/arm/arm-mve-builtins-base.h (vaddlvaq): New.
15510 * config/arm/arm_mve.h (vaddlvaq): Remove.
15511 (vaddlvaq_p): Remove.
15512 (vaddlvaq_u32): Remove.
15513 (vaddlvaq_s32): Remove.
15514 (vaddlvaq_p_s32): Remove.
15515 (vaddlvaq_p_u32): Remove.
15516 (__arm_vaddlvaq_u32): Remove.
15517 (__arm_vaddlvaq_s32): Remove.
15518 (__arm_vaddlvaq_p_s32): Remove.
15519 (__arm_vaddlvaq_p_u32): Remove.
15520 (__arm_vaddlvaq): Remove.
15521 (__arm_vaddlvaq_p): Remove.
15522
15523 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
15524
15525 * config/arm/arm-mve-builtins-shapes.cc (unary_widen_acc): New.
15526 * config/arm/arm-mve-builtins-shapes.h (unary_widen_acc): New.
15527
15528 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
15529
15530 * config/arm/iterators.md (mve_insn): Add vaddlva.
15531 * config/arm/mve.md (mve_vaddlvaq_<supf>v4si): Rename into ...
15532 (@mve_<mve_insn>q_<supf>v4si): ... this.
15533 (mve_vaddlvaq_p_<supf>v4si): Rename into ...
15534 (@mve_<mve_insn>q_p_<supf>v4si): ... this.
15535
15536 2023-05-11 Uros Bizjak <ubizjak@gmail.com>
15537
15538 PR target/109807
15539 * config/i386/i386.cc (ix86_widen_mult_cost):
15540 Handle V4HImode and V2SImode.
15541
15542 2023-05-11 Andrew Pinski <apinski@marvell.com>
15543
15544 * tree-ssa-dce.cc (simple_dce_from_worklist): For ssa names
15545 defined by a phi node with more than one uses, allow for the
15546 only uses are in that same defining statement.
15547
15548 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
15549
15550 * config/riscv/riscv.cc (riscv_const_insns): Add permissible
15551 vector constants.
15552
15553 2023-05-11 Pan Li <pan2.li@intel.com>
15554
15555 * config/riscv/vector.md: Add comments for simplifying to vmset.
15556
15557 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
15558
15559 * config/riscv/autovec.md (<optab><mode>3): Add scalar shift
15560 pattern.
15561 (v<optab><mode>3): Add vector shift pattern.
15562 * config/riscv/vector-iterators.md: New iterator.
15563
15564 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
15565
15566 * config/riscv/autovec.md: Use renamed functions.
15567 * config/riscv/riscv-protos.h (emit_vlmax_op): Rename.
15568 (emit_vlmax_reg_op): To this.
15569 (emit_nonvlmax_op): Rename.
15570 (emit_len_op): To this.
15571 (emit_nonvlmax_binop): Rename.
15572 (emit_len_binop): To this.
15573 * config/riscv/riscv-v.cc (emit_pred_op): Add default parameter.
15574 (emit_pred_binop): Remove vlmax_p.
15575 (emit_vlmax_op): Rename.
15576 (emit_vlmax_reg_op): To this.
15577 (emit_nonvlmax_op): Rename.
15578 (emit_len_op): To this.
15579 (emit_nonvlmax_binop): Rename.
15580 (emit_len_binop): To this.
15581 (sew64_scalar_helper): Use renamed functions.
15582 (expand_tuple_move): Use renamed functions.
15583 * config/riscv/riscv.cc (vector_zero_call_used_regs): Use
15584 renamed functions.
15585 * config/riscv/vector.md: Use renamed functions.
15586
15587 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
15588 Michael Collison <collison@rivosinc.com>
15589
15590 * config/riscv/autovec.md (<optab><mode>3): Add integer binops.
15591 * config/riscv/riscv-protos.h (emit_nonvlmax_binop): Declare.
15592 * config/riscv/riscv-v.cc (emit_pred_op): New function.
15593 (set_expander_dest_and_mask): New function.
15594 (emit_pred_binop): New function.
15595 (emit_nonvlmax_binop): New function.
15596
15597 2023-05-11 Pan Li <pan2.li@intel.com>
15598
15599 * cfgloopmanip.cc (create_empty_loop_on_edge): Add PLUS_EXPR.
15600 * gimple-loop-interchange.cc
15601 (tree_loop_interchange::map_inductions_to_loop): Ditto.
15602 * tree-ssa-loop-ivcanon.cc (create_canonical_iv): Ditto.
15603 * tree-ssa-loop-ivopts.cc (create_new_iv): Ditto.
15604 * tree-ssa-loop-manip.cc (create_iv): Ditto.
15605 (tree_transform_and_unroll_loop): Ditto.
15606 (canonicalize_loop_ivs): Ditto.
15607 * tree-ssa-loop-manip.h (create_iv): Ditto.
15608 * tree-vect-data-refs.cc (vect_create_data_ref_ptr): Ditto.
15609 * tree-vect-loop-manip.cc (vect_set_loop_controls_directly):
15610 Ditto.
15611 (vect_set_loop_condition_normal): Ditto.
15612 * tree-vect-loop.cc (vect_create_epilog_for_reduction): Ditto.
15613 * tree-vect-stmts.cc (vectorizable_store): Ditto.
15614 (vectorizable_load): Ditto.
15615
15616 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
15617
15618 * config/arm/arm-mve-builtins-base.cc (vmovlbq, vmovltq): New.
15619 * config/arm/arm-mve-builtins-base.def (vmovlbq, vmovltq): New.
15620 * config/arm/arm-mve-builtins-base.h (vmovlbq, vmovltq): New.
15621 * config/arm/arm_mve.h (vmovlbq): Remove.
15622 (vmovltq): Remove.
15623 (vmovlbq_m): Remove.
15624 (vmovltq_m): Remove.
15625 (vmovlbq_x): Remove.
15626 (vmovltq_x): Remove.
15627 (vmovlbq_s8): Remove.
15628 (vmovlbq_s16): Remove.
15629 (vmovltq_s8): Remove.
15630 (vmovltq_s16): Remove.
15631 (vmovltq_u8): Remove.
15632 (vmovltq_u16): Remove.
15633 (vmovlbq_u8): Remove.
15634 (vmovlbq_u16): Remove.
15635 (vmovlbq_m_s8): Remove.
15636 (vmovltq_m_s8): Remove.
15637 (vmovlbq_m_u8): Remove.
15638 (vmovltq_m_u8): Remove.
15639 (vmovlbq_m_s16): Remove.
15640 (vmovltq_m_s16): Remove.
15641 (vmovlbq_m_u16): Remove.
15642 (vmovltq_m_u16): Remove.
15643 (vmovlbq_x_s8): Remove.
15644 (vmovlbq_x_s16): Remove.
15645 (vmovlbq_x_u8): Remove.
15646 (vmovlbq_x_u16): Remove.
15647 (vmovltq_x_s8): Remove.
15648 (vmovltq_x_s16): Remove.
15649 (vmovltq_x_u8): Remove.
15650 (vmovltq_x_u16): Remove.
15651 (__arm_vmovlbq_s8): Remove.
15652 (__arm_vmovlbq_s16): Remove.
15653 (__arm_vmovltq_s8): Remove.
15654 (__arm_vmovltq_s16): Remove.
15655 (__arm_vmovltq_u8): Remove.
15656 (__arm_vmovltq_u16): Remove.
15657 (__arm_vmovlbq_u8): Remove.
15658 (__arm_vmovlbq_u16): Remove.
15659 (__arm_vmovlbq_m_s8): Remove.
15660 (__arm_vmovltq_m_s8): Remove.
15661 (__arm_vmovlbq_m_u8): Remove.
15662 (__arm_vmovltq_m_u8): Remove.
15663 (__arm_vmovlbq_m_s16): Remove.
15664 (__arm_vmovltq_m_s16): Remove.
15665 (__arm_vmovlbq_m_u16): Remove.
15666 (__arm_vmovltq_m_u16): Remove.
15667 (__arm_vmovlbq_x_s8): Remove.
15668 (__arm_vmovlbq_x_s16): Remove.
15669 (__arm_vmovlbq_x_u8): Remove.
15670 (__arm_vmovlbq_x_u16): Remove.
15671 (__arm_vmovltq_x_s8): Remove.
15672 (__arm_vmovltq_x_s16): Remove.
15673 (__arm_vmovltq_x_u8): Remove.
15674 (__arm_vmovltq_x_u16): Remove.
15675 (__arm_vmovlbq): Remove.
15676 (__arm_vmovltq): Remove.
15677 (__arm_vmovlbq_m): Remove.
15678 (__arm_vmovltq_m): Remove.
15679 (__arm_vmovlbq_x): Remove.
15680 (__arm_vmovltq_x): Remove.
15681
15682 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
15683
15684 * config/arm/arm-mve-builtins-shapes.cc (unary_widen): New.
15685 * config/arm/arm-mve-builtins-shapes.h (unary_widen): New.
15686
15687 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
15688
15689 * config/arm/iterators.md (mve_insn): Add vmovlb, vmovlt.
15690 (VMOVLBQ, VMOVLTQ): Merge into ...
15691 (VMOVLxQ): ... this.
15692 (VMOVLTQ_M, VMOVLBQ_M): Merge into ...
15693 (VMOVLxQ_M): ... this.
15694 * config/arm/mve.md (mve_vmovltq_<supf><mode>)
15695 (mve_vmovlbq_<supf><mode>): Merge into ...
15696 (@mve_<mve_insn>q_<supf><mode>): ... this.
15697 (mve_vmovlbq_m_<supf><mode>, mve_vmovltq_m_<supf><mode>): Merge
15698 into ...
15699 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
15700
15701 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
15702
15703 * config/arm/arm-mve-builtins-base.cc (vaddlvq): New.
15704 * config/arm/arm-mve-builtins-base.def (vaddlvq): New.
15705 * config/arm/arm-mve-builtins-base.h (vaddlvq): New.
15706 * config/arm/arm-mve-builtins-functions.h
15707 (unspec_mve_function_exact_insn_pred_p): Handle vaddlvq.
15708 * config/arm/arm_mve.h (vaddlvq): Remove.
15709 (vaddlvq_p): Remove.
15710 (vaddlvq_s32): Remove.
15711 (vaddlvq_u32): Remove.
15712 (vaddlvq_p_s32): Remove.
15713 (vaddlvq_p_u32): Remove.
15714 (__arm_vaddlvq_s32): Remove.
15715 (__arm_vaddlvq_u32): Remove.
15716 (__arm_vaddlvq_p_s32): Remove.
15717 (__arm_vaddlvq_p_u32): Remove.
15718 (__arm_vaddlvq): Remove.
15719 (__arm_vaddlvq_p): Remove.
15720
15721 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
15722
15723 * config/arm/iterators.md (mve_insn): Add vaddlv.
15724 * config/arm/mve.md (mve_vaddlvq_<supf>v4si): Rename into ...
15725 (@mve_<mve_insn>q_<supf>v4si): ... this.
15726 (mve_vaddlvq_p_<supf>v4si): Rename into ...
15727 (@mve_<mve_insn>q_p_<supf>v4si): ... this.
15728
15729 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
15730
15731 * config/arm/arm-mve-builtins-shapes.cc (unary_acc): New.
15732 * config/arm/arm-mve-builtins-shapes.h (unary_acc): New.
15733
15734 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
15735
15736 * config/arm/arm-mve-builtins-base.cc (vaddvaq): New.
15737 * config/arm/arm-mve-builtins-base.def (vaddvaq): New.
15738 * config/arm/arm-mve-builtins-base.h (vaddvaq): New.
15739 * config/arm/arm_mve.h (vaddvaq): Remove.
15740 (vaddvaq_p): Remove.
15741 (vaddvaq_u8): Remove.
15742 (vaddvaq_s8): Remove.
15743 (vaddvaq_u16): Remove.
15744 (vaddvaq_s16): Remove.
15745 (vaddvaq_u32): Remove.
15746 (vaddvaq_s32): Remove.
15747 (vaddvaq_p_u8): Remove.
15748 (vaddvaq_p_s8): Remove.
15749 (vaddvaq_p_u16): Remove.
15750 (vaddvaq_p_s16): Remove.
15751 (vaddvaq_p_u32): Remove.
15752 (vaddvaq_p_s32): Remove.
15753 (__arm_vaddvaq_u8): Remove.
15754 (__arm_vaddvaq_s8): Remove.
15755 (__arm_vaddvaq_u16): Remove.
15756 (__arm_vaddvaq_s16): Remove.
15757 (__arm_vaddvaq_u32): Remove.
15758 (__arm_vaddvaq_s32): Remove.
15759 (__arm_vaddvaq_p_u8): Remove.
15760 (__arm_vaddvaq_p_s8): Remove.
15761 (__arm_vaddvaq_p_u16): Remove.
15762 (__arm_vaddvaq_p_s16): Remove.
15763 (__arm_vaddvaq_p_u32): Remove.
15764 (__arm_vaddvaq_p_s32): Remove.
15765 (__arm_vaddvaq): Remove.
15766 (__arm_vaddvaq_p): Remove.
15767
15768 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
15769
15770 * config/arm/arm-mve-builtins-shapes.cc (unary_int32_acc): New.
15771 * config/arm/arm-mve-builtins-shapes.h (unary_int32_acc): New.
15772
15773 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
15774
15775 * config/arm/iterators.md (mve_insn): Add vaddva.
15776 * config/arm/mve.md (mve_vaddvaq_<supf><mode>): Rename into ...
15777 (@mve_<mve_insn>q_<supf><mode>): ... this.
15778 (mve_vaddvaq_p_<supf><mode>): Rename into ...
15779 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
15780
15781 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
15782
15783 * config/arm/arm-mve-builtins-base.cc (vaddvq): New.
15784 * config/arm/arm-mve-builtins-base.def (vaddvq): New.
15785 * config/arm/arm-mve-builtins-base.h (vaddvq): New.
15786 * config/arm/arm_mve.h (vaddvq): Remove.
15787 (vaddvq_p): Remove.
15788 (vaddvq_s8): Remove.
15789 (vaddvq_s16): Remove.
15790 (vaddvq_s32): Remove.
15791 (vaddvq_u8): Remove.
15792 (vaddvq_u16): Remove.
15793 (vaddvq_u32): Remove.
15794 (vaddvq_p_u8): Remove.
15795 (vaddvq_p_s8): Remove.
15796 (vaddvq_p_u16): Remove.
15797 (vaddvq_p_s16): Remove.
15798 (vaddvq_p_u32): Remove.
15799 (vaddvq_p_s32): Remove.
15800 (__arm_vaddvq_s8): Remove.
15801 (__arm_vaddvq_s16): Remove.
15802 (__arm_vaddvq_s32): Remove.
15803 (__arm_vaddvq_u8): Remove.
15804 (__arm_vaddvq_u16): Remove.
15805 (__arm_vaddvq_u32): Remove.
15806 (__arm_vaddvq_p_u8): Remove.
15807 (__arm_vaddvq_p_s8): Remove.
15808 (__arm_vaddvq_p_u16): Remove.
15809 (__arm_vaddvq_p_s16): Remove.
15810 (__arm_vaddvq_p_u32): Remove.
15811 (__arm_vaddvq_p_s32): Remove.
15812 (__arm_vaddvq): Remove.
15813 (__arm_vaddvq_p): Remove.
15814
15815 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
15816
15817 * config/arm/arm-mve-builtins-shapes.cc (unary_int32): New.
15818 * config/arm/arm-mve-builtins-shapes.h (unary_int32): New.
15819
15820 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
15821
15822 * config/arm/iterators.md (mve_insn): Add vaddv.
15823 * config/arm/mve.md (@mve_vaddvq_<supf><mode>): Rename into ...
15824 (@mve_<mve_insn>q_<supf><mode>): ... this.
15825 (mve_vaddvq_p_<supf><mode>): Rename into ...
15826 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
15827 * config/arm/vec-common.md: Use gen_mve_q instead of
15828 gen_mve_vaddvq.
15829
15830 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
15831
15832 * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N): New.
15833 (vdupq): New.
15834 * config/arm/arm-mve-builtins-base.def (vdupq): New.
15835 * config/arm/arm-mve-builtins-base.h: (vdupq): New.
15836 * config/arm/arm_mve.h (vdupq_n): Remove.
15837 (vdupq_m): Remove.
15838 (vdupq_n_f16): Remove.
15839 (vdupq_n_f32): Remove.
15840 (vdupq_n_s8): Remove.
15841 (vdupq_n_s16): Remove.
15842 (vdupq_n_s32): Remove.
15843 (vdupq_n_u8): Remove.
15844 (vdupq_n_u16): Remove.
15845 (vdupq_n_u32): Remove.
15846 (vdupq_m_n_u8): Remove.
15847 (vdupq_m_n_s8): Remove.
15848 (vdupq_m_n_u16): Remove.
15849 (vdupq_m_n_s16): Remove.
15850 (vdupq_m_n_u32): Remove.
15851 (vdupq_m_n_s32): Remove.
15852 (vdupq_m_n_f16): Remove.
15853 (vdupq_m_n_f32): Remove.
15854 (vdupq_x_n_s8): Remove.
15855 (vdupq_x_n_s16): Remove.
15856 (vdupq_x_n_s32): Remove.
15857 (vdupq_x_n_u8): Remove.
15858 (vdupq_x_n_u16): Remove.
15859 (vdupq_x_n_u32): Remove.
15860 (vdupq_x_n_f16): Remove.
15861 (vdupq_x_n_f32): Remove.
15862 (__arm_vdupq_n_s8): Remove.
15863 (__arm_vdupq_n_s16): Remove.
15864 (__arm_vdupq_n_s32): Remove.
15865 (__arm_vdupq_n_u8): Remove.
15866 (__arm_vdupq_n_u16): Remove.
15867 (__arm_vdupq_n_u32): Remove.
15868 (__arm_vdupq_m_n_u8): Remove.
15869 (__arm_vdupq_m_n_s8): Remove.
15870 (__arm_vdupq_m_n_u16): Remove.
15871 (__arm_vdupq_m_n_s16): Remove.
15872 (__arm_vdupq_m_n_u32): Remove.
15873 (__arm_vdupq_m_n_s32): Remove.
15874 (__arm_vdupq_x_n_s8): Remove.
15875 (__arm_vdupq_x_n_s16): Remove.
15876 (__arm_vdupq_x_n_s32): Remove.
15877 (__arm_vdupq_x_n_u8): Remove.
15878 (__arm_vdupq_x_n_u16): Remove.
15879 (__arm_vdupq_x_n_u32): Remove.
15880 (__arm_vdupq_n_f16): Remove.
15881 (__arm_vdupq_n_f32): Remove.
15882 (__arm_vdupq_m_n_f16): Remove.
15883 (__arm_vdupq_m_n_f32): Remove.
15884 (__arm_vdupq_x_n_f16): Remove.
15885 (__arm_vdupq_x_n_f32): Remove.
15886 (__arm_vdupq_n): Remove.
15887 (__arm_vdupq_m): Remove.
15888
15889 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
15890
15891 * config/arm/arm-mve-builtins-shapes.cc (unary_n): New.
15892 * config/arm/arm-mve-builtins-shapes.h (unary_n): New.
15893
15894 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
15895
15896 * config/arm/iterators.md (MVE_FP_M_N_VDUPQ_ONLY)
15897 (MVE_FP_N_VDUPQ_ONLY): New.
15898 (mve_insn): Add vdupq.
15899 * config/arm/mve.md (mve_vdupq_n_f<mode>): Rename into ...
15900 (@mve_<mve_insn>q_n_f<mode>): ... this.
15901 (mve_vdupq_n_<supf><mode>): Rename into ...
15902 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
15903 (mve_vdupq_m_n_<supf><mode>): Rename into ...
15904 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
15905 (mve_vdupq_m_n_f<mode>): Rename into ...
15906 (@mve_<mve_insn>q_m_n_f<mode>): ... this.
15907
15908 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
15909
15910 * config/arm/arm-mve-builtins-base.cc (vrev16q, vrev32q, vrev64q):
15911 New.
15912 * config/arm/arm-mve-builtins-base.def (vrev16q, vrev32q)
15913 (vrev64q): New.
15914 * config/arm/arm-mve-builtins-base.h (vrev16q, vrev32q)
15915 (vrev64q): New.
15916 * config/arm/arm_mve.h (vrev16q): Remove.
15917 (vrev32q): Remove.
15918 (vrev64q): Remove.
15919 (vrev64q_m): Remove.
15920 (vrev16q_m): Remove.
15921 (vrev32q_m): Remove.
15922 (vrev16q_x): Remove.
15923 (vrev32q_x): Remove.
15924 (vrev64q_x): Remove.
15925 (vrev64q_f16): Remove.
15926 (vrev64q_f32): Remove.
15927 (vrev32q_f16): Remove.
15928 (vrev16q_s8): Remove.
15929 (vrev32q_s8): Remove.
15930 (vrev32q_s16): Remove.
15931 (vrev64q_s8): Remove.
15932 (vrev64q_s16): Remove.
15933 (vrev64q_s32): Remove.
15934 (vrev64q_u8): Remove.
15935 (vrev64q_u16): Remove.
15936 (vrev64q_u32): Remove.
15937 (vrev32q_u8): Remove.
15938 (vrev32q_u16): Remove.
15939 (vrev16q_u8): Remove.
15940 (vrev64q_m_u8): Remove.
15941 (vrev64q_m_s8): Remove.
15942 (vrev64q_m_u16): Remove.
15943 (vrev64q_m_s16): Remove.
15944 (vrev64q_m_u32): Remove.
15945 (vrev64q_m_s32): Remove.
15946 (vrev16q_m_s8): Remove.
15947 (vrev32q_m_f16): Remove.
15948 (vrev16q_m_u8): Remove.
15949 (vrev32q_m_s8): Remove.
15950 (vrev64q_m_f16): Remove.
15951 (vrev32q_m_u8): Remove.
15952 (vrev32q_m_s16): Remove.
15953 (vrev64q_m_f32): Remove.
15954 (vrev32q_m_u16): Remove.
15955 (vrev16q_x_s8): Remove.
15956 (vrev16q_x_u8): Remove.
15957 (vrev32q_x_s8): Remove.
15958 (vrev32q_x_s16): Remove.
15959 (vrev32q_x_u8): Remove.
15960 (vrev32q_x_u16): Remove.
15961 (vrev64q_x_s8): Remove.
15962 (vrev64q_x_s16): Remove.
15963 (vrev64q_x_s32): Remove.
15964 (vrev64q_x_u8): Remove.
15965 (vrev64q_x_u16): Remove.
15966 (vrev64q_x_u32): Remove.
15967 (vrev32q_x_f16): Remove.
15968 (vrev64q_x_f16): Remove.
15969 (vrev64q_x_f32): Remove.
15970 (__arm_vrev16q_s8): Remove.
15971 (__arm_vrev32q_s8): Remove.
15972 (__arm_vrev32q_s16): Remove.
15973 (__arm_vrev64q_s8): Remove.
15974 (__arm_vrev64q_s16): Remove.
15975 (__arm_vrev64q_s32): Remove.
15976 (__arm_vrev64q_u8): Remove.
15977 (__arm_vrev64q_u16): Remove.
15978 (__arm_vrev64q_u32): Remove.
15979 (__arm_vrev32q_u8): Remove.
15980 (__arm_vrev32q_u16): Remove.
15981 (__arm_vrev16q_u8): Remove.
15982 (__arm_vrev64q_m_u8): Remove.
15983 (__arm_vrev64q_m_s8): Remove.
15984 (__arm_vrev64q_m_u16): Remove.
15985 (__arm_vrev64q_m_s16): Remove.
15986 (__arm_vrev64q_m_u32): Remove.
15987 (__arm_vrev64q_m_s32): Remove.
15988 (__arm_vrev16q_m_s8): Remove.
15989 (__arm_vrev16q_m_u8): Remove.
15990 (__arm_vrev32q_m_s8): Remove.
15991 (__arm_vrev32q_m_u8): Remove.
15992 (__arm_vrev32q_m_s16): Remove.
15993 (__arm_vrev32q_m_u16): Remove.
15994 (__arm_vrev16q_x_s8): Remove.
15995 (__arm_vrev16q_x_u8): Remove.
15996 (__arm_vrev32q_x_s8): Remove.
15997 (__arm_vrev32q_x_s16): Remove.
15998 (__arm_vrev32q_x_u8): Remove.
15999 (__arm_vrev32q_x_u16): Remove.
16000 (__arm_vrev64q_x_s8): Remove.
16001 (__arm_vrev64q_x_s16): Remove.
16002 (__arm_vrev64q_x_s32): Remove.
16003 (__arm_vrev64q_x_u8): Remove.
16004 (__arm_vrev64q_x_u16): Remove.
16005 (__arm_vrev64q_x_u32): Remove.
16006 (__arm_vrev64q_f16): Remove.
16007 (__arm_vrev64q_f32): Remove.
16008 (__arm_vrev32q_f16): Remove.
16009 (__arm_vrev32q_m_f16): Remove.
16010 (__arm_vrev64q_m_f16): Remove.
16011 (__arm_vrev64q_m_f32): Remove.
16012 (__arm_vrev32q_x_f16): Remove.
16013 (__arm_vrev64q_x_f16): Remove.
16014 (__arm_vrev64q_x_f32): Remove.
16015 (__arm_vrev16q): Remove.
16016 (__arm_vrev32q): Remove.
16017 (__arm_vrev64q): Remove.
16018 (__arm_vrev64q_m): Remove.
16019 (__arm_vrev16q_m): Remove.
16020 (__arm_vrev32q_m): Remove.
16021 (__arm_vrev16q_x): Remove.
16022 (__arm_vrev32q_x): Remove.
16023 (__arm_vrev64q_x): Remove.
16024
16025 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
16026
16027 * config/arm/iterators.md (MVE_V8HF, MVE_V16QI)
16028 (MVE_FP_VREV64Q_ONLY, MVE_FP_M_VREV64Q_ONLY, MVE_FP_VREV32Q_ONLY)
16029 (MVE_FP_M_VREV32Q_ONLY): New iterators.
16030 (mve_insn): Add vrev16q, vrev32q, vrev64q.
16031 * config/arm/mve.md (mve_vrev64q_f<mode>): Rename into ...
16032 (@mve_<mve_insn>q_f<mode>): ... this
16033 (mve_vrev32q_fv8hf): Rename into @mve_<mve_insn>q_f<mode>.
16034 (mve_vrev64q_<supf><mode>): Rename into ...
16035 (@mve_<mve_insn>q_<supf><mode>): ... this.
16036 (mve_vrev32q_<supf><mode>): Rename into
16037 @mve_<mve_insn>q_<supf><mode>.
16038 (mve_vrev16q_<supf>v16qi): Rename into
16039 @mve_<mve_insn>q_<supf><mode>.
16040 (mve_vrev64q_m_<supf><mode>): Rename into
16041 @mve_<mve_insn>q_m_<supf><mode>.
16042 (mve_vrev32q_m_fv8hf): Rename into @mve_<mve_insn>q_m_f<mode>.
16043 (mve_vrev32q_m_<supf><mode>): Rename into
16044 @mve_<mve_insn>q_m_<supf><mode>.
16045 (mve_vrev64q_m_f<mode>): Rename into @mve_<mve_insn>q_m_f<mode>.
16046 (mve_vrev16q_m_<supf>v16qi): Rename into
16047 @mve_<mve_insn>q_m_<supf><mode>.
16048
16049 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
16050
16051 * config/arm/arm-mve-builtins-base.cc (vcmpeqq, vcmpneq, vcmpgeq)
16052 (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
16053 * config/arm/arm-mve-builtins-base.def (vcmpeqq, vcmpneq, vcmpgeq)
16054 (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
16055 * config/arm/arm-mve-builtins-base.h (vcmpeqq, vcmpneq, vcmpgeq)
16056 (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
16057 * config/arm/arm-mve-builtins-functions.h (class
16058 unspec_based_mve_function_exact_insn_vcmp): New.
16059 * config/arm/arm-mve-builtins.cc
16060 (function_instance::has_inactive_argument): Handle vcmp.
16061 * config/arm/arm_mve.h (vcmpneq): Remove.
16062 (vcmphiq): Remove.
16063 (vcmpeqq): Remove.
16064 (vcmpcsq): Remove.
16065 (vcmpltq): Remove.
16066 (vcmpleq): Remove.
16067 (vcmpgtq): Remove.
16068 (vcmpgeq): Remove.
16069 (vcmpneq_m): Remove.
16070 (vcmphiq_m): Remove.
16071 (vcmpeqq_m): Remove.
16072 (vcmpcsq_m): Remove.
16073 (vcmpcsq_m_n): Remove.
16074 (vcmpltq_m): Remove.
16075 (vcmpleq_m): Remove.
16076 (vcmpgtq_m): Remove.
16077 (vcmpgeq_m): Remove.
16078 (vcmpneq_s8): Remove.
16079 (vcmpneq_s16): Remove.
16080 (vcmpneq_s32): Remove.
16081 (vcmpneq_u8): Remove.
16082 (vcmpneq_u16): Remove.
16083 (vcmpneq_u32): Remove.
16084 (vcmpneq_n_u8): Remove.
16085 (vcmphiq_u8): Remove.
16086 (vcmphiq_n_u8): Remove.
16087 (vcmpeqq_u8): Remove.
16088 (vcmpeqq_n_u8): Remove.
16089 (vcmpcsq_u8): Remove.
16090 (vcmpcsq_n_u8): Remove.
16091 (vcmpneq_n_s8): Remove.
16092 (vcmpltq_s8): Remove.
16093 (vcmpltq_n_s8): Remove.
16094 (vcmpleq_s8): Remove.
16095 (vcmpleq_n_s8): Remove.
16096 (vcmpgtq_s8): Remove.
16097 (vcmpgtq_n_s8): Remove.
16098 (vcmpgeq_s8): Remove.
16099 (vcmpgeq_n_s8): Remove.
16100 (vcmpeqq_s8): Remove.
16101 (vcmpeqq_n_s8): Remove.
16102 (vcmpneq_n_u16): Remove.
16103 (vcmphiq_u16): Remove.
16104 (vcmphiq_n_u16): Remove.
16105 (vcmpeqq_u16): Remove.
16106 (vcmpeqq_n_u16): Remove.
16107 (vcmpcsq_u16): Remove.
16108 (vcmpcsq_n_u16): Remove.
16109 (vcmpneq_n_s16): Remove.
16110 (vcmpltq_s16): Remove.
16111 (vcmpltq_n_s16): Remove.
16112 (vcmpleq_s16): Remove.
16113 (vcmpleq_n_s16): Remove.
16114 (vcmpgtq_s16): Remove.
16115 (vcmpgtq_n_s16): Remove.
16116 (vcmpgeq_s16): Remove.
16117 (vcmpgeq_n_s16): Remove.
16118 (vcmpeqq_s16): Remove.
16119 (vcmpeqq_n_s16): Remove.
16120 (vcmpneq_n_u32): Remove.
16121 (vcmphiq_u32): Remove.
16122 (vcmphiq_n_u32): Remove.
16123 (vcmpeqq_u32): Remove.
16124 (vcmpeqq_n_u32): Remove.
16125 (vcmpcsq_u32): Remove.
16126 (vcmpcsq_n_u32): Remove.
16127 (vcmpneq_n_s32): Remove.
16128 (vcmpltq_s32): Remove.
16129 (vcmpltq_n_s32): Remove.
16130 (vcmpleq_s32): Remove.
16131 (vcmpleq_n_s32): Remove.
16132 (vcmpgtq_s32): Remove.
16133 (vcmpgtq_n_s32): Remove.
16134 (vcmpgeq_s32): Remove.
16135 (vcmpgeq_n_s32): Remove.
16136 (vcmpeqq_s32): Remove.
16137 (vcmpeqq_n_s32): Remove.
16138 (vcmpneq_n_f16): Remove.
16139 (vcmpneq_f16): Remove.
16140 (vcmpltq_n_f16): Remove.
16141 (vcmpltq_f16): Remove.
16142 (vcmpleq_n_f16): Remove.
16143 (vcmpleq_f16): Remove.
16144 (vcmpgtq_n_f16): Remove.
16145 (vcmpgtq_f16): Remove.
16146 (vcmpgeq_n_f16): Remove.
16147 (vcmpgeq_f16): Remove.
16148 (vcmpeqq_n_f16): Remove.
16149 (vcmpeqq_f16): Remove.
16150 (vcmpneq_n_f32): Remove.
16151 (vcmpneq_f32): Remove.
16152 (vcmpltq_n_f32): Remove.
16153 (vcmpltq_f32): Remove.
16154 (vcmpleq_n_f32): Remove.
16155 (vcmpleq_f32): Remove.
16156 (vcmpgtq_n_f32): Remove.
16157 (vcmpgtq_f32): Remove.
16158 (vcmpgeq_n_f32): Remove.
16159 (vcmpgeq_f32): Remove.
16160 (vcmpeqq_n_f32): Remove.
16161 (vcmpeqq_f32): Remove.
16162 (vcmpeqq_m_f16): Remove.
16163 (vcmpeqq_m_f32): Remove.
16164 (vcmpneq_m_u8): Remove.
16165 (vcmpneq_m_n_u8): Remove.
16166 (vcmphiq_m_u8): Remove.
16167 (vcmphiq_m_n_u8): Remove.
16168 (vcmpeqq_m_u8): Remove.
16169 (vcmpeqq_m_n_u8): Remove.
16170 (vcmpcsq_m_u8): Remove.
16171 (vcmpcsq_m_n_u8): Remove.
16172 (vcmpneq_m_s8): Remove.
16173 (vcmpneq_m_n_s8): Remove.
16174 (vcmpltq_m_s8): Remove.
16175 (vcmpltq_m_n_s8): Remove.
16176 (vcmpleq_m_s8): Remove.
16177 (vcmpleq_m_n_s8): Remove.
16178 (vcmpgtq_m_s8): Remove.
16179 (vcmpgtq_m_n_s8): Remove.
16180 (vcmpgeq_m_s8): Remove.
16181 (vcmpgeq_m_n_s8): Remove.
16182 (vcmpeqq_m_s8): Remove.
16183 (vcmpeqq_m_n_s8): Remove.
16184 (vcmpneq_m_u16): Remove.
16185 (vcmpneq_m_n_u16): Remove.
16186 (vcmphiq_m_u16): Remove.
16187 (vcmphiq_m_n_u16): Remove.
16188 (vcmpeqq_m_u16): Remove.
16189 (vcmpeqq_m_n_u16): Remove.
16190 (vcmpcsq_m_u16): Remove.
16191 (vcmpcsq_m_n_u16): Remove.
16192 (vcmpneq_m_s16): Remove.
16193 (vcmpneq_m_n_s16): Remove.
16194 (vcmpltq_m_s16): Remove.
16195 (vcmpltq_m_n_s16): Remove.
16196 (vcmpleq_m_s16): Remove.
16197 (vcmpleq_m_n_s16): Remove.
16198 (vcmpgtq_m_s16): Remove.
16199 (vcmpgtq_m_n_s16): Remove.
16200 (vcmpgeq_m_s16): Remove.
16201 (vcmpgeq_m_n_s16): Remove.
16202 (vcmpeqq_m_s16): Remove.
16203 (vcmpeqq_m_n_s16): Remove.
16204 (vcmpneq_m_u32): Remove.
16205 (vcmpneq_m_n_u32): Remove.
16206 (vcmphiq_m_u32): Remove.
16207 (vcmphiq_m_n_u32): Remove.
16208 (vcmpeqq_m_u32): Remove.
16209 (vcmpeqq_m_n_u32): Remove.
16210 (vcmpcsq_m_u32): Remove.
16211 (vcmpcsq_m_n_u32): Remove.
16212 (vcmpneq_m_s32): Remove.
16213 (vcmpneq_m_n_s32): Remove.
16214 (vcmpltq_m_s32): Remove.
16215 (vcmpltq_m_n_s32): Remove.
16216 (vcmpleq_m_s32): Remove.
16217 (vcmpleq_m_n_s32): Remove.
16218 (vcmpgtq_m_s32): Remove.
16219 (vcmpgtq_m_n_s32): Remove.
16220 (vcmpgeq_m_s32): Remove.
16221 (vcmpgeq_m_n_s32): Remove.
16222 (vcmpeqq_m_s32): Remove.
16223 (vcmpeqq_m_n_s32): Remove.
16224 (vcmpeqq_m_n_f16): Remove.
16225 (vcmpgeq_m_f16): Remove.
16226 (vcmpgeq_m_n_f16): Remove.
16227 (vcmpgtq_m_f16): Remove.
16228 (vcmpgtq_m_n_f16): Remove.
16229 (vcmpleq_m_f16): Remove.
16230 (vcmpleq_m_n_f16): Remove.
16231 (vcmpltq_m_f16): Remove.
16232 (vcmpltq_m_n_f16): Remove.
16233 (vcmpneq_m_f16): Remove.
16234 (vcmpneq_m_n_f16): Remove.
16235 (vcmpeqq_m_n_f32): Remove.
16236 (vcmpgeq_m_f32): Remove.
16237 (vcmpgeq_m_n_f32): Remove.
16238 (vcmpgtq_m_f32): Remove.
16239 (vcmpgtq_m_n_f32): Remove.
16240 (vcmpleq_m_f32): Remove.
16241 (vcmpleq_m_n_f32): Remove.
16242 (vcmpltq_m_f32): Remove.
16243 (vcmpltq_m_n_f32): Remove.
16244 (vcmpneq_m_f32): Remove.
16245 (vcmpneq_m_n_f32): Remove.
16246 (__arm_vcmpneq_s8): Remove.
16247 (__arm_vcmpneq_s16): Remove.
16248 (__arm_vcmpneq_s32): Remove.
16249 (__arm_vcmpneq_u8): Remove.
16250 (__arm_vcmpneq_u16): Remove.
16251 (__arm_vcmpneq_u32): Remove.
16252 (__arm_vcmpneq_n_u8): Remove.
16253 (__arm_vcmphiq_u8): Remove.
16254 (__arm_vcmphiq_n_u8): Remove.
16255 (__arm_vcmpeqq_u8): Remove.
16256 (__arm_vcmpeqq_n_u8): Remove.
16257 (__arm_vcmpcsq_u8): Remove.
16258 (__arm_vcmpcsq_n_u8): Remove.
16259 (__arm_vcmpneq_n_s8): Remove.
16260 (__arm_vcmpltq_s8): Remove.
16261 (__arm_vcmpltq_n_s8): Remove.
16262 (__arm_vcmpleq_s8): Remove.
16263 (__arm_vcmpleq_n_s8): Remove.
16264 (__arm_vcmpgtq_s8): Remove.
16265 (__arm_vcmpgtq_n_s8): Remove.
16266 (__arm_vcmpgeq_s8): Remove.
16267 (__arm_vcmpgeq_n_s8): Remove.
16268 (__arm_vcmpeqq_s8): Remove.
16269 (__arm_vcmpeqq_n_s8): Remove.
16270 (__arm_vcmpneq_n_u16): Remove.
16271 (__arm_vcmphiq_u16): Remove.
16272 (__arm_vcmphiq_n_u16): Remove.
16273 (__arm_vcmpeqq_u16): Remove.
16274 (__arm_vcmpeqq_n_u16): Remove.
16275 (__arm_vcmpcsq_u16): Remove.
16276 (__arm_vcmpcsq_n_u16): Remove.
16277 (__arm_vcmpneq_n_s16): Remove.
16278 (__arm_vcmpltq_s16): Remove.
16279 (__arm_vcmpltq_n_s16): Remove.
16280 (__arm_vcmpleq_s16): Remove.
16281 (__arm_vcmpleq_n_s16): Remove.
16282 (__arm_vcmpgtq_s16): Remove.
16283 (__arm_vcmpgtq_n_s16): Remove.
16284 (__arm_vcmpgeq_s16): Remove.
16285 (__arm_vcmpgeq_n_s16): Remove.
16286 (__arm_vcmpeqq_s16): Remove.
16287 (__arm_vcmpeqq_n_s16): Remove.
16288 (__arm_vcmpneq_n_u32): Remove.
16289 (__arm_vcmphiq_u32): Remove.
16290 (__arm_vcmphiq_n_u32): Remove.
16291 (__arm_vcmpeqq_u32): Remove.
16292 (__arm_vcmpeqq_n_u32): Remove.
16293 (__arm_vcmpcsq_u32): Remove.
16294 (__arm_vcmpcsq_n_u32): Remove.
16295 (__arm_vcmpneq_n_s32): Remove.
16296 (__arm_vcmpltq_s32): Remove.
16297 (__arm_vcmpltq_n_s32): Remove.
16298 (__arm_vcmpleq_s32): Remove.
16299 (__arm_vcmpleq_n_s32): Remove.
16300 (__arm_vcmpgtq_s32): Remove.
16301 (__arm_vcmpgtq_n_s32): Remove.
16302 (__arm_vcmpgeq_s32): Remove.
16303 (__arm_vcmpgeq_n_s32): Remove.
16304 (__arm_vcmpeqq_s32): Remove.
16305 (__arm_vcmpeqq_n_s32): Remove.
16306 (__arm_vcmpneq_m_u8): Remove.
16307 (__arm_vcmpneq_m_n_u8): Remove.
16308 (__arm_vcmphiq_m_u8): Remove.
16309 (__arm_vcmphiq_m_n_u8): Remove.
16310 (__arm_vcmpeqq_m_u8): Remove.
16311 (__arm_vcmpeqq_m_n_u8): Remove.
16312 (__arm_vcmpcsq_m_u8): Remove.
16313 (__arm_vcmpcsq_m_n_u8): Remove.
16314 (__arm_vcmpneq_m_s8): Remove.
16315 (__arm_vcmpneq_m_n_s8): Remove.
16316 (__arm_vcmpltq_m_s8): Remove.
16317 (__arm_vcmpltq_m_n_s8): Remove.
16318 (__arm_vcmpleq_m_s8): Remove.
16319 (__arm_vcmpleq_m_n_s8): Remove.
16320 (__arm_vcmpgtq_m_s8): Remove.
16321 (__arm_vcmpgtq_m_n_s8): Remove.
16322 (__arm_vcmpgeq_m_s8): Remove.
16323 (__arm_vcmpgeq_m_n_s8): Remove.
16324 (__arm_vcmpeqq_m_s8): Remove.
16325 (__arm_vcmpeqq_m_n_s8): Remove.
16326 (__arm_vcmpneq_m_u16): Remove.
16327 (__arm_vcmpneq_m_n_u16): Remove.
16328 (__arm_vcmphiq_m_u16): Remove.
16329 (__arm_vcmphiq_m_n_u16): Remove.
16330 (__arm_vcmpeqq_m_u16): Remove.
16331 (__arm_vcmpeqq_m_n_u16): Remove.
16332 (__arm_vcmpcsq_m_u16): Remove.
16333 (__arm_vcmpcsq_m_n_u16): Remove.
16334 (__arm_vcmpneq_m_s16): Remove.
16335 (__arm_vcmpneq_m_n_s16): Remove.
16336 (__arm_vcmpltq_m_s16): Remove.
16337 (__arm_vcmpltq_m_n_s16): Remove.
16338 (__arm_vcmpleq_m_s16): Remove.
16339 (__arm_vcmpleq_m_n_s16): Remove.
16340 (__arm_vcmpgtq_m_s16): Remove.
16341 (__arm_vcmpgtq_m_n_s16): Remove.
16342 (__arm_vcmpgeq_m_s16): Remove.
16343 (__arm_vcmpgeq_m_n_s16): Remove.
16344 (__arm_vcmpeqq_m_s16): Remove.
16345 (__arm_vcmpeqq_m_n_s16): Remove.
16346 (__arm_vcmpneq_m_u32): Remove.
16347 (__arm_vcmpneq_m_n_u32): Remove.
16348 (__arm_vcmphiq_m_u32): Remove.
16349 (__arm_vcmphiq_m_n_u32): Remove.
16350 (__arm_vcmpeqq_m_u32): Remove.
16351 (__arm_vcmpeqq_m_n_u32): Remove.
16352 (__arm_vcmpcsq_m_u32): Remove.
16353 (__arm_vcmpcsq_m_n_u32): Remove.
16354 (__arm_vcmpneq_m_s32): Remove.
16355 (__arm_vcmpneq_m_n_s32): Remove.
16356 (__arm_vcmpltq_m_s32): Remove.
16357 (__arm_vcmpltq_m_n_s32): Remove.
16358 (__arm_vcmpleq_m_s32): Remove.
16359 (__arm_vcmpleq_m_n_s32): Remove.
16360 (__arm_vcmpgtq_m_s32): Remove.
16361 (__arm_vcmpgtq_m_n_s32): Remove.
16362 (__arm_vcmpgeq_m_s32): Remove.
16363 (__arm_vcmpgeq_m_n_s32): Remove.
16364 (__arm_vcmpeqq_m_s32): Remove.
16365 (__arm_vcmpeqq_m_n_s32): Remove.
16366 (__arm_vcmpneq_n_f16): Remove.
16367 (__arm_vcmpneq_f16): Remove.
16368 (__arm_vcmpltq_n_f16): Remove.
16369 (__arm_vcmpltq_f16): Remove.
16370 (__arm_vcmpleq_n_f16): Remove.
16371 (__arm_vcmpleq_f16): Remove.
16372 (__arm_vcmpgtq_n_f16): Remove.
16373 (__arm_vcmpgtq_f16): Remove.
16374 (__arm_vcmpgeq_n_f16): Remove.
16375 (__arm_vcmpgeq_f16): Remove.
16376 (__arm_vcmpeqq_n_f16): Remove.
16377 (__arm_vcmpeqq_f16): Remove.
16378 (__arm_vcmpneq_n_f32): Remove.
16379 (__arm_vcmpneq_f32): Remove.
16380 (__arm_vcmpltq_n_f32): Remove.
16381 (__arm_vcmpltq_f32): Remove.
16382 (__arm_vcmpleq_n_f32): Remove.
16383 (__arm_vcmpleq_f32): Remove.
16384 (__arm_vcmpgtq_n_f32): Remove.
16385 (__arm_vcmpgtq_f32): Remove.
16386 (__arm_vcmpgeq_n_f32): Remove.
16387 (__arm_vcmpgeq_f32): Remove.
16388 (__arm_vcmpeqq_n_f32): Remove.
16389 (__arm_vcmpeqq_f32): Remove.
16390 (__arm_vcmpeqq_m_f16): Remove.
16391 (__arm_vcmpeqq_m_f32): Remove.
16392 (__arm_vcmpeqq_m_n_f16): Remove.
16393 (__arm_vcmpgeq_m_f16): Remove.
16394 (__arm_vcmpgeq_m_n_f16): Remove.
16395 (__arm_vcmpgtq_m_f16): Remove.
16396 (__arm_vcmpgtq_m_n_f16): Remove.
16397 (__arm_vcmpleq_m_f16): Remove.
16398 (__arm_vcmpleq_m_n_f16): Remove.
16399 (__arm_vcmpltq_m_f16): Remove.
16400 (__arm_vcmpltq_m_n_f16): Remove.
16401 (__arm_vcmpneq_m_f16): Remove.
16402 (__arm_vcmpneq_m_n_f16): Remove.
16403 (__arm_vcmpeqq_m_n_f32): Remove.
16404 (__arm_vcmpgeq_m_f32): Remove.
16405 (__arm_vcmpgeq_m_n_f32): Remove.
16406 (__arm_vcmpgtq_m_f32): Remove.
16407 (__arm_vcmpgtq_m_n_f32): Remove.
16408 (__arm_vcmpleq_m_f32): Remove.
16409 (__arm_vcmpleq_m_n_f32): Remove.
16410 (__arm_vcmpltq_m_f32): Remove.
16411 (__arm_vcmpltq_m_n_f32): Remove.
16412 (__arm_vcmpneq_m_f32): Remove.
16413 (__arm_vcmpneq_m_n_f32): Remove.
16414 (__arm_vcmpneq): Remove.
16415 (__arm_vcmphiq): Remove.
16416 (__arm_vcmpeqq): Remove.
16417 (__arm_vcmpcsq): Remove.
16418 (__arm_vcmpltq): Remove.
16419 (__arm_vcmpleq): Remove.
16420 (__arm_vcmpgtq): Remove.
16421 (__arm_vcmpgeq): Remove.
16422 (__arm_vcmpneq_m): Remove.
16423 (__arm_vcmphiq_m): Remove.
16424 (__arm_vcmpeqq_m): Remove.
16425 (__arm_vcmpcsq_m): Remove.
16426 (__arm_vcmpltq_m): Remove.
16427 (__arm_vcmpleq_m): Remove.
16428 (__arm_vcmpgtq_m): Remove.
16429 (__arm_vcmpgeq_m): Remove.
16430
16431 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
16432
16433 * config/arm/arm-mve-builtins-shapes.cc (cmp): New.
16434 * config/arm/arm-mve-builtins-shapes.h (cmp): New.
16435
16436 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
16437
16438 * config/arm/iterators.md (MVE_CMP_M, MVE_CMP_M_F, MVE_CMP_M_N)
16439 (MVE_CMP_M_N_F, mve_cmp_op1): New.
16440 (isu): Add VCMP*
16441 (supf): Likewise.
16442 * config/arm/mve.md (mve_vcmp<mve_cmp_op>q_n_<mode>): Rename into ...
16443 (@mve_vcmp<mve_cmp_op>q_n_<mode>): ... this.
16444 (mve_vcmpeqq_m_f<mode>, mve_vcmpgeq_m_f<mode>)
16445 (mve_vcmpgtq_m_f<mode>, mve_vcmpleq_m_f<mode>)
16446 (mve_vcmpltq_m_f<mode>, mve_vcmpneq_m_f<mode>): Merge into ...
16447 (@mve_vcmp<mve_cmp_op1>q_m_f<mode>): ... this.
16448 (mve_vcmpcsq_m_u<mode>, mve_vcmpeqq_m_<supf><mode>)
16449 (mve_vcmpgeq_m_s<mode>, mve_vcmpgtq_m_s<mode>)
16450 (mve_vcmphiq_m_u<mode>, mve_vcmpleq_m_s<mode>)
16451 (mve_vcmpltq_m_s<mode>, mve_vcmpneq_m_<supf><mode>): Merge into
16452 ...
16453 (@mve_vcmp<mve_cmp_op1>q_m_<supf><mode>): ... this.
16454 (mve_vcmpcsq_m_n_u<mode>, mve_vcmpeqq_m_n_<supf><mode>)
16455 (mve_vcmpgeq_m_n_s<mode>, mve_vcmpgtq_m_n_s<mode>)
16456 (mve_vcmphiq_m_n_u<mode>, mve_vcmpleq_m_n_s<mode>)
16457 (mve_vcmpltq_m_n_s<mode>, mve_vcmpneq_m_n_<supf><mode>): Merge
16458 into ...
16459 (@mve_vcmp<mve_cmp_op1>q_m_n_<supf><mode>): ... this.
16460 (mve_vcmpeqq_m_n_f<mode>, mve_vcmpgeq_m_n_f<mode>)
16461 (mve_vcmpgtq_m_n_f<mode>, mve_vcmpleq_m_n_f<mode>)
16462 (mve_vcmpltq_m_n_f<mode>, mve_vcmpneq_m_n_f<mode>): Merge into ...
16463 (@mve_vcmp<mve_cmp_op1>q_m_n_f<mode>): ... this.
16464
16465 2023-05-11 Roger Sayle <roger@nextmovesoftware.com>
16466
16467 * match.pd <popcount optimizations>: Simplify popcount(X|Y) +
16468 popcount(X&Y) as popcount(X)+popcount(Y). Likewise, simplify
16469 popcount(X)+popcount(Y)-popcount(X&Y) as popcount(X|Y), and
16470 vice versa.
16471
16472 2023-05-11 Roger Sayle <roger@nextmovesoftware.com>
16473
16474 * match.pd <popcount optimizations>: Simplify popcount(bswap(x))
16475 as popcount(x). Simplify popcount(rotate(x,y)) as popcount(x).
16476 <parity optimizations>: Simplify parity(bswap(x)) as parity(x).
16477 Simplify parity(rotate(x,y)) as parity(x).
16478
16479 2023-05-11 Juzhe-Zhong <juzhe.zhong@rivai.ai>
16480
16481 * config/riscv/autovec.md (@vec_series<mode>): New pattern
16482 * config/riscv/riscv-protos.h (expand_vec_series): New function.
16483 * config/riscv/riscv-v.cc (emit_binop): Ditto.
16484 (emit_index_op): Ditto.
16485 (expand_vec_series): Ditto.
16486 (expand_const_vector): Add series vector handling.
16487 * config/riscv/riscv.cc (riscv_const_insns): Enable series vector for testing.
16488
16489 2023-05-10 Roger Sayle <roger@nextmovesoftware.com>
16490
16491 * config/i386/i386.md (*concat<mode><dwi>3_1): Use preferred
16492 [(const_int 0)] idiom, instead of [(clobber (const_int 0))].
16493 (*concat<mode><dwi>3_2): Likewise.
16494 (*concat<mode><dwi>3_3): Likewise.
16495 (*concat<mode><dwi>3_4): Likewise.
16496 (*concat<mode><dwi>3_5): Likewise.
16497 (*concat<mode><dwi>3_6): Likewise.
16498 (*concat<mode><dwi>3_7): Likewise.
16499
16500 2023-05-10 Uros Bizjak <ubizjak@gmail.com>
16501
16502 PR target/92658
16503 * config/i386/mmx.md (sse4_1_<code>v2qiv2si2): New insn pattern.
16504 (<insn>v4qiv4hi2): New expander.
16505 (<insn>v2hiv2si2): Ditto.
16506 (<insn>v2qiv2si2): Ditto.
16507 (<insn>v2qiv2hi2): Ditto.
16508
16509 2023-05-10 Jeff Law <jlaw@ventanamicro>
16510
16511 * config/h8300/constraints.md (Q): Make this a special memory
16512 constraint.
16513 (Zz): Similarly.
16514
16515 2023-05-10 Jakub Jelinek <jakub@redhat.com>
16516
16517 PR fortran/109788
16518 * ipa-prop.cc (ipa_get_callee_param_type): Don't return TREE_VALUE (t)
16519 if t is void_list_node.
16520
16521 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
16522
16523 * config/aarch64/aarch64-simd.md (aarch64_sqmovun<mode>_insn_le): Delete.
16524 (aarch64_sqmovun<mode>_insn_be): Delete.
16525 (aarch64_sqmovun<mode><vczle><vczbe>): New define_insn.
16526 (aarch64_sqmovun<mode>): Delete expander.
16527
16528 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
16529
16530 PR target/99195
16531 * config/aarch64/aarch64-simd.md (aarch64_<PERMUTE:perm_insn><mode>):
16532 Rename to...
16533 (aarch64_<PERMUTE:perm_insn><mode><vczle><vczbe>): ... This.
16534 (aarch64_rev<REVERSE:rev_op><mode>): Rename to...
16535 (aarch64_rev<REVERSE:rev_op><mode><vczle><vczbe>): ... This.
16536
16537 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
16538
16539 PR target/99195
16540 * config/aarch64/aarch64-simd.md (aarch64_<su_optab>q<addsub><mode>):
16541 Rename to...
16542 (aarch64_<su_optab>q<addsub><mode><vczle><vczbe>): ... This.
16543 (aarch64_<sur>qadd<mode>): Rename to...
16544 (aarch64_<sur>qadd<mode><vczle><vczbe>): ... This.
16545
16546 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
16547
16548 * config/aarch64/aarch64-simd.md
16549 (aarch64_<sur>q<r>shr<u>n_n<mode>_insn_le): Delete.
16550 (aarch64_<sur>q<r>shr<u>n_n<mode>_insn_be): Delete.
16551 (aarch64_<sur>q<r>shr<u>n_n<mode>_insn<vczle><vczbe>): New define_insn.
16552 (aarch64_<sur>q<r>shr<u>n_n<mode>): Simplify expander.
16553
16554 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
16555
16556 PR target/99195
16557 * config/aarch64/aarch64-simd.md (aarch64_xtn<mode>_insn_le): Delete.
16558 (aarch64_xtn<mode>_insn_be): Likewise.
16559 (trunc<mode><Vnarrowq>2): Rename to...
16560 (trunc<mode><Vnarrowq>2<vczle><vczbe>): ... This.
16561 (aarch64_xtn<mode>): Move under the above. Just emit the truncate RTL.
16562 (aarch64_<su>qmovn<mode>): Likewise.
16563 (aarch64_<su>qmovn<mode><vczle><vczbe>): New define_insn.
16564 (aarch64_<su>qmovn<mode>_insn_le): Delete.
16565 (aarch64_<su>qmovn<mode>_insn_be): Likewise.
16566
16567 2023-05-10 Li Xu <xuli1@eswincomputing.com>
16568
16569 * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): For vfmv.f.s/vmv.x.s
16570 intruction replace null avl with (const_int 0).
16571
16572 2023-05-10 Juzhe-Zhong <juzhe.zhong@rivai.ai>
16573
16574 * config/riscv/riscv.cc (riscv_support_vector_misalignment): Fix
16575 incorrect codes.
16576
16577 2023-05-10 Juzhe-Zhong <juzhe.zhong@rivai.ai>
16578
16579 PR target/109773
16580 * config/riscv/riscv-vsetvl.cc (avl_source_has_vsetvl_p): New function.
16581 (source_equal_p): Fix dead loop in vsetvl avl checking.
16582
16583 2023-05-10 Hans-Peter Nilsson <hp@axis.com>
16584
16585 * config/cris/cris.cc (cris_postdbr_cmpelim): Correct mode
16586 of modeadjusted_dccr.
16587
16588 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
16589
16590 * config/arm/arm-mve-builtins-base.cc (vmaxaq, vminaq): New.
16591 * config/arm/arm-mve-builtins-base.def (vmaxaq, vminaq): New.
16592 * config/arm/arm-mve-builtins-base.h (vmaxaq, vminaq): New.
16593 * config/arm/arm-mve-builtins.cc
16594 (function_instance::has_inactive_argument): Handle vmaxaq and
16595 vminaq.
16596 * config/arm/arm_mve.h (vminaq): Remove.
16597 (vmaxaq): Remove.
16598 (vminaq_m): Remove.
16599 (vmaxaq_m): Remove.
16600 (vminaq_s8): Remove.
16601 (vmaxaq_s8): Remove.
16602 (vminaq_s16): Remove.
16603 (vmaxaq_s16): Remove.
16604 (vminaq_s32): Remove.
16605 (vmaxaq_s32): Remove.
16606 (vminaq_m_s8): Remove.
16607 (vmaxaq_m_s8): Remove.
16608 (vminaq_m_s16): Remove.
16609 (vmaxaq_m_s16): Remove.
16610 (vminaq_m_s32): Remove.
16611 (vmaxaq_m_s32): Remove.
16612 (__arm_vminaq_s8): Remove.
16613 (__arm_vmaxaq_s8): Remove.
16614 (__arm_vminaq_s16): Remove.
16615 (__arm_vmaxaq_s16): Remove.
16616 (__arm_vminaq_s32): Remove.
16617 (__arm_vmaxaq_s32): Remove.
16618 (__arm_vminaq_m_s8): Remove.
16619 (__arm_vmaxaq_m_s8): Remove.
16620 (__arm_vminaq_m_s16): Remove.
16621 (__arm_vmaxaq_m_s16): Remove.
16622 (__arm_vminaq_m_s32): Remove.
16623 (__arm_vmaxaq_m_s32): Remove.
16624 (__arm_vminaq): Remove.
16625 (__arm_vmaxaq): Remove.
16626 (__arm_vminaq_m): Remove.
16627 (__arm_vmaxaq_m): Remove.
16628
16629 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
16630
16631 * config/arm/iterators.md (MVE_VMAXAVMINAQ, MVE_VMAXAVMINAQ_M):
16632 New.
16633 (mve_insn): Add vmaxa, vmina.
16634 (supf): Add VMAXAQ_S, VMAXAQ_M_S, VMINAQ_S, VMINAQ_M_S.
16635 * config/arm/mve.md (mve_vmaxaq_s<mode>, mve_vminaq_s<mode>):
16636 Merge into ...
16637 (@mve_<mve_insn>q_<supf><mode>): ... this.
16638 (mve_vmaxaq_m_s<mode>, mve_vminaq_m_s<mode>): Merge into ...
16639 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
16640
16641 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
16642
16643 * config/arm/arm-mve-builtins-shapes.cc (binary_maxamina): New.
16644 * config/arm/arm-mve-builtins-shapes.h (binary_maxamina): New.
16645
16646 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
16647
16648 * config/arm/arm-mve-builtins-base.cc (vmaxnmaq, vminnmaq): New.
16649 * config/arm/arm-mve-builtins-base.def (vmaxnmaq, vminnmaq): New.
16650 * config/arm/arm-mve-builtins-base.h (vmaxnmaq, vminnmaq): New.
16651 * config/arm/arm-mve-builtins.cc
16652 (function_instance::has_inactive_argument): Handle vmaxnmaq and
16653 vminnmaq.
16654 * config/arm/arm_mve.h (vminnmaq): Remove.
16655 (vmaxnmaq): Remove.
16656 (vmaxnmaq_m): Remove.
16657 (vminnmaq_m): Remove.
16658 (vminnmaq_f16): Remove.
16659 (vmaxnmaq_f16): Remove.
16660 (vminnmaq_f32): Remove.
16661 (vmaxnmaq_f32): Remove.
16662 (vmaxnmaq_m_f16): Remove.
16663 (vminnmaq_m_f16): Remove.
16664 (vmaxnmaq_m_f32): Remove.
16665 (vminnmaq_m_f32): Remove.
16666 (__arm_vminnmaq_f16): Remove.
16667 (__arm_vmaxnmaq_f16): Remove.
16668 (__arm_vminnmaq_f32): Remove.
16669 (__arm_vmaxnmaq_f32): Remove.
16670 (__arm_vmaxnmaq_m_f16): Remove.
16671 (__arm_vminnmaq_m_f16): Remove.
16672 (__arm_vmaxnmaq_m_f32): Remove.
16673 (__arm_vminnmaq_m_f32): Remove.
16674 (__arm_vminnmaq): Remove.
16675 (__arm_vmaxnmaq): Remove.
16676 (__arm_vmaxnmaq_m): Remove.
16677 (__arm_vminnmaq_m): Remove.
16678
16679 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
16680
16681 * config/arm/iterators.md (MVE_VMAXNMA_VMINNMAQ)
16682 (MVE_VMAXNMA_VMINNMAQ_M): New.
16683 (mve_insn): Add vmaxnma, vminnma.
16684 * config/arm/mve.md (mve_vmaxnmaq_f<mode>, mve_vminnmaq_f<mode>):
16685 Merge into ...
16686 (@mve_<mve_insn>q_f<mode>): ... this.
16687 (mve_vmaxnmaq_m_f<mode>, mve_vminnmaq_m_f<mode>): Merge into ...
16688 (@mve_<mve_insn>q_m_f<mode>): ... this.
16689
16690 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
16691
16692 * config/arm/arm-mve-builtins-base.cc (FUNCTION_PRED_P_F): New.
16693 (vmaxnmavq, vmaxnmvq, vminnmavq, vminnmvq): New.
16694 * config/arm/arm-mve-builtins-base.def (vmaxnmavq, vmaxnmvq)
16695 (vminnmavq, vminnmvq): New.
16696 * config/arm/arm-mve-builtins-base.h (vmaxnmavq, vmaxnmvq)
16697 (vminnmavq, vminnmvq): New.
16698 * config/arm/arm_mve.h (vminnmvq): Remove.
16699 (vminnmavq): Remove.
16700 (vmaxnmvq): Remove.
16701 (vmaxnmavq): Remove.
16702 (vmaxnmavq_p): Remove.
16703 (vmaxnmvq_p): Remove.
16704 (vminnmavq_p): Remove.
16705 (vminnmvq_p): Remove.
16706 (vminnmvq_f16): Remove.
16707 (vminnmavq_f16): Remove.
16708 (vmaxnmvq_f16): Remove.
16709 (vmaxnmavq_f16): Remove.
16710 (vminnmvq_f32): Remove.
16711 (vminnmavq_f32): Remove.
16712 (vmaxnmvq_f32): Remove.
16713 (vmaxnmavq_f32): Remove.
16714 (vmaxnmavq_p_f16): Remove.
16715 (vmaxnmvq_p_f16): Remove.
16716 (vminnmavq_p_f16): Remove.
16717 (vminnmvq_p_f16): Remove.
16718 (vmaxnmavq_p_f32): Remove.
16719 (vmaxnmvq_p_f32): Remove.
16720 (vminnmavq_p_f32): Remove.
16721 (vminnmvq_p_f32): Remove.
16722 (__arm_vminnmvq_f16): Remove.
16723 (__arm_vminnmavq_f16): Remove.
16724 (__arm_vmaxnmvq_f16): Remove.
16725 (__arm_vmaxnmavq_f16): Remove.
16726 (__arm_vminnmvq_f32): Remove.
16727 (__arm_vminnmavq_f32): Remove.
16728 (__arm_vmaxnmvq_f32): Remove.
16729 (__arm_vmaxnmavq_f32): Remove.
16730 (__arm_vmaxnmavq_p_f16): Remove.
16731 (__arm_vmaxnmvq_p_f16): Remove.
16732 (__arm_vminnmavq_p_f16): Remove.
16733 (__arm_vminnmvq_p_f16): Remove.
16734 (__arm_vmaxnmavq_p_f32): Remove.
16735 (__arm_vmaxnmvq_p_f32): Remove.
16736 (__arm_vminnmavq_p_f32): Remove.
16737 (__arm_vminnmvq_p_f32): Remove.
16738 (__arm_vminnmvq): Remove.
16739 (__arm_vminnmavq): Remove.
16740 (__arm_vmaxnmvq): Remove.
16741 (__arm_vmaxnmavq): Remove.
16742 (__arm_vmaxnmavq_p): Remove.
16743 (__arm_vmaxnmvq_p): Remove.
16744 (__arm_vminnmavq_p): Remove.
16745 (__arm_vminnmvq_p): Remove.
16746 (__arm_vmaxnmavq_m): Remove.
16747 (__arm_vmaxnmvq_m): Remove.
16748
16749 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
16750
16751 * config/arm/arm-mve-builtins-functions.h
16752 (unspec_mve_function_exact_insn_pred_p): Use code_for_mve_q_p_f.
16753
16754 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
16755
16756 * config/arm/iterators.md (MVE_VMAXNMxV_MINNMxVQ)
16757 (MVE_VMAXNMxV_MINNMxVQ_P): New.
16758 (mve_insn): Add vmaxnmav, vmaxnmv, vminnmav, vminnmv.
16759 * config/arm/mve.md (mve_vmaxnmavq_f<mode>, mve_vmaxnmvq_f<mode>)
16760 (mve_vminnmavq_f<mode>, mve_vminnmvq_f<mode>): Merge into ...
16761 (@mve_<mve_insn>q_f<mode>): ... this.
16762 (mve_vmaxnmavq_p_f<mode>, mve_vmaxnmvq_p_f<mode>)
16763 (mve_vminnmavq_p_f<mode>, mve_vminnmvq_p_f<mode>): Merge into ...
16764 (@mve_<mve_insn>q_p_f<mode>): ... this.
16765
16766 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
16767
16768 * config/arm/arm-mve-builtins-base.cc (vmaxnmq, vminnmq): New.
16769 * config/arm/arm-mve-builtins-base.def (vmaxnmq, vminnmq): New.
16770 * config/arm/arm-mve-builtins-base.h (vmaxnmq, vminnmq): New.
16771 * config/arm/arm_mve.h (vminnmq): Remove.
16772 (vmaxnmq): Remove.
16773 (vmaxnmq_m): Remove.
16774 (vminnmq_m): Remove.
16775 (vminnmq_x): Remove.
16776 (vmaxnmq_x): Remove.
16777 (vminnmq_f16): Remove.
16778 (vmaxnmq_f16): Remove.
16779 (vminnmq_f32): Remove.
16780 (vmaxnmq_f32): Remove.
16781 (vmaxnmq_m_f32): Remove.
16782 (vmaxnmq_m_f16): Remove.
16783 (vminnmq_m_f32): Remove.
16784 (vminnmq_m_f16): Remove.
16785 (vminnmq_x_f16): Remove.
16786 (vminnmq_x_f32): Remove.
16787 (vmaxnmq_x_f16): Remove.
16788 (vmaxnmq_x_f32): Remove.
16789 (__arm_vminnmq_f16): Remove.
16790 (__arm_vmaxnmq_f16): Remove.
16791 (__arm_vminnmq_f32): Remove.
16792 (__arm_vmaxnmq_f32): Remove.
16793 (__arm_vmaxnmq_m_f32): Remove.
16794 (__arm_vmaxnmq_m_f16): Remove.
16795 (__arm_vminnmq_m_f32): Remove.
16796 (__arm_vminnmq_m_f16): Remove.
16797 (__arm_vminnmq_x_f16): Remove.
16798 (__arm_vminnmq_x_f32): Remove.
16799 (__arm_vmaxnmq_x_f16): Remove.
16800 (__arm_vmaxnmq_x_f32): Remove.
16801 (__arm_vminnmq): Remove.
16802 (__arm_vmaxnmq): Remove.
16803 (__arm_vmaxnmq_m): Remove.
16804 (__arm_vminnmq_m): Remove.
16805 (__arm_vminnmq_x): Remove.
16806 (__arm_vmaxnmq_x): Remove.
16807
16808 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
16809
16810 * config/arm/iterators.md (MAX_MIN_F): New.
16811 (MVE_FP_M_BINARY): Add VMAXNMQ_M_F, VMINNMQ_M_F.
16812 (mve_insn): Add vmaxnm, vminnm.
16813 (max_min_f_str): New.
16814 * config/arm/mve.md (mve_vmaxnmq_f<mode>, mve_vminnmq_f<mode>):
16815 Merge into ...
16816 (@mve_<max_min_f_str>q_f<mode>): ... this.
16817 (mve_vmaxnmq_m_f<mode>, mve_vminnmq_m_f<mode>): Merge into ...
16818 (@mve_<mve_insn>q_m_f<mode>): ... this.
16819
16820 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
16821
16822 * config/arm/vec-common.md (smin<mode>3): Use VDQWH iterator.
16823 (smax<mode>3): Likewise.
16824
16825 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
16826
16827 * config/arm/arm-mve-builtins-base.cc (FUNCTION_PRED_P_S_U)
16828 (FUNCTION_PRED_P_S): New.
16829 (vmaxavq, vminavq, vmaxvq, vminvq): New.
16830 * config/arm/arm-mve-builtins-base.def (vmaxavq, vminavq, vmaxvq)
16831 (vminvq): New.
16832 * config/arm/arm-mve-builtins-base.h (vmaxavq, vminavq, vmaxvq)
16833 (vminvq): New.
16834 * config/arm/arm_mve.h (vminvq): Remove.
16835 (vmaxvq): Remove.
16836 (vminvq_p): Remove.
16837 (vmaxvq_p): Remove.
16838 (vminvq_u8): Remove.
16839 (vmaxvq_u8): Remove.
16840 (vminvq_s8): Remove.
16841 (vmaxvq_s8): Remove.
16842 (vminvq_u16): Remove.
16843 (vmaxvq_u16): Remove.
16844 (vminvq_s16): Remove.
16845 (vmaxvq_s16): Remove.
16846 (vminvq_u32): Remove.
16847 (vmaxvq_u32): Remove.
16848 (vminvq_s32): Remove.
16849 (vmaxvq_s32): Remove.
16850 (vminvq_p_u8): Remove.
16851 (vmaxvq_p_u8): Remove.
16852 (vminvq_p_s8): Remove.
16853 (vmaxvq_p_s8): Remove.
16854 (vminvq_p_u16): Remove.
16855 (vmaxvq_p_u16): Remove.
16856 (vminvq_p_s16): Remove.
16857 (vmaxvq_p_s16): Remove.
16858 (vminvq_p_u32): Remove.
16859 (vmaxvq_p_u32): Remove.
16860 (vminvq_p_s32): Remove.
16861 (vmaxvq_p_s32): Remove.
16862 (__arm_vminvq_u8): Remove.
16863 (__arm_vmaxvq_u8): Remove.
16864 (__arm_vminvq_s8): Remove.
16865 (__arm_vmaxvq_s8): Remove.
16866 (__arm_vminvq_u16): Remove.
16867 (__arm_vmaxvq_u16): Remove.
16868 (__arm_vminvq_s16): Remove.
16869 (__arm_vmaxvq_s16): Remove.
16870 (__arm_vminvq_u32): Remove.
16871 (__arm_vmaxvq_u32): Remove.
16872 (__arm_vminvq_s32): Remove.
16873 (__arm_vmaxvq_s32): Remove.
16874 (__arm_vminvq_p_u8): Remove.
16875 (__arm_vmaxvq_p_u8): Remove.
16876 (__arm_vminvq_p_s8): Remove.
16877 (__arm_vmaxvq_p_s8): Remove.
16878 (__arm_vminvq_p_u16): Remove.
16879 (__arm_vmaxvq_p_u16): Remove.
16880 (__arm_vminvq_p_s16): Remove.
16881 (__arm_vmaxvq_p_s16): Remove.
16882 (__arm_vminvq_p_u32): Remove.
16883 (__arm_vmaxvq_p_u32): Remove.
16884 (__arm_vminvq_p_s32): Remove.
16885 (__arm_vmaxvq_p_s32): Remove.
16886 (__arm_vminvq): Remove.
16887 (__arm_vmaxvq): Remove.
16888 (__arm_vminvq_p): Remove.
16889 (__arm_vmaxvq_p): Remove.
16890 (vminavq): Remove.
16891 (vmaxavq): Remove.
16892 (vminavq_p): Remove.
16893 (vmaxavq_p): Remove.
16894 (vminavq_s8): Remove.
16895 (vmaxavq_s8): Remove.
16896 (vminavq_s16): Remove.
16897 (vmaxavq_s16): Remove.
16898 (vminavq_s32): Remove.
16899 (vmaxavq_s32): Remove.
16900 (vminavq_p_s8): Remove.
16901 (vmaxavq_p_s8): Remove.
16902 (vminavq_p_s16): Remove.
16903 (vmaxavq_p_s16): Remove.
16904 (vminavq_p_s32): Remove.
16905 (vmaxavq_p_s32): Remove.
16906 (__arm_vminavq_s8): Remove.
16907 (__arm_vmaxavq_s8): Remove.
16908 (__arm_vminavq_s16): Remove.
16909 (__arm_vmaxavq_s16): Remove.
16910 (__arm_vminavq_s32): Remove.
16911 (__arm_vmaxavq_s32): Remove.
16912 (__arm_vminavq_p_s8): Remove.
16913 (__arm_vmaxavq_p_s8): Remove.
16914 (__arm_vminavq_p_s16): Remove.
16915 (__arm_vmaxavq_p_s16): Remove.
16916 (__arm_vminavq_p_s32): Remove.
16917 (__arm_vmaxavq_p_s32): Remove.
16918 (__arm_vminavq): Remove.
16919 (__arm_vmaxavq): Remove.
16920 (__arm_vminavq_p): Remove.
16921 (__arm_vmaxavq_p): Remove.
16922
16923 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
16924
16925 * config/arm/iterators.md (MVE_VMAXVQ_VMINVQ, MVE_VMAXVQ_VMINVQ_P): New.
16926 (mve_insn): Add vmaxav, vmaxv, vminav, vminv.
16927 (supf): Add VMAXAVQ_S, VMAXAVQ_P_S, VMINAVQ_S, VMINAVQ_P_S.
16928 * config/arm/mve.md (mve_vmaxavq_s<mode>, mve_vmaxvq_<supf><mode>)
16929 (mve_vminavq_s<mode>, mve_vminvq_<supf><mode>): Merge into ...
16930 (@mve_<mve_insn>q_<supf><mode>): ... this.
16931 (mve_vmaxavq_p_s<mode>, mve_vmaxvq_p_<supf><mode>)
16932 (mve_vminavq_p_s<mode>, mve_vminvq_p_<supf><mode>): Merge into ...
16933 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
16934
16935 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
16936
16937 * config/arm/arm-mve-builtins-functions.h (class
16938 unspec_mve_function_exact_insn_pred_p): New.
16939
16940 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
16941
16942 * config/arm/arm-mve-builtins-shapes.cc (binary_maxavminav): New.
16943 * config/arm/arm-mve-builtins-shapes.h (binary_maxavminav): New.
16944
16945 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
16946
16947 * config/arm/arm-mve-builtins-shapes.cc (binary_maxvminv): New.
16948 * config/arm/arm-mve-builtins-shapes.h (binary_maxvminv): New.
16949
16950 2023-05-09 Richard Sandiford <richard.sandiford@arm.com>
16951
16952 * config/aarch64/aarch64-protos.h (aarch64_adjust_reg_alloc_order):
16953 Declare.
16954 * config/aarch64/aarch64.h (REG_ALLOC_ORDER): Define.
16955 (ADJUST_REG_ALLOC_ORDER): Likewise.
16956 * config/aarch64/aarch64.cc (aarch64_adjust_reg_alloc_order): New
16957 function.
16958 * config/aarch64/aarch64-sve.md (*vcond_mask_<mode><vpred>): Use
16959 Upa rather than Upl for unpredicated movprfx alternatives.
16960
16961 2023-05-09 Jeff Law <jlaw@ventanamicro>
16962
16963 * config/h8300/testcompare.md: Add peephole2 which uses a memory
16964 load to set flags, thus eliminating a compare against zero.
16965
16966 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
16967
16968 * config/arm/arm-mve-builtins-base.cc (vshllbq, vshlltq): New.
16969 * config/arm/arm-mve-builtins-base.def (vshllbq, vshlltq): New.
16970 * config/arm/arm-mve-builtins-base.h (vshllbq, vshlltq): New.
16971 * config/arm/arm_mve.h (vshlltq): Remove.
16972 (vshllbq): Remove.
16973 (vshllbq_m): Remove.
16974 (vshlltq_m): Remove.
16975 (vshllbq_x): Remove.
16976 (vshlltq_x): Remove.
16977 (vshlltq_n_u8): Remove.
16978 (vshllbq_n_u8): Remove.
16979 (vshlltq_n_s8): Remove.
16980 (vshllbq_n_s8): Remove.
16981 (vshlltq_n_u16): Remove.
16982 (vshllbq_n_u16): Remove.
16983 (vshlltq_n_s16): Remove.
16984 (vshllbq_n_s16): Remove.
16985 (vshllbq_m_n_s8): Remove.
16986 (vshllbq_m_n_s16): Remove.
16987 (vshllbq_m_n_u8): Remove.
16988 (vshllbq_m_n_u16): Remove.
16989 (vshlltq_m_n_s8): Remove.
16990 (vshlltq_m_n_s16): Remove.
16991 (vshlltq_m_n_u8): Remove.
16992 (vshlltq_m_n_u16): Remove.
16993 (vshllbq_x_n_s8): Remove.
16994 (vshllbq_x_n_s16): Remove.
16995 (vshllbq_x_n_u8): Remove.
16996 (vshllbq_x_n_u16): Remove.
16997 (vshlltq_x_n_s8): Remove.
16998 (vshlltq_x_n_s16): Remove.
16999 (vshlltq_x_n_u8): Remove.
17000 (vshlltq_x_n_u16): Remove.
17001 (__arm_vshlltq_n_u8): Remove.
17002 (__arm_vshllbq_n_u8): Remove.
17003 (__arm_vshlltq_n_s8): Remove.
17004 (__arm_vshllbq_n_s8): Remove.
17005 (__arm_vshlltq_n_u16): Remove.
17006 (__arm_vshllbq_n_u16): Remove.
17007 (__arm_vshlltq_n_s16): Remove.
17008 (__arm_vshllbq_n_s16): Remove.
17009 (__arm_vshllbq_m_n_s8): Remove.
17010 (__arm_vshllbq_m_n_s16): Remove.
17011 (__arm_vshllbq_m_n_u8): Remove.
17012 (__arm_vshllbq_m_n_u16): Remove.
17013 (__arm_vshlltq_m_n_s8): Remove.
17014 (__arm_vshlltq_m_n_s16): Remove.
17015 (__arm_vshlltq_m_n_u8): Remove.
17016 (__arm_vshlltq_m_n_u16): Remove.
17017 (__arm_vshllbq_x_n_s8): Remove.
17018 (__arm_vshllbq_x_n_s16): Remove.
17019 (__arm_vshllbq_x_n_u8): Remove.
17020 (__arm_vshllbq_x_n_u16): Remove.
17021 (__arm_vshlltq_x_n_s8): Remove.
17022 (__arm_vshlltq_x_n_s16): Remove.
17023 (__arm_vshlltq_x_n_u8): Remove.
17024 (__arm_vshlltq_x_n_u16): Remove.
17025 (__arm_vshlltq): Remove.
17026 (__arm_vshllbq): Remove.
17027 (__arm_vshllbq_m): Remove.
17028 (__arm_vshlltq_m): Remove.
17029 (__arm_vshllbq_x): Remove.
17030 (__arm_vshlltq_x): Remove.
17031
17032 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
17033
17034 * config/arm/iterators.md (mve_insn): Add vshllb, vshllt.
17035 (VSHLLBQ_N, VSHLLTQ_N): Remove.
17036 (VSHLLxQ_N): New.
17037 (VSHLLBQ_M_N, VSHLLTQ_M_N): Remove.
17038 (VSHLLxQ_M_N): New.
17039 * config/arm/mve.md (mve_vshllbq_n_<supf><mode>)
17040 (mve_vshlltq_n_<supf><mode>): Merge into ...
17041 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
17042 (mve_vshllbq_m_n_<supf><mode>, mve_vshlltq_m_n_<supf><mode>):
17043 Merge into ...
17044 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
17045
17046 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
17047
17048 * config/arm/arm-mve-builtins-shapes.cc (binary_widen_n): New.
17049 * config/arm/arm-mve-builtins-shapes.h (binary_widen_n): New.
17050
17051 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
17052
17053 * config/arm/arm-mve-builtins-base.cc (vmovnbq, vmovntq, vqmovnbq)
17054 (vqmovntq, vqmovunbq, vqmovuntq): New.
17055 * config/arm/arm-mve-builtins-base.def (vmovnbq, vmovntq)
17056 (vqmovnbq, vqmovntq, vqmovunbq, vqmovuntq): New.
17057 * config/arm/arm-mve-builtins-base.h (vmovnbq, vmovntq, vqmovnbq)
17058 (vqmovntq, vqmovunbq, vqmovuntq): New.
17059 * config/arm/arm-mve-builtins.cc
17060 (function_instance::has_inactive_argument): Handle vmovnbq,
17061 vmovntq, vqmovnbq, vqmovntq, vqmovunbq, vqmovuntq.
17062 * config/arm/arm_mve.h (vqmovntq): Remove.
17063 (vqmovnbq): Remove.
17064 (vqmovnbq_m): Remove.
17065 (vqmovntq_m): Remove.
17066 (vqmovntq_u16): Remove.
17067 (vqmovnbq_u16): Remove.
17068 (vqmovntq_s16): Remove.
17069 (vqmovnbq_s16): Remove.
17070 (vqmovntq_u32): Remove.
17071 (vqmovnbq_u32): Remove.
17072 (vqmovntq_s32): Remove.
17073 (vqmovnbq_s32): Remove.
17074 (vqmovnbq_m_s16): Remove.
17075 (vqmovntq_m_s16): Remove.
17076 (vqmovnbq_m_u16): Remove.
17077 (vqmovntq_m_u16): Remove.
17078 (vqmovnbq_m_s32): Remove.
17079 (vqmovntq_m_s32): Remove.
17080 (vqmovnbq_m_u32): Remove.
17081 (vqmovntq_m_u32): Remove.
17082 (__arm_vqmovntq_u16): Remove.
17083 (__arm_vqmovnbq_u16): Remove.
17084 (__arm_vqmovntq_s16): Remove.
17085 (__arm_vqmovnbq_s16): Remove.
17086 (__arm_vqmovntq_u32): Remove.
17087 (__arm_vqmovnbq_u32): Remove.
17088 (__arm_vqmovntq_s32): Remove.
17089 (__arm_vqmovnbq_s32): Remove.
17090 (__arm_vqmovnbq_m_s16): Remove.
17091 (__arm_vqmovntq_m_s16): Remove.
17092 (__arm_vqmovnbq_m_u16): Remove.
17093 (__arm_vqmovntq_m_u16): Remove.
17094 (__arm_vqmovnbq_m_s32): Remove.
17095 (__arm_vqmovntq_m_s32): Remove.
17096 (__arm_vqmovnbq_m_u32): Remove.
17097 (__arm_vqmovntq_m_u32): Remove.
17098 (__arm_vqmovntq): Remove.
17099 (__arm_vqmovnbq): Remove.
17100 (__arm_vqmovnbq_m): Remove.
17101 (__arm_vqmovntq_m): Remove.
17102 (vmovntq): Remove.
17103 (vmovnbq): Remove.
17104 (vmovnbq_m): Remove.
17105 (vmovntq_m): Remove.
17106 (vmovntq_u16): Remove.
17107 (vmovnbq_u16): Remove.
17108 (vmovntq_s16): Remove.
17109 (vmovnbq_s16): Remove.
17110 (vmovntq_u32): Remove.
17111 (vmovnbq_u32): Remove.
17112 (vmovntq_s32): Remove.
17113 (vmovnbq_s32): Remove.
17114 (vmovnbq_m_s16): Remove.
17115 (vmovntq_m_s16): Remove.
17116 (vmovnbq_m_u16): Remove.
17117 (vmovntq_m_u16): Remove.
17118 (vmovnbq_m_s32): Remove.
17119 (vmovntq_m_s32): Remove.
17120 (vmovnbq_m_u32): Remove.
17121 (vmovntq_m_u32): Remove.
17122 (__arm_vmovntq_u16): Remove.
17123 (__arm_vmovnbq_u16): Remove.
17124 (__arm_vmovntq_s16): Remove.
17125 (__arm_vmovnbq_s16): Remove.
17126 (__arm_vmovntq_u32): Remove.
17127 (__arm_vmovnbq_u32): Remove.
17128 (__arm_vmovntq_s32): Remove.
17129 (__arm_vmovnbq_s32): Remove.
17130 (__arm_vmovnbq_m_s16): Remove.
17131 (__arm_vmovntq_m_s16): Remove.
17132 (__arm_vmovnbq_m_u16): Remove.
17133 (__arm_vmovntq_m_u16): Remove.
17134 (__arm_vmovnbq_m_s32): Remove.
17135 (__arm_vmovntq_m_s32): Remove.
17136 (__arm_vmovnbq_m_u32): Remove.
17137 (__arm_vmovntq_m_u32): Remove.
17138 (__arm_vmovntq): Remove.
17139 (__arm_vmovnbq): Remove.
17140 (__arm_vmovnbq_m): Remove.
17141 (__arm_vmovntq_m): Remove.
17142 (vqmovuntq): Remove.
17143 (vqmovunbq): Remove.
17144 (vqmovunbq_m): Remove.
17145 (vqmovuntq_m): Remove.
17146 (vqmovuntq_s16): Remove.
17147 (vqmovunbq_s16): Remove.
17148 (vqmovuntq_s32): Remove.
17149 (vqmovunbq_s32): Remove.
17150 (vqmovunbq_m_s16): Remove.
17151 (vqmovuntq_m_s16): Remove.
17152 (vqmovunbq_m_s32): Remove.
17153 (vqmovuntq_m_s32): Remove.
17154 (__arm_vqmovuntq_s16): Remove.
17155 (__arm_vqmovunbq_s16): Remove.
17156 (__arm_vqmovuntq_s32): Remove.
17157 (__arm_vqmovunbq_s32): Remove.
17158 (__arm_vqmovunbq_m_s16): Remove.
17159 (__arm_vqmovuntq_m_s16): Remove.
17160 (__arm_vqmovunbq_m_s32): Remove.
17161 (__arm_vqmovuntq_m_s32): Remove.
17162 (__arm_vqmovuntq): Remove.
17163 (__arm_vqmovunbq): Remove.
17164 (__arm_vqmovunbq_m): Remove.
17165 (__arm_vqmovuntq_m): Remove.
17166
17167 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
17168
17169 * config/arm/iterators.md (MVE_MOVN, MVE_MOVN_M): New.
17170 (mve_insn): Add vmovnb, vmovnt, vqmovnb, vqmovnt, vqmovunb,
17171 vqmovunt.
17172 (isu): Likewise.
17173 (supf): Add VQMOVUNBQ_M_S, VQMOVUNBQ_S, VQMOVUNTQ_M_S,
17174 VQMOVUNTQ_S.
17175 * config/arm/mve.md (mve_vmovnbq_<supf><mode>)
17176 (mve_vmovntq_<supf><mode>, mve_vqmovnbq_<supf><mode>)
17177 (mve_vqmovntq_<supf><mode>, mve_vqmovunbq_s<mode>)
17178 (mve_vqmovuntq_s<mode>): Merge into ...
17179 (@mve_<mve_insn>q_<supf><mode>): ... this.
17180 (mve_vmovnbq_m_<supf><mode>, mve_vmovntq_m_<supf><mode>)
17181 (mve_vqmovnbq_m_<supf><mode>, mve_vqmovntq_m_<supf><mode>)
17182 (mve_vqmovunbq_m_s<mode>, mve_vqmovuntq_m_s<mode>): Merge into ...
17183 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
17184
17185 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
17186
17187 * config/arm/arm-mve-builtins-shapes.cc (binary_move_narrow): New.
17188 (binary_move_narrow_unsigned): New.
17189 * config/arm/arm-mve-builtins-shapes.h (binary_move_narrow): New.
17190 (binary_move_narrow_unsigned): New.
17191
17192 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
17193
17194 * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_F): New.
17195 (vrndaq, vrndmq, vrndnq, vrndpq, vrndq, vrndxq): New.
17196 * config/arm/arm-mve-builtins-base.def (vrndaq, vrndmq, vrndnq)
17197 (vrndpq, vrndq, vrndxq): New.
17198 * config/arm/arm-mve-builtins-base.h (vrndaq, vrndmq, vrndnq)
17199 (vrndpq, vrndq, vrndxq): New.
17200 * config/arm/arm_mve.h (vrndxq): Remove.
17201 (vrndq): Remove.
17202 (vrndpq): Remove.
17203 (vrndnq): Remove.
17204 (vrndmq): Remove.
17205 (vrndaq): Remove.
17206 (vrndaq_m): Remove.
17207 (vrndmq_m): Remove.
17208 (vrndnq_m): Remove.
17209 (vrndpq_m): Remove.
17210 (vrndq_m): Remove.
17211 (vrndxq_m): Remove.
17212 (vrndq_x): Remove.
17213 (vrndnq_x): Remove.
17214 (vrndmq_x): Remove.
17215 (vrndpq_x): Remove.
17216 (vrndaq_x): Remove.
17217 (vrndxq_x): Remove.
17218 (vrndxq_f16): Remove.
17219 (vrndxq_f32): Remove.
17220 (vrndq_f16): Remove.
17221 (vrndq_f32): Remove.
17222 (vrndpq_f16): Remove.
17223 (vrndpq_f32): Remove.
17224 (vrndnq_f16): Remove.
17225 (vrndnq_f32): Remove.
17226 (vrndmq_f16): Remove.
17227 (vrndmq_f32): Remove.
17228 (vrndaq_f16): Remove.
17229 (vrndaq_f32): Remove.
17230 (vrndaq_m_f16): Remove.
17231 (vrndmq_m_f16): Remove.
17232 (vrndnq_m_f16): Remove.
17233 (vrndpq_m_f16): Remove.
17234 (vrndq_m_f16): Remove.
17235 (vrndxq_m_f16): Remove.
17236 (vrndaq_m_f32): Remove.
17237 (vrndmq_m_f32): Remove.
17238 (vrndnq_m_f32): Remove.
17239 (vrndpq_m_f32): Remove.
17240 (vrndq_m_f32): Remove.
17241 (vrndxq_m_f32): Remove.
17242 (vrndq_x_f16): Remove.
17243 (vrndq_x_f32): Remove.
17244 (vrndnq_x_f16): Remove.
17245 (vrndnq_x_f32): Remove.
17246 (vrndmq_x_f16): Remove.
17247 (vrndmq_x_f32): Remove.
17248 (vrndpq_x_f16): Remove.
17249 (vrndpq_x_f32): Remove.
17250 (vrndaq_x_f16): Remove.
17251 (vrndaq_x_f32): Remove.
17252 (vrndxq_x_f16): Remove.
17253 (vrndxq_x_f32): Remove.
17254 (__arm_vrndxq_f16): Remove.
17255 (__arm_vrndxq_f32): Remove.
17256 (__arm_vrndq_f16): Remove.
17257 (__arm_vrndq_f32): Remove.
17258 (__arm_vrndpq_f16): Remove.
17259 (__arm_vrndpq_f32): Remove.
17260 (__arm_vrndnq_f16): Remove.
17261 (__arm_vrndnq_f32): Remove.
17262 (__arm_vrndmq_f16): Remove.
17263 (__arm_vrndmq_f32): Remove.
17264 (__arm_vrndaq_f16): Remove.
17265 (__arm_vrndaq_f32): Remove.
17266 (__arm_vrndaq_m_f16): Remove.
17267 (__arm_vrndmq_m_f16): Remove.
17268 (__arm_vrndnq_m_f16): Remove.
17269 (__arm_vrndpq_m_f16): Remove.
17270 (__arm_vrndq_m_f16): Remove.
17271 (__arm_vrndxq_m_f16): Remove.
17272 (__arm_vrndaq_m_f32): Remove.
17273 (__arm_vrndmq_m_f32): Remove.
17274 (__arm_vrndnq_m_f32): Remove.
17275 (__arm_vrndpq_m_f32): Remove.
17276 (__arm_vrndq_m_f32): Remove.
17277 (__arm_vrndxq_m_f32): Remove.
17278 (__arm_vrndq_x_f16): Remove.
17279 (__arm_vrndq_x_f32): Remove.
17280 (__arm_vrndnq_x_f16): Remove.
17281 (__arm_vrndnq_x_f32): Remove.
17282 (__arm_vrndmq_x_f16): Remove.
17283 (__arm_vrndmq_x_f32): Remove.
17284 (__arm_vrndpq_x_f16): Remove.
17285 (__arm_vrndpq_x_f32): Remove.
17286 (__arm_vrndaq_x_f16): Remove.
17287 (__arm_vrndaq_x_f32): Remove.
17288 (__arm_vrndxq_x_f16): Remove.
17289 (__arm_vrndxq_x_f32): Remove.
17290 (__arm_vrndxq): Remove.
17291 (__arm_vrndq): Remove.
17292 (__arm_vrndpq): Remove.
17293 (__arm_vrndnq): Remove.
17294 (__arm_vrndmq): Remove.
17295 (__arm_vrndaq): Remove.
17296 (__arm_vrndaq_m): Remove.
17297 (__arm_vrndmq_m): Remove.
17298 (__arm_vrndnq_m): Remove.
17299 (__arm_vrndpq_m): Remove.
17300 (__arm_vrndq_m): Remove.
17301 (__arm_vrndxq_m): Remove.
17302 (__arm_vrndq_x): Remove.
17303 (__arm_vrndnq_x): Remove.
17304 (__arm_vrndmq_x): Remove.
17305 (__arm_vrndpq_x): Remove.
17306 (__arm_vrndaq_x): Remove.
17307 (__arm_vrndxq_x): Remove.
17308
17309 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
17310
17311 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_N_NO_U_F): New.
17312 (vabsq, vnegq, vclsq, vclzq, vqabsq, vqnegq): New.
17313 * config/arm/arm-mve-builtins-base.def (vabsq, vnegq, vclsq)
17314 (vclzq, vqabsq, vqnegq): New.
17315 * config/arm/arm-mve-builtins-base.h (vabsq, vnegq, vclsq, vclzq)
17316 (vqabsq, vqnegq): New.
17317 * config/arm/arm_mve.h (vabsq): Remove.
17318 (vabsq_m): Remove.
17319 (vabsq_x): Remove.
17320 (vabsq_f16): Remove.
17321 (vabsq_f32): Remove.
17322 (vabsq_s8): Remove.
17323 (vabsq_s16): Remove.
17324 (vabsq_s32): Remove.
17325 (vabsq_m_s8): Remove.
17326 (vabsq_m_s16): Remove.
17327 (vabsq_m_s32): Remove.
17328 (vabsq_m_f16): Remove.
17329 (vabsq_m_f32): Remove.
17330 (vabsq_x_s8): Remove.
17331 (vabsq_x_s16): Remove.
17332 (vabsq_x_s32): Remove.
17333 (vabsq_x_f16): Remove.
17334 (vabsq_x_f32): Remove.
17335 (__arm_vabsq_s8): Remove.
17336 (__arm_vabsq_s16): Remove.
17337 (__arm_vabsq_s32): Remove.
17338 (__arm_vabsq_m_s8): Remove.
17339 (__arm_vabsq_m_s16): Remove.
17340 (__arm_vabsq_m_s32): Remove.
17341 (__arm_vabsq_x_s8): Remove.
17342 (__arm_vabsq_x_s16): Remove.
17343 (__arm_vabsq_x_s32): Remove.
17344 (__arm_vabsq_f16): Remove.
17345 (__arm_vabsq_f32): Remove.
17346 (__arm_vabsq_m_f16): Remove.
17347 (__arm_vabsq_m_f32): Remove.
17348 (__arm_vabsq_x_f16): Remove.
17349 (__arm_vabsq_x_f32): Remove.
17350 (__arm_vabsq): Remove.
17351 (__arm_vabsq_m): Remove.
17352 (__arm_vabsq_x): Remove.
17353 (vnegq): Remove.
17354 (vnegq_m): Remove.
17355 (vnegq_x): Remove.
17356 (vnegq_f16): Remove.
17357 (vnegq_f32): Remove.
17358 (vnegq_s8): Remove.
17359 (vnegq_s16): Remove.
17360 (vnegq_s32): Remove.
17361 (vnegq_m_s8): Remove.
17362 (vnegq_m_s16): Remove.
17363 (vnegq_m_s32): Remove.
17364 (vnegq_m_f16): Remove.
17365 (vnegq_m_f32): Remove.
17366 (vnegq_x_s8): Remove.
17367 (vnegq_x_s16): Remove.
17368 (vnegq_x_s32): Remove.
17369 (vnegq_x_f16): Remove.
17370 (vnegq_x_f32): Remove.
17371 (__arm_vnegq_s8): Remove.
17372 (__arm_vnegq_s16): Remove.
17373 (__arm_vnegq_s32): Remove.
17374 (__arm_vnegq_m_s8): Remove.
17375 (__arm_vnegq_m_s16): Remove.
17376 (__arm_vnegq_m_s32): Remove.
17377 (__arm_vnegq_x_s8): Remove.
17378 (__arm_vnegq_x_s16): Remove.
17379 (__arm_vnegq_x_s32): Remove.
17380 (__arm_vnegq_f16): Remove.
17381 (__arm_vnegq_f32): Remove.
17382 (__arm_vnegq_m_f16): Remove.
17383 (__arm_vnegq_m_f32): Remove.
17384 (__arm_vnegq_x_f16): Remove.
17385 (__arm_vnegq_x_f32): Remove.
17386 (__arm_vnegq): Remove.
17387 (__arm_vnegq_m): Remove.
17388 (__arm_vnegq_x): Remove.
17389 (vclsq): Remove.
17390 (vclsq_m): Remove.
17391 (vclsq_x): Remove.
17392 (vclsq_s8): Remove.
17393 (vclsq_s16): Remove.
17394 (vclsq_s32): Remove.
17395 (vclsq_m_s8): Remove.
17396 (vclsq_m_s16): Remove.
17397 (vclsq_m_s32): Remove.
17398 (vclsq_x_s8): Remove.
17399 (vclsq_x_s16): Remove.
17400 (vclsq_x_s32): Remove.
17401 (__arm_vclsq_s8): Remove.
17402 (__arm_vclsq_s16): Remove.
17403 (__arm_vclsq_s32): Remove.
17404 (__arm_vclsq_m_s8): Remove.
17405 (__arm_vclsq_m_s16): Remove.
17406 (__arm_vclsq_m_s32): Remove.
17407 (__arm_vclsq_x_s8): Remove.
17408 (__arm_vclsq_x_s16): Remove.
17409 (__arm_vclsq_x_s32): Remove.
17410 (__arm_vclsq): Remove.
17411 (__arm_vclsq_m): Remove.
17412 (__arm_vclsq_x): Remove.
17413 (vclzq): Remove.
17414 (vclzq_m): Remove.
17415 (vclzq_x): Remove.
17416 (vclzq_s8): Remove.
17417 (vclzq_s16): Remove.
17418 (vclzq_s32): Remove.
17419 (vclzq_u8): Remove.
17420 (vclzq_u16): Remove.
17421 (vclzq_u32): Remove.
17422 (vclzq_m_u8): Remove.
17423 (vclzq_m_s8): Remove.
17424 (vclzq_m_u16): Remove.
17425 (vclzq_m_s16): Remove.
17426 (vclzq_m_u32): Remove.
17427 (vclzq_m_s32): Remove.
17428 (vclzq_x_s8): Remove.
17429 (vclzq_x_s16): Remove.
17430 (vclzq_x_s32): Remove.
17431 (vclzq_x_u8): Remove.
17432 (vclzq_x_u16): Remove.
17433 (vclzq_x_u32): Remove.
17434 (__arm_vclzq_s8): Remove.
17435 (__arm_vclzq_s16): Remove.
17436 (__arm_vclzq_s32): Remove.
17437 (__arm_vclzq_u8): Remove.
17438 (__arm_vclzq_u16): Remove.
17439 (__arm_vclzq_u32): Remove.
17440 (__arm_vclzq_m_u8): Remove.
17441 (__arm_vclzq_m_s8): Remove.
17442 (__arm_vclzq_m_u16): Remove.
17443 (__arm_vclzq_m_s16): Remove.
17444 (__arm_vclzq_m_u32): Remove.
17445 (__arm_vclzq_m_s32): Remove.
17446 (__arm_vclzq_x_s8): Remove.
17447 (__arm_vclzq_x_s16): Remove.
17448 (__arm_vclzq_x_s32): Remove.
17449 (__arm_vclzq_x_u8): Remove.
17450 (__arm_vclzq_x_u16): Remove.
17451 (__arm_vclzq_x_u32): Remove.
17452 (__arm_vclzq): Remove.
17453 (__arm_vclzq_m): Remove.
17454 (__arm_vclzq_x): Remove.
17455 (vqabsq): Remove.
17456 (vqnegq): Remove.
17457 (vqnegq_m): Remove.
17458 (vqabsq_m): Remove.
17459 (vqabsq_s8): Remove.
17460 (vqabsq_s16): Remove.
17461 (vqabsq_s32): Remove.
17462 (vqnegq_s8): Remove.
17463 (vqnegq_s16): Remove.
17464 (vqnegq_s32): Remove.
17465 (vqnegq_m_s8): Remove.
17466 (vqabsq_m_s8): Remove.
17467 (vqnegq_m_s16): Remove.
17468 (vqabsq_m_s16): Remove.
17469 (vqnegq_m_s32): Remove.
17470 (vqabsq_m_s32): Remove.
17471 (__arm_vqabsq_s8): Remove.
17472 (__arm_vqabsq_s16): Remove.
17473 (__arm_vqabsq_s32): Remove.
17474 (__arm_vqnegq_s8): Remove.
17475 (__arm_vqnegq_s16): Remove.
17476 (__arm_vqnegq_s32): Remove.
17477 (__arm_vqnegq_m_s8): Remove.
17478 (__arm_vqabsq_m_s8): Remove.
17479 (__arm_vqnegq_m_s16): Remove.
17480 (__arm_vqabsq_m_s16): Remove.
17481 (__arm_vqnegq_m_s32): Remove.
17482 (__arm_vqabsq_m_s32): Remove.
17483 (__arm_vqabsq): Remove.
17484 (__arm_vqnegq): Remove.
17485 (__arm_vqnegq_m): Remove.
17486 (__arm_vqabsq_m): Remove.
17487
17488 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
17489
17490 * config/arm/iterators.md (MVE_INT_M_UNARY, MVE_INT_UNARY)
17491 (MVE_FP_UNARY, MVE_FP_M_UNARY): New.
17492 (mve_insn): Add vabs, vcls, vclz, vneg, vqabs, vqneg, vrnda,
17493 vrndm, vrndn, vrndp, vrnd, vrndx.
17494 (isu): Add VABSQ_M_S, VCLSQ_M_S, VCLZQ_M_S, VCLZQ_M_U, VNEGQ_M_S,
17495 VQABSQ_M_S, VQNEGQ_M_S.
17496 (mve_mnemo): New.
17497 * config/arm/mve.md (mve_vrndq_m_f<mode>, mve_vrndxq_f<mode>)
17498 (mve_vrndq_f<mode>, mve_vrndpq_f<mode>, mve_vrndnq_f<mode>)
17499 (mve_vrndmq_f<mode>, mve_vrndaq_f<mode>): Merge into ...
17500 (@mve_<mve_insn>q_f<mode>): ... this.
17501 (mve_vnegq_f<mode>, mve_vabsq_f<mode>): Merge into ...
17502 (mve_v<absneg_str>q_f<mode>): ... this.
17503 (mve_vnegq_s<mode>, mve_vabsq_s<mode>): Merge into ...
17504 (mve_v<absneg_str>q_s<mode>): ... this.
17505 (mve_vclsq_s<mode>, mve_vqnegq_s<mode>, mve_vqabsq_s<mode>): Merge into ...
17506 (@mve_<mve_insn>q_<supf><mode>): ... this.
17507 (mve_vabsq_m_s<mode>, mve_vclsq_m_s<mode>)
17508 (mve_vclzq_m_<supf><mode>, mve_vnegq_m_s<mode>)
17509 (mve_vqabsq_m_s<mode>, mve_vqnegq_m_s<mode>): Merge into ...
17510 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
17511 (mve_vabsq_m_f<mode>, mve_vnegq_m_f<mode>, mve_vrndaq_m_f<mode>)
17512 (mve_vrndmq_m_f<mode>, mve_vrndnq_m_f<mode>, mve_vrndpq_m_f<mode>)
17513 (mve_vrndxq_m_f<mode>): Merge into ...
17514 (@mve_<mve_insn>q_m_f<mode>): ... this.
17515
17516 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
17517
17518 * config/arm/arm-mve-builtins-shapes.cc (unary): New.
17519 * config/arm/arm-mve-builtins-shapes.h (unary): New.
17520
17521 2023-05-09 Jakub Jelinek <jakub@redhat.com>
17522
17523 * mux-utils.h: Fix comment typo, avoides -> avoids.
17524
17525 2023-05-09 Jakub Jelinek <jakub@redhat.com>
17526
17527 PR tree-optimization/109778
17528 * wide-int.h (wi::lrotate, wi::rrotate): Call wi::lrshift on
17529 wi::zext (x, width) rather than x if width != precision, rather
17530 than using wi::zext (right, width) after the shift.
17531 * tree-ssa-ccp.cc (bit_value_binop): Call wi::ext on the results
17532 of wi::lrotate or wi::rrotate.
17533
17534 2023-05-09 Alexander Monakov <amonakov@ispras.ru>
17535
17536 * genmatch.cc (get_out_file): Make static and rename to ...
17537 (choose_output): ... this. Reimplement. Update all uses ...
17538 (decision_tree::gen): ... here and ...
17539 (main): ... here.
17540
17541 2023-05-09 Alexander Monakov <amonakov@ispras.ru>
17542
17543 * genmatch.cc (showUsage): Reimplement as ...
17544 (usage): ...this. Adjust all uses.
17545 (main): Print usage when no arguments. Add missing 'return 1'.
17546
17547 2023-05-09 Alexander Monakov <amonakov@ispras.ru>
17548
17549 * genmatch.cc (header_file): Make static.
17550 (emit_func): Rename to...
17551 (fp_decl): ... this. Adjust all uses.
17552 (fp_decl_done): New function. Use it...
17553 (decision_tree::gen): ... here and...
17554 (write_predicate): ... here.
17555 (main): Adjust.
17556
17557 2023-05-09 Richard Sandiford <richard.sandiford@arm.com>
17558
17559 * ira-conflicts.cc (can_use_same_reg_p): Skip over non-matching
17560 earlyclobbers.
17561
17562 2023-05-08 Roger Sayle <roger@nextmovesoftware.com>
17563 Uros Bizjak <ubizjak@gmail.com>
17564
17565 * config/i386/i386.md (any_or_plus): Move definition earlier.
17566 (*insvti_highpart_1): New define_insn_and_split to overwrite
17567 (insv) the highpart of a TImode register/memory.
17568
17569 2023-05-08 Eugene Rozenfeld <erozen@microsoft.com>
17570
17571 * auto-profile.cc (auto_profile): Check todo from early_inline
17572 to see if cleanup_tree_vfg needs to be called.
17573 (early_inline): Return todo from early_inliner.
17574
17575 2023-05-08 Kito Cheng <kito.cheng@sifive.com>
17576
17577 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::get_vector_info):
17578 New.
17579 (pass_vsetvl::get_block_info): New.
17580 (pass_vsetvl::update_vector_info): New.
17581 (pass_vsetvl::simple_vsetvl): Use get_vector_info.
17582 (pass_vsetvl::compute_local_backward_infos): Ditto.
17583 (pass_vsetvl::transfer_before): Ditto.
17584 (pass_vsetvl::transfer_after): Ditto.
17585 (pass_vsetvl::emit_local_forward_vsetvls): Ditto.
17586 (pass_vsetvl::local_eliminate_vsetvl_insn): Ditto.
17587 (pass_vsetvl::cleanup_insns): Ditto.
17588 (pass_vsetvl::compute_local_backward_infos): Use
17589 update_vector_info.
17590
17591 2023-05-08 Jeff Law <jlaw@ventanamicro>
17592
17593 * config/stormy16/stormy16.md (zero_extendhisi2): Fix length.
17594
17595 2023-05-08 Richard Biener <rguenther@suse.de>
17596 Michael Meissner <meissner@linux.ibm.com>
17597
17598 PR middle-end/108623
17599 * tree-core.h (tree_type_common): Bump up precision field to 16 bits.
17600 Align bit fields > 1 bit to at least an 8-bit boundary.
17601
17602 2023-05-08 Andrew Pinski <apinski@marvell.com>
17603
17604 PR tree-optimization/109424
17605 PR tree-optimization/59424
17606 * tree-ssa-phiopt.cc (factor_out_conditional_conversion): Rename to ...
17607 (factor_out_conditional_operation): This and add support for all unary
17608 operations.
17609 (pass_phiopt::execute): Update call to factor_out_conditional_conversion
17610 to call factor_out_conditional_operation instead.
17611
17612 2023-05-08 Andrew Pinski <apinski@marvell.com>
17613
17614 * tree-ssa-phiopt.cc (pass_phiopt::execute): Loop
17615 over factor_out_conditional_conversion.
17616
17617 2023-05-08 Andrew Pinski <apinski@marvell.com>
17618
17619 PR tree-optimization/49959
17620 PR tree-optimization/103771
17621 * tree-ssa-phiopt.cc (pass_phiopt::execute): Support
17622 Diamond shapped bb form for factor_out_conditional_conversion.
17623
17624 2023-05-08 Juzhe-Zhong <juzhe.zhong@rivai.ai>
17625
17626 * config/riscv/autovec.md (movmisalign<mode>): New pattern.
17627 * config/riscv/riscv-protos.h (riscv_vector_mask_mode_p): Delete.
17628 (riscv_vector_get_mask_mode): Ditto.
17629 (get_mask_policy_no_pred): Ditto.
17630 (get_tail_policy_no_pred): Ditto.
17631 (get_mask_mode): New function.
17632 * config/riscv/riscv-v.cc (get_mask_policy_no_pred): Delete.
17633 (get_tail_policy_no_pred): Ditto.
17634 (riscv_vector_mask_mode_p): Ditto.
17635 (riscv_vector_get_mask_mode): Ditto.
17636 (get_mask_mode): New function.
17637 * config/riscv/riscv-vector-builtins.cc (use_real_merge_p): Remove
17638 global extern.
17639 (get_tail_policy_for_pred): Ditto.
17640 * config/riscv/riscv-vector-builtins.h (get_tail_policy_for_pred): Ditto.
17641 (get_mask_policy_for_pred): Ditto
17642 * config/riscv/riscv.cc (riscv_get_mask_mode): Refine codes.
17643
17644 2023-05-08 Kito Cheng <kito.cheng@sifive.com>
17645
17646 * common/config/riscv/riscv-common.cc (riscv_select_multilib_by_abi): New.
17647 (riscv_select_multilib): New.
17648 (riscv_compute_multilib): Extract logic to riscv_select_multilib and
17649 also handle select_by_abi.
17650 * config/riscv/elf.h (RISCV_USE_CUSTOMISED_MULTI_LIB): Change it
17651 to select_by_abi_arch_cmodel from 1.
17652 * config/riscv/linux.h (RISCV_USE_CUSTOMISED_MULTI_LIB): Define.
17653 * config/riscv/riscv-opts.h (enum riscv_multilib_select_kind): New.
17654
17655 2023-05-08 Alexander Monakov <amonakov@ispras.ru>
17656
17657 * Makefile.in: (gimple-match-head.o-warn): Remove.
17658 (GIMPLE_MATCH_PD_SEQ_SRC): Do not depend on
17659 gimple-match-exports.cc.
17660 (gimple-match-auto.h): Only depend on s-gimple-match.
17661 (generic-match-auto.h): Likewise.
17662
17663 2023-05-08 Andrew Pinski <apinski@marvell.com>
17664
17665 PR tree-optimization/109691
17666 * tree-ssa-dce.cc (simple_dce_from_worklist): Add need_eh_cleanup
17667 argument.
17668 If the removed statement can throw, have need_eh_cleanup
17669 include the bb of that statement.
17670 * tree-ssa-dce.h (simple_dce_from_worklist): Update declaration.
17671 * tree-ssa-propagate.cc (struct prop_stats_d): Remove
17672 num_dce.
17673 (substitute_and_fold_dom_walker::substitute_and_fold_dom_walker):
17674 Initialize dceworklist instead of stmts_to_remove.
17675 (substitute_and_fold_dom_walker::~substitute_and_fold_dom_walker):
17676 Destore dceworklist instead of stmts_to_remove.
17677 (substitute_and_fold_dom_walker::before_dom_children):
17678 Set dceworklist instead of adding to stmts_to_remove.
17679 (substitute_and_fold_engine::substitute_and_fold):
17680 Call simple_dce_from_worklist instead of poping
17681 from the list.
17682 Don't update the stat on removal statements.
17683
17684 2023-05-07 Andrew Pinski <apinski@marvell.com>
17685
17686 PR target/109762
17687 * config/aarch64/aarch64-builtins.cc (aarch64_simd_switcher::aarch64_simd_switcher):
17688 Change argument type to aarch64_feature_flags.
17689 * config/aarch64/aarch64-protos.h (aarch64_simd_switcher): Change
17690 constructor argument type to aarch64_feature_flags.
17691 Change m_old_asm_isa_flags to be aarch64_feature_flags.
17692
17693 2023-05-07 Jiufu Guo <guojiufu@linux.ibm.com>
17694
17695 * config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Generate
17696 more parallel code if can_create_pseudo_p.
17697
17698 2023-05-07 Roger Sayle <roger@nextmovesoftware.com>
17699
17700 PR target/43644
17701 * lower-subreg.cc (resolve_simple_move): Don't emit a clobber
17702 immediately before moving a multi-word register by parts.
17703
17704 2023-05-06 Jeff Law <jlaw@ventanamicro>
17705
17706 * config/riscv/riscv-v.cc (riscv_vector_preferred_simd_mode): Delete.
17707
17708 2023-05-06 Michael Collison <collison@rivosinc.com>
17709
17710 * tree-vect-slp.cc (can_duplicate_and_interleave_p):
17711 Check that GET_MODE_NUNITS is a multiple of 2.
17712
17713 2023-05-06 Michael Collison <collison@rivosinc.com>
17714
17715 * config/riscv/riscv.cc
17716 (riscv_estimated_poly_value): Implement
17717 TARGET_ESTIMATED_POLY_VALUE.
17718 (riscv_preferred_simd_mode): Implement
17719 TARGET_VECTORIZE_PREFERRED_SIMD_MODE.
17720 (riscv_get_mask_mode): Implement TARGET_VECTORIZE_GET_MASK_MODE.
17721 (riscv_empty_mask_is_expensive): Implement
17722 TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE.
17723 (riscv_vectorize_create_costs): Implement
17724 TARGET_VECTORIZE_CREATE_COSTS.
17725 (riscv_support_vector_misalignment): Implement
17726 TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT.
17727 (TARGET_ESTIMATED_POLY_VALUE): Register target macro.
17728 (TARGET_VECTORIZE_GET_MASK_MODE): Ditto.
17729 (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): Ditto.
17730 (TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT): Ditto.
17731
17732 2023-05-06 Jeff Law <jlaw@ventanamicro>
17733
17734 * config/riscv/riscv-v.cc (autovec_use_vlmax_p): Remove
17735 duplicate definition.
17736
17737 2023-05-06 Michael Collison <collison@rivosinc.com>
17738
17739 * config/riscv/riscv-v.cc (autovec_use_vlmax_p): New function.
17740 (riscv_vector_preferred_simd_mode): Ditto.
17741 (get_mask_policy_no_pred): Ditto.
17742 (get_tail_policy_no_pred): Ditto.
17743 (riscv_vector_mask_mode_p): Ditto.
17744 (riscv_vector_get_mask_mode): Ditto.
17745
17746 2023-05-06 Michael Collison <collison@rivosinc.com>
17747
17748 * config/riscv/riscv-vector-builtins.cc (get_tail_policy_for_pred):
17749 Remove static declaration to to make externally visible.
17750 (get_mask_policy_for_pred): Ditto.
17751 * config/riscv/riscv-vector-builtins.h (get_tail_policy_for_pred):
17752 New external declaration.
17753 (get_mask_policy_for_pred): Ditto.
17754
17755 2023-05-06 Michael Collison <collison@rivosinc.com>
17756
17757 * config/riscv/riscv-protos.h (riscv_vector_mask_mode_p): New.
17758 (riscv_vector_get_mask_mode): Ditto.
17759 (get_mask_policy_no_pred): Ditto.
17760 (get_tail_policy_no_pred): Ditto.
17761
17762 2023-05-06 Xi Ruoyao <xry111@xry111.site>
17763
17764 * config/loongarch/loongarch.h (struct machine_function): Add
17765 reg_is_wrapped_separately array for register wrapping
17766 information.
17767 * config/loongarch/loongarch.cc
17768 (loongarch_get_separate_components): New function.
17769 (loongarch_components_for_bb): Likewise.
17770 (loongarch_disqualify_components): Likewise.
17771 (loongarch_process_components): Likewise.
17772 (loongarch_emit_prologue_components): Likewise.
17773 (loongarch_emit_epilogue_components): Likewise.
17774 (loongarch_set_handled_components): Likewise.
17775 (TARGET_SHRINK_WRAP_GET_SEPARATE_COMPONENTS): Define.
17776 (TARGET_SHRINK_WRAP_COMPONENTS_FOR_BB): Likewise.
17777 (TARGET_SHRINK_WRAP_DISQUALIFY_COMPONENTS): Likewise.
17778 (TARGET_SHRINK_WRAP_EMIT_PROLOGUE_COMPONENTS): Likewise.
17779 (TARGET_SHRINK_WRAP_EMIT_EPILOGUE_COMPONENTS): Likewise.
17780 (TARGET_SHRINK_WRAP_SET_HANDLED_COMPONENTS): Likewise.
17781 (loongarch_for_each_saved_reg): Skip registers that are wrapped
17782 separately.
17783
17784 2023-05-06 Xi Ruoyao <xry111@xry111.site>
17785
17786 PR other/109522
17787 * Makefile.in (s-macro_list): Pass -nostdinc to
17788 $(GCC_FOR_TARGET).
17789
17790 2023-05-06 Juzhe-Zhong <juzhe.zhong@rivai.ai>
17791
17792 * config/riscv/riscv-protos.h (preferred_simd_mode): New function.
17793 * config/riscv/riscv-v.cc (autovec_use_vlmax_p): Ditto.
17794 (preferred_simd_mode): Ditto.
17795 * config/riscv/riscv.cc (riscv_get_arg_info): Handle RVV type in function arg.
17796 (riscv_convert_vector_bits): Adjust for RVV auto-vectorization.
17797 (riscv_preferred_simd_mode): New function.
17798 (TARGET_VECTORIZE_PREFERRED_SIMD_MODE): New target hook support.
17799 * config/riscv/vector.md: Add autovec.md.
17800 * config/riscv/autovec.md: New file.
17801
17802 2023-05-06 Jakub Jelinek <jakub@redhat.com>
17803
17804 * real.h (dconst_pi): Define.
17805 (dconst_e_ptr): Formatting fix.
17806 (dconst_pi_ptr): Declare.
17807 * real.cc (dconst_pi_ptr): New function.
17808 * gimple-range-op.cc (cfn_sincos::fold_range): Intersect the generic
17809 boundaries range with range computed from sin/cos of the particular
17810 bounds if the argument range is shorter than 2*pi.
17811 (cfn_sincos::op1_range): Take bulps into account when determining
17812 which result ranges are always invalid or behave like known NAN.
17813
17814 2023-05-06 Aldy Hernandez <aldyh@redhat.com>
17815
17816 * gimple-range-cache.cc (sbr_sparse_bitmap::set_bb_range): Do not
17817 pass type to vrange_storage::equal_p.
17818 * value-range-storage.cc (vrange_storage::equal_p): Remove type.
17819 (irange_storage::equal_p): Same.
17820 (frange_storage::equal_p): Same.
17821 * value-range-storage.h (class frange_storage): Same.
17822
17823 2023-05-06 Juzhe-Zhong <juzhe.zhong@rivai.ai>
17824
17825 PR target/109748
17826 * config/riscv/riscv-vsetvl.cc (local_eliminate_vsetvl_insn): Remove it.
17827 (pass_vsetvl::local_eliminate_vsetvl_insn): New function.
17828
17829 2023-05-06 liuhongt <hongtao.liu@intel.com>
17830
17831 * combine.cc (maybe_swap_commutative_operands): Canonicalize
17832 vec_merge when mask is constant.
17833 * doc/md.texi: Document vec_merge canonicalization.
17834
17835 2023-05-06 Jakub Jelinek <jakub@redhat.com>
17836
17837 * value-range.h (frange_arithmetic): Declare.
17838 * range-op-float.cc (frange_arithmetic): No longer static.
17839 * gimple-range-op.cc (frange_mpfr_arg1): New function.
17840 (cfn_sqrt::fold_range): Intersect the generic boundaries range
17841 with range computed from sqrt of the particular bounds.
17842 (cfn_sqrt::op1_range): Intersect the generic boundaries range
17843 with range computed from squared particular bounds.
17844
17845 2023-05-06 Jakub Jelinek <jakub@redhat.com>
17846
17847 * Makefile.in (check_p_numbers): Rename to one_to_9999, move
17848 earlier with helper variables also renamed.
17849 (MATCH_SPLUT_SEQ): Use $(wordlist 1,$(NUM_MATCH_SPLITS),$(one_to_9999))
17850 instead of $(shell seq 1 $(NUM_MATCH_SPLITS)).
17851 (check_p_subdirs): Use $(one_to_9999) instead of $(check_p_numbers).
17852
17853 2023-05-06 Hans-Peter Nilsson <hp@axis.com>
17854
17855 * config/cris/cris.md (splitop): Add PLUS.
17856 * config/cris/cris.cc (cris_split_constant): Also handle
17857 PLUS when a split into two insns may be useful.
17858
17859 2023-05-05 Hans-Peter Nilsson <hp@axis.com>
17860
17861 * config/cris/cris.md (movandsplit1): New define_peephole2.
17862
17863 2023-05-05 Hans-Peter Nilsson <hp@axis.com>
17864
17865 * config/cris/cris.md (lsrandsplit1): New define_peephole2.
17866
17867 2023-05-05 Hans-Peter Nilsson <hp@axis.com>
17868
17869 * doc/md.texi (define_peephole2): Document order of scanning.
17870
17871 2023-05-05 Pan Li <pan2.li@intel.com>
17872 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17873
17874 * config/riscv/vector.md: Allow const as the operand of RVV
17875 indexed load/store.
17876
17877 2023-05-05 Pan Li <pan2.li@intel.com>
17878
17879 * config/riscv/riscv.h (VECTOR_STORE_FLAG_VALUE): Add new macro
17880 consumed by simplify_rtx.
17881
17882 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
17883
17884 * config/arm/arm-mve-builtins-base.cc (vrshrq, vshrq): New.
17885 * config/arm/arm-mve-builtins-base.def (vrshrq, vshrq): New.
17886 * config/arm/arm-mve-builtins-base.h (vrshrq, vshrq): New.
17887 * config/arm/arm_mve.h (vshrq): Remove.
17888 (vrshrq): Remove.
17889 (vrshrq_m): Remove.
17890 (vshrq_m): Remove.
17891 (vrshrq_x): Remove.
17892 (vshrq_x): Remove.
17893 (vshrq_n_s8): Remove.
17894 (vshrq_n_s16): Remove.
17895 (vshrq_n_s32): Remove.
17896 (vshrq_n_u8): Remove.
17897 (vshrq_n_u16): Remove.
17898 (vshrq_n_u32): Remove.
17899 (vrshrq_n_u8): Remove.
17900 (vrshrq_n_s8): Remove.
17901 (vrshrq_n_u16): Remove.
17902 (vrshrq_n_s16): Remove.
17903 (vrshrq_n_u32): Remove.
17904 (vrshrq_n_s32): Remove.
17905 (vrshrq_m_n_s8): Remove.
17906 (vrshrq_m_n_s32): Remove.
17907 (vrshrq_m_n_s16): Remove.
17908 (vrshrq_m_n_u8): Remove.
17909 (vrshrq_m_n_u32): Remove.
17910 (vrshrq_m_n_u16): Remove.
17911 (vshrq_m_n_s8): Remove.
17912 (vshrq_m_n_s32): Remove.
17913 (vshrq_m_n_s16): Remove.
17914 (vshrq_m_n_u8): Remove.
17915 (vshrq_m_n_u32): Remove.
17916 (vshrq_m_n_u16): Remove.
17917 (vrshrq_x_n_s8): Remove.
17918 (vrshrq_x_n_s16): Remove.
17919 (vrshrq_x_n_s32): Remove.
17920 (vrshrq_x_n_u8): Remove.
17921 (vrshrq_x_n_u16): Remove.
17922 (vrshrq_x_n_u32): Remove.
17923 (vshrq_x_n_s8): Remove.
17924 (vshrq_x_n_s16): Remove.
17925 (vshrq_x_n_s32): Remove.
17926 (vshrq_x_n_u8): Remove.
17927 (vshrq_x_n_u16): Remove.
17928 (vshrq_x_n_u32): Remove.
17929 (__arm_vshrq_n_s8): Remove.
17930 (__arm_vshrq_n_s16): Remove.
17931 (__arm_vshrq_n_s32): Remove.
17932 (__arm_vshrq_n_u8): Remove.
17933 (__arm_vshrq_n_u16): Remove.
17934 (__arm_vshrq_n_u32): Remove.
17935 (__arm_vrshrq_n_u8): Remove.
17936 (__arm_vrshrq_n_s8): Remove.
17937 (__arm_vrshrq_n_u16): Remove.
17938 (__arm_vrshrq_n_s16): Remove.
17939 (__arm_vrshrq_n_u32): Remove.
17940 (__arm_vrshrq_n_s32): Remove.
17941 (__arm_vrshrq_m_n_s8): Remove.
17942 (__arm_vrshrq_m_n_s32): Remove.
17943 (__arm_vrshrq_m_n_s16): Remove.
17944 (__arm_vrshrq_m_n_u8): Remove.
17945 (__arm_vrshrq_m_n_u32): Remove.
17946 (__arm_vrshrq_m_n_u16): Remove.
17947 (__arm_vshrq_m_n_s8): Remove.
17948 (__arm_vshrq_m_n_s32): Remove.
17949 (__arm_vshrq_m_n_s16): Remove.
17950 (__arm_vshrq_m_n_u8): Remove.
17951 (__arm_vshrq_m_n_u32): Remove.
17952 (__arm_vshrq_m_n_u16): Remove.
17953 (__arm_vrshrq_x_n_s8): Remove.
17954 (__arm_vrshrq_x_n_s16): Remove.
17955 (__arm_vrshrq_x_n_s32): Remove.
17956 (__arm_vrshrq_x_n_u8): Remove.
17957 (__arm_vrshrq_x_n_u16): Remove.
17958 (__arm_vrshrq_x_n_u32): Remove.
17959 (__arm_vshrq_x_n_s8): Remove.
17960 (__arm_vshrq_x_n_s16): Remove.
17961 (__arm_vshrq_x_n_s32): Remove.
17962 (__arm_vshrq_x_n_u8): Remove.
17963 (__arm_vshrq_x_n_u16): Remove.
17964 (__arm_vshrq_x_n_u32): Remove.
17965 (__arm_vshrq): Remove.
17966 (__arm_vrshrq): Remove.
17967 (__arm_vrshrq_m): Remove.
17968 (__arm_vshrq_m): Remove.
17969 (__arm_vrshrq_x): Remove.
17970 (__arm_vshrq_x): Remove.
17971
17972 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
17973
17974 * config/arm/iterators.md (MVE_VSHRQ_M_N, MVE_VSHRQ_N): New.
17975 (mve_insn): Add vrshr, vshr.
17976 * config/arm/mve.md (mve_vshrq_n_<supf><mode>)
17977 (mve_vrshrq_n_<supf><mode>): Merge into ...
17978 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
17979 (mve_vrshrq_m_n_<supf><mode>, mve_vshrq_m_n_<supf><mode>): Merge
17980 into ...
17981 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
17982
17983 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
17984
17985 * config/arm/arm-mve-builtins-shapes.cc (binary_rshift): New.
17986 * config/arm/arm-mve-builtins-shapes.h (binary_rshift): New.
17987
17988 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
17989
17990 * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N_NO_U_F): New.
17991 (vqshrunbq, vqshruntq, vqrshrunbq, vqrshruntq): New.
17992 * config/arm/arm-mve-builtins-base.def (vqshrunbq, vqshruntq)
17993 (vqrshrunbq, vqrshruntq): New.
17994 * config/arm/arm-mve-builtins-base.h (vqshrunbq, vqshruntq)
17995 (vqrshrunbq, vqrshruntq): New.
17996 * config/arm/arm-mve-builtins.cc
17997 (function_instance::has_inactive_argument): Handle vqshrunbq,
17998 vqshruntq, vqrshrunbq, vqrshruntq.
17999 * config/arm/arm_mve.h (vqrshrunbq): Remove.
18000 (vqrshruntq): Remove.
18001 (vqrshrunbq_m): Remove.
18002 (vqrshruntq_m): Remove.
18003 (vqrshrunbq_n_s16): Remove.
18004 (vqrshrunbq_n_s32): Remove.
18005 (vqrshruntq_n_s16): Remove.
18006 (vqrshruntq_n_s32): Remove.
18007 (vqrshrunbq_m_n_s32): Remove.
18008 (vqrshrunbq_m_n_s16): Remove.
18009 (vqrshruntq_m_n_s32): Remove.
18010 (vqrshruntq_m_n_s16): Remove.
18011 (__arm_vqrshrunbq_n_s16): Remove.
18012 (__arm_vqrshrunbq_n_s32): Remove.
18013 (__arm_vqrshruntq_n_s16): Remove.
18014 (__arm_vqrshruntq_n_s32): Remove.
18015 (__arm_vqrshrunbq_m_n_s32): Remove.
18016 (__arm_vqrshrunbq_m_n_s16): Remove.
18017 (__arm_vqrshruntq_m_n_s32): Remove.
18018 (__arm_vqrshruntq_m_n_s16): Remove.
18019 (__arm_vqrshrunbq): Remove.
18020 (__arm_vqrshruntq): Remove.
18021 (__arm_vqrshrunbq_m): Remove.
18022 (__arm_vqrshruntq_m): Remove.
18023 (vqshrunbq): Remove.
18024 (vqshruntq): Remove.
18025 (vqshrunbq_m): Remove.
18026 (vqshruntq_m): Remove.
18027 (vqshrunbq_n_s16): Remove.
18028 (vqshruntq_n_s16): Remove.
18029 (vqshrunbq_n_s32): Remove.
18030 (vqshruntq_n_s32): Remove.
18031 (vqshrunbq_m_n_s32): Remove.
18032 (vqshrunbq_m_n_s16): Remove.
18033 (vqshruntq_m_n_s32): Remove.
18034 (vqshruntq_m_n_s16): Remove.
18035 (__arm_vqshrunbq_n_s16): Remove.
18036 (__arm_vqshruntq_n_s16): Remove.
18037 (__arm_vqshrunbq_n_s32): Remove.
18038 (__arm_vqshruntq_n_s32): Remove.
18039 (__arm_vqshrunbq_m_n_s32): Remove.
18040 (__arm_vqshrunbq_m_n_s16): Remove.
18041 (__arm_vqshruntq_m_n_s32): Remove.
18042 (__arm_vqshruntq_m_n_s16): Remove.
18043 (__arm_vqshrunbq): Remove.
18044 (__arm_vqshruntq): Remove.
18045 (__arm_vqshrunbq_m): Remove.
18046 (__arm_vqshruntq_m): Remove.
18047
18048 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
18049
18050 * config/arm/iterators.md (MVE_SHRN_N): Add VQRSHRUNBQ,
18051 VQRSHRUNTQ, VQSHRUNBQ, VQSHRUNTQ.
18052 (MVE_SHRN_M_N): Likewise.
18053 (mve_insn): Add vqrshrunb, vqrshrunt, vqshrunb, vqshrunt.
18054 (isu): Add VQRSHRUNBQ, VQRSHRUNTQ, VQSHRUNBQ, VQSHRUNTQ.
18055 (supf): Likewise.
18056 * config/arm/mve.md (mve_vqrshrunbq_n_s<mode>): Remove.
18057 (mve_vqrshruntq_n_s<mode>): Remove.
18058 (mve_vqshrunbq_n_s<mode>): Remove.
18059 (mve_vqshruntq_n_s<mode>): Remove.
18060 (mve_vqrshrunbq_m_n_s<mode>): Remove.
18061 (mve_vqrshruntq_m_n_s<mode>): Remove.
18062 (mve_vqshrunbq_m_n_s<mode>): Remove.
18063 (mve_vqshruntq_m_n_s<mode>): Remove.
18064
18065 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
18066
18067 * config/arm/arm-mve-builtins-shapes.cc
18068 (binary_rshift_narrow_unsigned): New.
18069 * config/arm/arm-mve-builtins-shapes.h
18070 (binary_rshift_narrow_unsigned): New.
18071
18072 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
18073
18074 * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N_NO_F): New.
18075 (vshrnbq, vshrntq, vrshrnbq, vrshrntq, vqshrnbq, vqshrntq)
18076 (vqrshrnbq, vqrshrntq): New.
18077 * config/arm/arm-mve-builtins-base.def (vshrnbq, vshrntq)
18078 (vrshrnbq, vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq, vqrshrntq):
18079 New.
18080 * config/arm/arm-mve-builtins-base.h (vshrnbq, vshrntq, vrshrnbq)
18081 (vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq, vqrshrntq): New.
18082 * config/arm/arm-mve-builtins.cc
18083 (function_instance::has_inactive_argument): Handle vshrnbq,
18084 vshrntq, vrshrnbq, vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq,
18085 vqrshrntq.
18086 * config/arm/arm_mve.h (vshrnbq): Remove.
18087 (vshrntq): Remove.
18088 (vshrnbq_m): Remove.
18089 (vshrntq_m): Remove.
18090 (vshrnbq_n_s16): Remove.
18091 (vshrntq_n_s16): Remove.
18092 (vshrnbq_n_u16): Remove.
18093 (vshrntq_n_u16): Remove.
18094 (vshrnbq_n_s32): Remove.
18095 (vshrntq_n_s32): Remove.
18096 (vshrnbq_n_u32): Remove.
18097 (vshrntq_n_u32): Remove.
18098 (vshrnbq_m_n_s32): Remove.
18099 (vshrnbq_m_n_s16): Remove.
18100 (vshrnbq_m_n_u32): Remove.
18101 (vshrnbq_m_n_u16): Remove.
18102 (vshrntq_m_n_s32): Remove.
18103 (vshrntq_m_n_s16): Remove.
18104 (vshrntq_m_n_u32): Remove.
18105 (vshrntq_m_n_u16): Remove.
18106 (__arm_vshrnbq_n_s16): Remove.
18107 (__arm_vshrntq_n_s16): Remove.
18108 (__arm_vshrnbq_n_u16): Remove.
18109 (__arm_vshrntq_n_u16): Remove.
18110 (__arm_vshrnbq_n_s32): Remove.
18111 (__arm_vshrntq_n_s32): Remove.
18112 (__arm_vshrnbq_n_u32): Remove.
18113 (__arm_vshrntq_n_u32): Remove.
18114 (__arm_vshrnbq_m_n_s32): Remove.
18115 (__arm_vshrnbq_m_n_s16): Remove.
18116 (__arm_vshrnbq_m_n_u32): Remove.
18117 (__arm_vshrnbq_m_n_u16): Remove.
18118 (__arm_vshrntq_m_n_s32): Remove.
18119 (__arm_vshrntq_m_n_s16): Remove.
18120 (__arm_vshrntq_m_n_u32): Remove.
18121 (__arm_vshrntq_m_n_u16): Remove.
18122 (__arm_vshrnbq): Remove.
18123 (__arm_vshrntq): Remove.
18124 (__arm_vshrnbq_m): Remove.
18125 (__arm_vshrntq_m): Remove.
18126 (vrshrnbq): Remove.
18127 (vrshrntq): Remove.
18128 (vrshrnbq_m): Remove.
18129 (vrshrntq_m): Remove.
18130 (vrshrnbq_n_s16): Remove.
18131 (vrshrntq_n_s16): Remove.
18132 (vrshrnbq_n_u16): Remove.
18133 (vrshrntq_n_u16): Remove.
18134 (vrshrnbq_n_s32): Remove.
18135 (vrshrntq_n_s32): Remove.
18136 (vrshrnbq_n_u32): Remove.
18137 (vrshrntq_n_u32): Remove.
18138 (vrshrnbq_m_n_s32): Remove.
18139 (vrshrnbq_m_n_s16): Remove.
18140 (vrshrnbq_m_n_u32): Remove.
18141 (vrshrnbq_m_n_u16): Remove.
18142 (vrshrntq_m_n_s32): Remove.
18143 (vrshrntq_m_n_s16): Remove.
18144 (vrshrntq_m_n_u32): Remove.
18145 (vrshrntq_m_n_u16): Remove.
18146 (__arm_vrshrnbq_n_s16): Remove.
18147 (__arm_vrshrntq_n_s16): Remove.
18148 (__arm_vrshrnbq_n_u16): Remove.
18149 (__arm_vrshrntq_n_u16): Remove.
18150 (__arm_vrshrnbq_n_s32): Remove.
18151 (__arm_vrshrntq_n_s32): Remove.
18152 (__arm_vrshrnbq_n_u32): Remove.
18153 (__arm_vrshrntq_n_u32): Remove.
18154 (__arm_vrshrnbq_m_n_s32): Remove.
18155 (__arm_vrshrnbq_m_n_s16): Remove.
18156 (__arm_vrshrnbq_m_n_u32): Remove.
18157 (__arm_vrshrnbq_m_n_u16): Remove.
18158 (__arm_vrshrntq_m_n_s32): Remove.
18159 (__arm_vrshrntq_m_n_s16): Remove.
18160 (__arm_vrshrntq_m_n_u32): Remove.
18161 (__arm_vrshrntq_m_n_u16): Remove.
18162 (__arm_vrshrnbq): Remove.
18163 (__arm_vrshrntq): Remove.
18164 (__arm_vrshrnbq_m): Remove.
18165 (__arm_vrshrntq_m): Remove.
18166 (vqshrnbq): Remove.
18167 (vqshrntq): Remove.
18168 (vqshrnbq_m): Remove.
18169 (vqshrntq_m): Remove.
18170 (vqshrnbq_n_s16): Remove.
18171 (vqshrntq_n_s16): Remove.
18172 (vqshrnbq_n_u16): Remove.
18173 (vqshrntq_n_u16): Remove.
18174 (vqshrnbq_n_s32): Remove.
18175 (vqshrntq_n_s32): Remove.
18176 (vqshrnbq_n_u32): Remove.
18177 (vqshrntq_n_u32): Remove.
18178 (vqshrnbq_m_n_s32): Remove.
18179 (vqshrnbq_m_n_s16): Remove.
18180 (vqshrnbq_m_n_u32): Remove.
18181 (vqshrnbq_m_n_u16): Remove.
18182 (vqshrntq_m_n_s32): Remove.
18183 (vqshrntq_m_n_s16): Remove.
18184 (vqshrntq_m_n_u32): Remove.
18185 (vqshrntq_m_n_u16): Remove.
18186 (__arm_vqshrnbq_n_s16): Remove.
18187 (__arm_vqshrntq_n_s16): Remove.
18188 (__arm_vqshrnbq_n_u16): Remove.
18189 (__arm_vqshrntq_n_u16): Remove.
18190 (__arm_vqshrnbq_n_s32): Remove.
18191 (__arm_vqshrntq_n_s32): Remove.
18192 (__arm_vqshrnbq_n_u32): Remove.
18193 (__arm_vqshrntq_n_u32): Remove.
18194 (__arm_vqshrnbq_m_n_s32): Remove.
18195 (__arm_vqshrnbq_m_n_s16): Remove.
18196 (__arm_vqshrnbq_m_n_u32): Remove.
18197 (__arm_vqshrnbq_m_n_u16): Remove.
18198 (__arm_vqshrntq_m_n_s32): Remove.
18199 (__arm_vqshrntq_m_n_s16): Remove.
18200 (__arm_vqshrntq_m_n_u32): Remove.
18201 (__arm_vqshrntq_m_n_u16): Remove.
18202 (__arm_vqshrnbq): Remove.
18203 (__arm_vqshrntq): Remove.
18204 (__arm_vqshrnbq_m): Remove.
18205 (__arm_vqshrntq_m): Remove.
18206 (vqrshrnbq): Remove.
18207 (vqrshrntq): Remove.
18208 (vqrshrnbq_m): Remove.
18209 (vqrshrntq_m): Remove.
18210 (vqrshrnbq_n_s16): Remove.
18211 (vqrshrnbq_n_u16): Remove.
18212 (vqrshrnbq_n_s32): Remove.
18213 (vqrshrnbq_n_u32): Remove.
18214 (vqrshrntq_n_s16): Remove.
18215 (vqrshrntq_n_u16): Remove.
18216 (vqrshrntq_n_s32): Remove.
18217 (vqrshrntq_n_u32): Remove.
18218 (vqrshrnbq_m_n_s32): Remove.
18219 (vqrshrnbq_m_n_s16): Remove.
18220 (vqrshrnbq_m_n_u32): Remove.
18221 (vqrshrnbq_m_n_u16): Remove.
18222 (vqrshrntq_m_n_s32): Remove.
18223 (vqrshrntq_m_n_s16): Remove.
18224 (vqrshrntq_m_n_u32): Remove.
18225 (vqrshrntq_m_n_u16): Remove.
18226 (__arm_vqrshrnbq_n_s16): Remove.
18227 (__arm_vqrshrnbq_n_u16): Remove.
18228 (__arm_vqrshrnbq_n_s32): Remove.
18229 (__arm_vqrshrnbq_n_u32): Remove.
18230 (__arm_vqrshrntq_n_s16): Remove.
18231 (__arm_vqrshrntq_n_u16): Remove.
18232 (__arm_vqrshrntq_n_s32): Remove.
18233 (__arm_vqrshrntq_n_u32): Remove.
18234 (__arm_vqrshrnbq_m_n_s32): Remove.
18235 (__arm_vqrshrnbq_m_n_s16): Remove.
18236 (__arm_vqrshrnbq_m_n_u32): Remove.
18237 (__arm_vqrshrnbq_m_n_u16): Remove.
18238 (__arm_vqrshrntq_m_n_s32): Remove.
18239 (__arm_vqrshrntq_m_n_s16): Remove.
18240 (__arm_vqrshrntq_m_n_u32): Remove.
18241 (__arm_vqrshrntq_m_n_u16): Remove.
18242 (__arm_vqrshrnbq): Remove.
18243 (__arm_vqrshrntq): Remove.
18244 (__arm_vqrshrnbq_m): Remove.
18245 (__arm_vqrshrntq_m): Remove.
18246
18247 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
18248
18249 * config/arm/iterators.md (MVE_SHRN_N, MVE_SHRN_M_N): New.
18250 (mve_insn): Add vqrshrnb, vqrshrnt, vqshrnb, vqshrnt, vrshrnb,
18251 vrshrnt, vshrnb, vshrnt.
18252 (isu): New.
18253 * config/arm/mve.md (mve_vqrshrnbq_n_<supf><mode>)
18254 (mve_vqrshrntq_n_<supf><mode>, mve_vqshrnbq_n_<supf><mode>)
18255 (mve_vqshrntq_n_<supf><mode>, mve_vrshrnbq_n_<supf><mode>)
18256 (mve_vrshrntq_n_<supf><mode>, mve_vshrnbq_n_<supf><mode>)
18257 (mve_vshrntq_n_<supf><mode>): Merge into ...
18258 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
18259 (mve_vqrshrnbq_m_n_<supf><mode>, mve_vqrshrntq_m_n_<supf><mode>)
18260 (mve_vqshrnbq_m_n_<supf><mode>, mve_vqshrntq_m_n_<supf><mode>)
18261 (mve_vrshrnbq_m_n_<supf><mode>, mve_vrshrntq_m_n_<supf><mode>)
18262 (mve_vshrnbq_m_n_<supf><mode>, mve_vshrntq_m_n_<supf><mode>):
18263 Merge into ...
18264 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
18265
18266 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
18267
18268 * config/arm/arm-mve-builtins-shapes.cc (binary_rshift_narrow):
18269 New.
18270 * config/arm/arm-mve-builtins-shapes.h (binary_rshift_narrow): New.
18271
18272 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
18273
18274 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_NO_F): New.
18275 (vmaxq, vminq): New.
18276 * config/arm/arm-mve-builtins-base.def (vmaxq, vminq): New.
18277 * config/arm/arm-mve-builtins-base.h (vmaxq, vminq): New.
18278 * config/arm/arm_mve.h (vminq): Remove.
18279 (vmaxq): Remove.
18280 (vmaxq_m): Remove.
18281 (vminq_m): Remove.
18282 (vminq_x): Remove.
18283 (vmaxq_x): Remove.
18284 (vminq_u8): Remove.
18285 (vmaxq_u8): Remove.
18286 (vminq_s8): Remove.
18287 (vmaxq_s8): Remove.
18288 (vminq_u16): Remove.
18289 (vmaxq_u16): Remove.
18290 (vminq_s16): Remove.
18291 (vmaxq_s16): Remove.
18292 (vminq_u32): Remove.
18293 (vmaxq_u32): Remove.
18294 (vminq_s32): Remove.
18295 (vmaxq_s32): Remove.
18296 (vmaxq_m_s8): Remove.
18297 (vmaxq_m_s32): Remove.
18298 (vmaxq_m_s16): Remove.
18299 (vmaxq_m_u8): Remove.
18300 (vmaxq_m_u32): Remove.
18301 (vmaxq_m_u16): Remove.
18302 (vminq_m_s8): Remove.
18303 (vminq_m_s32): Remove.
18304 (vminq_m_s16): Remove.
18305 (vminq_m_u8): Remove.
18306 (vminq_m_u32): Remove.
18307 (vminq_m_u16): Remove.
18308 (vminq_x_s8): Remove.
18309 (vminq_x_s16): Remove.
18310 (vminq_x_s32): Remove.
18311 (vminq_x_u8): Remove.
18312 (vminq_x_u16): Remove.
18313 (vminq_x_u32): Remove.
18314 (vmaxq_x_s8): Remove.
18315 (vmaxq_x_s16): Remove.
18316 (vmaxq_x_s32): Remove.
18317 (vmaxq_x_u8): Remove.
18318 (vmaxq_x_u16): Remove.
18319 (vmaxq_x_u32): Remove.
18320 (__arm_vminq_u8): Remove.
18321 (__arm_vmaxq_u8): Remove.
18322 (__arm_vminq_s8): Remove.
18323 (__arm_vmaxq_s8): Remove.
18324 (__arm_vminq_u16): Remove.
18325 (__arm_vmaxq_u16): Remove.
18326 (__arm_vminq_s16): Remove.
18327 (__arm_vmaxq_s16): Remove.
18328 (__arm_vminq_u32): Remove.
18329 (__arm_vmaxq_u32): Remove.
18330 (__arm_vminq_s32): Remove.
18331 (__arm_vmaxq_s32): Remove.
18332 (__arm_vmaxq_m_s8): Remove.
18333 (__arm_vmaxq_m_s32): Remove.
18334 (__arm_vmaxq_m_s16): Remove.
18335 (__arm_vmaxq_m_u8): Remove.
18336 (__arm_vmaxq_m_u32): Remove.
18337 (__arm_vmaxq_m_u16): Remove.
18338 (__arm_vminq_m_s8): Remove.
18339 (__arm_vminq_m_s32): Remove.
18340 (__arm_vminq_m_s16): Remove.
18341 (__arm_vminq_m_u8): Remove.
18342 (__arm_vminq_m_u32): Remove.
18343 (__arm_vminq_m_u16): Remove.
18344 (__arm_vminq_x_s8): Remove.
18345 (__arm_vminq_x_s16): Remove.
18346 (__arm_vminq_x_s32): Remove.
18347 (__arm_vminq_x_u8): Remove.
18348 (__arm_vminq_x_u16): Remove.
18349 (__arm_vminq_x_u32): Remove.
18350 (__arm_vmaxq_x_s8): Remove.
18351 (__arm_vmaxq_x_s16): Remove.
18352 (__arm_vmaxq_x_s32): Remove.
18353 (__arm_vmaxq_x_u8): Remove.
18354 (__arm_vmaxq_x_u16): Remove.
18355 (__arm_vmaxq_x_u32): Remove.
18356 (__arm_vminq): Remove.
18357 (__arm_vmaxq): Remove.
18358 (__arm_vmaxq_m): Remove.
18359 (__arm_vminq_m): Remove.
18360 (__arm_vminq_x): Remove.
18361 (__arm_vmaxq_x): Remove.
18362
18363 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
18364
18365 * config/arm/iterators.md (MAX_MIN_SU): New.
18366 (max_min_su_str): New.
18367 (max_min_supf): New.
18368 * config/arm/mve.md (mve_vmaxq_s<mode>, mve_vmaxq_u<mode>)
18369 (mve_vminq_s<mode>, mve_vminq_u<mode>): Merge into ...
18370 (mve_<max_min_su_str>q_<max_min_supf><mode>): ... this.
18371
18372 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
18373
18374 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_M_N_R): New.
18375 (vqshlq, vshlq): New.
18376 * config/arm/arm-mve-builtins-base.def (vqshlq, vshlq): New.
18377 * config/arm/arm-mve-builtins-base.h (vqshlq, vshlq): New.
18378 * config/arm/arm_mve.h (vshlq): Remove.
18379 (vshlq_r): Remove.
18380 (vshlq_n): Remove.
18381 (vshlq_m_r): Remove.
18382 (vshlq_m): Remove.
18383 (vshlq_m_n): Remove.
18384 (vshlq_x): Remove.
18385 (vshlq_x_n): Remove.
18386 (vshlq_s8): Remove.
18387 (vshlq_s16): Remove.
18388 (vshlq_s32): Remove.
18389 (vshlq_u8): Remove.
18390 (vshlq_u16): Remove.
18391 (vshlq_u32): Remove.
18392 (vshlq_r_u8): Remove.
18393 (vshlq_n_u8): Remove.
18394 (vshlq_r_s8): Remove.
18395 (vshlq_n_s8): Remove.
18396 (vshlq_r_u16): Remove.
18397 (vshlq_n_u16): Remove.
18398 (vshlq_r_s16): Remove.
18399 (vshlq_n_s16): Remove.
18400 (vshlq_r_u32): Remove.
18401 (vshlq_n_u32): Remove.
18402 (vshlq_r_s32): Remove.
18403 (vshlq_n_s32): Remove.
18404 (vshlq_m_r_u8): Remove.
18405 (vshlq_m_r_s8): Remove.
18406 (vshlq_m_r_u16): Remove.
18407 (vshlq_m_r_s16): Remove.
18408 (vshlq_m_r_u32): Remove.
18409 (vshlq_m_r_s32): Remove.
18410 (vshlq_m_u8): Remove.
18411 (vshlq_m_s8): Remove.
18412 (vshlq_m_u16): Remove.
18413 (vshlq_m_s16): Remove.
18414 (vshlq_m_u32): Remove.
18415 (vshlq_m_s32): Remove.
18416 (vshlq_m_n_s8): Remove.
18417 (vshlq_m_n_s32): Remove.
18418 (vshlq_m_n_s16): Remove.
18419 (vshlq_m_n_u8): Remove.
18420 (vshlq_m_n_u32): Remove.
18421 (vshlq_m_n_u16): Remove.
18422 (vshlq_x_s8): Remove.
18423 (vshlq_x_s16): Remove.
18424 (vshlq_x_s32): Remove.
18425 (vshlq_x_u8): Remove.
18426 (vshlq_x_u16): Remove.
18427 (vshlq_x_u32): Remove.
18428 (vshlq_x_n_s8): Remove.
18429 (vshlq_x_n_s16): Remove.
18430 (vshlq_x_n_s32): Remove.
18431 (vshlq_x_n_u8): Remove.
18432 (vshlq_x_n_u16): Remove.
18433 (vshlq_x_n_u32): Remove.
18434 (__arm_vshlq_s8): Remove.
18435 (__arm_vshlq_s16): Remove.
18436 (__arm_vshlq_s32): Remove.
18437 (__arm_vshlq_u8): Remove.
18438 (__arm_vshlq_u16): Remove.
18439 (__arm_vshlq_u32): Remove.
18440 (__arm_vshlq_r_u8): Remove.
18441 (__arm_vshlq_n_u8): Remove.
18442 (__arm_vshlq_r_s8): Remove.
18443 (__arm_vshlq_n_s8): Remove.
18444 (__arm_vshlq_r_u16): Remove.
18445 (__arm_vshlq_n_u16): Remove.
18446 (__arm_vshlq_r_s16): Remove.
18447 (__arm_vshlq_n_s16): Remove.
18448 (__arm_vshlq_r_u32): Remove.
18449 (__arm_vshlq_n_u32): Remove.
18450 (__arm_vshlq_r_s32): Remove.
18451 (__arm_vshlq_n_s32): Remove.
18452 (__arm_vshlq_m_r_u8): Remove.
18453 (__arm_vshlq_m_r_s8): Remove.
18454 (__arm_vshlq_m_r_u16): Remove.
18455 (__arm_vshlq_m_r_s16): Remove.
18456 (__arm_vshlq_m_r_u32): Remove.
18457 (__arm_vshlq_m_r_s32): Remove.
18458 (__arm_vshlq_m_u8): Remove.
18459 (__arm_vshlq_m_s8): Remove.
18460 (__arm_vshlq_m_u16): Remove.
18461 (__arm_vshlq_m_s16): Remove.
18462 (__arm_vshlq_m_u32): Remove.
18463 (__arm_vshlq_m_s32): Remove.
18464 (__arm_vshlq_m_n_s8): Remove.
18465 (__arm_vshlq_m_n_s32): Remove.
18466 (__arm_vshlq_m_n_s16): Remove.
18467 (__arm_vshlq_m_n_u8): Remove.
18468 (__arm_vshlq_m_n_u32): Remove.
18469 (__arm_vshlq_m_n_u16): Remove.
18470 (__arm_vshlq_x_s8): Remove.
18471 (__arm_vshlq_x_s16): Remove.
18472 (__arm_vshlq_x_s32): Remove.
18473 (__arm_vshlq_x_u8): Remove.
18474 (__arm_vshlq_x_u16): Remove.
18475 (__arm_vshlq_x_u32): Remove.
18476 (__arm_vshlq_x_n_s8): Remove.
18477 (__arm_vshlq_x_n_s16): Remove.
18478 (__arm_vshlq_x_n_s32): Remove.
18479 (__arm_vshlq_x_n_u8): Remove.
18480 (__arm_vshlq_x_n_u16): Remove.
18481 (__arm_vshlq_x_n_u32): Remove.
18482 (__arm_vshlq): Remove.
18483 (__arm_vshlq_r): Remove.
18484 (__arm_vshlq_n): Remove.
18485 (__arm_vshlq_m_r): Remove.
18486 (__arm_vshlq_m): Remove.
18487 (__arm_vshlq_m_n): Remove.
18488 (__arm_vshlq_x): Remove.
18489 (__arm_vshlq_x_n): Remove.
18490 (vqshlq): Remove.
18491 (vqshlq_r): Remove.
18492 (vqshlq_n): Remove.
18493 (vqshlq_m_r): Remove.
18494 (vqshlq_m_n): Remove.
18495 (vqshlq_m): Remove.
18496 (vqshlq_u8): Remove.
18497 (vqshlq_r_u8): Remove.
18498 (vqshlq_n_u8): Remove.
18499 (vqshlq_s8): Remove.
18500 (vqshlq_r_s8): Remove.
18501 (vqshlq_n_s8): Remove.
18502 (vqshlq_u16): Remove.
18503 (vqshlq_r_u16): Remove.
18504 (vqshlq_n_u16): Remove.
18505 (vqshlq_s16): Remove.
18506 (vqshlq_r_s16): Remove.
18507 (vqshlq_n_s16): Remove.
18508 (vqshlq_u32): Remove.
18509 (vqshlq_r_u32): Remove.
18510 (vqshlq_n_u32): Remove.
18511 (vqshlq_s32): Remove.
18512 (vqshlq_r_s32): Remove.
18513 (vqshlq_n_s32): Remove.
18514 (vqshlq_m_r_u8): Remove.
18515 (vqshlq_m_r_s8): Remove.
18516 (vqshlq_m_r_u16): Remove.
18517 (vqshlq_m_r_s16): Remove.
18518 (vqshlq_m_r_u32): Remove.
18519 (vqshlq_m_r_s32): Remove.
18520 (vqshlq_m_n_s8): Remove.
18521 (vqshlq_m_n_s32): Remove.
18522 (vqshlq_m_n_s16): Remove.
18523 (vqshlq_m_n_u8): Remove.
18524 (vqshlq_m_n_u32): Remove.
18525 (vqshlq_m_n_u16): Remove.
18526 (vqshlq_m_s8): Remove.
18527 (vqshlq_m_s32): Remove.
18528 (vqshlq_m_s16): Remove.
18529 (vqshlq_m_u8): Remove.
18530 (vqshlq_m_u32): Remove.
18531 (vqshlq_m_u16): Remove.
18532 (__arm_vqshlq_u8): Remove.
18533 (__arm_vqshlq_r_u8): Remove.
18534 (__arm_vqshlq_n_u8): Remove.
18535 (__arm_vqshlq_s8): Remove.
18536 (__arm_vqshlq_r_s8): Remove.
18537 (__arm_vqshlq_n_s8): Remove.
18538 (__arm_vqshlq_u16): Remove.
18539 (__arm_vqshlq_r_u16): Remove.
18540 (__arm_vqshlq_n_u16): Remove.
18541 (__arm_vqshlq_s16): Remove.
18542 (__arm_vqshlq_r_s16): Remove.
18543 (__arm_vqshlq_n_s16): Remove.
18544 (__arm_vqshlq_u32): Remove.
18545 (__arm_vqshlq_r_u32): Remove.
18546 (__arm_vqshlq_n_u32): Remove.
18547 (__arm_vqshlq_s32): Remove.
18548 (__arm_vqshlq_r_s32): Remove.
18549 (__arm_vqshlq_n_s32): Remove.
18550 (__arm_vqshlq_m_r_u8): Remove.
18551 (__arm_vqshlq_m_r_s8): Remove.
18552 (__arm_vqshlq_m_r_u16): Remove.
18553 (__arm_vqshlq_m_r_s16): Remove.
18554 (__arm_vqshlq_m_r_u32): Remove.
18555 (__arm_vqshlq_m_r_s32): Remove.
18556 (__arm_vqshlq_m_n_s8): Remove.
18557 (__arm_vqshlq_m_n_s32): Remove.
18558 (__arm_vqshlq_m_n_s16): Remove.
18559 (__arm_vqshlq_m_n_u8): Remove.
18560 (__arm_vqshlq_m_n_u32): Remove.
18561 (__arm_vqshlq_m_n_u16): Remove.
18562 (__arm_vqshlq_m_s8): Remove.
18563 (__arm_vqshlq_m_s32): Remove.
18564 (__arm_vqshlq_m_s16): Remove.
18565 (__arm_vqshlq_m_u8): Remove.
18566 (__arm_vqshlq_m_u32): Remove.
18567 (__arm_vqshlq_m_u16): Remove.
18568 (__arm_vqshlq): Remove.
18569 (__arm_vqshlq_r): Remove.
18570 (__arm_vqshlq_n): Remove.
18571 (__arm_vqshlq_m_r): Remove.
18572 (__arm_vqshlq_m_n): Remove.
18573 (__arm_vqshlq_m): Remove.
18574
18575 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
18576
18577 * config/arm/arm-mve-builtins-functions.h (class
18578 unspec_mve_function_exact_insn_vshl): New.
18579
18580 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
18581
18582 * config/arm/arm-mve-builtins-shapes.cc (binary_lshift_r): New.
18583 * config/arm/arm-mve-builtins-shapes.h (binary_lshift_r): New.
18584
18585 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
18586
18587 * config/arm/arm-mve-builtins.cc (has_inactive_argument)
18588 (finish_opt_n_resolution): Handle MODE_r.
18589 * config/arm/arm-mve-builtins.def (r): New mode.
18590
18591 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
18592
18593 * config/arm/arm-mve-builtins-shapes.cc (binary_lshift): New.
18594 * config/arm/arm-mve-builtins-shapes.h (binary_lshift): New.
18595
18596 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
18597
18598 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_N): New.
18599 (vabdq): New.
18600 * config/arm/arm-mve-builtins-base.def (vabdq): New.
18601 * config/arm/arm-mve-builtins-base.h (vabdq): New.
18602 * config/arm/arm_mve.h (vabdq): Remove.
18603 (vabdq_m): Remove.
18604 (vabdq_x): Remove.
18605 (vabdq_u8): Remove.
18606 (vabdq_s8): Remove.
18607 (vabdq_u16): Remove.
18608 (vabdq_s16): Remove.
18609 (vabdq_u32): Remove.
18610 (vabdq_s32): Remove.
18611 (vabdq_f16): Remove.
18612 (vabdq_f32): Remove.
18613 (vabdq_m_s8): Remove.
18614 (vabdq_m_s32): Remove.
18615 (vabdq_m_s16): Remove.
18616 (vabdq_m_u8): Remove.
18617 (vabdq_m_u32): Remove.
18618 (vabdq_m_u16): Remove.
18619 (vabdq_m_f32): Remove.
18620 (vabdq_m_f16): Remove.
18621 (vabdq_x_s8): Remove.
18622 (vabdq_x_s16): Remove.
18623 (vabdq_x_s32): Remove.
18624 (vabdq_x_u8): Remove.
18625 (vabdq_x_u16): Remove.
18626 (vabdq_x_u32): Remove.
18627 (vabdq_x_f16): Remove.
18628 (vabdq_x_f32): Remove.
18629 (__arm_vabdq_u8): Remove.
18630 (__arm_vabdq_s8): Remove.
18631 (__arm_vabdq_u16): Remove.
18632 (__arm_vabdq_s16): Remove.
18633 (__arm_vabdq_u32): Remove.
18634 (__arm_vabdq_s32): Remove.
18635 (__arm_vabdq_m_s8): Remove.
18636 (__arm_vabdq_m_s32): Remove.
18637 (__arm_vabdq_m_s16): Remove.
18638 (__arm_vabdq_m_u8): Remove.
18639 (__arm_vabdq_m_u32): Remove.
18640 (__arm_vabdq_m_u16): Remove.
18641 (__arm_vabdq_x_s8): Remove.
18642 (__arm_vabdq_x_s16): Remove.
18643 (__arm_vabdq_x_s32): Remove.
18644 (__arm_vabdq_x_u8): Remove.
18645 (__arm_vabdq_x_u16): Remove.
18646 (__arm_vabdq_x_u32): Remove.
18647 (__arm_vabdq_f16): Remove.
18648 (__arm_vabdq_f32): Remove.
18649 (__arm_vabdq_m_f32): Remove.
18650 (__arm_vabdq_m_f16): Remove.
18651 (__arm_vabdq_x_f16): Remove.
18652 (__arm_vabdq_x_f32): Remove.
18653 (__arm_vabdq): Remove.
18654 (__arm_vabdq_m): Remove.
18655 (__arm_vabdq_x): Remove.
18656
18657 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
18658
18659 * config/arm/iterators.md (MVE_FP_M_BINARY): Add vabdq.
18660 (MVE_FP_VABDQ_ONLY): New.
18661 (mve_insn): Add vabd.
18662 * config/arm/mve.md (mve_vabdq_f<mode>): Move into ...
18663 (@mve_<mve_insn>q_f<mode>): ... this.
18664 (mve_vabdq_m_f<mode>): Remove.
18665
18666 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
18667
18668 * config/arm/arm-mve-builtins-base.cc (vqrdmulhq): New.
18669 * config/arm/arm-mve-builtins-base.def (vqrdmulhq): New.
18670 * config/arm/arm-mve-builtins-base.h (vqrdmulhq): New.
18671 * config/arm/arm_mve.h (vqrdmulhq): Remove.
18672 (vqrdmulhq_m): Remove.
18673 (vqrdmulhq_s8): Remove.
18674 (vqrdmulhq_n_s8): Remove.
18675 (vqrdmulhq_s16): Remove.
18676 (vqrdmulhq_n_s16): Remove.
18677 (vqrdmulhq_s32): Remove.
18678 (vqrdmulhq_n_s32): Remove.
18679 (vqrdmulhq_m_n_s8): Remove.
18680 (vqrdmulhq_m_n_s32): Remove.
18681 (vqrdmulhq_m_n_s16): Remove.
18682 (vqrdmulhq_m_s8): Remove.
18683 (vqrdmulhq_m_s32): Remove.
18684 (vqrdmulhq_m_s16): Remove.
18685 (__arm_vqrdmulhq_s8): Remove.
18686 (__arm_vqrdmulhq_n_s8): Remove.
18687 (__arm_vqrdmulhq_s16): Remove.
18688 (__arm_vqrdmulhq_n_s16): Remove.
18689 (__arm_vqrdmulhq_s32): Remove.
18690 (__arm_vqrdmulhq_n_s32): Remove.
18691 (__arm_vqrdmulhq_m_n_s8): Remove.
18692 (__arm_vqrdmulhq_m_n_s32): Remove.
18693 (__arm_vqrdmulhq_m_n_s16): Remove.
18694 (__arm_vqrdmulhq_m_s8): Remove.
18695 (__arm_vqrdmulhq_m_s32): Remove.
18696 (__arm_vqrdmulhq_m_s16): Remove.
18697 (__arm_vqrdmulhq): Remove.
18698 (__arm_vqrdmulhq_m): Remove.
18699
18700 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
18701
18702 * config/arm/iterators.md (MVE_SHIFT_M_R, MVE_SHIFT_M_N)
18703 (MVE_SHIFT_N, MVE_SHIFT_R): New.
18704 (mve_insn): Add vqshl, vshl.
18705 * config/arm/mve.md (mve_vqshlq_n_<supf><mode>)
18706 (mve_vshlq_n_<supf><mode>): Merge into ...
18707 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
18708 (mve_vqshlq_r_<supf><mode>, mve_vshlq_r_<supf><mode>): Merge into
18709 ...
18710 (@mve_<mve_insn>q_r_<supf><mode>): ... this.
18711 (mve_vqshlq_m_r_<supf><mode>, mve_vshlq_m_r_<supf><mode>): Merge
18712 into ...
18713 (@mve_<mve_insn>q_m_r_<supf><mode>): ... this.
18714 (mve_vqshlq_m_n_<supf><mode>, mve_vshlq_m_n_<supf><mode>): Merge
18715 into ...
18716 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
18717 * config/arm/vec-common.md (mve_vshlq_<supf><mode>): Transform
18718 into ...
18719 (@mve_<mve_insn>q_<supf><mode>): ... this.
18720
18721 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
18722
18723 * config/arm/arm-mve-builtins-base.cc (vqrshlq, vrshlq): New.
18724 * config/arm/arm-mve-builtins-base.def (vqrshlq, vrshlq): New.
18725 * config/arm/arm-mve-builtins-base.h (vqrshlq, vrshlq): New.
18726 * config/arm/arm-mve-builtins.cc (has_inactive_argument): Handle
18727 vqrshlq, vrshlq.
18728 * config/arm/arm_mve.h (vrshlq): Remove.
18729 (vrshlq_m_n): Remove.
18730 (vrshlq_m): Remove.
18731 (vrshlq_x): Remove.
18732 (vrshlq_u8): Remove.
18733 (vrshlq_n_u8): Remove.
18734 (vrshlq_s8): Remove.
18735 (vrshlq_n_s8): Remove.
18736 (vrshlq_u16): Remove.
18737 (vrshlq_n_u16): Remove.
18738 (vrshlq_s16): Remove.
18739 (vrshlq_n_s16): Remove.
18740 (vrshlq_u32): Remove.
18741 (vrshlq_n_u32): Remove.
18742 (vrshlq_s32): Remove.
18743 (vrshlq_n_s32): Remove.
18744 (vrshlq_m_n_u8): Remove.
18745 (vrshlq_m_n_s8): Remove.
18746 (vrshlq_m_n_u16): Remove.
18747 (vrshlq_m_n_s16): Remove.
18748 (vrshlq_m_n_u32): Remove.
18749 (vrshlq_m_n_s32): Remove.
18750 (vrshlq_m_s8): Remove.
18751 (vrshlq_m_s32): Remove.
18752 (vrshlq_m_s16): Remove.
18753 (vrshlq_m_u8): Remove.
18754 (vrshlq_m_u32): Remove.
18755 (vrshlq_m_u16): Remove.
18756 (vrshlq_x_s8): Remove.
18757 (vrshlq_x_s16): Remove.
18758 (vrshlq_x_s32): Remove.
18759 (vrshlq_x_u8): Remove.
18760 (vrshlq_x_u16): Remove.
18761 (vrshlq_x_u32): Remove.
18762 (__arm_vrshlq_u8): Remove.
18763 (__arm_vrshlq_n_u8): Remove.
18764 (__arm_vrshlq_s8): Remove.
18765 (__arm_vrshlq_n_s8): Remove.
18766 (__arm_vrshlq_u16): Remove.
18767 (__arm_vrshlq_n_u16): Remove.
18768 (__arm_vrshlq_s16): Remove.
18769 (__arm_vrshlq_n_s16): Remove.
18770 (__arm_vrshlq_u32): Remove.
18771 (__arm_vrshlq_n_u32): Remove.
18772 (__arm_vrshlq_s32): Remove.
18773 (__arm_vrshlq_n_s32): Remove.
18774 (__arm_vrshlq_m_n_u8): Remove.
18775 (__arm_vrshlq_m_n_s8): Remove.
18776 (__arm_vrshlq_m_n_u16): Remove.
18777 (__arm_vrshlq_m_n_s16): Remove.
18778 (__arm_vrshlq_m_n_u32): Remove.
18779 (__arm_vrshlq_m_n_s32): Remove.
18780 (__arm_vrshlq_m_s8): Remove.
18781 (__arm_vrshlq_m_s32): Remove.
18782 (__arm_vrshlq_m_s16): Remove.
18783 (__arm_vrshlq_m_u8): Remove.
18784 (__arm_vrshlq_m_u32): Remove.
18785 (__arm_vrshlq_m_u16): Remove.
18786 (__arm_vrshlq_x_s8): Remove.
18787 (__arm_vrshlq_x_s16): Remove.
18788 (__arm_vrshlq_x_s32): Remove.
18789 (__arm_vrshlq_x_u8): Remove.
18790 (__arm_vrshlq_x_u16): Remove.
18791 (__arm_vrshlq_x_u32): Remove.
18792 (__arm_vrshlq): Remove.
18793 (__arm_vrshlq_m_n): Remove.
18794 (__arm_vrshlq_m): Remove.
18795 (__arm_vrshlq_x): Remove.
18796 (vqrshlq): Remove.
18797 (vqrshlq_m_n): Remove.
18798 (vqrshlq_m): Remove.
18799 (vqrshlq_u8): Remove.
18800 (vqrshlq_n_u8): Remove.
18801 (vqrshlq_s8): Remove.
18802 (vqrshlq_n_s8): Remove.
18803 (vqrshlq_u16): Remove.
18804 (vqrshlq_n_u16): Remove.
18805 (vqrshlq_s16): Remove.
18806 (vqrshlq_n_s16): Remove.
18807 (vqrshlq_u32): Remove.
18808 (vqrshlq_n_u32): Remove.
18809 (vqrshlq_s32): Remove.
18810 (vqrshlq_n_s32): Remove.
18811 (vqrshlq_m_n_u8): Remove.
18812 (vqrshlq_m_n_s8): Remove.
18813 (vqrshlq_m_n_u16): Remove.
18814 (vqrshlq_m_n_s16): Remove.
18815 (vqrshlq_m_n_u32): Remove.
18816 (vqrshlq_m_n_s32): Remove.
18817 (vqrshlq_m_s8): Remove.
18818 (vqrshlq_m_s32): Remove.
18819 (vqrshlq_m_s16): Remove.
18820 (vqrshlq_m_u8): Remove.
18821 (vqrshlq_m_u32): Remove.
18822 (vqrshlq_m_u16): Remove.
18823 (__arm_vqrshlq_u8): Remove.
18824 (__arm_vqrshlq_n_u8): Remove.
18825 (__arm_vqrshlq_s8): Remove.
18826 (__arm_vqrshlq_n_s8): Remove.
18827 (__arm_vqrshlq_u16): Remove.
18828 (__arm_vqrshlq_n_u16): Remove.
18829 (__arm_vqrshlq_s16): Remove.
18830 (__arm_vqrshlq_n_s16): Remove.
18831 (__arm_vqrshlq_u32): Remove.
18832 (__arm_vqrshlq_n_u32): Remove.
18833 (__arm_vqrshlq_s32): Remove.
18834 (__arm_vqrshlq_n_s32): Remove.
18835 (__arm_vqrshlq_m_n_u8): Remove.
18836 (__arm_vqrshlq_m_n_s8): Remove.
18837 (__arm_vqrshlq_m_n_u16): Remove.
18838 (__arm_vqrshlq_m_n_s16): Remove.
18839 (__arm_vqrshlq_m_n_u32): Remove.
18840 (__arm_vqrshlq_m_n_s32): Remove.
18841 (__arm_vqrshlq_m_s8): Remove.
18842 (__arm_vqrshlq_m_s32): Remove.
18843 (__arm_vqrshlq_m_s16): Remove.
18844 (__arm_vqrshlq_m_u8): Remove.
18845 (__arm_vqrshlq_m_u32): Remove.
18846 (__arm_vqrshlq_m_u16): Remove.
18847 (__arm_vqrshlq): Remove.
18848 (__arm_vqrshlq_m_n): Remove.
18849 (__arm_vqrshlq_m): Remove.
18850
18851 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
18852
18853 * config/arm/iterators.md (MVE_RSHIFT_M_N, MVE_RSHIFT_N): New.
18854 (mve_insn): Add vqrshl, vrshl.
18855 * config/arm/mve.md (mve_vqrshlq_n_<supf><mode>)
18856 (mve_vrshlq_n_<supf><mode>): Merge into ...
18857 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
18858 (mve_vqrshlq_m_n_<supf><mode>, mve_vrshlq_m_n_<supf><mode>): Merge
18859 into ...
18860 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
18861
18862 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
18863
18864 * config/arm/arm-mve-builtins-shapes.cc (binary_round_lshift): New.
18865 * config/arm/arm-mve-builtins-shapes.h (binary_round_lshift): New.
18866
18867 2023-05-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
18868
18869 PR target/109615
18870 * config/riscv/riscv-vsetvl.cc (avl_info::multiple_source_equal_p): Add
18871 denegrate PHI optmization.
18872
18873 2023-05-05 Uros Bizjak <ubizjak@gmail.com>
18874
18875 * config/i386/predicates.md (register_no_SP_operand):
18876 Rename from index_register_operand.
18877 (call_register_operand): Update for rename.
18878 * config/i386/i386.md (*lea<mode>_general_[1234]): Update for rename.
18879
18880 2023-05-05 Tamar Christina <tamar.christina@arm.com>
18881
18882 PR bootstrap/84402
18883 * Makefile.in (NUM_MATCH_SPLITS, MATCH_SPLITS_SEQ,
18884 GIMPLE_MATCH_PD_SEQ_SRC, GIMPLE_MATCH_PD_SEQ_O,
18885 GENERIC_MATCH_PD_SEQ_SRC, GENERIC_MATCH_PD_SEQ_O): New.
18886 (OBJS, MOSTLYCLEANFILES, .PRECIOUS): Use them.
18887 (s-match): Split into s-generic-match and s-gimple-match.
18888 * configure.ac (with-matchpd-partitions,
18889 DEFAULT_MATCHPD_PARTITIONS): New.
18890 * configure: Regenerate.
18891
18892 2023-05-05 Tamar Christina <tamar.christina@arm.com>
18893
18894 PR bootstrap/84402
18895 * genmatch.cc (emit_func, SIZED_BASED_CHUNKS, get_out_file): New.
18896 (decision_tree::gen): Accept list of files instead of single and update
18897 to write function definition to header and main file.
18898 (write_predicate): Likewise.
18899 (write_header): Emit pragmas and new includes.
18900 (main): Create file buffers and cleanup.
18901 (showUsage, write_header_includes): New.
18902
18903 2023-05-05 Tamar Christina <tamar.christina@arm.com>
18904
18905 PR bootstrap/84402
18906 * Makefile.in (OBJS): Add gimple-match-exports.o.
18907 * genmatch.cc (decision_tree::gen): Export gimple_gimplify helpers.
18908 * gimple-match-head.cc (gimple_simplify, gimple_resimplify1,
18909 gimple_resimplify2, gimple_resimplify3, gimple_resimplify4,
18910 gimple_resimplify5, constant_for_folding, convert_conditional_op,
18911 maybe_resimplify_conditional_op, gimple_match_op::resimplify,
18912 maybe_build_generic_op, build_call_internal, maybe_push_res_to_seq,
18913 do_valueize, try_conditional_simplification, gimple_extract,
18914 gimple_extract_op, canonicalize_code, commutative_binary_op_p,
18915 commutative_ternary_op_p, first_commutative_argument,
18916 associative_binary_op_p, directly_supported_p,
18917 get_conditional_internal_fn): Moved to gimple-match-exports.cc
18918 * gimple-match-exports.cc: New file.
18919
18920 2023-05-05 Tamar Christina <tamar.christina@arm.com>
18921
18922 PR bootstrap/84402
18923 * genmatch.cc (decision_tree::gen, write_predicate): Generate new
18924 debug_dump var.
18925 (dt_simplify::gen_1): Use it.
18926
18927 2023-05-05 Tamar Christina <tamar.christina@arm.com>
18928
18929 PR bootstrap/84402
18930 * genmatch.cc (output_line_directive): Only emit commented directive
18931 when -vv.
18932
18933 2023-05-05 Tamar Christina <tamar.christina@arm.com>
18934
18935 PR bootstrap/84402
18936 * genmatch.cc (dt_simplify::gen_1): Only emit labels if used.
18937
18938 2023-05-05 Tobias Burnus <tobias@codesourcery.com>
18939
18940 * config/gcn/gcn.cc (gcn_vectorize_builtin_vectorized_function): Remove
18941 unused in_mode/in_n variables.
18942
18943 2023-05-05 Richard Biener <rguenther@suse.de>
18944
18945 PR tree-optimization/109735
18946 * tree-vect-stmts.cc (vectorizable_operation): Perform
18947 conversion for POINTER_DIFF_EXPR unconditionally.
18948
18949 2023-05-05 Uros Bizjak <ubizjak@gmail.com>
18950
18951 * config/i386/mmx.md (mulv2si3): New expander.
18952 (*mulv2si3): New insn pattern.
18953
18954 2023-05-05 Tobias Burnus <tobias@codesourcery.com>
18955 Thomas Schwinge <thomas@codesourcery.com>
18956
18957 PR libgomp/108098
18958 * config/nvptx/mkoffload.cc (process): Emit dummy procedure
18959 alongside reverse-offload function table to prevent NULL values
18960 of the function addresses.
18961
18962 2023-05-05 Jakub Jelinek <jakub@redhat.com>
18963
18964 * builtins.cc (do_mpfr_ckconv, do_mpc_ckconv): Fix comment typo,
18965 mpft_t -> mpfr_t.
18966 * fold-const-call.cc (do_mpfr_ckconv, do_mpc_ckconv): Likewise.
18967
18968 2023-05-05 Andrew Pinski <apinski@marvell.com>
18969
18970 PR tree-optimization/109732
18971 * tree-ssa-phiopt.cc (match_simplify_replacement): Fix the selection
18972 of the argtrue/argfalse.
18973
18974 2023-05-05 Andrew Pinski <apinski@marvell.com>
18975
18976 PR tree-optimization/109722
18977 * match.pd: Extend the `ABS<a> == 0` pattern
18978 to cover `ABSU<a> == 0` too.
18979
18980 2023-05-04 Uros Bizjak <ubizjak@gmail.com>
18981
18982 PR target/109733
18983 * config/i386/predicates.md (index_reg_operand): New predicate.
18984 * config/i386/i386.md (ashift to lea spliter): Use
18985 general_reg_operand and index_reg_operand predicates.
18986
18987 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
18988
18989 * config/aarch64/aarch64-simd.md (aarch64_<sur><addsub>hn2<mode>_insn_le):
18990 Rename and reimplement with RTL codes to...
18991 (aarch64_<optab>hn2<mode>_insn_le): .. This.
18992 (aarch64_r<optab>hn2<mode>_insn_le): New pattern.
18993 (aarch64_<sur><addsub>hn2<mode>_insn_be): Rename and reimplement with RTL
18994 codes to...
18995 (aarch64_<optab>hn2<mode>_insn_be): ... This.
18996 (aarch64_r<optab>hn2<mode>_insn_be): New pattern.
18997 (aarch64_<sur><addsub>hn2<mode>): Rename and adjust expander to...
18998 (aarch64_<optab>hn2<mode>): ... This.
18999 (aarch64_r<optab>hn2<mode>): New expander.
19000 * config/aarch64/iterators.md (UNSPEC_ADDHN, UNSPEC_RADDHN,
19001 UNSPEC_SUBHN, UNSPEC_RSUBHN): Delete unspecs.
19002 (ADDSUBHN): Delete.
19003 (sur): Remove handling of the above.
19004 (addsub): Likewise.
19005
19006 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
19007
19008 * config/aarch64/aarch64-simd.md (aarch64_<sur><addsub>hn<mode>_insn_le):
19009 Delete.
19010 (aarch64_<optab>hn<mode>_insn<vczle><vczbe>): New define_insn.
19011 (aarch64_<sur><addsub>hn<mode>_insn_be): Delete.
19012 (aarch64_r<optab>hn<mode>_insn<vczle><vczbe>): New define_insn.
19013 (aarch64_<sur><addsub>hn<mode>): Delete.
19014 (aarch64_<optab>hn<mode>): New define_expand.
19015 (aarch64_r<optab>hn<mode>): Likewise.
19016 * config/aarch64/predicates.md (aarch64_simd_raddsubhn_imm_vec):
19017 New predicate.
19018
19019 2023-05-04 Andrew Pinski <apinski@marvell.com>
19020
19021 * tree-ssa-phiopt.cc (replace_phi_edge_with_variable): Handle
19022 diamond form bb with forwarder only empty blocks better.
19023
19024 2023-05-04 Andrew Pinski <apinski@marvell.com>
19025
19026 * tree-ssa-threadupdate.cc (copy_phi_arg_into_existing_phi): Move to ...
19027 * tree-cfg.cc (copy_phi_arg_into_existing_phi): Here and remove static.
19028 (gimple_duplicate_sese_tail): Use copy_phi_arg_into_existing_phi instead
19029 of an inline version of it.
19030 * tree-cfgcleanup.cc (remove_forwarder_block): Likewise.
19031 * tree-cfg.h (copy_phi_arg_into_existing_phi): New declaration.
19032
19033 2023-05-04 Andrew Pinski <apinski@marvell.com>
19034
19035 * tree-ssa-phiopt.cc (replace_phi_edge_with_variable): Change
19036 the default argument value for dce_ssa_names to nullptr.
19037 Check to make sure dce_ssa_names is a non-nullptr before
19038 calling simple_dce_from_worklist.
19039
19040 2023-05-04 Uros Bizjak <ubizjak@gmail.com>
19041
19042 * config/i386/predicates.md (index_register_operand): Reject
19043 arg_pointer_rtx, frame_pointer_rtx, stack_pointer_rtx and
19044 VIRTUAL_REGISTER_P operands. Allow subregs of memory before reload.
19045 (call_register_no_elim_operand): Rewrite as ...
19046 (call_register_operand): ... this.
19047 (call_insn_operand): Use call_register_operand predicate.
19048
19049 2023-05-04 Richard Biener <rguenther@suse.de>
19050
19051 PR tree-optimization/109721
19052 * tree-vect-stmts.cc (vectorizable_operation): Make sure
19053 to test word_mode for all !target_support_p operations.
19054
19055 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
19056
19057 PR target/99195
19058 * config/aarch64/aarch64-simd.md (aarch64_<su>aba<mode>): Rename to...
19059 (aarch64_<su>aba<mode><vczle><vczbe>): ... This.
19060 (aarch64_mla<mode>): Rename to...
19061 (aarch64_mla<mode><vczle><vczbe>): ... This.
19062 (*aarch64_mla_elt<mode>): Rename to...
19063 (*aarch64_mla_elt<mode><vczle><vczbe>): ... This.
19064 (*aarch64_mla_elt_<vswap_width_name><mode>): Rename to...
19065 (*aarch64_mla_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
19066 (aarch64_mla_n<mode>): Rename to...
19067 (aarch64_mla_n<mode><vczle><vczbe>): ... This.
19068 (aarch64_mls<mode>): Rename to...
19069 (aarch64_mls<mode><vczle><vczbe>): ... This.
19070 (*aarch64_mls_elt<mode>): Rename to...
19071 (*aarch64_mls_elt<mode><vczle><vczbe>): ... This.
19072 (*aarch64_mls_elt_<vswap_width_name><mode>): Rename to...
19073 (*aarch64_mls_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
19074 (aarch64_mls_n<mode>): Rename to...
19075 (aarch64_mls_n<mode><vczle><vczbe>): ... This.
19076 (fma<mode>4): Rename to...
19077 (fma<mode>4<vczle><vczbe>): ... This.
19078 (*aarch64_fma4_elt<mode>): Rename to...
19079 (*aarch64_fma4_elt<mode><vczle><vczbe>): ... This.
19080 (*aarch64_fma4_elt_<vswap_width_name><mode>): Rename to...
19081 (*aarch64_fma4_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
19082 (*aarch64_fma4_elt_from_dup<mode>): Rename to...
19083 (*aarch64_fma4_elt_from_dup<mode><vczle><vczbe>): ... This.
19084 (fnma<mode>4): Rename to...
19085 (fnma<mode>4<vczle><vczbe>): ... This.
19086 (*aarch64_fnma4_elt<mode>): Rename to...
19087 (*aarch64_fnma4_elt<mode><vczle><vczbe>): ... This.
19088 (*aarch64_fnma4_elt_<vswap_width_name><mode>): Rename to...
19089 (*aarch64_fnma4_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
19090 (*aarch64_fnma4_elt_from_dup<mode>): Rename to...
19091 (*aarch64_fnma4_elt_from_dup<mode><vczle><vczbe>): ... This.
19092 (aarch64_simd_bsl<mode>_internal): Rename to...
19093 (aarch64_simd_bsl<mode>_internal<vczle><vczbe>): ... This.
19094 (*aarch64_simd_bsl<mode>_alt): Rename to...
19095 (*aarch64_simd_bsl<mode>_alt<vczle><vczbe>): ... This.
19096
19097 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
19098
19099 PR target/99195
19100 * config/aarch64/aarch64-simd.md (aarch64_<su>abd<mode>): Rename to...
19101 (aarch64_<su>abd<mode><vczle><vczbe>): ... This.
19102 (fabd<mode>3): Rename to...
19103 (fabd<mode>3<vczle><vczbe>): ... This.
19104 (aarch64_<optab>p<mode>): Rename to...
19105 (aarch64_<optab>p<mode><vczle><vczbe>): ... This.
19106 (aarch64_faddp<mode>): Rename to...
19107 (aarch64_faddp<mode><vczle><vczbe>): ... This.
19108
19109 2023-05-04 Martin Liska <mliska@suse.cz>
19110
19111 * gcov.cc (GCOV_JSON_FORMAT_VERSION): New definition.
19112 (print_version): Use it.
19113 (generate_results): Likewise.
19114
19115 2023-05-04 Richard Biener <rguenther@suse.de>
19116
19117 * tree-cfg.h (last_stmt): Rename to ...
19118 (last_nondebug_stmt): ... this.
19119 * tree-cfg.cc (last_stmt): Rename to ...
19120 (last_nondebug_stmt): ... this.
19121 (assign_discriminators): Adjust.
19122 (group_case_labels_stmt): Likewise.
19123 (gimple_can_duplicate_bb_p): Likewise.
19124 (execute_fixup_cfg): Likewise.
19125 * auto-profile.cc (afdo_propagate_circuit): Likewise.
19126 * gimple-range.cc (gimple_ranger::range_on_exit): Likewise.
19127 * omp-expand.cc (workshare_safe_to_combine_p): Likewise.
19128 (determine_parallel_type): Likewise.
19129 (adjust_context_and_scope): Likewise.
19130 (expand_task_call): Likewise.
19131 (remove_exit_barrier): Likewise.
19132 (expand_omp_taskreg): Likewise.
19133 (expand_omp_for_init_counts): Likewise.
19134 (expand_omp_for_init_vars): Likewise.
19135 (expand_omp_for_static_chunk): Likewise.
19136 (expand_omp_simd): Likewise.
19137 (expand_oacc_for): Likewise.
19138 (expand_omp_for): Likewise.
19139 (expand_omp_sections): Likewise.
19140 (expand_omp_atomic_fetch_op): Likewise.
19141 (expand_omp_atomic_cas): Likewise.
19142 (expand_omp_atomic): Likewise.
19143 (expand_omp_target): Likewise.
19144 (expand_omp): Likewise.
19145 (omp_make_gimple_edges): Likewise.
19146 * trans-mem.cc (tm_region_init): Likewise.
19147 * tree-inline.cc (redirect_all_calls): Likewise.
19148 * tree-parloops.cc (gen_parallel_loop): Likewise.
19149 * tree-ssa-loop-ch.cc (do_while_loop_p): Likewise.
19150 * tree-ssa-loop-ivcanon.cc (canonicalize_loop_induction_variables):
19151 Likewise.
19152 * tree-ssa-loop-ivopts.cc (stmt_after_ip_normal_pos): Likewise.
19153 (may_eliminate_iv): Likewise.
19154 * tree-ssa-loop-manip.cc (standard_iv_increment_position): Likewise.
19155 * tree-ssa-loop-niter.cc (do_warn_aggressive_loop_optimizations):
19156 Likewise.
19157 (estimate_numbers_of_iterations): Likewise.
19158 * tree-ssa-loop-split.cc (compute_added_num_insns): Likewise.
19159 * tree-ssa-loop-unswitch.cc (get_predicates_for_bb): Likewise.
19160 (set_predicates_for_bb): Likewise.
19161 (init_loop_unswitch_info): Likewise.
19162 (hoist_guard): Likewise.
19163 * tree-ssa-phiopt.cc (match_simplify_replacement): Likewise.
19164 (minmax_replacement): Likewise.
19165 * tree-ssa-reassoc.cc (update_range_test): Likewise.
19166 (optimize_range_tests_to_bit_test): Likewise.
19167 (optimize_range_tests_var_bound): Likewise.
19168 (optimize_range_tests): Likewise.
19169 (no_side_effect_bb): Likewise.
19170 (suitable_cond_bb): Likewise.
19171 (maybe_optimize_range_tests): Likewise.
19172 (reassociate_bb): Likewise.
19173 * tree-vrp.cc (rvrp_folder::pre_fold_bb): Likewise.
19174
19175 2023-05-04 Jakub Jelinek <jakub@redhat.com>
19176
19177 PR debug/109676
19178 * config/i386/i386-features.cc (timode_scalar_chain::convert_insn):
19179 If src is REG, change its mode to V1TImode and call fix_debug_reg_uses
19180 for it only if it still has TImode. Don't decide whether to call
19181 fix_debug_reg_uses based on whether SRC is ever set or not.
19182
19183 2023-05-04 Hans-Peter Nilsson <hp@axis.com>
19184
19185 * config/cris/cris.cc (cris_split_constant): New function.
19186 * config/cris/cris.md (splitop): New iterator.
19187 (opsplit1): New define_peephole2.
19188 * config/cris/cris-protos.h (cris_split_constant): Declare.
19189 (cris_splittable_constant_p): New macro.
19190
19191 2023-05-04 Hans-Peter Nilsson <hp@axis.com>
19192
19193 * config/cris/cris.cc (TARGET_SPILL_CLASS): Define
19194 to ALL_REGS.
19195
19196 2023-05-04 Hans-Peter Nilsson <hp@axis.com>
19197
19198 * config/cris/cris.cc (cris_side_effect_mode_ok): Use
19199 lra_in_progress, not reload_in_progress.
19200 * config/cris/cris.md ("movdi", "*addi_reload"): Ditto.
19201 * config/cris/constraints.md ("Q"): Ditto.
19202
19203 2023-05-03 Andrew Pinski <apinski@marvell.com>
19204
19205 * tree-ssa-dce.cc (simple_dce_from_worklist): Record
19206 stats on removed number of statements and phis.
19207
19208 2023-05-03 Aldy Hernandez <aldyh@redhat.com>
19209
19210 PR tree-optimization/109711
19211 * value-range.cc (irange::verify_range): Allow types of
19212 error_mark_node.
19213
19214 2023-05-03 Alexander Monakov <amonakov@ispras.ru>
19215
19216 PR sanitizer/90746
19217 * calls.cc (can_implement_as_sibling_call_p): Reject calls
19218 to __sanitizer_cov_trace_pc.
19219
19220 2023-05-03 Richard Sandiford <richard.sandiford@arm.com>
19221
19222 PR target/109661
19223 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Add
19224 a new ABI break parameter for GCC 14. Set it to the alignment
19225 of enums that have an underlying type. Take the true alignment
19226 of such enums from the TYPE_ALIGN of the underlying type's
19227 TYPE_MAIN_VARIANT.
19228 (aarch64_function_arg_boundary): Update accordingly.
19229 (aarch64_layout_arg, aarch64_gimplify_va_arg_expr): Likewise.
19230 Warn about ABI differences.
19231
19232 2023-05-03 Richard Sandiford <richard.sandiford@arm.com>
19233
19234 PR target/109661
19235 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Rename
19236 ABI break variables to abi_break_gcc_9 and abi_break_gcc_13.
19237 (aarch64_layout_arg, aarch64_function_arg_boundary): Likewise.
19238 (aarch64_gimplify_va_arg_expr): Likewise.
19239
19240 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
19241
19242 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_M_N_NO_F)
19243 (FUNCTION_WITHOUT_N_NO_F, FUNCTION_WITH_M_N_NO_U_F): New.
19244 (vhaddq, vhsubq, vmulhq, vqaddq, vqsubq, vqdmulhq, vrhaddq)
19245 (vrmulhq): New.
19246 * config/arm/arm-mve-builtins-base.def (vhaddq, vhsubq, vmulhq)
19247 (vqaddq, vqsubq, vqdmulhq, vrhaddq, vrmulhq): New.
19248 * config/arm/arm-mve-builtins-base.h (vhaddq, vhsubq, vmulhq)
19249 (vqaddq, vqsubq, vqdmulhq, vrhaddq, vrmulhq): New.
19250 * config/arm/arm_mve.h (vhsubq): Remove.
19251 (vhaddq): Remove.
19252 (vhaddq_m): Remove.
19253 (vhsubq_m): Remove.
19254 (vhaddq_x): Remove.
19255 (vhsubq_x): Remove.
19256 (vhsubq_u8): Remove.
19257 (vhsubq_n_u8): Remove.
19258 (vhaddq_u8): Remove.
19259 (vhaddq_n_u8): Remove.
19260 (vhsubq_s8): Remove.
19261 (vhsubq_n_s8): Remove.
19262 (vhaddq_s8): Remove.
19263 (vhaddq_n_s8): Remove.
19264 (vhsubq_u16): Remove.
19265 (vhsubq_n_u16): Remove.
19266 (vhaddq_u16): Remove.
19267 (vhaddq_n_u16): Remove.
19268 (vhsubq_s16): Remove.
19269 (vhsubq_n_s16): Remove.
19270 (vhaddq_s16): Remove.
19271 (vhaddq_n_s16): Remove.
19272 (vhsubq_u32): Remove.
19273 (vhsubq_n_u32): Remove.
19274 (vhaddq_u32): Remove.
19275 (vhaddq_n_u32): Remove.
19276 (vhsubq_s32): Remove.
19277 (vhsubq_n_s32): Remove.
19278 (vhaddq_s32): Remove.
19279 (vhaddq_n_s32): Remove.
19280 (vhaddq_m_n_s8): Remove.
19281 (vhaddq_m_n_s32): Remove.
19282 (vhaddq_m_n_s16): Remove.
19283 (vhaddq_m_n_u8): Remove.
19284 (vhaddq_m_n_u32): Remove.
19285 (vhaddq_m_n_u16): Remove.
19286 (vhaddq_m_s8): Remove.
19287 (vhaddq_m_s32): Remove.
19288 (vhaddq_m_s16): Remove.
19289 (vhaddq_m_u8): Remove.
19290 (vhaddq_m_u32): Remove.
19291 (vhaddq_m_u16): Remove.
19292 (vhsubq_m_n_s8): Remove.
19293 (vhsubq_m_n_s32): Remove.
19294 (vhsubq_m_n_s16): Remove.
19295 (vhsubq_m_n_u8): Remove.
19296 (vhsubq_m_n_u32): Remove.
19297 (vhsubq_m_n_u16): Remove.
19298 (vhsubq_m_s8): Remove.
19299 (vhsubq_m_s32): Remove.
19300 (vhsubq_m_s16): Remove.
19301 (vhsubq_m_u8): Remove.
19302 (vhsubq_m_u32): Remove.
19303 (vhsubq_m_u16): Remove.
19304 (vhaddq_x_n_s8): Remove.
19305 (vhaddq_x_n_s16): Remove.
19306 (vhaddq_x_n_s32): Remove.
19307 (vhaddq_x_n_u8): Remove.
19308 (vhaddq_x_n_u16): Remove.
19309 (vhaddq_x_n_u32): Remove.
19310 (vhaddq_x_s8): Remove.
19311 (vhaddq_x_s16): Remove.
19312 (vhaddq_x_s32): Remove.
19313 (vhaddq_x_u8): Remove.
19314 (vhaddq_x_u16): Remove.
19315 (vhaddq_x_u32): Remove.
19316 (vhsubq_x_n_s8): Remove.
19317 (vhsubq_x_n_s16): Remove.
19318 (vhsubq_x_n_s32): Remove.
19319 (vhsubq_x_n_u8): Remove.
19320 (vhsubq_x_n_u16): Remove.
19321 (vhsubq_x_n_u32): Remove.
19322 (vhsubq_x_s8): Remove.
19323 (vhsubq_x_s16): Remove.
19324 (vhsubq_x_s32): Remove.
19325 (vhsubq_x_u8): Remove.
19326 (vhsubq_x_u16): Remove.
19327 (vhsubq_x_u32): Remove.
19328 (__arm_vhsubq_u8): Remove.
19329 (__arm_vhsubq_n_u8): Remove.
19330 (__arm_vhaddq_u8): Remove.
19331 (__arm_vhaddq_n_u8): Remove.
19332 (__arm_vhsubq_s8): Remove.
19333 (__arm_vhsubq_n_s8): Remove.
19334 (__arm_vhaddq_s8): Remove.
19335 (__arm_vhaddq_n_s8): Remove.
19336 (__arm_vhsubq_u16): Remove.
19337 (__arm_vhsubq_n_u16): Remove.
19338 (__arm_vhaddq_u16): Remove.
19339 (__arm_vhaddq_n_u16): Remove.
19340 (__arm_vhsubq_s16): Remove.
19341 (__arm_vhsubq_n_s16): Remove.
19342 (__arm_vhaddq_s16): Remove.
19343 (__arm_vhaddq_n_s16): Remove.
19344 (__arm_vhsubq_u32): Remove.
19345 (__arm_vhsubq_n_u32): Remove.
19346 (__arm_vhaddq_u32): Remove.
19347 (__arm_vhaddq_n_u32): Remove.
19348 (__arm_vhsubq_s32): Remove.
19349 (__arm_vhsubq_n_s32): Remove.
19350 (__arm_vhaddq_s32): Remove.
19351 (__arm_vhaddq_n_s32): Remove.
19352 (__arm_vhaddq_m_n_s8): Remove.
19353 (__arm_vhaddq_m_n_s32): Remove.
19354 (__arm_vhaddq_m_n_s16): Remove.
19355 (__arm_vhaddq_m_n_u8): Remove.
19356 (__arm_vhaddq_m_n_u32): Remove.
19357 (__arm_vhaddq_m_n_u16): Remove.
19358 (__arm_vhaddq_m_s8): Remove.
19359 (__arm_vhaddq_m_s32): Remove.
19360 (__arm_vhaddq_m_s16): Remove.
19361 (__arm_vhaddq_m_u8): Remove.
19362 (__arm_vhaddq_m_u32): Remove.
19363 (__arm_vhaddq_m_u16): Remove.
19364 (__arm_vhsubq_m_n_s8): Remove.
19365 (__arm_vhsubq_m_n_s32): Remove.
19366 (__arm_vhsubq_m_n_s16): Remove.
19367 (__arm_vhsubq_m_n_u8): Remove.
19368 (__arm_vhsubq_m_n_u32): Remove.
19369 (__arm_vhsubq_m_n_u16): Remove.
19370 (__arm_vhsubq_m_s8): Remove.
19371 (__arm_vhsubq_m_s32): Remove.
19372 (__arm_vhsubq_m_s16): Remove.
19373 (__arm_vhsubq_m_u8): Remove.
19374 (__arm_vhsubq_m_u32): Remove.
19375 (__arm_vhsubq_m_u16): Remove.
19376 (__arm_vhaddq_x_n_s8): Remove.
19377 (__arm_vhaddq_x_n_s16): Remove.
19378 (__arm_vhaddq_x_n_s32): Remove.
19379 (__arm_vhaddq_x_n_u8): Remove.
19380 (__arm_vhaddq_x_n_u16): Remove.
19381 (__arm_vhaddq_x_n_u32): Remove.
19382 (__arm_vhaddq_x_s8): Remove.
19383 (__arm_vhaddq_x_s16): Remove.
19384 (__arm_vhaddq_x_s32): Remove.
19385 (__arm_vhaddq_x_u8): Remove.
19386 (__arm_vhaddq_x_u16): Remove.
19387 (__arm_vhaddq_x_u32): Remove.
19388 (__arm_vhsubq_x_n_s8): Remove.
19389 (__arm_vhsubq_x_n_s16): Remove.
19390 (__arm_vhsubq_x_n_s32): Remove.
19391 (__arm_vhsubq_x_n_u8): Remove.
19392 (__arm_vhsubq_x_n_u16): Remove.
19393 (__arm_vhsubq_x_n_u32): Remove.
19394 (__arm_vhsubq_x_s8): Remove.
19395 (__arm_vhsubq_x_s16): Remove.
19396 (__arm_vhsubq_x_s32): Remove.
19397 (__arm_vhsubq_x_u8): Remove.
19398 (__arm_vhsubq_x_u16): Remove.
19399 (__arm_vhsubq_x_u32): Remove.
19400 (__arm_vhsubq): Remove.
19401 (__arm_vhaddq): Remove.
19402 (__arm_vhaddq_m): Remove.
19403 (__arm_vhsubq_m): Remove.
19404 (__arm_vhaddq_x): Remove.
19405 (__arm_vhsubq_x): Remove.
19406 (vmulhq): Remove.
19407 (vmulhq_m): Remove.
19408 (vmulhq_x): Remove.
19409 (vmulhq_u8): Remove.
19410 (vmulhq_s8): Remove.
19411 (vmulhq_u16): Remove.
19412 (vmulhq_s16): Remove.
19413 (vmulhq_u32): Remove.
19414 (vmulhq_s32): Remove.
19415 (vmulhq_m_s8): Remove.
19416 (vmulhq_m_s32): Remove.
19417 (vmulhq_m_s16): Remove.
19418 (vmulhq_m_u8): Remove.
19419 (vmulhq_m_u32): Remove.
19420 (vmulhq_m_u16): Remove.
19421 (vmulhq_x_s8): Remove.
19422 (vmulhq_x_s16): Remove.
19423 (vmulhq_x_s32): Remove.
19424 (vmulhq_x_u8): Remove.
19425 (vmulhq_x_u16): Remove.
19426 (vmulhq_x_u32): Remove.
19427 (__arm_vmulhq_u8): Remove.
19428 (__arm_vmulhq_s8): Remove.
19429 (__arm_vmulhq_u16): Remove.
19430 (__arm_vmulhq_s16): Remove.
19431 (__arm_vmulhq_u32): Remove.
19432 (__arm_vmulhq_s32): Remove.
19433 (__arm_vmulhq_m_s8): Remove.
19434 (__arm_vmulhq_m_s32): Remove.
19435 (__arm_vmulhq_m_s16): Remove.
19436 (__arm_vmulhq_m_u8): Remove.
19437 (__arm_vmulhq_m_u32): Remove.
19438 (__arm_vmulhq_m_u16): Remove.
19439 (__arm_vmulhq_x_s8): Remove.
19440 (__arm_vmulhq_x_s16): Remove.
19441 (__arm_vmulhq_x_s32): Remove.
19442 (__arm_vmulhq_x_u8): Remove.
19443 (__arm_vmulhq_x_u16): Remove.
19444 (__arm_vmulhq_x_u32): Remove.
19445 (__arm_vmulhq): Remove.
19446 (__arm_vmulhq_m): Remove.
19447 (__arm_vmulhq_x): Remove.
19448 (vqsubq): Remove.
19449 (vqaddq): Remove.
19450 (vqaddq_m): Remove.
19451 (vqsubq_m): Remove.
19452 (vqsubq_u8): Remove.
19453 (vqsubq_n_u8): Remove.
19454 (vqaddq_u8): Remove.
19455 (vqaddq_n_u8): Remove.
19456 (vqsubq_s8): Remove.
19457 (vqsubq_n_s8): Remove.
19458 (vqaddq_s8): Remove.
19459 (vqaddq_n_s8): Remove.
19460 (vqsubq_u16): Remove.
19461 (vqsubq_n_u16): Remove.
19462 (vqaddq_u16): Remove.
19463 (vqaddq_n_u16): Remove.
19464 (vqsubq_s16): Remove.
19465 (vqsubq_n_s16): Remove.
19466 (vqaddq_s16): Remove.
19467 (vqaddq_n_s16): Remove.
19468 (vqsubq_u32): Remove.
19469 (vqsubq_n_u32): Remove.
19470 (vqaddq_u32): Remove.
19471 (vqaddq_n_u32): Remove.
19472 (vqsubq_s32): Remove.
19473 (vqsubq_n_s32): Remove.
19474 (vqaddq_s32): Remove.
19475 (vqaddq_n_s32): Remove.
19476 (vqaddq_m_n_s8): Remove.
19477 (vqaddq_m_n_s32): Remove.
19478 (vqaddq_m_n_s16): Remove.
19479 (vqaddq_m_n_u8): Remove.
19480 (vqaddq_m_n_u32): Remove.
19481 (vqaddq_m_n_u16): Remove.
19482 (vqaddq_m_s8): Remove.
19483 (vqaddq_m_s32): Remove.
19484 (vqaddq_m_s16): Remove.
19485 (vqaddq_m_u8): Remove.
19486 (vqaddq_m_u32): Remove.
19487 (vqaddq_m_u16): Remove.
19488 (vqsubq_m_n_s8): Remove.
19489 (vqsubq_m_n_s32): Remove.
19490 (vqsubq_m_n_s16): Remove.
19491 (vqsubq_m_n_u8): Remove.
19492 (vqsubq_m_n_u32): Remove.
19493 (vqsubq_m_n_u16): Remove.
19494 (vqsubq_m_s8): Remove.
19495 (vqsubq_m_s32): Remove.
19496 (vqsubq_m_s16): Remove.
19497 (vqsubq_m_u8): Remove.
19498 (vqsubq_m_u32): Remove.
19499 (vqsubq_m_u16): Remove.
19500 (__arm_vqsubq_u8): Remove.
19501 (__arm_vqsubq_n_u8): Remove.
19502 (__arm_vqaddq_u8): Remove.
19503 (__arm_vqaddq_n_u8): Remove.
19504 (__arm_vqsubq_s8): Remove.
19505 (__arm_vqsubq_n_s8): Remove.
19506 (__arm_vqaddq_s8): Remove.
19507 (__arm_vqaddq_n_s8): Remove.
19508 (__arm_vqsubq_u16): Remove.
19509 (__arm_vqsubq_n_u16): Remove.
19510 (__arm_vqaddq_u16): Remove.
19511 (__arm_vqaddq_n_u16): Remove.
19512 (__arm_vqsubq_s16): Remove.
19513 (__arm_vqsubq_n_s16): Remove.
19514 (__arm_vqaddq_s16): Remove.
19515 (__arm_vqaddq_n_s16): Remove.
19516 (__arm_vqsubq_u32): Remove.
19517 (__arm_vqsubq_n_u32): Remove.
19518 (__arm_vqaddq_u32): Remove.
19519 (__arm_vqaddq_n_u32): Remove.
19520 (__arm_vqsubq_s32): Remove.
19521 (__arm_vqsubq_n_s32): Remove.
19522 (__arm_vqaddq_s32): Remove.
19523 (__arm_vqaddq_n_s32): Remove.
19524 (__arm_vqaddq_m_n_s8): Remove.
19525 (__arm_vqaddq_m_n_s32): Remove.
19526 (__arm_vqaddq_m_n_s16): Remove.
19527 (__arm_vqaddq_m_n_u8): Remove.
19528 (__arm_vqaddq_m_n_u32): Remove.
19529 (__arm_vqaddq_m_n_u16): Remove.
19530 (__arm_vqaddq_m_s8): Remove.
19531 (__arm_vqaddq_m_s32): Remove.
19532 (__arm_vqaddq_m_s16): Remove.
19533 (__arm_vqaddq_m_u8): Remove.
19534 (__arm_vqaddq_m_u32): Remove.
19535 (__arm_vqaddq_m_u16): Remove.
19536 (__arm_vqsubq_m_n_s8): Remove.
19537 (__arm_vqsubq_m_n_s32): Remove.
19538 (__arm_vqsubq_m_n_s16): Remove.
19539 (__arm_vqsubq_m_n_u8): Remove.
19540 (__arm_vqsubq_m_n_u32): Remove.
19541 (__arm_vqsubq_m_n_u16): Remove.
19542 (__arm_vqsubq_m_s8): Remove.
19543 (__arm_vqsubq_m_s32): Remove.
19544 (__arm_vqsubq_m_s16): Remove.
19545 (__arm_vqsubq_m_u8): Remove.
19546 (__arm_vqsubq_m_u32): Remove.
19547 (__arm_vqsubq_m_u16): Remove.
19548 (__arm_vqsubq): Remove.
19549 (__arm_vqaddq): Remove.
19550 (__arm_vqaddq_m): Remove.
19551 (__arm_vqsubq_m): Remove.
19552 (vqdmulhq): Remove.
19553 (vqdmulhq_m): Remove.
19554 (vqdmulhq_s8): Remove.
19555 (vqdmulhq_n_s8): Remove.
19556 (vqdmulhq_s16): Remove.
19557 (vqdmulhq_n_s16): Remove.
19558 (vqdmulhq_s32): Remove.
19559 (vqdmulhq_n_s32): Remove.
19560 (vqdmulhq_m_n_s8): Remove.
19561 (vqdmulhq_m_n_s32): Remove.
19562 (vqdmulhq_m_n_s16): Remove.
19563 (vqdmulhq_m_s8): Remove.
19564 (vqdmulhq_m_s32): Remove.
19565 (vqdmulhq_m_s16): Remove.
19566 (__arm_vqdmulhq_s8): Remove.
19567 (__arm_vqdmulhq_n_s8): Remove.
19568 (__arm_vqdmulhq_s16): Remove.
19569 (__arm_vqdmulhq_n_s16): Remove.
19570 (__arm_vqdmulhq_s32): Remove.
19571 (__arm_vqdmulhq_n_s32): Remove.
19572 (__arm_vqdmulhq_m_n_s8): Remove.
19573 (__arm_vqdmulhq_m_n_s32): Remove.
19574 (__arm_vqdmulhq_m_n_s16): Remove.
19575 (__arm_vqdmulhq_m_s8): Remove.
19576 (__arm_vqdmulhq_m_s32): Remove.
19577 (__arm_vqdmulhq_m_s16): Remove.
19578 (__arm_vqdmulhq): Remove.
19579 (__arm_vqdmulhq_m): Remove.
19580 (vrhaddq): Remove.
19581 (vrhaddq_m): Remove.
19582 (vrhaddq_x): Remove.
19583 (vrhaddq_u8): Remove.
19584 (vrhaddq_s8): Remove.
19585 (vrhaddq_u16): Remove.
19586 (vrhaddq_s16): Remove.
19587 (vrhaddq_u32): Remove.
19588 (vrhaddq_s32): Remove.
19589 (vrhaddq_m_s8): Remove.
19590 (vrhaddq_m_s32): Remove.
19591 (vrhaddq_m_s16): Remove.
19592 (vrhaddq_m_u8): Remove.
19593 (vrhaddq_m_u32): Remove.
19594 (vrhaddq_m_u16): Remove.
19595 (vrhaddq_x_s8): Remove.
19596 (vrhaddq_x_s16): Remove.
19597 (vrhaddq_x_s32): Remove.
19598 (vrhaddq_x_u8): Remove.
19599 (vrhaddq_x_u16): Remove.
19600 (vrhaddq_x_u32): Remove.
19601 (__arm_vrhaddq_u8): Remove.
19602 (__arm_vrhaddq_s8): Remove.
19603 (__arm_vrhaddq_u16): Remove.
19604 (__arm_vrhaddq_s16): Remove.
19605 (__arm_vrhaddq_u32): Remove.
19606 (__arm_vrhaddq_s32): Remove.
19607 (__arm_vrhaddq_m_s8): Remove.
19608 (__arm_vrhaddq_m_s32): Remove.
19609 (__arm_vrhaddq_m_s16): Remove.
19610 (__arm_vrhaddq_m_u8): Remove.
19611 (__arm_vrhaddq_m_u32): Remove.
19612 (__arm_vrhaddq_m_u16): Remove.
19613 (__arm_vrhaddq_x_s8): Remove.
19614 (__arm_vrhaddq_x_s16): Remove.
19615 (__arm_vrhaddq_x_s32): Remove.
19616 (__arm_vrhaddq_x_u8): Remove.
19617 (__arm_vrhaddq_x_u16): Remove.
19618 (__arm_vrhaddq_x_u32): Remove.
19619 (__arm_vrhaddq): Remove.
19620 (__arm_vrhaddq_m): Remove.
19621 (__arm_vrhaddq_x): Remove.
19622 (vrmulhq): Remove.
19623 (vrmulhq_m): Remove.
19624 (vrmulhq_x): Remove.
19625 (vrmulhq_u8): Remove.
19626 (vrmulhq_s8): Remove.
19627 (vrmulhq_u16): Remove.
19628 (vrmulhq_s16): Remove.
19629 (vrmulhq_u32): Remove.
19630 (vrmulhq_s32): Remove.
19631 (vrmulhq_m_s8): Remove.
19632 (vrmulhq_m_s32): Remove.
19633 (vrmulhq_m_s16): Remove.
19634 (vrmulhq_m_u8): Remove.
19635 (vrmulhq_m_u32): Remove.
19636 (vrmulhq_m_u16): Remove.
19637 (vrmulhq_x_s8): Remove.
19638 (vrmulhq_x_s16): Remove.
19639 (vrmulhq_x_s32): Remove.
19640 (vrmulhq_x_u8): Remove.
19641 (vrmulhq_x_u16): Remove.
19642 (vrmulhq_x_u32): Remove.
19643 (__arm_vrmulhq_u8): Remove.
19644 (__arm_vrmulhq_s8): Remove.
19645 (__arm_vrmulhq_u16): Remove.
19646 (__arm_vrmulhq_s16): Remove.
19647 (__arm_vrmulhq_u32): Remove.
19648 (__arm_vrmulhq_s32): Remove.
19649 (__arm_vrmulhq_m_s8): Remove.
19650 (__arm_vrmulhq_m_s32): Remove.
19651 (__arm_vrmulhq_m_s16): Remove.
19652 (__arm_vrmulhq_m_u8): Remove.
19653 (__arm_vrmulhq_m_u32): Remove.
19654 (__arm_vrmulhq_m_u16): Remove.
19655 (__arm_vrmulhq_x_s8): Remove.
19656 (__arm_vrmulhq_x_s16): Remove.
19657 (__arm_vrmulhq_x_s32): Remove.
19658 (__arm_vrmulhq_x_u8): Remove.
19659 (__arm_vrmulhq_x_u16): Remove.
19660 (__arm_vrmulhq_x_u32): Remove.
19661 (__arm_vrmulhq): Remove.
19662 (__arm_vrmulhq_m): Remove.
19663 (__arm_vrmulhq_x): Remove.
19664
19665 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
19666
19667 * config/arm/iterators.md (MVE_INT_SU_BINARY): New.
19668 (mve_insn): Add vabdq, vhaddq, vhsubq, vmulhq, vqaddq, vqdmulhq,
19669 vqrdmulhq, vqrshlq, vqshlq, vqsubq, vrhaddq, vrmulhq, vrshlq.
19670 (supf): Add VQDMULHQ_S, VQRDMULHQ_S.
19671 * config/arm/mve.md (mve_vabdq_<supf><mode>)
19672 (@mve_vhaddq_<supf><mode>, mve_vhsubq_<supf><mode>)
19673 (mve_vmulhq_<supf><mode>, mve_vqaddq_<supf><mode>)
19674 (mve_vqdmulhq_s<mode>, mve_vqrdmulhq_s<mode>)
19675 (mve_vqrshlq_<supf><mode>, mve_vqshlq_<supf><mode>)
19676 (mve_vqsubq_<supf><mode>, @mve_vrhaddq_<supf><mode>)
19677 (mve_vrmulhq_<supf><mode>, mve_vrshlq_<supf><mode>): Merge into
19678 ...
19679 (@mve_<mve_insn>q_<supf><mode>): ... this.
19680 * config/arm/vec-common.md (avg<mode>3_floor, uavg<mode>3_floor)
19681 (avg<mode>3_ceil, uavg<mode>3_ceil): Use gen_mve_q instead of
19682 gen_mve_vhaddq / gen_mve_vrhaddq.
19683
19684 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
19685
19686 * config/arm/iterators.md (MVE_INT_SU_M_N_BINARY): New.
19687 (mve_insn): Add vhaddq, vhsubq, vmlaq, vmlasq, vqaddq, vqdmlahq,
19688 vqdmlashq, vqdmulhq, vqrdmlahq, vqrdmlashq, vqrdmulhq, vqsubq.
19689 (supf): Add VQDMLAHQ_M_N_S, VQDMLASHQ_M_N_S, VQRDMLAHQ_M_N_S,
19690 VQRDMLASHQ_M_N_S, VQDMULHQ_M_N_S, VQRDMULHQ_M_N_S.
19691 * config/arm/mve.md (mve_vhaddq_m_n_<supf><mode>)
19692 (mve_vhsubq_m_n_<supf><mode>, mve_vmlaq_m_n_<supf><mode>)
19693 (mve_vmlasq_m_n_<supf><mode>, mve_vqaddq_m_n_<supf><mode>)
19694 (mve_vqdmlahq_m_n_s<mode>, mve_vqdmlashq_m_n_s<mode>)
19695 (mve_vqrdmlahq_m_n_s<mode>, mve_vqrdmlashq_m_n_s<mode>)
19696 (mve_vqsubq_m_n_<supf><mode>, mve_vqdmulhq_m_n_s<mode>)
19697 (mve_vqrdmulhq_m_n_s<mode>): Merge into ...
19698 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
19699
19700 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
19701
19702 * config/arm/iterators.md (MVE_INT_SU_N_BINARY): New.
19703 (mve_insn): Add vhaddq, vhsubq, vqaddq, vqdmulhq, vqrdmulhq,
19704 vqsubq.
19705 (supf): Add VQDMULHQ_N_S, VQRDMULHQ_N_S.
19706 * config/arm/mve.md (mve_vhaddq_n_<supf><mode>)
19707 (mve_vhsubq_n_<supf><mode>, mve_vqaddq_n_<supf><mode>)
19708 (mve_vqdmulhq_n_s<mode>, mve_vqrdmulhq_n_s<mode>)
19709 (mve_vqsubq_n_<supf><mode>): Merge into ...
19710 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
19711
19712 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
19713
19714 * config/arm/iterators.md (MVE_INT_SU_M_BINARY): New.
19715 (mve_insn): Add vabdq, vhaddq, vhsubq, vmaxq, vminq, vmulhq,
19716 vqaddq, vqdmladhq, vqdmladhxq, vqdmlsdhq, vqdmlsdhxq, vqdmulhq,
19717 vqrdmladhq, vqrdmladhxq, vqrdmlsdhq, vqrdmlsdhxq, vqrdmulhq,
19718 vqrshlq, vqshlq, vqsubq, vrhaddq, vrmulhq, vrshlq, vshlq.
19719 (supf): Add VQDMLADHQ_M_S, VQDMLADHXQ_M_S, VQDMLSDHQ_M_S,
19720 VQDMLSDHXQ_M_S, VQDMULHQ_M_S, VQRDMLADHQ_M_S, VQRDMLADHXQ_M_S,
19721 VQRDMLSDHQ_M_S, VQRDMLSDHXQ_M_S, VQRDMULHQ_M_S.
19722 * config/arm/mve.md (@mve_<mve_insn>q_m_<supf><mode>): New.
19723 (mve_vshlq_m_<supf><mode>): Merged into
19724 @mve_<mve_insn>q_m_<supf><mode>.
19725 (mve_vabdq_m_<supf><mode>): Likewise.
19726 (mve_vhaddq_m_<supf><mode>): Likewise.
19727 (mve_vhsubq_m_<supf><mode>): Likewise.
19728 (mve_vmaxq_m_<supf><mode>): Likewise.
19729 (mve_vminq_m_<supf><mode>): Likewise.
19730 (mve_vmulhq_m_<supf><mode>): Likewise.
19731 (mve_vqaddq_m_<supf><mode>): Likewise.
19732 (mve_vqrshlq_m_<supf><mode>): Likewise.
19733 (mve_vqshlq_m_<supf><mode>): Likewise.
19734 (mve_vqsubq_m_<supf><mode>): Likewise.
19735 (mve_vrhaddq_m_<supf><mode>): Likewise.
19736 (mve_vrmulhq_m_<supf><mode>): Likewise.
19737 (mve_vrshlq_m_<supf><mode>): Likewise.
19738 (mve_vqdmladhq_m_s<mode>): Likewise.
19739 (mve_vqdmladhxq_m_s<mode>): Likewise.
19740 (mve_vqdmlsdhq_m_s<mode>): Likewise.
19741 (mve_vqdmlsdhxq_m_s<mode>): Likewise.
19742 (mve_vqdmulhq_m_s<mode>): Likewise.
19743 (mve_vqrdmladhq_m_s<mode>): Likewise.
19744 (mve_vqrdmladhxq_m_s<mode>): Likewise.
19745 (mve_vqrdmlsdhq_m_s<mode>): Likewise.
19746 (mve_vqrdmlsdhxq_m_s<mode>): Likewise.
19747 (mve_vqrdmulhq_m_s<mode>): Likewise.
19748
19749 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
19750
19751 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_M_N): New. (vcreateq): New.
19752 * config/arm/arm-mve-builtins-base.def (vcreateq): New.
19753 * config/arm/arm-mve-builtins-base.h (vcreateq): New.
19754 * config/arm/arm_mve.h (vcreateq_f16): Remove.
19755 (vcreateq_f32): Remove.
19756 (vcreateq_u8): Remove.
19757 (vcreateq_u16): Remove.
19758 (vcreateq_u32): Remove.
19759 (vcreateq_u64): Remove.
19760 (vcreateq_s8): Remove.
19761 (vcreateq_s16): Remove.
19762 (vcreateq_s32): Remove.
19763 (vcreateq_s64): Remove.
19764 (__arm_vcreateq_u8): Remove.
19765 (__arm_vcreateq_u16): Remove.
19766 (__arm_vcreateq_u32): Remove.
19767 (__arm_vcreateq_u64): Remove.
19768 (__arm_vcreateq_s8): Remove.
19769 (__arm_vcreateq_s16): Remove.
19770 (__arm_vcreateq_s32): Remove.
19771 (__arm_vcreateq_s64): Remove.
19772 (__arm_vcreateq_f16): Remove.
19773 (__arm_vcreateq_f32): Remove.
19774
19775 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
19776
19777 * config/arm/iterators.md (MVE_FP_CREATE_ONLY): New.
19778 (mve_insn): Add VCREATEQ_S, VCREATEQ_U, VCREATEQ_F.
19779 * config/arm/mve.md (mve_vcreateq_f<mode>): Rename into ...
19780 (@mve_<mve_insn>q_f<mode>): ... this.
19781 (mve_vcreateq_<supf><mode>): Rename into ...
19782 (@mve_<mve_insn>q_<supf><mode>): ... this.
19783
19784 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
19785
19786 * config/arm/arm-mve-builtins-shapes.cc (create): New.
19787 * config/arm/arm-mve-builtins-shapes.h: (create): New.
19788
19789 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
19790
19791 * config/arm/arm-mve-builtins-functions.h (class
19792 unspec_mve_function_exact_insn): New.
19793
19794 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
19795
19796 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_N_NO_N_F): New.
19797 (vorrq): New.
19798 * config/arm/arm-mve-builtins-base.def (vorrq): New.
19799 * config/arm/arm-mve-builtins-base.h (vorrq): New.
19800 * config/arm/arm-mve-builtins.cc
19801 (function_instance::has_inactive_argument): Handle vorrq.
19802 * config/arm/arm_mve.h (vorrq): Remove.
19803 (vorrq_m_n): Remove.
19804 (vorrq_m): Remove.
19805 (vorrq_x): Remove.
19806 (vorrq_u8): Remove.
19807 (vorrq_s8): Remove.
19808 (vorrq_u16): Remove.
19809 (vorrq_s16): Remove.
19810 (vorrq_u32): Remove.
19811 (vorrq_s32): Remove.
19812 (vorrq_n_u16): Remove.
19813 (vorrq_f16): Remove.
19814 (vorrq_n_s16): Remove.
19815 (vorrq_n_u32): Remove.
19816 (vorrq_f32): Remove.
19817 (vorrq_n_s32): Remove.
19818 (vorrq_m_n_s16): Remove.
19819 (vorrq_m_n_u16): Remove.
19820 (vorrq_m_n_s32): Remove.
19821 (vorrq_m_n_u32): Remove.
19822 (vorrq_m_s8): Remove.
19823 (vorrq_m_s32): Remove.
19824 (vorrq_m_s16): Remove.
19825 (vorrq_m_u8): Remove.
19826 (vorrq_m_u32): Remove.
19827 (vorrq_m_u16): Remove.
19828 (vorrq_m_f32): Remove.
19829 (vorrq_m_f16): Remove.
19830 (vorrq_x_s8): Remove.
19831 (vorrq_x_s16): Remove.
19832 (vorrq_x_s32): Remove.
19833 (vorrq_x_u8): Remove.
19834 (vorrq_x_u16): Remove.
19835 (vorrq_x_u32): Remove.
19836 (vorrq_x_f16): Remove.
19837 (vorrq_x_f32): Remove.
19838 (__arm_vorrq_u8): Remove.
19839 (__arm_vorrq_s8): Remove.
19840 (__arm_vorrq_u16): Remove.
19841 (__arm_vorrq_s16): Remove.
19842 (__arm_vorrq_u32): Remove.
19843 (__arm_vorrq_s32): Remove.
19844 (__arm_vorrq_n_u16): Remove.
19845 (__arm_vorrq_n_s16): Remove.
19846 (__arm_vorrq_n_u32): Remove.
19847 (__arm_vorrq_n_s32): Remove.
19848 (__arm_vorrq_m_n_s16): Remove.
19849 (__arm_vorrq_m_n_u16): Remove.
19850 (__arm_vorrq_m_n_s32): Remove.
19851 (__arm_vorrq_m_n_u32): Remove.
19852 (__arm_vorrq_m_s8): Remove.
19853 (__arm_vorrq_m_s32): Remove.
19854 (__arm_vorrq_m_s16): Remove.
19855 (__arm_vorrq_m_u8): Remove.
19856 (__arm_vorrq_m_u32): Remove.
19857 (__arm_vorrq_m_u16): Remove.
19858 (__arm_vorrq_x_s8): Remove.
19859 (__arm_vorrq_x_s16): Remove.
19860 (__arm_vorrq_x_s32): Remove.
19861 (__arm_vorrq_x_u8): Remove.
19862 (__arm_vorrq_x_u16): Remove.
19863 (__arm_vorrq_x_u32): Remove.
19864 (__arm_vorrq_f16): Remove.
19865 (__arm_vorrq_f32): Remove.
19866 (__arm_vorrq_m_f32): Remove.
19867 (__arm_vorrq_m_f16): Remove.
19868 (__arm_vorrq_x_f16): Remove.
19869 (__arm_vorrq_x_f32): Remove.
19870 (__arm_vorrq): Remove.
19871 (__arm_vorrq_m_n): Remove.
19872 (__arm_vorrq_m): Remove.
19873 (__arm_vorrq_x): Remove.
19874
19875 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
19876
19877 * config/arm/arm-mve-builtins-shapes.cc (binary_orrq): New.
19878 * config/arm/arm-mve-builtins-shapes.h (binary_orrq): New.
19879 * config/arm/arm-mve-builtins.cc (preds_m_or_none): Remove static.
19880 * config/arm/arm-mve-builtins.h (preds_m_or_none): Declare.
19881
19882 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
19883
19884 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M): New.
19885 (vandq,veorq): New.
19886 * config/arm/arm-mve-builtins-base.def (vandq, veorq): New.
19887 * config/arm/arm-mve-builtins-base.h (vandq, veorq): New.
19888 * config/arm/arm_mve.h (vandq): Remove.
19889 (vandq_m): Remove.
19890 (vandq_x): Remove.
19891 (vandq_u8): Remove.
19892 (vandq_s8): Remove.
19893 (vandq_u16): Remove.
19894 (vandq_s16): Remove.
19895 (vandq_u32): Remove.
19896 (vandq_s32): Remove.
19897 (vandq_f16): Remove.
19898 (vandq_f32): Remove.
19899 (vandq_m_s8): Remove.
19900 (vandq_m_s32): Remove.
19901 (vandq_m_s16): Remove.
19902 (vandq_m_u8): Remove.
19903 (vandq_m_u32): Remove.
19904 (vandq_m_u16): Remove.
19905 (vandq_m_f32): Remove.
19906 (vandq_m_f16): Remove.
19907 (vandq_x_s8): Remove.
19908 (vandq_x_s16): Remove.
19909 (vandq_x_s32): Remove.
19910 (vandq_x_u8): Remove.
19911 (vandq_x_u16): Remove.
19912 (vandq_x_u32): Remove.
19913 (vandq_x_f16): Remove.
19914 (vandq_x_f32): Remove.
19915 (__arm_vandq_u8): Remove.
19916 (__arm_vandq_s8): Remove.
19917 (__arm_vandq_u16): Remove.
19918 (__arm_vandq_s16): Remove.
19919 (__arm_vandq_u32): Remove.
19920 (__arm_vandq_s32): Remove.
19921 (__arm_vandq_m_s8): Remove.
19922 (__arm_vandq_m_s32): Remove.
19923 (__arm_vandq_m_s16): Remove.
19924 (__arm_vandq_m_u8): Remove.
19925 (__arm_vandq_m_u32): Remove.
19926 (__arm_vandq_m_u16): Remove.
19927 (__arm_vandq_x_s8): Remove.
19928 (__arm_vandq_x_s16): Remove.
19929 (__arm_vandq_x_s32): Remove.
19930 (__arm_vandq_x_u8): Remove.
19931 (__arm_vandq_x_u16): Remove.
19932 (__arm_vandq_x_u32): Remove.
19933 (__arm_vandq_f16): Remove.
19934 (__arm_vandq_f32): Remove.
19935 (__arm_vandq_m_f32): Remove.
19936 (__arm_vandq_m_f16): Remove.
19937 (__arm_vandq_x_f16): Remove.
19938 (__arm_vandq_x_f32): Remove.
19939 (__arm_vandq): Remove.
19940 (__arm_vandq_m): Remove.
19941 (__arm_vandq_x): Remove.
19942 (veorq_m): Remove.
19943 (veorq_x): Remove.
19944 (veorq_u8): Remove.
19945 (veorq_s8): Remove.
19946 (veorq_u16): Remove.
19947 (veorq_s16): Remove.
19948 (veorq_u32): Remove.
19949 (veorq_s32): Remove.
19950 (veorq_f16): Remove.
19951 (veorq_f32): Remove.
19952 (veorq_m_s8): Remove.
19953 (veorq_m_s32): Remove.
19954 (veorq_m_s16): Remove.
19955 (veorq_m_u8): Remove.
19956 (veorq_m_u32): Remove.
19957 (veorq_m_u16): Remove.
19958 (veorq_m_f32): Remove.
19959 (veorq_m_f16): Remove.
19960 (veorq_x_s8): Remove.
19961 (veorq_x_s16): Remove.
19962 (veorq_x_s32): Remove.
19963 (veorq_x_u8): Remove.
19964 (veorq_x_u16): Remove.
19965 (veorq_x_u32): Remove.
19966 (veorq_x_f16): Remove.
19967 (veorq_x_f32): Remove.
19968 (__arm_veorq_u8): Remove.
19969 (__arm_veorq_s8): Remove.
19970 (__arm_veorq_u16): Remove.
19971 (__arm_veorq_s16): Remove.
19972 (__arm_veorq_u32): Remove.
19973 (__arm_veorq_s32): Remove.
19974 (__arm_veorq_m_s8): Remove.
19975 (__arm_veorq_m_s32): Remove.
19976 (__arm_veorq_m_s16): Remove.
19977 (__arm_veorq_m_u8): Remove.
19978 (__arm_veorq_m_u32): Remove.
19979 (__arm_veorq_m_u16): Remove.
19980 (__arm_veorq_x_s8): Remove.
19981 (__arm_veorq_x_s16): Remove.
19982 (__arm_veorq_x_s32): Remove.
19983 (__arm_veorq_x_u8): Remove.
19984 (__arm_veorq_x_u16): Remove.
19985 (__arm_veorq_x_u32): Remove.
19986 (__arm_veorq_f16): Remove.
19987 (__arm_veorq_f32): Remove.
19988 (__arm_veorq_m_f32): Remove.
19989 (__arm_veorq_m_f16): Remove.
19990 (__arm_veorq_x_f16): Remove.
19991 (__arm_veorq_x_f32): Remove.
19992 (__arm_veorq): Remove.
19993 (__arm_veorq_m): Remove.
19994 (__arm_veorq_x): Remove.
19995
19996 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
19997
19998 * config/arm/iterators.md (MVE_INT_M_BINARY_LOGIC)
19999 (MVE_FP_M_BINARY_LOGIC): New.
20000 (MVE_INT_M_N_BINARY_LOGIC): New.
20001 (MVE_INT_N_BINARY_LOGIC): New.
20002 (mve_insn): Add vand, veor, vorr, vbic.
20003 * config/arm/mve.md (mve_vandq_m_<supf><mode>)
20004 (mve_veorq_m_<supf><mode>, mve_vorrq_m_<supf><mode>)
20005 (mve_vbicq_m_<supf><mode>): Merge into ...
20006 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
20007 (mve_vandq_m_f<mode>, mve_veorq_m_f<mode>, mve_vorrq_m_f<mode>)
20008 (mve_vbicq_m_f<mode>): Merge into ...
20009 (@mve_<mve_insn>q_m_f<mode>): ... this.
20010 (mve_vorrq_n_<supf><mode>)
20011 (mve_vbicq_n_<supf><mode>): Merge into ...
20012 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
20013 (mve_vorrq_m_n_<supf><mode>, mve_vbicq_m_n_<supf><mode>): Merge
20014 into ...
20015 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
20016
20017 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
20018
20019 * config/arm/arm-mve-builtins-shapes.cc (binary): New.
20020 * config/arm/arm-mve-builtins-shapes.h (binary): New.
20021
20022 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
20023
20024 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_N):
20025 New.
20026 (vaddq, vmulq, vsubq): New.
20027 * config/arm/arm-mve-builtins-base.def (vaddq, vmulq, vsubq): New.
20028 * config/arm/arm-mve-builtins-base.h (vaddq, vmulq, vsubq): New.
20029 * config/arm/arm_mve.h (vaddq): Remove.
20030 (vaddq_m): Remove.
20031 (vaddq_x): Remove.
20032 (vaddq_n_u8): Remove.
20033 (vaddq_n_s8): Remove.
20034 (vaddq_n_u16): Remove.
20035 (vaddq_n_s16): Remove.
20036 (vaddq_n_u32): Remove.
20037 (vaddq_n_s32): Remove.
20038 (vaddq_n_f16): Remove.
20039 (vaddq_n_f32): Remove.
20040 (vaddq_m_n_s8): Remove.
20041 (vaddq_m_n_s32): Remove.
20042 (vaddq_m_n_s16): Remove.
20043 (vaddq_m_n_u8): Remove.
20044 (vaddq_m_n_u32): Remove.
20045 (vaddq_m_n_u16): Remove.
20046 (vaddq_m_s8): Remove.
20047 (vaddq_m_s32): Remove.
20048 (vaddq_m_s16): Remove.
20049 (vaddq_m_u8): Remove.
20050 (vaddq_m_u32): Remove.
20051 (vaddq_m_u16): Remove.
20052 (vaddq_m_f32): Remove.
20053 (vaddq_m_f16): Remove.
20054 (vaddq_m_n_f32): Remove.
20055 (vaddq_m_n_f16): Remove.
20056 (vaddq_s8): Remove.
20057 (vaddq_s16): Remove.
20058 (vaddq_s32): Remove.
20059 (vaddq_u8): Remove.
20060 (vaddq_u16): Remove.
20061 (vaddq_u32): Remove.
20062 (vaddq_f16): Remove.
20063 (vaddq_f32): Remove.
20064 (vaddq_x_s8): Remove.
20065 (vaddq_x_s16): Remove.
20066 (vaddq_x_s32): Remove.
20067 (vaddq_x_n_s8): Remove.
20068 (vaddq_x_n_s16): Remove.
20069 (vaddq_x_n_s32): Remove.
20070 (vaddq_x_u8): Remove.
20071 (vaddq_x_u16): Remove.
20072 (vaddq_x_u32): Remove.
20073 (vaddq_x_n_u8): Remove.
20074 (vaddq_x_n_u16): Remove.
20075 (vaddq_x_n_u32): Remove.
20076 (vaddq_x_f16): Remove.
20077 (vaddq_x_f32): Remove.
20078 (vaddq_x_n_f16): Remove.
20079 (vaddq_x_n_f32): Remove.
20080 (__arm_vaddq_n_u8): Remove.
20081 (__arm_vaddq_n_s8): Remove.
20082 (__arm_vaddq_n_u16): Remove.
20083 (__arm_vaddq_n_s16): Remove.
20084 (__arm_vaddq_n_u32): Remove.
20085 (__arm_vaddq_n_s32): Remove.
20086 (__arm_vaddq_m_n_s8): Remove.
20087 (__arm_vaddq_m_n_s32): Remove.
20088 (__arm_vaddq_m_n_s16): Remove.
20089 (__arm_vaddq_m_n_u8): Remove.
20090 (__arm_vaddq_m_n_u32): Remove.
20091 (__arm_vaddq_m_n_u16): Remove.
20092 (__arm_vaddq_m_s8): Remove.
20093 (__arm_vaddq_m_s32): Remove.
20094 (__arm_vaddq_m_s16): Remove.
20095 (__arm_vaddq_m_u8): Remove.
20096 (__arm_vaddq_m_u32): Remove.
20097 (__arm_vaddq_m_u16): Remove.
20098 (__arm_vaddq_s8): Remove.
20099 (__arm_vaddq_s16): Remove.
20100 (__arm_vaddq_s32): Remove.
20101 (__arm_vaddq_u8): Remove.
20102 (__arm_vaddq_u16): Remove.
20103 (__arm_vaddq_u32): Remove.
20104 (__arm_vaddq_x_s8): Remove.
20105 (__arm_vaddq_x_s16): Remove.
20106 (__arm_vaddq_x_s32): Remove.
20107 (__arm_vaddq_x_n_s8): Remove.
20108 (__arm_vaddq_x_n_s16): Remove.
20109 (__arm_vaddq_x_n_s32): Remove.
20110 (__arm_vaddq_x_u8): Remove.
20111 (__arm_vaddq_x_u16): Remove.
20112 (__arm_vaddq_x_u32): Remove.
20113 (__arm_vaddq_x_n_u8): Remove.
20114 (__arm_vaddq_x_n_u16): Remove.
20115 (__arm_vaddq_x_n_u32): Remove.
20116 (__arm_vaddq_n_f16): Remove.
20117 (__arm_vaddq_n_f32): Remove.
20118 (__arm_vaddq_m_f32): Remove.
20119 (__arm_vaddq_m_f16): Remove.
20120 (__arm_vaddq_m_n_f32): Remove.
20121 (__arm_vaddq_m_n_f16): Remove.
20122 (__arm_vaddq_f16): Remove.
20123 (__arm_vaddq_f32): Remove.
20124 (__arm_vaddq_x_f16): Remove.
20125 (__arm_vaddq_x_f32): Remove.
20126 (__arm_vaddq_x_n_f16): Remove.
20127 (__arm_vaddq_x_n_f32): Remove.
20128 (__arm_vaddq): Remove.
20129 (__arm_vaddq_m): Remove.
20130 (__arm_vaddq_x): Remove.
20131 (vmulq): Remove.
20132 (vmulq_m): Remove.
20133 (vmulq_x): Remove.
20134 (vmulq_u8): Remove.
20135 (vmulq_n_u8): Remove.
20136 (vmulq_s8): Remove.
20137 (vmulq_n_s8): Remove.
20138 (vmulq_u16): Remove.
20139 (vmulq_n_u16): Remove.
20140 (vmulq_s16): Remove.
20141 (vmulq_n_s16): Remove.
20142 (vmulq_u32): Remove.
20143 (vmulq_n_u32): Remove.
20144 (vmulq_s32): Remove.
20145 (vmulq_n_s32): Remove.
20146 (vmulq_n_f16): Remove.
20147 (vmulq_f16): Remove.
20148 (vmulq_n_f32): Remove.
20149 (vmulq_f32): Remove.
20150 (vmulq_m_n_s8): Remove.
20151 (vmulq_m_n_s32): Remove.
20152 (vmulq_m_n_s16): Remove.
20153 (vmulq_m_n_u8): Remove.
20154 (vmulq_m_n_u32): Remove.
20155 (vmulq_m_n_u16): Remove.
20156 (vmulq_m_s8): Remove.
20157 (vmulq_m_s32): Remove.
20158 (vmulq_m_s16): Remove.
20159 (vmulq_m_u8): Remove.
20160 (vmulq_m_u32): Remove.
20161 (vmulq_m_u16): Remove.
20162 (vmulq_m_f32): Remove.
20163 (vmulq_m_f16): Remove.
20164 (vmulq_m_n_f32): Remove.
20165 (vmulq_m_n_f16): Remove.
20166 (vmulq_x_s8): Remove.
20167 (vmulq_x_s16): Remove.
20168 (vmulq_x_s32): Remove.
20169 (vmulq_x_n_s8): Remove.
20170 (vmulq_x_n_s16): Remove.
20171 (vmulq_x_n_s32): Remove.
20172 (vmulq_x_u8): Remove.
20173 (vmulq_x_u16): Remove.
20174 (vmulq_x_u32): Remove.
20175 (vmulq_x_n_u8): Remove.
20176 (vmulq_x_n_u16): Remove.
20177 (vmulq_x_n_u32): Remove.
20178 (vmulq_x_f16): Remove.
20179 (vmulq_x_f32): Remove.
20180 (vmulq_x_n_f16): Remove.
20181 (vmulq_x_n_f32): Remove.
20182 (__arm_vmulq_u8): Remove.
20183 (__arm_vmulq_n_u8): Remove.
20184 (__arm_vmulq_s8): Remove.
20185 (__arm_vmulq_n_s8): Remove.
20186 (__arm_vmulq_u16): Remove.
20187 (__arm_vmulq_n_u16): Remove.
20188 (__arm_vmulq_s16): Remove.
20189 (__arm_vmulq_n_s16): Remove.
20190 (__arm_vmulq_u32): Remove.
20191 (__arm_vmulq_n_u32): Remove.
20192 (__arm_vmulq_s32): Remove.
20193 (__arm_vmulq_n_s32): Remove.
20194 (__arm_vmulq_m_n_s8): Remove.
20195 (__arm_vmulq_m_n_s32): Remove.
20196 (__arm_vmulq_m_n_s16): Remove.
20197 (__arm_vmulq_m_n_u8): Remove.
20198 (__arm_vmulq_m_n_u32): Remove.
20199 (__arm_vmulq_m_n_u16): Remove.
20200 (__arm_vmulq_m_s8): Remove.
20201 (__arm_vmulq_m_s32): Remove.
20202 (__arm_vmulq_m_s16): Remove.
20203 (__arm_vmulq_m_u8): Remove.
20204 (__arm_vmulq_m_u32): Remove.
20205 (__arm_vmulq_m_u16): Remove.
20206 (__arm_vmulq_x_s8): Remove.
20207 (__arm_vmulq_x_s16): Remove.
20208 (__arm_vmulq_x_s32): Remove.
20209 (__arm_vmulq_x_n_s8): Remove.
20210 (__arm_vmulq_x_n_s16): Remove.
20211 (__arm_vmulq_x_n_s32): Remove.
20212 (__arm_vmulq_x_u8): Remove.
20213 (__arm_vmulq_x_u16): Remove.
20214 (__arm_vmulq_x_u32): Remove.
20215 (__arm_vmulq_x_n_u8): Remove.
20216 (__arm_vmulq_x_n_u16): Remove.
20217 (__arm_vmulq_x_n_u32): Remove.
20218 (__arm_vmulq_n_f16): Remove.
20219 (__arm_vmulq_f16): Remove.
20220 (__arm_vmulq_n_f32): Remove.
20221 (__arm_vmulq_f32): Remove.
20222 (__arm_vmulq_m_f32): Remove.
20223 (__arm_vmulq_m_f16): Remove.
20224 (__arm_vmulq_m_n_f32): Remove.
20225 (__arm_vmulq_m_n_f16): Remove.
20226 (__arm_vmulq_x_f16): Remove.
20227 (__arm_vmulq_x_f32): Remove.
20228 (__arm_vmulq_x_n_f16): Remove.
20229 (__arm_vmulq_x_n_f32): Remove.
20230 (__arm_vmulq): Remove.
20231 (__arm_vmulq_m): Remove.
20232 (__arm_vmulq_x): Remove.
20233 (vsubq): Remove.
20234 (vsubq_m): Remove.
20235 (vsubq_x): Remove.
20236 (vsubq_n_f16): Remove.
20237 (vsubq_n_f32): Remove.
20238 (vsubq_u8): Remove.
20239 (vsubq_n_u8): Remove.
20240 (vsubq_s8): Remove.
20241 (vsubq_n_s8): Remove.
20242 (vsubq_u16): Remove.
20243 (vsubq_n_u16): Remove.
20244 (vsubq_s16): Remove.
20245 (vsubq_n_s16): Remove.
20246 (vsubq_u32): Remove.
20247 (vsubq_n_u32): Remove.
20248 (vsubq_s32): Remove.
20249 (vsubq_n_s32): Remove.
20250 (vsubq_f16): Remove.
20251 (vsubq_f32): Remove.
20252 (vsubq_m_s8): Remove.
20253 (vsubq_m_u8): Remove.
20254 (vsubq_m_s16): Remove.
20255 (vsubq_m_u16): Remove.
20256 (vsubq_m_s32): Remove.
20257 (vsubq_m_u32): Remove.
20258 (vsubq_m_n_s8): Remove.
20259 (vsubq_m_n_s32): Remove.
20260 (vsubq_m_n_s16): Remove.
20261 (vsubq_m_n_u8): Remove.
20262 (vsubq_m_n_u32): Remove.
20263 (vsubq_m_n_u16): Remove.
20264 (vsubq_m_f32): Remove.
20265 (vsubq_m_f16): Remove.
20266 (vsubq_m_n_f32): Remove.
20267 (vsubq_m_n_f16): Remove.
20268 (vsubq_x_s8): Remove.
20269 (vsubq_x_s16): Remove.
20270 (vsubq_x_s32): Remove.
20271 (vsubq_x_n_s8): Remove.
20272 (vsubq_x_n_s16): Remove.
20273 (vsubq_x_n_s32): Remove.
20274 (vsubq_x_u8): Remove.
20275 (vsubq_x_u16): Remove.
20276 (vsubq_x_u32): Remove.
20277 (vsubq_x_n_u8): Remove.
20278 (vsubq_x_n_u16): Remove.
20279 (vsubq_x_n_u32): Remove.
20280 (vsubq_x_f16): Remove.
20281 (vsubq_x_f32): Remove.
20282 (vsubq_x_n_f16): Remove.
20283 (vsubq_x_n_f32): Remove.
20284 (__arm_vsubq_u8): Remove.
20285 (__arm_vsubq_n_u8): Remove.
20286 (__arm_vsubq_s8): Remove.
20287 (__arm_vsubq_n_s8): Remove.
20288 (__arm_vsubq_u16): Remove.
20289 (__arm_vsubq_n_u16): Remove.
20290 (__arm_vsubq_s16): Remove.
20291 (__arm_vsubq_n_s16): Remove.
20292 (__arm_vsubq_u32): Remove.
20293 (__arm_vsubq_n_u32): Remove.
20294 (__arm_vsubq_s32): Remove.
20295 (__arm_vsubq_n_s32): Remove.
20296 (__arm_vsubq_m_s8): Remove.
20297 (__arm_vsubq_m_u8): Remove.
20298 (__arm_vsubq_m_s16): Remove.
20299 (__arm_vsubq_m_u16): Remove.
20300 (__arm_vsubq_m_s32): Remove.
20301 (__arm_vsubq_m_u32): Remove.
20302 (__arm_vsubq_m_n_s8): Remove.
20303 (__arm_vsubq_m_n_s32): Remove.
20304 (__arm_vsubq_m_n_s16): Remove.
20305 (__arm_vsubq_m_n_u8): Remove.
20306 (__arm_vsubq_m_n_u32): Remove.
20307 (__arm_vsubq_m_n_u16): Remove.
20308 (__arm_vsubq_x_s8): Remove.
20309 (__arm_vsubq_x_s16): Remove.
20310 (__arm_vsubq_x_s32): Remove.
20311 (__arm_vsubq_x_n_s8): Remove.
20312 (__arm_vsubq_x_n_s16): Remove.
20313 (__arm_vsubq_x_n_s32): Remove.
20314 (__arm_vsubq_x_u8): Remove.
20315 (__arm_vsubq_x_u16): Remove.
20316 (__arm_vsubq_x_u32): Remove.
20317 (__arm_vsubq_x_n_u8): Remove.
20318 (__arm_vsubq_x_n_u16): Remove.
20319 (__arm_vsubq_x_n_u32): Remove.
20320 (__arm_vsubq_n_f16): Remove.
20321 (__arm_vsubq_n_f32): Remove.
20322 (__arm_vsubq_f16): Remove.
20323 (__arm_vsubq_f32): Remove.
20324 (__arm_vsubq_m_f32): Remove.
20325 (__arm_vsubq_m_f16): Remove.
20326 (__arm_vsubq_m_n_f32): Remove.
20327 (__arm_vsubq_m_n_f16): Remove.
20328 (__arm_vsubq_x_f16): Remove.
20329 (__arm_vsubq_x_f32): Remove.
20330 (__arm_vsubq_x_n_f16): Remove.
20331 (__arm_vsubq_x_n_f32): Remove.
20332 (__arm_vsubq): Remove.
20333 (__arm_vsubq_m): Remove.
20334 (__arm_vsubq_x): Remove.
20335 * config/arm/arm_mve_builtins.def (vsubq_u, vsubq_s, vsubq_f):
20336 Remove.
20337 (vmulq_u, vmulq_s, vmulq_f): Remove.
20338 * config/arm/mve.md (mve_vsubq_<supf><mode>): Remove.
20339 (mve_vmulq_<supf><mode>): Remove.
20340
20341 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
20342
20343 * config/arm/iterators.md (MVE_INT_BINARY_RTX, MVE_INT_M_BINARY)
20344 (MVE_INT_M_N_BINARY, MVE_INT_N_BINARY, MVE_FP_M_BINARY)
20345 (MVE_FP_M_N_BINARY, MVE_FP_N_BINARY, mve_addsubmul, mve_insn): New
20346 iterators.
20347 * config/arm/mve.md
20348 (mve_vsubq_n_f<mode>, mve_vaddq_n_f<mode>, mve_vmulq_n_f<mode>):
20349 Factorize into ...
20350 (@mve_<mve_insn>q_n_f<mode>): ... this.
20351 (mve_vaddq_n_<supf><mode>, mve_vmulq_n_<supf><mode>)
20352 (mve_vsubq_n_<supf><mode>): Factorize into ...
20353 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
20354 (mve_vaddq<mode>, mve_vmulq<mode>, mve_vsubq<mode>): Factorize
20355 into ...
20356 (mve_<mve_addsubmul>q<mode>): ... this.
20357 (mve_vaddq_f<mode>, mve_vmulq_f<mode>, mve_vsubq_f<mode>):
20358 Factorize into ...
20359 (mve_<mve_addsubmul>q_f<mode>): ... this.
20360 (mve_vaddq_m_<supf><mode>, mve_vmulq_m_<supf><mode>)
20361 (mve_vsubq_m_<supf><mode>): Factorize into ...
20362 (@mve_<mve_insn>q_m_<supf><mode>): ... this,
20363 (mve_vaddq_m_n_<supf><mode>, mve_vmulq_m_n_<supf><mode>)
20364 (mve_vsubq_m_n_<supf><mode>): Factorize into ...
20365 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
20366 (mve_vaddq_m_f<mode>, mve_vmulq_m_f<mode>, mve_vsubq_m_f<mode>):
20367 Factorize into ...
20368 (@mve_<mve_insn>q_m_f<mode>): ... this.
20369 (mve_vaddq_m_n_f<mode>, mve_vmulq_m_n_f<mode>)
20370 (mve_vsubq_m_n_f<mode>): Factorize into ...
20371 (@mve_<mve_insn>q_m_n_f<mode>): ... this.
20372
20373 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
20374
20375 * config/arm/arm-mve-builtins-functions.h (class
20376 unspec_based_mve_function_base): New.
20377 (class unspec_based_mve_function_exact_insn): New.
20378
20379 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
20380
20381 * config/arm/arm-mve-builtins-shapes.cc (binary_opt_n): New.
20382 * config/arm/arm-mve-builtins-shapes.h (binary_opt_n): New.
20383
20384 2023-05-03 Murray Steele <murray.steele@arm.com>
20385 Christophe Lyon <christophe.lyon@arm.com>
20386
20387 * config/arm/arm-mve-builtins-base.cc (class
20388 vuninitializedq_impl): New.
20389 * config/arm/arm-mve-builtins-base.def (vuninitializedq): New.
20390 * config/arm/arm-mve-builtins-base.h (vuninitializedq): New
20391 declaration.
20392 * config/arm/arm-mve-builtins-shapes.cc (inherent): New.
20393 * config/arm/arm-mve-builtins-shapes.h (inherent): New
20394 declaration.
20395 * config/arm/arm_mve_types.h (__arm_vuninitializedq): Move to ...
20396 * config/arm/arm_mve.h (__arm_vuninitializedq): ... here.
20397 (__arm_vuninitializedq_u8): Remove.
20398 (__arm_vuninitializedq_u16): Remove.
20399 (__arm_vuninitializedq_u32): Remove.
20400 (__arm_vuninitializedq_u64): Remove.
20401 (__arm_vuninitializedq_s8): Remove.
20402 (__arm_vuninitializedq_s16): Remove.
20403 (__arm_vuninitializedq_s32): Remove.
20404 (__arm_vuninitializedq_s64): Remove.
20405 (__arm_vuninitializedq_f16): Remove.
20406 (__arm_vuninitializedq_f32): Remove.
20407
20408 2023-05-03 Murray Steele <murray.steele@arm.com>
20409 Christophe Lyon <christophe.lyon@arm.com>
20410
20411 * config/arm/arm-mve-builtins-base.cc (vreinterpretq_impl): New class.
20412 * config/arm/arm-mve-builtins-base.def: Define vreinterpretq.
20413 * config/arm/arm-mve-builtins-base.h (vreinterpretq): New declaration.
20414 * config/arm/arm-mve-builtins-shapes.cc (parse_element_type): New function.
20415 (parse_type): Likewise.
20416 (parse_signature): Likewise.
20417 (build_one): Likewise.
20418 (build_all): Likewise.
20419 (overloaded_base): New struct.
20420 (unary_convert_def): Likewise.
20421 * config/arm/arm-mve-builtins-shapes.h (unary_convert): Declare.
20422 * config/arm/arm-mve-builtins.cc (TYPES_reinterpret_signed1): New
20423 macro.
20424 (TYPES_reinterpret_unsigned1): Likewise.
20425 (TYPES_reinterpret_integer): Likewise.
20426 (TYPES_reinterpret_integer1): Likewise.
20427 (TYPES_reinterpret_float1): Likewise.
20428 (TYPES_reinterpret_float): Likewise.
20429 (reinterpret_integer): New.
20430 (reinterpret_float): New.
20431 (handle_arm_mve_h): Register builtins.
20432 * config/arm/arm_mve.h (vreinterpretq_s16): Remove.
20433 (vreinterpretq_s32): Likewise.
20434 (vreinterpretq_s64): Likewise.
20435 (vreinterpretq_s8): Likewise.
20436 (vreinterpretq_u16): Likewise.
20437 (vreinterpretq_u32): Likewise.
20438 (vreinterpretq_u64): Likewise.
20439 (vreinterpretq_u8): Likewise.
20440 (vreinterpretq_f16): Likewise.
20441 (vreinterpretq_f32): Likewise.
20442 (vreinterpretq_s16_s32): Likewise.
20443 (vreinterpretq_s16_s64): Likewise.
20444 (vreinterpretq_s16_s8): Likewise.
20445 (vreinterpretq_s16_u16): Likewise.
20446 (vreinterpretq_s16_u32): Likewise.
20447 (vreinterpretq_s16_u64): Likewise.
20448 (vreinterpretq_s16_u8): Likewise.
20449 (vreinterpretq_s32_s16): Likewise.
20450 (vreinterpretq_s32_s64): Likewise.
20451 (vreinterpretq_s32_s8): Likewise.
20452 (vreinterpretq_s32_u16): Likewise.
20453 (vreinterpretq_s32_u32): Likewise.
20454 (vreinterpretq_s32_u64): Likewise.
20455 (vreinterpretq_s32_u8): Likewise.
20456 (vreinterpretq_s64_s16): Likewise.
20457 (vreinterpretq_s64_s32): Likewise.
20458 (vreinterpretq_s64_s8): Likewise.
20459 (vreinterpretq_s64_u16): Likewise.
20460 (vreinterpretq_s64_u32): Likewise.
20461 (vreinterpretq_s64_u64): Likewise.
20462 (vreinterpretq_s64_u8): Likewise.
20463 (vreinterpretq_s8_s16): Likewise.
20464 (vreinterpretq_s8_s32): Likewise.
20465 (vreinterpretq_s8_s64): Likewise.
20466 (vreinterpretq_s8_u16): Likewise.
20467 (vreinterpretq_s8_u32): Likewise.
20468 (vreinterpretq_s8_u64): Likewise.
20469 (vreinterpretq_s8_u8): Likewise.
20470 (vreinterpretq_u16_s16): Likewise.
20471 (vreinterpretq_u16_s32): Likewise.
20472 (vreinterpretq_u16_s64): Likewise.
20473 (vreinterpretq_u16_s8): Likewise.
20474 (vreinterpretq_u16_u32): Likewise.
20475 (vreinterpretq_u16_u64): Likewise.
20476 (vreinterpretq_u16_u8): Likewise.
20477 (vreinterpretq_u32_s16): Likewise.
20478 (vreinterpretq_u32_s32): Likewise.
20479 (vreinterpretq_u32_s64): Likewise.
20480 (vreinterpretq_u32_s8): Likewise.
20481 (vreinterpretq_u32_u16): Likewise.
20482 (vreinterpretq_u32_u64): Likewise.
20483 (vreinterpretq_u32_u8): Likewise.
20484 (vreinterpretq_u64_s16): Likewise.
20485 (vreinterpretq_u64_s32): Likewise.
20486 (vreinterpretq_u64_s64): Likewise.
20487 (vreinterpretq_u64_s8): Likewise.
20488 (vreinterpretq_u64_u16): Likewise.
20489 (vreinterpretq_u64_u32): Likewise.
20490 (vreinterpretq_u64_u8): Likewise.
20491 (vreinterpretq_u8_s16): Likewise.
20492 (vreinterpretq_u8_s32): Likewise.
20493 (vreinterpretq_u8_s64): Likewise.
20494 (vreinterpretq_u8_s8): Likewise.
20495 (vreinterpretq_u8_u16): Likewise.
20496 (vreinterpretq_u8_u32): Likewise.
20497 (vreinterpretq_u8_u64): Likewise.
20498 (vreinterpretq_s32_f16): Likewise.
20499 (vreinterpretq_s32_f32): Likewise.
20500 (vreinterpretq_u16_f16): Likewise.
20501 (vreinterpretq_u16_f32): Likewise.
20502 (vreinterpretq_u32_f16): Likewise.
20503 (vreinterpretq_u32_f32): Likewise.
20504 (vreinterpretq_u64_f16): Likewise.
20505 (vreinterpretq_u64_f32): Likewise.
20506 (vreinterpretq_u8_f16): Likewise.
20507 (vreinterpretq_u8_f32): Likewise.
20508 (vreinterpretq_f16_f32): Likewise.
20509 (vreinterpretq_f16_s16): Likewise.
20510 (vreinterpretq_f16_s32): Likewise.
20511 (vreinterpretq_f16_s64): Likewise.
20512 (vreinterpretq_f16_s8): Likewise.
20513 (vreinterpretq_f16_u16): Likewise.
20514 (vreinterpretq_f16_u32): Likewise.
20515 (vreinterpretq_f16_u64): Likewise.
20516 (vreinterpretq_f16_u8): Likewise.
20517 (vreinterpretq_f32_f16): Likewise.
20518 (vreinterpretq_f32_s16): Likewise.
20519 (vreinterpretq_f32_s32): Likewise.
20520 (vreinterpretq_f32_s64): Likewise.
20521 (vreinterpretq_f32_s8): Likewise.
20522 (vreinterpretq_f32_u16): Likewise.
20523 (vreinterpretq_f32_u32): Likewise.
20524 (vreinterpretq_f32_u64): Likewise.
20525 (vreinterpretq_f32_u8): Likewise.
20526 (vreinterpretq_s16_f16): Likewise.
20527 (vreinterpretq_s16_f32): Likewise.
20528 (vreinterpretq_s64_f16): Likewise.
20529 (vreinterpretq_s64_f32): Likewise.
20530 (vreinterpretq_s8_f16): Likewise.
20531 (vreinterpretq_s8_f32): Likewise.
20532 (__arm_vreinterpretq_f16): Likewise.
20533 (__arm_vreinterpretq_f32): Likewise.
20534 (__arm_vreinterpretq_s16): Likewise.
20535 (__arm_vreinterpretq_s32): Likewise.
20536 (__arm_vreinterpretq_s64): Likewise.
20537 (__arm_vreinterpretq_s8): Likewise.
20538 (__arm_vreinterpretq_u16): Likewise.
20539 (__arm_vreinterpretq_u32): Likewise.
20540 (__arm_vreinterpretq_u64): Likewise.
20541 (__arm_vreinterpretq_u8): Likewise.
20542 * config/arm/arm_mve_types.h (__arm_vreinterpretq_s16_s32): Remove.
20543 (__arm_vreinterpretq_s16_s64): Likewise.
20544 (__arm_vreinterpretq_s16_s8): Likewise.
20545 (__arm_vreinterpretq_s16_u16): Likewise.
20546 (__arm_vreinterpretq_s16_u32): Likewise.
20547 (__arm_vreinterpretq_s16_u64): Likewise.
20548 (__arm_vreinterpretq_s16_u8): Likewise.
20549 (__arm_vreinterpretq_s32_s16): Likewise.
20550 (__arm_vreinterpretq_s32_s64): Likewise.
20551 (__arm_vreinterpretq_s32_s8): Likewise.
20552 (__arm_vreinterpretq_s32_u16): Likewise.
20553 (__arm_vreinterpretq_s32_u32): Likewise.
20554 (__arm_vreinterpretq_s32_u64): Likewise.
20555 (__arm_vreinterpretq_s32_u8): Likewise.
20556 (__arm_vreinterpretq_s64_s16): Likewise.
20557 (__arm_vreinterpretq_s64_s32): Likewise.
20558 (__arm_vreinterpretq_s64_s8): Likewise.
20559 (__arm_vreinterpretq_s64_u16): Likewise.
20560 (__arm_vreinterpretq_s64_u32): Likewise.
20561 (__arm_vreinterpretq_s64_u64): Likewise.
20562 (__arm_vreinterpretq_s64_u8): Likewise.
20563 (__arm_vreinterpretq_s8_s16): Likewise.
20564 (__arm_vreinterpretq_s8_s32): Likewise.
20565 (__arm_vreinterpretq_s8_s64): Likewise.
20566 (__arm_vreinterpretq_s8_u16): Likewise.
20567 (__arm_vreinterpretq_s8_u32): Likewise.
20568 (__arm_vreinterpretq_s8_u64): Likewise.
20569 (__arm_vreinterpretq_s8_u8): Likewise.
20570 (__arm_vreinterpretq_u16_s16): Likewise.
20571 (__arm_vreinterpretq_u16_s32): Likewise.
20572 (__arm_vreinterpretq_u16_s64): Likewise.
20573 (__arm_vreinterpretq_u16_s8): Likewise.
20574 (__arm_vreinterpretq_u16_u32): Likewise.
20575 (__arm_vreinterpretq_u16_u64): Likewise.
20576 (__arm_vreinterpretq_u16_u8): Likewise.
20577 (__arm_vreinterpretq_u32_s16): Likewise.
20578 (__arm_vreinterpretq_u32_s32): Likewise.
20579 (__arm_vreinterpretq_u32_s64): Likewise.
20580 (__arm_vreinterpretq_u32_s8): Likewise.
20581 (__arm_vreinterpretq_u32_u16): Likewise.
20582 (__arm_vreinterpretq_u32_u64): Likewise.
20583 (__arm_vreinterpretq_u32_u8): Likewise.
20584 (__arm_vreinterpretq_u64_s16): Likewise.
20585 (__arm_vreinterpretq_u64_s32): Likewise.
20586 (__arm_vreinterpretq_u64_s64): Likewise.
20587 (__arm_vreinterpretq_u64_s8): Likewise.
20588 (__arm_vreinterpretq_u64_u16): Likewise.
20589 (__arm_vreinterpretq_u64_u32): Likewise.
20590 (__arm_vreinterpretq_u64_u8): Likewise.
20591 (__arm_vreinterpretq_u8_s16): Likewise.
20592 (__arm_vreinterpretq_u8_s32): Likewise.
20593 (__arm_vreinterpretq_u8_s64): Likewise.
20594 (__arm_vreinterpretq_u8_s8): Likewise.
20595 (__arm_vreinterpretq_u8_u16): Likewise.
20596 (__arm_vreinterpretq_u8_u32): Likewise.
20597 (__arm_vreinterpretq_u8_u64): Likewise.
20598 (__arm_vreinterpretq_s32_f16): Likewise.
20599 (__arm_vreinterpretq_s32_f32): Likewise.
20600 (__arm_vreinterpretq_s16_f16): Likewise.
20601 (__arm_vreinterpretq_s16_f32): Likewise.
20602 (__arm_vreinterpretq_s64_f16): Likewise.
20603 (__arm_vreinterpretq_s64_f32): Likewise.
20604 (__arm_vreinterpretq_s8_f16): Likewise.
20605 (__arm_vreinterpretq_s8_f32): Likewise.
20606 (__arm_vreinterpretq_u16_f16): Likewise.
20607 (__arm_vreinterpretq_u16_f32): Likewise.
20608 (__arm_vreinterpretq_u32_f16): Likewise.
20609 (__arm_vreinterpretq_u32_f32): Likewise.
20610 (__arm_vreinterpretq_u64_f16): Likewise.
20611 (__arm_vreinterpretq_u64_f32): Likewise.
20612 (__arm_vreinterpretq_u8_f16): Likewise.
20613 (__arm_vreinterpretq_u8_f32): Likewise.
20614 (__arm_vreinterpretq_f16_f32): Likewise.
20615 (__arm_vreinterpretq_f16_s16): Likewise.
20616 (__arm_vreinterpretq_f16_s32): Likewise.
20617 (__arm_vreinterpretq_f16_s64): Likewise.
20618 (__arm_vreinterpretq_f16_s8): Likewise.
20619 (__arm_vreinterpretq_f16_u16): Likewise.
20620 (__arm_vreinterpretq_f16_u32): Likewise.
20621 (__arm_vreinterpretq_f16_u64): Likewise.
20622 (__arm_vreinterpretq_f16_u8): Likewise.
20623 (__arm_vreinterpretq_f32_f16): Likewise.
20624 (__arm_vreinterpretq_f32_s16): Likewise.
20625 (__arm_vreinterpretq_f32_s32): Likewise.
20626 (__arm_vreinterpretq_f32_s64): Likewise.
20627 (__arm_vreinterpretq_f32_s8): Likewise.
20628 (__arm_vreinterpretq_f32_u16): Likewise.
20629 (__arm_vreinterpretq_f32_u32): Likewise.
20630 (__arm_vreinterpretq_f32_u64): Likewise.
20631 (__arm_vreinterpretq_f32_u8): Likewise.
20632 (__arm_vreinterpretq_s16): Likewise.
20633 (__arm_vreinterpretq_s32): Likewise.
20634 (__arm_vreinterpretq_s64): Likewise.
20635 (__arm_vreinterpretq_s8): Likewise.
20636 (__arm_vreinterpretq_u16): Likewise.
20637 (__arm_vreinterpretq_u32): Likewise.
20638 (__arm_vreinterpretq_u64): Likewise.
20639 (__arm_vreinterpretq_u8): Likewise.
20640 (__arm_vreinterpretq_f16): Likewise.
20641 (__arm_vreinterpretq_f32): Likewise.
20642 * config/arm/mve.md (@arm_mve_reinterpret<mode>): New pattern.
20643 * config/arm/unspecs.md: (REINTERPRET): New unspec.
20644
20645 2023-05-03 Murray Steele <murray.steele@arm.com>
20646 Christophe Lyon <christophe.lyon@arm.com>
20647 Christophe Lyon <christophe.lyon@arm.com
20648
20649 * config.gcc: Add arm-mve-builtins-base.o and
20650 arm-mve-builtins-shapes.o to extra_objs.
20651 * config/arm/arm-builtins.cc (arm_builtin_decl): Handle MVE builtin
20652 numberspace.
20653 (arm_expand_builtin): Likewise
20654 (arm_check_builtin_call): Likewise
20655 (arm_describe_resolver): Likewise.
20656 * config/arm/arm-builtins.h (enum resolver_ident): Add
20657 arm_mve_resolver.
20658 * config/arm/arm-c.cc (arm_pragma_arm): Handle new pragma.
20659 (arm_resolve_overloaded_builtin): Handle MVE builtins.
20660 (arm_register_target_pragmas): Register arm_check_builtin_call.
20661 * config/arm/arm-mve-builtins.cc (class registered_function): New
20662 class.
20663 (struct registered_function_hasher): New struct.
20664 (pred_suffixes): New table.
20665 (mode_suffixes): New table.
20666 (type_suffix_info): New table.
20667 (TYPES_float16): New.
20668 (TYPES_all_float): New.
20669 (TYPES_integer_8): New.
20670 (TYPES_integer_8_16): New.
20671 (TYPES_integer_16_32): New.
20672 (TYPES_integer_32): New.
20673 (TYPES_signed_16_32): New.
20674 (TYPES_signed_32): New.
20675 (TYPES_all_signed): New.
20676 (TYPES_all_unsigned): New.
20677 (TYPES_all_integer): New.
20678 (TYPES_all_integer_with_64): New.
20679 (DEF_VECTOR_TYPE): New.
20680 (DEF_DOUBLE_TYPE): New.
20681 (DEF_MVE_TYPES_ARRAY): New.
20682 (all_integer): New.
20683 (all_integer_with_64): New.
20684 (float16): New.
20685 (all_float): New.
20686 (all_signed): New.
20687 (all_unsigned): New.
20688 (integer_8): New.
20689 (integer_8_16): New.
20690 (integer_16_32): New.
20691 (integer_32): New.
20692 (signed_16_32): New.
20693 (signed_32): New.
20694 (register_vector_type): Use void_type_node for mve.fp-only types when
20695 mve.fp is not enabled.
20696 (register_builtin_tuple_types): Likewise.
20697 (handle_arm_mve_h): New function..
20698 (matches_type_p): Likewise..
20699 (report_out_of_range): Likewise.
20700 (report_not_enum): Likewise.
20701 (report_missing_float): Likewise.
20702 (report_non_ice): Likewise.
20703 (check_requires_float): Likewise.
20704 (function_instance::hash): Likewise
20705 (function_instance::call_properties): Likewise.
20706 (function_instance::reads_global_state_p): Likewise.
20707 (function_instance::modifies_global_state_p): Likewise.
20708 (function_instance::could_trap_p): Likewise.
20709 (function_instance::has_inactive_argument): Likewise.
20710 (registered_function_hasher::hash): Likewise.
20711 (registered_function_hasher::equal): Likewise.
20712 (function_builder::function_builder): Likewise.
20713 (function_builder::~function_builder): Likewise.
20714 (function_builder::append_name): Likewise.
20715 (function_builder::finish_name): Likewise.
20716 (function_builder::get_name): Likewise.
20717 (add_attribute): Likewise.
20718 (function_builder::get_attributes): Likewise.
20719 (function_builder::add_function): Likewise.
20720 (function_builder::add_unique_function): Likewise.
20721 (function_builder::add_overloaded_function): Likewise.
20722 (function_builder::add_overloaded_functions): Likewise.
20723 (function_builder::register_function_group): Likewise.
20724 (function_call_info::function_call_info): Likewise.
20725 (function_resolver::function_resolver): Likewise.
20726 (function_resolver::get_vector_type): Likewise.
20727 (function_resolver::get_scalar_type_name): Likewise.
20728 (function_resolver::get_argument_type): Likewise.
20729 (function_resolver::scalar_argument_p): Likewise.
20730 (function_resolver::report_no_such_form): Likewise.
20731 (function_resolver::lookup_form): Likewise.
20732 (function_resolver::resolve_to): Likewise.
20733 (function_resolver::infer_vector_or_tuple_type): Likewise.
20734 (function_resolver::infer_vector_type): Likewise.
20735 (function_resolver::require_vector_or_scalar_type): Likewise.
20736 (function_resolver::require_vector_type): Likewise.
20737 (function_resolver::require_matching_vector_type): Likewise.
20738 (function_resolver::require_derived_vector_type): Likewise.
20739 (function_resolver::require_derived_scalar_type): Likewise.
20740 (function_resolver::require_integer_immediate): Likewise.
20741 (function_resolver::require_scalar_type): Likewise.
20742 (function_resolver::check_num_arguments): Likewise.
20743 (function_resolver::check_gp_argument): Likewise.
20744 (function_resolver::finish_opt_n_resolution): Likewise.
20745 (function_resolver::resolve_unary): Likewise.
20746 (function_resolver::resolve_unary_n): Likewise.
20747 (function_resolver::resolve_uniform): Likewise.
20748 (function_resolver::resolve_uniform_opt_n): Likewise.
20749 (function_resolver::resolve): Likewise.
20750 (function_checker::function_checker): Likewise.
20751 (function_checker::argument_exists_p): Likewise.
20752 (function_checker::require_immediate): Likewise.
20753 (function_checker::require_immediate_enum): Likewise.
20754 (function_checker::require_immediate_range): Likewise.
20755 (function_checker::check): Likewise.
20756 (gimple_folder::gimple_folder): Likewise.
20757 (gimple_folder::fold): Likewise.
20758 (function_expander::function_expander): Likewise.
20759 (function_expander::direct_optab_handler): Likewise.
20760 (function_expander::get_fallback_value): Likewise.
20761 (function_expander::get_reg_target): Likewise.
20762 (function_expander::add_output_operand): Likewise.
20763 (function_expander::add_input_operand): Likewise.
20764 (function_expander::add_integer_operand): Likewise.
20765 (function_expander::generate_insn): Likewise.
20766 (function_expander::use_exact_insn): Likewise.
20767 (function_expander::use_unpred_insn): Likewise.
20768 (function_expander::use_pred_x_insn): Likewise.
20769 (function_expander::use_cond_insn): Likewise.
20770 (function_expander::map_to_rtx_codes): Likewise.
20771 (function_expander::expand): Likewise.
20772 (resolve_overloaded_builtin): Likewise.
20773 (check_builtin_call): Likewise.
20774 (gimple_fold_builtin): Likewise.
20775 (expand_builtin): Likewise.
20776 (gt_ggc_mx): Likewise.
20777 (gt_pch_nx): Likewise.
20778 (gt_pch_nx): Likewise.
20779 * config/arm/arm-mve-builtins.def(s8): Define new type suffix.
20780 (s16): Likewise.
20781 (s32): Likewise.
20782 (s64): Likewise.
20783 (u8): Likewise.
20784 (u16): Likewise.
20785 (u32): Likewise.
20786 (u64): Likewise.
20787 (f16): Likewise.
20788 (f32): Likewise.
20789 (n): New mode.
20790 (offset): New mode.
20791 * config/arm/arm-mve-builtins.h (MAX_TUPLE_SIZE): New constant.
20792 (CP_READ_FPCR): Likewise.
20793 (CP_RAISE_FP_EXCEPTIONS): Likewise.
20794 (CP_READ_MEMORY): Likewise.
20795 (CP_WRITE_MEMORY): Likewise.
20796 (enum units_index): New enum.
20797 (enum predication_index): New.
20798 (enum type_class_index): New.
20799 (enum mode_suffix_index): New enum.
20800 (enum type_suffix_index): New.
20801 (struct mode_suffix_info): New struct.
20802 (struct type_suffix_info): New.
20803 (struct function_group_info): Likewise.
20804 (class function_instance): Likewise.
20805 (class registered_function): Likewise.
20806 (class function_builder): Likewise.
20807 (class function_call_info): Likewise.
20808 (class function_resolver): Likewise.
20809 (class function_checker): Likewise.
20810 (class gimple_folder): Likewise.
20811 (class function_expander): Likewise.
20812 (get_mve_pred16_t): Likewise.
20813 (find_mode_suffix): New function.
20814 (class function_base): Likewise.
20815 (class function_shape): Likewise.
20816 (function_instance::operator==): New function.
20817 (function_instance::operator!=): Likewise.
20818 (function_instance::vectors_per_tuple): Likewise.
20819 (function_instance::mode_suffix): Likewise.
20820 (function_instance::type_suffix): Likewise.
20821 (function_instance::scalar_type): Likewise.
20822 (function_instance::vector_type): Likewise.
20823 (function_instance::tuple_type): Likewise.
20824 (function_instance::vector_mode): Likewise.
20825 (function_call_info::function_returns_void_p): Likewise.
20826 (function_base::call_properties): Likewise.
20827 * config/arm/arm-protos.h (enum arm_builtin_class): Add
20828 ARM_BUILTIN_MVE.
20829 (handle_arm_mve_h): New.
20830 (resolve_overloaded_builtin): New.
20831 (check_builtin_call): New.
20832 (gimple_fold_builtin): New.
20833 (expand_builtin): New.
20834 * config/arm/arm.cc (TARGET_GIMPLE_FOLD_BUILTIN): Define as
20835 arm_gimple_fold_builtin.
20836 (arm_gimple_fold_builtin): New function.
20837 * config/arm/arm_mve.h: Use new arm_mve.h pragma.
20838 * config/arm/predicates.md (arm_any_register_operand): New predicate.
20839 * config/arm/t-arm: (arm-mve-builtins.o): Add includes.
20840 (arm-mve-builtins-shapes.o): New target.
20841 (arm-mve-builtins-base.o): New target.
20842 * config/arm/arm-mve-builtins-base.cc: New file.
20843 * config/arm/arm-mve-builtins-base.def: New file.
20844 * config/arm/arm-mve-builtins-base.h: New file.
20845 * config/arm/arm-mve-builtins-functions.h: New file.
20846 * config/arm/arm-mve-builtins-shapes.cc: New file.
20847 * config/arm/arm-mve-builtins-shapes.h: New file.
20848
20849 2023-05-03 Murray Steele <murray.steele@arm.com>
20850 Christophe Lyon <christophe.lyon@arm.com>
20851 Christophe Lyon <christophe.lyon@arm.com>
20852
20853 * config/arm/arm-builtins.cc (arm_general_add_builtin_function):
20854 New function.
20855 (arm_init_builtin): Use arm_general_add_builtin_function instead
20856 of arm_add_builtin_function.
20857 (arm_init_acle_builtins): Likewise.
20858 (arm_init_mve_builtins): Likewise.
20859 (arm_init_crypto_builtins): Likewise.
20860 (arm_init_builtins): Likewise.
20861 (arm_general_builtin_decl): New function.
20862 (arm_builtin_decl): Defer to numberspace-specialized functions.
20863 (arm_expand_builtin_args): Rename into arm_general_expand_builtin_args.
20864 (arm_expand_builtin_1): Rename into arm_general_expand_builtin_1 and ...
20865 (arm_general_expand_builtin_1): ... specialize for general builtins.
20866 (arm_expand_acle_builtin): Use arm_general_expand_builtin
20867 instead of arm_expand_builtin.
20868 (arm_expand_mve_builtin): Likewise.
20869 (arm_expand_neon_builtin): Likewise.
20870 (arm_expand_vfp_builtin): Likewise.
20871 (arm_general_expand_builtin): New function.
20872 (arm_expand_builtin): Specialize for general builtins.
20873 (arm_general_check_builtin_call): New function.
20874 (arm_check_builtin_call): Specialize for general builtins.
20875 (arm_describe_resolver): Validate numberspace.
20876 (arm_cde_end_args): Likewise.
20877 * config/arm/arm-protos.h (enum arm_builtin_class): New enum.
20878 (ARM_BUILTIN_SHIFT, ARM_BUILTIN_CLASS): New constants.
20879
20880 2023-05-03 Martin Liska <mliska@suse.cz>
20881
20882 PR target/109713
20883 * config/riscv/sync.md: Add gcc_unreachable to a switch.
20884
20885 2023-05-03 Richard Biener <rguenther@suse.de>
20886
20887 * tree-ssa-loop-split.cc (split_at_bb_p): Avoid last_stmt.
20888 (patch_loop_exit): Likewise.
20889 (connect_loops): Likewise.
20890 (split_loop): Likewise.
20891 (control_dep_semi_invariant_p): Likewise.
20892 (do_split_loop_on_cond): Likewise.
20893 (split_loop_on_cond): Likewise.
20894 * tree-ssa-loop-unswitch.cc (find_unswitching_predicates_for_bb):
20895 Likewise.
20896 (simplify_loop_version): Likewise.
20897 (evaluate_bbs): Likewise.
20898 (find_loop_guard): Likewise.
20899 (clean_up_after_unswitching): Likewise.
20900 * tree-ssa-math-opts.cc (maybe_optimize_guarding_check):
20901 Likewise.
20902 (optimize_spaceship): Take a gcond * argument, avoid
20903 last_stmt.
20904 (math_opts_dom_walker::after_dom_children): Adjust call to
20905 optimize_spaceship.
20906 * tree-vrp.cc (maybe_set_nonzero_bits): Avoid last_stmt.
20907 * value-pointer-equiv.cc (pointer_equiv_analyzer::visit_edge):
20908 Likewise.
20909
20910 2023-05-03 Andreas Schwab <schwab@suse.de>
20911
20912 * config/riscv/linux.h (LIB_SPEC): Don't redefine.
20913
20914 2023-05-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20915
20916 * config/riscv/riscv-vector-builtins-bases.cc (fold_fault_load):
20917 New function.
20918 (class vlseg): New class.
20919 (class vsseg): Ditto.
20920 (class vlsseg): Ditto.
20921 (class vssseg): Ditto.
20922 (class seg_indexed_load): Ditto.
20923 (class seg_indexed_store): Ditto.
20924 (class vlsegff): Ditto.
20925 (BASE): Ditto.
20926 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
20927 * config/riscv/riscv-vector-builtins-functions.def (vlseg):
20928 Ditto.
20929 (vsseg): Ditto.
20930 (vlsseg): Ditto.
20931 (vssseg): Ditto.
20932 (vluxseg): Ditto.
20933 (vloxseg): Ditto.
20934 (vsuxseg): Ditto.
20935 (vsoxseg): Ditto.
20936 (vlsegff): Ditto.
20937 * config/riscv/riscv-vector-builtins-shapes.cc (struct
20938 seg_loadstore_def): Ditto.
20939 (struct seg_indexed_loadstore_def): Ditto.
20940 (struct seg_fault_load_def): Ditto.
20941 (SHAPE): Ditto.
20942 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
20943 * config/riscv/riscv-vector-builtins.cc
20944 (function_builder::append_nf): New function.
20945 * config/riscv/riscv-vector-builtins.def (vfloat32m1x2_t):
20946 Change ptr from double into float.
20947 (vfloat32m1x3_t): Ditto.
20948 (vfloat32m1x4_t): Ditto.
20949 (vfloat32m1x5_t): Ditto.
20950 (vfloat32m1x6_t): Ditto.
20951 (vfloat32m1x7_t): Ditto.
20952 (vfloat32m1x8_t): Ditto.
20953 (vfloat32m2x2_t): Ditto.
20954 (vfloat32m2x3_t): Ditto.
20955 (vfloat32m2x4_t): Ditto.
20956 (vfloat32m4x2_t): Ditto.
20957 * config/riscv/riscv-vector-builtins.h: Add segment intrinsics.
20958 * config/riscv/riscv-vsetvl.cc (fault_first_load_p): Adapt for
20959 segment ff load.
20960 * config/riscv/riscv.md: Add segment instructions.
20961 * config/riscv/vector-iterators.md: Support segment intrinsics.
20962 * config/riscv/vector.md (@pred_unit_strided_load<mode>): New
20963 pattern.
20964 (@pred_unit_strided_store<mode>): Ditto.
20965 (@pred_strided_load<mode>): Ditto.
20966 (@pred_strided_store<mode>): Ditto.
20967 (@pred_fault_load<mode>): Ditto.
20968 (@pred_indexed_<order>load<V1T:mode><V1I:mode>): Ditto.
20969 (@pred_indexed_<order>load<V2T:mode><V2I:mode>): Ditto.
20970 (@pred_indexed_<order>load<V4T:mode><V4I:mode>): Ditto.
20971 (@pred_indexed_<order>load<V8T:mode><V8I:mode>): Ditto.
20972 (@pred_indexed_<order>load<V16T:mode><V16I:mode>): Ditto.
20973 (@pred_indexed_<order>load<V32T:mode><V32I:mode>): Ditto.
20974 (@pred_indexed_<order>load<V64T:mode><V64I:mode>): Ditto.
20975 (@pred_indexed_<order>store<V1T:mode><V1I:mode>): Ditto.
20976 (@pred_indexed_<order>store<V2T:mode><V2I:mode>): Ditto.
20977 (@pred_indexed_<order>store<V4T:mode><V4I:mode>): Ditto.
20978 (@pred_indexed_<order>store<V8T:mode><V8I:mode>): Ditto.
20979 (@pred_indexed_<order>store<V16T:mode><V16I:mode>): Ditto.
20980 (@pred_indexed_<order>store<V32T:mode><V32I:mode>): Ditto.
20981 (@pred_indexed_<order>store<V64T:mode><V64I:mode>): Ditto.
20982
20983 2023-05-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20984
20985 * config/riscv/genrvv-type-indexer.cc (valid_type): Adapt for
20986 tuple type support.
20987 (inttype): Ditto.
20988 (floattype): Ditto.
20989 (main): Ditto.
20990 * config/riscv/riscv-vector-builtins-bases.cc: Ditto.
20991 * config/riscv/riscv-vector-builtins-functions.def (vset): Add
20992 tuple type vset.
20993 (vget): Add tuple type vget.
20994 * config/riscv/riscv-vector-builtins-types.def
20995 (DEF_RVV_TUPLE_OPS): New macro.
20996 (vint8mf8x2_t): Ditto.
20997 (vuint8mf8x2_t): Ditto.
20998 (vint8mf8x3_t): Ditto.
20999 (vuint8mf8x3_t): Ditto.
21000 (vint8mf8x4_t): Ditto.
21001 (vuint8mf8x4_t): Ditto.
21002 (vint8mf8x5_t): Ditto.
21003 (vuint8mf8x5_t): Ditto.
21004 (vint8mf8x6_t): Ditto.
21005 (vuint8mf8x6_t): Ditto.
21006 (vint8mf8x7_t): Ditto.
21007 (vuint8mf8x7_t): Ditto.
21008 (vint8mf8x8_t): Ditto.
21009 (vuint8mf8x8_t): Ditto.
21010 (vint8mf4x2_t): Ditto.
21011 (vuint8mf4x2_t): Ditto.
21012 (vint8mf4x3_t): Ditto.
21013 (vuint8mf4x3_t): Ditto.
21014 (vint8mf4x4_t): Ditto.
21015 (vuint8mf4x4_t): Ditto.
21016 (vint8mf4x5_t): Ditto.
21017 (vuint8mf4x5_t): Ditto.
21018 (vint8mf4x6_t): Ditto.
21019 (vuint8mf4x6_t): Ditto.
21020 (vint8mf4x7_t): Ditto.
21021 (vuint8mf4x7_t): Ditto.
21022 (vint8mf4x8_t): Ditto.
21023 (vuint8mf4x8_t): Ditto.
21024 (vint8mf2x2_t): Ditto.
21025 (vuint8mf2x2_t): Ditto.
21026 (vint8mf2x3_t): Ditto.
21027 (vuint8mf2x3_t): Ditto.
21028 (vint8mf2x4_t): Ditto.
21029 (vuint8mf2x4_t): Ditto.
21030 (vint8mf2x5_t): Ditto.
21031 (vuint8mf2x5_t): Ditto.
21032 (vint8mf2x6_t): Ditto.
21033 (vuint8mf2x6_t): Ditto.
21034 (vint8mf2x7_t): Ditto.
21035 (vuint8mf2x7_t): Ditto.
21036 (vint8mf2x8_t): Ditto.
21037 (vuint8mf2x8_t): Ditto.
21038 (vint8m1x2_t): Ditto.
21039 (vuint8m1x2_t): Ditto.
21040 (vint8m1x3_t): Ditto.
21041 (vuint8m1x3_t): Ditto.
21042 (vint8m1x4_t): Ditto.
21043 (vuint8m1x4_t): Ditto.
21044 (vint8m1x5_t): Ditto.
21045 (vuint8m1x5_t): Ditto.
21046 (vint8m1x6_t): Ditto.
21047 (vuint8m1x6_t): Ditto.
21048 (vint8m1x7_t): Ditto.
21049 (vuint8m1x7_t): Ditto.
21050 (vint8m1x8_t): Ditto.
21051 (vuint8m1x8_t): Ditto.
21052 (vint8m2x2_t): Ditto.
21053 (vuint8m2x2_t): Ditto.
21054 (vint8m2x3_t): Ditto.
21055 (vuint8m2x3_t): Ditto.
21056 (vint8m2x4_t): Ditto.
21057 (vuint8m2x4_t): Ditto.
21058 (vint8m4x2_t): Ditto.
21059 (vuint8m4x2_t): Ditto.
21060 (vint16mf4x2_t): Ditto.
21061 (vuint16mf4x2_t): Ditto.
21062 (vint16mf4x3_t): Ditto.
21063 (vuint16mf4x3_t): Ditto.
21064 (vint16mf4x4_t): Ditto.
21065 (vuint16mf4x4_t): Ditto.
21066 (vint16mf4x5_t): Ditto.
21067 (vuint16mf4x5_t): Ditto.
21068 (vint16mf4x6_t): Ditto.
21069 (vuint16mf4x6_t): Ditto.
21070 (vint16mf4x7_t): Ditto.
21071 (vuint16mf4x7_t): Ditto.
21072 (vint16mf4x8_t): Ditto.
21073 (vuint16mf4x8_t): Ditto.
21074 (vint16mf2x2_t): Ditto.
21075 (vuint16mf2x2_t): Ditto.
21076 (vint16mf2x3_t): Ditto.
21077 (vuint16mf2x3_t): Ditto.
21078 (vint16mf2x4_t): Ditto.
21079 (vuint16mf2x4_t): Ditto.
21080 (vint16mf2x5_t): Ditto.
21081 (vuint16mf2x5_t): Ditto.
21082 (vint16mf2x6_t): Ditto.
21083 (vuint16mf2x6_t): Ditto.
21084 (vint16mf2x7_t): Ditto.
21085 (vuint16mf2x7_t): Ditto.
21086 (vint16mf2x8_t): Ditto.
21087 (vuint16mf2x8_t): Ditto.
21088 (vint16m1x2_t): Ditto.
21089 (vuint16m1x2_t): Ditto.
21090 (vint16m1x3_t): Ditto.
21091 (vuint16m1x3_t): Ditto.
21092 (vint16m1x4_t): Ditto.
21093 (vuint16m1x4_t): Ditto.
21094 (vint16m1x5_t): Ditto.
21095 (vuint16m1x5_t): Ditto.
21096 (vint16m1x6_t): Ditto.
21097 (vuint16m1x6_t): Ditto.
21098 (vint16m1x7_t): Ditto.
21099 (vuint16m1x7_t): Ditto.
21100 (vint16m1x8_t): Ditto.
21101 (vuint16m1x8_t): Ditto.
21102 (vint16m2x2_t): Ditto.
21103 (vuint16m2x2_t): Ditto.
21104 (vint16m2x3_t): Ditto.
21105 (vuint16m2x3_t): Ditto.
21106 (vint16m2x4_t): Ditto.
21107 (vuint16m2x4_t): Ditto.
21108 (vint16m4x2_t): Ditto.
21109 (vuint16m4x2_t): Ditto.
21110 (vint32mf2x2_t): Ditto.
21111 (vuint32mf2x2_t): Ditto.
21112 (vint32mf2x3_t): Ditto.
21113 (vuint32mf2x3_t): Ditto.
21114 (vint32mf2x4_t): Ditto.
21115 (vuint32mf2x4_t): Ditto.
21116 (vint32mf2x5_t): Ditto.
21117 (vuint32mf2x5_t): Ditto.
21118 (vint32mf2x6_t): Ditto.
21119 (vuint32mf2x6_t): Ditto.
21120 (vint32mf2x7_t): Ditto.
21121 (vuint32mf2x7_t): Ditto.
21122 (vint32mf2x8_t): Ditto.
21123 (vuint32mf2x8_t): Ditto.
21124 (vint32m1x2_t): Ditto.
21125 (vuint32m1x2_t): Ditto.
21126 (vint32m1x3_t): Ditto.
21127 (vuint32m1x3_t): Ditto.
21128 (vint32m1x4_t): Ditto.
21129 (vuint32m1x4_t): Ditto.
21130 (vint32m1x5_t): Ditto.
21131 (vuint32m1x5_t): Ditto.
21132 (vint32m1x6_t): Ditto.
21133 (vuint32m1x6_t): Ditto.
21134 (vint32m1x7_t): Ditto.
21135 (vuint32m1x7_t): Ditto.
21136 (vint32m1x8_t): Ditto.
21137 (vuint32m1x8_t): Ditto.
21138 (vint32m2x2_t): Ditto.
21139 (vuint32m2x2_t): Ditto.
21140 (vint32m2x3_t): Ditto.
21141 (vuint32m2x3_t): Ditto.
21142 (vint32m2x4_t): Ditto.
21143 (vuint32m2x4_t): Ditto.
21144 (vint32m4x2_t): Ditto.
21145 (vuint32m4x2_t): Ditto.
21146 (vint64m1x2_t): Ditto.
21147 (vuint64m1x2_t): Ditto.
21148 (vint64m1x3_t): Ditto.
21149 (vuint64m1x3_t): Ditto.
21150 (vint64m1x4_t): Ditto.
21151 (vuint64m1x4_t): Ditto.
21152 (vint64m1x5_t): Ditto.
21153 (vuint64m1x5_t): Ditto.
21154 (vint64m1x6_t): Ditto.
21155 (vuint64m1x6_t): Ditto.
21156 (vint64m1x7_t): Ditto.
21157 (vuint64m1x7_t): Ditto.
21158 (vint64m1x8_t): Ditto.
21159 (vuint64m1x8_t): Ditto.
21160 (vint64m2x2_t): Ditto.
21161 (vuint64m2x2_t): Ditto.
21162 (vint64m2x3_t): Ditto.
21163 (vuint64m2x3_t): Ditto.
21164 (vint64m2x4_t): Ditto.
21165 (vuint64m2x4_t): Ditto.
21166 (vint64m4x2_t): Ditto.
21167 (vuint64m4x2_t): Ditto.
21168 (vfloat32mf2x2_t): Ditto.
21169 (vfloat32mf2x3_t): Ditto.
21170 (vfloat32mf2x4_t): Ditto.
21171 (vfloat32mf2x5_t): Ditto.
21172 (vfloat32mf2x6_t): Ditto.
21173 (vfloat32mf2x7_t): Ditto.
21174 (vfloat32mf2x8_t): Ditto.
21175 (vfloat32m1x2_t): Ditto.
21176 (vfloat32m1x3_t): Ditto.
21177 (vfloat32m1x4_t): Ditto.
21178 (vfloat32m1x5_t): Ditto.
21179 (vfloat32m1x6_t): Ditto.
21180 (vfloat32m1x7_t): Ditto.
21181 (vfloat32m1x8_t): Ditto.
21182 (vfloat32m2x2_t): Ditto.
21183 (vfloat32m2x3_t): Ditto.
21184 (vfloat32m2x4_t): Ditto.
21185 (vfloat32m4x2_t): Ditto.
21186 (vfloat64m1x2_t): Ditto.
21187 (vfloat64m1x3_t): Ditto.
21188 (vfloat64m1x4_t): Ditto.
21189 (vfloat64m1x5_t): Ditto.
21190 (vfloat64m1x6_t): Ditto.
21191 (vfloat64m1x7_t): Ditto.
21192 (vfloat64m1x8_t): Ditto.
21193 (vfloat64m2x2_t): Ditto.
21194 (vfloat64m2x3_t): Ditto.
21195 (vfloat64m2x4_t): Ditto.
21196 (vfloat64m4x2_t): Ditto.
21197 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TUPLE_OPS):
21198 Ditto.
21199 (DEF_RVV_TYPE_INDEX): Ditto.
21200 (rvv_arg_type_info::get_tuple_subpart_type): New function.
21201 (DEF_RVV_TUPLE_TYPE): New macro.
21202 * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE_INDEX):
21203 Adapt for tuple vget/vset support.
21204 (vint8mf4_t): Ditto.
21205 (vuint8mf4_t): Ditto.
21206 (vint8mf2_t): Ditto.
21207 (vuint8mf2_t): Ditto.
21208 (vint8m1_t): Ditto.
21209 (vuint8m1_t): Ditto.
21210 (vint8m2_t): Ditto.
21211 (vuint8m2_t): Ditto.
21212 (vint8m4_t): Ditto.
21213 (vuint8m4_t): Ditto.
21214 (vint8m8_t): Ditto.
21215 (vuint8m8_t): Ditto.
21216 (vint16mf4_t): Ditto.
21217 (vuint16mf4_t): Ditto.
21218 (vint16mf2_t): Ditto.
21219 (vuint16mf2_t): Ditto.
21220 (vint16m1_t): Ditto.
21221 (vuint16m1_t): Ditto.
21222 (vint16m2_t): Ditto.
21223 (vuint16m2_t): Ditto.
21224 (vint16m4_t): Ditto.
21225 (vuint16m4_t): Ditto.
21226 (vint16m8_t): Ditto.
21227 (vuint16m8_t): Ditto.
21228 (vint32mf2_t): Ditto.
21229 (vuint32mf2_t): Ditto.
21230 (vint32m1_t): Ditto.
21231 (vuint32m1_t): Ditto.
21232 (vint32m2_t): Ditto.
21233 (vuint32m2_t): Ditto.
21234 (vint32m4_t): Ditto.
21235 (vuint32m4_t): Ditto.
21236 (vint32m8_t): Ditto.
21237 (vuint32m8_t): Ditto.
21238 (vint64m1_t): Ditto.
21239 (vuint64m1_t): Ditto.
21240 (vint64m2_t): Ditto.
21241 (vuint64m2_t): Ditto.
21242 (vint64m4_t): Ditto.
21243 (vuint64m4_t): Ditto.
21244 (vint64m8_t): Ditto.
21245 (vuint64m8_t): Ditto.
21246 (vfloat32mf2_t): Ditto.
21247 (vfloat32m1_t): Ditto.
21248 (vfloat32m2_t): Ditto.
21249 (vfloat32m4_t): Ditto.
21250 (vfloat32m8_t): Ditto.
21251 (vfloat64m1_t): Ditto.
21252 (vfloat64m2_t): Ditto.
21253 (vfloat64m4_t): Ditto.
21254 (vfloat64m8_t): Ditto.
21255 (tuple_subpart): Add tuple subpart base type.
21256 * config/riscv/riscv-vector-builtins.h (struct
21257 rvv_arg_type_info): Ditto.
21258 (tuple_type_field): New function.
21259
21260 2023-05-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
21261
21262 * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): New macro.
21263 (RVV_TUPLE_PARTIAL_MODES): Ditto.
21264 * config/riscv/riscv-protos.h (riscv_v_ext_tuple_mode_p): New
21265 function.
21266 (get_nf): Ditto.
21267 (get_subpart_mode): Ditto.
21268 (get_tuple_mode): Ditto.
21269 (expand_tuple_move): Ditto.
21270 * config/riscv/riscv-v.cc (ENTRY): New macro.
21271 (TUPLE_ENTRY): Ditto.
21272 (get_nf): New function.
21273 (get_subpart_mode): Ditto.
21274 (get_tuple_mode): Ditto.
21275 (expand_tuple_move): Ditto.
21276 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TUPLE_TYPE):
21277 New macro.
21278 (register_tuple_type): New function
21279 * config/riscv/riscv-vector-builtins.def (DEF_RVV_TUPLE_TYPE):
21280 New macro.
21281 (vint8mf8x2_t): New macro.
21282 (vuint8mf8x2_t): Ditto.
21283 (vint8mf8x3_t): Ditto.
21284 (vuint8mf8x3_t): Ditto.
21285 (vint8mf8x4_t): Ditto.
21286 (vuint8mf8x4_t): Ditto.
21287 (vint8mf8x5_t): Ditto.
21288 (vuint8mf8x5_t): Ditto.
21289 (vint8mf8x6_t): Ditto.
21290 (vuint8mf8x6_t): Ditto.
21291 (vint8mf8x7_t): Ditto.
21292 (vuint8mf8x7_t): Ditto.
21293 (vint8mf8x8_t): Ditto.
21294 (vuint8mf8x8_t): Ditto.
21295 (vint8mf4x2_t): Ditto.
21296 (vuint8mf4x2_t): Ditto.
21297 (vint8mf4x3_t): Ditto.
21298 (vuint8mf4x3_t): Ditto.
21299 (vint8mf4x4_t): Ditto.
21300 (vuint8mf4x4_t): Ditto.
21301 (vint8mf4x5_t): Ditto.
21302 (vuint8mf4x5_t): Ditto.
21303 (vint8mf4x6_t): Ditto.
21304 (vuint8mf4x6_t): Ditto.
21305 (vint8mf4x7_t): Ditto.
21306 (vuint8mf4x7_t): Ditto.
21307 (vint8mf4x8_t): Ditto.
21308 (vuint8mf4x8_t): Ditto.
21309 (vint8mf2x2_t): Ditto.
21310 (vuint8mf2x2_t): Ditto.
21311 (vint8mf2x3_t): Ditto.
21312 (vuint8mf2x3_t): Ditto.
21313 (vint8mf2x4_t): Ditto.
21314 (vuint8mf2x4_t): Ditto.
21315 (vint8mf2x5_t): Ditto.
21316 (vuint8mf2x5_t): Ditto.
21317 (vint8mf2x6_t): Ditto.
21318 (vuint8mf2x6_t): Ditto.
21319 (vint8mf2x7_t): Ditto.
21320 (vuint8mf2x7_t): Ditto.
21321 (vint8mf2x8_t): Ditto.
21322 (vuint8mf2x8_t): Ditto.
21323 (vint8m1x2_t): Ditto.
21324 (vuint8m1x2_t): Ditto.
21325 (vint8m1x3_t): Ditto.
21326 (vuint8m1x3_t): Ditto.
21327 (vint8m1x4_t): Ditto.
21328 (vuint8m1x4_t): Ditto.
21329 (vint8m1x5_t): Ditto.
21330 (vuint8m1x5_t): Ditto.
21331 (vint8m1x6_t): Ditto.
21332 (vuint8m1x6_t): Ditto.
21333 (vint8m1x7_t): Ditto.
21334 (vuint8m1x7_t): Ditto.
21335 (vint8m1x8_t): Ditto.
21336 (vuint8m1x8_t): Ditto.
21337 (vint8m2x2_t): Ditto.
21338 (vuint8m2x2_t): Ditto.
21339 (vint8m2x3_t): Ditto.
21340 (vuint8m2x3_t): Ditto.
21341 (vint8m2x4_t): Ditto.
21342 (vuint8m2x4_t): Ditto.
21343 (vint8m4x2_t): Ditto.
21344 (vuint8m4x2_t): Ditto.
21345 (vint16mf4x2_t): Ditto.
21346 (vuint16mf4x2_t): Ditto.
21347 (vint16mf4x3_t): Ditto.
21348 (vuint16mf4x3_t): Ditto.
21349 (vint16mf4x4_t): Ditto.
21350 (vuint16mf4x4_t): Ditto.
21351 (vint16mf4x5_t): Ditto.
21352 (vuint16mf4x5_t): Ditto.
21353 (vint16mf4x6_t): Ditto.
21354 (vuint16mf4x6_t): Ditto.
21355 (vint16mf4x7_t): Ditto.
21356 (vuint16mf4x7_t): Ditto.
21357 (vint16mf4x8_t): Ditto.
21358 (vuint16mf4x8_t): Ditto.
21359 (vint16mf2x2_t): Ditto.
21360 (vuint16mf2x2_t): Ditto.
21361 (vint16mf2x3_t): Ditto.
21362 (vuint16mf2x3_t): Ditto.
21363 (vint16mf2x4_t): Ditto.
21364 (vuint16mf2x4_t): Ditto.
21365 (vint16mf2x5_t): Ditto.
21366 (vuint16mf2x5_t): Ditto.
21367 (vint16mf2x6_t): Ditto.
21368 (vuint16mf2x6_t): Ditto.
21369 (vint16mf2x7_t): Ditto.
21370 (vuint16mf2x7_t): Ditto.
21371 (vint16mf2x8_t): Ditto.
21372 (vuint16mf2x8_t): Ditto.
21373 (vint16m1x2_t): Ditto.
21374 (vuint16m1x2_t): Ditto.
21375 (vint16m1x3_t): Ditto.
21376 (vuint16m1x3_t): Ditto.
21377 (vint16m1x4_t): Ditto.
21378 (vuint16m1x4_t): Ditto.
21379 (vint16m1x5_t): Ditto.
21380 (vuint16m1x5_t): Ditto.
21381 (vint16m1x6_t): Ditto.
21382 (vuint16m1x6_t): Ditto.
21383 (vint16m1x7_t): Ditto.
21384 (vuint16m1x7_t): Ditto.
21385 (vint16m1x8_t): Ditto.
21386 (vuint16m1x8_t): Ditto.
21387 (vint16m2x2_t): Ditto.
21388 (vuint16m2x2_t): Ditto.
21389 (vint16m2x3_t): Ditto.
21390 (vuint16m2x3_t): Ditto.
21391 (vint16m2x4_t): Ditto.
21392 (vuint16m2x4_t): Ditto.
21393 (vint16m4x2_t): Ditto.
21394 (vuint16m4x2_t): Ditto.
21395 (vint32mf2x2_t): Ditto.
21396 (vuint32mf2x2_t): Ditto.
21397 (vint32mf2x3_t): Ditto.
21398 (vuint32mf2x3_t): Ditto.
21399 (vint32mf2x4_t): Ditto.
21400 (vuint32mf2x4_t): Ditto.
21401 (vint32mf2x5_t): Ditto.
21402 (vuint32mf2x5_t): Ditto.
21403 (vint32mf2x6_t): Ditto.
21404 (vuint32mf2x6_t): Ditto.
21405 (vint32mf2x7_t): Ditto.
21406 (vuint32mf2x7_t): Ditto.
21407 (vint32mf2x8_t): Ditto.
21408 (vuint32mf2x8_t): Ditto.
21409 (vint32m1x2_t): Ditto.
21410 (vuint32m1x2_t): Ditto.
21411 (vint32m1x3_t): Ditto.
21412 (vuint32m1x3_t): Ditto.
21413 (vint32m1x4_t): Ditto.
21414 (vuint32m1x4_t): Ditto.
21415 (vint32m1x5_t): Ditto.
21416 (vuint32m1x5_t): Ditto.
21417 (vint32m1x6_t): Ditto.
21418 (vuint32m1x6_t): Ditto.
21419 (vint32m1x7_t): Ditto.
21420 (vuint32m1x7_t): Ditto.
21421 (vint32m1x8_t): Ditto.
21422 (vuint32m1x8_t): Ditto.
21423 (vint32m2x2_t): Ditto.
21424 (vuint32m2x2_t): Ditto.
21425 (vint32m2x3_t): Ditto.
21426 (vuint32m2x3_t): Ditto.
21427 (vint32m2x4_t): Ditto.
21428 (vuint32m2x4_t): Ditto.
21429 (vint32m4x2_t): Ditto.
21430 (vuint32m4x2_t): Ditto.
21431 (vint64m1x2_t): Ditto.
21432 (vuint64m1x2_t): Ditto.
21433 (vint64m1x3_t): Ditto.
21434 (vuint64m1x3_t): Ditto.
21435 (vint64m1x4_t): Ditto.
21436 (vuint64m1x4_t): Ditto.
21437 (vint64m1x5_t): Ditto.
21438 (vuint64m1x5_t): Ditto.
21439 (vint64m1x6_t): Ditto.
21440 (vuint64m1x6_t): Ditto.
21441 (vint64m1x7_t): Ditto.
21442 (vuint64m1x7_t): Ditto.
21443 (vint64m1x8_t): Ditto.
21444 (vuint64m1x8_t): Ditto.
21445 (vint64m2x2_t): Ditto.
21446 (vuint64m2x2_t): Ditto.
21447 (vint64m2x3_t): Ditto.
21448 (vuint64m2x3_t): Ditto.
21449 (vint64m2x4_t): Ditto.
21450 (vuint64m2x4_t): Ditto.
21451 (vint64m4x2_t): Ditto.
21452 (vuint64m4x2_t): Ditto.
21453 (vfloat32mf2x2_t): Ditto.
21454 (vfloat32mf2x3_t): Ditto.
21455 (vfloat32mf2x4_t): Ditto.
21456 (vfloat32mf2x5_t): Ditto.
21457 (vfloat32mf2x6_t): Ditto.
21458 (vfloat32mf2x7_t): Ditto.
21459 (vfloat32mf2x8_t): Ditto.
21460 (vfloat32m1x2_t): Ditto.
21461 (vfloat32m1x3_t): Ditto.
21462 (vfloat32m1x4_t): Ditto.
21463 (vfloat32m1x5_t): Ditto.
21464 (vfloat32m1x6_t): Ditto.
21465 (vfloat32m1x7_t): Ditto.
21466 (vfloat32m1x8_t): Ditto.
21467 (vfloat32m2x2_t): Ditto.
21468 (vfloat32m2x3_t): Ditto.
21469 (vfloat32m2x4_t): Ditto.
21470 (vfloat32m4x2_t): Ditto.
21471 (vfloat64m1x2_t): Ditto.
21472 (vfloat64m1x3_t): Ditto.
21473 (vfloat64m1x4_t): Ditto.
21474 (vfloat64m1x5_t): Ditto.
21475 (vfloat64m1x6_t): Ditto.
21476 (vfloat64m1x7_t): Ditto.
21477 (vfloat64m1x8_t): Ditto.
21478 (vfloat64m2x2_t): Ditto.
21479 (vfloat64m2x3_t): Ditto.
21480 (vfloat64m2x4_t): Ditto.
21481 (vfloat64m4x2_t): Ditto.
21482 * config/riscv/riscv-vector-builtins.h (DEF_RVV_TUPLE_TYPE):
21483 Ditto.
21484 * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): Ditto.
21485 * config/riscv/riscv.cc (riscv_v_ext_tuple_mode_p): New
21486 function.
21487 (TUPLE_ENTRY): Ditto.
21488 (riscv_v_ext_mode_p): New function.
21489 (riscv_v_adjust_nunits): Add tuple mode adjustment.
21490 (riscv_classify_address): Ditto.
21491 (riscv_binary_cost): Ditto.
21492 (riscv_rtx_costs): Ditto.
21493 (riscv_secondary_memory_needed): Ditto.
21494 (riscv_hard_regno_nregs): Ditto.
21495 (riscv_hard_regno_mode_ok): Ditto.
21496 (riscv_vector_mode_supported_p): Ditto.
21497 (riscv_regmode_natural_size): Ditto.
21498 (riscv_array_mode): New function.
21499 (TARGET_ARRAY_MODE): New target hook.
21500 * config/riscv/riscv.md: Add tuple modes.
21501 * config/riscv/vector-iterators.md: Ditto.
21502 * config/riscv/vector.md (mov<mode>): Add tuple modes data
21503 movement.
21504 (*mov<VT:mode>_<P:mode>): Ditto.
21505
21506 2023-05-03 Richard Biener <rguenther@suse.de>
21507
21508 * cse.cc (cse_insn): Track an equivalence to the destination
21509 separately and delay using src_related for it.
21510
21511 2023-05-03 Richard Biener <rguenther@suse.de>
21512
21513 * cse.cc (HASH): Turn into inline function and mix
21514 in another HASH_SHIFT bits.
21515 (SAFE_HASH): Likewise.
21516
21517 2023-05-03 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
21518
21519 PR target/99195
21520 * config/aarch64/aarch64-simd.md (aarch64_<sur>h<addsub><mode>): Rename to...
21521 (aarch64_<sur>h<addsub><mode><vczle><vczbe>): ... This.
21522
21523 2023-05-03 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
21524
21525 PR target/99195
21526 * config/aarch64/aarch64-simd.md (add<mode>3): Rename to...
21527 (add<mode>3<vczle><vczbe>): ... This.
21528 (sub<mode>3): Rename to...
21529 (sub<mode>3<vczle><vczbe>): ... This.
21530 (mul<mode>3): Rename to...
21531 (mul<mode>3<vczle><vczbe>): ... This.
21532 (*div<mode>3): Rename to...
21533 (*div<mode>3<vczle><vczbe>): ... This.
21534 (neg<mode>2): Rename to...
21535 (neg<mode>2<vczle><vczbe>): ... This.
21536 (abs<mode>2): Rename to...
21537 (abs<mode>2<vczle><vczbe>): ... This.
21538 (<frint_pattern><mode>2): Rename to...
21539 (<frint_pattern><mode>2<vczle><vczbe>): ... This.
21540 (<fmaxmin><mode>3): Rename to...
21541 (<fmaxmin><mode>3<vczle><vczbe>): ... This.
21542 (*sqrt<mode>2): Rename to...
21543 (*sqrt<mode>2<vczle><vczbe>): ... This.
21544
21545 2023-05-03 Kito Cheng <kito.cheng@sifive.com>
21546
21547 * doc/md.texi (RISC-V): Add vr, vm, vd constarint.
21548
21549 2023-05-03 Martin Liska <mliska@suse.cz>
21550
21551 PR tree-optimization/109693
21552 * value-range-storage.cc (vrange_allocator::vrange_allocator):
21553 Remove unused field.
21554 * value-range-storage.h: Likewise.
21555
21556 2023-05-02 Andrew Pinski <apinski@marvell.com>
21557
21558 * tree-ssa-phiopt.cc (move_stmt): New function.
21559 (match_simplify_replacement): Use move_stmt instead
21560 of the inlined version.
21561
21562 2023-05-02 Andrew Pinski <apinski@marvell.com>
21563
21564 * match.pd (a != 0 ? CLRSB(a) : CST -> CLRSB(a)): New
21565 pattern.
21566
21567 2023-05-02 Andrew Pinski <apinski@marvell.com>
21568
21569 PR tree-optimization/109702
21570 * match.pd: Fix "a != 0 ? FUNC(a) : CST" patterns
21571 for FUNC of POPCOUNT BSWAP FFS PARITY CLZ and CTZ.
21572
21573 2023-05-02 Andrew Pinski <apinski@marvell.com>
21574
21575 PR target/109657
21576 * config/aarch64/aarch64.md (*cmov<mode>_insn_m1): New
21577 insn_and_split pattern.
21578
21579 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
21580
21581 * config/riscv/sync.md (atomic_load<mode>): Implement atomic
21582 load mapping.
21583
21584 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
21585
21586 * config/riscv/sync.md (mem_thread_fence_1): Change fence
21587 depending on the given memory model.
21588
21589 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
21590
21591 * config/riscv/riscv-protos.h (riscv_union_memmodels): Expose
21592 riscv_union_memmodels function to sync.md.
21593 * config/riscv/riscv.cc (riscv_union_memmodels): Add function to
21594 get the union of two memmodels in sync.md.
21595 (riscv_print_operand): Add %I and %J flags that output the
21596 optimal LR/SC flag bits for a given memory model.
21597 * config/riscv/sync.md: Remove static .aqrl bits on LR op/.rl
21598 bits on SC op and replace with optimized %I, %J flags.
21599
21600 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
21601
21602 * config/riscv/riscv.cc
21603 (riscv_memmodel_needs_amo_release): Change function name.
21604 (riscv_print_operand): Remove unneeded %F case.
21605 * config/riscv/sync.md: Remove unneeded fences.
21606
21607 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
21608
21609 PR target/89835
21610 * config/riscv/sync.md (atomic_store<mode>): Use simple store
21611 instruction in combination with fence(s).
21612
21613 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
21614
21615 * config/riscv/riscv.cc (riscv_print_operand): Change behavior
21616 of %A to include release bits.
21617
21618 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
21619
21620 * config/riscv/sync.md (atomic_cas_value_strong<mode>): Change
21621 FENCE/LR.aq/SC.aq into sequentially consistent LR.aqrl/SC.rl
21622 pair.
21623
21624 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
21625
21626 * config/riscv/sync.md: Change LR.aq/SC.rl pairs into
21627 sequentially consistent LR.aqrl/SC.rl pairs.
21628
21629 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
21630
21631 * config/riscv/riscv.cc: Remove MEMMODEL_SYNC_* cases and
21632 sanitize memmodel input with memmodel_base.
21633
21634 2023-05-02 Yanzhang Wang <yanzhang.wang@intel.com>
21635 Pan Li <pan2.li@intel.com>
21636
21637 PR target/109617
21638 * config/riscv/vector-iterators.md: Support VNx2HI and VNX4DI when MIN_VLEN >= 128.
21639
21640 2023-05-02 Romain Naour <romain.naour@gmail.com>
21641
21642 * config/riscv/genrvv-type-indexer.cc: Use log2 from the C header, without
21643 the namespace.
21644
21645 2023-05-02 Martin Liska <mliska@suse.cz>
21646
21647 * doc/invoke.texi: Update documentation based on param.opt file.
21648
21649 2023-05-02 Richard Biener <rguenther@suse.de>
21650
21651 PR tree-optimization/109672
21652 * tree-vect-stmts.cc (vectorizable_operation): For plus,
21653 minus and negate always check the vector mode is word mode.
21654
21655 2023-05-01 Andrew Pinski <apinski@marvell.com>
21656
21657 * tree-ssa-phiopt.cc: Update comment about
21658 how the transformation are implemented.
21659
21660 2023-05-01 Jeff Law <jlaw@ventanamicro>
21661
21662 * config/stormy16/stormy16.cc (TARGET_LRA_P): Remove defintion.
21663
21664 2023-05-01 Jeff Law <jlaw@ventanamicro>
21665
21666 * config/cris/cris.cc (TARGET_LRA_P): Remove.
21667 * config/epiphany/epiphany.cc (TARGET_LRA_P): Remove.
21668 * config/iq2000/iq2000.cc (TARGET_LRA_P): Remove.
21669 * config/m32r/m32r.cc (TARGET_LRA_P): Remove.
21670 * config/microblaze/microblaze.cc (TARGET_LRA_P): Remove.
21671 * config/mmix/mmix.cc (TARGET_LRA_P): Remove.
21672
21673 2023-05-01 Rasmus Villemoes <rasmus.villemoes@prevas.dk>
21674
21675 * print-tree.h (PRINT_DECL_REMAP_DEBUG): New flag.
21676 * print-tree.cc (print_decl_identifier): Implement it.
21677 * toplev.cc (output_stack_usage_1): Use it.
21678
21679 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
21680
21681 * value-range.h (class int_range): Remove gt_ggc_mx and gt_pch_nx
21682 friends.
21683
21684 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
21685
21686 * value-range.h (irange::set_nonzero): Inline.
21687
21688 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
21689
21690 * gimple-range-op.cc (cfn_ffs::fold_range): Use the correct
21691 precision.
21692 * gimple-ssa-warn-alloca.cc (alloca_call_type): Use <2> for
21693 invalid_range, as it is an inverse range.
21694 * tree-vrp.cc (find_case_label_range): Avoid trees.
21695 * value-range.cc (irange::irange_set): Delete.
21696 (irange::irange_set_1bit_anti_range): Delete.
21697 (irange::irange_set_anti_range): Delete.
21698 (irange::set): Cleanup.
21699 * value-range.h (class irange): Remove irange_set,
21700 irange_set_anti_range, irange_set_1bit_anti_range.
21701 (irange::set_undefined): Remove set to m_type.
21702
21703 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
21704
21705 * range-op.cc (update_known_bitmask): Adjust for irange containing
21706 wide_ints internally.
21707 * tree-ssanames.cc (set_nonzero_bits): Same.
21708 * tree-ssanames.h (set_nonzero_bits): Same.
21709 * value-range-storage.cc (irange_storage::set_irange): Same.
21710 (irange_storage::get_irange): Same.
21711 * value-range.cc (irange::operator=): Same.
21712 (irange::irange_set): Same.
21713 (irange::irange_set_1bit_anti_range): Same.
21714 (irange::irange_set_anti_range): Same.
21715 (irange::set): Same.
21716 (irange::verify_range): Same.
21717 (irange::contains_p): Same.
21718 (irange::irange_single_pair_union): Same.
21719 (irange::union_): Same.
21720 (irange::irange_contains_p): Same.
21721 (irange::intersect): Same.
21722 (irange::invert): Same.
21723 (irange::set_range_from_nonzero_bits): Same.
21724 (irange::set_nonzero_bits): Same.
21725 (mask_to_wi): Same.
21726 (irange::intersect_nonzero_bits): Same.
21727 (irange::union_nonzero_bits): Same.
21728 (gt_ggc_mx): Same.
21729 (gt_pch_nx): Same.
21730 (tree_range): Same.
21731 (range_tests_strict_enum): Same.
21732 (range_tests_misc): Same.
21733 (range_tests_nonzero_bits): Same.
21734 * value-range.h (irange::type): Same.
21735 (irange::varying_compatible_p): Same.
21736 (irange::irange): Same.
21737 (int_range::int_range): Same.
21738 (irange::set_undefined): Same.
21739 (irange::set_varying): Same.
21740 (irange::lower_bound): Same.
21741 (irange::upper_bound): Same.
21742
21743 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
21744
21745 * gimple-range-fold.cc (tree_lower_bound): Delete.
21746 (tree_upper_bound): Delete.
21747 (vrp_val_max): Delete.
21748 (vrp_val_min): Delete.
21749 (fold_using_range::range_of_ssa_name_with_loop_info): Call
21750 range_of_var_in_loop.
21751 * vr-values.cc (valid_value_p): Delete.
21752 (fix_overflow): Delete.
21753 (get_scev_info): New.
21754 (bounds_of_var_in_loop): Refactor into...
21755 (induction_variable_may_overflow_p): ...this,
21756 (range_from_loop_direction): ...and this,
21757 (range_of_var_in_loop): ...and this.
21758 * vr-values.h (bounds_of_var_in_loop): Delete.
21759 (range_of_var_in_loop): New.
21760
21761 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
21762
21763 * gimple-range-fold.cc (adjust_pointer_diff_expr): Rewrite with
21764 irange_val*.
21765 (vrp_val_max): New.
21766 (vrp_val_min): New.
21767 * gimple-range-op.cc (cfn_strlen::fold_range): Use irange_val_*.
21768 * range-op.cc (max_limit): Same.
21769 (min_limit): Same.
21770 (plus_minus_ranges): Same.
21771 (operator_rshift::op1_range): Same.
21772 (operator_cast::inside_domain_p): Same.
21773 * value-range.cc (vrp_val_is_max): Delete.
21774 (vrp_val_is_min): Delete.
21775 (range_tests_misc): Use irange_val_*.
21776 * value-range.h (vrp_val_is_min): Delete.
21777 (vrp_val_is_max): Delete.
21778 (vrp_val_max): Delete.
21779 (irange_val_min): New.
21780 (vrp_val_min): Delete.
21781 (irange_val_max): New.
21782 * vr-values.cc (check_for_binary_op_overflow): Use irange_val_*.
21783
21784 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
21785
21786 * fold-const.cc (expr_not_equal_to): Convert to irange wide_int API.
21787 * gimple-fold.cc (size_must_be_zero_p): Same.
21788 * gimple-loop-versioning.cc
21789 (loop_versioning::prune_loop_conditions): Same.
21790 * gimple-range-edge.cc (gcond_edge_range): Same.
21791 (gimple_outgoing_range::calc_switch_ranges): Same.
21792 * gimple-range-fold.cc (adjust_imagpart_expr): Same.
21793 (adjust_realpart_expr): Same.
21794 (fold_using_range::range_of_address): Same.
21795 (fold_using_range::relation_fold_and_or): Same.
21796 * gimple-range-gori.cc (gori_compute::gori_compute): Same.
21797 (range_is_either_true_or_false): Same.
21798 * gimple-range-op.cc (cfn_toupper_tolower::get_letter_range): Same.
21799 (cfn_clz::fold_range): Same.
21800 (cfn_ctz::fold_range): Same.
21801 * gimple-range-tests.cc (class test_expr_eval): Same.
21802 * gimple-ssa-warn-alloca.cc (alloca_call_type): Same.
21803 * ipa-cp.cc (ipa_value_range_from_jfunc): Same.
21804 (propagate_vr_across_jump_function): Same.
21805 (decide_whether_version_node): Same.
21806 * ipa-prop.cc (ipa_get_value_range): Same.
21807 * ipa-prop.h (ipa_range_set_and_normalize): Same.
21808 * range-op.cc (get_shift_range): Same.
21809 (value_range_from_overflowed_bounds): Same.
21810 (value_range_with_overflow): Same.
21811 (create_possibly_reversed_range): Same.
21812 (equal_op1_op2_relation): Same.
21813 (not_equal_op1_op2_relation): Same.
21814 (lt_op1_op2_relation): Same.
21815 (le_op1_op2_relation): Same.
21816 (gt_op1_op2_relation): Same.
21817 (ge_op1_op2_relation): Same.
21818 (operator_mult::op1_range): Same.
21819 (operator_exact_divide::op1_range): Same.
21820 (operator_lshift::op1_range): Same.
21821 (operator_rshift::op1_range): Same.
21822 (operator_cast::op1_range): Same.
21823 (operator_logical_and::fold_range): Same.
21824 (set_nonzero_range_from_mask): Same.
21825 (operator_bitwise_or::op1_range): Same.
21826 (operator_bitwise_xor::op1_range): Same.
21827 (operator_addr_expr::fold_range): Same.
21828 (pointer_plus_operator::wi_fold): Same.
21829 (pointer_or_operator::op1_range): Same.
21830 (INT): Same.
21831 (UINT): Same.
21832 (INT16): Same.
21833 (UINT16): Same.
21834 (SCHAR): Same.
21835 (UCHAR): Same.
21836 (range_op_cast_tests): Same.
21837 (range_op_lshift_tests): Same.
21838 (range_op_rshift_tests): Same.
21839 (range_op_bitwise_and_tests): Same.
21840 (range_relational_tests): Same.
21841 * range.cc (range_zero): Same.
21842 (range_nonzero): Same.
21843 * range.h (range_true): Same.
21844 (range_false): Same.
21845 (range_true_and_false): Same.
21846 * tree-data-ref.cc (split_constant_offset_1): Same.
21847 * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Same.
21848 * tree-ssa-loop-unswitch.cc (struct unswitch_predicate): Same.
21849 (find_unswitching_predicates_for_bb): Same.
21850 * tree-ssa-phiopt.cc (value_replacement): Same.
21851 * tree-ssa-threadbackward.cc
21852 (back_threader::find_taken_edge_cond): Same.
21853 * tree-ssanames.cc (ssa_name_has_boolean_range): Same.
21854 * tree-vrp.cc (find_case_label_range): Same.
21855 * value-query.cc (range_query::get_tree_range): Same.
21856 * value-range.cc (irange::set_nonnegative): Same.
21857 (frange::contains_p): Same.
21858 (frange::singleton_p): Same.
21859 (frange::internal_singleton_p): Same.
21860 (irange::irange_set): Same.
21861 (irange::irange_set_1bit_anti_range): Same.
21862 (irange::irange_set_anti_range): Same.
21863 (irange::set): Same.
21864 (irange::operator==): Same.
21865 (irange::singleton_p): Same.
21866 (irange::contains_p): Same.
21867 (irange::set_range_from_nonzero_bits): Same.
21868 (DEFINE_INT_RANGE_INSTANCE): Same.
21869 (INT): Same.
21870 (UINT): Same.
21871 (SCHAR): Same.
21872 (UINT128): Same.
21873 (UCHAR): Same.
21874 (range): New.
21875 (tree_range): New.
21876 (range_int): New.
21877 (range_uint): New.
21878 (range_uint128): New.
21879 (range_uchar): New.
21880 (range_char): New.
21881 (build_range3): Convert to irange wide_int API.
21882 (range_tests_irange3): Same.
21883 (range_tests_int_range_max): Same.
21884 (range_tests_strict_enum): Same.
21885 (range_tests_misc): Same.
21886 (range_tests_nonzero_bits): Same.
21887 (range_tests_nan): Same.
21888 (range_tests_signed_zeros): Same.
21889 * value-range.h (Value_Range::Value_Range): Same.
21890 (irange::set): Same.
21891 (irange::nonzero_p): Same.
21892 (irange::contains_p): Same.
21893 (range_includes_zero_p): Same.
21894 (irange::set_nonzero): Same.
21895 (irange::set_zero): Same.
21896 (contains_zero_p): Same.
21897 (frange::contains_p): Same.
21898 * vr-values.cc
21899 (simplify_using_ranges::op_with_boolean_value_range_p): Same.
21900 (bounds_of_var_in_loop): Same.
21901 (simplify_using_ranges::legacy_fold_cond_overflow): Same.
21902
21903 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
21904
21905 * value-range.cc (irange::irange_union): Rename to...
21906 (irange::union_): ...this.
21907 (irange::irange_intersect): Rename to...
21908 (irange::intersect): ...this.
21909 * value-range.h (irange::union_): Delete.
21910 (irange::intersect): Delete.
21911
21912 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
21913
21914 * vr-values.cc (bounds_of_var_in_loop): Convert to irange API.
21915
21916 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
21917
21918 * vr-values.cc (check_for_binary_op_overflow): Tidy up by using
21919 ranger API.
21920 (compare_ranges): Delete.
21921 (compare_range_with_value): Delete.
21922 (bounds_of_var_in_loop): Tidy up by using ranger API.
21923 (simplify_using_ranges::fold_cond_with_ops): Cleanup and rename
21924 from vrp_evaluate_conditional_warnv_with_ops_using_ranges.
21925 (simplify_using_ranges::legacy_fold_cond_overflow): Remove
21926 strict_overflow_p and only_ranges.
21927 (simplify_using_ranges::legacy_fold_cond): Adjust call to
21928 legacy_fold_cond_overflow.
21929 (simplify_using_ranges::simplify_abs_using_ranges): Adjust for
21930 rename.
21931 (range_fits_type_p): Rename value_range to irange.
21932 * vr-values.h (range_fits_type_p): Adjust prototype.
21933
21934 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
21935
21936 * value-range.cc (irange::irange_set_anti_range): Remove uses of
21937 tree_lower_bound and tree_upper_bound.
21938 (irange::verify_range): Same.
21939 (irange::operator==): Same.
21940 (irange::singleton_p): Same.
21941 * value-range.h (irange::tree_lower_bound): Delete.
21942 (irange::tree_upper_bound): Delete.
21943 (irange::lower_bound): Delete.
21944 (irange::upper_bound): Delete.
21945 (irange::zero_p): Remove uses of tree_lower_bound and
21946 tree_upper_bound.
21947
21948 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
21949
21950 * tree-ssa-loop-niter.cc (refine_value_range_using_guard): Remove
21951 kind() call.
21952 (determine_value_range): Same.
21953 (record_nonwrapping_iv): Same.
21954 (infer_loop_bounds_from_signedness): Same.
21955 (scev_var_range_cant_overflow): Same.
21956 * tree-vrp.cc (operand_less_p): Delete.
21957 * tree-vrp.h (operand_less_p): Delete.
21958 * value-range.cc (get_legacy_range): Remove uses of deprecated API.
21959 (irange::value_inside_range): Delete.
21960 * value-range.h (vrange::kind): Delete.
21961 (irange::num_pairs): Remove check of m_kind.
21962 (irange::min): Delete.
21963 (irange::max): Delete.
21964
21965 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
21966
21967 * gimple-fold.cc (maybe_fold_comparisons_from_match_pd): Adjust
21968 for vrange_storage.
21969 * gimple-range-cache.cc (sbr_vector::sbr_vector): Same.
21970 (sbr_vector::grow): Same.
21971 (sbr_vector::set_bb_range): Same.
21972 (sbr_vector::get_bb_range): Same.
21973 (sbr_sparse_bitmap::sbr_sparse_bitmap): Same.
21974 (sbr_sparse_bitmap::set_bb_range): Same.
21975 (sbr_sparse_bitmap::get_bb_range): Same.
21976 (block_range_cache::block_range_cache): Same.
21977 (ssa_global_cache::ssa_global_cache): Same.
21978 (ssa_global_cache::get_global_range): Same.
21979 (ssa_global_cache::set_global_range): Same.
21980 * gimple-range-cache.h: Same.
21981 * gimple-range-edge.cc
21982 (gimple_outgoing_range::gimple_outgoing_range): Same.
21983 (gimple_outgoing_range::switch_edge_range): Same.
21984 (gimple_outgoing_range::calc_switch_ranges): Same.
21985 * gimple-range-edge.h: Same.
21986 * gimple-range-infer.cc
21987 (infer_range_manager::infer_range_manager): Same.
21988 (infer_range_manager::get_nonzero): Same.
21989 (infer_range_manager::maybe_adjust_range): Same.
21990 (infer_range_manager::add_range): Same.
21991 * gimple-range-infer.h: Rename obstack_vrange_allocator to
21992 vrange_allocator.
21993 * tree-core.h (struct irange_storage_slot): Remove.
21994 (struct tree_ssa_name): Remove irange_info and frange_info. Make
21995 range_info a pointer to vrange_storage.
21996 * tree-ssanames.cc (range_info_fits_p): Adjust for vrange_storage.
21997 (range_info_alloc): Same.
21998 (range_info_free): Same.
21999 (range_info_get_range): Same.
22000 (range_info_set_range): Same.
22001 (get_nonzero_bits): Same.
22002 * value-query.cc (get_ssa_name_range_info): Same.
22003 * value-range-storage.cc (class vrange_internal_alloc): New.
22004 (class vrange_obstack_alloc): New.
22005 (class vrange_ggc_alloc): New.
22006 (vrange_allocator::vrange_allocator): New.
22007 (vrange_allocator::~vrange_allocator): New.
22008 (vrange_storage::alloc_slot): New.
22009 (vrange_allocator::alloc): New.
22010 (vrange_allocator::free): New.
22011 (vrange_allocator::clone): New.
22012 (vrange_allocator::clone_varying): New.
22013 (vrange_allocator::clone_undefined): New.
22014 (vrange_storage::alloc): New.
22015 (vrange_storage::set_vrange): Remove slot argument.
22016 (vrange_storage::get_vrange): Same.
22017 (vrange_storage::fits_p): Same.
22018 (vrange_storage::equal_p): New.
22019 (irange_storage::write_lengths_address): New.
22020 (irange_storage::lengths_address): New.
22021 (irange_storage_slot::alloc_slot): Remove.
22022 (irange_storage::alloc): New.
22023 (irange_storage_slot::irange_storage_slot): Remove.
22024 (irange_storage::irange_storage): New.
22025 (write_wide_int): New.
22026 (irange_storage_slot::set_irange): Remove.
22027 (irange_storage::set_irange): New.
22028 (read_wide_int): New.
22029 (irange_storage_slot::get_irange): Remove.
22030 (irange_storage::get_irange): New.
22031 (irange_storage_slot::size): Remove.
22032 (irange_storage::equal_p): New.
22033 (irange_storage_slot::num_wide_ints_needed): Remove.
22034 (irange_storage::size): New.
22035 (irange_storage_slot::fits_p): Remove.
22036 (irange_storage::fits_p): New.
22037 (irange_storage_slot::dump): Remove.
22038 (irange_storage::dump): New.
22039 (frange_storage_slot::alloc_slot): Remove.
22040 (frange_storage::alloc): New.
22041 (frange_storage_slot::set_frange): Remove.
22042 (frange_storage::set_frange): New.
22043 (frange_storage_slot::get_frange): Remove.
22044 (frange_storage::get_frange): New.
22045 (frange_storage_slot::fits_p): Remove.
22046 (frange_storage::equal_p): New.
22047 (frange_storage::fits_p): New.
22048 (ggc_vrange_allocator): New.
22049 (ggc_alloc_vrange_storage): New.
22050 * value-range-storage.h (class vrange_storage): Rewrite.
22051 (class irange_storage): Rewrite.
22052 (class frange_storage): Rewrite.
22053 (class obstack_vrange_allocator): Remove.
22054 (class ggc_vrange_allocator): Remove.
22055 (vrange_allocator::alloc_vrange): Remove.
22056 (vrange_allocator::alloc_irange): Remove.
22057 (vrange_allocator::alloc_frange): Remove.
22058 (ggc_alloc_vrange_storage): New.
22059 * value-range.h (class irange): Rename vrange_allocator to
22060 irange_storage.
22061 (class frange): Same.
22062
22063 2023-04-30 Roger Sayle <roger@nextmovesoftware.com>
22064
22065 * config/stormy16/stormy16.md (neghi2): Rewrite pattern using
22066 inc to avoid clobbering the carry flag.
22067
22068 2023-04-30 Andrew Pinski <apinski@marvell.com>
22069
22070 * match.pd: Add patterns for "a != 0 ? FUNC(a) : CST"
22071 for FUNC of POPCOUNT BSWAP FFS PARITY CLZ and CTZ.
22072
22073 2023-04-30 Andrew Pinski <apinski@marvell.com>
22074
22075 * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
22076 Allow some builtin/internal function calls which
22077 are known not to trap/throw.
22078 (phiopt_worker::match_simplify_replacement):
22079 Use name instead of getting the lhs again.
22080
22081 2023-04-30 Joakim Nohlgård <joakim@nohlgard.se>
22082
22083 * configure: Regenerate.
22084 * configure.ac: Use ld -r in the check for HAVE_LD_RO_RW_SECTION_MIXING
22085
22086 2023-04-29 Hans-Peter Nilsson <hp@axis.com>
22087
22088 * reload1.cc (emit_insn_if_valid_for_reload_1): Rename from
22089 emit_insn_if_valid_for_reload.
22090 (emit_insn_if_valid_for_reload): Call new helper, and if a SET fails
22091 to be recognized, also try emitting a parallel that clobbers
22092 TARGET_FLAGS_REGNUM, as applicable.
22093
22094 2023-04-29 Roger Sayle <roger@nextmovesoftware.com>
22095
22096 * config/stormy16/stormy16.md (neghi2): Convert from a define_expand
22097 to a define_insn.
22098 (*rotatehi_1): New define_insn for efficient 2 insn sequence.
22099 (*rotatehi_8, *rotaterthi_8): New define_insn to emit a swpb.
22100
22101 2023-04-29 Roger Sayle <roger@nextmovesoftware.com>
22102
22103 * config/stormy16/stormy16.md (any_lshift): New code iterator.
22104 (any_or_plus): Likewise.
22105 (any_rotate): Likewise.
22106 (*<any_lshift>_and_internal): New define_insn_and_split to
22107 recognize a logical shift followed by an AND, and split it
22108 again after reload.
22109 (*swpn): New define_insn matching xstormy16's swpn.
22110 (*swpn_zext): New define_insn recognizing swpn followed by
22111 zero_extendqihi2, i.e. with the high byte set to zero.
22112 (*swpn_sext): Likewise, for swpn followed by cbw.
22113 (*swpn_sext_2): Likewise, for an alternate RTL form.
22114 (*swpn_zext_ior): A pre-reload splitter so that an swpn+zext+ior
22115 sequence is split in the correct place to recognize the *swpn_zext
22116 followed by any_or_plus (ior, xor or plus) instruction.
22117
22118 2023-04-29 Mikael Pettersson <mikpelinux@gmail.com>
22119
22120 PR target/105525
22121 * config.gcc (vax-*-linux*): Add glibc-stdint.h.
22122 (lm32-*-uclinux*): Likewise.
22123
22124 2023-04-29 Fei Gao <gaofei@eswincomputing.com>
22125
22126 * config/riscv/riscv.cc (riscv_avoid_save_libcall): helper function
22127 for riscv_use_save_libcall.
22128 (riscv_use_save_libcall): call riscv_avoid_save_libcall.
22129 (riscv_compute_frame_info): restructure to decouple stack allocation
22130 for rv32e w/o save-restore.
22131
22132 2023-04-28 Eugene Rozenfeld <erozen@microsoft.com>
22133
22134 * doc/install.texi: Fix documentation typo
22135
22136 2023-04-28 Matevos Mehrabyan <matevosmehrabyan@gmail.com>
22137
22138 * config/riscv/iterators.md (only_div, paired_mod): New iterators.
22139 (u): Add div/udiv cases.
22140 * config/riscv/riscv-protos.h (riscv_use_divmod_expander): Prototype.
22141 * config/riscv/riscv.cc (struct riscv_tune_param): Add field for
22142 divmod expansion.
22143 (rocket_tune_info, sifive_7_tune_info): Initialize new field.
22144 (thead_c906_tune_info): Likewise.
22145 (optimize_size_tune_info): Likewise.
22146 (riscv_use_divmod_expander): New function.
22147 * config/riscv/riscv.md (<u>divmod<mode>4): New expander.
22148
22149 2023-04-28 Karen Sargsyan <karen1999411@gmail.com>
22150
22151 * config/riscv/bitmanip.md: Added clmulr instruction.
22152 * config/riscv/riscv-builtins.cc (AVAIL): Add new.
22153 * config/riscv/riscv.md: (UNSPEC_CLMULR): Add new unspec type.
22154 (type): Add clmul
22155 * config/riscv/riscv-cmo.def: Added built-in function for clmulr.
22156 * config/riscv/crypto.md: Move clmul[h] instructions to bitmanip.md.
22157 * config/riscv/riscv-scalar-crypto.def: Move clmul[h] built-in
22158 functions to riscv-cmo.def.
22159 * config/riscv/generic.md: Add clmul to list of instructions
22160 using the generic_imul reservation.
22161
22162 2023-04-28 Jivan Hakobyan <jivanhakobyan9@gmail.com>
22163
22164 * config/riscv/bitmanip.md: Added expanders for minu/maxu instructions
22165
22166 2023-04-28 Andrew Pinski <apinski@marvell.com>
22167
22168 PR tree-optimization/100958
22169 * tree-ssa-phiopt.cc (two_value_replacement): Remove.
22170 (pass_phiopt::execute): Don't call two_value_replacement.
22171 * match.pd (a !=/== CST1 ? CST2 : CST3): Add pattern to
22172 handle what two_value_replacement did.
22173
22174 2023-04-28 Andrew Pinski <apinski@marvell.com>
22175
22176 * match.pd: Add patterns for
22177 "(A CMP B) ? MIN/MAX<A, C> : MIN/MAX <B, C>".
22178
22179 2023-04-28 Andrew Pinski <apinski@marvell.com>
22180
22181 * match.pd: Factor out the deciding the min/max from
22182 the "(cond (cmp (convert1? x) c1) (convert2? x) c2)"
22183 pattern to ...
22184 * fold-const.cc (minmax_from_comparison): this new function.
22185 * fold-const.h (minmax_from_comparison): New prototype.
22186
22187 2023-04-28 Roger Sayle <roger@nextmovesoftware.com>
22188
22189 PR rtl-optimization/109476
22190 * lower-subreg.cc: Include explow.h for force_reg.
22191 (find_decomposable_shift_zext): Pass an additional SPEED_P argument.
22192 If decomposing a suitable LSHIFTRT and we're not splitting
22193 ZERO_EXTEND (based on the current SPEED_P), then use a ZERO_EXTEND
22194 instead of setting a high part SUBREG to zero, which helps combine.
22195 (decompose_multiword_subregs): Update call to resolve_shift_zext.
22196
22197 2023-04-28 Richard Biener <rguenther@suse.de>
22198
22199 * tree-vect-data-refs.cc (vect_analyze_data_refs): Always
22200 consider scatters.
22201 * tree-vect-stmts.cc (vect_model_store_cost): Pass in the
22202 gather-scatter info and cost emulated scatters accordingly.
22203 (get_load_store_type): Support emulated scatters.
22204 (vectorizable_store): Likewise. Emulate them by extracting
22205 scalar offsets and data, doing scalar stores.
22206
22207 2023-04-28 Richard Biener <rguenther@suse.de>
22208
22209 * config/i386/i386.cc (ix86_vector_costs::add_stmt_cost):
22210 Tame down element extracts and scalar loads for gather/scatter
22211 similar to elementwise strided accesses.
22212
22213 2023-04-28 Pan Li <pan2.li@intel.com>
22214 kito-cheng <kito.cheng@sifive.com>
22215
22216 * config/riscv/vector.md: Add new define split to perform
22217 the simplification.
22218
22219 2023-04-28 Richard Biener <rguenther@suse.de>
22220
22221 PR ipa/109652
22222 * ipa-param-manipulation.cc
22223 (ipa_param_body_adjustments::modify_expression): Allow
22224 conversion of a register to a non-register type. Elide
22225 conversions inside BIT_FIELD_REFs.
22226
22227 2023-04-28 Richard Biener <rguenther@suse.de>
22228
22229 PR tree-optimization/109644
22230 * tree-cfg.cc (verify_types_in_gimple_reference): Check
22231 register constraints on the outermost VIEW_CONVERT_EXPR
22232 only. Do not allow register or invariant bases on
22233 multi-level or possibly variable index handled components.
22234
22235 2023-04-28 Richard Biener <rguenther@suse.de>
22236
22237 * gimplify.cc (gimplify_compound_lval): When there's a
22238 non-register type produced by one of the handled component
22239 operations make sure we get a non-register base.
22240
22241 2023-04-28 Richard Biener <rguenther@suse.de>
22242
22243 PR tree-optimization/108752
22244 * tree-vect-generic.cc (build_replicated_const): Rename
22245 to build_replicated_int_cst and move to tree.{h,cc}.
22246 (do_plus_minus): Adjust.
22247 (do_negate): Likewise.
22248 * tree-vect-stmts.cc (vectorizable_operation): Emit emulated
22249 arithmetic vector operations in lowered form.
22250 * tree.h (build_replicated_int_cst): Declare.
22251 * tree.cc (build_replicated_int_cst): Moved from
22252 tree-vect-generic.cc build_replicated_const.
22253
22254 2023-04-28 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
22255
22256 PR target/99195
22257 * config/aarch64/aarch64-simd.md (aarch64_rbit<mode>): Rename to...
22258 (aarch64_rbit<mode><vczle><vczbe>): ... This.
22259 (neg<mode>2): Rename to...
22260 (neg<mode>2<vczle><vczbe>): ... This.
22261 (abs<mode>2): Rename to...
22262 (abs<mode>2<vczle><vczbe>): ... This.
22263 (aarch64_abs<mode>): Rename to...
22264 (aarch64_abs<mode><vczle><vczbe>): ... This.
22265 (one_cmpl<mode>2): Rename to...
22266 (one_cmpl<mode>2<vczle><vczbe>): ... This.
22267 (clrsb<mode>2): Rename to...
22268 (clrsb<mode>2<vczle><vczbe>): ... This.
22269 (clz<mode>2): Rename to...
22270 (clz<mode>2<vczle><vczbe>): ... This.
22271 (popcount<mode>2): Rename to...
22272 (popcount<mode>2<vczle><vczbe>): ... This.
22273
22274 2023-04-28 Jakub Jelinek <jakub@redhat.com>
22275
22276 * gimple-range-op.cc (class cfn_sqrt): New type.
22277 (op_cfn_sqrt): New variable.
22278 (gimple_range_op_handler::maybe_builtin_call): Handle
22279 CASE_CFN_SQRT{,_FN}.
22280
22281 2023-04-28 Aldy Hernandez <aldyh@redhat.com>
22282 Jakub Jelinek <jakub@redhat.com>
22283
22284 * value-range.h (frange_nextafter): Declare.
22285 * gimple-range-op.cc (class cfn_sincos): New.
22286 (op_cfn_sin, op_cfn_cos): New variables.
22287 (gimple_range_op_handler::maybe_builtin_call): Handle
22288 CASE_CFN_{SIN,COS}{,_FN}.
22289
22290 2023-04-28 Jakub Jelinek <jakub@redhat.com>
22291
22292 * target.def (libm_function_max_error): New target hook.
22293 * doc/tm.texi.in (TARGET_LIBM_FUNCTION_MAX_ERROR): Add.
22294 * doc/tm.texi: Regenerated.
22295 * targhooks.h (default_libm_function_max_error,
22296 glibc_linux_libm_function_max_error): Declare.
22297 * targhooks.cc: Include case-cfn-macros.h.
22298 (default_libm_function_max_error,
22299 glibc_linux_libm_function_max_error): New functions.
22300 * config/linux.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
22301 * config/linux-protos.h (linux_libm_function_max_error): Declare.
22302 * config/linux.cc: Include target.h and targhooks.h.
22303 (linux_libm_function_max_error): New function.
22304 * config/arc/arc.cc: Include targhooks.h and case-cfn-macros.h.
22305 (arc_libm_function_max_error): New function.
22306 (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
22307 * config/i386/i386.cc (ix86_libc_has_fast_function): Formatting fix.
22308 (ix86_libm_function_max_error): New function.
22309 (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
22310 * config/rs6000/rs6000-protos.h
22311 (rs6000_linux_libm_function_max_error): Declare.
22312 * config/rs6000/rs6000-linux.cc: Include target.h, targhooks.h, tree.h
22313 and case-cfn-macros.h.
22314 (rs6000_linux_libm_function_max_error): New function.
22315 * config/rs6000/linux.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
22316 * config/rs6000/linux64.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
22317 * config/or1k/or1k.cc: Include targhooks.h and case-cfn-macros.h.
22318 (or1k_libm_function_max_error): New function.
22319 (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
22320
22321 2023-04-28 Alexandre Oliva <oliva@adacore.com>
22322
22323 * gimple-harden-conditionals.cc (insert_edge_check_and_trap):
22324 Move detach value calls...
22325 (pass_harden_conditional_branches::execute): ... here.
22326 (pass_harden_compares::execute): Detach values before
22327 compares.
22328
22329 2023-04-27 Andrew Stubbs <ams@codesourcery.com>
22330
22331 * config/gcn/gcn-valu.md (cmul<conj_op><mode>3): Use gcn_gen_undef.
22332 (cml<addsub_as><mode>4): Likewise.
22333 (vec_addsub<mode>3): Likewise.
22334 (cadd<rot><mode>3): Likewise.
22335 (vec_fmaddsub<mode>4): Likewise.
22336 (vec_fmsubadd<mode>4): Likewise, and use sub for the odd lanes.
22337
22338 2023-04-27 Andrew Pinski <apinski@marvell.com>
22339
22340 * tree-ssa-phiopt.cc (phiopt_early_allow): Allow for
22341 up to 2 min/max expressions in the sequence/match code.
22342
22343 2023-04-27 Andrew Pinski <apinski@marvell.com>
22344
22345 * rtlanal.cc (may_trap_p_1): Treat SMIN/SMAX similar as
22346 COMPARISON.
22347 * tree-eh.cc (operation_could_trap_helper_p): Treate
22348 MIN_EXPR/MAX_EXPR similar as other comparisons.
22349
22350 2023-04-27 Andrew Pinski <apinski@marvell.com>
22351
22352 * tree-ssa-phiopt.cc (cond_store_replacement): Remove
22353 prototype.
22354 (cond_if_else_store_replacement): Likewise.
22355 (get_non_trapping): Likewise.
22356 (store_elim_worker): Move into ...
22357 (pass_cselim::execute): This.
22358
22359 2023-04-27 Andrew Pinski <apinski@marvell.com>
22360
22361 * tree-ssa-phiopt.cc (two_value_replacement): Remove
22362 prototype.
22363 (match_simplify_replacement): Likewise.
22364 (factor_out_conditional_conversion): Likewise.
22365 (value_replacement): Likewise.
22366 (minmax_replacement): Likewise.
22367 (spaceship_replacement): Likewise.
22368 (cond_removal_in_builtin_zero_pattern): Likewise.
22369 (hoist_adjacent_loads): Likewise.
22370 (tree_ssa_phiopt_worker): Move into ...
22371 (pass_phiopt::execute): this.
22372
22373 2023-04-27 Andrew Pinski <apinski@marvell.com>
22374
22375 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove
22376 do_store_elim argument and split that part out to ...
22377 (store_elim_worker): This new function.
22378 (pass_cselim::execute): Call store_elim_worker.
22379 (pass_phiopt::execute): Update call to tree_ssa_phiopt_worker.
22380
22381 2023-04-27 Jan Hubicka <jh@suse.cz>
22382
22383 * cfgloopmanip.h (unloop_loops): Export.
22384 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Unloop loops
22385 that no longer loop.
22386 * tree-ssa-loop-ivcanon.cc (unloop_loops): Export; do not free
22387 vectors of loops to unloop.
22388 (canonicalize_induction_variables): Free vectors here.
22389 (tree_unroll_loops_completely): Free vectors here.
22390
22391 2023-04-27 Richard Biener <rguenther@suse.de>
22392
22393 PR tree-optimization/109170
22394 * gimple-range-op.cc (gimple_range_op_handler::maybe_builtin_call):
22395 Handle __builtin_expect and similar via cfn_pass_through_arg1
22396 and inspecting the calls fnspec.
22397 * builtins.cc (builtin_fnspec): Handle BUILT_IN_EXPECT
22398 and BUILT_IN_EXPECT_WITH_PROBABILITY.
22399
22400 2023-04-27 Alexandre Oliva <oliva@adacore.com>
22401
22402 * genmultilib: Use CONFIG_SHELL to run sub-scripts.
22403
22404 2023-04-27 Aldy Hernandez <aldyh@redhat.com>
22405
22406 PR tree-optimization/109639
22407 * ipa-cp.cc (ipa_value_range_from_jfunc): Normalize range.
22408 (propagate_vr_across_jump_function): Same.
22409 * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
22410 * ipa-prop.h (ipa_range_set_and_normalize): New.
22411 * value-range.cc (irange::set): Assert min and max are INTEGER_CST.
22412
22413 2023-04-27 Richard Biener <rguenther@suse.de>
22414
22415 * match.pd (BIT_FIELD_REF CONSTRUCTOR@0 @1 @2): Do not
22416 create a CTOR operand in the result when simplifying GIMPLE.
22417
22418 2023-04-27 Richard Biener <rguenther@suse.de>
22419
22420 * gimplify.cc (gimplify_compound_lval): When the base
22421 gimplified to a register make sure to split up chains
22422 of operations.
22423
22424 2023-04-27 Richard Biener <rguenther@suse.de>
22425
22426 PR ipa/109607
22427 * ipa-param-manipulation.h
22428 (ipa_param_body_adjustments::modify_expression): Add extra_stmts
22429 argument.
22430 * ipa-param-manipulation.cc
22431 (ipa_param_body_adjustments::modify_expression): Likewise.
22432 When we need a conversion and the replacement is a register
22433 split the conversion out.
22434 (ipa_param_body_adjustments::modify_assignment): Pass
22435 extra_stmts to RHS modify_expression.
22436
22437 2023-04-27 Jonathan Wakely <jwakely@redhat.com>
22438
22439 * doc/extend.texi (Zero Length): Describe example.
22440
22441 2023-04-27 Richard Biener <rguenther@suse.de>
22442
22443 PR tree-optimization/109594
22444 * tree-ssa.cc (non_rewritable_mem_ref_base): Constrain
22445 what we rewrite to a register based on the above.
22446
22447 2023-04-26 Patrick O'Neill <patrick@rivosinc.com>
22448
22449 * config/riscv/riscv.cc: Fix whitespace.
22450 * config/riscv/sync.md: Fix whitespace.
22451
22452 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
22453
22454 PR tree-optimization/108697
22455 * gimple-range-cache.cc (ssa_global_cache::clear_range): Do
22456 not clear the vector on an out of range query.
22457 (ssa_cache::dump): Use dump_range_query instead of get_range.
22458 (ssa_cache::dump_range_query): New.
22459 (ssa_lazy_cache::dump_range_query): New.
22460 (ssa_lazy_cache::set_range): New.
22461 * gimple-range-cache.h (ssa_cache::dump_range_query): New.
22462 (class ssa_lazy_cache): New.
22463 (ssa_lazy_cache::ssa_lazy_cache): New.
22464 (ssa_lazy_cache::~ssa_lazy_cache): New.
22465 (ssa_lazy_cache::get_range): New.
22466 (ssa_lazy_cache::clear_range): New.
22467 (ssa_lazy_cache::clear): New.
22468 (ssa_lazy_cache::dump): New.
22469 * gimple-range-path.cc (path_range_query::path_range_query): Do
22470 not allocate a ssa_cache object nor has_cache bitmap.
22471 (path_range_query::~path_range_query): Do not free objects.
22472 (path_range_query::clear_cache): Remove.
22473 (path_range_query::get_cache): Adjust.
22474 (path_range_query::set_cache): Remove.
22475 (path_range_query::dump): Don't call through a pointer.
22476 (path_range_query::internal_range_of_expr): Set cache directly.
22477 (path_range_query::reset_path): Clear cache directly.
22478 (path_range_query::ssa_range_in_phi): Fold with globals only.
22479 (path_range_query::compute_ranges_in_phis): Simply set range.
22480 (path_range_query::compute_ranges_in_block): Call cache directly.
22481 * gimple-range-path.h (class path_range_query): Replace bitmap
22482 and cache pointer with lazy cache object.
22483 * gimple-range.h (class assume_query): Use ssa_lazy_cache.
22484
22485 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
22486
22487 * gimple-range-cache.cc (ssa_cache::ssa_cache): Rename.
22488 (ssa_cache::~ssa_cache): Rename.
22489 (ssa_cache::has_range): New.
22490 (ssa_cache::get_range): Rename.
22491 (ssa_cache::set_range): Rename.
22492 (ssa_cache::clear_range): Rename.
22493 (ssa_cache::clear): Rename.
22494 (ssa_cache::dump): Rename and use get_range.
22495 (ranger_cache::get_global_range): Use get_range and set_range.
22496 (ranger_cache::range_of_def): Use get_range.
22497 * gimple-range-cache.h (class ssa_cache): Rename class and methods.
22498 (class ranger_cache): Use ssa_cache.
22499 * gimple-range-path.cc (path_range_query::path_range_query): Use
22500 ssa_cache.
22501 (path_range_query::get_cache): Use get_range.
22502 (path_range_query::set_cache): Use set_range.
22503 * gimple-range-path.h (class path_range_query): Use ssa_cache.
22504 * gimple-range.cc (assume_query::assume_range_p): Use get_range.
22505 (assume_query::range_of_expr): Use get_range.
22506 (assume_query::assume_query): Use set_range.
22507 (assume_query::calculate_op): Use get_range and set_range.
22508 * gimple-range.h (class assume_query): Use ssa_cache.
22509
22510 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
22511
22512 * gimple-range-cache.cc (sbr_vector::sbr_vector): Add parameter
22513 and local to optionally zero memory.
22514 (br_vector::grow): Only zero memory if flag is set.
22515 (class sbr_lazy_vector): New.
22516 (sbr_lazy_vector::sbr_lazy_vector): New.
22517 (sbr_lazy_vector::set_bb_range): New.
22518 (sbr_lazy_vector::get_bb_range): New.
22519 (sbr_lazy_vector::bb_range_p): New.
22520 (block_range_cache::set_bb_range): Check flags and Use sbr_lazy_vector.
22521 * gimple-range-gori.cc (gori_map::calculate_gori): Use
22522 param_vrp_switch_limit.
22523 (gori_compute::gori_compute): Use param_vrp_switch_limit.
22524 * params.opt (vrp_sparse_threshold): Rename from evrp_sparse_threshold.
22525 (vrp_switch_limit): Rename from evrp_switch_limit.
22526 (vrp_vector_threshold): New.
22527
22528 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
22529
22530 * value-relation.cc (dom_oracle::query_relation): Check early for lack
22531 of any relation.
22532 * value-relation.h (equiv_oracle::has_equiv_p): New.
22533
22534 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
22535
22536 PR tree-optimization/109417
22537 * gimple-range-gori.cc (range_def_chain::register_dependency):
22538 Save the ssa version number, not the pointer.
22539 (gori_compute::may_recompute_p): No need to check if a dependency
22540 is in the free list.
22541 * gimple-range-gori.h (class range_def_chain): Change ssa1 and ssa2
22542 fields to be unsigned int instead of trees.
22543 (ange_def_chain::depend1): Adjust.
22544 (ange_def_chain::depend2): Adjust.
22545 * gimple-range.h: Include "ssa.h" to inline ssa_name().
22546
22547 2023-04-26 David Edelsohn <dje.gcc@gmail.com>
22548
22549 * config/rs6000/aix72.h (TARGET_DEFAULT): Use ISA_2_6_MASKS_SERVER.
22550 * config/rs6000/aix73.h (TARGET_DEFAULT): Use ISA_2_7_MASKS_SERVER.
22551 (PROCESSOR_DEFAULT): Use PROCESSOR_POWER8.
22552
22553 2023-04-26 Patrick O'Neill <patrick@rivosinc.com>
22554
22555 PR target/104338
22556 * config/riscv/riscv-protos.h: Add helper function stubs.
22557 * config/riscv/riscv.cc: Add helper functions for subword masking.
22558 * config/riscv/riscv.opt: Add command-line flags -minline-atomics and
22559 -mno-inline-atomics.
22560 * config/riscv/sync.md: Add masking logic and inline asm for fetch_and_op,
22561 fetch_and_nand, CAS, and exchange ops.
22562 * doc/invoke.texi: Add blurb regarding new command-line flags
22563 -minline-atomics and -mno-inline-atomics.
22564
22565 2023-04-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
22566
22567 * config/aarch64/aarch64-simd.md (aarch64_rshrn2<mode>_insn_le):
22568 Reimplement using standard RTL codes instead of unspec.
22569 (aarch64_rshrn2<mode>_insn_be): Likewise.
22570 (aarch64_rshrn2<mode>): Adjust for the above.
22571 * config/aarch64/aarch64.md (UNSPEC_RSHRN): Delete.
22572
22573 2023-04-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
22574
22575 * config/aarch64/aarch64-simd.md (aarch64_rshrn<mode>_insn_le): Reimplement
22576 with standard RTL codes instead of an UNSPEC.
22577 (aarch64_rshrn<mode>_insn_be): Likewise.
22578 (aarch64_rshrn<mode>): Adjust for the above.
22579 * config/aarch64/predicates.md (aarch64_simd_rshrn_imm_vec): Define.
22580
22581 2023-04-26 Pan Li <pan2.li@intel.com>
22582 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22583
22584 * config/riscv/riscv.cc (riscv_classify_address): Allow
22585 const0_rtx for the RVV load/store.
22586
22587 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
22588
22589 * range-op.cc (range_op_cast_tests): Remove legacy support.
22590 * value-range-storage.h (vrange_allocator::alloc_irange): Same.
22591 * value-range.cc (irange::operator=): Same.
22592 (get_legacy_range): Same.
22593 (irange::copy_legacy_to_multi_range): Delete.
22594 (irange::copy_to_legacy): Delete.
22595 (irange::irange_set_anti_range): Delete.
22596 (irange::set): Remove legacy support.
22597 (irange::verify_range): Same.
22598 (irange::legacy_lower_bound): Delete.
22599 (irange::legacy_upper_bound): Delete.
22600 (irange::legacy_equal_p): Delete.
22601 (irange::operator==): Remove legacy support.
22602 (irange::singleton_p): Same.
22603 (irange::value_inside_range): Same.
22604 (irange::contains_p): Same.
22605 (intersect_ranges): Delete.
22606 (irange::legacy_intersect): Delete.
22607 (union_ranges): Delete.
22608 (irange::legacy_union): Delete.
22609 (irange::legacy_verbose_union_): Delete.
22610 (irange::legacy_verbose_intersect): Delete.
22611 (irange::irange_union): Remove legacy support.
22612 (irange::irange_intersect): Same.
22613 (irange::intersect): Same.
22614 (irange::invert): Same.
22615 (ranges_from_anti_range): Delete.
22616 (gt_pch_nx): Adjust for legacy removal.
22617 (gt_ggc_mx): Same.
22618 (range_tests_legacy): Delete.
22619 (range_tests_misc): Adjust for legacy removal.
22620 (range_tests): Same.
22621 * value-range.h (class irange): Same.
22622 (irange::legacy_mode_p): Delete.
22623 (ranges_from_anti_range): Delete.
22624 (irange::nonzero_p): Adjust for legacy removal.
22625 (irange::lower_bound): Same.
22626 (irange::upper_bound): Same.
22627 (irange::union_): Same.
22628 (irange::intersect): Same.
22629 (irange::set_nonzero): Same.
22630 (irange::set_zero): Same.
22631 * vr-values.cc (simplify_using_ranges::legacy_fold_cond_overflow): Same.
22632
22633 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
22634
22635 * value-range.cc (irange::copy_legacy_to_multi_range): Rewrite use
22636 of range_has_numeric_bounds_p with irange API.
22637 (range_has_numeric_bounds_p): Delete.
22638 * value-range.h (range_has_numeric_bounds_p): Delete.
22639
22640 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
22641
22642 * tree-data-ref.cc (compute_distributive_range): Replace uses of
22643 range_int_cst_p with irange API.
22644 * tree-ssa-strlen.cc (get_range_strlen_dynamic): Same.
22645 * tree-vrp.h (range_int_cst_p): Delete.
22646 * vr-values.cc (check_for_binary_op_overflow): Replace usees of
22647 range_int_cst_p with irange API.
22648 (vr_set_zero_nonzero_bits): Same.
22649 (range_fits_type_p): Same.
22650 (simplify_using_ranges::simplify_casted_cond): Same.
22651 * tree-vrp.cc (range_int_cst_p): Remove.
22652
22653 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
22654
22655 * tree-ssa-strlen.cc (compare_nonzero_chars): Convert to wide_ints.
22656
22657 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
22658
22659 * builtins.cc (expand_builtin_strnlen): Rewrite deprecated irange
22660 API uses to new API.
22661 * gimple-predicate-analysis.cc (find_var_cmp_const): Same.
22662 * internal-fn.cc (get_min_precision): Same.
22663 * match.pd: Same.
22664 * tree-affine.cc (expr_to_aff_combination): Same.
22665 * tree-data-ref.cc (dr_step_indicator): Same.
22666 * tree-dfa.cc (get_ref_base_and_extent): Same.
22667 * tree-scalar-evolution.cc (iv_can_overflow_p): Same.
22668 * tree-ssa-phiopt.cc (two_value_replacement): Same.
22669 * tree-ssa-pre.cc (insert_into_preds_of_block): Same.
22670 * tree-ssa-reassoc.cc (optimize_range_tests_to_bit_test): Same.
22671 * tree-ssa-strlen.cc (compare_nonzero_chars): Same.
22672 * tree-switch-conversion.cc (bit_test_cluster::emit): Same.
22673 * tree-vect-patterns.cc (vect_recog_divmod_pattern): Same.
22674 * tree.cc (get_range_pos_neg): Same.
22675
22676 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
22677
22678 * ipa-prop.cc (ipa_print_node_jump_functions_for_edge): Use
22679 vrange::dump instead of ad-hoc dumper.
22680 * tree-ssa-strlen.cc (dump_strlen_info): Same.
22681 * value-range-pretty-print.cc (visit): Pass TDF_NOUID to
22682 dump_generic_node.
22683
22684 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
22685
22686 * range-op.cc (operator_cast::op1_range): Use
22687 create_possibly_reversed_range.
22688 (operator_bitwise_and::simple_op1_range_solver): Same.
22689 * value-range.cc (swap_out_of_order_endpoints): Delete.
22690 (irange::set): Remove call to swap_out_of_order_endpoints.
22691
22692 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
22693
22694 * builtins.cc (determine_block_size): Convert use of legacy API to
22695 get_legacy_range.
22696 * gimple-array-bounds.cc (check_out_of_bounds_and_warn): Same.
22697 (array_bounds_checker::check_array_ref): Same.
22698 * gimple-ssa-warn-restrict.cc
22699 (builtin_memref::extend_offset_range): Same.
22700 * ipa-cp.cc (ipcp_store_vr_results): Same.
22701 * ipa-fnsummary.cc (set_switch_stmt_execution_predicate): Same.
22702 * ipa-prop.cc (struct ipa_vr_ggc_hash_traits): Same.
22703 (ipa_write_jump_function): Same.
22704 * pointer-query.cc (get_size_range): Same.
22705 * tree-data-ref.cc (split_constant_offset): Same.
22706 * tree-ssa-strlen.cc (get_range): Same.
22707 (maybe_diag_stxncpy_trunc): Same.
22708 (strlen_pass::get_len_or_size): Same.
22709 (strlen_pass::count_nonzero_bytes_addr): Same.
22710 * tree-vect-patterns.cc (vect_get_range_info): Same.
22711 * value-range.cc (irange::maybe_anti_range): Remove.
22712 (get_legacy_range): New.
22713 (irange::copy_to_legacy): Use get_legacy_range.
22714 (ranges_from_anti_range): Same.
22715 * value-range.h (class irange): Remove maybe_anti_range.
22716 (get_legacy_range): New.
22717 * vr-values.cc (check_for_binary_op_overflow): Convert use of
22718 legacy API to get_legacy_range.
22719 (compare_ranges): Same.
22720 (compare_range_with_value): Same.
22721 (bounds_of_var_in_loop): Same.
22722 (find_case_label_ranges): Same.
22723 (simplify_using_ranges::simplify_switch_using_ranges): Same.
22724
22725 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
22726
22727 * value-range-pretty-print.cc (vrange_printer::visit): Remove
22728 constant_p use.
22729 * value-range.cc (irange::constant_p): Remove.
22730 (irange::get_nonzero_bits_from_range): Remove constant_p use.
22731 * value-range.h (class irange): Remove constant_p.
22732 (irange::num_pairs): Remove constant_p use.
22733
22734 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
22735
22736 * value-range.cc (irange::copy_legacy_to_multi_range): Remove
22737 symbolics support.
22738 (irange::set): Same.
22739 (irange::legacy_lower_bound): Same.
22740 (irange::legacy_upper_bound): Same.
22741 (irange::contains_p): Same.
22742 (range_tests_legacy): Same.
22743 (irange::normalize_addresses): Remove.
22744 (irange::normalize_symbolics): Remove.
22745 (irange::symbolic_p): Remove.
22746 * value-range.h (class irange): Remove symbolic_p,
22747 normalize_symbolics, and normalize_addresses.
22748 * vr-values.cc (simplify_using_ranges::two_valued_val_range_p):
22749 Remove symbolics support.
22750
22751 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
22752
22753 * value-range.cc (irange::may_contain_p): Remove.
22754 * value-range.h (range_includes_zero_p): Rewrite may_contain_p
22755 usage with contains_p.
22756 * vr-values.cc (compare_range_with_value): Same.
22757
22758 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
22759
22760 * tree-vrp.cc (supported_types_p): Remove.
22761 (defined_ranges_p): Remove.
22762 (range_fold_binary_expr): Remove.
22763 (range_fold_unary_expr): Remove.
22764 * tree-vrp.h (range_fold_unary_expr): Remove.
22765 (range_fold_binary_expr): Remove.
22766
22767 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
22768
22769 * ipa-cp.cc (ipa_vr_operation_and_type_effects): Convert to ranger API.
22770 (ipa_value_range_from_jfunc): Same.
22771 (propagate_vr_across_jump_function): Same.
22772 * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
22773 * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Same.
22774 * vr-values.cc (bounds_of_var_in_loop): Same.
22775
22776 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
22777
22778 * gimple-array-bounds.cc (array_bounds_checker::get_value_range):
22779 Add irange argument.
22780 (check_out_of_bounds_and_warn): Remove check for vr.
22781 (array_bounds_checker::check_array_ref): Remove pointer qualifier
22782 for vr and adjust accordingly.
22783 * gimple-array-bounds.h (get_value_range): Add irange argument.
22784 * value-query.cc (class equiv_allocator): Delete.
22785 (range_query::get_value_range): Delete.
22786 (range_query::range_query): Remove allocator access.
22787 (range_query::~range_query): Same.
22788 * value-query.h (get_value_range): Delete.
22789 * vr-values.cc
22790 (simplify_using_ranges::op_with_boolean_value_range_p): Remove
22791 call to get_value_range.
22792 (check_for_binary_op_overflow): Same.
22793 (simplify_using_ranges::legacy_fold_cond_overflow): Same.
22794 (simplify_using_ranges::simplify_abs_using_ranges): Same.
22795 (simplify_using_ranges::simplify_cond_using_ranges_1): Same.
22796 (simplify_using_ranges::simplify_casted_cond): Same.
22797 (simplify_using_ranges::simplify_switch_using_ranges): Same.
22798 (simplify_using_ranges::two_valued_val_range_p): Same.
22799
22800 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
22801
22802 * vr-values.cc
22803 (simplify_using_ranges::vrp_evaluate_conditional_warnv_with_ops):
22804 Rename to...
22805 (simplify_using_ranges::legacy_fold_cond_overflow): ...this.
22806 (simplify_using_ranges::vrp_visit_cond_stmt): Rename to...
22807 (simplify_using_ranges::legacy_fold_cond): ...this.
22808 (simplify_using_ranges::fold_cond): Rename
22809 vrp_evaluate_conditional_warnv_with_ops to
22810 legacy_fold_cond_overflow.
22811 * vr-values.h (class vr_values): Replace vrp_visit_cond_stmt and
22812 vrp_evaluate_conditional_warnv_with_ops with legacy_fold_cond and
22813 legacy_fold_cond_overflow respectively.
22814
22815 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
22816
22817 * vr-values.cc (get_vr_for_comparison): Remove.
22818 (compare_name_with_value): Same.
22819 (vrp_evaluate_conditional_warnv_with_ops): Remove calls to
22820 compare_name_with_value.
22821 * vr-values.h: Remove compare_name_with_value.
22822 Remove get_vr_for_comparison.
22823
22824 2023-04-26 Roger Sayle <roger@nextmovesoftware.com>
22825
22826 * config/stormy16/stormy16.md (bswaphi2): New define_insn.
22827 (bswapsi2): New define_insn.
22828 (swaphi): New define_insn to exchange two registers (swpw).
22829 (define_peephole2): Recognize exchange of registers as swaphi.
22830
22831 2023-04-26 Richard Biener <rguenther@suse.de>
22832
22833 * gimple-range-path.cc (path_range_query::compute_outgoing_relations):
22834 Avoid last_stmt.
22835 * ipa-pure-const.cc (pass_nothrow::execute): Likewise.
22836 * predict.cc (apply_return_prediction): Likewise.
22837 * sese.cc (set_ifsese_condition): Likewise. Simplify.
22838 * tree-cfg.cc (assert_unreachable_fallthru_edge_p): Avoid last_stmt.
22839 (make_edges_bb): Likewise.
22840 (make_cond_expr_edges): Likewise.
22841 (end_recording_case_labels): Likewise.
22842 (make_gimple_asm_edges): Likewise.
22843 (cleanup_dead_labels): Likewise.
22844 (group_case_labels): Likewise.
22845 (gimple_can_merge_blocks_p): Likewise.
22846 (gimple_merge_blocks): Likewise.
22847 (find_taken_edge): Likewise. Also handle empty fallthru blocks.
22848 (gimple_duplicate_sese_tail): Avoid last_stmt.
22849 (find_loop_dist_alias): Likewise.
22850 (gimple_block_ends_with_condjump_p): Likewise.
22851 (gimple_purge_dead_eh_edges): Likewise.
22852 (gimple_purge_dead_abnormal_call_edges): Likewise.
22853 (pass_warn_function_return::execute): Likewise.
22854 (execute_fixup_cfg): Likewise.
22855 * tree-eh.cc (redirect_eh_edge_1): Likewise.
22856 (pass_lower_resx::execute): Likewise.
22857 (pass_lower_eh_dispatch::execute): Likewise.
22858 (cleanup_empty_eh): Likewise.
22859 * tree-if-conv.cc (if_convertible_bb_p): Likewise.
22860 (predicate_bbs): Likewise.
22861 (ifcvt_split_critical_edges): Likewise.
22862 * tree-loop-distribution.cc (create_edge_for_control_dependence):
22863 Likewise.
22864 (loop_distribution::transform_reduction_loop): Likewise.
22865 * tree-parloops.cc (transform_to_exit_first_loop_alt): Likewise.
22866 (try_transform_to_exit_first_loop_alt): Likewise.
22867 (transform_to_exit_first_loop): Likewise.
22868 (create_parallel_loop): Likewise.
22869 * tree-scalar-evolution.cc (get_loop_exit_condition): Likewise.
22870 * tree-ssa-dce.cc (mark_last_stmt_necessary): Likewise.
22871 (eliminate_unnecessary_stmts): Likewise.
22872 * tree-ssa-dom.cc
22873 (dom_opt_dom_walker::set_global_ranges_from_unreachable_edges):
22874 Likewise.
22875 * tree-ssa-ifcombine.cc (ifcombine_ifandif): Likewise.
22876 (pass_tree_ifcombine::execute): Likewise.
22877 * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Likewise.
22878 (should_duplicate_loop_header_p): Likewise.
22879 * tree-ssa-loop-ivcanon.cc (create_canonical_iv): Likewise.
22880 (tree_estimate_loop_size): Likewise.
22881 (try_unroll_loop_completely): Likewise.
22882 * tree-ssa-loop-ivopts.cc (tree_ssa_iv_optimize_loop): Likewise.
22883 * tree-ssa-loop-manip.cc (ip_normal_pos): Likewise.
22884 (canonicalize_loop_ivs): Likewise.
22885 * tree-ssa-loop-niter.cc (determine_value_range): Likewise.
22886 (bound_difference): Likewise.
22887 (number_of_iterations_popcount): Likewise.
22888 (number_of_iterations_cltz): Likewise.
22889 (number_of_iterations_cltz_complement): Likewise.
22890 (simplify_using_initial_conditions): Likewise.
22891 (number_of_iterations_exit_assumptions): Likewise.
22892 (loop_niter_by_eval): Likewise.
22893 (estimate_numbers_of_iterations): Likewise.
22894
22895 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22896
22897 * config/riscv/vector.md: Refine vmadc/vmsbc RA constraint.
22898
22899 2023-04-26 Kewen Lin <linkw@linux.ibm.com>
22900
22901 PR target/108758
22902 * config/rs6000/rs6000-builtins.def
22903 (__builtin_vsx_scalar_cmp_exp_qp_eq, __builtin_vsx_scalar_cmp_exp_qp_gt
22904 __builtin_vsx_scalar_cmp_exp_qp_lt,
22905 __builtin_vsx_scalar_cmp_exp_qp_unordered): Move from stanza ieee128-hw
22906 to power9-vector.
22907
22908 2023-04-26 Kewen Lin <linkw@linux.ibm.com>
22909
22910 PR target/109069
22911 * config/rs6000/altivec.md (sldoi_to_mov<mode>): Replace predicate
22912 easy_vector_constant with const_vector_each_byte_same, add
22913 handlings in preparation for !easy_vector_constant, and update
22914 VECTOR_UNIT_ALTIVEC_OR_VSX_P with VECTOR_MEM_ALTIVEC_OR_VSX_P.
22915 * config/rs6000/predicates.md (const_vector_each_byte_same): New
22916 predicate.
22917
22918 2023-04-26 Juzhe-Zhong <juzhe.zhong@rivai.ai>
22919
22920 * config/riscv/vector.md (*pred_cmp<mode>_merge_tie_mask): New pattern.
22921 (*pred_ltge<mode>_merge_tie_mask): Ditto.
22922 (*pred_cmp<mode>_scalar_merge_tie_mask): Ditto.
22923 (*pred_eqne<mode>_scalar_merge_tie_mask): Ditto.
22924 (*pred_cmp<mode>_extended_scalar_merge_tie_mask): Ditto.
22925 (*pred_eqne<mode>_extended_scalar_merge_tie_mask): Ditto.
22926 (*pred_cmp<mode>_narrow_merge_tie_mask): Ditto.
22927
22928 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22929
22930 * config/riscv/vector.md: Fix redundant vmv1r.v.
22931
22932 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22933
22934 * config/riscv/vector.md: Fix RA constraint.
22935
22936 2023-04-26 Pan Li <pan2.li@intel.com>
22937
22938 PR target/109272
22939 * tree-ssa-sccvn.cc (vn_reference_eq): add type vector subparts
22940 check for vn_reference equal.
22941
22942 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22943
22944 * config/riscv/riscv-opts.h (enum riscv_autovec_preference_enum): Add enum for
22945 auto-vectorization preference.
22946 (enum riscv_autovec_lmul_enum): Add enum for choosing LMUL of RVV
22947 auto-vectorization.
22948 * config/riscv/riscv.opt: Add compile option for RVV auto-vectorization.
22949
22950 2023-04-26 Jivan Hakobyan <jivanhakobyan9@gmail.com>
22951
22952 * config/riscv/bitmanip.md: Updated predicates of bclri<mode>_nottwobits
22953 and bclridisi_nottwobits patterns.
22954 * config/riscv/predicates.md: (not_uimm_extra_bit_or_nottwobits): Adjust
22955 predicate to avoid splitting arith constants.
22956 (const_nottwobits_not_arith_operand): New predicate.
22957
22958 2023-04-25 Hans-Peter Nilsson <hp@axis.com>
22959
22960 * recog.cc (peep2_attempt, peep2_update_life): Correct
22961 head-comment description of parameter match_len.
22962
22963 2023-04-25 Vineet Gupta <vineetg@rivosinc.com>
22964
22965 * config/riscv/riscv.md: riscv_move_integer() drop in_splitter arg.
22966 riscv_split_symbol() drop in_splitter arg.
22967 * config/riscv/riscv.cc: riscv_move_integer() drop in_splitter arg.
22968 riscv_split_symbol() drop in_splitter arg.
22969 riscv_force_temporary() drop in_splitter arg.
22970 * config/riscv/riscv-protos.h: riscv_move_integer() drop in_splitter arg.
22971 riscv_split_symbol() drop in_splitter arg.
22972
22973 2023-04-25 Eric Botcazou <ebotcazou@adacore.com>
22974
22975 * tree-ssa.cc (insert_debug_temp_for_var_def): Do not create
22976 superfluous debug temporaries for single GIMPLE assignments.
22977
22978 2023-04-25 Richard Biener <rguenther@suse.de>
22979
22980 PR tree-optimization/109609
22981 * attr-fnspec.h (arg_max_access_size_given_by_arg_p):
22982 Clarify semantics.
22983 * tree-ssa-alias.cc (check_fnspec): Correctly interpret
22984 the size given by arg_max_access_size_given_by_arg_p as
22985 maximum, not exact, size.
22986
22987 2023-04-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
22988
22989 PR target/99195
22990 * config/aarch64/aarch64-simd.md (orn<mode>3): Rename to...
22991 (orn<mode>3<vczle><vczbe>): ... This.
22992 (bic<mode>3): Rename to...
22993 (bic<mode>3<vczle><vczbe>): ... This.
22994 (<su><maxmin><mode>3): Rename to...
22995 (<su><maxmin><mode>3<vczle><vczbe>): ... This.
22996
22997 2023-04-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
22998
22999 * config/aarch64/aarch64-simd.md (<su_optab>div<mode>3): New define_expand.
23000 * config/aarch64/iterators.md (VQDIV): New mode iterator.
23001 (vnx2di): New mode attribute.
23002
23003 2023-04-25 Richard Biener <rguenther@suse.de>
23004
23005 PR rtl-optimization/109585
23006 * tree-ssa-alias.cc (aliasing_component_refs_p): Fix typo.
23007
23008 2023-04-25 Jakub Jelinek <jakub@redhat.com>
23009
23010 PR target/109566
23011 * config/rs6000/rs6000.cc (rs6000_is_valid_rotate_dot_mask): For
23012 !TARGET_64BIT, don't return true if UINTVAL (mask) << (63 - nb)
23013 is larger than signed int maximum.
23014
23015 2023-04-25 Martin Liska <mliska@suse.cz>
23016
23017 * doc/gcov.texi: Document the new "calls" field and document
23018 the API bump. Mention also "block_ids" for lines.
23019 * gcov.cc (output_intermediate_json_line): Output info about
23020 calls and extend branches as well.
23021 (generate_results): Bump version to 2.
23022 (output_line_details): Use block ID instead of a non-sensual
23023 index.
23024
23025 2023-04-25 Roger Sayle <roger@nextmovesoftware.com>
23026
23027 * config/stormy16/stormy16.md (zero_extendqihi2): Restore/fix
23028 length attribute for the first (memory operand) alternative.
23029
23030 2023-04-25 Victor Do Nascimento <victor.donascimento@arm.com>
23031
23032 * config/aarch64/aarch64-simd.md(aarch64_simd_stp<mode>): New.
23033 * config/aarch64/constraints.md: Make "Umn" relaxed memory
23034 constraint.
23035 * config/aarch64/iterators.md(ldpstp_vel_sz): New.
23036
23037 2023-04-25 Aldy Hernandez <aldyh@redhat.com>
23038
23039 * value-range.cc (frange::set): Adjust constructor.
23040 * value-range.h (nan_state::nan_state): Replace default
23041 constructor with one taking an argument.
23042
23043 2023-04-25 Aldy Hernandez <aldyh@redhat.com>
23044
23045 * ipa-cp.cc (ipa_range_contains_p): New.
23046 (decide_whether_version_node): Use it.
23047
23048 2023-04-24 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
23049
23050 * tree-ssa-forwprop.cc (is_combined_permutation_identity): Try to
23051 simplify two successive VEC_PERM_EXPRs with same VLA mask,
23052 where mask chooses elements in reverse order.
23053
23054 2023-04-24 Andrew Pinski <apinski@marvell.com>
23055
23056 * tree-ssa-phiopt.cc (match_simplify_replacement): Add new arguments
23057 and support diamond shaped basic block form.
23058 (tree_ssa_phiopt_worker): Update call to match_simplify_replacement
23059
23060 2023-04-24 Andrew Pinski <apinski@marvell.com>
23061
23062 * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
23063 Instead of calling last_and_only_stmt, look for the last statement
23064 manually.
23065
23066 2023-04-24 Andrew Pinski <apinski@marvell.com>
23067
23068 * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
23069 New function.
23070 (match_simplify_replacement): Call
23071 empty_bb_or_one_feeding_into_p instead of doing it inline.
23072
23073 2023-04-24 Andrew Pinski <apinski@marvell.com>
23074
23075 PR tree-optimization/68894
23076 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove the
23077 continue for the do_hoist_loads diamond case.
23078
23079 2023-04-24 Andrew Pinski <apinski@marvell.com>
23080
23081 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Rearrange
23082 code for better code readability.
23083
23084 2023-04-24 Andrew Pinski <apinski@marvell.com>
23085
23086 PR tree-optimization/109604
23087 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Move the
23088 diamond form check from ...
23089 (minmax_replacement): Here.
23090
23091 2023-04-24 Patrick Palka <ppalka@redhat.com>
23092
23093 * tree.cc (strip_array_types): Don't define here.
23094 (is_typedef_decl): Don't define here.
23095 (typedef_variant_p): Don't define here.
23096 * tree.h (strip_array_types): Define here.
23097 (is_typedef_decl): Define here.
23098 (typedef_variant_p): Define here.
23099
23100 2023-04-24 Frederik Harwath <frederik@codesourcery.com>
23101
23102 * doc/generic.texi (OpenMP): Add != to allowed
23103 conditions and state that vars can be unsigned.
23104 * tree.def (OMP_FOR): Likewise.
23105
23106 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
23107
23108 * config/aarch64/aarch64-simd.md (mulv2di3): New expander.
23109
23110 2023-04-24 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
23111
23112 * doc/install.texi: Consistently use Solaris rather than Solaris 2.
23113 Remove explicit Solaris 11 references.
23114 Markup fixes.
23115 (Options specification, --with-gnu-as): as and gas always differ
23116 on Solaris.
23117 Remove /usr/ccs/bin reference.
23118 (Installing GCC: Binaries, Solaris (SPARC, Intel)): Remove.
23119 (i?86-*-solaris2*): Merge assembler, linker recommendations ...
23120 (*-*-solaris2*): ... here.
23121 Update bundled GCC versions.
23122 Don't refer to pre-built binaries.
23123 Remove /bin/sh warning.
23124 Update assembler, linker recommendations.
23125 Document GNAT bootstrap compiler.
23126 (sparc-sun-solaris2*): Remove non-UltraSPARC reference.
23127 (sparc64-*-solaris2*): Move content...
23128 (sparcv9-*-solaris2*): ...here.
23129 Add GDC for 64-bit bootstrap compilers.
23130
23131 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
23132
23133 PR target/109406
23134 * config/aarch64/aarch64-sve.md (<optab><mode>3): Handle TARGET_SVE2 MUL
23135 case.
23136 * config/aarch64/aarch64-sve2.md (*aarch64_mul_unpredicated_<mode>): New
23137 pattern.
23138
23139 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
23140
23141 * config/aarch64/aarch64-simd.md (aarch64_<sur>abal2<mode>): Rename to...
23142 (aarch64_<su>abal2<mode>_insn): ... This. Use RTL codes instead of unspec.
23143 (aarch64_<su>abal2<mode>): New define_expand.
23144 * config/aarch64/aarch64.cc (aarch64_abd_rtx_p): New function.
23145 (aarch64_rtx_costs): Handle ABD rtxes.
23146 * config/aarch64/aarch64.md (UNSPEC_SABAL2, UNSPEC_UABAL2): Delete.
23147 * config/aarch64/iterators.md (ABAL2): Delete.
23148 (sur): Remove handling of UNSPEC_UABAL2 and UNSPEC_SABAL2.
23149
23150 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
23151
23152 * config/aarch64/aarch64-simd.md (aarch64_<sur>abal<mode>): Rename to...
23153 (aarch64_<su>abal<mode>): ... This. Use RTL codes instead of unspec.
23154 (<sur>sadv16qi): Rename to...
23155 (<su>sadv16qi): ... This. Adjust for the above.
23156 * config/aarch64/aarch64-sve.md (<sur>sad<vsi2qi>): Rename to...
23157 (<su>sad<vsi2qi>): ... This. Adjust for the above.
23158 * config/aarch64/aarch64.md (UNSPEC_SABAL, UNSPEC_UABAL): Delete.
23159 * config/aarch64/iterators.md (ABAL): Delete.
23160 (sur): Remove handling of UNSPEC_SABAL and UNSPEC_UABAL.
23161
23162 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
23163
23164 * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl2<mode>): Rename to...
23165 (aarch64_<su>abdl2<mode>_insn): ... This. Use RTL codes instead of unspec.
23166 (aarch64_<su>abdl2<mode>): New define_expand.
23167 * config/aarch64/aarch64.md (UNSPEC_SABDL2, UNSPEC_UABDL2): Delete.
23168 * config/aarch64/iterators.md (ABDL2): Delete.
23169 (sur): Remove handling of UNSPEC_SABDL2 and UNSPEC_UABDL2.
23170
23171 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
23172
23173 * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl<mode>): Rename to...
23174 (aarch64_<su>abdl<mode>): ... This. Use standard RTL ops instead of
23175 unspec.
23176 * config/aarch64/aarch64.md (UNSPEC_SABDL, UNSPEC_UABDL): Delete.
23177 * config/aarch64/iterators.md (ABDL): Delete.
23178 (sur): Remove handling of UNSPEC_SABDL and UNSPEC_UABDL.
23179
23180 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
23181
23182 * config/aarch64/aarch64-simd.md
23183 (*aarch64_<su>addlv<VDQV_L:mode>_ze<GPI:mode>): New pattern.
23184
23185 2023-04-24 Richard Biener <rguenther@suse.de>
23186
23187 * gimple-ssa-split-paths.cc (is_feasible_trace): Avoid
23188 last_stmt.
23189 * graphite-scop-detection.cc (single_pred_cond_non_loop_exit):
23190 Likewise.
23191 * ipa-fnsummary.cc (set_cond_stmt_execution_predicate): Likewise.
23192 (set_switch_stmt_execution_predicate): Likewise.
23193 (phi_result_unknown_predicate): Likewise.
23194 * ipa-prop.cc (compute_complex_ancestor_jump_func): Likewise.
23195 (ipa_analyze_indirect_call_uses): Likewise.
23196 * predict.cc (predict_iv_comparison): Likewise.
23197 (predict_extra_loop_exits): Likewise.
23198 (predict_loops): Likewise.
23199 (tree_predict_by_opcode): Likewise.
23200 * gimple-predicate-analysis.cc (predicate::init_from_control_deps):
23201 Likewise.
23202 * gimple-pretty-print.cc (dump_implicit_edges): Likewise.
23203 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Likewise.
23204 (replace_phi_edge_with_variable): Likewise.
23205 (two_value_replacement): Likewise.
23206 (value_replacement): Likewise.
23207 (minmax_replacement): Likewise.
23208 (spaceship_replacement): Likewise.
23209 (cond_removal_in_builtin_zero_pattern): Likewise.
23210 * tree-ssa-reassoc.cc (maybe_optimize_range_tests): Likewise.
23211 * tree-ssa-sccvn.cc (vn_phi_eq): Likewise.
23212 (vn_phi_lookup): Likewise.
23213 (vn_phi_insert): Likewise.
23214 * tree-ssa-structalias.cc (compute_points_to_sets): Likewise.
23215 * tree-ssa-threadbackward.cc (back_threader::maybe_thread_block):
23216 Likewise.
23217 (back_threader_profitability::possibly_profitable_path_p):
23218 Likewise.
23219 * tree-ssa-threadedge.cc (jump_threader::thread_outgoing_edges):
23220 Likewise.
23221 * tree-switch-conversion.cc (pass_convert_switch::execute):
23222 Likewise.
23223 (pass_lower_switch<O0>::execute): Likewise.
23224 * tree-tailcall.cc (tree_optimize_tail_calls_1): Likewise.
23225 * tree-vect-loop-manip.cc (vect_loop_versioning): Likewise.
23226 * tree-vect-slp.cc (vect_slp_function): Likewise.
23227 * tree-vect-stmts.cc (cfun_returns): Likewise.
23228 * tree-vectorizer.cc (vect_loop_vectorized_call): Likewise.
23229 (vect_loop_dist_alias_call): Likewise.
23230
23231 2023-04-24 Richard Biener <rguenther@suse.de>
23232
23233 * cfgcleanup.cc (outgoing_edges_match): Use FORWARDER_BLOCK_P.
23234
23235 2023-04-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
23236
23237 * config/riscv/riscv-vsetvl.cc
23238 (vector_infos_manager::all_avail_in_compatible_p): New function.
23239 (pass_vsetvl::refine_vsetvls): Optimize vsetvls.
23240 * config/riscv/riscv-vsetvl.h: New function.
23241
23242 2023-04-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
23243
23244 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::pre_vsetvl): Add function
23245 comment for cleanup_insns.
23246
23247 2023-04-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
23248
23249 * config/riscv/vector-iterators.md: New unspec to refine fault first load pattern.
23250 * config/riscv/vector.md: Refine fault first load pattern to erase avl from instructions
23251 with the fault first load property.
23252
23253 2023-04-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
23254
23255 * config/aarch64/aarch64-simd.md (aarch64_float_truncate_lo_): Rename to...
23256 (aarch64_float_truncate_lo_<mode><vczle><vczbe>): ... This.
23257
23258 2023-04-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
23259
23260 PR target/99195
23261 * config/aarch64/aarch64-simd.md (aarch64_addp<mode>): Rename to...
23262 (aarch64_addp<mode><vczle><vczbe>): ... This.
23263
23264 2023-04-23 Roger Sayle <roger@nextmovesoftware.com>
23265
23266 * config/stormy16/stormy16.cc (xstormy16_rtx_costs): Rewrite to
23267 provide reasonable values for common arithmetic operations and
23268 immediate operands (in several machine modes).
23269
23270 2023-04-23 Roger Sayle <roger@nextmovesoftware.com>
23271
23272 * config/stormy16/stormy16.cc (xstormy16_print_operand): Add %h
23273 format specifier to output high_part register name of SImode reg.
23274 * config/stormy16/stormy16.md (extendhisi2): New define_insn.
23275 (zero_extendqihi2): Fix lengths, consistent formatting and add
23276 "and Rx,#255" alternative, for documentation purposes.
23277 (zero_extendhisi2): New define_insn.
23278
23279 2023-04-23 Roger Sayle <roger@nextmovesoftware.com>
23280
23281 * config/stormy16/stormy16.cc (xstormy16_output_shift): Implement
23282 SImode shifts by two by performing a single bit SImode shift twice.
23283
23284 2023-04-23 Aldy Hernandez <aldyh@redhat.com>
23285
23286 PR tree-optimization/109593
23287 * value-range.cc (frange::operator==): Handle NANs.
23288
23289 2023-04-23 liuhongt <hongtao.liu@intel.com>
23290
23291 PR rtl-optimization/108707
23292 * ira-costs.cc (scan_one_insn): Use NO_REGS instead of
23293 GENERAL_REGS when preferred reg_class is not known.
23294
23295 2023-04-22 Andrew Pinski <apinski@marvell.com>
23296
23297 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker):
23298 Change the code around slightly to move diamond
23299 handling for do_store_elim/do_hoist_loads out of
23300 the big if/else.
23301
23302 2023-04-22 Andrew Pinski <apinski@marvell.com>
23303
23304 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker):
23305 Remove check on empty_block_p.
23306
23307 2023-04-22 Jakub Jelinek <jakub@redhat.com>
23308
23309 PR bootstrap/109589
23310 * system.h (class auto_mpz): Workaround PR62101 bug in GCC 4.8 and 4.9.
23311 * realmpfr.h (class auto_mpfr): Likewise.
23312
23313 2023-04-22 Jakub Jelinek <jakub@redhat.com>
23314
23315 PR tree-optimization/109583
23316 * match.pd (fneg/fadd simplify): Don't call related_vector_mode
23317 if vec_mode is not VECTOR_MODE_P.
23318
23319 2023-04-22 Jan Hubicka <hubicka@ucw.cz>
23320 Ondrej Kubanek <kubanek0ondrej@gmail.com>
23321
23322 * cfgloopmanip.h (adjust_loop_info_after_peeling): Declare.
23323 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Fix updating of
23324 loop profile and bounds after header duplication.
23325 * tree-ssa-loop-ivcanon.cc (adjust_loop_info_after_peeling):
23326 Break out from try_peel_loop; fix handling of 0 iterations.
23327 (try_peel_loop): Use adjust_loop_info_after_peeling.
23328
23329 2023-04-21 Andrew MacLeod <amacleod@redhat.com>
23330
23331 PR tree-optimization/109546
23332 * tree-vrp.cc (remove_unreachable::remove_and_update_globals): Do
23333 not fold conditions with ADDR_EXPR early.
23334
23335 2023-04-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
23336
23337 * config/aarch64/aarch64.md (aarch64_umax<mode>3_insn): Delete.
23338 (umax<mode>3): Emit raw UMAX RTL instead of going through gen_ function
23339 for umax.
23340 (<optab><mode>3): New define_expand for MAXMIN_NOUMAX codes.
23341 (*aarch64_<optab><mode>3_zero): Define.
23342 (*aarch64_<optab><mode>3_cssc): Likewise.
23343 * config/aarch64/iterators.md (maxminand): New code attribute.
23344
23345 2023-04-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
23346
23347 PR target/108779
23348 * config/aarch64/aarch64-opts.h (enum aarch64_tp_reg): Define.
23349 * config/aarch64/aarch64-protos.h (aarch64_output_load_tp):
23350 Define prototype.
23351 * config/aarch64/aarch64.cc (aarch64_tpidr_register): Declare.
23352 (aarch64_override_options_internal): Handle the above.
23353 (aarch64_output_load_tp): New function.
23354 * config/aarch64/aarch64.md (aarch64_load_tp_hard): Call
23355 aarch64_output_load_tp.
23356 * config/aarch64/aarch64.opt (aarch64_tp_reg): Define enum.
23357 (mtp=): New option.
23358 * doc/invoke.texi (AArch64 Options): Document -mtp=.
23359
23360 2023-04-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
23361
23362 PR target/99195
23363 * config/aarch64/aarch64-simd.md (add_vec_concat_subst_le): Define.
23364 (add_vec_concat_subst_be): Likewise.
23365 (vczle): Likewise.
23366 (vczbe): Likewise.
23367 (add<mode>3): Rename to...
23368 (add<mode>3<vczle><vczbe>): ... This.
23369 (sub<mode>3): Rename to...
23370 (sub<mode>3<vczle><vczbe>): ... This.
23371 (mul<mode>3): Rename to...
23372 (mul<mode>3<vczle><vczbe>): ... This.
23373 (and<mode>3): Rename to...
23374 (and<mode>3<vczle><vczbe>): ... This.
23375 (ior<mode>3): Rename to...
23376 (ior<mode>3<vczle><vczbe>): ... This.
23377 (xor<mode>3): Rename to...
23378 (xor<mode>3<vczle><vczbe>): ... This.
23379 * config/aarch64/iterators.md (VDZ): Define.
23380
23381 2023-04-21 Patrick Palka <ppalka@redhat.com>
23382
23383 * tree.cc (walk_tree_1): Avoid repeatedly dereferencing tp
23384 and type_p.
23385
23386 2023-04-21 Jan Hubicka <jh@suse.cz>
23387
23388 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Fix previous
23389 commit.
23390
23391 2023-04-21 Vineet Gupta <vineetg@rivosinc.com>
23392
23393 * expmed.h (x_shift*_cost): convert to int [speed][mode][shift].
23394 (shift*_cost_ptr ()): Access x_shift*_cost array directly.
23395
23396 2023-04-21 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
23397
23398 * config/aarch64/aarch64.cc (aarch64_simd_dup_constant): Use
23399 force_reg instead of copy_to_mode_reg.
23400 (aarch64_expand_vector_init): Likewise.
23401
23402 2023-04-21 Uroš Bizjak <ubizjak@gmail.com>
23403
23404 * config/i386/i386.h (REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Remove.
23405 (REG_OK_FOR_INDEX_NONSTRICT_P, REG_OK_FOR_BASE_NONSTRICT_P): Ditto.
23406 (REG_OK_FOR_INDEX_STRICT_P, REG_OK_FOR_BASE_STRICT_P): Ditto.
23407 (FIRST_INDEX_REG, LAST_INDEX_REG): New defines.
23408 (LEGACY_INDEX_REG_P, LEGACY_INDEX_REGNO_P): New macros.
23409 (INDEX_REG_P, INDEX_REGNO_P): Ditto.
23410 (REGNO_OK_FOR_INDEX_P): Use INDEX_REGNO_P predicates.
23411 (REGNO_OK_FOR_INDEX_NONSTRICT_P): New macro.
23412 (EG_OK_FOR_BASE_NONSTRICT_P): Ditto.
23413 * config/i386/predicates.md (index_register_operand):
23414 Use REGNO_OK_FOR_INDEX_P and REGNO_OK_FOR_INDEX_NONSTRICT_P macros.
23415 * config/i386/i386.cc (ix86_legitimate_address_p): Use
23416 REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_BASE_NONSTRICT_P,
23417 REGNO_OK_FOR_INDEX_P and REGNO_OK_FOR_INDEX_NONSTRICT_P macros.
23418
23419 2023-04-21 Jan Hubicka <hubicka@ucw.cz>
23420 Ondrej Kubanek <kubanek0ondrej@gmail.com>
23421
23422 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Update loop header and
23423 latch.
23424
23425 2023-04-21 Richard Biener <rguenther@suse.de>
23426
23427 * is-a.h (safe_is_a): New.
23428
23429 2023-04-21 Richard Biener <rguenther@suse.de>
23430
23431 * gimple-iterator.h (gimple_stmt_iterator::operator*): Add.
23432 (gphi_iterator::operator*): Likewise.
23433
23434 2023-04-21 Jan Hubicka <hubicka@ucw.cz>
23435 Michal Jires <michal@jires.eu>
23436
23437 * ipa-inline.cc (class inline_badness): New class.
23438 (edge_heap_t, edge_heap_node_t): Use inline_badness for badness instead
23439 of sreal.
23440 (update_edge_key): Update.
23441 (lookup_recursive_calls): Likewise.
23442 (recursive_inlining): Likewise.
23443 (add_new_edges_to_heap): Likewise.
23444 (inline_small_functions): Likewise.
23445
23446 2023-04-21 Jan Hubicka <hubicka@ucw.cz>
23447
23448 * ipa-devirt.cc (odr_types_equivalent_p): Cleanup warned checks.
23449
23450 2023-04-21 Richard Biener <rguenther@suse.de>
23451
23452 PR tree-optimization/109573
23453 * tree-vect-loop.cc (vectorizable_live_operation): Allow
23454 unhandled SSA copy as well. Demote assert to checking only.
23455
23456 2023-04-21 Richard Biener <rguenther@suse.de>
23457
23458 * df-core.cc (df_analyze): Compute RPO on the reverse graph
23459 for DF_BACKWARD problems.
23460 (loop_post_order_compute): Rename to ...
23461 (loop_rev_post_order_compute): ... this, compute a RPO.
23462 (loop_inverted_post_order_compute): Rename to ...
23463 (loop_inverted_rev_post_order_compute): ... this, compute a RPO.
23464 (df_analyze_loop): Use RPO on the forward graph for DF_FORWARD
23465 problems, RPO on the inverted graph for DF_BACKWARD.
23466
23467 2023-04-21 Richard Biener <rguenther@suse.de>
23468
23469 * cfganal.h (inverted_rev_post_order_compute): Rename
23470 from ...
23471 (inverted_post_order_compute): ... this. Add struct function
23472 argument, change allocation to a C array.
23473 * cfganal.cc (inverted_rev_post_order_compute): Likewise.
23474 * lcm.cc (compute_antinout_edge): Adjust.
23475 * lra-lives.cc (lra_create_live_ranges_1): Likewise.
23476 * tree-ssa-dce.cc (remove_dead_stmt): Likewise.
23477 * tree-ssa-pre.cc (compute_antic): Likewise.
23478
23479 2023-04-21 Richard Biener <rguenther@suse.de>
23480
23481 * df.h (df_d::postorder_inverted): Change back to int *,
23482 clarify comments.
23483 * df-core.cc (rest_of_handle_df_finish): Adjust.
23484 (df_analyze_1): Likewise.
23485 (df_analyze): For DF_FORWARD problems use RPO on the forward
23486 graph. Adjust.
23487 (loop_inverted_post_order_compute): Adjust API.
23488 (df_analyze_loop): Adjust.
23489 (df_get_n_blocks): Likewise.
23490 (df_get_postorder): Likewise.
23491
23492 2023-04-21 Juzhe-Zhong <juzhe.zhong@rivai.ai>
23493
23494 PR target/108270
23495 * config/riscv/riscv-vsetvl.cc
23496 (vector_infos_manager::all_empty_predecessor_p): New function.
23497 (pass_vsetvl::backward_demand_fusion): Ditto.
23498 * config/riscv/riscv-vsetvl.h: Ditto.
23499
23500 2023-04-21 Robin Dapp <rdapp@ventanamicro.com>
23501
23502 PR target/109582
23503 * config/riscv/generic.md: Change standard names to insn names.
23504
23505 2023-04-21 Richard Biener <rguenther@suse.de>
23506
23507 * lcm.cc (compute_antinout_edge): Use RPO on the inverted graph.
23508 (compute_laterin): Use RPO.
23509 (compute_available): Likewise.
23510
23511 2023-04-21 Peng Fan <fanpeng@loongson.cn>
23512
23513 * config/loongarch/gnu-user.h (MUSL_DYNAMIC_LINKER): Redefine.
23514
23515 2023-04-21 Juzhe-Zhong <juzhe.zhong@rivai.ai>
23516
23517 PR target/109547
23518 * config/riscv/riscv-vsetvl.cc (local_eliminate_vsetvl_insn): New function.
23519 (vector_insn_info::skip_avl_compatible_p): Ditto.
23520 (vector_insn_info::merge): Remove default value.
23521 (pass_vsetvl::compute_local_backward_infos): Ditto.
23522 (pass_vsetvl::cleanup_insns): Add local vsetvl elimination.
23523 * config/riscv/riscv-vsetvl.h: Ditto.
23524
23525 2023-04-20 Alejandro Colomar <alx.manpages@gmail.com>
23526
23527 * doc/extend.texi (Common Function Attributes): Remove duplicate
23528 word.
23529
23530 2023-04-20 Andrew MacLeod <amacleod@redhat.com>
23531
23532 PR tree-optimization/109564
23533 * gimple-range-fold.cc (fold_using_range::range_of_phi): Do no ignore
23534 UNDEFINED range names when deciding if all PHI arguments are the same,
23535
23536 2023-04-20 Jakub Jelinek <jakub@redhat.com>
23537
23538 PR tree-optimization/109011
23539 * tree-vect-patterns.cc (vect_recog_ctz_ffs_pattern): Use
23540 .CTZ (X) = .POPCOUNT ((X - 1) & ~X) in preference to
23541 .CTZ (X) = PREC - .POPCOUNT (X | -X).
23542
23543 2023-04-20 Vladimir N. Makarov <vmakarov@redhat.com>
23544
23545 * lra-constraints.cc (match_reload): Exclude some hard regs for
23546 multi-reg inout reload pseudos used in asm in different mode.
23547
23548 2023-04-20 Uros Bizjak <ubizjak@gmail.com>
23549
23550 * config/arm/arm.cc (thumb1_legitimate_address_p):
23551 Use VIRTUAL_REGISTER_P predicate.
23552 (arm_eliminable_register): Ditto.
23553 * config/avr/avr.md (push<mode>_1): Ditto.
23554 * config/bfin/predicates.md (register_no_elim_operand): Ditto.
23555 * config/h8300/predicates.md (register_no_sp_elim_operand): Ditto.
23556 * config/i386/predicates.md (register_no_elim_operand): Ditto.
23557 * config/iq2000/predicates.md (call_insn_operand): Ditto.
23558 * config/microblaze/microblaze.h (CALL_INSN_OP): Ditto.
23559
23560 2023-04-20 Uros Bizjak <ubizjak@gmail.com>
23561
23562 PR target/78952
23563 * config/i386/predicates.md (extract_operator): New predicate.
23564 * config/i386/i386.md (any_extract): Remove code iterator.
23565 (*cmpqi_ext<mode>_1_mem_rex64): Use extract_operator predicate.
23566 (*cmpqi_ext<mode>_1): Ditto.
23567 (*cmpqi_ext<mode>_2): Ditto.
23568 (*cmpqi_ext<mode>_3_mem_rex64): Ditto.
23569 (*cmpqi_ext<mode>_3): Ditto.
23570 (*cmpqi_ext<mode>_4): Ditto.
23571 (*extzvqi_mem_rex64): Ditto.
23572 (*extzvqi): Ditto.
23573 (*insvqi_2): Ditto.
23574 (*extendqi<SWI24:mode>_ext_1): Ditto.
23575 (*addqi_ext<mode>_0): Ditto.
23576 (*addqi_ext<mode>_1): Ditto.
23577 (*addqi_ext<mode>_2): Ditto.
23578 (*subqi_ext<mode>_0): Ditto.
23579 (*subqi_ext<mode>_2): Ditto.
23580 (*testqi_ext<mode>_1): Ditto.
23581 (*testqi_ext<mode>_2): Ditto.
23582 (*andqi_ext<mode>_0): Ditto.
23583 (*andqi_ext<mode>_1): Ditto.
23584 (*andqi_ext<mode>_1_cc): Ditto.
23585 (*andqi_ext<mode>_2): Ditto.
23586 (*<any_or:code>qi_ext<mode>_0): Ditto.
23587 (*<any_or:code>qi_ext<mode>_1): Ditto.
23588 (*<any_or:code>qi_ext<mode>_2): Ditto.
23589 (*xorqi_ext<mode>_1_cc): Ditto.
23590 (*negqi_ext<mode>_2): Ditto.
23591 (*ashlqi_ext<mode>_2): Ditto.
23592 (*<any_shiftrt:insn>qi_ext<mode>_2): Ditto.
23593
23594 2023-04-20 Raphael Zinsly <rzinsly@ventanamicro.com>
23595
23596 PR target/108248
23597 * config/riscv/bitmanip.md (clz, ctz, pcnt, min, max patterns): Use
23598 <bitmanip_insn> as the type to allow for fine grained control of
23599 scheduling these insns.
23600 * config/riscv/generic.md (generic_alu): Add bitmanip, clz, ctz, pcnt,
23601 min, max.
23602 * config/riscv/riscv.md (type attribute): Add types for clz, ctz,
23603 pcnt, signed and unsigned min/max.
23604
23605 2023-04-20 Juzhe-Zhong <juzhe.zhong@rivai.ai>
23606 kito-cheng <kito.cheng@sifive.com>
23607
23608 * config/riscv/riscv.h (enum reg_class): Fix RVV register order.
23609
23610 2023-04-20 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
23611 kito-cheng <kito.cheng@sifive.com>
23612
23613 PR target/109535
23614 * config/riscv/riscv-vsetvl.cc (count_regno_occurrences): New function.
23615 (pass_vsetvl::cleanup_insns): Fix bug.
23616
23617 2023-04-20 Andrew Stubbs <ams@codesourcery.com>
23618
23619 * config/gcn/gcn-valu.md (vnsi, VnSI): Add scalar modes.
23620 (ldexp<mode>3): Delete.
23621 (ldexp<mode>3<exec>): Change "B" to "A".
23622
23623 2023-04-20 Jakub Jelinek <jakub@redhat.com>
23624 Jonathan Wakely <jwakely@redhat.com>
23625
23626 * tree.h (built_in_function_equal_p): New helper function.
23627 (fndecl_built_in_p): Turn into variadic template to support
23628 1 or more built_in_function arguments.
23629 * builtins.cc (fold_builtin_expect): Use 3 argument fndecl_built_in_p.
23630 * gimplify.cc (goa_stabilize_expr): Likewise.
23631 * cgraphclones.cc (cgraph_node::create_clone): Likewise.
23632 * ipa-fnsummary.cc (compute_fn_summary): Likewise.
23633 * omp-low.cc (setjmp_or_longjmp_p): Likewise.
23634 * cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee,
23635 cgraph_update_edges_for_call_stmt_node,
23636 cgraph_edge::verify_corresponds_to_fndecl,
23637 cgraph_node::verify_node): Likewise.
23638 * tree-stdarg.cc (optimize_va_list_gpr_fpr_size): Likewise.
23639 * gimple-ssa-warn-access.cc (matching_alloc_calls_p): Likewise.
23640 * ipa-prop.cc (try_make_edge_direct_virtual_call): Likewise.
23641
23642 2023-04-20 Jakub Jelinek <jakub@redhat.com>
23643
23644 PR tree-optimization/109011
23645 * tree-vect-patterns.cc (vect_recog_ctz_ffs_pattern): New function.
23646 (vect_recog_popcount_clz_ctz_ffs_pattern): Move vect_pattern_detected
23647 call later. Don't punt for IFN_CTZ or IFN_FFS if it doesn't have
23648 direct optab support, but has instead IFN_CLZ, IFN_POPCOUNT or
23649 for IFN_FFS IFN_CTZ support, use vect_recog_ctz_ffs_pattern for that
23650 case.
23651 (vect_vect_recog_func_ptrs): Add ctz_ffs entry.
23652
23653 2023-04-20 Richard Biener <rguenther@suse.de>
23654
23655 * df-core.cc (rest_of_handle_df_initialize): Remove
23656 computation of df->postorder, df->postorder_inverted and
23657 df->n_blocks.
23658
23659 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
23660
23661 * common/config/i386/i386-common.cc
23662 (OPTION_MASK_ISA2_AVX_UNSET): Add OPTION_MASK_ISA2_VAES_UNSET.
23663 (ix86_handle_option): Set AVX flag for VAES.
23664 * config/i386/i386-builtins.cc (ix86_init_mmx_sse_builtins):
23665 Add OPTION_MASK_ISA2_VAES_UNSET.
23666 (def_builtin): Share builtin between AES and VAES.
23667 * config/i386/i386-expand.cc (ix86_check_builtin_isa_match):
23668 Ditto.
23669 * config/i386/i386.md (aes): New isa attribute.
23670 * config/i386/sse.md (aesenc): Add pattern for VAES with xmm.
23671 (aesenclast): Ditto.
23672 (aesdec): Ditto.
23673 (aesdeclast): Ditto.
23674 * config/i386/vaesintrin.h: Remove redundant avx target push.
23675 * config/i386/wmmintrin.h (_mm_aesdec_si128): Change to macro.
23676 (_mm_aesdeclast_si128): Ditto.
23677 (_mm_aesenc_si128): Ditto.
23678 (_mm_aesenclast_si128): Ditto.
23679
23680 2023-04-20 Hu, Lin1 <lin1.hu@intel.com>
23681
23682 * config/i386/avx2intrin.h
23683 (_MM_REDUCE_OPERATOR_BASIC_EPI16): New macro.
23684 (_MM_REDUCE_OPERATOR_MAX_MIN_EP16): Ditto.
23685 (_MM256_REDUCE_OPERATOR_BASIC_EPI16): Ditto.
23686 (_MM256_REDUCE_OPERATOR_MAX_MIN_EP16): Ditto.
23687 (_MM_REDUCE_OPERATOR_BASIC_EPI8): Ditto.
23688 (_MM_REDUCE_OPERATOR_MAX_MIN_EP8): Ditto.
23689 (_MM256_REDUCE_OPERATOR_BASIC_EPI8): Ditto.
23690 (_MM256_REDUCE_OPERATOR_MAX_MIN_EP8): Ditto.
23691 (_mm_reduce_add_epi16): New instrinsics.
23692 (_mm_reduce_mul_epi16): Ditto.
23693 (_mm_reduce_and_epi16): Ditto.
23694 (_mm_reduce_or_epi16): Ditto.
23695 (_mm_reduce_max_epi16): Ditto.
23696 (_mm_reduce_max_epu16): Ditto.
23697 (_mm_reduce_min_epi16): Ditto.
23698 (_mm_reduce_min_epu16): Ditto.
23699 (_mm256_reduce_add_epi16): Ditto.
23700 (_mm256_reduce_mul_epi16): Ditto.
23701 (_mm256_reduce_and_epi16): Ditto.
23702 (_mm256_reduce_or_epi16): Ditto.
23703 (_mm256_reduce_max_epi16): Ditto.
23704 (_mm256_reduce_max_epu16): Ditto.
23705 (_mm256_reduce_min_epi16): Ditto.
23706 (_mm256_reduce_min_epu16): Ditto.
23707 (_mm_reduce_add_epi8): Ditto.
23708 (_mm_reduce_mul_epi8): Ditto.
23709 (_mm_reduce_and_epi8): Ditto.
23710 (_mm_reduce_or_epi8): Ditto.
23711 (_mm_reduce_max_epi8): Ditto.
23712 (_mm_reduce_max_epu8): Ditto.
23713 (_mm_reduce_min_epi8): Ditto.
23714 (_mm_reduce_min_epu8): Ditto.
23715 (_mm256_reduce_add_epi8): Ditto.
23716 (_mm256_reduce_mul_epi8): Ditto.
23717 (_mm256_reduce_and_epi8): Ditto.
23718 (_mm256_reduce_or_epi8): Ditto.
23719 (_mm256_reduce_max_epi8): Ditto.
23720 (_mm256_reduce_max_epu8): Ditto.
23721 (_mm256_reduce_min_epi8): Ditto.
23722 (_mm256_reduce_min_epu8): Ditto.
23723 * config/i386/avx512vlbwintrin.h:
23724 (_mm_mask_reduce_add_epi16): Ditto.
23725 (_mm_mask_reduce_mul_epi16): Ditto.
23726 (_mm_mask_reduce_and_epi16): Ditto.
23727 (_mm_mask_reduce_or_epi16): Ditto.
23728 (_mm_mask_reduce_max_epi16): Ditto.
23729 (_mm_mask_reduce_max_epu16): Ditto.
23730 (_mm_mask_reduce_min_epi16): Ditto.
23731 (_mm_mask_reduce_min_epu16): Ditto.
23732 (_mm256_mask_reduce_add_epi16): Ditto.
23733 (_mm256_mask_reduce_mul_epi16): Ditto.
23734 (_mm256_mask_reduce_and_epi16): Ditto.
23735 (_mm256_mask_reduce_or_epi16): Ditto.
23736 (_mm256_mask_reduce_max_epi16): Ditto.
23737 (_mm256_mask_reduce_max_epu16): Ditto.
23738 (_mm256_mask_reduce_min_epi16): Ditto.
23739 (_mm256_mask_reduce_min_epu16): Ditto.
23740 (_mm_mask_reduce_add_epi8): Ditto.
23741 (_mm_mask_reduce_mul_epi8): Ditto.
23742 (_mm_mask_reduce_and_epi8): Ditto.
23743 (_mm_mask_reduce_or_epi8): Ditto.
23744 (_mm_mask_reduce_max_epi8): Ditto.
23745 (_mm_mask_reduce_max_epu8): Ditto.
23746 (_mm_mask_reduce_min_epi8): Ditto.
23747 (_mm_mask_reduce_min_epu8): Ditto.
23748 (_mm256_mask_reduce_add_epi8): Ditto.
23749 (_mm256_mask_reduce_mul_epi8): Ditto.
23750 (_mm256_mask_reduce_and_epi8): Ditto.
23751 (_mm256_mask_reduce_or_epi8): Ditto.
23752 (_mm256_mask_reduce_max_epi8): Ditto.
23753 (_mm256_mask_reduce_max_epu8): Ditto.
23754 (_mm256_mask_reduce_min_epi8): Ditto.
23755 (_mm256_mask_reduce_min_epu8): Ditto.
23756
23757 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
23758
23759 * common/config/i386/i386-common.cc
23760 (OPTION_MASK_ISA_VPCLMULQDQ_SET):
23761 Add OPTION_MASK_ISA_PCLMUL_SET and OPTION_MASK_ISA_AVX_SET.
23762 (OPTION_MASK_ISA_AVX_UNSET):
23763 Add OPTION_MASK_ISA_VPCLMULQDQ_UNSET.
23764 (OPTION_MASK_ISA_PCLMUL_UNSET): Ditto.
23765 * config/i386/i386.md (vpclmulqdqvl): New.
23766 * config/i386/sse.md (pclmulqdq): Add evex encoding.
23767 * config/i386/vpclmulqdqintrin.h: Remove redudant avx target
23768 push.
23769
23770 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
23771
23772 * config/i386/avx512vlbwintrin.h
23773 (_mm_mask_blend_epi16): Remove __OPTIMIZE__ wrapper.
23774 (_mm_mask_blend_epi8): Ditto.
23775 (_mm256_mask_blend_epi16): Ditto.
23776 (_mm256_mask_blend_epi8): Ditto.
23777 * config/i386/avx512vlintrin.h
23778 (_mm256_mask_blend_pd): Ditto.
23779 (_mm256_mask_blend_ps): Ditto.
23780 (_mm256_mask_blend_epi64): Ditto.
23781 (_mm256_mask_blend_epi32): Ditto.
23782 (_mm_mask_blend_pd): Ditto.
23783 (_mm_mask_blend_ps): Ditto.
23784 (_mm_mask_blend_epi64): Ditto.
23785 (_mm_mask_blend_epi32): Ditto.
23786 * config/i386/sse.md (VF_AVX512BWHFBF16): Removed.
23787 (VF_AVX512HFBFVL): Move it before the first usage.
23788 (<avx512>_blendm<mode>): Change iterator from VF_AVX512BWHFBF16
23789 to VF_AVX512HFBFVL.
23790
23791 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
23792
23793 * common/config/i386/i386-common.cc
23794 (OPTION_MASK_ISA_AVX512VBMI2_SET): Change OPTION_MASK_ISA_AVX512F_SET
23795 to OPTION_MASK_ISA_AVX512BW_SET.
23796 (OPTION_MASK_ISA_AVX512F_UNSET):
23797 Remove OPTION_MASK_ISA_AVX512VBMI2_UNSET.
23798 (OPTION_MASK_ISA_AVX512BW_UNSET):
23799 Add OPTION_MASK_ISA_AVX512VBMI2_UNSET.
23800 * config/i386/avx512vbmi2intrin.h: Do not push avx512bw.
23801 * config/i386/avx512vbmi2vlintrin.h: Ditto.
23802 * config/i386/i386-builtin.def: Remove OPTION_MASK_ISA_AVX512BW.
23803 * config/i386/sse.md (VI12_AVX512VLBW): Removed.
23804 (VI12_VI48F_AVX512VLBW): Rename to VI12_VI48F_AVX512VL.
23805 (compress<mode>_mask): Change iterator from VI12_AVX512VLBW to
23806 VI12_AVX512VL.
23807 (compressstore<mode>_mask): Ditto.
23808 (expand<mode>_mask): Ditto.
23809 (expand<mode>_maskz): Ditto.
23810 (*expand<mode>_mask): Change iterator from VI12_VI48F_AVX512VLBW to
23811 VI12_VI48F_AVX512VL.
23812
23813 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
23814
23815 * common/config/i386/i386-common.cc
23816 (OPTION_MASK_ISA_AVX512BITALG_SET):
23817 Change OPTION_MASK_ISA_AVX512F_SET
23818 to OPTION_MASK_ISA_AVX512BW_SET.
23819 (OPTION_MASK_ISA_AVX512F_UNSET):
23820 Remove OPTION_MASK_ISA_AVX512BITALG_SET.
23821 (OPTION_MASK_ISA_AVX512BW_UNSET):
23822 Add OPTION_MASK_ISA_AVX512BITALG_SET.
23823 * config/i386/avx512bitalgintrin.h: Do not push avx512bw.
23824 * config/i386/i386-builtin.def:
23825 Remove redundant OPTION_MASK_ISA_AVX512BW.
23826 * config/i386/sse.md (VI1_AVX512VLBW): Removed.
23827 (avx512vl_vpshufbitqmb<mode><mask_scalar_merge_name>):
23828 Change the iterator from VI1_AVX512VLBW to VI1_AVX512VL.
23829
23830 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
23831
23832 * config/i386/i386-expand.cc
23833 (ix86_check_builtin_isa_match): Correct wrong comments.
23834 Add a new macro SHARE_BUILTIN and refactor the current if
23835 clauses to macro.
23836
23837 2023-04-20 Mo, Zewei <zewei.mo@intel.com>
23838
23839 * config/i386/cpuid.h: Open a new section for Extended Features
23840 Leaf (%eax == 7, %ecx == 0) and Extended Features Sub-leaf (%eax == 7,
23841 %ecx == 1).
23842
23843 2023-04-20 Hu, Lin1 <lin1.hu@intel.com>
23844
23845 * config/i386/sse.md: Modify insn vperm{i,f}
23846 and vshuf{i,f}.
23847
23848 2023-04-19 Max Filippov <jcmvbkbc@gmail.com>
23849
23850 * config/xtensa/xtensa-opts.h: New header.
23851 * config/xtensa/xtensa.h (STRICT_ALIGNMENT): Redefine as
23852 xtensa_strict_align.
23853 * config/xtensa/xtensa.cc (xtensa_option_override): When
23854 -m[no-]strict-align is not specified in the command line set
23855 xtensa_strict_align to 0 if the hardware supports both unaligned
23856 loads and stores or to 1 otherwise.
23857 * config/xtensa/xtensa.opt (mstrict-align): New option.
23858 * doc/invoke.texi (Xtensa Options): Document -m[no-]strict-align.
23859
23860 2023-04-19 Max Filippov <jcmvbkbc@gmail.com>
23861
23862 * config/xtensa/xtensa-dynconfig.cc (xtensa_get_config_v4): New
23863 function.
23864
23865 2023-04-19 Andrew Pinski <apinski@marvell.com>
23866
23867 * config/i386/i386.md (*movsicc_noc_zext_1): New pattern.
23868
23869 2023-04-19 Juzhe-Zhong <juzhe.zhong@rivai.ai>
23870
23871 * config/riscv/riscv-modes.def (FLOAT_MODE): Add chunk 128 support.
23872 (VECTOR_BOOL_MODE): Ditto.
23873 (ADJUST_NUNITS): Ditto.
23874 (ADJUST_ALIGNMENT): Ditto.
23875 (ADJUST_BYTESIZE): Ditto.
23876 (ADJUST_PRECISION): Ditto.
23877 (RVV_MODES): Ditto.
23878 (VECTOR_MODE_WITH_PREFIX): Ditto.
23879 * config/riscv/riscv-v.cc (ENTRY): Ditto.
23880 (get_vlmul): Ditto.
23881 (get_ratio): Ditto.
23882 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TYPE): Ditto.
23883 * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE): Ditto.
23884 (vbool64_t): Ditto.
23885 (vbool32_t): Ditto.
23886 (vbool16_t): Ditto.
23887 (vbool8_t): Ditto.
23888 (vbool4_t): Ditto.
23889 (vbool2_t): Ditto.
23890 (vbool1_t): Ditto.
23891 (vint8mf8_t): Ditto.
23892 (vuint8mf8_t): Ditto.
23893 (vint8mf4_t): Ditto.
23894 (vuint8mf4_t): Ditto.
23895 (vint8mf2_t): Ditto.
23896 (vuint8mf2_t): Ditto.
23897 (vint8m1_t): Ditto.
23898 (vuint8m1_t): Ditto.
23899 (vint8m2_t): Ditto.
23900 (vuint8m2_t): Ditto.
23901 (vint8m4_t): Ditto.
23902 (vuint8m4_t): Ditto.
23903 (vint8m8_t): Ditto.
23904 (vuint8m8_t): Ditto.
23905 (vint16mf4_t): Ditto.
23906 (vuint16mf4_t): Ditto.
23907 (vint16mf2_t): Ditto.
23908 (vuint16mf2_t): Ditto.
23909 (vint16m1_t): Ditto.
23910 (vuint16m1_t): Ditto.
23911 (vint16m2_t): Ditto.
23912 (vuint16m2_t): Ditto.
23913 (vint16m4_t): Ditto.
23914 (vuint16m4_t): Ditto.
23915 (vint16m8_t): Ditto.
23916 (vuint16m8_t): Ditto.
23917 (vint32mf2_t): Ditto.
23918 (vuint32mf2_t): Ditto.
23919 (vint32m1_t): Ditto.
23920 (vuint32m1_t): Ditto.
23921 (vint32m2_t): Ditto.
23922 (vuint32m2_t): Ditto.
23923 (vint32m4_t): Ditto.
23924 (vuint32m4_t): Ditto.
23925 (vint32m8_t): Ditto.
23926 (vuint32m8_t): Ditto.
23927 (vint64m1_t): Ditto.
23928 (vuint64m1_t): Ditto.
23929 (vint64m2_t): Ditto.
23930 (vuint64m2_t): Ditto.
23931 (vint64m4_t): Ditto.
23932 (vuint64m4_t): Ditto.
23933 (vint64m8_t): Ditto.
23934 (vuint64m8_t): Ditto.
23935 (vfloat32mf2_t): Ditto.
23936 (vfloat32m1_t): Ditto.
23937 (vfloat32m2_t): Ditto.
23938 (vfloat32m4_t): Ditto.
23939 (vfloat32m8_t): Ditto.
23940 (vfloat64m1_t): Ditto.
23941 (vfloat64m2_t): Ditto.
23942 (vfloat64m4_t): Ditto.
23943 (vfloat64m8_t): Ditto.
23944 * config/riscv/riscv-vector-switch.def (ENTRY): Ditto.
23945 * config/riscv/riscv.cc (riscv_legitimize_poly_move): Ditto.
23946 (riscv_convert_vector_bits): Ditto.
23947 * config/riscv/riscv.md:
23948 * config/riscv/vector-iterators.md:
23949 * config/riscv/vector.md
23950 (@pred_indexed_<order>store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
23951 (@pred_indexed_<order>store<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
23952 (@pred_indexed_<order>store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
23953 (@pred_indexed_<order>store<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
23954 (@pred_indexed_<order>store<VNX128_Q:mode><VNX128_Q:mode>): Ditto.
23955 (@pred_reduc_<reduc><mode><vlmul1_zve64>): Ditto.
23956 (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve64>): Ditto.
23957 (@pred_reduc_plus<order><mode><vlmul1_zve64>): Ditto.
23958 (@pred_widen_reduc_plus<order><mode><vwlmul1_zve64>): Ditto.
23959
23960 2023-04-19 Pan Li <pan2.li@intel.com>
23961
23962 * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
23963 Align IOR (A | (~A) -> -1) optimization MODE_CLASS condition to AND.
23964
23965 2023-04-19 Uros Bizjak <ubizjak@gmail.com>
23966
23967 PR target/78904
23968 PR target/78952
23969 * config/i386/i386.md (*cmpqi_ext<mode>_1_mem_rex64): New insn pattern.
23970 (*cmpqi_ext<mode>_1): Use nonimmediate_operand predicate
23971 for operand 0. Use any_extract code iterator.
23972 (*cmpqi_ext<mode>_1 peephole2): New peephole2 pattern.
23973 (*cmpqi_ext<mode>_2): Use any_extract code iterator.
23974 (*cmpqi_ext<mode>_3_mem_rex64): New insn pattern.
23975 (*cmpqi_ext<mode>_1): Use general_operand predicate
23976 for operand 1. Use any_extract code iterator.
23977 (*cmpqi_ext<mode>_3 peephole2): New peephole2 pattern.
23978 (*cmpqi_ext<mode>_4): Use any_extract code iterator.
23979
23980 2023-04-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
23981
23982 * config/aarch64/aarch64-simd.md (aarch64_saddw2<mode>): Delete.
23983 (aarch64_uaddw2<mode>): Delete.
23984 (aarch64_ssubw2<mode>): Delete.
23985 (aarch64_usubw2<mode>): Delete.
23986 (aarch64_<ANY_EXTEND:su><ADDSUB:optab>w2<mode>): New define_expand.
23987
23988 2023-04-19 Richard Biener <rguenther@suse.de>
23989
23990 * tree-ssa-structalias.cc (do_ds_constraint): Use
23991 solve_add_graph_edge.
23992
23993 2023-04-19 Richard Biener <rguenther@suse.de>
23994
23995 * tree-ssa-structalias.cc (solve_add_graph_edge): New function,
23996 split out from ...
23997 (do_sd_constraint): ... here.
23998
23999 2023-04-19 Richard Biener <rguenther@suse.de>
24000
24001 * tree-cfg.cc (gimple_can_merge_blocks_p): Remove condition
24002 rejecting the merge when A contains only a non-local label.
24003
24004 2023-04-19 Uros Bizjak <ubizjak@gmail.com>
24005
24006 * rtl.h (VIRTUAL_REGISTER_P): New predicate.
24007 (VIRTUAL_REGISTER_NUM_P): Ditto.
24008 (REGNO_PTR_FRAME_P): Use VIRTUAL_REGISTER_NUM_P predicate.
24009 * expr.cc (force_operand): Use VIRTUAL_REGISTER_P predicate.
24010 * function.cc (instantiate_decl_rtl): Ditto.
24011 * rtlanal.cc (rtx_addr_can_trap_p_1): Ditto.
24012 (nonzero_address_p): Ditto.
24013 (refers_to_regno_p): Use VIRTUAL_REGISTER_NUM_P predicate.
24014
24015 2023-04-19 Aldy Hernandez <aldyh@redhat.com>
24016
24017 * value-range.h (Value_Range::Value_Range): Avoid pointer sharing.
24018
24019 2023-04-19 Richard Biener <rguenther@suse.de>
24020
24021 * system.h (auto_mpz::operator->()): New.
24022 * realmpfr.h (auto_mpfr::operator->()): New.
24023 * builtins.cc (do_mpfr_lgamma_r): Use auto_mpfr.
24024 * real.cc (real_from_string): Likewise.
24025 (dconst_e_ptr): Likewise.
24026 (dconst_sqrt2_ptr): Likewise.
24027 * tree-ssa-loop-niter.cc (refine_value_range_using_guard):
24028 Use auto_mpz.
24029 (bound_difference_of_offsetted_base): Likewise.
24030 (number_of_iterations_ne): Likewise.
24031 (number_of_iterations_lt_to_ne): Likewise.
24032 * ubsan.cc: Include realmpfr.h.
24033 (ubsan_instrument_float_cast): Use auto_mpfr.
24034
24035 2023-04-19 Richard Biener <rguenther@suse.de>
24036
24037 * tree-ssa-structalias.cc (solve_graph): Remove self-copy
24038 edges, remove edges from escaped after special-casing them.
24039
24040 2023-04-19 Richard Biener <rguenther@suse.de>
24041
24042 * tree-ssa-structalias.cc (do_sd_constraint): Fixup escape
24043 special casing.
24044
24045 2023-04-19 Richard Biener <rguenther@suse.de>
24046
24047 * tree-ssa-structalias.cc (do_sd_constraint): Do not write
24048 to the LHS varinfo solution member.
24049
24050 2023-04-19 Richard Biener <rguenther@suse.de>
24051
24052 * tree-ssa-structalias.cc (topo_visit): Look at the real
24053 destination of edges.
24054
24055 2023-04-19 Richard Biener <rguenther@suse.de>
24056
24057 PR tree-optimization/44794
24058 * tree-ssa-loop-manip.cc (tree_transform_and_unroll_loop):
24059 If an epilogue loop is required set its iteration upper bound.
24060
24061 2023-04-19 Xi Ruoyao <xry111@xry111.site>
24062
24063 PR target/109465
24064 * config/loongarch/loongarch-protos.h
24065 (loongarch_expand_block_move): Add a parameter as alignment RTX.
24066 * config/loongarch/loongarch.h:
24067 (LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER): Remove.
24068 (LARCH_MAX_MOVE_BYTES_STRAIGHT): Remove.
24069 (LARCH_MAX_MOVE_OPS_PER_LOOP_ITER): Define.
24070 (LARCH_MAX_MOVE_OPS_STRAIGHT): Define.
24071 (MOVE_RATIO): Use LARCH_MAX_MOVE_OPS_PER_LOOP_ITER instead of
24072 LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER.
24073 * config/loongarch/loongarch.cc (loongarch_expand_block_move):
24074 Take the alignment from the parameter, but set it to
24075 UNITS_PER_WORD if !TARGET_STRICT_ALIGN. Limit the length of
24076 straight-line implementation with LARCH_MAX_MOVE_OPS_STRAIGHT
24077 instead of LARCH_MAX_MOVE_BYTES_STRAIGHT.
24078 (loongarch_block_move_straight): When there are left-over bytes,
24079 half the mode size instead of falling back to byte mode at once.
24080 (loongarch_block_move_loop): Limit the length of loop body with
24081 LARCH_MAX_MOVE_OPS_PER_LOOP_ITER instead of
24082 LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER.
24083 * config/loongarch/loongarch.md (cpymemsi): Pass the alignment
24084 to loongarch_expand_block_move.
24085
24086 2023-04-19 Xi Ruoyao <xry111@xry111.site>
24087
24088 * config/loongarch/loongarch.cc
24089 (loongarch_setup_incoming_varargs): Don't save more GARs than
24090 cfun->va_list_gpr_size / UNITS_PER_WORD.
24091
24092 2023-04-19 Richard Biener <rguenther@suse.de>
24093
24094 * tree-ssa-loop-manip.cc (determine_exit_conditions): Fix
24095 no epilogue condition.
24096
24097 2023-04-19 Richard Biener <rguenther@suse.de>
24098
24099 * gimple.h (gimple_assign_load): Outline...
24100 * gimple.cc (gimple_assign_load): ... here. Avoid
24101 get_base_address and instead just strip the outermost
24102 handled component, treating a remaining handled component
24103 as load.
24104
24105 2023-04-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
24106
24107 * config/aarch64/aarch64-simd-builtins.def (neg): Delete builtins
24108 definition.
24109 * config/aarch64/arm_fp16.h (vnegh_f16): Reimplement using normal negation.
24110
24111 2023-04-19 Jakub Jelinek <jakub@redhat.com>
24112
24113 PR tree-optimization/109011
24114 * tree-vect-patterns.cc (vect_recog_popcount_pattern): Rename to ...
24115 (vect_recog_popcount_clz_ctz_ffs_pattern): ... this. Handle also
24116 CLZ, CTZ and FFS. Remove vargs variable, use
24117 gimple_build_call_internal rather than gimple_build_call_internal_vec.
24118 (vect_vect_recog_func_ptrs): Adjust popcount entry.
24119
24120 2023-04-19 Jakub Jelinek <jakub@redhat.com>
24121
24122 PR target/109040
24123 * dse.cc (replace_read): If read_reg is a SUBREG of a word mode
24124 REG, for WORD_REGISTER_OPERATIONS copy SUBREG_REG of it into
24125 a new REG rather than the SUBREG.
24126
24127 2023-04-19 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
24128
24129 * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set_zero<mode>):
24130 New pattern.
24131
24132 2023-04-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
24133
24134 PR target/108840
24135 * config/aarch64/aarch64.cc (aarch64_rtx_costs): Merge ASHIFT and
24136 ROTATE, ROTATERT, LSHIFTRT, ASHIFTRT cases. Handle subregs in op1.
24137
24138 2023-04-19 Richard Biener <rguenther@suse.de>
24139
24140 PR rtl-optimization/109237
24141 * cse.cc (insn_live_p): Remove NEXT_INSN walk, instead check
24142 TREE_VISITED on INSN_VAR_LOCATION_DECL.
24143 (delete_trivially_dead_insns): Maintain TREE_VISITED on
24144 active debug bind INSN_VAR_LOCATION_DECL.
24145
24146 2023-04-19 Richard Biener <rguenther@suse.de>
24147
24148 PR rtl-optimization/109237
24149 * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
24150
24151 2023-04-19 Christophe Lyon <christophe.lyon@arm.com>
24152
24153 * doc/install.texi (enable-decimal-float): Add AArch64.
24154
24155 2023-04-19 liuhongt <hongtao.liu@intel.com>
24156
24157 PR rtl-optimization/109351
24158 * ira.cc (setup_class_subset_and_memory_move_costs): Check
24159 hard_regno_mode_ok before setting lowest memory move cost for
24160 the mode with different reg classes.
24161
24162 2023-04-18 Jason Merrill <jason@redhat.com>
24163
24164 * doc/invoke.texi: Remove stray @gol.
24165
24166 2023-04-18 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
24167
24168 * ifcvt.cc (cond_move_process_if_block): Consider the result of
24169 targetm.noce_conversion_profitable_p() when replacing the original
24170 sequence with the converted one.
24171
24172 2023-04-18 Mark Harmstone <mark@harmstone.com>
24173
24174 * common.opt (gcodeview): Add new option.
24175 * gcc.cc (driver_handle_option); Handle OPT_gcodeview.
24176 * opts.cc (command_handle_option): Similarly.
24177 * doc/invoke.texi: Add documentation for -gcodeview.
24178
24179 2023-04-18 Andrew Pinski <apinski@marvell.com>
24180
24181 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove declaration.
24182 (make_pass_phiopt): Make execute out of line.
24183 (tree_ssa_cs_elim): Move code into ...
24184 (pass_cselim::execute): here.
24185
24186 2023-04-18 Sam James <sam@gentoo.org>
24187
24188 * system.h: Drop unused INCLUDE_PTHREAD_H.
24189
24190 2023-04-18 Kevin Lee <kevinl@rivosinc.com>
24191
24192 * tree-vect-data-refs.cc (vect_grouped_store_supported): Add new
24193 condition.
24194
24195 2023-04-18 Sinan Lin <sinan.lin@linux.alibaba.com>
24196
24197 * config/riscv/bitmanip.md (rotr<mode>3 expander): Enable for ZBKB.
24198 (bswapdi2, bswapsi2): Similarly.
24199
24200 2023-04-18 Uros Bizjak <ubizjak@gmail.com>
24201
24202 PR target/94908
24203 * config/i386/i386-builtin.def (__builtin_ia32_insertps128):
24204 Use CODE_FOR_sse4_1_insertps_v4sf.
24205 * config/i386/i386-expand.cc (expand_vec_perm_insertps): New.
24206 (expand_vec_perm_1): Call expand_vec_per_insertps.
24207 * config/i386/i386.md ("unspec"): Declare UNSPEC_INSERTPS here.
24208 * config/i386/mmx.md (mmxscalarmode): New mode attribute.
24209 (@sse4_1_insertps_<mode>): New insn pattern.
24210 * config/i386/sse.md (@sse4_1_insertps_<mode>): Macroize insn
24211 pattern from sse4_1_insertps using VI4F_128 mode iterator.
24212
24213 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
24214
24215 * value-range.cc (gt_ggc_mx): New.
24216 (gt_pch_nx): New.
24217 * value-range.h (class vrange): Add GTY marker.
24218 (class frange): Same.
24219 (gt_ggc_mx): Remove.
24220 (gt_pch_nx): Remove.
24221
24222 2023-04-18 Victor L. Do Nascimento <victor.donascimento@arm.com>
24223
24224 * lra-constraints.cc (constraint_unique): New.
24225 (process_address_1): Apply constraint_unique test.
24226 * recog.cc (constrain_operands): Allow relaxed memory
24227 constaints.
24228
24229 2023-04-18 Kito Cheng <kito.cheng@sifive.com>
24230
24231 * doc/extend.texi (Target Builtins): Add RISC-V Vector
24232 Intrinsics.
24233 (RISC-V Vector Intrinsics): Document GCC implemented which
24234 version of RISC-V vector intrinsics and its reference.
24235
24236 2023-04-18 Richard Biener <rguenther@suse.de>
24237
24238 PR middle-end/108786
24239 * bitmap.h (bitmap_clear_first_set_bit): New.
24240 * bitmap.cc (bitmap_first_set_bit_worker): Rename from
24241 bitmap_first_set_bit and add optional clearing of the bit.
24242 (bitmap_first_set_bit): Wrap bitmap_first_set_bit_worker.
24243 (bitmap_clear_first_set_bit): Likewise.
24244 * df-core.cc (df_worklist_dataflow_doublequeue): Use
24245 bitmap_clear_first_set_bit.
24246 * graphite-scop-detection.cc (scop_detection::merge_sese):
24247 Likewise.
24248 * sanopt.cc (sanitize_asan_mark_unpoison): Likewise.
24249 (sanitize_asan_mark_poison): Likewise.
24250 * tree-cfgcleanup.cc (cleanup_tree_cfg_noloop): Likewise.
24251 * tree-into-ssa.cc (rewrite_blocks): Likewise.
24252 * tree-ssa-dce.cc (simple_dce_from_worklist): Likewise.
24253 * tree-ssa-sccvn.cc (do_rpo_vn_1): Likewise.
24254
24255 2023-04-18 Richard Biener <rguenther@suse.de>
24256
24257 * tree-ssa-structalias.cc (dump_sa_stats): Split out from...
24258 (dump_sa_points_to_info): ... this function.
24259 (compute_points_to_sets): Guard large dumps with TDF_DETAILS,
24260 and call dump_sa_stats guarded with TDF_STATS.
24261 (ipa_pta_execute): Likewise.
24262 (compute_may_aliases): Guard dump_alias_info with
24263 TDF_DETAILS|TDF_ALIAS.
24264
24265 2023-04-18 Andrew Pinski <apinski@marvell.com>
24266
24267 * tree-ssa-phiopt.cc (gimple_simplify_phiopt): Dump
24268 the expression that is being tried when TDF_FOLDING
24269 is true.
24270 (phiopt_worker::match_simplify_replacement): Dump
24271 the sequence which was created by gimple_simplify_phiopt
24272 when TDF_FOLDING is true.
24273
24274 2023-04-18 Andrew Pinski <apinski@marvell.com>
24275
24276 * tree-ssa-phiopt.cc (match_simplify_replacement):
24277 Simplify code that does the movement slightly.
24278
24279 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
24280
24281 * config/aarch64/aarch64.md (@aarch64_rev16<mode>): Change to
24282 define_expand.
24283 (rev16<mode>2): Rename to...
24284 (aarch64_rev16<mode>2_alt1): ... This.
24285 (rev16<mode>2_alt): Rename to...
24286 (*aarch64_rev16<mode>2_alt2): ... This.
24287
24288 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
24289
24290 * emit-rtl.cc (init_emit_once): Initialize dconstm0.
24291 * gimple-range-op.cc (class cfn_signbit): Remove dconstm0
24292 declaration.
24293 * range-op-float.cc (zero_range): Use dconstm0.
24294 (zero_to_inf_range): Same.
24295 * real.h (dconstm0): New.
24296 * value-range.cc (frange::flush_denormals_to_zero): Use dconstm0.
24297 (frange::set_zero): Do not declare dconstm0.
24298
24299 2023-04-18 Richard Biener <rguenther@suse.de>
24300
24301 * system.h (class auto_mpz): New,
24302 * realmpfr.h (class auto_mpfr): Likewise.
24303 * fold-const-call.cc (do_mpfr_arg1): Use auto_mpfr.
24304 (do_mpfr_arg2): Likewise.
24305 * tree-ssa-loop-niter.cc (bound_difference): Use auto_mpz;
24306
24307 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
24308
24309 * config/aarch64/aarch64-builtins.cc (aarch64_init_simd_intrinsics): Take
24310 builtin flags from intrinsic data rather than hardcoded FLAG_AUTO_FP.
24311
24312 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
24313
24314 * value-range.cc (frange::operator==): Adjust for NAN.
24315 (range_tests_nan): Remove some NAN tests.
24316
24317 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
24318
24319 * inchash.cc (hash::add_real_value): New.
24320 * inchash.h (class hash): Add add_real_value.
24321 * value-range.cc (add_vrange): New.
24322 * value-range.h (inchash::add_vrange): New.
24323
24324 2023-04-18 Richard Biener <rguenther@suse.de>
24325
24326 PR tree-optimization/109539
24327 * gimple-ssa-warn-access.cc (pass_waccess::check_pointer_uses):
24328 Re-implement pointer relatedness for PHIs.
24329
24330 2023-04-18 Andrew Stubbs <ams@codesourcery.com>
24331
24332 * config/gcn/gcn-valu.md (SV_SFDF): New iterator.
24333 (SV_FP): New iterator.
24334 (scalar_mode, SCALAR_MODE): Add identity mappings for scalar modes.
24335 (recip<mode>2): Unify the two patterns using SV_FP.
24336 (div_scale<mode><exec_vcc>): New insn.
24337 (div_fmas<mode><exec>): New insn.
24338 (div_fixup<mode><exec>): New insn.
24339 (div<mode>3): Unify the two expanders and rewrite using hardfp.
24340 * config/gcn/gcn.cc (gcn_md_reorg): Support "vccwait" attribute.
24341 * config/gcn/gcn.md (unspec): Add UNSPEC_DIV_SCALE, UNSPEC_DIV_FMAS,
24342 and UNSPEC_DIV_FIXUP.
24343 (vccwait): New attribute.
24344
24345 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
24346
24347 * config/aarch64/aarch64.cc (aarch64_validate_mcpu): Add hint to use -march
24348 if the argument matches that.
24349
24350 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
24351
24352 * config/aarch64/atomics.md
24353 (*aarch64_atomic_load<ALLX:mode>_rcpc_zext):
24354 Use SD_HSDI for destination mode iterator.
24355
24356 2023-04-18 Jin Ma <jinma@linux.alibaba.com>
24357
24358 * common/config/riscv/riscv-common.cc (multi_letter_subset_rank): Swap the order
24359 of z-extensions and s-extensions.
24360 (riscv_subset_list::parse): Likewise.
24361
24362 2023-04-18 Jakub Jelinek <jakub@redhat.com>
24363
24364 PR tree-optimization/109240
24365 * match.pd (fneg/fadd): Rewrite such that it handles both plus as
24366 first vec_perm operand and minus as second using fneg/fadd and
24367 minus as first vec_perm operand and plus as second using fneg/fsub.
24368
24369 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
24370
24371 * data-streamer.cc (bp_pack_real_value): New.
24372 (bp_unpack_real_value): New.
24373 * data-streamer.h (bp_pack_real_value): New.
24374 (bp_unpack_real_value): New.
24375 * tree-streamer-in.cc (unpack_ts_real_cst_value_fields): Use
24376 bp_unpack_real_value.
24377 * tree-streamer-out.cc (pack_ts_real_cst_value_fields): Use
24378 bp_pack_real_value.
24379
24380 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
24381
24382 * wide-int.h (WIDE_INT_MAX_HWIS): New.
24383 (class fixed_wide_int_storage): Use it.
24384 (trailing_wide_ints <N>::set_precision): Use it.
24385 (trailing_wide_ints <N>::extra_size): Use it.
24386
24387 2023-04-18 Xi Ruoyao <xry111@xry111.site>
24388
24389 * config/loongarch/loongarch-protos.h
24390 (loongarch_addu16i_imm12_operand_p): New function prototype.
24391 (loongarch_split_plus_constant): Likewise.
24392 * config/loongarch/loongarch.cc
24393 (loongarch_addu16i_imm12_operand_p): New function.
24394 (loongarch_split_plus_constant): Likewise.
24395 * config/loongarch/loongarch.h (ADDU16I_OPERAND): New macro.
24396 (DUAL_IMM12_OPERAND): Likewise.
24397 (DUAL_ADDU16I_OPERAND): Likewise.
24398 * config/loongarch/constraints.md (La, Lb, Lc, Ld, Le): New
24399 constraint.
24400 * config/loongarch/predicates.md (const_dual_imm12_operand): New
24401 predicate.
24402 (const_addu16i_operand): Likewise.
24403 (const_addu16i_imm12_di_operand): Likewise.
24404 (const_addu16i_imm12_si_operand): Likewise.
24405 (plus_di_operand): Likewise.
24406 (plus_si_operand): Likewise.
24407 (plus_si_extend_operand): Likewise.
24408 * config/loongarch/loongarch.md (add<mode>3): Convert to
24409 define_insn_and_split. Use plus_<mode>_operand predicate
24410 instead of arith_operand. Add alternatives for La, Lb, Lc, Ld,
24411 and Le constraints.
24412 (*addsi3_extended): Convert to define_insn_and_split. Use
24413 plus_si_extend_operand instead of arith_operand. Add
24414 alternatives for La and Le alternatives.
24415
24416 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
24417
24418 * value-range.h (Value_Range::Value_Range): New.
24419 (Value_Range::contains_p): New.
24420
24421 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
24422
24423 * value-range.h (class vrange): Make m_discriminator const.
24424 (class irange): Make m_max_ranges const. Adjust constructors
24425 accordingly.
24426 (class unsupported_range): Construct vrange appropriately.
24427 (class frange): Same.
24428
24429 2023-04-18 Lulu Cheng <chenglulu@loongson.cn>
24430
24431 * config/loongarch/loongarch.h (LOGICAL_OP_NON_SHORT_CIRCUIT): Remove the macro
24432 definition.
24433
24434 2023-04-18 Lulu Cheng <chenglulu@loongson.cn>
24435
24436 * doc/extend.texi: Add section for LoongArch Base Built-in functions.
24437
24438 2023-04-18 Fei Gao <gaofei@eswincomputing.com>
24439
24440 * config/riscv/riscv.cc (riscv_first_stack_step): Make codes more
24441 readable.
24442 (riscv_expand_epilogue): Likewise.
24443
24444 2023-04-17 Fei Gao <gaofei@eswincomputing.com>
24445
24446 * config/riscv/riscv.cc (riscv_expand_prologue): Consider save-restore in
24447 stack allocation.
24448 (riscv_expand_epilogue): Consider save-restore in stack deallocation.
24449
24450 2023-04-17 Andrew Pinski <apinski@marvell.com>
24451
24452 * tree-ssa-phiopt.cc (gate_hoist_loads): Remove
24453 prototype.
24454
24455 2023-04-17 Aldy Hernandez <aldyh@redhat.com>
24456
24457 * gimple-ssa-warn-alloca.cc (pass_walloca::execute): Do not export
24458 global ranges.
24459
24460 2023-04-17 Fei Gao <gaofei@eswincomputing.com>
24461
24462 * config/riscv/riscv.cc (riscv_first_stack_step): Add a new function
24463 parameter remaining_size.
24464 (riscv_compute_frame_info): Adapt new riscv_first_stack_step interface.
24465 (riscv_expand_prologue): Likewise.
24466 (riscv_expand_epilogue): Likewise.
24467
24468 2023-04-17 Feng Wang <wangfeng@eswincomputing.com>
24469
24470 * config/riscv/bitmanip.md (rotrsi3_sext): Support generating
24471 roriw for constant counts.
24472 * rtl.h (reverse_rotate_by_imm_p): Add function declartion
24473 * simplify-rtx.cc (reverse_rotate_by_imm_p): New function.
24474 (simplify_context::simplify_binary_operation_1): Use it.
24475 * expmed.cc (expand_shift_1): Likewise.
24476
24477 2023-04-17 Martin Jambor <mjambor@suse.cz>
24478
24479 PR ipa/107769
24480 PR ipa/109318
24481 * cgraph.h (symtab_node::find_reference): Add parameter use_type.
24482 * ipa-prop.h (ipa_pass_through_data): New flag refdesc_decremented.
24483 (ipa_zap_jf_refdesc): New function.
24484 (ipa_get_jf_pass_through_refdesc_decremented): Likewise.
24485 (ipa_set_jf_pass_through_refdesc_decremented): Likewise.
24486 * ipa-cp.cc (ipcp_discover_new_direct_edges): Provide a value for
24487 the new parameter of find_reference.
24488 (adjust_references_in_caller): Likewise. Make sure the constant jump
24489 function is not used to decrement a refdec counter again. Only
24490 decrement refdesc counters when the pass_through jump function allows
24491 it. Added a detailed dump when decrementing refdesc counters.
24492 * ipa-prop.cc (ipa_print_node_jump_functions_for_edge): Dump new flag.
24493 (ipa_set_jf_simple_pass_through): Initialize the new flag.
24494 (ipa_set_jf_unary_pass_through): Likewise.
24495 (ipa_set_jf_arith_pass_through): Likewise.
24496 (remove_described_reference): Provide a value for the new parameter of
24497 find_reference.
24498 (update_jump_functions_after_inlining): Zap refdesc of new jfunc if
24499 the previous pass_through had a flag mandating that we do so.
24500 (propagate_controlled_uses): Likewise. Only decrement refdesc
24501 counters when the pass_through jump function allows it.
24502 (ipa_edge_args_sum_t::duplicate): Provide a value for the new
24503 parameter of find_reference.
24504 (ipa_write_jump_function): Assert the new flag does not have to be
24505 streamed.
24506 * symtab.cc (symtab_node::find_reference): Add parameter use_type, use
24507 it in searching.
24508
24509 2023-04-17 Philipp Tomsich <philipp.tomsich@vrull.eu>
24510 Di Zhao <di.zhao@amperecomputing.com>
24511
24512 * config/aarch64/aarch64-tuning-flags.def (AARCH64_EXTRA_TUNING_OPTION):
24513 Add AARCH64_EXTRA_TUNE_NO_LDP_COMBINE.
24514 * config/aarch64/aarch64.cc (aarch64_operands_ok_for_ldpstp):
24515 Check for the above tuning option when processing loads.
24516
24517 2023-04-17 Richard Biener <rguenther@suse.de>
24518
24519 PR tree-optimization/109524
24520 * tree-vrp.cc (remove_unreachable::m_list): Change to a
24521 vector of pairs of block indices.
24522 (remove_unreachable::maybe_register_block): Adjust.
24523 (remove_unreachable::remove_and_update_globals): Likewise.
24524 Deal with removed blocks.
24525
24526 2023-04-16 Jeff Law <jlaw@ventanamicro>
24527
24528 PR target/109508
24529 * config/riscv/riscv.cc (riscv_expand_conditional_move): For
24530 TARGET_SFB_ALU, force the true arm into a register.
24531
24532 2023-04-15 John David Anglin <danglin@gcc.gnu.org>
24533
24534 PR target/104989
24535 * config/pa/pa-protos.h (pa_function_arg_size): Update prototype.
24536 * config/pa/pa.cc (pa_function_arg): Return NULL_RTX if argument
24537 size is zero.
24538 (pa_arg_partial_bytes): Don't call pa_function_arg_size twice.
24539 (pa_function_arg_size): Change return type to int. Return zero
24540 for arguments larger than 1 GB. Update comments.
24541
24542 2023-04-15 Jakub Jelinek <jakub@redhat.com>
24543
24544 PR tree-optimization/109154
24545 * tree-if-conv.cc (predicate_scalar_phi): For complex PHIs, emit just
24546 args_len - 1 COND_EXPRs rather than args_len. Formatting fix.
24547
24548 2023-04-15 Jason Merrill <jason@redhat.com>
24549
24550 PR c++/109514
24551 * gimple-ssa-warn-access.cc (pass_waccess::check_dangling_stores):
24552 Overhaul lhs_ref.ref analysis.
24553
24554 2023-04-14 Richard Biener <rguenther@suse.de>
24555
24556 PR tree-optimization/109502
24557 * tree-vect-stmts.cc (vectorizable_assignment): Fix
24558 check for conversion between mask and non-mask types.
24559
24560 2023-04-14 Jeff Law <jlaw@ventanamicro.com>
24561 Jakub Jelinek <jakub@redhat.com>
24562
24563 PR target/108947
24564 PR target/109040
24565 * combine.cc (simplify_and_const_int_1): Compute nonzero_bits in
24566 word_mode rather than mode if WORD_REGISTER_OPERATIONS and mode is
24567 smaller than word_mode.
24568 * simplify-rtx.cc (simplify_context::simplify_binary_operation_1)
24569 <case AND>: Likewise.
24570
24571 2023-04-14 Jakub Jelinek <jakub@redhat.com>
24572
24573 * loop-iv.cc (iv_number_of_iterations): Use gen_int_mode instead
24574 of GEN_INT.
24575
24576 2023-04-13 Andrew MacLeod <amacleod@redhat.com>
24577
24578 PR tree-optimization/108139
24579 PR tree-optimization/109462
24580 * gimple-range-cache.cc (ranger_cache::fill_block_cache): Remove
24581 equivalency check for PHI nodes.
24582 * gimple-range-fold.cc (fold_using_range::range_of_phi): Ensure def
24583 does not dominate single-arg equivalency edges.
24584
24585 2023-04-13 Richard Sandiford <richard.sandiford@arm.com>
24586
24587 PR target/108910
24588 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Do
24589 not trust TYPE_ALIGN for pointer types; use POINTER_SIZE instead.
24590
24591 2023-04-13 Richard Biener <rguenther@suse.de>
24592
24593 PR tree-optimization/109491
24594 * tree-ssa-sccvn.cc (expressions_equal_p): Restore the
24595 NULL operands test.
24596
24597 2023-04-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24598
24599 PR target/109479
24600 * config/riscv/riscv-vector-builtins-types.def (vint8mf8_t): Fix predicate.
24601 (vint16mf4_t): Ditto.
24602 (vint32mf2_t): Ditto.
24603 (vint64m1_t): Ditto.
24604 (vint64m2_t): Ditto.
24605 (vint64m4_t): Ditto.
24606 (vint64m8_t): Ditto.
24607 (vuint8mf8_t): Ditto.
24608 (vuint16mf4_t): Ditto.
24609 (vuint32mf2_t): Ditto.
24610 (vuint64m1_t): Ditto.
24611 (vuint64m2_t): Ditto.
24612 (vuint64m4_t): Ditto.
24613 (vuint64m8_t): Ditto.
24614 (vfloat32mf2_t): Ditto.
24615 (vbool64_t): Ditto.
24616 * config/riscv/riscv-vector-builtins.cc (register_builtin_type): Add comments.
24617 (register_vector_type): Ditto.
24618 (check_required_extensions): Fix condition.
24619 * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_ZVE64): Remove it.
24620 (RVV_REQUIRE_ELEN_64): New define.
24621 (RVV_REQUIRE_MIN_VLEN_64): Ditto.
24622 * config/riscv/riscv-vector-switch.def (TARGET_VECTOR_FP32): Remove it.
24623 (TARGET_VECTOR_FP64): Ditto.
24624 (ENTRY): Fix predicate.
24625 * config/riscv/vector-iterators.md: Fix predicate.
24626
24627 2023-04-12 Jakub Jelinek <jakub@redhat.com>
24628
24629 PR tree-optimization/109410
24630 * tree-ssa-reassoc.cc (build_and_add_sum): Split edge from entry
24631 block if first statement of the function is a call to returns_twice
24632 function.
24633
24634 2023-04-12 Jakub Jelinek <jakub@redhat.com>
24635
24636 PR target/109458
24637 * config/i386/i386.cc: Include rtl-error.h.
24638 (ix86_print_operand): For z modifier warning, use warning_for_asm
24639 if this_is_asm_operands. For Z modifier errors, use %c and code
24640 instead of hardcoded Z.
24641
24642 2023-04-12 Costas Argyris <costas.argyris@gmail.com>
24643
24644 * config/i386/x-mingw32-utf8: Remove extrataneous $@
24645
24646 2023-04-12 Andrew MacLeod <amacleod@redhat.com>
24647
24648 PR tree-optimization/109462
24649 * gimple-range-cache.cc (ranger_cache::fill_block_cache): Don't
24650 check for equivalences if NAME is a phi node.
24651
24652 2023-04-12 Richard Biener <rguenther@suse.de>
24653
24654 PR tree-optimization/109473
24655 * tree-vect-loop.cc (vect_create_epilog_for_reduction):
24656 Convert scalar result to the computation type before performing
24657 the reduction adjustment.
24658
24659 2023-04-12 Richard Biener <rguenther@suse.de>
24660
24661 PR tree-optimization/109469
24662 * tree-vect-slp.cc (vect_slp_function): Skip region starts with
24663 a returns-twice call.
24664
24665 2023-04-12 Richard Biener <rguenther@suse.de>
24666
24667 PR tree-optimization/109434
24668 * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Properly
24669 handle possibly throwing calls when processing the LHS
24670 and may-defs are not OK.
24671
24672 2023-04-11 Lin Sinan <mynameisxiaou@gmail.com>
24673
24674 * config/riscv/predicates.md (uimm_extra_bit_or_twobits): Adjust
24675 predicate to avoid splitting arith constants.
24676
24677 2023-04-11 Yanzhang Wang <yanzhang.wang@intel.com>
24678 Pan Li <pan2.li@intel.com>
24679 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24680 Kito Cheng <kito.cheng@sifive.com>
24681
24682 PR target/109104
24683 * config/riscv/riscv-protos.h (emit_hard_vlmax_vsetvl): New.
24684 * config/riscv/riscv-v.cc (emit_hard_vlmax_vsetvl): New.
24685 (emit_vlmax_vsetvl): Use emit_hard_vlmax_vsetvl.
24686 * config/riscv/riscv.cc (vector_zero_call_used_regs): New.
24687 (riscv_zero_call_used_regs): New.
24688 (TARGET_ZERO_CALL_USED_REGS): New.
24689
24690 2023-04-11 Martin Liska <mliska@suse.cz>
24691
24692 PR driver/108241
24693 * opts.cc (finish_options): Drop also
24694 x_flag_var_tracking_assignments.
24695
24696 2023-04-11 Andre Vieira <andre.simoesdiasvieira@arm.com>
24697
24698 PR tree-optimization/108888
24699 * tree-if-conv.cc (predicate_statements): Fix gimple call check.
24700
24701 2023-04-11 Haochen Gui <guihaoc@gcc.gnu.org>
24702
24703 PR target/108812
24704 * config/rs6000/vsx.md (vsx_sign_extend_qi_<mode>): Rename to...
24705 (vsx_sign_extend_v16qi_<mode>): ... this.
24706 (vsx_sign_extend_hi_<mode>): Rename to...
24707 (vsx_sign_extend_v8hi_<mode>): ... this.
24708 (vsx_sign_extend_si_v2di): Rename to...
24709 (vsx_sign_extend_v4si_v2di): ... this.
24710 (vsignextend_qi_<mode>): Remove.
24711 (vsignextend_hi_<mode>): Remove.
24712 (vsignextend_si_v2di): Remove.
24713 (vsignextend_v2di_v1ti): Remove.
24714 (*xxspltib_<mode>_split): Replace gen_vsx_sign_extend_qi_v2di with
24715 gen_vsx_sign_extend_v16qi_v2di and gen_vsx_sign_extend_qi_v4si
24716 with gen_vsx_sign_extend_v16qi_v4si.
24717 * config/rs6000/rs6000.md (split for DI constant generation):
24718 Replace gen_vsx_sign_extend_qi_si with gen_vsx_sign_extend_v16qi_si.
24719 (split for HSDI constant generation): Replace gen_vsx_sign_extend_qi_di
24720 with gen_vsx_sign_extend_v16qi_di and gen_vsx_sign_extend_qi_si
24721 with gen_vsx_sign_extend_v16qi_si.
24722 * config/rs6000/rs6000-builtins.def (__builtin_altivec_vsignextsb2d):
24723 Set bif-pattern to vsx_sign_extend_v16qi_v2di.
24724 (__builtin_altivec_vsignextsb2w): Set bif-pattern to
24725 vsx_sign_extend_v16qi_v4si.
24726 (__builtin_altivec_visgnextsh2d): Set bif-pattern to
24727 vsx_sign_extend_v8hi_v2di.
24728 (__builtin_altivec_vsignextsh2w): Set bif-pattern to
24729 vsx_sign_extend_v8hi_v4si.
24730 (__builtin_altivec_vsignextsw2d): Set bif-pattern to
24731 vsx_sign_extend_si_v2di.
24732 (__builtin_altivec_vsignext): Set bif-pattern to
24733 vsx_sign_extend_v2di_v1ti.
24734 * config/rs6000/rs6000-builtin.cc (lxvrse_expand_builtin): Replace
24735 gen_vsx_sign_extend_qi_v2di with gen_vsx_sign_extend_v16qi_v2di,
24736 gen_vsx_sign_extend_hi_v2di with gen_vsx_sign_extend_v8hi_v2di and
24737 gen_vsx_sign_extend_si_v2di with gen_vsx_sign_extend_v4si_v2di.
24738
24739 2023-04-10 Michael Meissner <meissner@linux.ibm.com>
24740
24741 PR target/70243
24742 * config/rs6000/vsx.md (vsx_fmav4sf4): Do not generate vmaddfp.
24743 (vsx_nfmsv4sf4): Do not generate vnmsubfp.
24744
24745 2023-04-10 Haochen Jiang <haochen.jiang@intel.com>
24746
24747 * config/i386/i386.h (PTA_GRANITERAPIDS): Add PTA_AMX_COMPLEX.
24748
24749 2023-04-10 Haochen Jiang <haochen.jiang@intel.com>
24750
24751 * common/config/i386/cpuinfo.h (get_available_features):
24752 Detect AMX-COMPLEX.
24753 * common/config/i386/i386-common.cc
24754 (OPTION_MASK_ISA2_AMX_COMPLEX_SET,
24755 OPTION_MASK_ISA2_AMX_COMPLEX_UNSET): New.
24756 (ix86_handle_option): Handle -mamx-complex.
24757 * common/config/i386/i386-cpuinfo.h (enum processor_features):
24758 Add FEATURE_AMX_COMPLEX.
24759 * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
24760 amx-complex.
24761 * config.gcc: Add amxcomplexintrin.h.
24762 * config/i386/cpuid.h (bit_AMX_COMPLEX): New.
24763 * config/i386/i386-c.cc (ix86_target_macros_internal): Define
24764 __AMX_COMPLEX__.
24765 * config/i386/i386-isa.def (AMX_COMPLEX): Add DEF_PTA(AMX_COMPLEX).
24766 * config/i386/i386-options.cc (ix86_valid_target_attribute_inner_p):
24767 Handle amx-complex.
24768 * config/i386/i386.opt: Add option -mamx-complex.
24769 * config/i386/immintrin.h: Include amxcomplexintrin.h.
24770 * doc/extend.texi: Document amx-complex.
24771 * doc/invoke.texi: Document -mamx-complex.
24772 * doc/sourcebuild.texi: Document target amx-complex.
24773 * config/i386/amxcomplexintrin.h: New file.
24774
24775 2023-04-08 Jakub Jelinek <jakub@redhat.com>
24776
24777 PR tree-optimization/109392
24778 * tree-vect-generic.cc (tree_vec_extract): Handle failure
24779 of maybe_push_res_to_seq better.
24780
24781 2023-04-08 Jakub Jelinek <jakub@redhat.com>
24782
24783 * Makefile.in (CORETYPES_H): Depend on align.h, poly-int.h and
24784 poly-int-types.h.
24785 (SYSTEM_H): Depend on $(HASHTAB_H).
24786 * config/riscv/t-riscv (build/genrvv-type-indexer.o): Remove unused
24787 dependency on $(RTL_BASE_H), remove redundant dependency on
24788 insn-modes.h.
24789
24790 2023-04-06 Richard Earnshaw <rearnsha@arm.com>
24791
24792 PR target/107674
24793 * config/arm/arm.cc (arm_effective_regno): New function.
24794 (mve_vector_mem_operand): Use it.
24795
24796 2023-04-06 Andrew MacLeod <amacleod@redhat.com>
24797
24798 PR tree-optimization/109417
24799 * gimple-range-gori.cc (gori_compute::may_recompute_p): Check if
24800 dependency is in SSA_NAME_FREE_LIST.
24801
24802 2023-04-06 Andrew Pinski <apinski@marvell.com>
24803
24804 PR tree-optimization/109427
24805 * params.opt (-param=vect-induction-float=):
24806 Fix option attribute typo for IntegerRange.
24807
24808 2023-04-05 Jeff Law <jlaw@ventanamicro>
24809
24810 PR target/108892
24811 * combine.cc (combine_instructions): Force re-recognition when
24812 after restoring the body of an insn to its original form.
24813
24814 2023-04-05 Martin Jambor <mjambor@suse.cz>
24815
24816 PR ipa/108959
24817 * ipa-sra.cc (zap_useless_ipcp_results): New function.
24818 (process_isra_node_results): Call it.
24819
24820 2023-04-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24821
24822 * config/riscv/vector.md: Fix incorrect operand order.
24823
24824 2023-04-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
24825
24826 * config/riscv/riscv-vsetvl.cc
24827 (pass_vsetvl::compute_local_backward_infos): Update user vsetvl in local
24828 demand fusion.
24829
24830 2023-04-05 Li Xu <xuli1@eswincomputing.com>
24831
24832 * config/riscv/riscv-vector-builtins.def: Fix typo.
24833 * config/riscv/riscv.cc (riscv_dwarf_poly_indeterminate_value): Ditto.
24834 * config/riscv/vector-iterators.md: Ditto.
24835
24836 2023-04-04 Hans-Peter Nilsson <hp@axis.com>
24837
24838 * doc/md.texi (Including Patterns): Fix page break.
24839
24840 2023-04-04 Jakub Jelinek <jakub@redhat.com>
24841
24842 PR tree-optimization/109386
24843 * range-op-float.cc (foperator_lt::op1_range, foperator_lt::op2_range,
24844 foperator_le::op1_range, foperator_le::op2_range,
24845 foperator_gt::op1_range, foperator_gt::op2_range,
24846 foperator_ge::op1_range, foperator_ge::op2_range): Make r varying for
24847 BRS_FALSE case even if the other op is maybe_isnan, not just
24848 known_isnan.
24849 (foperator_unordered_lt::op1_range, foperator_unordered_lt::op2_range,
24850 foperator_unordered_le::op1_range, foperator_unordered_le::op2_range,
24851 foperator_unordered_gt::op1_range, foperator_unordered_gt::op2_range,
24852 foperator_unordered_ge::op1_range, foperator_unordered_ge::op2_range):
24853 Make r varying for BRS_TRUE case even if the other op is maybe_isnan,
24854 not just known_isnan.
24855
24856 2023-04-04 Marek Polacek <polacek@redhat.com>
24857
24858 PR sanitizer/109107
24859 * fold-const.cc (fold_binary_loc): Use TYPE_OVERFLOW_SANITIZED
24860 when associating.
24861 * match.pd: Use TYPE_OVERFLOW_SANITIZED.
24862
24863 2023-04-04 Stam Markianos-Wright <stam.markianos-wright@arm.com>
24864
24865 * config/arm/mve.md (mve_vcvtq_n_to_f_<supf><mode>): Swap operands.
24866 (mve_vcreateq_f<mode>): Swap operands.
24867
24868 2023-04-04 Andrew Stubbs <ams@codesourcery.com>
24869
24870 * config/gcn/gcn-valu.md (one_cmpl<mode>2<exec>): New.
24871
24872 2023-04-04 Jakub Jelinek <jakub@redhat.com>
24873
24874 PR target/109384
24875 * common/config/riscv/riscv-common.cc (riscv_subset_list::parse):
24876 Reword diagnostics about zfinx conflict with f, formatting fixes.
24877
24878 2023-04-04 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
24879
24880 * config/sol2.h (LIB_SPEC): Don't link with -lpthread.
24881
24882 2023-04-04 Richard Biener <rguenther@suse.de>
24883
24884 PR tree-optimization/109304
24885 * tree-profile.cc (tree_profiling): Use symtab node
24886 availability to decide whether to skip adjusting calls.
24887 Do not adjust calls to internal functions.
24888
24889 2023-04-04 Kewen Lin <linkw@linux.ibm.com>
24890
24891 PR target/108807
24892 * config/rs6000/rs6000.cc (rs6000_expand_vector_set_var_p9): Fix gen
24893 function for permutation control vector by considering big endianness.
24894
24895 2023-04-04 Kewen Lin <linkw@linux.ibm.com>
24896
24897 PR target/108699
24898 * config/rs6000/altivec.md (*p9v_parity<mode>2): Rename to ...
24899 (rs6000_vprtyb<mode>2): ... this.
24900 * config/rs6000/rs6000-builtins.def (VPRTYBD): Replace parityv2di2 with
24901 rs6000_vprtybv2di2.
24902 (VPRTYBW): Replace parityv4si2 with rs6000_vprtybv4si2.
24903 (VPRTYBQ): Replace parityv1ti2 with rs6000_vprtybv1ti2.
24904 * config/rs6000/vector.md (parity<mode>2 with VEC_IP): Expand with
24905 popcountv16qi2 and the corresponding rs6000_vprtyb<mode>2.
24906
24907 2023-04-04 Hans-Peter Nilsson <hp@axis.com>
24908 Sandra Loosemore <sandra@codesourcery.com>
24909
24910 * doc/md.texi (Insn Splitting): Tweak wording for readability.
24911
24912 2023-04-03 Martin Jambor <mjambor@suse.cz>
24913
24914 PR ipa/109303
24915 * ipa-prop.cc (determine_known_aggregate_parts): Check that the
24916 offset + size will be representable in unsigned int.
24917
24918 2023-04-03 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
24919
24920 * configure.ac (ZSTD_LIB): Move before zstd.h check.
24921 Unset gcc_cv_header_zstd_h without libzstd.
24922 * configure: Regenerate.
24923
24924 2023-04-03 Martin Liska <mliska@suse.cz>
24925
24926 * doc/invoke.texi: Document new param.
24927
24928 2023-04-03 Cupertino Miranda <cupertino.miranda@oracle.com>
24929
24930 * doc/sourcebuild.texi (const_volatile_readonly_section): Document
24931 new check_effective_target function.
24932
24933 2023-04-03 Li Xu <xuli1@eswincomputing.com>
24934
24935 * config/riscv/riscv-vector-builtins.def (vuint32m8_t): Fix typo.
24936 (vfloat32m8_t): Likewise
24937
24938 2023-04-03 liuhongt <hongtao.liu@intel.com>
24939
24940 * doc/md.texi: Document signbitm2.
24941
24942 2023-04-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
24943 kito-cheng <kito.cheng@sifive.com>
24944
24945 * config/riscv/vector.md: Fix RA constraint.
24946
24947 2023-04-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
24948
24949 * config/riscv/riscv-protos.h (gen_avl_for_scalar_move): New function.
24950 * config/riscv/riscv-v.cc (gen_avl_for_scalar_move): New function.
24951 * config/riscv/vector.md: Fix scalar move bug.
24952
24953 2023-04-01 Jakub Jelinek <jakub@redhat.com>
24954
24955 * range-op-float.cc (foperator_equal::fold_range): If at least
24956 one of the op ranges is not singleton and neither is NaN and all
24957 4 bounds are zero, return [1, 1].
24958 (foperator_not_equal::fold_range): In the same case return [0, 0].
24959
24960 2023-04-01 Jakub Jelinek <jakub@redhat.com>
24961
24962 * range-op-float.cc (foperator_equal::fold_range): Perform the
24963 non-singleton handling regardless of maybe_isnan (op1, op2).
24964 (foperator_not_equal::fold_range): Likewise.
24965 (foperator_lt::fold_range, foperator_le::fold_range,
24966 foperator_gt::fold_range, foperator_ge::fold_range): Perform the
24967 real_* comparison check which results in range_false (type)
24968 even if maybe_isnan (op1, op2). Simplify.
24969 (foperator_ltgt): New class.
24970 (fop_ltgt): New variable.
24971 (floating_op_table::floating_op_table): Handle LTGT_EXPR using
24972 fop_ltgt.
24973
24974 2023-04-01 Jakub Jelinek <jakub@redhat.com>
24975
24976 PR target/109254
24977 * builtins.cc (apply_args_size): If targetm.calls.get_raw_arg_mode
24978 returns VOIDmode, handle it like if the register isn't used for
24979 passing arguments at all.
24980 (apply_result_size): If targetm.calls.get_raw_result_mode returns
24981 VOIDmode, handle it like if the register isn't used for returning
24982 results at all.
24983 * target.def (get_raw_result_mode, get_raw_arg_mode): Document what it
24984 means to return VOIDmode.
24985 * doc/tm.texi: Regenerated.
24986 * config/aarch64/aarch64.cc (aarch64_function_value_regno_p): Return
24987 TARGET_SVE for P0_REGNUM.
24988 (aarch64_function_arg_regno_p): Also return true for p0-p3.
24989 (aarch64_get_reg_raw_mode): Return VOIDmode for PR_REGNUM_P regs.
24990
24991 2023-03-31 Vladimir N. Makarov <vmakarov@redhat.com>
24992
24993 * lra-constraints.cc: (combine_reload_insn): New function.
24994
24995 2023-03-31 Jakub Jelinek <jakub@redhat.com>
24996
24997 PR tree-optimization/91645
24998 * range-op-float.cc (foperator_unordered_lt::fold_range,
24999 foperator_unordered_le::fold_range,
25000 foperator_unordered_gt::fold_range,
25001 foperator_unordered_ge::fold_range,
25002 foperator_unordered_equal::fold_range): Call the ordered
25003 fold_range on ranges with cleared NaNs.
25004 * value-query.cc (range_query::get_tree_range): Handle also
25005 COMPARISON_CLASS_P trees.
25006
25007 2023-03-31 Kito Cheng <kito.cheng@sifive.com>
25008 Andrew Pinski <pinskia@gmail.com>
25009
25010 PR target/109328
25011 * config/riscv/t-riscv: Add missing dependencies.
25012
25013 2023-03-31 liuhongt <hongtao.liu@intel.com>
25014
25015 * config/i386/i386.cc (inline_memory_move_cost): Return 100
25016 for MASK_REGS when MODE_SIZE > 8.
25017
25018 2023-03-31 liuhongt <hongtao.liu@intel.com>
25019
25020 PR target/85048
25021 * config/i386/i386-builtin.def (BDESC): Adjust icode name from
25022 ufloat/ufix to floatuns/fixuns.
25023 * config/i386/i386-expand.cc
25024 (ix86_expand_vector_convert_uns_vsivsf): Adjust comments.
25025 * config/i386/sse.md
25026 (ufloat<sseintvecmodelower><mode>2<mask_name><round_name>):
25027 Renamed to ..
25028 (<mask_codefor>floatuns<sseintvecmodelower><mode>2<mask_name><round_name>):.. this.
25029 (<mask_codefor><avx512>_ufix_notrunc<sf2simodelower><mode><mask_name><round_name>):
25030 Renamed to ..
25031 (<mask_codefor><avx512>_fixuns_notrunc<sf2simodelower><mode><mask_name><round_name>):
25032 .. this.
25033 (<fixsuffix>fix_truncv16sfv16si2<mask_name><round_saeonly_name>):
25034 Renamed to ..
25035 (fix<fixunssuffix>_truncv16sfv16si2<mask_name><round_saeonly_name>):.. this.
25036 (ufloat<si2dfmodelower><mode>2<mask_name>): Renamed to ..
25037 (floatuns<si2dfmodelower><mode>2<mask_name>): .. this.
25038 (ufloatv2siv2df2<mask_name>): Renamed to ..
25039 (<mask_codefor>floatunsv2siv2df2<mask_name>): .. this.
25040 (ufix_notrunc<mode><si2dfmodelower>2<mask_name><round_name>):
25041 Renamed to ..
25042 (fixuns_notrunc<mode><si2dfmodelower>2<mask_name><round_name>):
25043 .. this.
25044 (ufix_notruncv2dfv2si2): Renamed to ..
25045 (fixuns_notruncv2dfv2si2):.. this.
25046 (ufix_notruncv2dfv2si2_mask): Renamed to ..
25047 (fixuns_notruncv2dfv2si2_mask): .. this.
25048 (*ufix_notruncv2dfv2si2_mask_1): Renamed to ..
25049 (*fixuns_notruncv2dfv2si2_mask_1): .. this.
25050 (ufix_truncv2dfv2si2): Renamed to ..
25051 (*fixuns_truncv2dfv2si2): .. this.
25052 (ufix_truncv2dfv2si2_mask): Renamed to ..
25053 (fixuns_truncv2dfv2si2_mask): .. this.
25054 (*ufix_truncv2dfv2si2_mask_1): Renamed to ..
25055 (*fixuns_truncv2dfv2si2_mask_1): .. this.
25056 (ufix_truncv4dfv4si2<mask_name>): Renamed to ..
25057 (fixuns_truncv4dfv4si2<mask_name>): .. this.
25058 (ufix_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
25059 Renamed to ..
25060 (fixuns_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
25061 .. this.
25062 (ufix_trunc<mode><sseintvecmodelower>2<mask_name>): Renamed to ..
25063 (<mask_codefor>fixuns_trunc<mode><sseintvecmodelower>2<mask_name>):
25064 .. this.
25065
25066 2023-03-30 Andrew MacLeod <amacleod@redhat.com>
25067
25068 PR tree-optimization/109154
25069 * gimple-range-gori.cc (gori_compute::may_recompute_p): Add depth limit.
25070 * gimple-range-gori.h (may_recompute_p): Add depth param.
25071 * params.opt (ranger-recompute-depth): New param.
25072
25073 2023-03-30 Jason Merrill <jason@redhat.com>
25074
25075 PR c++/107897
25076 PR c++/108887
25077 * cgraph.h: Move reset() from cgraph_node to symtab_node.
25078 * cgraphunit.cc (symtab_node::reset): Adjust. Also call
25079 remove_from_same_comdat_group.
25080
25081 2023-03-30 Richard Biener <rguenther@suse.de>
25082
25083 PR tree-optimization/107561
25084 * gimple-ssa-warn-access.cc (get_size_range): Add flags
25085 argument and pass it on.
25086 (check_access): When querying for the size range pass
25087 SR_ALLOW_ZERO when the known destination size is zero.
25088
25089 2023-03-30 Richard Biener <rguenther@suse.de>
25090
25091 PR tree-optimization/109342
25092 * tree-ssa-sccvn.cc (vn_nary_op_get_predicated_value): New
25093 overload for edge. When that edge is a backedge use
25094 dominated_by_p directly.
25095
25096 2023-03-30 liuhongt <hongtao.liu@intel.com>
25097
25098 * config/i386/i386-expand.cc (expand_vec_perm_blend): Generate
25099 vpblendd instead of vpblendw for V4SI under avx2.
25100
25101 2023-03-29 Hans-Peter Nilsson <hp@axis.com>
25102
25103 * config/cris/cris.cc (cris_rtx_costs) [CONST_INT]: Return 0
25104 for many quick operands, for register-sized modes.
25105
25106 2023-03-29 Jiawei <jiawei@iscas.ac.cn>
25107
25108 * common/config/riscv/riscv-common.cc (riscv_subset_list::parse):
25109 New check.
25110
25111 2023-03-29 Martin Liska <mliska@suse.cz>
25112
25113 PR bootstrap/109310
25114 * configure.ac: Emit a warning for deprecated option
25115 --enable-link-mutex.
25116 * configure: Regenerate.
25117
25118 2023-03-29 Richard Biener <rguenther@suse.de>
25119
25120 PR tree-optimization/109331
25121 * tree-ssa-forwprop.cc (pass_forwprop::execute): When we
25122 discover a taken edge make sure to cleanup the CFG.
25123
25124 2023-03-29 Richard Biener <rguenther@suse.de>
25125
25126 PR tree-optimization/109327
25127 * tree-ssa-forwprop.cc (pass_forwprop::execute): Deal with
25128 already removed stmts when draining to_remove.
25129
25130 2023-03-29 Richard Biener <rguenther@suse.de>
25131
25132 PR ipa/106124
25133 * dwarf2out.cc (lookup_type_die): Reset TREE_ASM_WRITTEN
25134 so we can re-create the DIE for the type if required.
25135
25136 2023-03-29 Jakub Jelinek <jakub@redhat.com>
25137 Richard Biener <rguenther@suse.de>
25138
25139 PR tree-optimization/109301
25140 * tree-ssa-math-opts.cc (pass_data_cse_sincos): Change
25141 properties_provided from PROP_gimple_opt_math to 0.
25142 (pass_data_expand_powcabs): Change properties_provided from 0 to
25143 PROP_gimple_opt_math.
25144
25145 2023-03-29 Richard Biener <rguenther@suse.de>
25146
25147 PR tree-optimization/109154
25148 * tree-if-conv.cc (gen_phi_arg_condition): Handle single
25149 inverted condition specially by inverting at the caller.
25150 (gen_phi_arg_condition): Swap COND_EXPR arms if requested.
25151
25152 2023-03-28 David Malcolm <dmalcolm@redhat.com>
25153
25154 PR c/107002
25155 * diagnostic-show-locus.cc (column_range::column_range): Factor
25156 out assertion conditional into...
25157 (column_range::valid_p): ...this new function.
25158 (line_corrections::add_hint): Don't attempt to consolidate hints
25159 if it would lead to invalid column_range instances.
25160
25161 2023-03-28 Kito Cheng <kito.cheng@sifive.com>
25162
25163 PR target/109312
25164 * config/riscv/riscv-c.cc (riscv_ext_version_value): New.
25165 (riscv_cpu_cpp_builtins): Define __riscv_v_intrinsic and
25166 minor refactor.
25167
25168 2023-03-28 Alexander Monakov <amonakov@ispras.ru>
25169
25170 PR rtl-optimization/109187
25171 * haifa-sched.cc (autopref_rank_for_schedule): Avoid use of overflowing
25172 subtraction in three-way comparison.
25173
25174 2023-03-28 Andrew MacLeod <amacleod@redhat.com>
25175
25176 PR tree-optimization/109265
25177 PR tree-optimization/109274
25178 * gimple-range-gori.cc (gori_compute::compute_operand_range): Do
25179 not create a relation record is op1 and op2 are the same symbol.
25180 (gori_compute::compute_operand1_range): Pass op1 == op2 to the
25181 handler for this stmt, but create a new record only if this statement
25182 generates a relation based on the ranges.
25183 (gori_compute::compute_operand2_range): Ditto.
25184 * value-relation.h (value_relation::set_relation): Always create the
25185 record that is requested.
25186
25187 2023-03-28 Richard Biener <rguenther@suse.de>
25188
25189 PR tree-optimization/107087
25190 * tree-ssa-forwprop.cc (pass_forwprop::execute): Track
25191 executable regions to avoid useless work and to better
25192 propagate degenerate PHIs.
25193
25194 2023-03-28 Costas Argyris <costas.argyris@gmail.com>
25195
25196 * config/i386/x-mingw32-utf8: update comments.
25197
25198 2023-03-28 Richard Sandiford <richard.sandiford@arm.com>
25199
25200 PR target/109072
25201 * config/aarch64/aarch64-protos.h (aarch64_vector_load_decl): Declare.
25202 * config/aarch64/aarch64.h (machine_function::vector_load_decls): New
25203 variable.
25204 * config/aarch64/aarch64-builtins.cc (aarch64_record_vector_load_arg):
25205 New function.
25206 (aarch64_general_gimple_fold_builtin): Delay folding of vld1 until
25207 after inlining. Record which decls are loaded from. Fix handling
25208 of vops for loads and stores.
25209 * config/aarch64/aarch64.cc (aarch64_vector_load_decl): New function.
25210 (aarch64_accesses_vector_load_decl_p): Likewise.
25211 (aarch64_vector_costs::m_stores_to_vector_load_decl): New member
25212 variable.
25213 (aarch64_vector_costs::add_stmt_cost): If the function has a vld1
25214 that loads from a decl, treat vector stores to those decls as
25215 zero cost.
25216 (aarch64_vector_costs::finish_cost): ...and in that case,
25217 if the vector code does nothing more than a store, give the
25218 prologue a zero cost as well.
25219
25220 2023-03-28 Richard Biener <rguenther@suse.de>
25221
25222 PR bootstrap/84402
25223 PR tree-optimization/108129
25224 * genmatch.cc (lower_for): For (match ...) delay
25225 substituting into the match operator if possible.
25226 (dt_operand::gen_gimple_expr): For user_id look at the
25227 first substitute for determining how to access operands.
25228 (dt_operand::gen_generic_expr): Likewise.
25229 (dt_node::gen_kids): Properly sort user_ids according
25230 to their substitutes.
25231 (dt_node::gen_kids_1): Code-generate user_id matching.
25232
25233 2023-03-28 Jakub Jelinek <jakub@redhat.com>
25234 Jonathan Wakely <jwakely@redhat.com>
25235
25236 * gcov-tool.cc (do_merge, do_merge_stream, do_rewrite, do_overlap):
25237 Use subcommand rather than sub-command in function comments.
25238
25239 2023-03-28 Jakub Jelinek <jakub@redhat.com>
25240
25241 PR tree-optimization/109154
25242 * value-range.h (frange::flush_denormals_to_zero): Make it public
25243 rather than private.
25244 * value-range.cc (frange::set): Don't call flush_denormals_to_zero
25245 here.
25246 * range-op-float.cc (range_operator_float::fold_range): Call
25247 flush_denormals_to_zero.
25248
25249 2023-03-28 Jakub Jelinek <jakub@redhat.com>
25250
25251 PR middle-end/106190
25252 * sanopt.cc (pass_sanopt::execute): Return TODO_cleanup_cfg if any
25253 of the IFN_{UB,HWA,A}SAN_* internal fns are lowered.
25254
25255 2023-03-28 Jakub Jelinek <jakub@redhat.com>
25256
25257 * range-op-float.cc (float_widen_lhs_range): Use pass get_nan_state
25258 as 4th argument to set to avoid clear_nan and union_ calls.
25259
25260 2023-03-28 Jakub Jelinek <jakub@redhat.com>
25261
25262 PR target/109276
25263 * config/i386/i386.cc (assign_386_stack_local): For DImode
25264 with SLOT_FLOATxFDI_387 and -m32 -mpreferred-stack-boundary=2 pass
25265 align 32 rather than 0 to assign_stack_local.
25266
25267 2023-03-28 Eric Botcazou <ebotcazou@adacore.com>
25268
25269 PR target/109140
25270 * config/sparc/sparc.cc (sparc_expand_vcond): Call signed_condition
25271 on operand #3 to get the final condition code. Use std::swap.
25272 * config/sparc/sparc.md (vcondv8qiv8qi): New VIS 4 expander.
25273 (fucmp<gcond:code>8<P:mode>_vis): Move around.
25274 (fpcmpu<gcond:code><GCM:gcm_name><P:mode>_vis): Likewise.
25275 (vcondu<GCM:mode><GCM:mode>): New VIS 4 expander.
25276
25277 2023-03-28 Eric Botcazou <ebotcazou@adacore.com>
25278
25279 * doc/gm2.texi: Add missing Next, Previous and Top fields to most
25280 top-level sections.
25281
25282 2023-03-28 Costas Argyris <costas.argyris@gmail.com>
25283
25284 * config.host: Pull in i386/x-mingw32-utf8 Makefile
25285 fragment and reference utf8rc-mingw32.o explicitly
25286 for mingw hosts.
25287 * config/i386/sym-mingw32.cc: prevent name mangling of
25288 stub symbol.
25289 * config/i386/x-mingw32-utf8: Make utf8rc-mingw32.o
25290 depend on manifest file explicitly.
25291
25292 2023-03-28 Richard Biener <rguenther@suse.de>
25293
25294 Revert:
25295 2023-03-27 Richard Biener <rguenther@suse.de>
25296
25297 PR rtl-optimization/109237
25298 * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
25299
25300 2023-03-28 Richard Biener <rguenther@suse.de>
25301
25302 * common.opt (gdwarf): Remove Negative(gdwarf-).
25303
25304 2023-03-28 Richard Biener <rguenther@suse.de>
25305
25306 * common.opt (gdwarf): Add RejectNegative.
25307 (gdwarf-): Likewise.
25308 (ggdb): Likewise.
25309 (gvms): Likewise.
25310
25311 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
25312
25313 * config/cris/constraints.md ("T"): Correct to
25314 define_memory_constraint.
25315
25316 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
25317
25318 * config/cris/cris.md (BW2): New mode-iterator.
25319 (lra_szext_decomposed, lra_szext_decomposed_indirect_with_offset): New
25320 peephole2s.
25321
25322 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
25323
25324 * config/cris/cris.md ("*add<mode>3_addi"): Improve to bail only
25325 for possible eliminable compares.
25326
25327 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
25328
25329 * config/cris/constraints.md ("R"): Remove unused constraint.
25330
25331 2023-03-27 Jonathan Wakely <jwakely@redhat.com>
25332
25333 PR gcov-profile/109297
25334 * gcov-tool.cc (merge_usage): Fix "subcomand" typo.
25335 (merge_stream_usage): Likewise.
25336 (overlap_usage): Likewise.
25337
25338 2023-03-27 Christoph Müllner <christoph.muellner@vrull.eu>
25339
25340 PR target/109296
25341 * config/riscv/thead.md: Add missing mode specifiers.
25342
25343 2023-03-27 Philipp Tomsich <philipp.tomsich@vrull.eu>
25344 Jiangning Liu <jiangning.liu@amperecomputing.com>
25345 Manolis Tsamis <manolis.tsamis@vrull.eu>
25346
25347 * config/aarch64/aarch64.cc: Update vector costs for ampere1.
25348
25349 2023-03-27 Richard Biener <rguenther@suse.de>
25350
25351 PR rtl-optimization/109237
25352 * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
25353
25354 2023-03-27 Richard Biener <rguenther@suse.de>
25355
25356 PR lto/109263
25357 * lto-wrapper.cc (run_gcc): Parse alternate debug options
25358 as well, they always enable debug.
25359
25360 2023-03-27 Kewen Lin <linkw@linux.ibm.com>
25361
25362 PR target/109167
25363 * config/rs6000/emmintrin.h (_mm_bslli_si128): Move the implementation
25364 from ...
25365 (_mm_slli_si128): ... here. Change to call _mm_bslli_si128 directly.
25366
25367 2023-03-27 Kewen Lin <linkw@linux.ibm.com>
25368
25369 PR target/109082
25370 * config/rs6000/emmintrin.h (_mm_bslli_si128): Check __N is not less
25371 than zero when calling vec_sld.
25372 (_mm_bsrli_si128): Return __A if __N is zero, check __N is bigger than
25373 zero when calling vec_sld.
25374 (_mm_slli_si128): Return __A if _imm5 is zero, check _imm5 is bigger
25375 than zero when calling vec_sld.
25376
25377 2023-03-27 Sandra Loosemore <sandra@codesourcery.com>
25378
25379 * doc/generic.texi (OpenMP): Document OMP_SIMD, OMP_DISTRIBUTE,
25380 OMP_TASKLOOP, and OMP_LOOP with OMP_FOR. Document how collapsed
25381 loops are represented and which fields are vectors. Add
25382 documentation for OMP_FOR_PRE_BODY field. Document internal
25383 form of non-rectangular loops and OMP_FOR_NON_RECTANGULAR.
25384 * tree.def (OMP_FOR): Make documentation consistent with the
25385 Texinfo manual, to fill some gaps and correct errors.
25386
25387 2023-03-26 Andreas Schwab <schwab@linux-m68k.org>
25388
25389 PR target/106282
25390 * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
25391 * config/m68k/m68k.cc (m68k_final_prescan_insn): Define.
25392 (handle_move_double): Call it before handle_movsi.
25393 * config/m68k/m68k-protos.h: Declare it.
25394
25395 2023-03-26 Jakub Jelinek <jakub@redhat.com>
25396
25397 PR tree-optimization/109230
25398 * match.pd (fneg/fadd simplify): Verify also odd permutation indexes.
25399
25400 2023-03-26 Jakub Jelinek <jakub@redhat.com>
25401
25402 PR ipa/105685
25403 * predict.cc (compute_function_frequency): Don't call
25404 warn_function_cold if function already has cold attribute.
25405
25406 2023-03-26 Gerald Pfeifer <gerald@pfeifer.com>
25407
25408 * doc/install.texi: Remove anachronistic note
25409 related to languages built and separate source tarballs.
25410
25411 2023-03-25 David Malcolm <dmalcolm@redhat.com>
25412
25413 PR analyzer/109098
25414 * diagnostic-format-sarif.cc (read_until_eof): Delete.
25415 (maybe_read_file): Delete.
25416 (sarif_builder::maybe_make_artifact_content_object): Use
25417 get_source_file_content rather than maybe_read_file.
25418 Reject it if it's not valid UTF-8.
25419 * input.cc (file_cache_slot::get_full_file_content): New.
25420 (get_source_file_content): New.
25421 (selftest::check_cpp_valid_utf8_p): New.
25422 (selftest::test_cpp_valid_utf8_p): New.
25423 (selftest::input_cc_tests): Call selftest::test_cpp_valid_utf8_p.
25424 * input.h (get_source_file_content): New prototype.
25425
25426 2023-03-24 David Malcolm <dmalcolm@redhat.com>
25427
25428 * doc/analyzer.texi (Debugging the Analyzer): Add notes on useful
25429 debugging options.
25430 (Special Functions for Debugging the Analyzer): Convert to a
25431 table, and rewrite in places.
25432 (Other Debugging Techniques): Add notes on how to compare two
25433 different exploded graphs.
25434
25435 2023-03-24 David Malcolm <dmalcolm@redhat.com>
25436
25437 PR other/109163
25438 * json.cc: Update comments to indicate that we now preserve
25439 insertion order of keys within objects.
25440 (object::print): Traverse keys in insertion order.
25441 (object::set): Preserve insertion order of keys.
25442 (selftest::test_writing_objects): Add an additional key to verify
25443 that we preserve insertion order.
25444 * json.h (object::m_keys): New field.
25445
25446 2023-03-24 Andrew MacLeod <amacleod@redhat.com>
25447
25448 PR tree-optimization/109238
25449 * gimple-range-cache.cc (ranger_cache::resolve_dom): Ignore
25450 predecessors which this block dominates.
25451
25452 2023-03-24 Richard Biener <rguenther@suse.de>
25453
25454 PR tree-optimization/106912
25455 * tree-profile.cc (tree_profiling): Update stmts only when
25456 profiling or testing coverage. Make sure to update calls
25457 fntype, stripping 'const' there.
25458
25459 2023-03-24 Jakub Jelinek <jakub@redhat.com>
25460
25461 PR middle-end/109258
25462 * builtins.cc (inline_expand_builtin_bytecmp): Return NULL_RTX early
25463 if target == const0_rtx.
25464
25465 2023-03-24 Alexandre Oliva <oliva@adacore.com>
25466
25467 * doc/sourcebuild.texi (weak_undefined, posix_memalign):
25468 Document options and effective targets.
25469
25470 2023-03-24 Costas Argyris <costas.argyris@gmail.com>
25471
25472 * config/i386/x-mingw32-utf8: Make HOST_EXTRA_OBJS_SYMBOL
25473 optional.
25474
25475 2023-03-23 Pat Haugen <pthaugen@linux.ibm.com>
25476
25477 * config/rs6000/rs6000.md (*mod<mode>3, umod<mode>3): Add
25478 non-earlyclobber alternative.
25479
25480 2023-03-23 Andrew Pinski <apinski@marvell.com>
25481
25482 PR c/84900
25483 * fold-const.cc (maybe_lvalue_p): Treat COMPOUND_LITERAL_EXPR
25484 as a lvalue.
25485
25486 2023-03-23 Richard Biener <rguenther@suse.de>
25487
25488 PR tree-optimization/107569
25489 * tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_stmt):
25490 Do not push SSA names with zero uses as available leader.
25491 (process_bb): Likewise.
25492
25493 2023-03-23 Richard Biener <rguenther@suse.de>
25494
25495 PR tree-optimization/109262
25496 * tree-ssa-forwprop.cc (pass_forwprop::execute): When
25497 combining a piecewise complex load avoid touching loads
25498 that throw internally. Use fun, not cfun throughout.
25499
25500 2023-03-23 Jakub Jelinek <jakub@redhat.com>
25501
25502 * value-range.cc (irange::irange_union, irange::intersect): Fix
25503 comment spelling bugs.
25504 * gimple-range-trace.cc (range_tracer::do_header): Likewise.
25505 * gimple-range-trace.h: Likewise.
25506 * gimple-range-edge.cc: Likewise.
25507 (gimple_outgoing_range_stmt_p,
25508 gimple_outgoing_range::switch_edge_range,
25509 gimple_outgoing_range::edge_range_p): Likewise.
25510 * gimple-range.cc (gimple_ranger::prefill_stmt_dependencies,
25511 gimple_ranger::fold_stmt, gimple_ranger::register_transitive_infer,
25512 assume_query::assume_query, assume_query::calculate_phi): Likewise.
25513 * gimple-range-edge.h: Likewise.
25514 * value-range.h (Value_Range::set, Value_Range::lower_bound,
25515 Value_Range::upper_bound, frange::set_undefined): Likewise.
25516 * gimple-range-gori.h (range_def_chain::depend, gori_map::m_outgoing,
25517 gori_compute): Likewise.
25518 * gimple-range-fold.h (fold_using_range): Likewise.
25519 * gimple-range-path.cc (path_range_query::compute_ranges_in_phis):
25520 Likewise.
25521 * gimple-range-gori.cc (range_def_chain::in_chain_p,
25522 range_def_chain::dump, gori_map::calculate_gori,
25523 gori_compute::compute_operand_range_switch,
25524 gori_compute::logical_combine, gori_compute::refine_using_relation,
25525 gori_compute::compute_operand1_range, gori_compute::may_recompute_p):
25526 Likewise.
25527 * gimple-range.h: Likewise.
25528 (enable_ranger): Likewise.
25529 * range-op.h (empty_range_varying): Likewise.
25530 * value-query.h (value_query): Likewise.
25531 * gimple-range-cache.cc (block_range_cache::set_bb_range,
25532 block_range_cache::dump, ssa_global_cache::clear_global_range,
25533 temporal_cache::temporal_value, temporal_cache::current_p,
25534 ranger_cache::range_of_def, ranger_cache::propagate_updated_value,
25535 ranger_cache::range_from_dom, ranger_cache::register_inferred_value):
25536 Likewise.
25537 * gimple-range-fold.cc (fur_edge::get_phi_operand,
25538 fur_stmt::get_operand, gimple_range_adjustment,
25539 fold_using_range::range_of_phi,
25540 fold_using_range::relation_fold_and_or): Likewise.
25541 * value-range-storage.h (irange_storage_slot::MAX_INTS): Likewise.
25542 * value-query.cc (range_query::value_of_expr,
25543 range_query::value_on_edge, range_query::query_relation): Likewise.
25544 * tree-vrp.cc (remove_unreachable::remove_and_update_globals,
25545 intersect_range_with_nonzero_bits): Likewise.
25546 * gimple-range-infer.cc (gimple_infer_range::check_assume_func,
25547 exit_range): Likewise.
25548 * value-relation.h: Likewise.
25549 (equiv_oracle, relation_trio::relation_trio, value_relation,
25550 value_relation::value_relation, pe_min): Likewise.
25551 * range-op-float.cc (range_operator_float::rv_fold,
25552 frange_arithmetic, foperator_unordered_equal::op1_range,
25553 foperator_div::rv_fold): Likewise.
25554 * gimple-range-op.cc (cfn_clz::fold_range): Likewise.
25555 * value-relation.cc (equiv_oracle::query_relation,
25556 equiv_oracle::register_equiv, equiv_oracle::add_equiv_to_block,
25557 value_relation::apply_transitive, relation_chain_head::find_relation,
25558 dom_oracle::query_relation, dom_oracle::find_relation_block,
25559 dom_oracle::find_relation_dom, path_oracle::register_equiv): Likewise.
25560 * range-op.cc (range_operator::wi_fold_in_parts_equiv,
25561 create_possibly_reversed_range, adjust_op1_for_overflow,
25562 operator_mult::wi_fold, operator_exact_divide::op1_range,
25563 operator_cast::lhs_op1_relation, operator_cast::fold_pair,
25564 operator_cast::fold_range, operator_abs::wi_fold, range_op_cast_tests,
25565 range_op_lshift_tests): Likewise.
25566
25567 2023-03-23 Andrew Stubbs <ams@codesourcery.com>
25568
25569 * config/gcn/gcn.cc (gcn_class_max_nregs): Handle vectors in SGPRs.
25570 (move_callee_saved_registers): Detect the bug condition early.
25571
25572 2023-03-23 Andrew Stubbs <ams@codesourcery.com>
25573
25574 * config/gcn/gcn-protos.h (gcn_stepped_zero_int_parallel_p): New.
25575 * config/gcn/gcn-valu.md (V_1REG_ALT): New.
25576 (V_2REG_ALT): New.
25577 (vec_extract<V_1REG:mode><V_1REG_ALT:mode>_nop): New.
25578 (vec_extract<V_2REG:mode><V_2REG_ALT:mode>_nop): New.
25579 (vec_extract<V_ALL:mode><V_ALL_ALT:mode>): Use new patterns.
25580 * config/gcn/gcn.cc (gcn_stepped_zero_int_parallel_p): New.
25581 * config/gcn/predicates.md (ascending_zero_int_parallel): New.
25582
25583 2023-03-23 Jakub Jelinek <jakub@redhat.com>
25584
25585 PR tree-optimization/109176
25586 * tree-vect-generic.cc (expand_vector_condition): If a has
25587 vector boolean type and is a comparison, also check if both
25588 the comparison and VEC_COND_EXPR could be successfully expanded
25589 individually.
25590
25591 2023-03-23 Pan Li <pan2.li@intel.com>
25592 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
25593
25594 PR target/108654
25595 PR target/108185
25596 * config/riscv/riscv-modes.def (ADJUST_BYTESIZE): Adjust size
25597 for vector mask modes.
25598 * config/riscv/riscv.cc (riscv_v_adjust_bytesize): New.
25599 * config/riscv/riscv.h (riscv_v_adjust_bytesize): New.
25600
25601 2023-03-23 Songhe Zhu <zhusonghe@eswincomputing.com>
25602
25603 * config/riscv/multilib-generator: Adjusting the loop of 'alt' in 'alts'.
25604
25605 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
25606
25607 PR target/109244
25608 * config/riscv/riscv-protos.h (emit_vlmax_vsetvl): Define as global.
25609 (emit_vlmax_op): Ditto.
25610 * config/riscv/riscv-v.cc (get_sew): New function.
25611 (emit_vlmax_vsetvl): Adapt function.
25612 (emit_pred_op): Ditto.
25613 (emit_vlmax_op): Ditto.
25614 (emit_nonvlmax_op): Ditto.
25615 (legitimize_move): Fix LRA ICE.
25616 (gen_no_side_effects_vsetvl_rtx): Adapt function.
25617 * config/riscv/vector.md (@mov<V_FRACT:mode><P:mode>_lra): New pattern.
25618 (@mov<VB:mode><P:mode>_lra): Ditto.
25619 (*mov<V_FRACT:mode><P:mode>_lra): Ditto.
25620 (*mov<VB:mode><P:mode>_lra): Ditto.
25621
25622 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
25623
25624 PR target/109228
25625 * config/riscv/riscv-vector-builtins-bases.cc (class vlenb): Add
25626 __riscv_vlenb support.
25627 (BASE): Ditto.
25628 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
25629 * config/riscv/riscv-vector-builtins-functions.def (vlenb): Ditto.
25630 * config/riscv/riscv-vector-builtins-shapes.cc (struct vlenb_def): Ditto.
25631 (SHAPE): Ditto.
25632 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
25633 * config/riscv/riscv-vector-builtins.cc: Ditto.
25634
25635 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
25636 kito-cheng <kito.cheng@sifive.com>
25637
25638 * config/riscv/riscv-vsetvl.cc (reg_available_p): Fix bugs.
25639 (pass_vsetvl::compute_local_backward_infos): Fix bugs.
25640 (pass_vsetvl::need_vsetvl): Fix bugs.
25641 (pass_vsetvl::backward_demand_fusion): Fix bugs.
25642 (pass_vsetvl::demand_fusion): Fix bugs.
25643 (eliminate_insn): Fix bugs.
25644 (insert_vsetvl): Ditto.
25645 (pass_vsetvl::emit_local_forward_vsetvls): Ditto.
25646 * config/riscv/riscv-vsetvl.h (enum vsetvl_type): Ditto.
25647 * config/riscv/vector.md: Ditto.
25648
25649 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
25650 kito-cheng <kito.cheng@sifive.com>
25651
25652 * config/riscv/riscv-vector-builtins-bases.cc: Fix ternary bug.
25653 * config/riscv/vector-iterators.md (nmsac): Ditto.
25654 (nmsub): Ditto.
25655 (msac): Ditto.
25656 (msub): Ditto.
25657 (nmadd): Ditto.
25658 (nmacc): Ditto.
25659 * config/riscv/vector.md (@pred_mul_<optab><mode>): Ditto.
25660 (@pred_mul_plus<mode>): Ditto.
25661 (*pred_madd<mode>): Ditto.
25662 (*pred_macc<mode>): Ditto.
25663 (*pred_mul_plus<mode>): Ditto.
25664 (@pred_mul_plus<mode>_scalar): Ditto.
25665 (*pred_madd<mode>_scalar): Ditto.
25666 (*pred_macc<mode>_scalar): Ditto.
25667 (*pred_mul_plus<mode>_scalar): Ditto.
25668 (*pred_madd<mode>_extended_scalar): Ditto.
25669 (*pred_macc<mode>_extended_scalar): Ditto.
25670 (*pred_mul_plus<mode>_extended_scalar): Ditto.
25671 (@pred_minus_mul<mode>): Ditto.
25672 (*pred_<madd_nmsub><mode>): Ditto.
25673 (*pred_nmsub<mode>): Ditto.
25674 (*pred_<macc_nmsac><mode>): Ditto.
25675 (*pred_nmsac<mode>): Ditto.
25676 (*pred_mul_<optab><mode>): Ditto.
25677 (*pred_minus_mul<mode>): Ditto.
25678 (@pred_mul_<optab><mode>_scalar): Ditto.
25679 (@pred_minus_mul<mode>_scalar): Ditto.
25680 (*pred_<madd_nmsub><mode>_scalar): Ditto.
25681 (*pred_nmsub<mode>_scalar): Ditto.
25682 (*pred_<macc_nmsac><mode>_scalar): Ditto.
25683 (*pred_nmsac<mode>_scalar): Ditto.
25684 (*pred_mul_<optab><mode>_scalar): Ditto.
25685 (*pred_minus_mul<mode>_scalar): Ditto.
25686 (*pred_<madd_nmsub><mode>_extended_scalar): Ditto.
25687 (*pred_nmsub<mode>_extended_scalar): Ditto.
25688 (*pred_<macc_nmsac><mode>_extended_scalar): Ditto.
25689 (*pred_nmsac<mode>_extended_scalar): Ditto.
25690 (*pred_mul_<optab><mode>_extended_scalar): Ditto.
25691 (*pred_minus_mul<mode>_extended_scalar): Ditto.
25692 (*pred_<madd_msub><mode>): Ditto.
25693 (*pred_<macc_msac><mode>): Ditto.
25694 (*pred_<madd_msub><mode>_scalar): Ditto.
25695 (*pred_<macc_msac><mode>_scalar): Ditto.
25696 (@pred_neg_mul_<optab><mode>): Ditto.
25697 (@pred_mul_neg_<optab><mode>): Ditto.
25698 (*pred_<nmadd_msub><mode>): Ditto.
25699 (*pred_<nmsub_nmadd><mode>): Ditto.
25700 (*pred_<nmacc_msac><mode>): Ditto.
25701 (*pred_<nmsac_nmacc><mode>): Ditto.
25702 (*pred_neg_mul_<optab><mode>): Ditto.
25703 (*pred_mul_neg_<optab><mode>): Ditto.
25704 (@pred_neg_mul_<optab><mode>_scalar): Ditto.
25705 (@pred_mul_neg_<optab><mode>_scalar): Ditto.
25706 (*pred_<nmadd_msub><mode>_scalar): Ditto.
25707 (*pred_<nmsub_nmadd><mode>_scalar): Ditto.
25708 (*pred_<nmacc_msac><mode>_scalar): Ditto.
25709 (*pred_<nmsac_nmacc><mode>_scalar): Ditto.
25710 (*pred_neg_mul_<optab><mode>_scalar): Ditto.
25711 (*pred_mul_neg_<optab><mode>_scalar): Ditto.
25712 (@pred_widen_neg_mul_<optab><mode>): Ditto.
25713 (@pred_widen_mul_neg_<optab><mode>): Ditto.
25714 (@pred_widen_neg_mul_<optab><mode>_scalar): Ditto.
25715 (@pred_widen_mul_neg_<optab><mode>_scalar): Ditto.
25716
25717 2023-03-23 liuhongt <hongtao.liu@intel.com>
25718
25719 * builtins.cc (builtin_memset_read_str): Replace
25720 targetm.gen_memset_scratch_rtx with gen_reg_rtx.
25721 (builtin_memset_gen_str): Ditto.
25722 * config/i386/i386-expand.cc
25723 (ix86_convert_const_wide_int_to_broadcast): Replace
25724 ix86_gen_scratch_sse_rtx with gen_reg_rtx.
25725 (ix86_expand_vector_move): Ditto.
25726 * config/i386/i386-protos.h (ix86_gen_scratch_sse_rtx):
25727 Removed.
25728 * config/i386/i386.cc (ix86_gen_scratch_sse_rtx): Removed.
25729 (TARGET_GEN_MEMSET_SCRATCH_RTX): Removed.
25730 * doc/tm.texi: Remove TARGET_GEN_MEMSET_SCRATCH_RTX.
25731 * doc/tm.texi.in: Ditto.
25732 * target.def: Ditto.
25733
25734 2023-03-22 Vladimir N. Makarov <vmakarov@redhat.com>
25735
25736 * lra.cc (lra): Do not repeat inheritance and live range splitting
25737 when asm error is found.
25738
25739 2023-03-22 Andrew Jenner <andrew@codesourcery.com>
25740
25741 * config/gcn/gcn-protos.h (gcn_expand_dpp_swap_pairs_insn)
25742 (gcn_expand_dpp_distribute_even_insn)
25743 (gcn_expand_dpp_distribute_odd_insn): Declare.
25744 * config/gcn/gcn-valu.md (@dpp_swap_pairs<mode>)
25745 (@dpp_distribute_even<mode>, @dpp_distribute_odd<mode>)
25746 (cmul<conj_op><mode>3, cml<addsub_as><mode>4, vec_addsub<mode>3)
25747 (cadd<rot><mode>3, vec_fmaddsub<mode>4, vec_fmsubadd<mode>4)
25748 (fms<mode>4<exec>, fms<mode>4_negop2<exec>, fms<mode>4)
25749 (fms<mode>4_negop2): New patterns.
25750 * config/gcn/gcn.cc (gcn_expand_dpp_swap_pairs_insn)
25751 (gcn_expand_dpp_distribute_even_insn)
25752 (gcn_expand_dpp_distribute_odd_insn): New functions.
25753 * config/gcn/gcn.md: Add entries to unspec enum.
25754
25755 2023-03-22 Aldy Hernandez <aldyh@redhat.com>
25756
25757 PR tree-optimization/109008
25758 * value-range.cc (frange::set): Add nan_state argument.
25759 * value-range.h (class nan_state): New.
25760 (frange::get_nan_state): New.
25761
25762 2023-03-22 Martin Liska <mliska@suse.cz>
25763
25764 * configure: Regenerate.
25765
25766 2023-03-21 Joseph Myers <joseph@codesourcery.com>
25767
25768 * stor-layout.cc (finalize_type_size): Copy TYPE_TYPELESS_STORAGE
25769 to variants.
25770
25771 2023-03-21 Andrew MacLeod <amacleod@redhat.com>
25772
25773 PR tree-optimization/109192
25774 * gimple-range-gori.cc (gori_compute::compute_operand_range):
25775 Terminate gori calculations if a relation is not relevant.
25776 * value-relation.h (value_relation::set_relation): Allow
25777 equality between op1 and op2 if they are the same.
25778
25779 2023-03-21 Richard Biener <rguenther@suse.de>
25780
25781 PR tree-optimization/109219
25782 * tree-vect-loop.cc (vectorizable_reduction): Check
25783 slp_node, not STMT_SLP_TYPE.
25784 * tree-vect-stmts.cc (vectorizable_condition): Likewise.
25785 * tree-vect-slp.cc (vect_slp_analyze_node_operations_1):
25786 Remove assertion on STMT_SLP_TYPE.
25787
25788 2023-03-21 Jakub Jelinek <jakub@redhat.com>
25789
25790 PR tree-optimization/109215
25791 * tree.h (enum special_array_member): Adjust comments for int_0
25792 and trail_0.
25793 * tree.cc (component_ref_sam_type): Clear zero_elts if memtype
25794 has zero sized element type and the array has variable number of
25795 elements or constant one or more elements.
25796 (component_ref_size): Adjust comments, formatting fix.
25797
25798 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
25799
25800 * configure.ac: Add check for the Texinfo 6.8
25801 CONTENTS_OUTPUT_LOCATION customization variable and set it if
25802 supported.
25803 * configure: Regenerate.
25804 * Makefile.in (MAKEINFO_TOC_INLINE_FLAG): New variable. Set by
25805 configure.ac to -c CONTENTS_OUTPUT_LOCATION=inline if
25806 CONTENTS_OUTPUT_LOCATION support is detected, empty otherwise.
25807 ($(build_htmldir)/%/index.html): Pass MAKEINFO_TOC_INLINE_FLAG.
25808
25809 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
25810
25811 * doc/extend.texi: Associate use_hazard_barrier_return index
25812 entry with its attribute.
25813 * doc/invoke.texi: Associate -fcanon-prefix-map index entry with
25814 its attribute
25815
25816 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
25817
25818 * doc/implement-c.texi: Remove usage of @gol.
25819 * doc/invoke.texi: Ditto.
25820 * doc/sourcebuild.texi: Ditto.
25821 * doc/include/gcc-common.texi: Remove @gol. In new Makeinfo and
25822 texinfo.tex versions, the bug it was working around appears to
25823 be gone.
25824
25825 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
25826
25827 * doc/include/texinfo.tex: Update to 2023-01-17.19.
25828
25829 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
25830
25831 * doc/include/gcc-common.texi: Add @defbuiltin{,x} and
25832 @enddefbuiltin for defining built-in functions.
25833 * doc/extend.texi: Apply @defbuiltin{,x} to many, but not all,
25834 places where it should be used.
25835
25836 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
25837
25838 * doc/extend.texi (Formatted Output Function Checking): New
25839 subsection for grouping together printf et al.
25840 (Exception handling) Fix missing @ sign before copyright
25841 header, which lead to the copyright line leaking into
25842 '(gcc)Exception handling'.
25843 * doc/gcc.texi: Set document language to en_US.
25844 (@copying): Wrap front cover texts in quotations, move in manual
25845 description text.
25846
25847 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
25848
25849 * doc/gcc.texi: Add the Indices appendix, to make texinfo
25850 generate nice indices overview page.
25851
25852 2023-03-21 Richard Biener <rguenther@suse.de>
25853
25854 PR tree-optimization/109170
25855 * gimple-range-op.cc (cfn_pass_through_arg1): New.
25856 (gimple_range_op_handler::maybe_builtin_call): Handle
25857 __builtin_expect via cfn_pass_through_arg1.
25858
25859 2023-03-20 Michael Meissner <meissner@linux.ibm.com>
25860
25861 PR target/109067
25862 * config/rs6000/rs6000.cc (create_complex_muldiv): Delete.
25863 (init_float128_ieee): Delete code to switch complex multiply and divide
25864 for long double.
25865 (complex_multiply_builtin_code): New helper function.
25866 (complex_divide_builtin_code): Likewise.
25867 (rs6000_mangle_decl_assembler_name): Add support for mangling the name
25868 of complex 128-bit multiply and divide built-in functions.
25869
25870 2023-03-20 Peter Bergner <bergner@linux.ibm.com>
25871
25872 PR target/109178
25873 * config/rs6000/rs6000-builtin.cc (stv_expand_builtin): Use tmode.
25874
25875 2023-03-19 Jonny Grant <jg@jguk.org>
25876
25877 * doc/extend.texi (Common Function Attributes) <nonnull>:
25878 Correct typo.
25879
25880 2023-03-18 Peter Bergner <bergner@linux.ibm.com>
25881
25882 PR rtl-optimization/109179
25883 * lra-constraints.cc (combine_reload_insn): Enforce TO is not a debug
25884 insn or note. Move the tests earlier to guard lra_get_insn_recog_data.
25885
25886 2023-03-17 Jakub Jelinek <jakub@redhat.com>
25887
25888 PR target/105554
25889 * function.h (push_struct_function): Add ABSTRACT_P argument defaulted
25890 to false.
25891 * function.cc (push_struct_function): Add ABSTRACT_P argument, pass it
25892 to allocate_struct_function instead of false.
25893 * tree-inline.cc (initialize_cfun): Don't copy DECL_ARGUMENTS
25894 nor DECL_RESULT here. Pass true as ABSTRACT_P to
25895 push_struct_function. Call targetm.target_option.relayout_function
25896 after it.
25897 (tree_function_versioning): Formatting fix.
25898
25899 2023-03-17 Vladimir N. Makarov <vmakarov@redhat.com>
25900
25901 * lra-constraints.cc: Include hooks.h.
25902 (combine_reload_insn): New function.
25903 (lra_constraints): Call it.
25904
25905 2023-03-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
25906 kito-cheng <kito.cheng@sifive.com>
25907
25908 * config/riscv/riscv-v.cc (legitimize_move): Allow undef value
25909 as legitimate value.
25910 * config/riscv/riscv-vector-builtins.cc
25911 (function_expander::use_ternop_insn): Fix bugs of ternary intrinsic.
25912 (function_expander::use_widen_ternop_insn): Ditto.
25913 * config/riscv/vector.md (@vundefined<mode>): New pattern.
25914 (pred_mul_<optab><mode>_undef_merge): Remove.
25915 (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
25916 (*pred_mul_<optab><mode>_undef_merge_extended_scalar): Ditto.
25917 (pred_neg_mul_<optab><mode>_undef_merge): Ditto.
25918 (*pred_neg_mul_<optab><mode>_undef_merge_scalar): Ditto.
25919
25920 2023-03-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
25921
25922 PR target/109092
25923 * config/riscv/riscv.md: Fix subreg bug.
25924
25925 2023-03-17 Jakub Jelinek <jakub@redhat.com>
25926
25927 PR middle-end/108685
25928 * omp-expand.cc (expand_omp_for_ordered_loops): Add L0_BB argument,
25929 use its loop_father rather than BODY_BB's loop_father.
25930 (expand_omp_for_generic): Adjust expand_omp_for_ordered_loops caller.
25931 If broken_loop with ordered > collapse and at least one of those
25932 extra loops aren't guaranteed to have at least one iteration, change
25933 l0_bb's loop_father to entry_bb's loop_father. Set cont_bb's
25934 loop_father to l0_bb's loop_father rather than l1_bb's.
25935
25936 2023-03-17 Jakub Jelinek <jakub@redhat.com>
25937
25938 PR plugins/108634
25939 * gdbhooks.py (TreePrinter.to_string): Wrap
25940 gdb.parse_and_eval('tree_code_type') in a try block, parse
25941 and eval 'tree_code_type_tmpl<0>::tree_code_type' instead if it
25942 raises exception. Update comments for the recent tree_code_type
25943 changes.
25944
25945 2023-03-17 Sandra Loosemore <sandra@codesourcery.com>
25946
25947 * doc/extend.texi (BPF Built-in Functions): Fix numerous markup
25948 issues. Add more line breaks to example so it doesn't overflow
25949 the margins.
25950
25951 2023-03-17 Sandra Loosemore <sandra@codesourcery.com>
25952
25953 * doc/extend.texi (Common Function Attributes) <access>: Fix bad
25954 line breaks in examples.
25955 <malloc>: Fix bad line breaks in running text, also copy-edit
25956 for consistency.
25957 (Extended Asm) <Generic Operand Modifiers>: Fix @multitable width.
25958 * doc/invoke.texi (Option Summary) <Developer Options>: Fix misplaced
25959 @gol.
25960 (C++ Dialect Options) <-fcontracts>: Add line break in example.
25961 <-Wctad-maybe-unsupported>: Likewise.
25962 <-Winvalid-constexpr>: Likewise.
25963 (Warning Options) <-Wdangling-pointer>: Likewise.
25964 <-Winterference-size>: Likewise.
25965 <-Wvla-parameter>: Likewise.
25966 (Static Analyzer Options): Fix bad line breaks in running text,
25967 plus add some missing markup.
25968 (Optimize Options) <openacc-privatization>: Fix more bad line
25969 breaks in running text.
25970
25971 2023-03-16 Uros Bizjak <ubizjak@gmail.com>
25972
25973 * config/i386/i386-expand.cc (expand_vec_perm_pblendv):
25974 Handle 8-byte modes only with TARGET_MMX_WITH_SSE.
25975 (expand_vec_perm_2perm_pblendv): Ditto.
25976
25977 2023-03-16 Martin Liska <mliska@suse.cz>
25978
25979 PR middle-end/106133
25980 * gcc.cc (driver_handle_option): Use x_main_input_basename
25981 if x_dump_base_name is null.
25982 * opts.cc (common_handle_option): Likewise.
25983
25984 2023-03-16 Richard Biener <rguenther@suse.de>
25985
25986 PR tree-optimization/109123
25987 * gimple-ssa-warn-access.cc (pass_waccess::warn_invalid_pointer):
25988 Do not emit -Wuse-after-free late.
25989 (pass_waccess::check_call): Always check call pointer uses.
25990
25991 2023-03-16 Richard Biener <rguenther@suse.de>
25992
25993 PR tree-optimization/109141
25994 * tree-dfa.h (renumber_gimple_stmt_uids_in_block): New.
25995 * tree-dfa.cc (renumber_gimple_stmt_uids_in_block): Split
25996 out from ...
25997 (renumber_gimple_stmt_uids): ... here and
25998 (renumber_gimple_stmt_uids_in_blocks): ... here.
25999 * gimple-ssa-warn-access.cc (pass_waccess::use_after_inval_p):
26000 Use renumber_gimple_stmt_uids_in_block to also assign UIDs
26001 to PHIs.
26002 (pass_waccess::check_pointer_uses): Process all PHIs.
26003
26004 2023-03-15 David Malcolm <dmalcolm@redhat.com>
26005
26006 PR analyzer/109097
26007 * diagnostic-format-sarif.cc (class sarif_invocation): New.
26008 (class sarif_ice_notification): New.
26009 (sarif_builder::m_invocation_obj): New field.
26010 (sarif_invocation::add_notification_for_ice): New.
26011 (sarif_invocation::prepare_to_flush): New.
26012 (sarif_ice_notification::sarif_ice_notification): New.
26013 (sarif_builder::sarif_builder): Add m_invocation_obj.
26014 (sarif_builder::end_diagnostic): Special-case DK_ICE and
26015 DK_ICE_NOBT.
26016 (sarif_builder::flush_to_file): Call prepare_to_flush on
26017 m_invocation_obj. Pass the latter to make_top_level_object.
26018 (sarif_builder::make_result_object): Move creation of "locations"
26019 array to...
26020 (sarif_builder::make_locations_arr): ...this new function.
26021 (sarif_builder::make_top_level_object): Add "invocation_obj" param
26022 and pass it to make_run_object.
26023 (sarif_builder::make_run_object): Add "invocation_obj" param and
26024 use it.
26025 (sarif_ice_handler): New callback.
26026 (diagnostic_output_format_init_sarif): Wire up sarif_ice_handler.
26027 * diagnostic.cc (diagnostic_initialize): Initialize new field
26028 "ice_handler_cb".
26029 (diagnostic_action_after_output): If it is set, make one attempt
26030 to call ice_handler_cb.
26031 * diagnostic.h (diagnostic_context::ice_handler_cb): New field.
26032
26033 2023-03-15 Uros Bizjak <ubizjak@gmail.com>
26034
26035 * config/i386/i386-expand.cc (expand_vec_perm_blend):
26036 Handle 8-byte modes only with TARGET_MMX_WITH_SSE. Handle V2SFmode
26037 and fix V2HImode handling.
26038 (expand_vec_perm_1): Try to emit BLEND instruction
26039 before MOVSS/MOVSD.
26040 * config/i386/mmx.md (*mmx_blendps): New insn pattern.
26041
26042 2023-03-15 Tobias Burnus <tobias@codesourcery.com>
26043
26044 * omp-low.cc (omp_runtime_api_call): Add omp_in_explicit_task.
26045
26046 2023-03-15 Richard Biener <rguenther@suse.de>
26047
26048 * gimple-ssa-warn-access.cc (pass_waccess::check_pointer_uses):
26049 Do not diagnose clobbers.
26050
26051 2023-03-15 Richard Biener <rguenther@suse.de>
26052
26053 PR tree-optimization/109139
26054 * tree-ssa-live.cc (remove_unused_locals): Look at the
26055 base address for unused decls on the LHS of .DEFERRED_INIT.
26056
26057 2023-03-15 Xi Ruoyao <xry111@xry111.site>
26058
26059 PR other/109086
26060 * builtins.cc (inline_string_cmp): Force the character
26061 difference into "result" pseudo-register, instead of reassign
26062 the pseudo-register.
26063
26064 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
26065
26066 * config.gcc: Add thead.o to RISC-V extra_objs.
26067 * config/riscv/peephole.md: Add mempair peephole passes.
26068 * config/riscv/riscv-protos.h (riscv_split_64bit_move_p): New
26069 prototype.
26070 (th_mempair_operands_p): Likewise.
26071 (th_mempair_order_operands): Likewise.
26072 (th_mempair_prepare_save_restore_operands): Likewise.
26073 (th_mempair_save_restore_regs): Likewise.
26074 (th_mempair_output_move): Likewise.
26075 * config/riscv/riscv.cc (riscv_save_reg): Move code.
26076 (riscv_restore_reg): Move code.
26077 (riscv_for_each_saved_reg): Add code to emit mempair insns.
26078 * config/riscv/t-riscv: Add thead.cc.
26079 * config/riscv/thead.md (*th_mempair_load_<GPR:mode>2):
26080 New insn.
26081 (*th_mempair_store_<GPR:mode>2): Likewise.
26082 (*th_mempair_load_extendsidi2): Likewise.
26083 (*th_mempair_load_zero_extendsidi2): Likewise.
26084 * config/riscv/thead.cc: New file.
26085
26086 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
26087
26088 * config/riscv/constraints.md (TARGET_XTHEADFMV ? FP_REGS : NO_REGS)
26089 New constraint "th_f_fmv".
26090 (TARGET_XTHEADFMV ? GR_REGS : NO_REGS): New constraint
26091 "th_r_fmv".
26092 * config/riscv/riscv.cc (riscv_split_doubleword_move):
26093 Add split code for XTheadFmv.
26094 (riscv_secondary_memory_needed): XTheadFmv does not need
26095 secondary memory.
26096 * config/riscv/riscv.md: Add new UNSPEC_XTHEADFMV and
26097 UNSPEC_XTHEADFMV_HW. Add support for XTheadFmv to
26098 movdf_hardfloat_rv32.
26099 * config/riscv/thead.md (th_fmv_hw_w_x): New INSN.
26100 (th_fmv_x_w): New INSN.
26101 (th_fmv_x_hw): New INSN.
26102
26103 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
26104
26105 * config/riscv/riscv.md (maddhisi4): New expand.
26106 (msubhisi4): New expand.
26107 * config/riscv/thead.md (*th_mula<mode>): New pattern.
26108 (*th_mulawsi): New pattern.
26109 (*th_mulawsi2): New pattern.
26110 (*th_maddhisi4): New pattern.
26111 (*th_sextw_maddhisi4): New pattern.
26112 (*th_muls<mode>): New pattern.
26113 (*th_mulswsi): New pattern.
26114 (*th_mulswsi2): New pattern.
26115 (*th_msubhisi4): New pattern.
26116 (*th_sextw_msubhisi4): New pattern.
26117
26118 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
26119
26120 * config/riscv/iterators.md (TARGET_64BIT): Add GPR2 iterator.
26121 * config/riscv/riscv-protos.h (riscv_expand_conditional_move):
26122 Add prototype.
26123 * config/riscv/riscv.cc (riscv_rtx_costs): Add costs for
26124 XTheadCondMov.
26125 (riscv_expand_conditional_move): New function.
26126 (riscv_expand_conditional_move_onesided): New function.
26127 * config/riscv/riscv.md: Add support for XTheadCondMov.
26128 * config/riscv/thead.md (*th_cond_mov<GPR:mode><GPR2:mode>): Add
26129 support for XTheadCondMov.
26130 (*th_cond_gpr_mov<GPR:mode><GPR2:mode>): Likewise.
26131
26132 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
26133
26134 * config/riscv/bitmanip.md (clzdi2): New expand.
26135 (clzsi2): New expand.
26136 (ctz<mode>2): New expand.
26137 (popcount<mode>2): New expand.
26138 (<bitmanip_optab>si2): Rename INSN.
26139 (*<bitmanip_optab>si2): Hide INSN name.
26140 (<bitmanip_optab>di2): Rename INSN.
26141 (*<bitmanip_optab>di2): Hide INSN name.
26142 (rotrsi3): Remove INSN.
26143 (rotr<mode>3): Add expand.
26144 (*rotrsi3): New INSN.
26145 (rotrdi3): Rename INSN.
26146 (*rotrdi3): Hide INSN name.
26147 (rotrsi3_sext): Rename INSN.
26148 (*rotrsi3_sext): Hide INSN name.
26149 (bswap<mode>2): Remove INSN.
26150 (bswapdi2): Add expand.
26151 (bswapsi2): Add expand.
26152 (*bswap<mode>2): Hide INSN name.
26153 * config/riscv/riscv.cc (riscv_rtx_costs): Add costs for sign
26154 extraction.
26155 * config/riscv/riscv.md (extv<mode>): New expand.
26156 (extzv<mode>): New expand.
26157 * config/riscv/thead.md (*th_srri<mode>3): New INSN.
26158 (*th_ext<mode>): New INSN.
26159 (*th_extu<mode>): New INSN.
26160 (*th_clz<mode>2): New INSN.
26161 (*th_rev<mode>2): New INSN.
26162
26163 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
26164
26165 * config/riscv/riscv.cc (riscv_rtx_costs): Add xthead:tst cost.
26166 * config/riscv/thead.md (*th_tst<mode>3): New INSN.
26167
26168 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
26169
26170 * config/riscv/riscv.md: Include thead.md
26171 * config/riscv/thead.md: New file.
26172
26173 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
26174
26175 * config/riscv/riscv-cores.def (RISCV_CORE): Add "thead-c906".
26176
26177 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
26178
26179 * common/config/riscv/riscv-common.cc: Add xthead* extensions.
26180 * config/riscv/riscv-opts.h (MASK_XTHEADBA): New.
26181 (MASK_XTHEADBB): New.
26182 (MASK_XTHEADBS): New.
26183 (MASK_XTHEADCMO): New.
26184 (MASK_XTHEADCONDMOV): New.
26185 (MASK_XTHEADFMEMIDX): New.
26186 (MASK_XTHEADFMV): New.
26187 (MASK_XTHEADINT): New.
26188 (MASK_XTHEADMAC): New.
26189 (MASK_XTHEADMEMIDX): New.
26190 (MASK_XTHEADMEMPAIR): New.
26191 (MASK_XTHEADSYNC): New.
26192 (TARGET_XTHEADBA): New.
26193 (TARGET_XTHEADBB): New.
26194 (TARGET_XTHEADBS): New.
26195 (TARGET_XTHEADCMO): New.
26196 (TARGET_XTHEADCONDMOV): New.
26197 (TARGET_XTHEADFMEMIDX): New.
26198 (TARGET_XTHEADFMV): New.
26199 (TARGET_XTHEADINT): New.
26200 (TARGET_XTHEADMAC): New.
26201 (TARGET_XTHEADMEMIDX): New.
26202 (TARGET_XTHEADMEMPAIR): new.
26203 (TARGET_XTHEADSYNC): New.
26204 * config/riscv/riscv.opt: Add riscv_xthead_subext.
26205
26206 2023-03-15 Hu, Lin1 <lin1.hu@intel.com>
26207
26208 PR target/109117
26209 * config/i386/i386-builtin.def (__builtin_ia32_vaesdec_v16qi,
26210 __builtin_ia32_vaesdeclast_v16qi,__builtin_ia32_vaesenc_v16qi,
26211 __builtin_ia32_vaesenclast_v16qi): Require OPTION_MASK_ISA_AVX512VL.
26212
26213 2023-03-14 Jakub Jelinek <jakub@redhat.com>
26214
26215 PR target/109109
26216 * config/i386/i386-expand.cc (split_double_concat): Fix splitting
26217 when lo is equal to dhi and hi is a MEM which uses dlo register.
26218
26219 2023-03-14 Martin Jambor <mjambor@suse.cz>
26220
26221 PR ipa/107925
26222 * ipa-cp.cc (update_profiling_info): Drop counts of orig_node to
26223 global0 instead of zeroing when it does not have as many counts as
26224 it should.
26225
26226 2023-03-14 Martin Jambor <mjambor@suse.cz>
26227
26228 PR ipa/107925
26229 * ipa-cp.cc (update_specialized_profile): Drop orig_node_count to
26230 ipa count, remove assert, lenient_count_portion_handling, dump
26231 also orig_node_count.
26232
26233 2023-03-14 Uros Bizjak <ubizjak@gmail.com>
26234
26235 * config/i386/i386-expand.cc (expand_vec_perm_movs):
26236 Handle V2SImode for TARGET_MMX_WITH_SSE.
26237 * config/i386/mmx.md (*mmx_movss_<mode>): Rename from *mmx_movss
26238 using V2FI mode iterator to handle both V2SI and V2SF modes.
26239
26240 2023-03-14 Sam James <sam@gentoo.org>
26241
26242 * config/riscv/genrvv-type-indexer.cc: Avoid calloc() poisoning on musl by
26243 including <sstream> earlier.
26244 * system.h: Add INCLUDE_SSTREAM.
26245
26246 2023-03-14 Richard Biener <rguenther@suse.de>
26247
26248 * tree-ssa-live.cc (remove_unused_locals): Do not treat
26249 the .DEFERRED_INIT of a variable as use, instead remove
26250 that if it is the only use.
26251
26252 2023-03-14 Eric Botcazou <ebotcazou@adacore.com>
26253
26254 PR rtl-optimization/107762
26255 * expr.cc (emit_group_store): Revert latest change.
26256
26257 2023-03-14 Andre Vieira <andre.simoesdiasvieira@arm.com>
26258
26259 PR tree-optimization/109005
26260 * tree-if-conv.cc (get_bitfield_rep): Replace BLKmode check with
26261 aggregate type check.
26262
26263 2023-03-14 Jakub Jelinek <jakub@redhat.com>
26264
26265 PR tree-optimization/109115
26266 * tree-vect-patterns.cc (vect_recog_divmod_pattern): Don't use
26267 r.upper_bound () on r.undefined_p () range.
26268
26269 2023-03-14 Jan Hubicka <hubicka@ucw.cz>
26270
26271 PR tree-optimization/106896
26272 * profile-count.cc (profile_count::to_sreal_scale): Synchronize
26273 implementatoin with probability_in; avoid some asserts.
26274
26275 2023-03-13 Max Filippov <jcmvbkbc@gmail.com>
26276
26277 * config/xtensa/linux.h (TARGET_ASM_FILE_END): New macro.
26278
26279 2023-03-13 Sean Bright <sean@seanbright.com>
26280
26281 * doc/invoke.texi (Warning Options): Remove errant 'See'
26282 before @xref.
26283
26284 2023-03-13 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
26285
26286 * config/xtensa/xtensa.h (REG_OK_STRICT, REG_OK_FOR_INDEX_P,
26287 REG_OK_FOR_BASE_P): Remove.
26288
26289 2023-03-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26290
26291 * config/riscv/vector-iterators.md (=vd,vr): Fine tune.
26292 (=vd,vd,vr,vr): Ditto.
26293 * config/riscv/vector.md: Ditto.
26294
26295 2023-03-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26296
26297 * config/riscv/riscv-vector-builtins.cc
26298 (function_expander::use_compare_insn): Add operand predicate check.
26299
26300 2023-03-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26301
26302 * config/riscv/vector.md: Fine tune RA constraints.
26303
26304 2023-03-13 Tobias Burnus <tobias@codesourcery.com>
26305
26306 * config/gcn/mkoffload.cc (main): Pass -save-temps on for the
26307 hsaco assemble/link.
26308
26309 2023-03-13 Richard Biener <rguenther@suse.de>
26310
26311 PR tree-optimization/109046
26312 * tree-ssa-forwprop.cc (pass_forwprop::execute): Combine
26313 piecewise complex loads.
26314
26315 2023-03-12 Jakub Jelinek <jakub@redhat.com>
26316
26317 * config/aarch64/aarch64.h (aarch64_bf16_type_node): Remove.
26318 (aarch64_bf16_ptr_type_node): Adjust comment.
26319 * config/aarch64/aarch64.cc (aarch64_gimplify_va_arg_expr): Use
26320 bfloat16_type_node rather than aarch64_bf16_type_node.
26321 (aarch64_libgcc_floating_mode_supported_p,
26322 aarch64_scalar_mode_supported_p): Also support BFmode.
26323 (aarch64_invalid_conversion, aarch64_invalid_unary_op): Remove.
26324 (aarch64_invalid_binary_op): Remove BFmode related rejections.
26325 (TARGET_INVALID_CONVERSION, TARGET_INVALID_UNARY_OP): Don't redefine.
26326 * config/aarch64/aarch64-builtins.cc (aarch64_bf16_type_node): Remove.
26327 (aarch64_int_or_fp_type): Use bfloat16_type_node rather than
26328 aarch64_bf16_type_node.
26329 (aarch64_init_simd_builtin_types): Likewise.
26330 (aarch64_init_bf16_types): Likewise. Don't create bfloat16_type_node,
26331 which is created in tree.cc already.
26332 * config/aarch64/aarch64-sve-builtins.def (svbfloat16_t): Likewise.
26333
26334 2023-03-12 Roger Sayle <roger@nextmovesoftware.com>
26335
26336 PR middle-end/109031
26337 * tree-chrec.cc (chrec_apply): When folding "{a, +, a} (x-1)",
26338 ensure that the type of x is as wide or wider than the type of a.
26339
26340 2023-03-12 Tamar Christina <tamar.christina@arm.com>
26341
26342 PR target/108583
26343 * config/aarch64/aarch64-simd.md (@aarch64_bitmask_udiv<mode>3): Remove.
26344 (*bitmask_shift_plus<mode>): New.
26345 * config/aarch64/aarch64-sve2.md (*bitmask_shift_plus<mode>): New.
26346 (@aarch64_bitmask_udiv<mode>3): Remove.
26347 * config/aarch64/aarch64.cc
26348 (aarch64_vectorize_can_special_div_by_constant,
26349 TARGET_VECTORIZE_CAN_SPECIAL_DIV_BY_CONST): Removed.
26350 (TARGET_VECTORIZE_PREFERRED_DIV_AS_SHIFTS_OVER_MULT,
26351 aarch64_vectorize_preferred_div_as_shifts_over_mult): New.
26352
26353 2023-03-12 Tamar Christina <tamar.christina@arm.com>
26354
26355 PR target/108583
26356 * target.def (preferred_div_as_shifts_over_mult): New.
26357 * doc/tm.texi.in: Document it.
26358 * doc/tm.texi: Regenerate.
26359 * targhooks.cc (default_preferred_div_as_shifts_over_mult): New.
26360 * targhooks.h (default_preferred_div_as_shifts_over_mult): New.
26361 * tree-vect-patterns.cc (vect_recog_divmod_pattern): Use it.
26362
26363 2023-03-12 Tamar Christina <tamar.christina@arm.com>
26364 Richard Sandiford <richard.sandiford@arm.com>
26365
26366 PR target/108583
26367 * tree-ssa-math-opts.cc (convert_mult_to_fma): Inhibit FMA in case not
26368 single use.
26369
26370 2023-03-12 Tamar Christina <tamar.christina@arm.com>
26371 Andrew MacLeod <amacleod@redhat.com>
26372
26373 PR target/108583
26374 * gimple-range-op.h (gimple_range_op_handler): Add maybe_non_standard.
26375 * gimple-range-op.cc (gimple_range_op_handler::gimple_range_op_handler):
26376 Use it.
26377 (gimple_range_op_handler::maybe_non_standard): New.
26378 * range-op.cc (class operator_widen_plus_signed,
26379 operator_widen_plus_signed::wi_fold, class operator_widen_plus_unsigned,
26380 operator_widen_plus_unsigned::wi_fold, class operator_widen_mult_signed,
26381 operator_widen_mult_signed::wi_fold, class operator_widen_mult_unsigned,
26382 operator_widen_mult_unsigned::wi_fold,
26383 ptr_op_widen_mult_signed, ptr_op_widen_mult_unsigned,
26384 ptr_op_widen_plus_signed, ptr_op_widen_plus_unsigned): New.
26385 * range-op.h (ptr_op_widen_mult_signed, ptr_op_widen_mult_unsigned,
26386 ptr_op_widen_plus_signed, ptr_op_widen_plus_unsigned): New
26387
26388 2023-03-12 Tamar Christina <tamar.christina@arm.com>
26389
26390 PR target/108583
26391 * doc/tm.texi (TARGET_VECTORIZE_CAN_SPECIAL_DIV_BY_CONST): Remove.
26392 * doc/tm.texi.in: Likewise.
26393 * explow.cc (round_push, align_dynamic_address): Revert previous patch.
26394 * expmed.cc (expand_divmod): Likewise.
26395 * expmed.h (expand_divmod): Likewise.
26396 * expr.cc (force_operand, expand_expr_divmod): Likewise.
26397 * optabs.cc (expand_doubleword_mod, expand_doubleword_divmod): Likewise.
26398 * target.def (can_special_div_by_const): Remove.
26399 * target.h: Remove tree-core.h include
26400 * targhooks.cc (default_can_special_div_by_const): Remove.
26401 * targhooks.h (default_can_special_div_by_const): Remove.
26402 * tree-vect-generic.cc (expand_vector_operation): Remove hook.
26403 * tree-vect-patterns.cc (vect_recog_divmod_pattern): Remove hook.
26404 * tree-vect-stmts.cc (vectorizable_operation): Remove hook.
26405
26406 2023-03-12 Sandra Loosemore <sandra@codesourcery.com>
26407
26408 * doc/install.texi2html: Fix issue number typo in comment.
26409
26410 2023-03-12 Gaius Mulley <gaiusmod2@gmail.com>
26411
26412 * doc/gm2.texi (Elementary data types): Equivalence BOOLEAN with
26413 bool.
26414
26415 2023-03-12 Sandra Loosemore <sandra@codesourcery.com>
26416
26417 * doc/invoke.texi (Optimize Options): Add markup to
26418 description of asan-kernel-mem-intrinsic-prefix, and clarify
26419 wording slightly.
26420
26421 2023-03-11 Gerald Pfeifer <gerald@pfeifer.com>
26422
26423 * doc/extend.texi (Named Address Spaces): Drop a redundant link
26424 to AVR-LibC.
26425
26426 2023-03-11 Jeff Law <jlaw@ventanamicro>
26427
26428 PR web/88860
26429 * doc/extend.texi: Clarify Attribute Syntax a bit.
26430
26431 2023-03-11 Sandra Loosemore <sandra@codesourcery.com>
26432
26433 * doc/install.texi (Prerequisites): Suggest using newer versions
26434 of Texinfo.
26435 (Final install): Clean up and modernize discussion of how to
26436 build or obtain the GCC manuals.
26437 * doc/install.texi2html: Update comment to point to the PR instead
26438 of "makeinfo 4.7 brokenness" (it's not specific to that version).
26439
26440 2023-03-10 Jakub Jelinek <jakub@redhat.com>
26441
26442 PR target/107703
26443 * optabs.cc (expand_fix): For conversions from BFmode to integral,
26444 use shifts to convert it to SFmode first and then convert SFmode
26445 to integral.
26446
26447 2023-03-10 Andrew Pinski <apinski@marvell.com>
26448
26449 * config/aarch64/aarch64.md: Add a new define_split
26450 to help combine.
26451
26452 2023-03-10 Richard Biener <rguenther@suse.de>
26453
26454 * tree-ssa-structalias.cc (solve_graph): Immediately
26455 iterate self-cycles.
26456
26457 2023-03-10 Jakub Jelinek <jakub@redhat.com>
26458
26459 PR tree-optimization/109008
26460 * range-op-float.cc (float_widen_lhs_range): If not
26461 -frounding-math and not IBM double double format, extend lhs
26462 range just by 0.5ulp rather than 1ulp in each direction.
26463
26464 2023-03-10 Jakub Jelinek <jakub@redhat.com>
26465
26466 PR target/107998
26467 * config.gcc (x86_64-*-cygwin*): Don't add i386/t-cygwin-w64 into
26468 $tmake_file.
26469 * config/i386/t-cygwin-w64: Remove.
26470
26471 2023-03-10 Jakub Jelinek <jakub@redhat.com>
26472
26473 PR plugins/108634
26474 * tree-core.h (tree_code_type, tree_code_length): For C++11 or
26475 C++14, don't declare as extern const arrays.
26476 (tree_code_type_tmpl, tree_code_length_tmpl): New types with
26477 static constexpr member arrays for C++11 or C++14.
26478 * tree.h (TREE_CODE_CLASS): For C++11 or C++14 use
26479 tree_code_type_tmpl <0>::tree_code_type instead of tree_code_type.
26480 (TREE_CODE_LENGTH): For C++11 or C++14 use
26481 tree_code_length_tmpl <0>::tree_code_length instead of
26482 tree_code_length.
26483 * tree.cc (tree_code_type, tree_code_length): Remove.
26484
26485 2023-03-10 Jakub Jelinek <jakub@redhat.com>
26486
26487 PR other/108464
26488 * common.opt (fcanon-prefix-map): New option.
26489 * opts.cc: Include file-prefix-map.h.
26490 (flag_canon_prefix_map): New variable.
26491 (common_handle_option): Handle OPT_fcanon_prefix_map.
26492 (gen_command_line_string): Ignore OPT_fcanon_prefix_map.
26493 * file-prefix-map.h (flag_canon_prefix_map): Declare.
26494 * file-prefix-map.cc (struct file_prefix_map): Add canonicalize
26495 member.
26496 (add_prefix_map): Initialize canonicalize member from
26497 flag_canon_prefix_map, and if true canonicalize it using lrealpath.
26498 (remap_filename): Revert 2022-11-01 and 2022-11-07 changes,
26499 use lrealpath result only for map->canonicalize map entries.
26500 * lto-opts.cc (lto_write_options): Ignore OPT_fcanon_prefix_map.
26501 * opts-global.cc (handle_common_deferred_options): Clear
26502 flag_canon_prefix_map at the start and handle OPT_fcanon_prefix_map.
26503 * doc/invoke.texi (-fcanon-prefix-map): Document.
26504 (-ffile-prefix-map, -fdebug-prefix-map, -fprofile-prefix-map): Add
26505 see also for -fcanon-prefix-map.
26506 * doc/cppopts.texi (-fmacro-prefix-map): Likewise.
26507
26508 2023-03-10 Jakub Jelinek <jakub@redhat.com>
26509
26510 PR c/108079
26511 * cgraphunit.cc (check_global_declaration): Don't warn for unused
26512 variables which have OPT_Wunused_variable warning suppressed.
26513
26514 2023-03-10 Jakub Jelinek <jakub@redhat.com>
26515
26516 PR tree-optimization/109008
26517 * range-op-float.cc (float_widen_lhs_range): If lb is
26518 minimum representable finite number or ub is maximum
26519 representable finite number, instead of widening it to
26520 -inf or inf widen it to negative or positive 0x0.8p+(EMAX+1).
26521 Temporarily clear flag_finite_math_only when canonicalizing
26522 the widened range.
26523
26524 2023-03-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26525
26526 * config/riscv/riscv-builtins.cc (riscv_gimple_fold_builtin): New function.
26527 * config/riscv/riscv-protos.h (riscv_gimple_fold_builtin): Ditto.
26528 (gimple_fold_builtin): Ditto.
26529 * config/riscv/riscv-vector-builtins-bases.cc (class read_vl): New class.
26530 (class vleff): Ditto.
26531 (BASE): Ditto.
26532 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
26533 * config/riscv/riscv-vector-builtins-functions.def (read_vl): Ditto.
26534 (vleff): Ditto.
26535 * config/riscv/riscv-vector-builtins-shapes.cc (struct read_vl_def): Ditto.
26536 (struct fault_load_def): Ditto.
26537 (SHAPE): Ditto.
26538 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
26539 * config/riscv/riscv-vector-builtins.cc
26540 (rvv_arg_type_info::get_tree_type): Add size_ptr.
26541 (gimple_folder::gimple_folder): New class.
26542 (gimple_folder::fold): Ditto.
26543 (gimple_fold_builtin): New function.
26544 (get_read_vl_instance): Ditto.
26545 (get_read_vl_decl): Ditto.
26546 * config/riscv/riscv-vector-builtins.def (size_ptr): Add size_ptr.
26547 * config/riscv/riscv-vector-builtins.h (class gimple_folder): New class.
26548 (get_read_vl_instance): New function.
26549 (get_read_vl_decl): Ditto.
26550 * config/riscv/riscv-vsetvl.cc (fault_first_load_p): Ditto.
26551 (read_vl_insn_p): Ditto.
26552 (available_occurrence_p): Ditto.
26553 (backward_propagate_worthwhile_p): Ditto.
26554 (gen_vsetvl_pat): Adapt for vleff support.
26555 (get_forward_read_vl_insn): New function.
26556 (get_backward_fault_first_load_insn): Ditto.
26557 (source_equal_p): Adapt for vleff support.
26558 (first_ratio_invalid_for_second_sew_p): Remove.
26559 (first_ratio_invalid_for_second_lmul_p): Ditto.
26560 (first_lmul_less_than_second_lmul_p): Ditto.
26561 (first_ratio_less_than_second_ratio_p): Ditto.
26562 (support_relaxed_compatible_p): New function.
26563 (vector_insn_info::operator>): Remove.
26564 (vector_insn_info::operator>=): Refine.
26565 (vector_insn_info::parse_insn): Adapt for vleff support.
26566 (vector_insn_info::compatible_p): Ditto.
26567 (vector_insn_info::update_fault_first_load_avl): New function.
26568 (pass_vsetvl::transfer_after): Adapt for vleff support.
26569 (pass_vsetvl::demand_fusion): Ditto.
26570 (pass_vsetvl::cleanup_insns): Ditto.
26571 * config/riscv/riscv-vsetvl.def (DEF_INCOMPATIBLE_COND): Remove
26572 redundant condtions.
26573 * config/riscv/riscv-vsetvl.h (struct demands_cond): New function.
26574 * config/riscv/riscv.cc (TARGET_GIMPLE_FOLD_BUILTIN): New target hook.
26575 * config/riscv/riscv.md: Adapt for vleff support.
26576 * config/riscv/t-riscv: Ditto.
26577 * config/riscv/vector-iterators.md: New iterator.
26578 * config/riscv/vector.md (read_vlsi): New pattern.
26579 (read_vldi_zero_extend): Ditto.
26580 (@pred_fault_load<mode>): Ditto.
26581
26582 2023-03-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26583
26584 * config/riscv/riscv-vector-builtins.cc
26585 (function_expander::use_ternop_insn): Use maybe_gen_insn instead.
26586 (function_expander::use_widen_ternop_insn): Ditto.
26587 * optabs.cc (maybe_gen_insn): Extend nops handling.
26588
26589 2023-03-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26590
26591 * config/riscv/riscv-vector-builtins-bases.cc: Split indexed load
26592 patterns according to RVV ISA.
26593 * config/riscv/vector-iterators.md: New iterators.
26594 * config/riscv/vector.md
26595 (@pred_indexed_<order>load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Remove.
26596 (@pred_indexed_<order>load<mode>_same_eew): New pattern.
26597 (@pred_indexed_<order>load<mode>_x2_greater_eew): Ditto.
26598 (@pred_indexed_<order>load<mode>_x4_greater_eew): Ditto.
26599 (@pred_indexed_<order>load<mode>_x8_greater_eew): Ditto.
26600 (@pred_indexed_<order>load<mode>_x2_smaller_eew): Ditto.
26601 (@pred_indexed_<order>load<mode>_x4_smaller_eew): Ditto.
26602 (@pred_indexed_<order>load<mode>_x8_smaller_eew): Ditto.
26603 (@pred_indexed_<order>load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Remove.
26604 (@pred_indexed_<order>load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
26605 (@pred_indexed_<order>load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
26606 (@pred_indexed_<order>load<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
26607 (@pred_indexed_<order>load<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
26608 (@pred_indexed_<order>load<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
26609
26610 2023-03-10 Michael Collison <collison@rivosinc.com>
26611
26612 * tree-vect-loop-manip.cc (vect_do_peeling): Use
26613 result of constant_lower_bound instead of vf for the lower
26614 bound of the epilog loop trip count.
26615
26616 2023-03-09 Tamar Christina <tamar.christina@arm.com>
26617
26618 * passes.cc (emergency_dump_function): Finish graph generation.
26619
26620 2023-03-09 Tamar Christina <tamar.christina@arm.com>
26621
26622 * config/aarch64/aarch64.md (tbranch_<code><mode>3): Restrict to SHORT
26623 and bottom bit only.
26624
26625 2023-03-09 Andrew Pinski <apinski@marvell.com>
26626
26627 PR tree-optimization/108980
26628 * gimple-array-bounds.cc (array_bounds_checker::check_array_ref):
26629 Reorgnize the call to warning for not strict flexible arrays
26630 to be before the check of warned.
26631
26632 2023-03-09 Jason Merrill <jason@redhat.com>
26633
26634 * doc/extend.texi: Comment out __is_deducible docs.
26635
26636 2023-03-09 Jason Merrill <jason@redhat.com>
26637
26638 PR c++/105841
26639 * doc/extend.texi (Type Traits):: Document __is_deducible.
26640
26641 2023-03-09 Costas Argyris <costas.argyris@gmail.com>
26642
26643 PR driver/108865
26644 * config.host: add object for x86_64-*-mingw*.
26645 * config/i386/sym-mingw32.cc: dummy file to attach
26646 symbol.
26647 * config/i386/utf8-mingw32.rc: windres resource file.
26648 * config/i386/winnt-utf8.manifest: XML manifest to
26649 enable UTF-8.
26650 * config/i386/x-mingw32: reference to x-mingw32-utf8.
26651 * config/i386/x-mingw32-utf8: Makefile fragment to
26652 embed UTF-8 manifest.
26653
26654 2023-03-09 Vladimir N. Makarov <vmakarov@redhat.com>
26655
26656 * lra-constraints.cc (process_alt_operands): Use operand modes for
26657 clobbered regs instead of the biggest access mode.
26658
26659 2023-03-09 Richard Biener <rguenther@suse.de>
26660
26661 PR middle-end/108995
26662 * fold-const.cc (extract_muldiv_1): Avoid folding
26663 (CST * b) / CST2 when sanitizing overflow and we rely on
26664 overflow being undefined.
26665
26666 2023-03-09 Jakub Jelinek <jakub@redhat.com>
26667 Richard Biener <rguenther@suse.de>
26668
26669 PR tree-optimization/109008
26670 * range-op-float.cc (float_widen_lhs_range): New function.
26671 (foperator_plus::op1_range, foperator_minus::op1_range,
26672 foperator_minus::op2_range, foperator_mult::op1_range,
26673 foperator_div::op1_range, foperator_div::op2_range): Use it.
26674
26675 2023-03-07 Jonathan Grant <jg@jguk.org>
26676
26677 PR sanitizer/81649
26678 * doc/invoke.texi (Instrumentation Options): Clarify
26679 LeakSanitizer behavior.
26680
26681 2023-03-07 Benson Muite <benson_muite@emailplus.org>
26682
26683 * doc/install.texi (Prerequisites): Add link to gmplib.org.
26684
26685 2023-03-07 Pan Li <pan2.li@intel.com>
26686 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26687
26688 PR target/108185
26689 PR target/108654
26690 * config/riscv/riscv-modes.def (ADJUST_PRECISION): Adjust VNx*BI
26691 modes.
26692 * config/riscv/riscv.cc (riscv_v_adjust_precision): New.
26693 * config/riscv/riscv.h (riscv_v_adjust_precision): New.
26694 * genmodes.cc (adj_precision): New.
26695 (ADJUST_PRECISION): New.
26696 (emit_mode_adjustments): Handle ADJUST_PRECISION.
26697
26698 2023-03-07 Hans-Peter Nilsson <hp@axis.com>
26699
26700 * doc/sourcebuild.texi: Document check_effective_target_tail_call.
26701
26702 2023-03-06 Paul-Antoine Arras <pa@codesourcery.com>
26703
26704 * config/gcn/gcn-valu.md (<expander><mode>3_exec): Add patterns for
26705 {s|u}{max|min} in QI, HI and DI modes.
26706 (<expander><mode>3): Add pattern for {s|u}{max|min} in DI mode.
26707 (cond_<fexpander><mode>): Add pattern for cond_f{max|min}.
26708 (cond_<expander><mode>): Add pattern for cond_{s|u}{max|min}.
26709 * config/gcn/gcn.cc (gcn_spill_class): Allow the exec register to be
26710 saved in SGPRs.
26711
26712 2023-03-06 Richard Biener <rguenther@suse.de>
26713
26714 PR tree-optimization/109025
26715 * tree-vect-loop.cc (vect_is_simple_reduction): Verify
26716 the inner LC PHI use is the inner loop PHI latch definition
26717 before classifying an outer PHI as double reduction.
26718
26719 2023-03-06 Jan Hubicka <hubicka@ucw.cz>
26720
26721 PR target/108429
26722 * config/i386/x86-tune.def (X86_TUNE_USE_SCATTER_2PARTS): Enable for
26723 generic.
26724 (X86_TUNE_USE_SCATTER_4PARTS): Likewise.
26725 (X86_TUNE_USE_SCATTER): Likewise.
26726
26727 2023-03-06 Xi Ruoyao <xry111@xry111.site>
26728
26729 PR target/109000
26730 * config/loongarch/loongarch.h (FP_RETURN): Use
26731 TARGET_*_FLOAT_ABI instead of TARGET_*_FLOAT.
26732 (UNITS_PER_FP_ARG): Likewise.
26733
26734 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26735
26736 * config/riscv/riscv-vsetvl.cc (reg_available_p): Fix bug.
26737 (pass_vsetvl::backward_demand_fusion): Ditto.
26738
26739 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
26740 SiYu Wu <siyu@isrc.iscas.ac.cn>
26741
26742 * config/riscv/crypto.md (riscv_sm3p0_<mode>): Add ZKSED's and ZKSH's
26743 instructions.
26744 (riscv_sm3p1_<mode>): New.
26745 (riscv_sm4ed_<mode>): New.
26746 (riscv_sm4ks_<mode>): New.
26747 * config/riscv/riscv-builtins.cc (AVAIL): Add ZKSED's and ZKSH's AVAIL.
26748 * config/riscv/riscv-scalar-crypto.def (RISCV_BUILTIN): Add ZKSED's and
26749 ZKSH's built-in functions.
26750
26751 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
26752 SiYu Wu <siyu@isrc.iscas.ac.cn>
26753
26754 * config/riscv/crypto.md (riscv_sha256sig0_<mode>): Add ZKNH's instructions.
26755 (riscv_sha256sig1_<mode>): New.
26756 (riscv_sha256sum0_<mode>): New.
26757 (riscv_sha256sum1_<mode>): New.
26758 (riscv_sha512sig0h): New.
26759 (riscv_sha512sig0l): New.
26760 (riscv_sha512sig1h): New.
26761 (riscv_sha512sig1l): New.
26762 (riscv_sha512sum0r): New.
26763 (riscv_sha512sum1r): New.
26764 (riscv_sha512sig0): New.
26765 (riscv_sha512sig1): New.
26766 (riscv_sha512sum0): New.
26767 (riscv_sha512sum1): New.
26768 * config/riscv/riscv-builtins.cc (AVAIL): And ZKNH's AVAIL.
26769 * config/riscv/riscv-scalar-crypto.def (RISCV_BUILTIN): And ZKNH's
26770 built-in functions.
26771 (DIRECT_BUILTIN): Add new.
26772
26773 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
26774 SiYu Wu <siyu@isrc.iscas.ac.cn>
26775
26776 * config/riscv/constraints.md (D03): Add constants of bs and rnum.
26777 (DsA): New.
26778 * config/riscv/crypto.md (riscv_aes32dsi): Add ZKND's and ZKNE's instructions.
26779 (riscv_aes32dsmi): New.
26780 (riscv_aes64ds): New.
26781 (riscv_aes64dsm): New.
26782 (riscv_aes64im): New.
26783 (riscv_aes64ks1i): New.
26784 (riscv_aes64ks2): New.
26785 (riscv_aes32esi): New.
26786 (riscv_aes32esmi): New.
26787 (riscv_aes64es): New.
26788 (riscv_aes64esm): New.
26789 * config/riscv/riscv-builtins.cc (AVAIL): Add ZKND's and ZKNE's AVAIL.
26790 * config/riscv/riscv-scalar-crypto.def (DIRECT_BUILTIN): Add ZKND's and
26791 ZKNE's built-in functions.
26792
26793 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
26794 SiYu Wu <siyu@isrc.iscas.ac.cn>
26795
26796 * config/riscv/bitmanip.md: Add ZBKB's instructions.
26797 * config/riscv/riscv-builtins.cc (AVAIL): Add new.
26798 * config/riscv/riscv.md: Add new type for crypto instructions.
26799 * config/riscv/crypto.md: Add Scalar Cryptography extension's machine
26800 description file.
26801 * config/riscv/riscv-scalar-crypto.def: Add Scalar Cryptography
26802 extension's built-in function file.
26803
26804 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
26805 SiYu Wu <siyu@isrc.iscas.ac.cn>
26806
26807 * config/riscv/riscv-builtins.cc (RISCV_FTYPE_NAME2): New.
26808 (RISCV_FTYPE_NAME3): New.
26809 (RISCV_ATYPE_QI): New.
26810 (RISCV_ATYPE_HI): New.
26811 (RISCV_FTYPE_ATYPES2): New.
26812 (RISCV_FTYPE_ATYPES3): New.
26813 * config/riscv/riscv-ftypes.def (2): New.
26814 (3): New.
26815
26816 2023-03-05 Vineet Gupta <vineetg@rivosinc.com>
26817
26818 * config/riscv/riscv.cc (riscv_rtx_costs): Fixed IN_RANGE() to
26819 use exact_log2().
26820
26821 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26822 kito-cheng <kito.cheng@sifive.com>
26823
26824 * config/riscv/predicates.md (vector_any_register_operand): New predicate.
26825 * config/riscv/riscv-c.cc (riscv_check_builtin_call): New function.
26826 (riscv_register_pragmas): Add builtin function check call.
26827 * config/riscv/riscv-protos.h (RVV_VUNDEF): Adapt macro.
26828 (check_builtin_call): New function.
26829 * config/riscv/riscv-vector-builtins-bases.cc (class vundefined): New class.
26830 (class vreinterpret): Ditto.
26831 (class vlmul_ext): Ditto.
26832 (class vlmul_trunc): Ditto.
26833 (class vset): Ditto.
26834 (class vget): Ditto.
26835 (BASE): Ditto.
26836 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
26837 * config/riscv/riscv-vector-builtins-functions.def (vluxei8): Change name.
26838 (vluxei16): Ditto.
26839 (vluxei32): Ditto.
26840 (vluxei64): Ditto.
26841 (vloxei8): Ditto.
26842 (vloxei16): Ditto.
26843 (vloxei32): Ditto.
26844 (vloxei64): Ditto.
26845 (vsuxei8): Ditto.
26846 (vsuxei16): Ditto.
26847 (vsuxei32): Ditto.
26848 (vsuxei64): Ditto.
26849 (vsoxei8): Ditto.
26850 (vsoxei16): Ditto.
26851 (vsoxei32): Ditto.
26852 (vsoxei64): Ditto.
26853 (vundefined): Add new intrinsic.
26854 (vreinterpret): Ditto.
26855 (vlmul_ext): Ditto.
26856 (vlmul_trunc): Ditto.
26857 (vset): Ditto.
26858 (vget): Ditto.
26859 * config/riscv/riscv-vector-builtins-shapes.cc (struct return_mask_def): New class.
26860 (struct narrow_alu_def): Ditto.
26861 (struct reduc_alu_def): Ditto.
26862 (struct vundefined_def): Ditto.
26863 (struct misc_def): Ditto.
26864 (struct vset_def): Ditto.
26865 (struct vget_def): Ditto.
26866 (SHAPE): Ditto.
26867 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
26868 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_EEW8_INTERPRET_OPS): New def.
26869 (DEF_RVV_EEW16_INTERPRET_OPS): Ditto.
26870 (DEF_RVV_EEW32_INTERPRET_OPS): Ditto.
26871 (DEF_RVV_EEW64_INTERPRET_OPS): Ditto.
26872 (DEF_RVV_X2_VLMUL_EXT_OPS): Ditto.
26873 (DEF_RVV_X4_VLMUL_EXT_OPS): Ditto.
26874 (DEF_RVV_X8_VLMUL_EXT_OPS): Ditto.
26875 (DEF_RVV_X16_VLMUL_EXT_OPS): Ditto.
26876 (DEF_RVV_X32_VLMUL_EXT_OPS): Ditto.
26877 (DEF_RVV_X64_VLMUL_EXT_OPS): Ditto.
26878 (DEF_RVV_LMUL1_OPS): Ditto.
26879 (DEF_RVV_LMUL2_OPS): Ditto.
26880 (DEF_RVV_LMUL4_OPS): Ditto.
26881 (vint16mf4_t): Ditto.
26882 (vint16mf2_t): Ditto.
26883 (vint16m1_t): Ditto.
26884 (vint16m2_t): Ditto.
26885 (vint16m4_t): Ditto.
26886 (vint16m8_t): Ditto.
26887 (vint32mf2_t): Ditto.
26888 (vint32m1_t): Ditto.
26889 (vint32m2_t): Ditto.
26890 (vint32m4_t): Ditto.
26891 (vint32m8_t): Ditto.
26892 (vint64m1_t): Ditto.
26893 (vint64m2_t): Ditto.
26894 (vint64m4_t): Ditto.
26895 (vint64m8_t): Ditto.
26896 (vuint16mf4_t): Ditto.
26897 (vuint16mf2_t): Ditto.
26898 (vuint16m1_t): Ditto.
26899 (vuint16m2_t): Ditto.
26900 (vuint16m4_t): Ditto.
26901 (vuint16m8_t): Ditto.
26902 (vuint32mf2_t): Ditto.
26903 (vuint32m1_t): Ditto.
26904 (vuint32m2_t): Ditto.
26905 (vuint32m4_t): Ditto.
26906 (vuint32m8_t): Ditto.
26907 (vuint64m1_t): Ditto.
26908 (vuint64m2_t): Ditto.
26909 (vuint64m4_t): Ditto.
26910 (vuint64m8_t): Ditto.
26911 (vint8mf4_t): Ditto.
26912 (vint8mf2_t): Ditto.
26913 (vint8m1_t): Ditto.
26914 (vint8m2_t): Ditto.
26915 (vint8m4_t): Ditto.
26916 (vint8m8_t): Ditto.
26917 (vuint8mf4_t): Ditto.
26918 (vuint8mf2_t): Ditto.
26919 (vuint8m1_t): Ditto.
26920 (vuint8m2_t): Ditto.
26921 (vuint8m4_t): Ditto.
26922 (vuint8m8_t): Ditto.
26923 (vint8mf8_t): Ditto.
26924 (vuint8mf8_t): Ditto.
26925 (vfloat32mf2_t): Ditto.
26926 (vfloat32m1_t): Ditto.
26927 (vfloat32m2_t): Ditto.
26928 (vfloat32m4_t): Ditto.
26929 (vfloat64m1_t): Ditto.
26930 (vfloat64m2_t): Ditto.
26931 (vfloat64m4_t): Ditto.
26932 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TYPE): Ditto.
26933 (DEF_RVV_EEW8_INTERPRET_OPS): Ditto.
26934 (DEF_RVV_EEW16_INTERPRET_OPS): Ditto.
26935 (DEF_RVV_EEW32_INTERPRET_OPS): Ditto.
26936 (DEF_RVV_EEW64_INTERPRET_OPS): Ditto.
26937 (DEF_RVV_X2_VLMUL_EXT_OPS): Ditto.
26938 (DEF_RVV_X4_VLMUL_EXT_OPS): Ditto.
26939 (DEF_RVV_X8_VLMUL_EXT_OPS): Ditto.
26940 (DEF_RVV_X16_VLMUL_EXT_OPS): Ditto.
26941 (DEF_RVV_X32_VLMUL_EXT_OPS): Ditto.
26942 (DEF_RVV_X64_VLMUL_EXT_OPS): Ditto.
26943 (DEF_RVV_LMUL1_OPS): Ditto.
26944 (DEF_RVV_LMUL2_OPS): Ditto.
26945 (DEF_RVV_LMUL4_OPS): Ditto.
26946 (DEF_RVV_TYPE_INDEX): Ditto.
26947 (required_extensions_p): Adapt for new intrinsic support/
26948 (get_required_extensions): New function.
26949 (check_required_extensions): Ditto.
26950 (unsigned_base_type_p): Remove.
26951 (rvv_arg_type_info::get_scalar_ptr_type): New function.
26952 (get_mode_for_bitsize): Remove.
26953 (rvv_arg_type_info::get_scalar_const_ptr_type): New function.
26954 (rvv_arg_type_info::get_base_vector_type): Ditto.
26955 (rvv_arg_type_info::get_function_type_index): Ditto.
26956 (DEF_RVV_BASE_TYPE): New def.
26957 (function_builder::apply_predication): New class.
26958 (function_expander::mask_mode): Ditto.
26959 (function_checker::function_checker): Ditto.
26960 (function_checker::report_non_ice): Ditto.
26961 (function_checker::report_out_of_range): Ditto.
26962 (function_checker::require_immediate): Ditto.
26963 (function_checker::require_immediate_range): Ditto.
26964 (function_checker::check): Ditto.
26965 (check_builtin_call): Ditto.
26966 * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE): New def.
26967 (DEF_RVV_BASE_TYPE): Ditto.
26968 (DEF_RVV_TYPE_INDEX): Ditto.
26969 (vbool64_t): Ditto.
26970 (vbool32_t): Ditto.
26971 (vbool16_t): Ditto.
26972 (vbool8_t): Ditto.
26973 (vbool4_t): Ditto.
26974 (vbool2_t): Ditto.
26975 (vbool1_t): Ditto.
26976 (vuint8mf8_t): Ditto.
26977 (vuint8mf4_t): Ditto.
26978 (vuint8mf2_t): Ditto.
26979 (vuint8m1_t): Ditto.
26980 (vuint8m2_t): Ditto.
26981 (vint8m4_t): Ditto.
26982 (vuint8m4_t): Ditto.
26983 (vint8m8_t): Ditto.
26984 (vuint8m8_t): Ditto.
26985 (vint16mf4_t): Ditto.
26986 (vuint16mf2_t): Ditto.
26987 (vuint16m1_t): Ditto.
26988 (vuint16m2_t): Ditto.
26989 (vuint16m4_t): Ditto.
26990 (vuint16m8_t): Ditto.
26991 (vint32mf2_t): Ditto.
26992 (vuint32m1_t): Ditto.
26993 (vuint32m2_t): Ditto.
26994 (vuint32m4_t): Ditto.
26995 (vuint32m8_t): Ditto.
26996 (vuint64m1_t): Ditto.
26997 (vuint64m2_t): Ditto.
26998 (vuint64m4_t): Ditto.
26999 (vuint64m8_t): Ditto.
27000 (vfloat32mf2_t): Ditto.
27001 (vfloat32m1_t): Ditto.
27002 (vfloat32m2_t): Ditto.
27003 (vfloat32m4_t): Ditto.
27004 (vfloat32m8_t): Ditto.
27005 (vfloat64m1_t): Ditto.
27006 (vfloat64m4_t): Ditto.
27007 (vector): Move it def.
27008 (scalar): Ditto.
27009 (mask): Ditto.
27010 (signed_vector): Ditto.
27011 (unsigned_vector): Ditto.
27012 (unsigned_scalar): Ditto.
27013 (vector_ptr): Ditto.
27014 (scalar_ptr): Ditto.
27015 (scalar_const_ptr): Ditto.
27016 (void): Ditto.
27017 (size): Ditto.
27018 (ptrdiff): Ditto.
27019 (unsigned_long): Ditto.
27020 (long): Ditto.
27021 (eew8_index): Ditto.
27022 (eew16_index): Ditto.
27023 (eew32_index): Ditto.
27024 (eew64_index): Ditto.
27025 (shift_vector): Ditto.
27026 (double_trunc_vector): Ditto.
27027 (quad_trunc_vector): Ditto.
27028 (oct_trunc_vector): Ditto.
27029 (double_trunc_scalar): Ditto.
27030 (double_trunc_signed_vector): Ditto.
27031 (double_trunc_unsigned_vector): Ditto.
27032 (double_trunc_unsigned_scalar): Ditto.
27033 (double_trunc_float_vector): Ditto.
27034 (float_vector): Ditto.
27035 (lmul1_vector): Ditto.
27036 (widen_lmul1_vector): Ditto.
27037 (eew8_interpret): Ditto.
27038 (eew16_interpret): Ditto.
27039 (eew32_interpret): Ditto.
27040 (eew64_interpret): Ditto.
27041 (vlmul_ext_x2): Ditto.
27042 (vlmul_ext_x4): Ditto.
27043 (vlmul_ext_x8): Ditto.
27044 (vlmul_ext_x16): Ditto.
27045 (vlmul_ext_x32): Ditto.
27046 (vlmul_ext_x64): Ditto.
27047 * config/riscv/riscv-vector-builtins.h (DEF_RVV_BASE_TYPE): New def.
27048 (struct function_type_info): New function.
27049 (struct rvv_arg_type_info): Ditto.
27050 (class function_checker): New class.
27051 (rvv_arg_type_info::get_scalar_type): New function.
27052 (rvv_arg_type_info::get_vector_type): Ditto.
27053 (function_expander::ret_mode): New function.
27054 (function_checker::arg_mode): Ditto.
27055 (function_checker::ret_mode): Ditto.
27056 * config/riscv/t-riscv: Add generator.
27057 * config/riscv/vector-iterators.md: New iterators.
27058 * config/riscv/vector.md (vundefined<mode>): New pattern.
27059 (@vundefined<mode>): Ditto.
27060 (@vreinterpret<mode>): Ditto.
27061 (@vlmul_extx2<mode>): Ditto.
27062 (@vlmul_extx4<mode>): Ditto.
27063 (@vlmul_extx8<mode>): Ditto.
27064 (@vlmul_extx16<mode>): Ditto.
27065 (@vlmul_extx32<mode>): Ditto.
27066 (@vlmul_extx64<mode>): Ditto.
27067 (*vlmul_extx2<mode>): Ditto.
27068 (*vlmul_extx4<mode>): Ditto.
27069 (*vlmul_extx8<mode>): Ditto.
27070 (*vlmul_extx16<mode>): Ditto.
27071 (*vlmul_extx32<mode>): Ditto.
27072 (*vlmul_extx64<mode>): Ditto.
27073 * config/riscv/genrvv-type-indexer.cc: New file.
27074
27075 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
27076
27077 * config/riscv/riscv-protos.h (enum vlen_enum): New enum.
27078 (slide1_sew64_helper): New function.
27079 * config/riscv/riscv-v.cc (compute_vlmax): Ditto.
27080 (get_unknown_min_value): Ditto.
27081 (force_vector_length_operand): Ditto.
27082 (gen_no_side_effects_vsetvl_rtx): Ditto.
27083 (get_vl_x2_rtx): Ditto.
27084 (slide1_sew64_helper): Ditto.
27085 * config/riscv/riscv-vector-builtins-bases.cc (class slideop): New class.
27086 (class vrgather): Ditto.
27087 (class vrgatherei16): Ditto.
27088 (class vcompress): Ditto.
27089 (BASE): Ditto.
27090 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
27091 * config/riscv/riscv-vector-builtins-functions.def (vslideup): Ditto.
27092 (vslidedown): Ditto.
27093 (vslide1up): Ditto.
27094 (vslide1down): Ditto.
27095 (vfslide1up): Ditto.
27096 (vfslide1down): Ditto.
27097 (vrgather): Ditto.
27098 (vrgatherei16): Ditto.
27099 (vcompress): Ditto.
27100 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_EI16_OPS): New macro.
27101 (vint8mf8_t): Ditto.
27102 (vint8mf4_t): Ditto.
27103 (vint8mf2_t): Ditto.
27104 (vint8m1_t): Ditto.
27105 (vint8m2_t): Ditto.
27106 (vint8m4_t): Ditto.
27107 (vint16mf4_t): Ditto.
27108 (vint16mf2_t): Ditto.
27109 (vint16m1_t): Ditto.
27110 (vint16m2_t): Ditto.
27111 (vint16m4_t): Ditto.
27112 (vint16m8_t): Ditto.
27113 (vint32mf2_t): Ditto.
27114 (vint32m1_t): Ditto.
27115 (vint32m2_t): Ditto.
27116 (vint32m4_t): Ditto.
27117 (vint32m8_t): Ditto.
27118 (vint64m1_t): Ditto.
27119 (vint64m2_t): Ditto.
27120 (vint64m4_t): Ditto.
27121 (vint64m8_t): Ditto.
27122 (vuint8mf8_t): Ditto.
27123 (vuint8mf4_t): Ditto.
27124 (vuint8mf2_t): Ditto.
27125 (vuint8m1_t): Ditto.
27126 (vuint8m2_t): Ditto.
27127 (vuint8m4_t): Ditto.
27128 (vuint16mf4_t): Ditto.
27129 (vuint16mf2_t): Ditto.
27130 (vuint16m1_t): Ditto.
27131 (vuint16m2_t): Ditto.
27132 (vuint16m4_t): Ditto.
27133 (vuint16m8_t): Ditto.
27134 (vuint32mf2_t): Ditto.
27135 (vuint32m1_t): Ditto.
27136 (vuint32m2_t): Ditto.
27137 (vuint32m4_t): Ditto.
27138 (vuint32m8_t): Ditto.
27139 (vuint64m1_t): Ditto.
27140 (vuint64m2_t): Ditto.
27141 (vuint64m4_t): Ditto.
27142 (vuint64m8_t): Ditto.
27143 (vfloat32mf2_t): Ditto.
27144 (vfloat32m1_t): Ditto.
27145 (vfloat32m2_t): Ditto.
27146 (vfloat32m4_t): Ditto.
27147 (vfloat32m8_t): Ditto.
27148 (vfloat64m1_t): Ditto.
27149 (vfloat64m2_t): Ditto.
27150 (vfloat64m4_t): Ditto.
27151 (vfloat64m8_t): Ditto.
27152 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_EI16_OPS): Ditto.
27153 * config/riscv/riscv.md: Adjust RVV instruction types.
27154 * config/riscv/vector-iterators.md (down): New iterator.
27155 (=vd,vr): New attribute.
27156 (UNSPEC_VSLIDE1UP): New unspec.
27157 * config/riscv/vector.md (@pred_slide<ud><mode>): New pattern.
27158 (*pred_slide<ud><mode>): Ditto.
27159 (*pred_slide<ud><mode>_extended): Ditto.
27160 (@pred_gather<mode>): Ditto.
27161 (@pred_gather<mode>_scalar): Ditto.
27162 (@pred_gatherei16<mode>): Ditto.
27163 (@pred_compress<mode>): Ditto.
27164
27165 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
27166
27167 * config/riscv/riscv-vector-builtins.cc: Remove void_type_node.
27168
27169 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
27170
27171 * config/riscv/constraints.md (Wb1): New constraint.
27172 * config/riscv/predicates.md
27173 (vector_least_significant_set_mask_operand): New predicate.
27174 (vector_broadcast_mask_operand): Ditto.
27175 * config/riscv/riscv-protos.h (enum vlmul_type): Adjust.
27176 (gen_scalar_move_mask): New function.
27177 * config/riscv/riscv-v.cc (gen_scalar_move_mask): Ditto.
27178 * config/riscv/riscv-vector-builtins-bases.cc (class vmv): New class.
27179 (class vmv_s): Ditto.
27180 (BASE): Ditto.
27181 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
27182 * config/riscv/riscv-vector-builtins-functions.def (vmv_x): Ditto.
27183 (vmv_s): Ditto.
27184 (vfmv_f): Ditto.
27185 (vfmv_s): Ditto.
27186 * config/riscv/riscv-vector-builtins-shapes.cc (struct scalar_move_def): Ditto.
27187 (SHAPE): Ditto.
27188 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
27189 * config/riscv/riscv-vector-builtins.cc (function_expander::mask_mode): Ditto.
27190 (function_expander::use_exact_insn): New function.
27191 (function_expander::use_contiguous_load_insn): New function.
27192 (function_expander::use_contiguous_store_insn): New function.
27193 (function_expander::use_ternop_insn): New function.
27194 (function_expander::use_widen_ternop_insn): New function.
27195 (function_expander::use_scalar_move_insn): New function.
27196 * config/riscv/riscv-vector-builtins.def (s): New operand suffix.
27197 * config/riscv/riscv-vector-builtins.h
27198 (function_expander::add_scalar_move_mask_operand): New class.
27199 * config/riscv/riscv-vsetvl.cc (ignore_vlmul_insn_p): New function.
27200 (scalar_move_insn_p): Ditto.
27201 (has_vsetvl_killed_avl_p): Ditto.
27202 (anticipatable_occurrence_p): Ditto.
27203 (insert_vsetvl): Ditto.
27204 (get_vl_vtype_info): Ditto.
27205 (calculate_sew): Ditto.
27206 (calculate_vlmul): Ditto.
27207 (incompatible_avl_p): Ditto.
27208 (different_sew_p): Ditto.
27209 (different_lmul_p): Ditto.
27210 (different_ratio_p): Ditto.
27211 (different_tail_policy_p): Ditto.
27212 (different_mask_policy_p): Ditto.
27213 (possible_zero_avl_p): Ditto.
27214 (first_ratio_invalid_for_second_sew_p): Ditto.
27215 (first_ratio_invalid_for_second_lmul_p): Ditto.
27216 (second_ratio_invalid_for_first_sew_p): Ditto.
27217 (second_ratio_invalid_for_first_lmul_p): Ditto.
27218 (second_sew_less_than_first_sew_p): Ditto.
27219 (first_sew_less_than_second_sew_p): Ditto.
27220 (compare_lmul): Ditto.
27221 (second_lmul_less_than_first_lmul_p): Ditto.
27222 (first_lmul_less_than_second_lmul_p): Ditto.
27223 (first_ratio_less_than_second_ratio_p): Ditto.
27224 (second_ratio_less_than_first_ratio_p): Ditto.
27225 (DEF_INCOMPATIBLE_COND): Ditto.
27226 (greatest_sew): Ditto.
27227 (first_sew): Ditto.
27228 (second_sew): Ditto.
27229 (first_vlmul): Ditto.
27230 (second_vlmul): Ditto.
27231 (first_ratio): Ditto.
27232 (second_ratio): Ditto.
27233 (vlmul_for_first_sew_second_ratio): Ditto.
27234 (ratio_for_second_sew_first_vlmul): Ditto.
27235 (DEF_SEW_LMUL_FUSE_RULE): Ditto.
27236 (always_unavailable): Ditto.
27237 (avl_unavailable_p): Ditto.
27238 (sew_unavailable_p): Ditto.
27239 (lmul_unavailable_p): Ditto.
27240 (ge_sew_unavailable_p): Ditto.
27241 (ge_sew_lmul_unavailable_p): Ditto.
27242 (ge_sew_ratio_unavailable_p): Ditto.
27243 (DEF_UNAVAILABLE_COND): Ditto.
27244 (same_sew_lmul_demand_p): Ditto.
27245 (propagate_avl_across_demands_p): Ditto.
27246 (reg_available_p): Ditto.
27247 (avl_info::has_non_zero_avl): Ditto.
27248 (vl_vtype_info::has_non_zero_avl): Ditto.
27249 (vector_insn_info::operator>=): Refactor.
27250 (vector_insn_info::parse_insn): Adjust for scalar move.
27251 (vector_insn_info::demand_vl_vtype): Remove.
27252 (vector_insn_info::compatible_p): New function.
27253 (vector_insn_info::compatible_avl_p): Ditto.
27254 (vector_insn_info::compatible_vtype_p): Ditto.
27255 (vector_insn_info::available_p): Ditto.
27256 (vector_insn_info::merge): Ditto.
27257 (vector_insn_info::fuse_avl): Ditto.
27258 (vector_insn_info::fuse_sew_lmul): Ditto.
27259 (vector_insn_info::fuse_tail_policy): Ditto.
27260 (vector_insn_info::fuse_mask_policy): Ditto.
27261 (vector_insn_info::dump): Ditto.
27262 (vector_infos_manager::release): Ditto.
27263 (pass_vsetvl::compute_local_backward_infos): Adjust for scalar move support.
27264 (pass_vsetvl::get_backward_fusion_type): Adjust for scalar move support.
27265 (pass_vsetvl::hard_empty_block_p): Ditto.
27266 (pass_vsetvl::backward_demand_fusion): Ditto.
27267 (pass_vsetvl::forward_demand_fusion): Ditto.
27268 (pass_vsetvl::refine_vsetvls): Ditto.
27269 (pass_vsetvl::cleanup_vsetvls): Ditto.
27270 (pass_vsetvl::commit_vsetvls): Ditto.
27271 (pass_vsetvl::propagate_avl): Ditto.
27272 * config/riscv/riscv-vsetvl.h (enum demand_status): New class.
27273 (struct demands_pair): Ditto.
27274 (struct demands_cond): Ditto.
27275 (struct demands_fuse_rule): Ditto.
27276 * config/riscv/vector-iterators.md: New iterator.
27277 * config/riscv/vector.md (@pred_broadcast<mode>): New pattern.
27278 (*pred_broadcast<mode>): Ditto.
27279 (*pred_broadcast<mode>_extended_scalar): Ditto.
27280 (@pred_extract_first<mode>): Ditto.
27281 (*pred_extract_first<mode>): Ditto.
27282 (@pred_extract_first_trunc<mode>): Ditto.
27283 * config/riscv/riscv-vsetvl.def: New file.
27284
27285 2023-03-05 Lin Sinan <sinan.lin@linux.alibaba.com>
27286
27287 * config/riscv/bitmanip.md: allow 0 constant in max/min
27288 pattern.
27289
27290 2023-03-05 Lin Sinan <sinan.lin@linux.alibaba.com>
27291
27292 * config/riscv/bitmanip.md: Fix wrong index in the check.
27293
27294 2023-03-04 Jakub Jelinek <jakub@redhat.com>
27295
27296 PR middle-end/109006
27297 * vec.cc (test_auto_alias): Adjust comment for removal of
27298 m_vecdata.
27299 * read-rtl-function.cc (function_reader::parse_block): Likewise.
27300 * gdbhooks.py: Likewise.
27301
27302 2023-03-04 Jakub Jelinek <jakub@redhat.com>
27303
27304 PR testsuite/108973
27305 * selftest-diagnostic.cc
27306 (test_diagnostic_context::test_diagnostic_context): Set
27307 caret_max_width to 80.
27308
27309 2023-03-03 Alexandre Oliva <oliva@adacore.com>
27310
27311 * gimple-ssa-warn-access.cc
27312 (pass_waccess::check_dangling_stores): Skip non-stores.
27313
27314 2023-03-03 Alexandre Oliva <oliva@adacore.com>
27315
27316 * config/arm/vfp.md (*thumb2_movsi_vfp): Drop blank after tab
27317 after vmsr and vmrs, and lower the case of P0.
27318
27319 2023-03-03 Jonathan Wakely <jwakely@redhat.com>
27320
27321 PR middle-end/109006
27322 * gdbhooks.py (VecPrinter): Handle vec<T> as well as vec<T>*.
27323
27324 2023-03-03 Jonathan Wakely <jwakely@redhat.com>
27325
27326 PR middle-end/109006
27327 * gdbhooks.py (VecPrinter): Adjust for new vec layout.
27328
27329 2023-03-03 Jakub Jelinek <jakub@redhat.com>
27330
27331 PR c/108986
27332 * gimple-ssa-warn-access.cc (pass_waccess::maybe_check_access_sizes):
27333 Return immediately if OPT_Wnonnull or OPT_Wstringop_overflow_ is
27334 suppressed on stmt. For [static %E] warning, print access_nelts
27335 rather than access_size. Fix up comment wording.
27336
27337 2023-03-03 Robin Dapp <rdapp@linux.ibm.com>
27338
27339 * config/s390/driver-native.cc (s390_host_detect_local_cpu): Use
27340 arch14 instead of z16.
27341
27342 2023-03-03 Anthony Green <green@moxielogic.com>
27343
27344 * config/moxie/moxie.cc (TARGET_LRA_P): Remove.
27345
27346 2023-03-03 Anthony Green <green@moxielogic.com>
27347
27348 * config/moxie/constraints.md (A, B, W): Change
27349 define_constraint to define_memory_constraint.
27350
27351 2023-03-03 Xi Ruoyao <xry111@xry111.site>
27352
27353 * toplev.cc (process_options): Fix the spelling of
27354 "-fstack-clash-protection".
27355
27356 2023-03-03 Richard Biener <rguenther@suse.de>
27357
27358 PR tree-optimization/109002
27359 * tree-ssa-pre.cc (compute_partial_antic_aux): Properly
27360 PHI-translate ANTIC_IN.
27361
27362 2023-03-03 Jakub Jelinek <jakub@redhat.com>
27363
27364 PR tree-optimization/108988
27365 * gimple-fold.cc (gimple_fold_builtin_fputs): Fold len to
27366 size_type_node before passing it as argument to fwrite. Formatting
27367 fixes.
27368
27369 2023-03-03 Richard Biener <rguenther@suse.de>
27370
27371 PR target/108738
27372 * config/i386/i386.opt (--param x86-stv-max-visits): New param.
27373 * doc/invoke.texi (--param x86-stv-max-visits): Document it.
27374 * config/i386/i386-features.h (scalar_chain::max_visits): New.
27375 (scalar_chain::build): Add bitmap parameter, return boolean.
27376 (scalar_chain::add_insn): Likewise.
27377 (scalar_chain::analyze_register_chain): Likewise.
27378 * config/i386/i386-features.cc (scalar_chain::scalar_chain):
27379 Initialize max_visits.
27380 (scalar_chain::analyze_register_chain): When we exhaust
27381 max_visits, abort. Also abort when running into any
27382 disallowed insn.
27383 (scalar_chain::add_insn): Propagate abort.
27384 (scalar_chain::build): Likewise. When aborting amend
27385 the set of disallowed insn with the insns set.
27386 (convert_scalars_to_vector): Adjust. Do not convert aborted
27387 chains.
27388
27389 2023-03-03 Richard Biener <rguenther@suse.de>
27390
27391 PR debug/108772
27392 * dwarf2out.cc (dwarf2out_late_global_decl): Do not
27393 generate a DIE for a function scope static.
27394
27395 2023-03-03 Alexandre Oliva <oliva@adacore.com>
27396
27397 * config/vx-common.h (WINT_TYPE): Alias to "wchar_t".
27398
27399 2023-03-02 Jakub Jelinek <jakub@redhat.com>
27400
27401 PR target/108883
27402 * target.h (emit_support_tinfos_callback): New typedef.
27403 * targhooks.h (default_emit_support_tinfos): Declare.
27404 * targhooks.cc (default_emit_support_tinfos): New function.
27405 * target.def (emit_support_tinfos): New target hook.
27406 * doc/tm.texi.in (emit_support_tinfos): Document it.
27407 * doc/tm.texi: Regenerated.
27408 * config/i386/i386.cc (ix86_emit_support_tinfos): New function.
27409 (TARGET_EMIT_SUPPORT_TINFOS): Redefine.
27410
27411 2023-03-02 Vladimir N. Makarov <vmakarov@redhat.com>
27412
27413 * ira-costs.cc: Include print-rtl.h.
27414 (record_reg_classes, scan_one_insn): Add code to print debug info.
27415 (record_operand_costs): Find and use smaller cost for hard reg
27416 move.
27417
27418 2023-03-02 Kwok Cheung Yeung <kcy@codesourcery.com>
27419 Paul-Antoine Arras <pa@codesourcery.com>
27420
27421 * builtins.cc (mathfn_built_in_explicit): New.
27422 * config/gcn/gcn.cc: Include case-cfn-macros.h.
27423 (mathfn_built_in_explicit): Add prototype.
27424 (gcn_vectorize_builtin_vectorized_function): New.
27425 (gcn_libc_has_function): New.
27426 (TARGET_LIBC_HAS_FUNCTION): Define.
27427 (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define.
27428
27429 2023-03-02 Richard Sandiford <richard.sandiford@arm.com>
27430
27431 PR tree-optimization/108979
27432 * tree-vect-stmts.cc (vectorizable_operation): Don't mask
27433 operations on invariants.
27434
27435 2023-03-02 Robin Dapp <rdapp@linux.ibm.com>
27436
27437 * config/s390/predicates.md (vll_bias_operand): Add -1 bias.
27438 * config/s390/s390.cc (s390_option_override_internal): Make
27439 partial vector usage the default from z13 on.
27440 * config/s390/vector.md (len_load_v16qi): Add.
27441 (len_store_v16qi): Add.
27442
27443 2023-03-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
27444
27445 * simplify-rtx.cc (simplify_context::simplify_subreg): Use byte instead
27446 of constant 0 offset.
27447
27448 2023-03-02 Robert Suchanek <robert.suchanek@imgtec.com>
27449
27450 * config/mips/mips.cc (mips_set_text_contents_type): Use HOST_WIDE_INT
27451 instead of long.
27452 * config/mips/mips-protos.h (mips_set_text_contents_type): Likewise.
27453
27454 2023-03-02 Junxian Zhu <zhujunxian@oss.cipunited.com>
27455
27456 * config.gcc: add -with-{no-}msa build option.
27457 * config/mips/mips.h: Likewise.
27458 * doc/install.texi: Likewise.
27459
27460 2023-03-02 Richard Sandiford <richard.sandiford@arm.com>
27461
27462 PR tree-optimization/108603
27463 * explow.cc (convert_memory_address_addr_space_1): Only wrap
27464 the result of a recursive call in a CONST if no instructions
27465 were emitted.
27466
27467 2023-03-02 Richard Sandiford <richard.sandiford@arm.com>
27468
27469 PR tree-optimization/108430
27470 * tree-vect-stmts.cc (vectorizable_condition): Fix handling
27471 of inverted condition.
27472
27473 2023-03-02 Jakub Jelinek <jakub@redhat.com>
27474
27475 PR c++/108934
27476 * fold-const.cc (native_interpret_expr) <case REAL_CST>: Before memcmp
27477 comparison copy the bytes from ptr to a temporary buffer and clearing
27478 padding bits in there.
27479
27480 2023-03-01 Tobias Burnus <tobias@codesourcery.com>
27481
27482 PR middle-end/108545
27483 * gimplify.cc (struct tree_operand_hash_no_se): New.
27484 (omp_index_mapping_groups_1, omp_index_mapping_groups,
27485 omp_reindex_mapping_groups, omp_mapped_by_containing_struct,
27486 omp_tsort_mapping_groups_1, omp_tsort_mapping_groups,
27487 oacc_resolve_clause_dependencies, omp_build_struct_sibling_lists,
27488 gimplify_scan_omp_clauses): Use tree_operand_hash_no_se instead
27489 of tree_operand_hash.
27490
27491 2023-03-01 LIU Hao <lh_mouse@126.com>
27492
27493 PR pch/14940
27494 * config/i386/host-mingw32.cc (mingw32_gt_pch_get_address):
27495 Remove the size limit `pch_VA_max_size`
27496
27497 2023-03-01 Tobias Burnus <tobias@codesourcery.com>
27498
27499 PR middle-end/108546
27500 * omp-low.cc (lower_omp_target): Remove optional handling
27501 on the receiver side, i.e. inside target (data), for
27502 use_device_ptr.
27503
27504 2023-03-01 Jakub Jelinek <jakub@redhat.com>
27505
27506 PR debug/108967
27507 * cfgexpand.cc (expand_debug_expr): Handle WIDEN_{PLUS,MINUS}_EXPR
27508 and VEC_WIDEN_{PLUS,MINUS}_{HI,LO}_EXPR.
27509
27510 2023-03-01 Richard Biener <rguenther@suse.de>
27511
27512 PR tree-optimization/108970
27513 * tree-vect-loop-manip.cc (slpeel_can_duplicate_loop_p):
27514 Check we can copy the BBs.
27515 (slpeel_tree_duplicate_loop_to_edge_cfg): Avoid redundant
27516 check.
27517 (vect_do_peeling): Streamline error handling.
27518
27519 2023-03-01 Richard Biener <rguenther@suse.de>
27520
27521 PR tree-optimization/108950
27522 * tree-vect-patterns.cc (vect_recog_widen_sum_pattern):
27523 Check oprnd0 is defined in the loop.
27524 * tree-vect-loop.cc (vectorizable_reduction): Record all
27525 operands vector types, compute that of invariants and
27526 properly update their SLP nodes.
27527
27528 2023-03-01 Kewen Lin <linkw@linux.ibm.com>
27529
27530 PR target/108240
27531 * config/rs6000/rs6000.cc (rs6000_option_override_internal): Allow
27532 implicit powerpc64 setting to be unset if 64 bit is enabled implicitly.
27533
27534 2023-02-28 Qing Zhao <qing.zhao@oracle.com>
27535
27536 PR middle-end/107411
27537 PR middle-end/107411
27538 * gimplify.cc (gimple_add_init_for_auto_var): Use sprintf to replace
27539 xasprintf.
27540 * tree-ssa-uninit.cc (warn_uninit): Handle the case when the
27541 LHS varaible of a .DEFERRED_INIT call doesn't have a DECL_NAME.
27542
27543 2023-02-28 Jakub Jelinek <jakub@redhat.com>
27544
27545 PR sanitizer/108894
27546 * ubsan.cc (ubsan_expand_bounds_ifn): Emit index >= bound
27547 comparison rather than index > bound.
27548 * gimple-fold.cc (gimple_fold_call): Use tree_int_cst_lt
27549 rather than tree_int_cst_le for IFN_UBSAN_BOUND comparison.
27550 * doc/invoke.texi (-fsanitize=bounds): Document that whether
27551 flexible array member-like arrays are instrumented or not depends
27552 on -fstrict-flex-arrays* options of strict_flex_array attributes.
27553 (-fsanitize=bounds-strict): Document that flexible array members
27554 are not instrumented.
27555
27556 2023-02-27 Uroš Bizjak <ubizjak@gmail.com>
27557
27558 PR target/108922
27559 Revert:
27560 * config/i386/i386.md (fmodxf3): Enable for flag_finite_math_only only.
27561 (fmod<mode>3): Ditto.
27562 (fpremxf4_i387): Ditto.
27563 (reminderxf3): Ditto.
27564 (reminder<mode>3): Ditto.
27565 (fprem1xf4_i387): Ditto.
27566
27567 2023-02-27 Roger Sayle <roger@nextmovesoftware.com>
27568
27569 * simplify-rtx.cc (simplify_unary_operation_1) <case FFS>: Avoid
27570 generating FFS with mismatched operand and result modes, by using
27571 an explicit SIGN_EXTEND/ZERO_EXTEND.
27572 <case POPCOUNT>: Likewise, for POPCOUNT of ZERO_EXTEND.
27573 <case PARITY>: Likewise, for PARITY of {ZERO,SIGN}_EXTEND.
27574
27575 2023-02-27 Patrick Palka <ppalka@redhat.com>
27576
27577 * hash-table.h (gt_pch_nx(hash_table<D>)): Remove static.
27578 * lra-int.h (lra_change_class): Likewise.
27579 * recog.h (which_op_alt): Likewise.
27580 * sel-sched-ir.h (sel_bb_empty_or_nop_p): Declare inline
27581 instead of static.
27582
27583 2023-02-27 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
27584
27585 * config/xtensa/xtensa-protos.h (xtensa_match_CLAMPS_imms_p):
27586 New prototype.
27587 * config/xtensa/xtensa.cc (xtensa_match_CLAMPS_imms_p):
27588 New function.
27589 * config/xtensa/xtensa.h (TARGET_CLAMPS): New macro definition.
27590 * config/xtensa/xtensa.md (*xtensa_clamps): New insn pattern.
27591
27592 2023-02-27 Max Filippov <jcmvbkbc@gmail.com>
27593
27594 * config/xtensa/xtensa-dynconfig.cc (xtensa_get_config_v2)
27595 (xtensa_get_config_v3): New functions.
27596
27597 2023-02-27 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
27598
27599 * config/aarch64/aarch64-simd.md (aarch64_abs<mode>): Fix typo in comment.
27600
27601 2023-02-27 Lulu Cheng <chenglulu@loongson.cn>
27602
27603 * config/host-linux.cc (TRY_EMPTY_VM_SPACE): Modify the value of
27604 the macro to 0x1000000000.
27605
27606 2023-02-25 Gaius Mulley <gaiusmod2@gmail.com>
27607
27608 PR modula2/108261
27609 * doc/gm2.texi (-fm2-pathname): New option documented.
27610 (-fm2-pathnameI): New option documented.
27611 (-fm2-prefix=): New option documented.
27612 (-fruntime-modules=): Update default module list.
27613
27614 2023-02-25 Max Filippov <jcmvbkbc@gmail.com>
27615
27616 PR target/108919
27617 * config/xtensa/xtensa-protos.h
27618 (xtensa_prepare_expand_call): Rename to xtensa_expand_call.
27619 * config/xtensa/xtensa.cc (xtensa_prepare_expand_call): Rename
27620 to xtensa_expand_call.
27621 (xtensa_expand_call): Emit the call and add a clobber expression
27622 for the static chain to it in case of windowed ABI.
27623 * config/xtensa/xtensa.md (call, call_value, sibcall)
27624 (sibcall_value): Call xtensa_expand_call and complete expansion
27625 right after that call.
27626
27627 2023-02-24 Richard Biener <rguenther@suse.de>
27628
27629 * vec.h (vec<T, A, vl_embed>::m_vecdata): Remove.
27630 (vec<T, A, vl_embed>::m_vecpfx): Align as T to avoid
27631 changing alignment of vec<T, A, vl_embed> and simplifying
27632 address.
27633 (vec<T, A, vl_embed>::address): Compute as this + 1.
27634 (vec<T, A, vl_embed>::embedded_size): Use sizeof the
27635 vector instead of the offset of the m_vecdata member.
27636 (auto_vec<T, N>::m_data): Turn storage into
27637 uninitialized unsigned char.
27638 (auto_vec<T, N>::auto_vec): Allow allocation of one
27639 stack member. Initialize m_vec in a special way to
27640 avoid later stringop overflow diagnostics.
27641 * vec.cc (test_auto_alias): New.
27642 (vec_cc_tests): Call it.
27643
27644 2023-02-24 Richard Biener <rguenther@suse.de>
27645
27646 * vec.h (vec<T, A, vl_embed>::lower_bound): Adjust to
27647 take a const reference to the object, use address to
27648 access data.
27649 (vec<T, A, vl_embed>::contains): Use address to access data.
27650 (vec<T, A, vl_embed>::operator[]): Use address instead of
27651 m_vecdata to access data.
27652 (vec<T, A, vl_embed>::iterate): Likewise.
27653 (vec<T, A, vl_embed>::copy): Likewise.
27654 (vec<T, A, vl_embed>::quick_push): Likewise.
27655 (vec<T, A, vl_embed>::pop): Likewise.
27656 (vec<T, A, vl_embed>::quick_insert): Likewise.
27657 (vec<T, A, vl_embed>::ordered_remove): Likewise.
27658 (vec<T, A, vl_embed>::unordered_remove): Likewise.
27659 (vec<T, A, vl_embed>::block_remove): Likewise.
27660 (vec<T, A, vl_heap>::address): Likewise.
27661
27662 2023-02-24 Martin Liska <mliska@suse.cz>
27663
27664 PR sanitizer/108834
27665 * asan.cc (asan_add_global): Use proper TU name for normal
27666 global variables (and aux_base_name for the artificial one).
27667
27668 2023-02-24 Jakub Jelinek <jakub@redhat.com>
27669
27670 * config/i386/i386-builtin.def: Update description of BDESC
27671 and BDESC_FIRST in file comment to include mask2.
27672
27673 2023-02-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
27674
27675 * config/aarch64/aarch64-cores.def (FLAGS): Update comment.
27676
27677 2023-02-24 Jakub Jelinek <jakub@redhat.com>
27678
27679 PR middle-end/108854
27680 * cgraphclones.cc (duplicate_thunk_for_node): If no parameter
27681 changes are needed, copy at least DECL_ARGUMENTS PARM_DECL
27682 nodes and adjust their DECL_CONTEXT.
27683
27684 2023-02-24 Jakub Jelinek <jakub@redhat.com>
27685
27686 PR target/108881
27687 * config/i386/i386-builtin.def (__builtin_ia32_cvtne2ps2bf16_v16bf,
27688 __builtin_ia32_cvtne2ps2bf16_v16bf_mask,
27689 __builtin_ia32_cvtne2ps2bf16_v16bf_maskz,
27690 __builtin_ia32_cvtne2ps2bf16_v8bf,
27691 __builtin_ia32_cvtne2ps2bf16_v8bf_mask,
27692 __builtin_ia32_cvtne2ps2bf16_v8bf_maskz,
27693 __builtin_ia32_cvtneps2bf16_v8sf_mask,
27694 __builtin_ia32_cvtneps2bf16_v8sf_maskz,
27695 __builtin_ia32_cvtneps2bf16_v4sf_mask,
27696 __builtin_ia32_cvtneps2bf16_v4sf_maskz,
27697 __builtin_ia32_dpbf16ps_v8sf, __builtin_ia32_dpbf16ps_v8sf_mask,
27698 __builtin_ia32_dpbf16ps_v8sf_maskz, __builtin_ia32_dpbf16ps_v4sf,
27699 __builtin_ia32_dpbf16ps_v4sf_mask,
27700 __builtin_ia32_dpbf16ps_v4sf_maskz): Require also
27701 OPTION_MASK_ISA_AVX512VL.
27702
27703 2023-02-24 Sebastian Huber <sebastian.huber@embedded-brains.de>
27704
27705 * config/riscv/t-rtems: Keep only -mcmodel=medany 64-bit multilibs.
27706 Add non-compact 32-bit multilibs.
27707
27708 2023-02-24 Junxian Zhu <zhujunxian@oss.cipunited.com>
27709
27710 * config/mips/mips.md (*clo<mode>2): New pattern.
27711
27712 2023-02-24 Prachi Godbole <prachi.godbole@imgtec.com>
27713
27714 * config/mips/mips.h (machine_function): New variable
27715 use_hazard_barrier_return_p.
27716 * config/mips/mips.md (UNSPEC_JRHB): New unspec.
27717 (mips_hb_return_internal): New insn pattern.
27718 * config/mips/mips.cc (mips_attribute_table): Add attribute
27719 use_hazard_barrier_return.
27720 (mips_use_hazard_barrier_return_p): New static function.
27721 (mips_function_attr_inlinable_p): Likewise.
27722 (mips_compute_frame_info): Set use_hazard_barrier_return_p.
27723 Emit error for unsupported architecture choice.
27724 (mips_function_ok_for_sibcall, mips_can_use_return_insn):
27725 Return false for use_hazard_barrier_return.
27726 (mips_expand_epilogue): Emit hazard barrier return.
27727 * doc/extend.texi: Document use_hazard_barrier_return.
27728
27729 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
27730
27731 * config/xtensa/xtensa-dynconfig.cc (config.h, system.h)
27732 (coretypes.h, diagnostic.h, intl.h): Use "..." instead of <...>
27733 for the gcc-internal headers.
27734
27735 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
27736
27737 * config/xtensa/t-xtensa (xtensa-dynconfig.o): Use $(COMPILE)
27738 and $(POSTCOMPILE) instead of manual dependency listing.
27739 * config/xtensa/xtensa-dynconfig.c: Rename to ...
27740 * config/xtensa/xtensa-dynconfig.cc: ... this.
27741
27742 2023-02-23 Arsen Arsenović <arsen@aarsen.me>
27743
27744 * doc/cfg.texi: Reorder index entries around @items.
27745 * doc/cpp.texi: Ditto.
27746 * doc/cppenv.texi: Ditto.
27747 * doc/cppopts.texi: Ditto.
27748 * doc/generic.texi: Ditto.
27749 * doc/install.texi: Ditto.
27750 * doc/extend.texi: Ditto.
27751 * doc/invoke.texi: Ditto.
27752 * doc/md.texi: Ditto.
27753 * doc/rtl.texi: Ditto.
27754 * doc/tm.texi.in: Ditto.
27755 * doc/trouble.texi: Ditto.
27756 * doc/tm.texi: Regenerate.
27757
27758 2023-02-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
27759
27760 * config/xtensa/xtensa.md: New peephole2 pattern that eliminates
27761 the occurrence of general-purpose register used only once and for
27762 transferring intermediate value.
27763
27764 2023-02-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
27765
27766 * config/xtensa/xtensa.cc (machine_function): Add new member
27767 'eliminated_callee_saved_bmp'.
27768 (xtensa_can_eliminate_callee_saved_reg_p): New function to
27769 determine whether the register can be eliminated or not.
27770 (xtensa_expand_prologue): Add invoking the above function and
27771 elimination the use of callee-saved register by using its stack
27772 slot through the stack pointer (or the frame pointer if needed)
27773 directly.
27774 (xtensa_expand_prologue): Modify to not emit register restoration
27775 insn from its stack slot if the register is already eliminated.
27776
27777 2023-02-23 Jakub Jelinek <jakub@redhat.com>
27778
27779 PR translation/108890
27780 * config/xtensa/xtensa-dynconfig.c (xtensa_load_config): Drop _()s
27781 around fatal_error format strings.
27782
27783 2023-02-23 Richard Biener <rguenther@suse.de>
27784
27785 * tree-ssa-structalias.cc (handle_lhs_call): Do not
27786 re-create rhsc, only truncate it.
27787
27788 2023-02-23 Jakub Jelinek <jakub@redhat.com>
27789
27790 PR middle-end/106258
27791 * ipa-prop.cc (try_make_edge_direct_virtual_call): Handle
27792 BUILT_IN_UNREACHABLE_TRAP like BUILT_IN_UNREACHABLE.
27793
27794 2023-02-23 Richard Biener <rguenther@suse.de>
27795
27796 * tree-if-conv.cc (tree_if_conversion): Properly manage
27797 memory of refs and the contained data references.
27798
27799 2023-02-23 Richard Biener <rguenther@suse.de>
27800
27801 PR tree-optimization/108888
27802 * tree-if-conv.cc (if_convertible_stmt_p): Set PLF_2 on
27803 calls to predicate.
27804 (predicate_statements): Only predicate calls with PLF_2.
27805
27806 2023-02-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
27807
27808 * config/xtensa/xtensa.md
27809 (zero_cost_loop_start, zero_cost_loop_end, loop_end):
27810 Add missing "SI:" to PLUS RTXes.
27811
27812 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
27813
27814 PR target/108876
27815 * config/xtensa/xtensa.cc (xtensa_expand_epilogue):
27816 Emit (use (reg:SI A0_REG)) at the end in the sibling call
27817 (i.e. the same place as (return) in the normal call).
27818
27819 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
27820
27821 Revert:
27822 2023-02-21 Max Filippov <jcmvbkbc@gmail.com>
27823
27824 PR target/108876
27825 * config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use
27826 for A0_REG.
27827 * config/xtensa/xtensa.md (sibcall, sibcall_internal)
27828 (sibcall_value, sibcall_value_internal): Add 'use' expression
27829 for A0_REG.
27830
27831 2023-02-23 Arsen Arsenović <arsen@aarsen.me>
27832
27833 * doc/cppdiropts.texi: Reorder @opindex commands to precede
27834 @items they relate to.
27835 * doc/cppopts.texi: Ditto.
27836 * doc/cppwarnopts.texi: Ditto.
27837 * doc/invoke.texi: Ditto.
27838 * doc/lto.texi: Ditto.
27839
27840 2023-02-22 Andrew Stubbs <ams@codesourcery.com>
27841
27842 * internal-fn.cc (expand_MASK_CALL): New.
27843 * internal-fn.def (MASK_CALL): New.
27844 * internal-fn.h (expand_MASK_CALL): New prototype.
27845 * omp-simd-clone.cc (simd_clone_adjust_argument_types): Set vector_type
27846 for mask arguments also.
27847 * tree-if-conv.cc: Include cgraph.h.
27848 (if_convertible_stmt_p): Do if conversions for calls to SIMD calls.
27849 (predicate_statements): Convert functions to IFN_MASK_CALL.
27850 * tree-vect-loop.cc (vect_get_datarefs_in_loop): Recognise
27851 IFN_MASK_CALL as a SIMD function call.
27852 * tree-vect-stmts.cc (vectorizable_simd_clone_call): Handle
27853 IFN_MASK_CALL as an inbranch SIMD function call.
27854 Generate the mask vector arguments.
27855
27856 2023-02-22 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
27857
27858 * config/riscv/riscv-vector-builtins-bases.cc (class reducop): New class.
27859 (class widen_reducop): Ditto.
27860 (class freducop): Ditto.
27861 (class widen_freducop): Ditto.
27862 (BASE): Ditto.
27863 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
27864 * config/riscv/riscv-vector-builtins-functions.def (vredsum): Add reduction support.
27865 (vredmaxu): Ditto.
27866 (vredmax): Ditto.
27867 (vredminu): Ditto.
27868 (vredmin): Ditto.
27869 (vredand): Ditto.
27870 (vredor): Ditto.
27871 (vredxor): Ditto.
27872 (vwredsum): Ditto.
27873 (vwredsumu): Ditto.
27874 (vfredusum): Ditto.
27875 (vfredosum): Ditto.
27876 (vfredmax): Ditto.
27877 (vfredmin): Ditto.
27878 (vfwredosum): Ditto.
27879 (vfwredusum): Ditto.
27880 * config/riscv/riscv-vector-builtins-shapes.cc (struct reduc_alu_def): Ditto.
27881 (SHAPE): Ditto.
27882 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
27883 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WI_OPS): New macro.
27884 (DEF_RVV_WU_OPS): Ditto.
27885 (DEF_RVV_WF_OPS): Ditto.
27886 (vint8mf8_t): Ditto.
27887 (vint8mf4_t): Ditto.
27888 (vint8mf2_t): Ditto.
27889 (vint8m1_t): Ditto.
27890 (vint8m2_t): Ditto.
27891 (vint8m4_t): Ditto.
27892 (vint8m8_t): Ditto.
27893 (vint16mf4_t): Ditto.
27894 (vint16mf2_t): Ditto.
27895 (vint16m1_t): Ditto.
27896 (vint16m2_t): Ditto.
27897 (vint16m4_t): Ditto.
27898 (vint16m8_t): Ditto.
27899 (vint32mf2_t): Ditto.
27900 (vint32m1_t): Ditto.
27901 (vint32m2_t): Ditto.
27902 (vint32m4_t): Ditto.
27903 (vint32m8_t): Ditto.
27904 (vuint8mf8_t): Ditto.
27905 (vuint8mf4_t): Ditto.
27906 (vuint8mf2_t): Ditto.
27907 (vuint8m1_t): Ditto.
27908 (vuint8m2_t): Ditto.
27909 (vuint8m4_t): Ditto.
27910 (vuint8m8_t): Ditto.
27911 (vuint16mf4_t): Ditto.
27912 (vuint16mf2_t): Ditto.
27913 (vuint16m1_t): Ditto.
27914 (vuint16m2_t): Ditto.
27915 (vuint16m4_t): Ditto.
27916 (vuint16m8_t): Ditto.
27917 (vuint32mf2_t): Ditto.
27918 (vuint32m1_t): Ditto.
27919 (vuint32m2_t): Ditto.
27920 (vuint32m4_t): Ditto.
27921 (vuint32m8_t): Ditto.
27922 (vfloat32mf2_t): Ditto.
27923 (vfloat32m1_t): Ditto.
27924 (vfloat32m2_t): Ditto.
27925 (vfloat32m4_t): Ditto.
27926 (vfloat32m8_t): Ditto.
27927 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WI_OPS): Ditto.
27928 (DEF_RVV_WU_OPS): Ditto.
27929 (DEF_RVV_WF_OPS): Ditto.
27930 (required_extensions_p): Add reduction support.
27931 (rvv_arg_type_info::get_base_vector_type): Ditto.
27932 (rvv_arg_type_info::get_tree_type): Ditto.
27933 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
27934 * config/riscv/riscv.md: Ditto.
27935 * config/riscv/vector-iterators.md (minu): Ditto.
27936 * config/riscv/vector.md (@pred_reduc_<reduc><mode><vlmul1>): New patern.
27937 (@pred_reduc_<reduc><mode><vlmul1_zve32>): Ditto.
27938 (@pred_widen_reduc_plus<v_su><mode><vwlmul1>): Ditto.
27939 (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve32>):Ditto.
27940 (@pred_reduc_plus<order><mode><vlmul1>): Ditto.
27941 (@pred_reduc_plus<order><mode><vlmul1_zve32>): Ditto.
27942 (@pred_widen_reduc_plus<order><mode><vwlmul1>): Ditto.
27943
27944 2023-02-22 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
27945
27946 * config/riscv/iterators.md: New iterator.
27947 * config/riscv/riscv-vector-builtins-bases.cc (class widen_binop): New class.
27948 (enum ternop_type): New enum.
27949 (class vmacc): New class.
27950 (class imac): Ditto.
27951 (class vnmsac): Ditto.
27952 (enum widen_ternop_type): New enum.
27953 (class vmadd): Ditto.
27954 (class vnmsub): Ditto.
27955 (class iwmac): Ditto.
27956 (class vwmacc): Ditto.
27957 (class vwmaccu): Ditto.
27958 (class vwmaccsu): Ditto.
27959 (class vwmaccus): Ditto.
27960 (class reverse_binop): Ditto.
27961 (class vfmacc): Ditto.
27962 (class vfnmsac): Ditto.
27963 (class vfmadd): Ditto.
27964 (class vfnmsub): Ditto.
27965 (class vfnmacc): Ditto.
27966 (class vfmsac): Ditto.
27967 (class vfnmadd): Ditto.
27968 (class vfmsub): Ditto.
27969 (class vfwmacc): Ditto.
27970 (class vfwnmacc): Ditto.
27971 (class vfwmsac): Ditto.
27972 (class vfwnmsac): Ditto.
27973 (class float_misc): Ditto.
27974 (class fcmp): Ditto.
27975 (class vfclass): Ditto.
27976 (class vfcvt_x): Ditto.
27977 (class vfcvt_rtz_x): Ditto.
27978 (class vfcvt_f): Ditto.
27979 (class vfwcvt_x): Ditto.
27980 (class vfwcvt_rtz_x): Ditto.
27981 (class vfwcvt_f): Ditto.
27982 (class vfncvt_x): Ditto.
27983 (class vfncvt_rtz_x): Ditto.
27984 (class vfncvt_f): Ditto.
27985 (class vfncvt_rod_f): Ditto.
27986 (BASE): Ditto.
27987 * config/riscv/riscv-vector-builtins-bases.h:
27988 * config/riscv/riscv-vector-builtins-functions.def (vzext): Ditto.
27989 (vsext): Ditto.
27990 (vfadd): Ditto.
27991 (vfsub): Ditto.
27992 (vfrsub): Ditto.
27993 (vfwadd): Ditto.
27994 (vfwsub): Ditto.
27995 (vfmul): Ditto.
27996 (vfdiv): Ditto.
27997 (vfrdiv): Ditto.
27998 (vfwmul): Ditto.
27999 (vfmacc): Ditto.
28000 (vfnmsac): Ditto.
28001 (vfmadd): Ditto.
28002 (vfnmsub): Ditto.
28003 (vfnmacc): Ditto.
28004 (vfmsac): Ditto.
28005 (vfnmadd): Ditto.
28006 (vfmsub): Ditto.
28007 (vfwmacc): Ditto.
28008 (vfwnmacc): Ditto.
28009 (vfwmsac): Ditto.
28010 (vfwnmsac): Ditto.
28011 (vfsqrt): Ditto.
28012 (vfrsqrt7): Ditto.
28013 (vfrec7): Ditto.
28014 (vfmin): Ditto.
28015 (vfmax): Ditto.
28016 (vfsgnj): Ditto.
28017 (vfsgnjn): Ditto.
28018 (vfsgnjx): Ditto.
28019 (vfneg): Ditto.
28020 (vfabs): Ditto.
28021 (vmfeq): Ditto.
28022 (vmfne): Ditto.
28023 (vmflt): Ditto.
28024 (vmfle): Ditto.
28025 (vmfgt): Ditto.
28026 (vmfge): Ditto.
28027 (vfclass): Ditto.
28028 (vfmerge): Ditto.
28029 (vfmv_v): Ditto.
28030 (vfcvt_x): Ditto.
28031 (vfcvt_xu): Ditto.
28032 (vfcvt_rtz_x): Ditto.
28033 (vfcvt_rtz_xu): Ditto.
28034 (vfcvt_f): Ditto.
28035 (vfwcvt_x): Ditto.
28036 (vfwcvt_xu): Ditto.
28037 (vfwcvt_rtz_x): Ditto.
28038 (vfwcvt_rtz_xu): Ditto.
28039 (vfwcvt_f): Ditto.
28040 (vfncvt_x): Ditto.
28041 (vfncvt_xu): Ditto.
28042 (vfncvt_rtz_x): Ditto.
28043 (vfncvt_rtz_xu): Ditto.
28044 (vfncvt_f): Ditto.
28045 (vfncvt_rod_f): Ditto.
28046 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
28047 (struct move_def): Ditto.
28048 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WEXTF_OPS): New macro.
28049 (DEF_RVV_CONVERT_I_OPS): Ditto.
28050 (DEF_RVV_CONVERT_U_OPS): Ditto.
28051 (DEF_RVV_WCONVERT_I_OPS): Ditto.
28052 (DEF_RVV_WCONVERT_U_OPS): Ditto.
28053 (DEF_RVV_WCONVERT_F_OPS): Ditto.
28054 (vfloat64m1_t): Ditto.
28055 (vfloat64m2_t): Ditto.
28056 (vfloat64m4_t): Ditto.
28057 (vfloat64m8_t): Ditto.
28058 (vint32mf2_t): Ditto.
28059 (vint32m1_t): Ditto.
28060 (vint32m2_t): Ditto.
28061 (vint32m4_t): Ditto.
28062 (vint32m8_t): Ditto.
28063 (vint64m1_t): Ditto.
28064 (vint64m2_t): Ditto.
28065 (vint64m4_t): Ditto.
28066 (vint64m8_t): Ditto.
28067 (vuint32mf2_t): Ditto.
28068 (vuint32m1_t): Ditto.
28069 (vuint32m2_t): Ditto.
28070 (vuint32m4_t): Ditto.
28071 (vuint32m8_t): Ditto.
28072 (vuint64m1_t): Ditto.
28073 (vuint64m2_t): Ditto.
28074 (vuint64m4_t): Ditto.
28075 (vuint64m8_t): Ditto.
28076 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_CONVERT_I_OPS): Ditto.
28077 (DEF_RVV_CONVERT_U_OPS): Ditto.
28078 (DEF_RVV_WCONVERT_I_OPS): Ditto.
28079 (DEF_RVV_WCONVERT_U_OPS): Ditto.
28080 (DEF_RVV_WCONVERT_F_OPS): Ditto.
28081 (DEF_RVV_F_OPS): Ditto.
28082 (DEF_RVV_WEXTF_OPS): Ditto.
28083 (required_extensions_p): Adjust for floating-point support.
28084 (check_required_extensions): Ditto.
28085 (unsigned_base_type_p): Ditto.
28086 (get_mode_for_bitsize): Ditto.
28087 (rvv_arg_type_info::get_base_vector_type): Ditto.
28088 (rvv_arg_type_info::get_tree_type): Ditto.
28089 * config/riscv/riscv-vector-builtins.def (v_f): New define.
28090 (f): New define.
28091 (f_v): New define.
28092 (xu_v): New define.
28093 (f_w): New define.
28094 (xu_w): New define.
28095 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): New enum.
28096 (function_expander::arg_mode): New function.
28097 * config/riscv/vector-iterators.md (sof): New iterator.
28098 (vfrecp): Ditto.
28099 (copysign): Ditto.
28100 (n): Ditto.
28101 (msac): Ditto.
28102 (msub): Ditto.
28103 (fixuns_trunc): Ditto.
28104 (floatuns): Ditto.
28105 * config/riscv/vector.md (@pred_broadcast<mode>): New pattern.
28106 (@pred_<optab><mode>): Ditto.
28107 (@pred_<optab><mode>_scalar): Ditto.
28108 (@pred_<optab><mode>_reverse_scalar): Ditto.
28109 (@pred_<copysign><mode>): Ditto.
28110 (@pred_<copysign><mode>_scalar): Ditto.
28111 (@pred_mul_<optab><mode>): Ditto.
28112 (pred_mul_<optab><mode>_undef_merge): Ditto.
28113 (*pred_<madd_nmsub><mode>): Ditto.
28114 (*pred_<macc_nmsac><mode>): Ditto.
28115 (*pred_mul_<optab><mode>): Ditto.
28116 (@pred_mul_<optab><mode>_scalar): Ditto.
28117 (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
28118 (*pred_<madd_nmsub><mode>_scalar): Ditto.
28119 (*pred_<macc_nmsac><mode>_scalar): Ditto.
28120 (*pred_mul_<optab><mode>_scalar): Ditto.
28121 (@pred_neg_mul_<optab><mode>): Ditto.
28122 (pred_neg_mul_<optab><mode>_undef_merge): Ditto.
28123 (*pred_<nmadd_msub><mode>): Ditto.
28124 (*pred_<nmacc_msac><mode>): Ditto.
28125 (*pred_neg_mul_<optab><mode>): Ditto.
28126 (@pred_neg_mul_<optab><mode>_scalar): Ditto.
28127 (*pred_neg_mul_<optab><mode>_undef_merge_scalar): Ditto.
28128 (*pred_<nmadd_msub><mode>_scalar): Ditto.
28129 (*pred_<nmacc_msac><mode>_scalar): Ditto.
28130 (*pred_neg_mul_<optab><mode>_scalar): Ditto.
28131 (@pred_<misc_op><mode>): Ditto.
28132 (@pred_class<mode>): Ditto.
28133 (@pred_dual_widen_<optab><mode>): Ditto.
28134 (@pred_dual_widen_<optab><mode>_scalar): Ditto.
28135 (@pred_single_widen_<plus_minus:optab><mode>): Ditto.
28136 (@pred_single_widen_<plus_minus:optab><mode>_scalar): Ditto.
28137 (@pred_widen_mul_<optab><mode>): Ditto.
28138 (@pred_widen_mul_<optab><mode>_scalar): Ditto.
28139 (@pred_widen_neg_mul_<optab><mode>): Ditto.
28140 (@pred_widen_neg_mul_<optab><mode>_scalar): Ditto.
28141 (@pred_cmp<mode>): Ditto.
28142 (*pred_cmp<mode>): Ditto.
28143 (*pred_cmp<mode>_narrow): Ditto.
28144 (@pred_cmp<mode>_scalar): Ditto.
28145 (*pred_cmp<mode>_scalar): Ditto.
28146 (*pred_cmp<mode>_scalar_narrow): Ditto.
28147 (@pred_eqne<mode>_scalar): Ditto.
28148 (*pred_eqne<mode>_scalar): Ditto.
28149 (*pred_eqne<mode>_scalar_narrow): Ditto.
28150 (@pred_merge<mode>_scalar): Ditto.
28151 (@pred_fcvt_x<v_su>_f<mode>): Ditto.
28152 (@pred_<fix_cvt><mode>): Ditto.
28153 (@pred_<float_cvt><mode>): Ditto.
28154 (@pred_widen_fcvt_x<v_su>_f<mode>): Ditto.
28155 (@pred_widen_<fix_cvt><mode>): Ditto.
28156 (@pred_widen_<float_cvt><mode>): Ditto.
28157 (@pred_extend<mode>): Ditto.
28158 (@pred_narrow_fcvt_x<v_su>_f<mode>): Ditto.
28159 (@pred_narrow_<fix_cvt><mode>): Ditto.
28160 (@pred_narrow_<float_cvt><mode>): Ditto.
28161 (@pred_trunc<mode>): Ditto.
28162 (@pred_rod_trunc<mode>): Ditto.
28163
28164 2023-02-22 Jakub Jelinek <jakub@redhat.com>
28165
28166 PR middle-end/106258
28167 * cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee,
28168 cgraph_update_edges_for_call_stmt_node, cgraph_node::verify_node):
28169 Handle BUILT_IN_UNREACHABLE_TRAP like BUILT_IN_UNREACHABLE.
28170 * cgraphclones.cc (cgraph_node::create_clone): Likewise.
28171
28172 2023-02-22 Thomas Schwinge <thomas@codesourcery.com>
28173
28174 * common.opt (-Wcomplain-wrong-lang): New.
28175 * doc/invoke.texi (-Wno-complain-wrong-lang): Document it.
28176 * opts-common.cc (prune_options): Handle it.
28177 * opts-global.cc (complain_wrong_lang): Use it.
28178
28179 2023-02-21 David Malcolm <dmalcolm@redhat.com>
28180
28181 PR analyzer/108830
28182 * doc/invoke.texi: Document -fno-analyzer-suppress-followups.
28183
28184 2023-02-21 Max Filippov <jcmvbkbc@gmail.com>
28185
28186 PR target/108876
28187 * config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use
28188 for A0_REG.
28189 * config/xtensa/xtensa.md (sibcall, sibcall_internal)
28190 (sibcall_value, sibcall_value_internal): Add 'use' expression
28191 for A0_REG.
28192
28193 2023-02-21 Richard Biener <rguenther@suse.de>
28194
28195 PR tree-optimization/108691
28196 * tree-ssa-dce.cc (eliminate_unnecessary_stmts): Remove
28197 assert about calls_setjmp not becoming true when it was false.
28198
28199 2023-02-21 Richard Biener <rguenther@suse.de>
28200
28201 PR tree-optimization/108793
28202 * tree-ssa-loop-niter.cc (number_of_iterations_until_wrap):
28203 Use convert operands to niter_type when computing num.
28204
28205 2023-02-21 Richard Biener <rguenther@suse.de>
28206
28207 Revert:
28208 2023-02-13 Richard Biener <rguenther@suse.de>
28209
28210 PR tree-optimization/108691
28211 * tree-cfg.cc (notice_special_calls): When the CFG is built
28212 honor gimple_call_ctrl_altering_p.
28213 * cfgexpand.cc (expand_call_stmt): Clear cfun->calls_setjmp
28214 temporarily if the call is not control-altering.
28215 * calls.cc (emit_call_1): Do not add REG_SETJMP if
28216 cfun->calls_setjmp is not set. Do not alter cfun->calls_setjmp.
28217
28218 2023-02-21 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
28219
28220 * config/xtensa/xtensa.cc (xtensa_call_save_reg): Change to return
28221 true if register A0 (return address register) when -Og is specified.
28222
28223 2023-02-20 Uroš Bizjak <ubizjak@gmail.com>
28224
28225 * config/i386/predicates.md
28226 (general_x64constmem_operand): New predicate.
28227 * config/i386/i386.md (*cmpqi_ext<mode>_1):
28228 Use nonimm_x64constmem_operand.
28229 (*cmpqi_ext<mode>_3): Use general_x64constmem_operand.
28230 (*addqi_ext<mode>_1): Ditto.
28231 (*testqi_ext<mode>_1): Ditto.
28232 (*andqi_ext<mode>_1): Ditto.
28233 (*andqi_ext<mode>_1_cc): Ditto.
28234 (*<any_or:code>qi_ext<mode>_1): Ditto.
28235 (*xorqi_ext<mode>_1_cc): Ditto.
28236
28237 2023-02-20 Jakub Jelinek <jakub2redhat.com>
28238
28239 PR target/108862
28240 * config/rs6000/rs6000.md (umaddditi4): Swap gen_maddlddi4 with
28241 gen_umadddi4_highpart{,_le}.
28242
28243 2023-02-20 Kito Cheng <kito.cheng@sifive.com>
28244
28245 * config/riscv/riscv.md (prefetch): Use r instead of p for the
28246 address operand.
28247 (riscv_prefetchi_<mode>): Ditto.
28248
28249 2023-02-20 Richard Biener <rguenther@suse.de>
28250
28251 PR tree-optimization/108816
28252 * tree-vect-loop-manip.cc (vect_loop_versioning): Adjust
28253 versioning condition split prerequesite, assert required
28254 invariant.
28255
28256 2023-02-20 Richard Biener <rguenther@suse.de>
28257
28258 PR tree-optimization/108825
28259 * tree-ssa-loop-manip.cc (verify_loop_closed_ssa): For
28260 loop-local verfication only verify there's no pending SSA
28261 update.
28262
28263 2023-02-20 Richard Biener <rguenther@suse.de>
28264
28265 PR tree-optimization/108819
28266 * tree-ssa-loop-niter.cc (number_of_iterations_cltz): Check
28267 we have an SSA name as iv_2 as expected.
28268
28269 2023-02-18 Jakub Jelinek <jakub@redhat.com>
28270
28271 PR tree-optimization/108819
28272 * tree-ssa-reassoc.cc (update_ops): Fold new stmt in place.
28273
28274 2023-02-18 Jakub Jelinek <jakub@redhat.com>
28275
28276 PR target/108832
28277 * config/i386/i386-protos.h (ix86_replace_reg_with_reg): Declare.
28278 * config/i386/i386-expand.cc (ix86_replace_reg_with_reg): New
28279 function.
28280 * config/i386/i386.md: Replace replace_rtx calls in all peephole2s
28281 with ix86_replace_reg_with_reg.
28282
28283 2023-02-18 Gerald Pfeifer <gerald@pfeifer.com>
28284
28285 * doc/invoke.texi (AVR Options): Update link to AVR-LibC.
28286
28287 2023-02-18 Xi Ruoyao <xry111@xry111.site>
28288
28289 * config.gcc (triplet_abi): Set its value based on $with_abi,
28290 instead of $target.
28291 (la_canonical_triplet): Set it after $triplet_abi is set
28292 correctly.
28293 * config/loongarch/t-linux (MULTILIB_OSDIRNAMES): Make the
28294 multiarch tuple for lp64d "loongarch64-linux-gnu" (without
28295 "f64" suffix).
28296
28297 2023-02-18 Andrew Pinski <apinski@marvell.com>
28298
28299 * match.pd: Remove #if GIMPLE around the
28300 "1 - a" pattern
28301
28302 2023-02-18 Andrew Pinski <apinski@marvell.com>
28303
28304 * value-query.h (get_range_query): Return the global ranges
28305 for a nullptr func.
28306
28307 2023-02-17 Siddhesh Poyarekar <siddhesh@gotplt.org>
28308
28309 * doc/invoke.texi (@item -Wall): Fix typo in
28310 -Wuse-after-free.
28311
28312 2023-02-17 Uroš Bizjak <ubizjak@gmail.com>
28313
28314 PR target/108831
28315 * config/i386/predicates.md
28316 (nonimm_x64constmem_operand): New predicate.
28317 * config/i386/i386.md (*addqi_ext<mode>_0): New insn pattern.
28318 (*subqi_ext<mode>_0): Ditto.
28319 (*andqi_ext<mode>_0): Ditto.
28320 (*<any_or:code>qi_ext<mode>_0): Ditto.
28321
28322 2023-02-17 Uroš Bizjak <ubizjak@gmail.com>
28323
28324 PR target/108805
28325 * simplify-rtx.cc (simplify_context::simplify_subreg): Use
28326 int_outermode instead of GET_MODE (tem) to prevent
28327 VOIDmode from entering simplify_gen_subreg.
28328
28329 2023-02-17 Richard Biener <rguenther@suse.de>
28330
28331 PR tree-optimization/108821
28332 * tree-ssa-loop-im.cc (sm_seq_valid_bb): We can also not
28333 move volatile accesses.
28334
28335 2023-02-17 Richard Biener <rguenther@suse.de>
28336
28337 * tree-ssa.cc (ssa_undefined_value_p): Assert we are not
28338 called on virtual operands.
28339 * tree-ssa-sccvn.cc (vn_phi_lookup): Guard
28340 ssa_undefined_value_p calls.
28341 (vn_phi_insert): Likewise.
28342 (set_ssa_val_to): Likewise.
28343 (visit_phi): Avoid extra work with equivalences for
28344 virtual operand PHIs.
28345
28346 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
28347
28348 * config/riscv/riscv-vector-builtins-bases.cc (class mask_logic): New
28349 class.
28350 (class mask_nlogic): Ditto.
28351 (class mask_notlogic): Ditto.
28352 (class vmmv): Ditto.
28353 (class vmclr): Ditto.
28354 (class vmset): Ditto.
28355 (class vmnot): Ditto.
28356 (class vcpop): Ditto.
28357 (class vfirst): Ditto.
28358 (class mask_misc): Ditto.
28359 (class viota): Ditto.
28360 (class vid): Ditto.
28361 (BASE): Ditto.
28362 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
28363 * config/riscv/riscv-vector-builtins-functions.def (vmand): Ditto.
28364 (vmnand): Ditto.
28365 (vmandn): Ditto.
28366 (vmxor): Ditto.
28367 (vmor): Ditto.
28368 (vmnor): Ditto.
28369 (vmorn): Ditto.
28370 (vmxnor): Ditto.
28371 (vmmv): Ditto.
28372 (vmclr): Ditto.
28373 (vmset): Ditto.
28374 (vmnot): Ditto.
28375 (vcpop): Ditto.
28376 (vfirst): Ditto.
28377 (vmsbf): Ditto.
28378 (vmsif): Ditto.
28379 (vmsof): Ditto.
28380 (viota): Ditto.
28381 (vid): Ditto.
28382 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
28383 (struct mask_alu_def): Ditto.
28384 (SHAPE): Ditto.
28385 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
28386 * config/riscv/riscv-vector-builtins.cc: Ditto.
28387 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::cleanup_insns): Fix bug
28388 for dest it scalar RVV intrinsics.
28389 * config/riscv/vector-iterators.md (sof): New iterator.
28390 * config/riscv/vector.md (@pred_<optab>n<mode>): New pattern.
28391 (@pred_<optab>not<mode>): New pattern.
28392 (@pred_popcount<VB:mode><P:mode>): New pattern.
28393 (@pred_ffs<VB:mode><P:mode>): New pattern.
28394 (@pred_<misc_op><mode>): New pattern.
28395 (@pred_iota<mode>): New pattern.
28396 (@pred_series<mode>): New pattern.
28397
28398 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
28399
28400 * config/riscv/riscv-vector-builtins-functions.def (vadc): Rename.
28401 (vsbc): Ditto.
28402 (vmerge): Ditto.
28403 (vmv_v): Ditto.
28404 * config/riscv/riscv-vector-builtins.cc: Ditto.
28405
28406 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
28407 kito-cheng <kito.cheng@sifive.com>
28408
28409 * config/riscv/riscv-protos.h (sew64_scalar_helper): New function.
28410 * config/riscv/riscv-v.cc (has_vi_variant_p): Adjust.
28411 (sew64_scalar_helper): New function.
28412 * config/riscv/vector.md: Normalization.
28413
28414 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
28415
28416 * config/riscv/riscv-vector-builtins-functions.def (vsetvlmax): Rearrange.
28417 (vsm): Ditto.
28418 (vsse): Ditto.
28419 (vsoxei64): Ditto.
28420 (vsub): Ditto.
28421 (vand): Ditto.
28422 (vor): Ditto.
28423 (vxor): Ditto.
28424 (vsll): Ditto.
28425 (vsra): Ditto.
28426 (vsrl): Ditto.
28427 (vmin): Ditto.
28428 (vmax): Ditto.
28429 (vminu): Ditto.
28430 (vmaxu): Ditto.
28431 (vmul): Ditto.
28432 (vmulh): Ditto.
28433 (vmulhu): Ditto.
28434 (vmulhsu): Ditto.
28435 (vdiv): Ditto.
28436 (vrem): Ditto.
28437 (vdivu): Ditto.
28438 (vremu): Ditto.
28439 (vnot): Ditto.
28440 (vsext): Ditto.
28441 (vzext): Ditto.
28442 (vwadd): Ditto.
28443 (vwsub): Ditto.
28444 (vwmul): Ditto.
28445 (vwmulu): Ditto.
28446 (vwmulsu): Ditto.
28447 (vwaddu): Ditto.
28448 (vwsubu): Ditto.
28449 (vsbc): Ditto.
28450 (vmsbc): Ditto.
28451 (vnsra): Ditto.
28452 (vmerge): Ditto.
28453 (vmv_v): Ditto.
28454 (vmsne): Ditto.
28455 (vmslt): Ditto.
28456 (vmsgt): Ditto.
28457 (vmsle): Ditto.
28458 (vmsge): Ditto.
28459 (vmsltu): Ditto.
28460 (vmsgtu): Ditto.
28461 (vmsleu): Ditto.
28462 (vmsgeu): Ditto.
28463 (vnmsac): Ditto.
28464 (vmadd): Ditto.
28465 (vnmsub): Ditto.
28466 (vwmacc): Ditto.
28467 (vsadd): Ditto.
28468 (vssub): Ditto.
28469 (vssubu): Ditto.
28470 (vaadd): Ditto.
28471 (vasub): Ditto.
28472 (vasubu): Ditto.
28473 (vsmul): Ditto.
28474 (vssra): Ditto.
28475 (vssrl): Ditto.
28476 (vnclip): Ditto.
28477
28478 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
28479
28480 * config/riscv/vector.md (@pred_<optab><mode>): Rearrange.
28481 (@pred_<optab><mode>_scalar): Ditto.
28482 (*pred_<optab><mode>_scalar): Ditto.
28483 (*pred_<optab><mode>_extended_scalar): Ditto.
28484
28485 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
28486
28487 * config/riscv/riscv-protos.h (riscv_run_selftests): Remove 'extern'.
28488 (init_builtins): Ditto.
28489 (mangle_builtin_type): Ditto.
28490 (verify_type_context): Ditto.
28491 (handle_pragma_vector): Ditto.
28492 (builtin_decl): Ditto.
28493 (expand_builtin): Ditto.
28494 (const_vec_all_same_in_range_p): Ditto.
28495 (legitimize_move): Ditto.
28496 (emit_vlmax_op): Ditto.
28497 (emit_nonvlmax_op): Ditto.
28498 (get_vlmul): Ditto.
28499 (get_ratio): Ditto.
28500 (get_ta): Ditto.
28501 (get_ma): Ditto.
28502 (get_avl_type): Ditto.
28503 (calculate_ratio): Ditto.
28504 (enum vlmul_type): Ditto.
28505 (simm5_p): Ditto.
28506 (neg_simm5_p): Ditto.
28507 (has_vi_variant_p): Ditto.
28508
28509 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
28510
28511 * config/riscv/riscv-protos.h (simm32_p): Remove.
28512 * config/riscv/riscv-v.cc (simm32_p): Ditto.
28513 * config/riscv/vector.md: Use immediate_operand
28514 instead of riscv_vector::simm32_p.
28515
28516 2023-02-16 Gerald Pfeifer <gerald@pfeifer.com>
28517
28518 * doc/invoke.texi (Optimize Options): Reword the explanation
28519 getting minimal, maximal and default values of a parameter.
28520
28521 2023-02-16 Patrick Palka <ppalka@redhat.com>
28522
28523 * addresses.h: Mechanically drop 'static' from 'static inline'
28524 functions via s/^static inline/inline/g.
28525 * asan.h: Likewise.
28526 * attribs.h: Likewise.
28527 * basic-block.h: Likewise.
28528 * bitmap.h: Likewise.
28529 * cfghooks.h: Likewise.
28530 * cfgloop.h: Likewise.
28531 * cgraph.h: Likewise.
28532 * cselib.h: Likewise.
28533 * data-streamer.h: Likewise.
28534 * debug.h: Likewise.
28535 * df.h: Likewise.
28536 * diagnostic.h: Likewise.
28537 * dominance.h: Likewise.
28538 * dumpfile.h: Likewise.
28539 * emit-rtl.h: Likewise.
28540 * except.h: Likewise.
28541 * expmed.h: Likewise.
28542 * expr.h: Likewise.
28543 * fixed-value.h: Likewise.
28544 * gengtype.h: Likewise.
28545 * gimple-expr.h: Likewise.
28546 * gimple-iterator.h: Likewise.
28547 * gimple-predict.h: Likewise.
28548 * gimple-range-fold.h: Likewise.
28549 * gimple-ssa.h: Likewise.
28550 * gimple.h: Likewise.
28551 * graphite.h: Likewise.
28552 * hard-reg-set.h: Likewise.
28553 * hash-map.h: Likewise.
28554 * hash-set.h: Likewise.
28555 * hash-table.h: Likewise.
28556 * hwint.h: Likewise.
28557 * input.h: Likewise.
28558 * insn-addr.h: Likewise.
28559 * internal-fn.h: Likewise.
28560 * ipa-fnsummary.h: Likewise.
28561 * ipa-icf-gimple.h: Likewise.
28562 * ipa-inline.h: Likewise.
28563 * ipa-modref.h: Likewise.
28564 * ipa-prop.h: Likewise.
28565 * ira-int.h: Likewise.
28566 * ira.h: Likewise.
28567 * lra-int.h: Likewise.
28568 * lra.h: Likewise.
28569 * lto-streamer.h: Likewise.
28570 * memmodel.h: Likewise.
28571 * omp-general.h: Likewise.
28572 * optabs-query.h: Likewise.
28573 * optabs.h: Likewise.
28574 * plugin.h: Likewise.
28575 * pretty-print.h: Likewise.
28576 * range.h: Likewise.
28577 * read-md.h: Likewise.
28578 * recog.h: Likewise.
28579 * regs.h: Likewise.
28580 * rtl-iter.h: Likewise.
28581 * rtl.h: Likewise.
28582 * sbitmap.h: Likewise.
28583 * sched-int.h: Likewise.
28584 * sel-sched-ir.h: Likewise.
28585 * sese.h: Likewise.
28586 * sparseset.h: Likewise.
28587 * ssa-iterators.h: Likewise.
28588 * system.h: Likewise.
28589 * target-globals.h: Likewise.
28590 * target.h: Likewise.
28591 * timevar.h: Likewise.
28592 * tree-chrec.h: Likewise.
28593 * tree-data-ref.h: Likewise.
28594 * tree-iterator.h: Likewise.
28595 * tree-outof-ssa.h: Likewise.
28596 * tree-phinodes.h: Likewise.
28597 * tree-scalar-evolution.h: Likewise.
28598 * tree-sra.h: Likewise.
28599 * tree-ssa-alias.h: Likewise.
28600 * tree-ssa-live.h: Likewise.
28601 * tree-ssa-loop-manip.h: Likewise.
28602 * tree-ssa-loop.h: Likewise.
28603 * tree-ssa-operands.h: Likewise.
28604 * tree-ssa-propagate.h: Likewise.
28605 * tree-ssa-sccvn.h: Likewise.
28606 * tree-ssa.h: Likewise.
28607 * tree-ssanames.h: Likewise.
28608 * tree-streamer.h: Likewise.
28609 * tree-switch-conversion.h: Likewise.
28610 * tree-vectorizer.h: Likewise.
28611 * tree.h: Likewise.
28612 * wide-int.h: Likewise.
28613
28614 2023-02-16 Jakub Jelinek <jakub@redhat.com>
28615
28616 PR tree-optimization/108657
28617 * tree-ssa-dse.cc (initialize_ao_ref_for_dse): If lhs of stmt
28618 exists and is not a SSA_NAME, call ao_ref_init even if the stmt
28619 is a call to internal or builtin function.
28620
28621 2023-02-16 Jonathan Wakely <jwakely@redhat.com>
28622
28623 * doc/invoke.texi (C++ Dialect Options): Suggest adding a
28624 using-declaration to unhide functions.
28625
28626 2023-02-16 Jakub Jelinek <jakub@redhat.com>
28627
28628 PR tree-optimization/108783
28629 * tree-ssa-reassoc.cc (eliminate_redundant_comparison): If lcode
28630 is equal to TREE_CODE (t), op1 to newop1 and op2 to newop2, set
28631 t to curr->op. Otherwise, punt if either newop1 or newop2 are
28632 SSA_NAME_OCCURS_IN_ABNORMAL_PHI SSA_NAMEs.
28633
28634 2023-02-16 Richard Biener <rguenther@suse.de>
28635
28636 PR tree-optimization/108791
28637 * tree-ssa-forwprop.cc (optimize_vector_load): Build
28638 the ADDR_EXPR of a TARGET_MEM_REF using a more meaningful
28639 type.
28640
28641 2023-02-15 Eric Botcazou <ebotcazou@adacore.com>
28642
28643 PR target/90458
28644 * config/i386/i386.cc (ix86_compute_frame_layout): Disable the
28645 effects of -fstack-clash-protection for TARGET_STACK_PROBE.
28646 (ix86_expand_prologue): Likewise.
28647
28648 2023-02-15 Jan-Benedict Glaw <jbglaw@lug-owl.de>
28649
28650 * config/bpf/bpf.cc (bpf_option_override): Fix doubled space.
28651
28652 2023-02-15 Uroš Bizjak <ubizjak@gmail.com>
28653
28654 * config/i386/i386.md (*cmpqi_ext<mode>_1): Use
28655 int248_register_operand predicate in zero_extract sub-RTX.
28656 (*cmpqi_ext<mode>_2): Ditto.
28657 (*cmpqi_ext<mode>_3): Ditto.
28658 (*cmpqi_ext<mode>_4): Ditto.
28659 (*extzvqi_mem_rex64): Ditto.
28660 (*extzvqi): Ditto.
28661 (*insvqi_1_mem_rex64): Ditto.
28662 (@insv<mode>_1): Ditto.
28663 (*insvqi_1): Ditto.
28664 (*insvqi_2): Ditto.
28665 (*insvqi_3): Ditto.
28666 (*extendqi<SWI24:mode>_ext_1): Ditto.
28667 (*addqi_ext<mode>_1): Ditto.
28668 (*addqi_ext<mode>_2): Ditto.
28669 (*subqi_ext<mode>_2): Ditto.
28670 (*testqi_ext<mode>_1): Ditto.
28671 (*testqi_ext<mode>_2): Ditto.
28672 (*andqi_ext<mode>_1): Ditto.
28673 (*andqi_ext<mode>_1_cc): Ditto.
28674 (*andqi_ext<mode>_2): Ditto.
28675 (*<any_or:code>qi_ext<mode>_1): Ditto.
28676 (*<any_or:code>qi_ext<mode>_2): Ditto.
28677 (*xorqi_ext<mode>_1_cc): Ditto.
28678 (*negqi_ext<mode>_2): Ditto.
28679 (*ashlqi_ext<mode>_2): Ditto.
28680 (*<any_shiftrt:insn>qi_ext<mode>_2): Ditto.
28681
28682 2023-02-15 Uroš Bizjak <ubizjak@gmail.com>
28683
28684 * config/i386/predicates.md (int248_register_operand):
28685 Rename from extr_register_operand.
28686 * config/i386/i386.md (*extv<mode>): Update for renamed predicate.
28687 (*extzx<mode>): Ditto.
28688 (*ashl<dwi>3_doubleword_mask): Use int248_register_operand predicate.
28689 (*ashl<mode>3_mask): Ditto.
28690 (*<any_shiftrt:insn><mode>3_mask): Ditto.
28691 (*<any_shiftrt:insn><dwi>3_doubleword_mask): Ditto.
28692 (*<any_rotate:insn><mode>3_mask): Ditto.
28693 (*<btsc><mode>_mask): Ditto.
28694 (*btr<mode>_mask): Ditto.
28695 (*jcc_bt<mode>_mask_1): Ditto.
28696
28697 2023-02-15 Richard Biener <rguenther@suse.de>
28698
28699 PR middle-end/26854
28700 * df-core.cc (df_worklist_propagate_forward): Put later
28701 blocks on worklist and only earlier blocks on pending.
28702 (df_worklist_propagate_backward): Likewise.
28703 (df_worklist_dataflow_doublequeue): Change the iteration
28704 to process new blocks in the same iteration if that
28705 maintains the iteration order.
28706
28707 2023-02-15 Marek Polacek <polacek@redhat.com>
28708
28709 PR middle-end/106080
28710 * gimple-ssa-warn-access.cc (is_auto_decl): Remove. Use auto_var_p
28711 instead.
28712
28713 2023-02-15 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
28714
28715 * config/riscv/predicates.md: Refine codes.
28716 * config/riscv/riscv-protos.h (RVV_VUNDEF): New macro.
28717 * config/riscv/riscv-v.cc: Refine codes.
28718 * config/riscv/riscv-vector-builtins-bases.cc (enum ternop_type): New
28719 enum.
28720 (class imac): New class.
28721 (enum widen_ternop_type): New enum.
28722 (class iwmac): New class.
28723 (BASE): New class.
28724 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
28725 * config/riscv/riscv-vector-builtins-functions.def (vmacc): Ditto.
28726 (vnmsac): Ditto.
28727 (vmadd): Ditto.
28728 (vnmsub): Ditto.
28729 (vwmacc): Ditto.
28730 (vwmaccu): Ditto.
28731 (vwmaccsu): Ditto.
28732 (vwmaccus): Ditto.
28733 * config/riscv/riscv-vector-builtins.cc
28734 (function_builder::apply_predication): Adjust for multiply-add support.
28735 (function_expander::add_vundef_operand): Refine codes.
28736 (function_expander::use_ternop_insn): New function.
28737 (function_expander::use_widen_ternop_insn): Ditto.
28738 * config/riscv/riscv-vector-builtins.h: New function.
28739 * config/riscv/vector.md (@pred_mul_<optab><mode>): New pattern.
28740 (pred_mul_<optab><mode>_undef_merge): Ditto.
28741 (*pred_<madd_nmsub><mode>): Ditto.
28742 (*pred_<macc_nmsac><mode>): Ditto.
28743 (*pred_mul_<optab><mode>): Ditto.
28744 (@pred_mul_<optab><mode>_scalar): Ditto.
28745 (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
28746 (*pred_<madd_nmsub><mode>_scalar): Ditto.
28747 (*pred_<macc_nmsac><mode>_scalar): Ditto.
28748 (*pred_mul_<optab><mode>_scalar): Ditto.
28749 (*pred_mul_<optab><mode>_undef_merge_extended_scalar): Ditto.
28750 (*pred_<madd_nmsub><mode>_extended_scalar): Ditto.
28751 (*pred_<macc_nmsac><mode>_extended_scalar): Ditto.
28752 (*pred_mul_<optab><mode>_extended_scalar): Ditto.
28753 (@pred_widen_mul_plus<su><mode>): Ditto.
28754 (@pred_widen_mul_plus<su><mode>_scalar): Ditto.
28755 (@pred_widen_mul_plussu<mode>): Ditto.
28756 (@pred_widen_mul_plussu<mode>_scalar): Ditto.
28757 (@pred_widen_mul_plusus<mode>_scalar): Ditto.
28758
28759 2023-02-15 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
28760
28761 * config/riscv/predicates.md (vector_mask_operand): Refine the codes.
28762 (vector_all_trues_mask_operand): New predicate.
28763 (vector_undef_operand): New predicate.
28764 (ltge_operator): New predicate.
28765 (comparison_except_ltge_operator): New predicate.
28766 (comparison_except_eqge_operator): New predicate.
28767 (ge_operator): New predicate.
28768 * config/riscv/riscv-v.cc (has_vi_variant_p): Add compare support.
28769 * config/riscv/riscv-vector-builtins-bases.cc (class icmp): New class.
28770 (BASE): Ditto.
28771 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
28772 * config/riscv/riscv-vector-builtins-functions.def (vmseq): Ditto.
28773 (vmsne): Ditto.
28774 (vmslt): Ditto.
28775 (vmsgt): Ditto.
28776 (vmsle): Ditto.
28777 (vmsge): Ditto.
28778 (vmsltu): Ditto.
28779 (vmsgtu): Ditto.
28780 (vmsleu): Ditto.
28781 (vmsgeu): Ditto.
28782 * config/riscv/riscv-vector-builtins-shapes.cc
28783 (struct return_mask_def): Adjust for compare support.
28784 * config/riscv/riscv-vector-builtins.cc
28785 (function_expander::use_compare_insn): New function.
28786 * config/riscv/riscv-vector-builtins.h
28787 (function_expander::add_integer_operand): Ditto.
28788 * config/riscv/riscv.cc (riscv_print_operand): Add compare support.
28789 * config/riscv/riscv.md: Add vector min/max attributes.
28790 * config/riscv/vector-iterators.md (xnor): New iterator.
28791 * config/riscv/vector.md (@pred_cmp<mode>): New pattern.
28792 (*pred_cmp<mode>): Ditto.
28793 (*pred_cmp<mode>_narrow): Ditto.
28794 (@pred_ltge<mode>): Ditto.
28795 (*pred_ltge<mode>): Ditto.
28796 (*pred_ltge<mode>_narrow): Ditto.
28797 (@pred_cmp<mode>_scalar): Ditto.
28798 (*pred_cmp<mode>_scalar): Ditto.
28799 (*pred_cmp<mode>_scalar_narrow): Ditto.
28800 (@pred_eqne<mode>_scalar): Ditto.
28801 (*pred_eqne<mode>_scalar): Ditto.
28802 (*pred_eqne<mode>_scalar_narrow): Ditto.
28803 (*pred_cmp<mode>_extended_scalar): Ditto.
28804 (*pred_cmp<mode>_extended_scalar_narrow): Ditto.
28805 (*pred_eqne<mode>_extended_scalar): Ditto.
28806 (*pred_eqne<mode>_extended_scalar_narrow): Ditto.
28807 (@pred_ge<mode>_scalar): Ditto.
28808 (@pred_<optab><mode>): Ditto.
28809 (@pred_n<optab><mode>): Ditto.
28810 (@pred_<optab>n<mode>): Ditto.
28811 (@pred_not<mode>): Ditto.
28812
28813 2023-02-15 Martin Jambor <mjambor@suse.cz>
28814
28815 PR ipa/108679
28816 * ipa-sra.cc (push_param_adjustments_for_index): Do not omit
28817 creation of non-scalar replacements even if IPA-CP knows their
28818 contents.
28819
28820 2023-02-15 Jakub Jelinek <jakub@redhat.com>
28821
28822 PR target/108787
28823 PR target/103109
28824 * config/rs6000/rs6000.md (<u>maddditi4): Change into umaddditi4 only
28825 expander, change operand 3 to be TImode, emit maddlddi4 and
28826 umadddi4_highpart{,_le} with its low half and finally add the high
28827 half to the result.
28828
28829 2023-02-15 Martin Liska <mliska@suse.cz>
28830
28831 * doc/invoke.texi: Document --param=asan-kernel-mem-intrinsic-prefix.
28832
28833 2023-02-15 Richard Biener <rguenther@suse.de>
28834
28835 * sanopt.cc (sanitize_asan_mark_unpoison): Use bitmap
28836 for with_poison and alias worklist to it.
28837 (sanitize_asan_mark_poison): Likewise.
28838
28839 2023-02-15 Richard Biener <rguenther@suse.de>
28840
28841 PR target/108738
28842 * config/i386/i386-features.cc (scalar_chain::add_to_queue):
28843 Combine bitmap test and set.
28844 (scalar_chain::add_insn): Likewise.
28845 (scalar_chain::analyze_register_chain): Remove redundant
28846 attempt to add to queue and instead strengthen assert.
28847 Sink common attempts to mark the def dual-mode.
28848 (scalar_chain::add_to_queue): Remove redundant insn bitmap
28849 check.
28850
28851 2023-02-15 Richard Biener <rguenther@suse.de>
28852
28853 PR target/108738
28854 * config/i386/i386-features.cc (convert_scalars_to_vector):
28855 Switch candidates bitmaps to tree view before building the chains.
28856
28857 2023-02-15 Hans-Peter Nilsson <hp@axis.com>
28858
28859 * reload1.cc (gen_reload): Correct rtx parameter for fatal_insn
28860 "failure trying to reload" call.
28861
28862 2023-02-15 Hans-Peter Nilsson <hp@axis.com>
28863
28864 * gdbinit.in (phrs): New command.
28865 * sel-sched-dump.cc (debug_hard_reg_set): Remove debug-function.
28866 * ira-color.cc (debug_hard_reg_set): New, calling print_hard_reg_set.
28867
28868 2023-02-14 David Faust <david.faust@oracle.com>
28869
28870 PR target/108790
28871 * config/bpf/constraints.md (q): New memory constraint.
28872 * config/bpf/bpf.md (zero_extendhidi2): Use it here.
28873 (zero_extendqidi2): Likewise.
28874 (zero_extendsidi2): Likewise.
28875 (*mov<MM:mode>): Likewise.
28876
28877 2023-02-14 Andrew Pinski <apinski@marvell.com>
28878
28879 PR tree-optimization/108355
28880 PR tree-optimization/96921
28881 * match.pd: Add pattern for "1 - bool_val".
28882
28883 2023-02-14 Richard Biener <rguenther@suse.de>
28884
28885 * tree-ssa-sccvn.cc (vn_phi_compute_hash): Key skipping
28886 basic block index hashing on the availability of ->cclhs.
28887 (vn_phi_eq): Avoid re-doing sanity checks for CSE but
28888 rely on ->cclhs availability.
28889 (vn_phi_lookup): Set ->cclhs only when we are eventually
28890 going to CSE the PHI.
28891 (vn_phi_insert): Likewise.
28892
28893 2023-02-14 Eric Botcazou <ebotcazou@adacore.com>
28894
28895 * gimplify.cc (gimplify_save_expr): Add missing guard.
28896
28897 2023-02-14 Richard Biener <rguenther@suse.de>
28898
28899 PR tree-optimization/108782
28900 * tree-vect-loop.cc (vect_phi_first_order_recurrence_p):
28901 Make sure we're not vectorizing an inner loop.
28902
28903 2023-02-14 Jakub Jelinek <jakub@redhat.com>
28904
28905 PR sanitizer/108777
28906 * params.opt (-param=asan-kernel-mem-intrinsic-prefix=): New param.
28907 * asan.h (asan_memfn_rtl): Declare.
28908 * asan.cc (asan_memfn_rtls): New variable.
28909 (asan_memfn_rtl): New function.
28910 * builtins.cc (expand_builtin): If
28911 param_asan_kernel_mem_intrinsic_prefix and function is
28912 kernel-{,hw}address sanitized, emit calls to
28913 __{,hw}asan_{memcpy,memmove,memset} rather than
28914 {memcpy,memmove,memset}. Use sanitize_flags_p (SANITIZE_ADDRESS)
28915 instead of flag_sanitize & SANITIZE_ADDRESS to check if
28916 asan_intercepted_p functions shouldn't be expanded inline.
28917
28918 2023-02-14 Richard Sandiford <richard.sandiford@arm.com>
28919
28920 PR tree-optimization/96373
28921 * tree-vect-stmts.cc (vectorizable_operation): Predicate trapping
28922 operations on the loop mask. Reject partial vectors if this isn't
28923 possible.
28924
28925 2023-02-13 Richard Sandiford <richard.sandiford@arm.com>
28926
28927 PR rtl-optimization/108681
28928 * lra-spills.cc (lra_final_code_change): Extend subreg replacement
28929 code to handle bare uses and clobbers.
28930
28931 2023-02-13 Vladimir N. Makarov <vmakarov@redhat.com>
28932
28933 * ira.cc (ira_update_equiv_info_by_shuffle_insn): Clear equiv
28934 caller_save_p flag when clearing defined_p flag.
28935 (setup_reg_equiv): Ditto.
28936 * lra-constraints.cc (lra_constraints): Ditto.
28937
28938 2023-02-13 Uroš Bizjak <ubizjak@gmail.com>
28939
28940 PR target/108516
28941 * config/i386/predicates.md (extr_register_operand):
28942 New special predicate.
28943 * config/i386/i386.md (*extv<mode>): Use extr_register_operand
28944 as operand 1 predicate.
28945 (*exzv<mode>): Ditto.
28946 (*extendqi<SWI24:mode>_ext_1): New insn pattern.
28947
28948 2023-02-13 Richard Biener <rguenther@suse.de>
28949
28950 PR tree-optimization/28614
28951 * tree-ssa-sccvn.cc (can_track_predicate_on_edge): Avoid
28952 walking all edges in most cases.
28953 (vn_nary_op_insert_pieces_predicated): Avoid repeated
28954 calls to can_track_predicate_on_edge unless checking is
28955 enabled.
28956 (process_bb): Instead call it once here for each edge
28957 we register possibly multiple predicates on.
28958
28959 2023-02-13 Richard Biener <rguenther@suse.de>
28960
28961 PR tree-optimization/108691
28962 * tree-cfg.cc (notice_special_calls): When the CFG is built
28963 honor gimple_call_ctrl_altering_p.
28964 * cfgexpand.cc (expand_call_stmt): Clear cfun->calls_setjmp
28965 temporarily if the call is not control-altering.
28966 * calls.cc (emit_call_1): Do not add REG_SETJMP if
28967 cfun->calls_setjmp is not set. Do not alter cfun->calls_setjmp.
28968
28969 2023-02-13 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
28970
28971 PR target/108102
28972 * config/s390/s390.cc (s390_bb_fallthru_entry_likely): Remove.
28973 (struct s390_sched_state): Initialise to zero.
28974 (s390_sched_variable_issue): For better debuggability also emit
28975 the current side.
28976 (s390_sched_init): Unconditionally reset scheduler state.
28977
28978 2023-02-13 Richard Sandiford <richard.sandiford@arm.com>
28979
28980 * ifcvt.h (noce_if_info::cond_inverted): New field.
28981 * ifcvt.cc (cond_move_convert_if_block): Swap the then and else
28982 values when cond_inverted is true.
28983 (noce_find_if_block): Allow the condition to be inverted when
28984 handling conditional moves.
28985
28986 2023-02-13 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
28987
28988 * config/s390/predicates.md (execute_operation): Use
28989 constrain_operands instead of extract_constrain_insn in order to
28990 determine wheter there exists a valid alternative.
28991
28992 2023-02-13 Claudiu Zissulescu <claziss@gmail.com>
28993
28994 * common/config/arc/arc-common.cc (arc_option_optimization_table):
28995 Remove millicode from list.
28996
28997 2023-02-13 Martin Liska <mliska@suse.cz>
28998
28999 * doc/invoke.texi: Document ira-simple-lra-insn-threshold.
29000
29001 2023-02-13 Richard Biener <rguenther@suse.de>
29002
29003 PR tree-optimization/106722
29004 * tree-ssa-dce.cc (mark_last_stmt_necessary): Return
29005 whether we marked a stmt.
29006 (mark_control_dependent_edges_necessary): When
29007 mark_last_stmt_necessary didn't mark any stmt make sure
29008 to mark its control dependent edges.
29009 (propagate_necessity): Likewise.
29010
29011 2023-02-13 Kito Cheng <kito.cheng@sifive.com>
29012
29013 * config/riscv/riscv.h (RISCV_DWARF_VLENB): New.
29014 (DWARF_FRAME_REGISTERS): New.
29015 (DWARF_REG_TO_UNWIND_COLUMN): New.
29016
29017 2023-02-12 Gerald Pfeifer <gerald@pfeifer.com>
29018
29019 * doc/sourcebuild.texi: Remove (broken) direct reference to
29020 "The GNU configure and build system".
29021
29022 2023-02-12 Jin Ma <jinma@linux.alibaba.com>
29023
29024 * config/riscv/riscv.cc (riscv_adjust_libcall_cfi_prologue): Change
29025 gen_add3_insn to gen_rtx_SET.
29026 (riscv_adjust_libcall_cfi_epilogue): Likewise.
29027
29028 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
29029
29030 * config/riscv/riscv-vector-builtins-bases.cc (class sat_op): New class.
29031 (class vnclip): Ditto.
29032 (BASE): Ditto.
29033 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
29034 * config/riscv/riscv-vector-builtins-functions.def (vaadd): Ditto.
29035 (vasub): Ditto.
29036 (vaaddu): Ditto.
29037 (vasubu): Ditto.
29038 (vsmul): Ditto.
29039 (vssra): Ditto.
29040 (vssrl): Ditto.
29041 (vnclipu): Ditto.
29042 (vnclip): Ditto.
29043 * config/riscv/vector-iterators.md (su): Add instruction.
29044 (aadd): Ditto.
29045 (vaalu): Ditto.
29046 * config/riscv/vector.md (@pred_<sat_op><mode>): New pattern.
29047 (@pred_<sat_op><mode>_scalar): Ditto.
29048 (*pred_<sat_op><mode>_scalar): Ditto.
29049 (*pred_<sat_op><mode>_extended_scalar): Ditto.
29050 (@pred_narrow_clip<v_su><mode>): Ditto.
29051 (@pred_narrow_clip<v_su><mode>_scalar): Ditto.
29052
29053 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
29054
29055 * config/riscv/constraints.md (Wbr): Remove unused constraint.
29056 * config/riscv/predicates.md: Fix move operand predicate.
29057 * config/riscv/riscv-vector-builtins-bases.cc (class vnshift): New class.
29058 (class vncvt_x): Ditto.
29059 (class vmerge): Ditto.
29060 (class vmv_v): Ditto.
29061 (BASE): Ditto.
29062 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
29063 * config/riscv/riscv-vector-builtins-functions.def (vsra): Ditto.
29064 (vsrl): Ditto.
29065 (vnsrl): Ditto.
29066 (vnsra): Ditto.
29067 (vncvt_x): Ditto.
29068 (vmerge): Ditto.
29069 (vmv_v): Ditto.
29070 * config/riscv/riscv-vector-builtins-shapes.cc (struct narrow_alu_def): Ditto.
29071 (struct move_def): Ditto.
29072 (SHAPE): Ditto.
29073 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
29074 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WEXTI_OPS): New variable.
29075 (DEF_RVV_WEXTU_OPS): Ditto
29076 * config/riscv/riscv-vector-builtins.def (x_x_w): Fix type for suffix.
29077 (v_v): Ditto.
29078 (v_x): Ditto.
29079 (x_w): Ditto.
29080 (x): Ditto.
29081 * config/riscv/riscv.cc (riscv_print_operand): Refine ASM printting rule.
29082 * config/riscv/vector-iterators.md (nmsac):New iterator.
29083 (nmsub): New iterator.
29084 * config/riscv/vector.md (@pred_merge<mode>): New pattern.
29085 (@pred_merge<mode>_scalar): New pattern.
29086 (*pred_merge<mode>_scalar): New pattern.
29087 (*pred_merge<mode>_extended_scalar): New pattern.
29088 (@pred_narrow_<optab><mode>): New pattern.
29089 (@pred_narrow_<optab><mode>_scalar): New pattern.
29090 (@pred_trunc<mode>): New pattern.
29091
29092 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
29093
29094 * config/riscv/riscv-vector-builtins-bases.cc (class vmadc): New class.
29095 (class vmsbc): Ditto.
29096 (BASE): Define new class.
29097 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
29098 * config/riscv/riscv-vector-builtins-functions.def (vmadc): New define.
29099 (vmsbc): Ditto.
29100 * config/riscv/riscv-vector-builtins-shapes.cc (struct return_mask_def):
29101 New class.
29102 (SHAPE): Ditto.
29103 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
29104 * config/riscv/riscv-vector-builtins.cc
29105 (function_expander::use_exact_insn): Adjust for new support
29106 * config/riscv/riscv-vector-builtins.h
29107 (function_base::has_merge_operand_p): New function.
29108 * config/riscv/vector-iterators.md: New iterator.
29109 * config/riscv/vector.md (@pred_madc<mode>): New pattern.
29110 (@pred_msbc<mode>): Ditto.
29111 (@pred_madc<mode>_scalar): Ditto.
29112 (@pred_msbc<mode>_scalar): Ditto.
29113 (*pred_madc<mode>_scalar): Ditto.
29114 (*pred_madc<mode>_extended_scalar): Ditto.
29115 (*pred_msbc<mode>_scalar): Ditto.
29116 (*pred_msbc<mode>_extended_scalar): Ditto.
29117 (@pred_madc<mode>_overflow): Ditto.
29118 (@pred_msbc<mode>_overflow): Ditto.
29119 (@pred_madc<mode>_overflow_scalar): Ditto.
29120 (@pred_msbc<mode>_overflow_scalar): Ditto.
29121 (*pred_madc<mode>_overflow_scalar): Ditto.
29122 (*pred_madc<mode>_overflow_extended_scalar): Ditto.
29123 (*pred_msbc<mode>_overflow_scalar): Ditto.
29124 (*pred_msbc<mode>_overflow_extended_scalar): Ditto.
29125
29126 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
29127
29128 * config/riscv/riscv-protos.h (simm5_p): Add vadc/vsbc support.
29129 * config/riscv/riscv-v.cc (simm32_p): Ditto.
29130 * config/riscv/riscv-vector-builtins-bases.cc (class vadc): New class.
29131 (class vsbc): Ditto.
29132 (BASE): Ditto.
29133 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
29134 * config/riscv/riscv-vector-builtins-functions.def (vadc): Ditto.
29135 (vsbc): Ditto.
29136 * config/riscv/riscv-vector-builtins-shapes.cc
29137 (struct no_mask_policy_def): Ditto.
29138 (SHAPE): Ditto.
29139 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
29140 * config/riscv/riscv-vector-builtins.cc
29141 (rvv_arg_type_info::get_base_vector_type): Add vadc/vsbc support.
29142 (rvv_arg_type_info::get_tree_type): Ditto.
29143 (function_expander::use_exact_insn): Ditto.
29144 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
29145 (function_base::use_mask_predication_p): New function.
29146 * config/riscv/vector-iterators.md: New iterator.
29147 * config/riscv/vector.md (@pred_adc<mode>): New pattern.
29148 (@pred_sbc<mode>): Ditto.
29149 (@pred_adc<mode>_scalar): Ditto.
29150 (@pred_sbc<mode>_scalar): Ditto.
29151 (*pred_adc<mode>_scalar): Ditto.
29152 (*pred_adc<mode>_extended_scalar): Ditto.
29153 (*pred_sbc<mode>_scalar): Ditto.
29154 (*pred_sbc<mode>_extended_scalar): Ditto.
29155
29156 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
29157
29158 * config/riscv/vector.md: use "zero" reg.
29159
29160 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
29161
29162 * config/riscv/riscv-vector-builtins-bases.cc (class widen_binop): New
29163 class.
29164 (class vwmulsu): Ditto.
29165 (class vwcvt): Ditto.
29166 (BASE): Add integer widening support.
29167 * config/riscv/riscv-vector-builtins-bases.h: Ditto
29168 * config/riscv/riscv-vector-builtins-functions.def (vwadd): New class.
29169 (vwsub): New class.
29170 (vwmul): New class.
29171 (vwmulu): New class.
29172 (vwmulsu): New class.
29173 (vwaddu): New class.
29174 (vwsubu): New class.
29175 (vwcvt_x): New class.
29176 (vwcvtu_x): New class.
29177 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): New
29178 class.
29179 (struct widen_alu_def): New class.
29180 (SHAPE): New class.
29181 * config/riscv/riscv-vector-builtins-shapes.h: New class.
29182 * config/riscv/riscv-vector-builtins.cc
29183 (rvv_arg_type_info::get_base_vector_type): Add integer widening support.
29184 (rvv_arg_type_info::get_tree_type): Ditto.
29185 * config/riscv/riscv-vector-builtins.def (x_x_v): Change into "x_v"
29186 (x_v): Ditto.
29187 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Add integer
29188 widening support.
29189 * config/riscv/riscv-vsetvl.cc (change_insn): Fix reg_equal use bug.
29190 * config/riscv/riscv.h (X0_REGNUM): New constant.
29191 * config/riscv/vector-iterators.md: New iterators.
29192 * config/riscv/vector.md
29193 (@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>): New
29194 pattern.
29195 (@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>_scalar):
29196 Ditto.
29197 (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>): Ditto.
29198 (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>_scalar):
29199 Ditto.
29200 (@pred_widen_mulsu<mode>): Ditto.
29201 (@pred_widen_mulsu<mode>_scalar): Ditto.
29202 (@pred_<optab><mode>): Ditto.
29203
29204 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
29205 kito-cheng <kito.cheng@sifive.com>
29206
29207 * common/config/riscv/riscv-common.cc: Add flag for 'V' extension.
29208 * config/riscv/riscv-vector-builtins-bases.cc (class vmulh): New class.
29209 (BASE): Ditto.
29210 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
29211 * config/riscv/riscv-vector-builtins-functions.def (vmulh): Add vmulh
29212 API support.
29213 (vmulhu): Ditto.
29214 (vmulhsu): Ditto.
29215 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_FULL_V_I_OPS):
29216 New macro.
29217 (DEF_RVV_FULL_V_U_OPS): Ditto.
29218 (vint8mf8_t): Ditto.
29219 (vint8mf4_t): Ditto.
29220 (vint8mf2_t): Ditto.
29221 (vint8m1_t): Ditto.
29222 (vint8m2_t): Ditto.
29223 (vint8m4_t): Ditto.
29224 (vint8m8_t): Ditto.
29225 (vint16mf4_t): Ditto.
29226 (vint16mf2_t): Ditto.
29227 (vint16m1_t): Ditto.
29228 (vint16m2_t): Ditto.
29229 (vint16m4_t): Ditto.
29230 (vint16m8_t): Ditto.
29231 (vint32mf2_t): Ditto.
29232 (vint32m1_t): Ditto.
29233 (vint32m2_t): Ditto.
29234 (vint32m4_t): Ditto.
29235 (vint32m8_t): Ditto.
29236 (vint64m1_t): Ditto.
29237 (vint64m2_t): Ditto.
29238 (vint64m4_t): Ditto.
29239 (vint64m8_t): Ditto.
29240 (vuint8mf8_t): Ditto.
29241 (vuint8mf4_t): Ditto.
29242 (vuint8mf2_t): Ditto.
29243 (vuint8m1_t): Ditto.
29244 (vuint8m2_t): Ditto.
29245 (vuint8m4_t): Ditto.
29246 (vuint8m8_t): Ditto.
29247 (vuint16mf4_t): Ditto.
29248 (vuint16mf2_t): Ditto.
29249 (vuint16m1_t): Ditto.
29250 (vuint16m2_t): Ditto.
29251 (vuint16m4_t): Ditto.
29252 (vuint16m8_t): Ditto.
29253 (vuint32mf2_t): Ditto.
29254 (vuint32m1_t): Ditto.
29255 (vuint32m2_t): Ditto.
29256 (vuint32m4_t): Ditto.
29257 (vuint32m8_t): Ditto.
29258 (vuint64m1_t): Ditto.
29259 (vuint64m2_t): Ditto.
29260 (vuint64m4_t): Ditto.
29261 (vuint64m8_t): Ditto.
29262 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_FULL_V_I_OPS): Ditto.
29263 (DEF_RVV_FULL_V_U_OPS): Ditto.
29264 (check_required_extensions): Add vmulh support.
29265 (rvv_arg_type_info::get_tree_type): Ditto.
29266 * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_FULL_V): Ditto.
29267 (enum rvv_base_type): Ditto.
29268 * config/riscv/riscv.opt: Add 'V' extension flag.
29269 * config/riscv/vector-iterators.md (su): New iterator.
29270 * config/riscv/vector.md (@pred_mulh<v_su><mode>): New pattern.
29271 (@pred_mulh<v_su><mode>_scalar): Ditto.
29272 (*pred_mulh<v_su><mode>_scalar): Ditto.
29273 (*pred_mulh<v_su><mode>_extended_scalar): Ditto.
29274
29275 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
29276
29277 * config/riscv/iterators.md: Add sign_extend/zero_extend.
29278 * config/riscv/riscv-vector-builtins-bases.cc (class ext): New class.
29279 (BASE): Ditto.
29280 * config/riscv/riscv-vector-builtins-bases.h: Add vsext/vzext support.
29281 * config/riscv/riscv-vector-builtins-functions.def (vsext): New macro
29282 define.
29283 (vzext): Ditto.
29284 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Adjust
29285 for vsext/vzext support.
29286 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WEXTI_OPS): New
29287 macro define.
29288 (DEF_RVV_QEXTI_OPS): Ditto.
29289 (DEF_RVV_OEXTI_OPS): Ditto.
29290 (DEF_RVV_WEXTU_OPS): Ditto.
29291 (DEF_RVV_QEXTU_OPS): Ditto.
29292 (DEF_RVV_OEXTU_OPS): Ditto.
29293 (vint16mf4_t): Ditto.
29294 (vint16mf2_t): Ditto.
29295 (vint16m1_t): Ditto.
29296 (vint16m2_t): Ditto.
29297 (vint16m4_t): Ditto.
29298 (vint16m8_t): Ditto.
29299 (vint32mf2_t): Ditto.
29300 (vint32m1_t): Ditto.
29301 (vint32m2_t): Ditto.
29302 (vint32m4_t): Ditto.
29303 (vint32m8_t): Ditto.
29304 (vint64m1_t): Ditto.
29305 (vint64m2_t): Ditto.
29306 (vint64m4_t): Ditto.
29307 (vint64m8_t): Ditto.
29308 (vuint16mf4_t): Ditto.
29309 (vuint16mf2_t): Ditto.
29310 (vuint16m1_t): Ditto.
29311 (vuint16m2_t): Ditto.
29312 (vuint16m4_t): Ditto.
29313 (vuint16m8_t): Ditto.
29314 (vuint32mf2_t): Ditto.
29315 (vuint32m1_t): Ditto.
29316 (vuint32m2_t): Ditto.
29317 (vuint32m4_t): Ditto.
29318 (vuint32m8_t): Ditto.
29319 (vuint64m1_t): Ditto.
29320 (vuint64m2_t): Ditto.
29321 (vuint64m4_t): Ditto.
29322 (vuint64m8_t): Ditto.
29323 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WEXTI_OPS): Ditto.
29324 (DEF_RVV_QEXTI_OPS): Ditto.
29325 (DEF_RVV_OEXTI_OPS): Ditto.
29326 (DEF_RVV_WEXTU_OPS): Ditto.
29327 (DEF_RVV_QEXTU_OPS): Ditto.
29328 (DEF_RVV_OEXTU_OPS): Ditto.
29329 (rvv_arg_type_info::get_base_vector_type): Add sign_exted/zero_extend
29330 support.
29331 (rvv_arg_type_info::get_tree_type): Ditto.
29332 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
29333 * config/riscv/vector-iterators.md (z): New attribute.
29334 * config/riscv/vector.md (@pred_<optab><mode>_vf2): New pattern.
29335 (@pred_<optab><mode>_vf4): Ditto.
29336 (@pred_<optab><mode>_vf8): Ditto.
29337
29338 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
29339
29340 * config/riscv/iterators.md: Add saturating Addition && Subtraction.
29341 * config/riscv/riscv-v.cc (has_vi_variant_p): Ditto.
29342 * config/riscv/riscv-vector-builtins-bases.cc (BASE): Ditto.
29343 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
29344 * config/riscv/riscv-vector-builtins-functions.def (vsadd): New def.
29345 (vssub): Ditto.
29346 (vsaddu): Ditto.
29347 (vssubu): Ditto.
29348 * config/riscv/vector-iterators.md (sll.vi): Adjust for Saturating
29349 support.
29350 (sll.vv): Ditto.
29351 (%3,%v4): Ditto.
29352 (%3,%4): Ditto.
29353 * config/riscv/vector.md (@pred_<optab><mode>): New pattern.
29354 (@pred_<optab><mode>_scalar): New pattern.
29355 (*pred_<optab><mode>_scalar): New pattern.
29356 (*pred_<optab><mode>_extended_scalar): New pattern.
29357
29358 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
29359
29360 * config/riscv/iterators.md: Add neg and not.
29361 * config/riscv/riscv-vector-builtins-bases.cc (class unop): New class.
29362 (BASE): Ditto.
29363 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
29364 * config/riscv/riscv-vector-builtins-functions.def (vadd): Rename binop
29365 into alu.
29366 (vsub): Ditto.
29367 (vand): Ditto.
29368 (vor): Ditto.
29369 (vxor): Ditto.
29370 (vsll): Ditto.
29371 (vsra): Ditto.
29372 (vsrl): Ditto.
29373 (vmin): Ditto.
29374 (vmax): Ditto.
29375 (vminu): Ditto.
29376 (vmaxu): Ditto.
29377 (vmul): Ditto.
29378 (vdiv): Ditto.
29379 (vrem): Ditto.
29380 (vdivu): Ditto.
29381 (vremu): Ditto.
29382 (vrsub): Ditto.
29383 (vneg): Ditto.
29384 (vnot): Ditto.
29385 * config/riscv/riscv-vector-builtins-shapes.cc (struct binop_def): Ditto.
29386 (struct alu_def): Ditto.
29387 (SHAPE): Ditto.
29388 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
29389 * config/riscv/riscv-vector-builtins.cc: Support unary C/C/++.
29390 * config/riscv/vector-iterators.md: New iterator.
29391 * config/riscv/vector.md (@pred_<optab><mode>): New pattern
29392
29393 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
29394
29395 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::compute_probabilities): Skip exit block.
29396
29397 2023-02-11 Jakub Jelinek <jakub@redhat.com>
29398
29399 PR ipa/108605
29400 * ipa-cp.cc (ipa_agg_value_from_jfunc): Return NULL_TREE also if
29401 item->offset bit position is too large to be representable as
29402 unsigned int byte position.
29403
29404 2023-02-11 Gerald Pfeifer <gerald@pfeifer.com>
29405
29406 * doc/extend.texi (Other Builtins): Adjust link to WG14 N965.
29407
29408 2023-02-10 Vladimir N. Makarov <vmakarov@redhat.com>
29409
29410 * ira.cc (update_equiv_regs): Set up ira_reg_equiv for
29411 valid_combine only when ira_use_lra_p is true.
29412
29413 2023-02-10 Vladimir N. Makarov <vmakarov@redhat.com>
29414
29415 * params.opt (ira-simple-lra-insn-threshold): Add new param.
29416 * ira.cc (ira): Use the param to switch on simple LRA.
29417
29418 2023-02-10 Andrew MacLeod <amacleod@redhat.com>
29419
29420 PR tree-optimization/108687
29421 * gimple-range-cache.cc (ranger_cache::range_on_edge): Revert
29422 back to RFD_NONE mode for calculations.
29423 (ranger_cache::propagate_cache): Call the internal edge range API
29424 with RFD_READ_ONLY instead of changing the external routine.
29425
29426 2023-02-10 Andrew MacLeod <amacleod@redhat.com>
29427
29428 PR tree-optimization/108520
29429 * gimple-range-infer.cc (check_assume_func): Invoke
29430 gimple_range_global directly instead using global_range_query.
29431 * value-query.cc (get_range_global): Add function context and
29432 avoid calling nonnull_arg_p if not cfun.
29433 (gimple_range_global): Add function context pointer.
29434 * value-query.h (imple_range_global): Add function context.
29435
29436 2023-02-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
29437
29438 * config/riscv/constraints.md (Wdm): Adjust constraint.
29439 (Wbr): New constraint.
29440 * config/riscv/predicates.md (reg_or_int_operand): New predicate.
29441 * config/riscv/riscv-protos.h (emit_pred_op): Remove function.
29442 (emit_vlmax_op): New function.
29443 (emit_nonvlmax_op): Ditto.
29444 (simm32_p): Ditto.
29445 (neg_simm5_p): Ditto.
29446 (has_vi_variant_p): Ditto.
29447 * config/riscv/riscv-v.cc (emit_pred_op): Adjust function.
29448 (emit_vlmax_op): New function.
29449 (emit_nonvlmax_op): Ditto.
29450 (expand_const_vector): Adjust function.
29451 (legitimize_move): Ditto.
29452 (simm32_p): New function.
29453 (simm5_p): Ditto.
29454 (neg_simm5_p): Ditto.
29455 (has_vi_variant_p): Ditto.
29456 * config/riscv/riscv-vector-builtins-bases.cc (class vrsub): New class.
29457 (BASE): Ditto.
29458 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
29459 * config/riscv/riscv-vector-builtins-functions.def (vmin): Remove
29460 unsigned cases.
29461 (vmax): Ditto.
29462 (vminu): Remove signed cases.
29463 (vmaxu): Ditto.
29464 (vdiv): Remove unsigned cases.
29465 (vrem): Ditto.
29466 (vdivu): Remove signed cases.
29467 (vremu): Ditto.
29468 (vadd): Adjust.
29469 (vsub): Ditto.
29470 (vrsub): New class.
29471 (vand): Adjust.
29472 (vor): Ditto.
29473 (vxor): Ditto.
29474 (vmul): Ditto.
29475 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_U_OPS): New macro.
29476 * config/riscv/riscv.h: change VL/VTYPE as fixed reg.
29477 * config/riscv/vector-iterators.md: New iterators.
29478 * config/riscv/vector.md (@pred_broadcast<mode>): Adjust pattern for vx
29479 support.
29480 (@pred_<optab><mode>_scalar): New pattern.
29481 (@pred_sub<mode>_reverse_scalar): Ditto.
29482 (*pred_<optab><mode>_scalar): Ditto.
29483 (*pred_<optab><mode>_extended_scalar): Ditto.
29484 (*pred_sub<mode>_reverse_scalar): Ditto.
29485 (*pred_sub<mode>_extended_reverse_scalar): Ditto.
29486
29487 2023-02-10 Richard Biener <rguenther@suse.de>
29488
29489 PR tree-optimization/108724
29490 * tree-vect-stmts.cc (vectorizable_operation): Avoid
29491 using word_mode vectors when vector lowering will
29492 decompose them to elementwise operations.
29493
29494 2023-02-10 Jakub Jelinek <jakub@redhat.com>
29495
29496 Revert:
29497 2023-02-09 Martin Liska <mliska@suse.cz>
29498
29499 PR target/100758
29500 * doc/extend.texi: Document that the function
29501 does not work correctly for old VIA processors.
29502
29503 2023-02-10 Andrew Pinski <apinski@marvell.com>
29504 Andrew Macleod <amacleod@redhat.com>
29505
29506 PR tree-optimization/108684
29507 * tree-ssa-dce.cc (simple_dce_from_worklist):
29508 Check all ssa names and not just non-vdef ones
29509 before accepting the inline-asm.
29510 Call unlink_stmt_vdef on the statement before
29511 removing it.
29512
29513 2023-02-09 Vladimir N. Makarov <vmakarov@redhat.com>
29514
29515 * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
29516 * ira.cc (validate_equiv_mem): Check memref address variance.
29517 (no_equiv): Clear caller_save_p flag.
29518 (update_equiv_regs): Define caller save equivalence for
29519 valid_combine.
29520 (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
29521 * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
29522 call_save_p. Use caller save equivalence depending on the arg.
29523 (split_reg): Adjust the call.
29524
29525 2023-02-09 Jakub Jelinek <jakub@redhat.com>
29526
29527 PR target/100758
29528 * common/config/i386/cpuinfo.h (get_zhaoxin_cpu): Formatting fixes.
29529 (cpu_indicator_init): Call get_available_features for all CPUs with
29530 max_level >= 1, rather than just Intel, AMD or Zhaoxin. Formatting
29531 fixes.
29532
29533 2023-02-09 Jakub Jelinek <jakub@redhat.com>
29534
29535 PR tree-optimization/108688
29536 * match.pd (bit_field_ref [bit_insert]): Simplify BIT_FIELD_REF
29537 of BIT_INSERT_EXPR extracting exactly all inserted bits even
29538 when without mode precision. Formatting fixes.
29539
29540 2023-02-09 Andrew Pinski <apinski@marvell.com>
29541
29542 PR tree-optimization/108688
29543 * match.pd (bit_field_ref [bit_insert]): Avoid generating
29544 BIT_FIELD_REFs of non-mode-precision integral operands.
29545
29546 2023-02-09 Martin Liska <mliska@suse.cz>
29547
29548 PR target/100758
29549 * doc/extend.texi: Document that the function
29550 does not work correctly for old VIA processors.
29551
29552 2023-02-09 Andreas Schwab <schwab@suse.de>
29553
29554 * lto-wrapper.cc (merge_and_complain): Handle
29555 -funwind-tables and -fasynchronous-unwind-tables.
29556 (append_compiler_options): Likewise.
29557
29558 2023-02-09 Richard Biener <rguenther@suse.de>
29559
29560 PR tree-optimization/26854
29561 * tree-into-ssa.cc (update_ssa): Turn blocks_to_update to tree
29562 view around insert_updated_phi_nodes_for.
29563 * tree-ssa-alias.cc (maybe_skip_until): Allocate visited bitmap
29564 in tree view.
29565 (walk_aliased_vdefs_1): Likewise.
29566
29567 2023-02-08 Gerald Pfeifer <gerald@pfeifer.com>
29568
29569 * doc/include/gpl_v3.texi: Change fsf.org to www.fsf.org.
29570
29571 2023-02-08 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
29572
29573 PR target/108505
29574 * config.gcc (tm_mlib_file): Define new variable.
29575
29576 2023-02-08 Jakub Jelinek <jakub@redhat.com>
29577
29578 PR tree-optimization/108692
29579 * tree-vect-patterns.cc (vect_widened_op_tree): If rhs_code is
29580 widened_code which is different from code, don't call
29581 vect_look_through_possible_promotion but instead just check op is
29582 SSA_NAME with integral type for which vect_is_simple_use is true
29583 and call set_op on this_unprom.
29584
29585 2023-02-08 Andrea Corallo <andrea.corallo@arm.com>
29586
29587 * config/aarch64/aarch64-protos.h (aarch_ra_sign_key): Remove
29588 declaration.
29589 * config/aarch64/aarch64.cc (aarch_ra_sign_key): Remove
29590 definition.
29591 * config/aarch64/aarch64.opt (aarch64_ra_sign_key): Rename
29592 to 'aarch_ra_sign_key'.
29593 * config/arm/aarch-common.cc (aarch_ra_sign_key): Remove
29594 declaration.
29595 * config/arm/arm-protos.h (aarch_ra_sign_key): Likewise.
29596 * config/arm/arm.cc (enum aarch_key_type): Remove definition.
29597 * config/arm/arm.opt: Define.
29598
29599 2023-02-08 Richard Sandiford <richard.sandiford@arm.com>
29600
29601 PR tree-optimization/108316
29602 * tree-vect-stmts.cc (get_load_store_type): When using
29603 internal functions for gather/scatter, make sure that the type
29604 of the offset argument is consistent with the offset vector type.
29605
29606 2023-02-08 Vladimir N. Makarov <vmakarov@redhat.com>
29607
29608 Revert:
29609 2023-02-07 Vladimir N. Makarov <vmakarov@redhat.com>
29610
29611 * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
29612 * ira.cc (validate_equiv_mem): Check memref address variance.
29613 (update_equiv_regs): Define caller save equivalence for
29614 valid_combine.
29615 (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
29616 * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
29617 call_save_p. Use caller save equivalence depending on the arg.
29618 (split_reg): Adjust the call.
29619
29620 2023-02-08 Jakub Jelinek <jakub@redhat.com>
29621
29622 * tree.def (SAD_EXPR): Remove outdated comment about missing
29623 WIDEN_MINUS_EXPR.
29624
29625 2023-02-07 Marek Polacek <polacek@redhat.com>
29626
29627 * doc/invoke.texi: Update -fchar8_t documentation.
29628
29629 2023-02-07 Vladimir N. Makarov <vmakarov@redhat.com>
29630
29631 * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
29632 * ira.cc (validate_equiv_mem): Check memref address variance.
29633 (update_equiv_regs): Define caller save equivalence for
29634 valid_combine.
29635 (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
29636 * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
29637 call_save_p. Use caller save equivalence depending on the arg.
29638 (split_reg): Adjust the call.
29639
29640 2023-02-07 Richard Biener <rguenther@suse.de>
29641
29642 PR tree-optimization/26854
29643 * gimple-fold.cc (has_use_on_stmt): Look at stmt operands
29644 instead of immediate uses.
29645
29646 2023-02-07 Jakub Jelinek <jakub@redhat.com>
29647
29648 PR tree-optimization/106923
29649 * ipa-split.cc (execute_split_functions): Don't split returns_twice
29650 functions.
29651
29652 2023-02-07 Jakub Jelinek <jakub@redhat.com>
29653
29654 PR tree-optimization/106433
29655 * cgraph.cc (set_const_flag_1): Recurse on simd clones too.
29656 (cgraph_node::set_pure_flag): Call set_pure_flag_1 on simd clones too.
29657
29658 2023-02-07 Jan Hubicka <jh@suse.cz>
29659
29660 * config/i386/x86-tune.def (X86_TUNE_AVX256_OPTIMAL): Turn off
29661 for znver4.
29662
29663 2023-02-06 Andrew Stubbs <ams@codesourcery.com>
29664
29665 * config/gcn/mkoffload.cc (gcn_stack_size): New global variable.
29666 (process_asm): Create a constructor for GCN_STACK_SIZE.
29667 (main): Parse the -mstack-size option.
29668
29669 2023-02-06 Alex Coplan <alex.coplan@arm.com>
29670
29671 PR target/104921
29672 * config/aarch64/aarch64-simd.md (aarch64_bfmlal<bt>_lane<q>v4sf):
29673 Use correct constraint for operand 3.
29674
29675 2023-02-06 Martin Jambor <mjambor@suse.cz>
29676
29677 * ipa-sra.cc (adjust_parameter_descriptions): Fix a typo in a dump.
29678
29679 2023-02-06 Xi Ruoyao <xry111@xry111.site>
29680
29681 * config/loongarch/loongarch.md (bytepick_w_ashift_amount):
29682 New define_int_iterator.
29683 (bytepick_d_ashift_amount): Likewise.
29684 (bytepick_imm): New define_int_attr.
29685 (bytepick_w_lshiftrt_amount): Likewise.
29686 (bytepick_d_lshiftrt_amount): Likewise.
29687 (bytepick_w_<bytepick_imm>): New define_insn template.
29688 (bytepick_w_<bytepick_imm>_extend): Likewise.
29689 (bytepick_d_<bytepick_imm>): Likewise.
29690 (bytepick_w): Remove unused define_insn.
29691 (bytepick_d): Likewise.
29692 (UNSPEC_BYTEPICK_W): Remove unused unspec.
29693 (UNSPEC_BYTEPICK_D): Likewise.
29694 * config/loongarch/predicates.md (const_0_to_3_operand):
29695 Remove unused define_predicate.
29696 (const_0_to_7_operand): Likewise.
29697
29698 2023-02-06 Jakub Jelinek <jakub@redhat.com>
29699
29700 PR tree-optimization/108655
29701 * ubsan.cc (sanitize_unreachable_fn): For -funreachable-traps
29702 or -fsanitize=unreachable -fsanitize-trap=unreachable return
29703 BUILT_IN_UNREACHABLE_TRAP decl rather than BUILT_IN_TRAP.
29704
29705 2023-02-05 Gerald Pfeifer <gerald@pfeifer.com>
29706
29707 * doc/install.texi (Specific): Remove PW32.
29708
29709 2023-02-03 Jakub Jelinek <jakub@redhat.com>
29710
29711 PR tree-optimization/108647
29712 * range-op.cc (operator_equal::op1_range,
29713 operator_not_equal::op1_range): Don't test op2 bound
29714 equality if op2.undefined_p (), instead set_varying.
29715 (operator_lt::op1_range, operator_le::op1_range,
29716 operator_gt::op1_range, operator_ge::op1_range): Return false if
29717 op2.undefined_p ().
29718 (operator_lt::op2_range, operator_le::op2_range,
29719 operator_gt::op2_range, operator_ge::op2_range): Return false if
29720 op1.undefined_p ().
29721
29722 2023-02-03 Aldy Hernandez <aldyh@redhat.com>
29723
29724 PR tree-optimization/108639
29725 * value-range.cc (irange::legacy_equal_p): Compare nonzero bits as
29726 widest_int.
29727 (irange::operator==): Same.
29728
29729 2023-02-03 Aldy Hernandez <aldyh@redhat.com>
29730
29731 PR tree-optimization/108647
29732 * range-op-float.cc (foperator_lt::op1_range): Handle undefined ranges.
29733 (foperator_lt::op2_range): Same.
29734 (foperator_le::op1_range): Same.
29735 (foperator_le::op2_range): Same.
29736 (foperator_gt::op1_range): Same.
29737 (foperator_gt::op2_range): Same.
29738 (foperator_ge::op1_range): Same.
29739 (foperator_ge::op2_range): Same.
29740 (foperator_unordered_lt::op1_range): Same.
29741 (foperator_unordered_lt::op2_range): Same.
29742 (foperator_unordered_le::op1_range): Same.
29743 (foperator_unordered_le::op2_range): Same.
29744 (foperator_unordered_gt::op1_range): Same.
29745 (foperator_unordered_gt::op2_range): Same.
29746 (foperator_unordered_ge::op1_range): Same.
29747 (foperator_unordered_ge::op2_range): Same.
29748
29749 2023-02-03 Andrew MacLeod <amacleod@redhat.com>
29750
29751 PR tree-optimization/107570
29752 * tree-vrp.cc (remove_and_update_globals): Reset SCEV.
29753
29754 2023-02-03 Gaius Mulley <gaiusmod2@gmail.com>
29755
29756 * doc/gm2.texi (Internals): Remove from menu.
29757 (Using): Comment out ifnohtml conditional.
29758 (Documentation): Use gcc url.
29759 (License): Node simplified.
29760 (Copying): New node. Include gpl_v3_without_node.
29761 (Contributing): Node simplified.
29762 (Internals): Commented out.
29763 (Libraries): Node simplified.
29764 (Indices): Ditto.
29765 (Contents): Ditto.
29766 (Functions): Ditto.
29767
29768 2023-02-03 Christophe Lyon <christophe.lyon@arm.com>
29769
29770 * config/arm/mve.md (mve_vabavq_p_<supf><mode>): Add length
29771 attribute.
29772 (mve_vqshluq_m_n_s<mode>): Likewise.
29773 (mve_vshlq_m_<supf><mode>): Likewise.
29774 (mve_vsriq_m_n_<supf><mode>): Likewise.
29775 (mve_vsubq_m_<supf><mode>): Likewise.
29776
29777 2023-02-03 Martin Jambor <mjambor@suse.cz>
29778
29779 PR ipa/108384
29780 * ipa-sra.cc (push_param_adjustments_for_index): Remove a size check
29781 when comparing to an IPA-CP value.
29782 (dump_list_of_param_indices): New function.
29783 (adjust_parameter_descriptions): Check for mismatching IPA-CP values.
29784 Dump removed candidates using dump_list_of_param_indices.
29785 * ipa-param-manipulation.cc
29786 (ipa_param_body_adjustments::modify_expression): Add assert checking
29787 sizes of a VIEW_CONVERT_EXPR will match.
29788 (ipa_param_body_adjustments::modify_assignment): Likewise.
29789
29790 2023-02-03 Monk Chiang <monk.chiang@sifive.com>
29791
29792 * config/riscv/riscv.h: Remove VL_REGS, VTYPE_REGS class.
29793 * config/riscv/riscv.cc: Ditto.
29794
29795 2023-02-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
29796
29797 * config/riscv/vector-iterators.md (sll.vi): Fix constraint bug.
29798 (sll.vv): Ditto.
29799 (%3,%4): Ditto.
29800 (%3,%v4): Ditto.
29801 * config/riscv/vector.md: Ditto.
29802
29803 2023-02-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
29804
29805 * config/riscv/predicates.md (pmode_reg_or_uimm5_operand): New predicate.
29806 * config/riscv/riscv-vector-builtins-bases.cc: New class.
29807 * config/riscv/riscv-vector-builtins-functions.def (vsll): Ditto.
29808 (vsra): Ditto.
29809 (vsrl): Ditto.
29810 * config/riscv/riscv-vector-builtins.cc: Ditto.
29811 * config/riscv/vector.md (@pred_<optab><mode>_scalar): New pattern.
29812
29813 2023-02-02 Iain Sandoe <iain@sandoe.co.uk>
29814
29815 * toplev.cc (toplev::main): Only print the version information header
29816 from toplevel main().
29817
29818 2023-02-02 Paul-Antoine Arras <pa@codesourcery.com>
29819
29820 * config/gcn/gcn-valu.md (cond_<expander><mode>): Add
29821 cond_{ashl|ashr|lshr}
29822
29823 2023-02-02 Richard Sandiford <richard.sandiford@arm.com>
29824
29825 PR rtl-optimization/108086
29826 * rtl-ssa/insns.h (insn_info): Make m_num_defs a full unsigned int.
29827 Adjust size-related commentary accordingly.
29828
29829 2023-02-02 Richard Sandiford <richard.sandiford@arm.com>
29830
29831 PR rtl-optimization/108508
29832 * rtl-ssa/accesses.cc (function_info::split_clobber_group): When
29833 the splay tree search gives the first clobber in the second group,
29834 make sure that the root of the first clobber group is updated
29835 correctly. Enter the new clobber group into the definition splay
29836 tree.
29837
29838 2023-02-02 Jin Ma <jinma@linux.alibaba.com>
29839
29840 * common/config/riscv/riscv-common.cc (riscv_compute_multilib):
29841 Fix finding best match score.
29842
29843 2023-02-02 Jakub Jelinek <jakub@redhat.com>
29844
29845 PR debug/106746
29846 PR rtl-optimization/108463
29847 PR target/108484
29848 * cselib.cc (cselib_current_insn): Move declaration earlier.
29849 (cselib_hasher::equal): For debug only locs, temporarily override
29850 cselib_current_insn to their l->setting_insn for the
29851 rtx_equal_for_cselib_1 call, so that unsuccessful comparisons don't
29852 promote some debug locs.
29853 * sched-deps.cc (sched_analyze_2) <case MEM>: For MEMs in DEBUG_INSNs
29854 when using cselib call cselib_lookup_from_insn on the address but
29855 don't substitute it.
29856
29857 2023-02-02 Richard Biener <rguenther@suse.de>
29858
29859 PR middle-end/108625
29860 * genmatch.cc (expr::gen_transform): Also disallow resimplification
29861 from pushing to lseq with force_leaf.
29862 (dt_simplify::gen_1): Likewise.
29863
29864 2023-02-02 Andrew Stubbs <ams@codesourcery.com>
29865
29866 * config/gcn/gcn-run.cc: Include libgomp-gcn.h.
29867 (struct kernargs): Replace the common content with kernargs_abi.
29868 (struct heap): Delete.
29869 (main): Read GCN_STACK_SIZE envvar.
29870 Allocate space for the device stacks.
29871 Write the new kernargs fields.
29872 * config/gcn/gcn.cc (gcn_option_override): Remove stack_size_opt.
29873 (default_requested_args): Remove PRIVATE_SEGMENT_BUFFER_ARG and
29874 PRIVATE_SEGMENT_WAVE_OFFSET_ARG.
29875 (gcn_addr_space_convert): Mask the QUEUE_PTR_ARG content.
29876 (gcn_expand_prologue): Move the TARGET_PACKED_WORK_ITEMS to the top.
29877 Set up the stacks from the values in the kernargs, not private.
29878 (gcn_expand_builtin_1): Match the stack configuration in the prologue.
29879 (gcn_hsa_declare_function_name): Turn off the private segment.
29880 (gcn_conditional_register_usage): Ensure QUEUE_PTR is fixed.
29881 * config/gcn/gcn.h (FIXED_REGISTERS): Fix the QUEUE_PTR register.
29882 * config/gcn/gcn.opt (mstack-size): Change the description.
29883
29884 2023-02-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
29885
29886 PR target/108443
29887 * config/arm/arm.h (VALID_MVE_PRED_MODE): Add V2QI.
29888 * config/arm/arm.cc (thumb2_legitimate_address_p): Use HImode for
29889 addressing MVE predicate modes.
29890 (mve_bool_vec_to_const): Change to represent correct MVE predicate
29891 format.
29892 (arm_hard_regno_mode_ok): Use VALID_MVE_PRED_MODE instead of checking
29893 modes.
29894 (arm_vector_mode_supported_p): Likewise.
29895 (arm_mode_to_pred_mode): Add V2QI.
29896 * config/arm/arm-builtins.cc (UNOP_PRED_UNONE_QUALIFIERS): New
29897 qualifier.
29898 (UNOP_PRED_PRED_QUALIFIERS): New qualifier
29899 (BINOP_PRED_UNONE_PRED_QUALIFIERS): New qualifier.
29900 (v2qi_UP): New macro.
29901 (v4bi_UP): New macro.
29902 (v8bi_UP): New macro.
29903 (v16bi_UP): New macro.
29904 (arm_expand_builtin_args): Make it able to expand the new predicate
29905 modes.
29906 * config/arm/arm-modes.def (V2QI): New mode.
29907 * config/arm/arm-simd-builtin-types.def (Pred1x16_t, Pred2x8_t
29908 Pred4x4_t): Remove unused predicate builtin types.
29909 * config/arm/arm_mve.h (__arm_vctp16q, __arm_vctp32q, __arm_vctp64q,
29910 __arm_vctp8q, __arm_vpnot, __arm_vctp8q_m, __arm_vctp64q_m,
29911 __arm_vctp32q_m, __arm_vctp16q_m): Use predicate modes.
29912 * config/arm/arm_mve_builtins.def (vctp16q, vctp32q, vctp64q, vctp8q,
29913 vpnot, vctp8q_m, vctp16q_m, vctp32q_m, vctp64q_m): Likewise.
29914 * config/arm/constraints.md (DB): Check for VALID_MVE_PRED_MODE instead
29915 of MODE_VECTOR_BOOL.
29916 * config/arm/iterators.md (MVE_7, MVE_7_HI): Add V2QI
29917 (MVE_VPRED): Likewise.
29918 (MVE_vpred): Add V2QI and map upper case predicate modes to lower case.
29919 (MVE_vctp): New mode attribute.
29920 (mode1): Remove.
29921 (VCTPQ): Remove.
29922 (VCTPQ_M): Remove.
29923 * config/arm/mve.md (mve_vctp<mode1>qhi): Rename this...
29924 (mve_vctp<MVE_vctp>q<MVE_vpred>): ... to this. And use new mode
29925 attributes.
29926 (mve_vpnothi): Rename this...
29927 (mve_vpnotv16bi): ... to this.
29928 (mve_vctp<mode1>q_mhi): Rename this...
29929 (mve_vctp<MVE_vctp>q_m<MVE_vpred>):... to this.
29930 (mve_vldrdq_gather_base_z_<supf>v2di,
29931 mve_vldrdq_gather_offset_z_<supf>v2di,
29932 mve_vldrdq_gather_shifted_offset_z_<supf>v2di,
29933 mve_vstrdq_scatter_base_p_<supf>v2di,
29934 mve_vstrdq_scatter_offset_p_<supf>v2di,
29935 mve_vstrdq_scatter_offset_p_<supf>v2di_insn,
29936 mve_vstrdq_scatter_shifted_offset_p_<supf>v2di,
29937 mve_vstrdq_scatter_shifted_offset_p_<supf>v2di_insn,
29938 mve_vstrdq_scatter_base_wb_p_<supf>v2di,
29939 mve_vldrdq_gather_base_wb_z_<supf>v2di,
29940 mve_vldrdq_gather_base_nowb_z_<supf>v2di,
29941 mve_vldrdq_gather_base_wb_z_<supf>v2di_insn): Use V2QI insead of HI for
29942 predicates.
29943 * config/arm/unspecs.md (VCTP8Q, VCTP16Q, VCTP32Q, VCTP64Q): Replace
29944 these...
29945 (VCTP): ... with this.
29946 (VCTP8Q_M, VCTP16Q_M, VCTP32Q_M, VCTP64Q_M): Replace these...
29947 (VCTP_M): ... with this.
29948 * config/arm/vfp.md (*thumb2_movhi_vfp, *thumb2_movhi_fp16): Use
29949 VALID_MVE_PRED_MODE instead of checking for MODE_VECTOR_BOOL class.
29950
29951 2023-02-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
29952
29953 PR target/107674
29954 * config/arm/arm.cc (arm_hard_regno_mode_ok): Use new MACRO.
29955 (arm_modes_tieable_p): Make MVE predicate modes tieable.
29956 * config/arm/arm.h (VALID_MVE_PRED_MODE): New define.
29957 * simplify-rtx.cc (simplify_context::simplify_subreg): Teach
29958 simplify_subreg to simplify subregs where the outermode is not scalar.
29959
29960 2023-02-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
29961
29962 PR target/107674
29963 * config/arm/arm-builtins.cc (arm_simd_builtin_type): Rewrite to use
29964 new qualifiers parameter and use unsigned short type for MVE predicate.
29965 (arm_init_builtin): Call arm_simd_builtin_type with qualifiers
29966 parameter.
29967 (arm_init_crypto_builtins): Likewise.
29968
29969 2023-02-02 Jakub Jelinek <jakub@redhat.com>
29970
29971 PR ipa/107300
29972 * builtins.def (BUILT_IN_UNREACHABLE_TRAP): New builtin.
29973 * internal-fn.def (TRAP): Remove.
29974 * internal-fn.cc (expand_TRAP): Remove.
29975 * tree.cc (build_common_builtin_nodes): Define
29976 BUILT_IN_UNREACHABLE_TRAP if not yet defined.
29977 (builtin_decl_unreachable): Use BUILT_IN_UNREACHABLE_TRAP
29978 instead of BUILT_IN_TRAP.
29979 * gimple.cc (gimple_build_builtin_unreachable): Remove
29980 emitting internal function for BUILT_IN_TRAP.
29981 * asan.cc (maybe_instrument_call): Handle BUILT_IN_UNREACHABLE_TRAP.
29982 * cgraph.cc (cgraph_edge::verify_corresponds_to_fndecl): Handle
29983 BUILT_IN_UNREACHABLE_TRAP instead of BUILT_IN_TRAP.
29984 * ipa-devirt.cc (possible_polymorphic_call_target_p): Handle
29985 BUILT_IN_UNREACHABLE_TRAP.
29986 * builtins.cc (expand_builtin, is_inexpensive_builtin): Likewise.
29987 * tree-cfg.cc (verify_gimple_call,
29988 pass_warn_function_return::execute): Likewise.
29989 * attribs.cc (decl_attributes): Don't report exclusions on
29990 BUILT_IN_UNREACHABLE_TRAP either.
29991
29992 2023-02-02 liuhongt <hongtao.liu@intel.com>
29993
29994 PR tree-optimization/108601
29995 * tree-vectorizer.h (vect_can_peel_nonlinear_iv_p): Removed.
29996 * tree-vect-loop.cc
29997 (vectorizable_nonlinear_induction): Remove
29998 vect_can_peel_nonlinear_iv_p.
29999 (vect_can_peel_nonlinear_iv_p): Don't peel
30000 nonlinear iv(mult or shift) for epilog when vf is not
30001 constant and moved the defination to ..
30002 * tree-vect-loop-manip.cc (vect_can_peel_nonlinear_iv_p):
30003 .. Here.
30004
30005 2023-02-02 Jakub Jelinek <jakub@redhat.com>
30006
30007 PR middle-end/108435
30008 * tree-nested.cc (convert_nonlocal_omp_clauses)
30009 <case OMP_CLAUSE_LASTPRIVATE>: If info->new_local_var_chain and *seq
30010 is not a GIMPLE_BIND, wrap the sequence into a new GIMPLE_BIND
30011 before calling declare_vars.
30012 (convert_nonlocal_omp_clauses) <case OMP_CLAUSE_LINEAR>: Merge
30013 with the OMP_CLAUSE_LASTPRIVATE handling except for whether
30014 seq is initialized to &OMP_CLAUSE_LASTPRIVATE_GIMPLE_SEQ (clause)
30015 or &OMP_CLAUSE_LINEAR_GIMPLE_SEQ (clause).
30016
30017 2023-02-01 Tamar Christina <tamar.christina@arm.com>
30018
30019 * common/config/aarch64/aarch64-common.cc
30020 (struct aarch64_option_extension): Add native_detect and document struct
30021 a bit more.
30022 (all_extensions): Set new field native_detect.
30023 * config/aarch64/aarch64.cc (struct aarch64_option_extension): Delete
30024 unused struct.
30025
30026 2023-02-01 Martin Liska <mliska@suse.cz>
30027
30028 * ipa-devirt.cc (odr_types_equivalent_p): Respect *warned
30029 value if set.
30030
30031 2023-02-01 Andrew MacLeod <amacleod@redhat.com>
30032
30033 PR tree-optimization/108356
30034 * gimple-range-cache.cc (ranger_cache::range_on_edge): Always
30035 do a search of the DOM tree for a range.
30036
30037 2023-02-01 Martin Liska <mliska@suse.cz>
30038
30039 PR ipa/108509
30040 * cgraphunit.cc (walk_polymorphic_call_targets): Insert
30041 ony non-null values.
30042 * ipa.cc (walk_polymorphic_call_targets): Likewise.
30043
30044 2023-02-01 Martin Liska <mliska@suse.cz>
30045
30046 PR driver/108572
30047 * gcc.cc (LINK_COMPRESS_DEBUG_SPEC): Report error only for
30048 -gz=zstd.
30049
30050 2023-02-01 Jakub Jelinek <jakub@redhat.com>
30051
30052 PR debug/108573
30053 * ree.cc (combine_reaching_defs): Don't return false for paradoxical
30054 subregs in DEBUG_INSNs.
30055
30056 2023-02-01 Richard Sandiford <richard.sandiford@arm.com>
30057
30058 * compare-elim.cc (find_flags_uses_in_insn): Guard use of SET_SRC.
30059
30060 2023-02-01 Andreas Krebbel <krebbel@linux.ibm.com>
30061
30062 * config/s390/s390.cc (s390_restore_gpr_p): New function.
30063 (s390_preserve_gpr_arg_in_range_p): New function.
30064 (s390_preserve_gpr_arg_p): New function.
30065 (s390_preserve_fpr_arg_p): New function.
30066 (s390_register_info_stdarg_fpr): Rename to ...
30067 (s390_register_info_arg_fpr): ... this. Add -mpreserve-args handling.
30068 (s390_register_info_stdarg_gpr): Rename to ...
30069 (s390_register_info_arg_gpr): ... this. Add -mpreserve-args handling.
30070 (s390_register_info): Use the renamed functions above.
30071 (s390_optimize_register_info): Likewise.
30072 (save_fpr): Generate CFI for -mpreserve-args.
30073 (save_gprs): Generate CFI for -mpreserve-args. Drop return value.
30074 (s390_emit_prologue): Adjust to changed calling convention of save_gprs.
30075 (s390_optimize_prologue): Likewise.
30076 * config/s390/s390.opt: New option -mpreserve-args
30077
30078 2023-02-01 Andreas Krebbel <krebbel@linux.ibm.com>
30079
30080 * config/s390/s390.cc (save_gprs): Use gen_frame_mem.
30081 (restore_gprs): Likewise.
30082 (s390_emit_stack_tie): Make the stack_tie to be dependent on the
30083 frame pointer if a frame-pointer is used.
30084 (s390_emit_prologue): Emit stack_tie when frame-pointer is needed.
30085 * config/s390/s390.md (stack_tie): Add a register operand and
30086 rename to ...
30087 (@stack_tie<mode>): ... this.
30088
30089 2023-02-01 Andreas Krebbel <krebbel@linux.ibm.com>
30090
30091 * dwarf2cfi.cc (dwarf2out_frame_debug_cfa_restore): Add
30092 EMIT_CFI parameter.
30093 (dwarf2out_frame_debug): Add case for REG_CFA_NORESTORE.
30094 * reg-notes.def (REG_CFA_NOTE): New reg note definition.
30095
30096 2023-02-01 Richard Biener <rguenther@suse.de>
30097
30098 PR middle-end/108500
30099 * dominance.cc (assign_dfs_numbers): Replace recursive DFS
30100 with tree traversal algorithm.
30101
30102 2023-02-01 Jason Merrill <jason@redhat.com>
30103
30104 * doc/invoke.texi: Document -Wno-changes-meaning.
30105
30106 2023-02-01 David Malcolm <dmalcolm@redhat.com>
30107
30108 * doc/invoke.texi (Static Analyzer Options): Add notes about
30109 limitations of -fanalyzer.
30110
30111 2023-01-31 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
30112
30113 * config/riscv/constraints.md (vj): New.
30114 (vk): Ditto
30115 * config/riscv/iterators.md: Add more opcode.
30116 * config/riscv/predicates.md (vector_arith_operand): New.
30117 (vector_neg_arith_operand): New.
30118 (vector_shift_operand): New.
30119 * config/riscv/riscv-vector-builtins-bases.cc (class binop): New.
30120 * config/riscv/riscv-vector-builtins-bases.h: (vadd): New.
30121 (vsub): Ditto.
30122 (vand): Ditto.
30123 (vor): Ditto.
30124 (vxor): Ditto.
30125 (vsll): Ditto.
30126 (vsra): Ditto.
30127 (vsrl): Ditto.
30128 (vmin): Ditto.
30129 (vmax): Ditto.
30130 (vminu): Ditto.
30131 (vmaxu): Ditto.
30132 (vmul): Ditto.
30133 (vdiv): Ditto.
30134 (vrem): Ditto.
30135 (vdivu): Ditto.
30136 (vremu): Ditto.
30137 * config/riscv/riscv-vector-builtins-functions.def (vadd): New.
30138 (vsub): Ditto.
30139 (vand): Ditto.
30140 (vor): Ditto.
30141 (vxor): Ditto.
30142 (vsll): Ditto.
30143 (vsra): Ditto.
30144 (vsrl): Ditto.
30145 (vmin): Ditto.
30146 (vmax): Ditto.
30147 (vminu): Ditto.
30148 (vmaxu): Ditto.
30149 (vmul): Ditto.
30150 (vdiv): Ditto.
30151 (vrem): Ditto.
30152 (vdivu): Ditto.
30153 (vremu): Ditto.
30154 * config/riscv/riscv-vector-builtins-shapes.cc (struct binop_def): New.
30155 * config/riscv/riscv-vector-builtins-shapes.h (binop): New.
30156 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_I_OPS): New.
30157 (DEF_RVV_U_OPS): New.
30158 (rvv_arg_type_info::get_base_vector_type): Handle
30159 RVV_BASE_shift_vector.
30160 (rvv_arg_type_info::get_tree_type): Ditto.
30161 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Add
30162 RVV_BASE_shift_vector.
30163 * config/riscv/riscv.cc (riscv_print_operand): Handle 'V'.
30164 * config/riscv/vector-iterators.md: Handle more opcode.
30165 * config/riscv/vector.md (@pred_<optab><mode>): New.
30166
30167 2023-01-31 Philipp Tomsich <philipp.tomsich@vrull.eu>
30168
30169 PR target/108589
30170 * config/aarch64/aarch64.cc (aarch_macro_fusion_pair_p): Check
30171 REG_P on SET_DEST.
30172
30173 2023-01-31 Richard Sandiford <richard.sandiford@arm.com>
30174
30175 PR tree-optimization/108608
30176 * tree-vect-loop.cc (vect_transform_reduction): Handle single
30177 def-use cycles that involve function calls rather than tree codes.
30178
30179 2023-01-31 Andrew MacLeod <amacleod@redhat.com>
30180
30181 PR tree-optimization/108385
30182 * gimple-range-gori.cc (gori_compute::compute_operand_range):
30183 Allow VARYING computations to continue if there is a relation.
30184 * range-op.cc (pointer_plus_operator::op2_range): New.
30185
30186 2023-01-31 Andrew MacLeod <amacleod@redhat.com>
30187
30188 PR tree-optimization/108359
30189 * range-op.cc (range_operator::wi_fold_in_parts_equiv): New.
30190 (range_operator::fold_range): If op1 is equivalent to op2 then
30191 invoke new fold_in_parts_equiv to operate on sub-components.
30192 * range-op.h (wi_fold_in_parts_equiv): New prototype.
30193
30194 2023-01-31 Andrew MacLeod <amacleod@redhat.com>
30195
30196 * gimple-range-gori.cc (gori_compute::compute_operand_range): Do
30197 not abort calculations if there is a valid relation available.
30198 (gori_compute::refine_using_relation): Pass correct relation trio.
30199 (gori_compute::compute_operand1_range): Create trio and use it.
30200 (gori_compute::compute_operand2_range): Ditto.
30201 * range-op.cc (operator_plus::op1_range): Use correct trio member.
30202 (operator_minus::op1_range): Use correct trio member.
30203 * value-relation.cc (value_relation::create_trio): New.
30204 * value-relation.h (value_relation::create_trio): New prototype.
30205
30206 2023-01-31 Jakub Jelinek <jakub@redhat.com>
30207
30208 PR target/108599
30209 * config/i386/i386-expand.cc
30210 (ix86_convert_const_wide_int_to_broadcast): Return nullptr if
30211 CONST_WIDE_INT_NUNITS (op) times HOST_BITS_PER_WIDE_INT isn't
30212 equal to bitsize of mode.
30213
30214 2023-01-31 Jakub Jelinek <jakub@redhat.com>
30215
30216 PR rtl-optimization/108596
30217 * bb-reorder.cc (fix_up_fall_thru_edges): Handle the case where cur_bb
30218 ends with asm goto and has a crossing fallthrough edge to the same bb
30219 that contains at least one of its labels by restoring EDGE_CROSSING
30220 flag even on possible edge from cur_bb to new_bb successor.
30221
30222 2023-01-31 Jakub Jelinek <jakub@redhat.com>
30223
30224 PR c++/105593
30225 * config/i386/avx512erintrin.h (_mm512_exp2a23_round_pd,
30226 _mm512_exp2a23_round_ps, _mm512_rcp28_round_pd, _mm512_rcp28_round_ps,
30227 _mm512_rsqrt28_round_pd, _mm512_rsqrt28_round_ps): Use
30228 _mm512_undefined_pd () or _mm512_undefined_ps () instead of using
30229 uninitialized automatic variable __W.
30230
30231 2023-01-31 Gerald Pfeifer <gerald@pfeifer.com>
30232
30233 * doc/include/fdl.texi: Change fsf.org to www.fsf.org.
30234
30235 2023-01-30 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
30236
30237 * config/riscv/riscv-protos.h (get_vector_mode): New function.
30238 * config/riscv/riscv-v.cc (get_vector_mode): Ditto.
30239 * config/riscv/riscv-vector-builtins-bases.cc (enum lst_type): New enum.
30240 (class loadstore): Adjust for indexed loads/stores support.
30241 (BASE): Ditto.
30242 * config/riscv/riscv-vector-builtins-bases.h: New function declare.
30243 * config/riscv/riscv-vector-builtins-functions.def (vluxei8): Ditto.
30244 (vluxei16): Ditto.
30245 (vluxei32): Ditto.
30246 (vluxei64): Ditto.
30247 (vloxei8): Ditto.
30248 (vloxei16): Ditto.
30249 (vloxei32): Ditto.
30250 (vloxei64): Ditto.
30251 (vsuxei8): Ditto.
30252 (vsuxei16): Ditto.
30253 (vsuxei32): Ditto.
30254 (vsuxei64): Ditto.
30255 (vsoxei8): Ditto.
30256 (vsoxei16): Ditto.
30257 (vsoxei32): Ditto.
30258 (vsoxei64): Ditto.
30259 * config/riscv/riscv-vector-builtins-shapes.cc
30260 (struct indexed_loadstore_def): New class.
30261 (SHAPE): Ditto.
30262 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
30263 * config/riscv/riscv-vector-builtins.cc (required_extensions_p): Adjust
30264 for indexed loads/stores support.
30265 (check_required_extensions): Ditto.
30266 (rvv_arg_type_info::get_base_vector_type): New function.
30267 (rvv_arg_type_info::get_tree_type): Ditto.
30268 (function_builder::add_unique_function): Adjust for indexed loads/stores
30269 support.
30270 (function_expander::use_exact_insn): New function.
30271 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Adjust for
30272 indexed loads/stores support.
30273 (struct rvv_arg_type_info): Ditto.
30274 (function_expander::index_mode): New function.
30275 (function_base::apply_tail_policy_p): Ditto.
30276 (function_base::apply_mask_policy_p): Ditto.
30277 * config/riscv/vector-iterators.md (unspec): New unspec.
30278 * config/riscv/vector.md (unspec): Ditto.
30279 (@pred_indexed_<order>load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): New
30280 pattern.
30281 (@pred_indexed_<order>store<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Ditto.
30282 (@pred_indexed_<order>load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
30283 (@pred_indexed_<order>store<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
30284 (@pred_indexed_<order>load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
30285 (@pred_indexed_<order>store<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
30286 (@pred_indexed_<order>load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
30287 (@pred_indexed_<order>store<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
30288 (@pred_indexed_<order>load<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
30289 (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
30290 (@pred_indexed_<order>load<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
30291 (@pred_indexed_<order>store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
30292 (@pred_indexed_<order>load<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
30293 (@pred_indexed_<order>store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
30294
30295 2023-01-30 Flavio Cruz <flaviocruz@gmail.com>
30296
30297 * config.gcc: Recognize x86_64-*-gnu* targets and include
30298 i386/gnu64.h.
30299 * config/i386/gnu64.h: Define configuration for new target
30300 including ld.so location.
30301
30302 2023-01-30 Philipp Tomsich <philipp.tomsich@vrull.eu>
30303
30304 * config/aarch64/aarch64-cores.def (AARCH64_CORE): Update
30305 ampere1a to include SM4.
30306
30307 2023-01-30 Andrew Pinski <apinski@marvell.com>
30308
30309 PR tree-optimization/108582
30310 * tree-ssa-phiopt.cc (match_simplify_replacement): Add check
30311 for middlebb to have no phi nodes.
30312
30313 2023-01-30 Richard Biener <rguenther@suse.de>
30314
30315 PR tree-optimization/108574
30316 * tree-ssa-sccvn.cc (visit_phi): Instead of swapping
30317 sameval and def, ignore the equivalence if there's the
30318 danger of oscillating between two values.
30319
30320 2023-01-30 Andreas Schwab <schwab@suse.de>
30321
30322 * common/config/riscv/riscv-common.cc
30323 (riscv_option_optimization_table)
30324 [TARGET_DEFAULT_ASYNC_UNWIND_TABLES]: Enable
30325 -fasynchronous-unwind-tables and -funwind-tables.
30326 * config.gcc (riscv*-*-linux*): Define
30327 TARGET_DEFAULT_ASYNC_UNWIND_TABLES.
30328
30329 2023-01-30 YunQiang Su <yunqiang.su@cipunited.com>
30330
30331 * Makefile.in (CROSS_SYSTEM_HEADER_DIR): set according the
30332 value of includedir.
30333
30334 2023-01-30 Richard Biener <rguenther@suse.de>
30335
30336 PR ipa/108511
30337 * cgraph.cc (possibly_call_in_translation_unit_p): Relax
30338 assert.
30339
30340 2023-01-30 liuhongt <hongtao.liu@intel.com>
30341
30342 * config/i386/i386.opt: Change AVX512FP16 to AVX512-FP16.
30343 * doc/invoke.texi: Ditto.
30344
30345 2023-01-29 Jan Hubicka <hubicka@ucw.cz>
30346
30347 * ipa-utils.cc: Include calls.h, cfgloop.h and cfganal.h
30348 (stmt_may_terminate_function_p): If assuming return or EH
30349 volatile asm is safe.
30350 (find_always_executed_bbs): Fix handling of terminating BBS and
30351 infinite loops; add debug output.
30352 * tree-ssa-alias.cc (stmt_kills_ref_p): Fix debug output
30353
30354 2023-01-28 Philipp Tomsich <philipp.tomsich@vrull.eu>
30355
30356 * config/aarch64/aarch64.cc (aarch64_uxt_size): fix an
30357 off-by-one in checking the permissible shift-amount.
30358
30359 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
30360
30361 * doc/extend.texi (Named Address Spaces): Update link to the
30362 AVR-Libc manual.
30363
30364 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
30365
30366 * doc/standards.texi (Standards): Fix markup.
30367
30368 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
30369
30370 * doc/standards.texi (Standards): Update link to Objective-C book.
30371
30372 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
30373
30374 * doc/invoke.texi (Instrumentation Options): Update reference to
30375 AddressSanitizer.
30376
30377 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
30378
30379 * doc/standards.texi: Update Go1 link.
30380
30381 2023-01-28 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
30382
30383 * config/riscv/predicates.md (pmode_reg_or_0_operand): New predicate.
30384 * config/riscv/riscv-vector-builtins-bases.cc (class loadstore):
30385 Support vlse/vsse.
30386 (BASE): Ditto.
30387 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
30388 * config/riscv/riscv-vector-builtins-functions.def (vlse): New class.
30389 (vsse): New class.
30390 * config/riscv/riscv-vector-builtins.cc
30391 (function_expander::use_contiguous_load_insn): Support vlse/vsse.
30392 * config/riscv/vector.md (@pred_strided_load<mode>): New md pattern.
30393 (@pred_strided_store<mode>): Ditto.
30394
30395 2023-01-28 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
30396
30397 * config/riscv/vector.md (tail_policy_op_idx): Remove.
30398 (mask_policy_op_idx): Remove.
30399 (avl_type_op_idx): Remove.
30400
30401 2023-01-27 Richard Sandiford <richard.sandiford@arm.com>
30402
30403 PR tree-optimization/96373
30404 * tree.h (sign_mask_for): Declare.
30405 * tree.cc (sign_mask_for): New function.
30406 (signed_or_unsigned_type_for): For vector types, try to use the
30407 related_int_vector_mode.
30408 * genmatch.cc (commutative_op): Handle conditional internal functions.
30409 * match.pd: Fold an IFN_COND_MUL+copysign into an IFN_COND_XOR+and.
30410
30411 2023-01-27 Richard Sandiford <richard.sandiford@arm.com>
30412
30413 * tree-vectorizer.cc (vector_costs::compare_inside_loop_cost):
30414 Use the likely minimum VF when bounding the denominators to
30415 the estimated number of iterations.
30416
30417 2023-01-27 Richard Biener <rguenther@suse.de>
30418
30419 PR target/55522
30420 * doc/invoke.texi (-shared): Clarify effect on -ffast-math
30421 and -Ofast FP environment side-effects.
30422
30423 2023-01-27 Richard Biener <rguenther@suse.de>
30424
30425 PR target/55522
30426 * config/mips/gnu-user.h (GNU_USER_TARGET_MATHFILE_SPEC):
30427 Don't add crtfastmath.o for -shared.
30428
30429 2023-01-27 Richard Biener <rguenther@suse.de>
30430
30431 PR target/55522
30432 * config/ia64/linux.h (ENDFILE_SPEC): Don't add crtfastmath.o
30433 for -shared.
30434
30435 2023-01-27 Richard Biener <rguenther@suse.de>
30436
30437 PR target/55522
30438 * config/alpha/linux.h (ENDFILE_SPEC): Don't add
30439 crtfastmath.o for -shared.
30440
30441 2023-01-27 Andrew MacLeod <amacleod@redhat.com>
30442
30443 PR tree-optimization/108306
30444 * range-op.cc (operator_lshift::fold_range): Return [0, 0] not
30445 varying for shifts that are always out of void range.
30446 (operator_rshift::fold_range): Return [0, 0] not
30447 varying for shifts that are always out of void range.
30448
30449 2023-01-27 Andrew MacLeod <amacleod@redhat.com>
30450
30451 PR tree-optimization/108447
30452 * gimple-range-fold.cc (old_using_range::relation_fold_and_or):
30453 Do not attempt to fold HONOR_NAN types.
30454
30455 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
30456
30457 * config/riscv/riscv-vector-builtins-shapes.cc (struct loadstore_def):
30458 Remove _m suffix for "vop_m" C++ overloaded API name.
30459
30460 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
30461
30462 * config/riscv/riscv-vector-builtins-bases.cc (BASE): Add vlm/vsm support.
30463 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
30464 * config/riscv/riscv-vector-builtins-functions.def (vlm): New define.
30465 (vsm): Ditto.
30466 * config/riscv/riscv-vector-builtins-shapes.cc (struct loadstore_def): Add vlm/vsm support.
30467 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_B_OPS): Ditto.
30468 (vbool64_t): Ditto.
30469 (vbool32_t): Ditto.
30470 (vbool16_t): Ditto.
30471 (vbool8_t): Ditto.
30472 (vbool4_t): Ditto.
30473 (vbool2_t): Ditto.
30474 (vbool1_t): Ditto.
30475 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_B_OPS): Ditto.
30476 (rvv_arg_type_info::get_tree_type): Ditto.
30477 (function_expander::use_contiguous_load_insn): Ditto.
30478 * config/riscv/vector.md (@pred_store<mode>): Ditto.
30479
30480 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
30481
30482 * config/riscv/riscv-vsetvl.cc (vsetvl_insn_p): Add condition to avoid ICE.
30483 (vsetvl_discard_result_insn_p): New function.
30484 (reg_killed_by_bb_p): rename to find_reg_killed_by.
30485 (find_reg_killed_by): New name.
30486 (get_vl): allow it to be called by more functions.
30487 (has_vsetvl_killed_avl_p): Add condition.
30488 (get_avl): allow it to be called by more functions.
30489 (insn_should_be_added_p): New function.
30490 (get_all_nonphi_defs): Refine function.
30491 (get_all_sets): Ditto.
30492 (get_same_bb_set): New function.
30493 (any_insn_in_bb_p): Ditto.
30494 (any_set_in_bb_p): Ditto.
30495 (get_vl_vtype_info): Add VLMAX forward optimization.
30496 (source_equal_p): Fix issues.
30497 (extract_single_source): Refine.
30498 (avl_info::multiple_source_equal_p): New function.
30499 (avl_info::operator==): Adjust for final version.
30500 (vl_vtype_info::operator==): Ditto.
30501 (vl_vtype_info::same_avl_p): Ditto.
30502 (vector_insn_info::parse_insn): Ditto.
30503 (vector_insn_info::available_p): New function.
30504 (vector_insn_info::merge): Adjust for final version.
30505 (vector_insn_info::dump): Add hard_empty.
30506 (pass_vsetvl::hard_empty_block_p): New function.
30507 (pass_vsetvl::backward_demand_fusion): Adjust for final version.
30508 (pass_vsetvl::forward_demand_fusion): Ditto.
30509 (pass_vsetvl::demand_fusion): Ditto.
30510 (pass_vsetvl::cleanup_illegal_dirty_blocks): New function.
30511 (pass_vsetvl::compute_local_properties): Adjust for final version.
30512 (pass_vsetvl::can_refine_vsetvl_p): Ditto.
30513 (pass_vsetvl::refine_vsetvls): Ditto.
30514 (pass_vsetvl::commit_vsetvls): Ditto.
30515 (pass_vsetvl::propagate_avl): New function.
30516 (pass_vsetvl::lazy_vsetvl): Adjust for new version.
30517 * config/riscv/riscv-vsetvl.h (enum def_type): New enum.
30518
30519 2023-01-27 Jakub Jelinek <jakub@redhat.com>
30520
30521 PR other/108560
30522 * doc/extend.texi: Fix up return type of __builtin_va_arg_pack_len
30523 from size_t to int.
30524
30525 2023-01-27 Jakub Jelinek <jakub@redhat.com>
30526
30527 PR ipa/106061
30528 * cgraph.cc (cgraph_edge::verify_corresponds_to_fndecl): Allow
30529 redirection of calls to __builtin_trap in addition to redirection
30530 to __builtin_unreachable.
30531
30532 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
30533
30534 * config/riscv/riscv-vsetvl.cc (before_p): Fix bug.
30535
30536 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
30537
30538 * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): Refine function args.
30539 (emit_vsetvl_insn): Ditto.
30540
30541 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
30542
30543 * config/riscv/vector.md: Fix constraints.
30544
30545 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
30546
30547 * config/riscv/vector-iterators.md: Add TARGET_MIN_VLEN > 32 predicates.
30548
30549 2023-01-27 Patrick Palka <ppalka@redhat.com>
30550 Jakub Jelinek <jakub@redhat.com>
30551
30552 * tree-core.h (tree_code_type, tree_code_length): For
30553 C++17 and later, add inline keyword, otherwise don't define
30554 the arrays, but declare extern arrays.
30555 * tree.cc (tree_code_type, tree_code_length): Define these
30556 arrays for C++14 and older.
30557
30558 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
30559
30560 * config/riscv/riscv-vsetvl.h: Change it into public.
30561
30562 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
30563
30564 * config/riscv/riscv-passes.def (INSERT_PASS_BEFORE): Reorder VSETVL
30565 pass.
30566
30567 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
30568
30569 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::execute): Always call split_all_insns.
30570
30571 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
30572
30573 * config/riscv/vector.md: Fix incorrect attributes.
30574
30575 2023-01-27 Richard Biener <rguenther@suse.de>
30576
30577 PR target/55522
30578 * config/loongarch/gnu-user.h (GNU_USER_TARGET_MATHFILE_SPEC):
30579 Don't add crtfastmath.o for -shared.
30580
30581 2023-01-27 Alexandre Oliva <oliva@gnu.org>
30582
30583 * doc/options.texi (option, RejectNegative): Mention that
30584 -g-started options are also implicitly negatable.
30585
30586 2023-01-26 Kito Cheng <kito.cheng@sifive.com>
30587
30588 * config/riscv/riscv-vector-builtins.cc (register_builtin_types):
30589 Use get_typenode_from_name to get fixed-width integer type
30590 nodes.
30591 * config/riscv/riscv-vector-builtins.def: Update define with
30592 fixed-width integer type nodes.
30593
30594 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
30595
30596 * config/riscv/riscv-vsetvl.cc (same_bb_and_before_p): Remove it.
30597 (real_insn_and_same_bb_p): New function.
30598 (same_bb_and_after_or_equal_p): Remove it.
30599 (before_p): New function.
30600 (reg_killed_by_bb_p): Ditto.
30601 (has_vsetvl_killed_avl_p): Ditto.
30602 (get_vl): Move location so that we can call it.
30603 (anticipatable_occurrence_p): Fix issue of AVL=REG support.
30604 (available_occurrence_p): Ditto.
30605 (dominate_probability_p): Remove it.
30606 (can_backward_propagate_p): Remove it.
30607 (get_all_nonphi_defs): New function.
30608 (get_all_predecessors): Ditto.
30609 (any_insn_in_bb_p): Ditto.
30610 (insert_vsetvl): Adjust AVL REG.
30611 (source_equal_p): New function.
30612 (extract_single_source): Ditto.
30613 (avl_info::single_source_equal_p): Ditto.
30614 (avl_info::operator==): Adjust for AVL=REG.
30615 (vl_vtype_info::same_avl_p): Ditto.
30616 (vector_insn_info::set_demand_info): Remove it.
30617 (vector_insn_info::compatible_p): Adjust for AVL=REG.
30618 (vector_insn_info::compatible_avl_p): New function.
30619 (vector_insn_info::merge): Adjust AVL=REG.
30620 (vector_insn_info::dump): Ditto.
30621 (pass_vsetvl::merge_successors): Remove it.
30622 (enum fusion_type): New enum.
30623 (pass_vsetvl::get_backward_fusion_type): New function.
30624 (pass_vsetvl::backward_demand_fusion): Adjust for AVL=REG.
30625 (pass_vsetvl::forward_demand_fusion): Ditto.
30626 (pass_vsetvl::demand_fusion): Ditto.
30627 (pass_vsetvl::prune_expressions): Ditto.
30628 (pass_vsetvl::compute_local_properties): Ditto.
30629 (pass_vsetvl::cleanup_vsetvls): Ditto.
30630 (pass_vsetvl::commit_vsetvls): Ditto.
30631 (pass_vsetvl::init): Ditto.
30632 * config/riscv/riscv-vsetvl.h (enum fusion_type): New enum.
30633 (enum merge_type): New enum.
30634
30635 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
30636
30637 * config/riscv/riscv-vsetvl.cc
30638 (vector_infos_manager::vector_infos_manager): Add probability.
30639 (vector_infos_manager::dump): Ditto.
30640 (pass_vsetvl::compute_probabilities): Ditto.
30641 * config/riscv/riscv-vsetvl.h (struct vector_block_info): Ditto.
30642
30643 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
30644
30645 * config/riscv/riscv-vsetvl.cc (vector_insn_info::operator==): Remove dirty_pat.
30646 (vector_insn_info::merge): Ditto.
30647 (vector_insn_info::dump): Ditto.
30648 (pass_vsetvl::merge_successors): Ditto.
30649 (pass_vsetvl::backward_demand_fusion): Ditto.
30650 (pass_vsetvl::forward_demand_fusion): Ditto.
30651 (pass_vsetvl::commit_vsetvls): Ditto.
30652 * config/riscv/riscv-vsetvl.h: Ditto.
30653
30654 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
30655
30656 * config/riscv/riscv-vsetvl.cc (add_label_notes): Rename insn to
30657 rinsn.
30658
30659 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
30660
30661 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::backward_demand_fusion): Refine codes.
30662
30663 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
30664
30665 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::forward_demand_fusion):
30666 Add pre-check for redundant flow.
30667
30668 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
30669
30670 * config/riscv/riscv-vsetvl.cc (vector_infos_manager::create_bitmap_vectors): New function.
30671 (vector_infos_manager::free_bitmap_vectors): Ditto.
30672 (pass_vsetvl::pre_vsetvl): Adjust codes.
30673 * config/riscv/riscv-vsetvl.h: New function declaration.
30674
30675 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
30676
30677 * config/riscv/riscv-vsetvl.cc (can_backward_propagate_p): Fix for null iter_bb.
30678 (vector_insn_info::set_demand_info): New function.
30679 (pass_vsetvl::emit_local_forward_vsetvls): Adjust for refinement of Phase 3.
30680 (pass_vsetvl::merge_successors): Ditto.
30681 (pass_vsetvl::compute_global_backward_infos): Ditto.
30682 (pass_vsetvl::backward_demand_fusion): Ditto.
30683 (pass_vsetvl::forward_demand_fusion): Ditto.
30684 (pass_vsetvl::demand_fusion): New function.
30685 (pass_vsetvl::lazy_vsetvl): Adjust for refinement of phase 3.
30686 * config/riscv/riscv-vsetvl.h: New function declaration.
30687
30688 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
30689
30690 * config/riscv/riscv-vsetvl.cc (vector_insn_info::operator>=): Fix available condition.
30691
30692 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
30693
30694 * config/riscv/riscv-vsetvl.cc (change_vsetvl_insn): New function.
30695 (pass_vsetvl::compute_global_backward_infos): Simplify codes.
30696
30697 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
30698
30699 * config/riscv/riscv-vsetvl.cc (loop_basic_block_p): Adjust function.
30700 (backward_propagate_worthwhile_p): Fix non-worthwhile.
30701
30702 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
30703
30704 * config/riscv/riscv-vsetvl.cc (change_insn): Adjust in_group in validate_change.
30705
30706 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
30707
30708 * config/riscv/riscv-vsetvl.cc (vector_infos_manager::all_same_avl_p): New function.
30709 (pass_vsetvl::can_refine_vsetvl_p): Add AVL check.
30710 (pass_vsetvl::commit_vsetvls): Ditto.
30711 * config/riscv/riscv-vsetvl.h: New function declaration.
30712
30713 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
30714
30715 * config/riscv/vector.md:
30716
30717 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
30718
30719 * config/riscv/riscv-vector-builtins-bases.cc (class loadstore): use
30720 pred_store for vse.
30721 * config/riscv/riscv-vector-builtins.cc
30722 (function_expander::add_mem_operand): Refine function.
30723 (function_expander::use_contiguous_load_insn): Adjust new
30724 implementation.
30725 (function_expander::use_contiguous_store_insn): Ditto.
30726 * config/riscv/riscv-vector-builtins.h: Refine function.
30727 * config/riscv/vector.md (@pred_store<mode>): New pattern.
30728
30729 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
30730
30731 * config/riscv/riscv-vector-builtins.cc: Change to scalar pointer.
30732
30733 2023-01-26 Marek Polacek <polacek@redhat.com>
30734
30735 PR middle-end/108543
30736 * opts.cc (parse_sanitizer_options): Don't always clear SANITIZE_ADDRESS
30737 if it was previously set.
30738
30739 2023-01-26 Jakub Jelinek <jakub@redhat.com>
30740
30741 PR tree-optimization/108540
30742 * range-op-float.cc (foperator_equal::fold_range): If both op1 and op2
30743 are singletons, use range_true even if op1 != op2
30744 when one range is [-0.0, -0.0] and another [0.0, 0.0]. Similarly,
30745 even if intersection of the ranges is empty and one has
30746 zero low bound and another zero high bound, use range_true_and_false
30747 rather than range_false.
30748 (foperator_not_equal::fold_range): If both op1 and op2
30749 are singletons, use range_false even if op1 != op2
30750 when one range is [-0.0, -0.0] and another [0.0, 0.0]. Similarly,
30751 even if intersection of the ranges is empty and one has
30752 zero low bound and another zero high bound, use range_true_and_false
30753 rather than range_true.
30754
30755 2023-01-26 Jakub Jelinek <jakub@redhat.com>
30756
30757 * value-relation.cc (kind_string): Add const.
30758 (rr_negate_table, rr_swap_table, rr_intersect_table,
30759 rr_union_table, rr_transitive_table): Add static const, change
30760 element type from relation_kind to unsigned char.
30761 (relation_negate, relation_swap, relation_intersect, relation_union,
30762 relation_transitive): Cast rr_*_table element to relation_kind.
30763 (relation_to_code): Add static const.
30764 (relation_tests): Assert VREL_LAST is smaller than UCHAR_MAX.
30765
30766 2023-01-26 Richard Biener <rguenther@suse.de>
30767
30768 PR tree-optimization/108547
30769 * gimple-predicate-analysis.cc (value_sat_pred_p):
30770 Use widest_int.
30771
30772 2023-01-26 Siddhesh Poyarekar <siddhesh@gotplt.org>
30773
30774 PR tree-optimization/108522
30775 * tree-object-size.cc (compute_object_offset): Make EXPR
30776 argument non-const. Call component_ref_field_offset.
30777
30778 2023-01-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
30779
30780 * config/aarch64/aarch64-option-extensions.def (cssc): Specify
30781 FEATURE_STRING field.
30782
30783 2023-01-26 Gerald Pfeifer <gerald@pfeifer.com>
30784
30785 * doc/sourcebuild.texi: Refer to projects as GCC and GDB.
30786
30787 2023-01-25 Iain Sandoe <iain@sandoe.co.uk>
30788
30789 PR modula2/102343
30790 PR modula2/108182
30791 * gcc.cc: Provide default specs for Modula-2 so that when the
30792 language is not built-in better diagnostics are emitted for
30793 attempts to use .mod or .m2i file extensions.
30794
30795 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
30796
30797 * config/arm/mve.md (mve_vqnegq_s<mode>): Fix spacing.
30798
30799 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
30800
30801 * config/arm/mve.md (mve_vqabsq_s<mode>): Fix spacing.
30802
30803 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
30804
30805 * config/arm/mve.md (mve_vnegq_f<mode>, mve_vnegq_s<mode>):
30806 Fix spacing.
30807
30808 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
30809
30810 * config/arm/mve.md (@mve_vclzq_s<mode>): Fix spacing.
30811
30812 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
30813
30814 * config/arm/mve.md (mve_vclsq_s<mode>): Fix spacing.
30815
30816 2023-01-25 Richard Biener <rguenther@suse.de>
30817
30818 PR tree-optimization/108523
30819 * tree-ssa-sccvn.cc (visit_phi): Avoid using the exclusive
30820 backedge value for the result when using predication to
30821 prove equivalence.
30822
30823 2023-01-25 Richard Biener <rguenther@suse.de>
30824
30825 * doc/lto.texi (Command line options): Reword and update reference
30826 to removed lto_read_all_file_options.
30827
30828 2023-01-25 Richard Sandiford <richard.sandiford@arm.com>
30829
30830 * config/aarch64/aarch64.md (umax<mode>3): Separate the CNT and CSSC
30831 tests.
30832
30833 2023-01-25 Gerald Pfeifer <gerald@pfeifer.com>
30834
30835 * doc/contrib.texi: Add Jose E. Marchesi.
30836
30837 2023-01-25 Jakub Jelinek <jakub@redhat.com>
30838
30839 PR tree-optimization/108498
30840 * gimple-ssa-store-merging.cc (class store_operand_info):
30841 End coment with full stop rather than comma.
30842 (split_group): Likewise.
30843 (merged_store_group::apply_stores): Clear string_concatenation if
30844 start or end aren't on a byte boundary.
30845
30846 2023-01-25 Siddhesh Poyarekar <siddhesh@gotplt.org>
30847 Jakub Jelinek <jakub@redhat.com>
30848
30849 PR tree-optimization/108522
30850 * tree-object-size.cc (compute_object_offset): Use
30851 TREE_OPERAND(ref, 2) for COMPONENT_REF when available.
30852
30853 2023-01-24 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
30854
30855 * config/xtensa/xtensa.md:
30856 Fix exit from loops detecting references before overwriting in the
30857 split pattern.
30858
30859 2023-01-24 Vladimir N. Makarov <vmakarov@redhat.com>
30860
30861 * lra-constraints.cc (get_hard_regno): Remove final_p arg. Always
30862 do elimination but only for hard register.
30863 (operands_match_p, uses_hard_regs_p, process_alt_operands): Adjust
30864 calls of get_hard_regno.
30865
30866 2023-01-24 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
30867
30868 * config/s390/s390-d.cc (s390_d_target_versions): Fix detection
30869 of CPU version.
30870
30871 2023-01-24 Andre Vieira <andre.simoesdiasvieira@arm.com>
30872
30873 PR target/108177
30874 * config/arm/mve.md (mve_vstrbq_p_<supf><mode>, mve_vstrhq_p_fv8hf,
30875 mve_vstrhq_p_<supf><mode>, mve_vstrwq_p_<supf>v4si): Add memory operand
30876 as input operand.
30877
30878 2023-01-24 Xianmiao Qu <cooper.qu@linux.alibaba.com>
30879
30880 * config.gcc(csky-*-linux*): Define CSKY_ENABLE_MULTILIB
30881 and only include 'csky/t-csky-linux' when enable multilib.
30882 * config/csky/csky-linux-elf.h(SYSROOT_SUFFIX_SPEC): Don't
30883 define it when disable multilib.
30884
30885 2023-01-24 Richard Biener <rguenther@suse.de>
30886
30887 PR tree-optimization/108500
30888 * dominance.h (calculate_dominance_info): Add parameter
30889 to indicate fast-query compute, defaulted to true.
30890 * dominance.cc (calculate_dominance_info): Honor
30891 fast-query compute parameter.
30892 * tree-cfgcleanup.cc (cleanup_tree_cfg_noloop): Do
30893 not compute the dominator fast-query DFS numbers.
30894
30895 2023-01-24 Eric Biggers <ebiggers@google.com>
30896
30897 PR bootstrap/90543
30898 * optc-save-gen.awk: Fix copy-and-paste error.
30899
30900 2023-01-24 Jakub Jelinek <jakub@redhat.com>
30901
30902 PR c++/108474
30903 * cgraphbuild.cc: Include gimplify.h.
30904 (record_reference): Replace VAR_DECLs with DECL_HAS_VALUE_EXPR_P with
30905 their corresponding DECL_VALUE_EXPR expressions after unsharing.
30906
30907 2023-01-24 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
30908
30909 PR target/108505
30910 * config.gcc (tm_file): Move the variable out of loop.
30911
30912 2023-01-24 Lulu Cheng <chenglulu@loongson.cn>
30913 Yang Yujie <yangyujie@loongson.cn>
30914
30915 PR target/107731
30916 * config/loongarch/loongarch.cc (loongarch_classify_address):
30917 Add precessint for CONST_INT.
30918 (loongarch_print_operand_reloc): Operand modifier 'c' is supported.
30919 (loongarch_print_operand): Increase the processing of '%c'.
30920 * doc/extend.texi: Adds documents for LoongArch operand modifiers.
30921 And port the public operand modifiers information to this document.
30922
30923 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
30924
30925 * doc/invoke.texi (-mbranch-protection): Update documentation.
30926
30927 2023-01-23 Richard Biener <rguenther@suse.de>
30928
30929 PR target/55522
30930 * config/sparc/freebsd.h (ENDFILE_SPEC): Don't add crtfastmath.o
30931 for -shared.
30932 * config/sparc/linux.h (ENDFILE_SPEC): Likewise.
30933 * config/sparc/linux64.h (ENDFILE_SPEC): Likewise.
30934 * config/sparc/sp-elf.h (ENDFILE_SPEC): Likewise.
30935 * config/sparc/sp64-elf.h (ENDFILE_SPEC): Likewise.
30936
30937 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
30938
30939 * config/arm/aout.h (ra_auth_code): Add entry in enum.
30940 * config/arm/arm.cc (emit_multi_reg_push): Add RA_AUTH_CODE register
30941 to dwarf frame expression.
30942 (arm_emit_multi_reg_pop): Restore RA_AUTH_CODE register.
30943 (arm_expand_prologue): Update frame related information and reg notes
30944 for pac/pacbit insn.
30945 (arm_regno_class): Check for pac pseudo reigster.
30946 (arm_dbx_register_number): Assign ra_auth_code register number in dwarf.
30947 (arm_init_machine_status): Set pacspval_needed to zero.
30948 (arm_debugger_regno): Check for PAC register.
30949 (arm_unwind_emit_sequence): Print .save directive with ra_auth_code
30950 register.
30951 (arm_unwind_emit_set): Add entry for IP_REGNUM in switch case.
30952 (arm_unwind_emit): Update REG_CFA_REGISTER case._
30953 * config/arm/arm.h (FIRST_PSEUDO_REGISTER): Modify.
30954 (DWARF_PAC_REGNUM): Define.
30955 (IS_PAC_REGNUM): Likewise.
30956 (enum reg_class): Add PAC_REG entry.
30957 (machine_function): Add pacbti_needed state to structure.
30958 * config/arm/arm.md (RA_AUTH_CODE): Define.
30959
30960 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
30961
30962 * config.gcc ($tm_file): Update variable.
30963 * config/arm/arm-mlib.h: Create new header file.
30964 * config/arm/t-rmprofile (MULTI_ARCH_DIRS_RM): Rename mbranch-protection
30965 multilib arch directory.
30966 (MULTILIB_REUSE): Add multilib reuse rules.
30967 (MULTILIB_MATCHES): Add multilib match rules.
30968
30969 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
30970
30971 * config/arm/arm-cpus.in (cortex-m85): Define new CPU.
30972 * config/arm/arm-tables.opt: Regenerate.
30973 * config/arm/arm-tune.md: Likewise.
30974 * doc/invoke.texi (Arm Options): Document -mcpu=cortex-m85.
30975 * (-mfix-cmse-cve-2021-35465): Likewise.
30976
30977 2023-01-23 Richard Biener <rguenther@suse.de>
30978
30979 PR tree-optimization/108482
30980 * tree-vect-generic.cc (expand_vector_operations): Fold remaining
30981 .LOOP_DIST_ALIAS calls.
30982
30983 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
30984
30985 * config.gcc (arm*-*-*): Add 'aarch-bti-insert.o' object.
30986 * config/arm/arm-protos.h: Update.
30987 * config/arm/aarch-common-protos.h: Declare
30988 'aarch_bti_arch_check'.
30989 * config/arm/arm.cc (aarch_bti_enabled) Update.
30990 (aarch_bti_j_insn_p, aarch_pac_insn_p, aarch_gen_bti_c)
30991 (aarch_gen_bti_j, aarch_bti_arch_check): New functions.
30992 * config/arm/arm.md (bti_nop): New insn.
30993 * config/arm/t-arm (PASSES_EXTRA): Add 'arm-passes.def'.
30994 (aarch-bti-insert.o): New target.
30995 * config/arm/unspecs.md (VUNSPEC_BTI_NOP): New unspec.
30996 * config/arm/aarch-bti-insert.cc (rest_of_insert_bti): Verify arch
30997 compatibility.
30998 (gate): Make use of 'aarch_bti_arch_check'.
30999 * config/arm/arm-passes.def: New file.
31000 * config/aarch64/aarch64.cc (aarch_bti_arch_check): New function.
31001
31002 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
31003
31004 * config.gcc (aarch64*-*-*): Rename 'aarch64-bti-insert.o' into
31005 'aarch-bti-insert.o'.
31006 * config/aarch64/aarch64-protos.h: Remove 'aarch64_bti_enabled'
31007 proto.
31008 * config/aarch64/aarch64.cc (aarch_bti_enabled): Rename.
31009 (aarch_bti_j_insn_p, aarch_pac_insn_p): New functions.
31010 (aarch64_output_mi_thunk)
31011 (aarch64_print_patchable_function_entry)
31012 (aarch64_file_end_indicate_exec_stack): Update renamed function
31013 calls to renamed functions.
31014 * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Likewise.
31015 * config/aarch64/t-aarch64 (aarch-bti-insert.o): Update
31016 target.
31017 * config/aarch64/aarch64-bti-insert.cc: Delete.
31018 * config/arm/aarch-bti-insert.cc: New file including and
31019 generalizing code from aarch64-bti-insert.cc.
31020 * config/arm/aarch-common-protos.h: Update.
31021
31022 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
31023
31024 * config/arm/arm.h (arm_arch8m_main): Declare it.
31025 * config/arm/arm-protos.h (arm_current_function_pac_enabled_p):
31026 Declare it.
31027 * config/arm/arm.cc (arm_arch8m_main): Define it.
31028 (arm_option_reconfigure_globals): Set arm_arch8m_main.
31029 (arm_compute_frame_layout, arm_expand_prologue)
31030 (thumb2_expand_return, arm_expand_epilogue)
31031 (arm_conditional_register_usage): Update for pac codegen.
31032 (arm_current_function_pac_enabled_p): New function.
31033 (aarch_bti_enabled) New function.
31034 (use_return_insn): Return zero when pac is enabled.
31035 * config/arm/arm.md (pac_ip_lr_sp, pacbti_ip_lr_sp, aut_ip_lr_sp):
31036 Add new patterns.
31037 * config/arm/unspecs.md (UNSPEC_PAC_NOP)
31038 (VUNSPEC_PACBTI_NOP, VUNSPEC_AUT_NOP): Add unspecs.
31039
31040 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
31041
31042 * config/arm/t-rmprofile: Add multilib rules for march +pacbti and
31043 mbranch-protection.
31044
31045 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
31046 Tejas Belagod <tbelagod@arm.com>
31047
31048 * config/arm/arm.cc (arm_file_start): Emit EABI attributes for
31049 Tag_PAC_extension, Tag_BTI_extension, TAG_BTI_use, TAG_PACRET_use.
31050
31051 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
31052 Tejas Belagod <tbelagod@arm.com>
31053 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
31054
31055 * ginclude/unwind-arm-common.h (_Unwind_VRS_RegClass): Introduce
31056 new pseudo register class _UVRSC_PAC.
31057
31058 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
31059 Tejas Belagod <tbelagod@arm.com>
31060
31061 * config/arm/arm-c.cc (arm_cpu_builtins): Define
31062 __ARM_FEATURE_BTI_DEFAULT, __ARM_FEATURE_PAC_DEFAULT,
31063 __ARM_FEATURE_PAUTH and __ARM_FEATURE_BTI.
31064
31065 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
31066 Tejas Belagod <tbelagod@arm.com>
31067
31068 * doc/sourcebuild.texi: Document arm_pacbti_hw.
31069
31070 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
31071 Tejas Belagod <tbelagod@arm.com>
31072 Richard Earnshaw <Richard.Earnshaw@arm.com>
31073
31074 * config/arm/arm.cc (arm_configure_build_target): Parse and validate
31075 -mbranch-protection option and initialize appropriate data structures.
31076 * config/arm/arm.opt (-mbranch-protection): New option.
31077 * doc/invoke.texi (Arm Options): Document it.
31078
31079 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
31080 Tejas Belagod <tbelagod@arm.com>
31081
31082 * config/arm/arm.h (TARGET_HAVE_PACBTI): New macro.
31083 * config/arm/arm-cpus.in (pacbti): New feature.
31084 * doc/invoke.texi (Arm Options): Document it.
31085
31086 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
31087 Tejas Belagod <tbelagod@arm.com>
31088
31089 * common/config/aarch64/aarch64-common.cc: Include aarch-common.h.
31090 (all_architectures): Fix comment.
31091 (aarch64_parse_extension): Rename return type, enum value names.
31092 * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Rename
31093 factored out aarch_ra_sign_scope and aarch_ra_sign_key variables.
31094 Also rename corresponding enum values.
31095 * config/aarch64/aarch64-opts.h (aarch64_function_type): Factor
31096 out aarch64_function_type and move it to common code as
31097 aarch_function_type in aarch-common.h.
31098 * config/aarch64/aarch64-protos.h: Include common types header,
31099 move out types aarch64_parse_opt_result and aarch64_key_type to
31100 aarch-common.h
31101 * config/aarch64/aarch64.cc: Move mbranch-protection parsing types
31102 and functions out into aarch-common.h and aarch-common.cc. Fix up
31103 all the name changes resulting from the move.
31104 * config/aarch64/aarch64.md: Fix up aarch64_ra_sign_key type name change
31105 and enum value.
31106 * config/aarch64/aarch64.opt: Include aarch-common.h to import
31107 type move. Fix up name changes from factoring out common code and
31108 data.
31109 * config/arm/aarch-common-protos.h: Export factored out routines to both
31110 backends.
31111 * config/arm/aarch-common.cc: Include newly factored out types.
31112 Move all mbranch-protection code and data structures from
31113 aarch64.cc.
31114 * config/arm/aarch-common.h: New header that declares types shared
31115 between aarch32 and aarch64 backends.
31116 * config/arm/arm-protos.h: Declare types and variables that are
31117 made common to aarch64 and aarch32 backends - aarch_ra_sign_key,
31118 aarch_ra_sign_scope and aarch_enable_bti.
31119 * config/arm/arm.opt (config/arm/aarch-common.h): Include header.
31120 (aarch_ra_sign_scope, aarch_enable_bti): Declare variable.
31121 * config/arm/arm.cc: Add missing includes.
31122
31123 2023-01-23 Tobias Burnus <tobias@codesourcery.com>
31124
31125 * doc/install.texi (amdgcn, nvptx): Require newlib 4.3.0.
31126
31127 2023-01-23 Richard Biener <rguenther@suse.de>
31128
31129 PR tree-optimization/108449
31130 * cgraphunit.cc (check_global_declaration): Do not turn
31131 undefined statics into externs.
31132
31133 2023-01-22 Dimitar Dimitrov <dimitar@dinux.eu>
31134
31135 * config/pru/pru.h (CLZ_DEFINED_VALUE_AT_ZERO): Fix value for QI
31136 and HI input modes.
31137 * config/pru/pru.md (clz): Fix generated code for QI and HI
31138 input modes.
31139
31140 2023-01-22 Cupertino Miranda <cupertino.miranda@oracle.com>
31141
31142 * config/v850/v850.cc (v850_select_section): Put const volatile
31143 objects into read-only sections.
31144
31145 2023-01-20 Tejas Belagod <tejas.belagod@arm.com>
31146
31147 * config/aarch64/arm_neon.h (vmull_p64, vmull_high_p64, vaeseq_u8,
31148 vaesdq_u8, vaesmcq_u8, vaesimcq_u8): Gate under "nothing+aes".
31149 (vsha1*_u32, vsha256*_u32): Gate under "nothing+sha2".
31150
31151 2023-01-20 Jakub Jelinek <jakub@redhat.com>
31152
31153 PR tree-optimization/108457
31154 * tree-ssa-loop-niter.cc (build_cltz_expr): Use
31155 SCALAR_INT_TYPE_MODE (utype) directly as C[LT]Z_DEFINED_VALUE_AT_ZERO
31156 argument instead of a temporary. Formatting fixes.
31157
31158 2023-01-19 Jakub Jelinek <jakub@redhat.com>
31159
31160 PR tree-optimization/108447
31161 * value-relation.cc (rr_union_table): Fix VREL_UNDEFINED row order.
31162 (relation_tests): Add self-tests for relation_{intersect,union}
31163 commutativity.
31164 * selftest.h (relation_tests): Declare.
31165 * function-tests.cc (test_ranges): Call it.
31166
31167 2023-01-19 H.J. Lu <hjl.tools@gmail.com>
31168
31169 PR target/108436
31170 * config/i386/i386-expand.cc (ix86_expand_builtin): Check
31171 invalid third argument to __builtin_ia32_prefetch.
31172
31173 2023-01-19 Jakub Jelinek <jakub@redhat.com>
31174
31175 PR middle-end/108459
31176 * omp-expand.cc (expand_omp_for_init_counts): Use fold_build1 rather
31177 than fold_unary for NEGATE_EXPR.
31178
31179 2023-01-19 Christophe Lyon <christophe.lyon@arm.com>
31180
31181 PR target/108411
31182 * config/aarch64/aarch64.cc (aarch64_layout_arg): Improve
31183 comment. Move assert about alignment a bit later.
31184
31185 2023-01-19 Jakub Jelinek <jakub@redhat.com>
31186
31187 PR tree-optimization/108440
31188 * tree-ssa-forwprop.cc: Include gimple-range.h.
31189 (simplify_rotate): For the forms with T2 wider than T and shift counts of
31190 Y and B - Y add & (B - 1) masking for the rotate count if Y could be equal
31191 to B. For the forms with T2 wider than T and shift counts of
31192 Y and (-Y) & (B - 1), don't punt if range could be [B, B2], but only if
31193 range doesn't guarantee Y < B or Y = N * B. If range doesn't guarantee
31194 Y < B, also add & (B - 1) masking for the rotate count. Use lazily created
31195 pass specific ranger instead of get_global_range_query.
31196 (pass_forwprop::execute): Disable that ranger at the end of pass if it has
31197 been created.
31198
31199 2023-01-19 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
31200
31201 * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set<mode>): Use
31202 exact_log2 (INTVAL (operands[2])) >= 0 as condition for gating
31203 the pattern.
31204 (aarch64_simd_vec_copy_lane<mode>): Likewise.
31205 (aarch64_simd_vec_copy_lane_<vswap_width_name><mode>): Likewise.
31206
31207 2023-01-19 Alexandre Oliva <oliva@adacore.com>
31208
31209 PR debug/106746
31210 * sched-deps.cc (sched_analyze_2): Skip cselib address lookup
31211 within debug insns.
31212
31213 2023-01-18 Martin Jambor <mjambor@suse.cz>
31214
31215 PR ipa/107944
31216 * cgraph.cc (cgraph_node::remove): Check whether nodes up the
31217 lcone_of chain also do not need the body.
31218
31219 2023-01-18 Richard Biener <rguenther@suse.de>
31220
31221 Revert:
31222 2022-12-16 Richard Biener <rguenther@suse.de>
31223
31224 PR middle-end/108086
31225 * tree-inline.cc (remap_ssa_name): Do not unshare the
31226 result from the decl_map.
31227
31228 2023-01-18 Murray Steele <murray.steele@arm.com>
31229
31230 PR target/108442
31231 * config/arm/arm_mve.h (__arm_vst1q_p_u8): Use prefixed intrinsic
31232 function.
31233 (__arm_vst1q_p_s8): Likewise.
31234 (__arm_vld1q_z_u8): Likewise.
31235 (__arm_vld1q_z_s8): Likewise.
31236 (__arm_vst1q_p_u16): Likewise.
31237 (__arm_vst1q_p_s16): Likewise.
31238 (__arm_vld1q_z_u16): Likewise.
31239 (__arm_vld1q_z_s16): Likewise.
31240 (__arm_vst1q_p_u32): Likewise.
31241 (__arm_vst1q_p_s32): Likewise.
31242 (__arm_vld1q_z_u32): Likewise.
31243 (__arm_vld1q_z_s32): Likewise.
31244 (__arm_vld1q_z_f16): Likewise.
31245 (__arm_vst1q_p_f16): Likewise.
31246 (__arm_vld1q_z_f32): Likewise.
31247 (__arm_vst1q_p_f32): Likewise.
31248
31249 2023-01-18 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
31250
31251 * config/xtensa/xtensa.md (xorsi3_internal):
31252 Rename from the original of "xorsi3".
31253 (xorsi3): New expansion pattern that emits addition rather than
31254 bitwise-XOR when the second source is a constant of -2147483648
31255 if TARGET_DENSITY.
31256
31257 2023-01-18 Kewen Lin <linkw@linux.ibm.com>
31258 Andrew Pinski <apinski@marvell.com>
31259
31260 PR target/108396
31261 * config/rs6000/rs6000-overload.def (VEC_VSUBCUQ): Fix typo
31262 vec_vsubcuqP with vec_vsubcuq.
31263
31264 2023-01-18 Kewen Lin <linkw@linux.ibm.com>
31265
31266 PR target/108348
31267 * config/rs6000/rs6000.cc (rs6000_opaque_type_invalid_use_p): Add the
31268 support for invalid uses of MMA opaque type in function arguments.
31269
31270 2023-01-18 liuhongt <hongtao.liu@intel.com>
31271
31272 PR target/55522
31273 * config/i386/cygwin.h (ENDFILE_SPEC): Link crtfastmath.o
31274 whenever -mdaz-ftz is specified. Don't link crtfastmath.o when
31275 -share or -mno-daz-ftz is specified.
31276 * config/i386/darwin.h (ENDFILE_SPEC): Ditto.
31277 * config/i386/mingw32.h (ENDFILE_SPEC): Ditto.
31278
31279 2023-01-17 Jose E. Marchesi <jose.marchesi@oracle.com>
31280
31281 * config/bpf/bpf.cc (bpf_option_override): Disable
31282 -fstack-protector.
31283
31284 2023-01-17 Jakub Jelinek <jakub@redhat.com>
31285
31286 PR tree-optimization/106523
31287 * tree-ssa-forwprop.cc (simplify_rotate): For the
31288 patterns with (-Y) & (B - 1) in one operand's shift
31289 count and Y in another, if T2 has wider precision than T,
31290 punt if Y could have a value in [B, B2 - 1] range.
31291
31292 2023-01-16 H.J. Lu <hjl.tools@gmail.com>
31293
31294 PR target/105980
31295 * config/i386/i386.cc (x86_output_mi_thunk): Disable
31296 -mforce-indirect-call for PIC in 32-bit mode.
31297
31298 2023-01-16 Jan Hubicka <hubicka@ucw.cz>
31299
31300 PR ipa/106077
31301 * ipa-modref.cc (modref_access_analysis::analyze): Use
31302 find_always_executed_bbs.
31303 * ipa-sra.cc (process_scan_results): Likewise.
31304 * ipa-utils.cc (stmt_may_terminate_function_p): New function.
31305 (find_always_executed_bbs): New function.
31306 * ipa-utils.h (stmt_may_terminate_function_p): Declare.
31307 (find_always_executed_bbs): Declare.
31308
31309 2023-01-16 Jan Hubicka <jh@suse.cz>
31310
31311 * config/i386/i386.cc (ix86_vectorize_builtin_scatter): Guard scatter
31312 by TARGET_USE_SCATTER.
31313 * config/i386/i386.h (TARGET_USE_SCATTER_2PARTS,
31314 TARGET_USE_SCATTER_4PARTS, TARGET_USE_SCATTER): New macros.
31315 * config/i386/x86-tune.def (TARGET_USE_SCATTER_2PARTS,
31316 TARGET_USE_SCATTER_4PARTS, TARGET_USE_SCATTER): New tunes.
31317 (X86_TUNE_AVOID_256FMA_CHAINS, X86_TUNE_AVOID_512FMA_CHAINS): Disable
31318 for znver4. (X86_TUNE_USE_GATHER): Disable for zen4.
31319
31320 2023-01-16 Richard Biener <rguenther@suse.de>
31321
31322 PR target/55522
31323 * config/sol2.h (ENDFILE_SPEC): Don't add crtfastmath.o for -shared.
31324
31325 2023-01-16 Stam Markianos-Wright <stam.markianos-wright@arm.com>
31326
31327 PR target/96795
31328 PR target/107515
31329 * config/arm/arm_mve.h (__ARM_mve_coerce2): Split types.
31330 (__ARM_mve_coerce3): Likewise.
31331
31332 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
31333
31334 * tree-ssa-loop-niter.cc (build_popcount_expr): Add IFN support.
31335
31336 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
31337
31338 * tree-ssa-loop-niter.cc (number_of_iterations_cltz): New.
31339 (number_of_iterations_bitcount): Add call to the above.
31340 (number_of_iterations_exit_assumptions): Add EQ_EXPR case for
31341 c[lt]z idiom recognition.
31342
31343 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
31344
31345 * doc/sourcebuild.texi: Add missing target attributes.
31346
31347 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
31348
31349 PR tree-optimization/94793
31350 * tree-scalar-evolution.cc (expression_expensive_p): Add checks
31351 for c[lt]z optabs.
31352 * tree-ssa-loop-niter.cc (build_cltz_expr): New.
31353 (number_of_iterations_cltz_complement): New.
31354 (number_of_iterations_bitcount): Add call to the above.
31355
31356 2023-01-16 Jonathan Wakely <jwakely@redhat.com>
31357
31358 * doc/extend.texi (Common Function Attributes): Fix grammar.
31359
31360 2023-01-16 Jakub Jelinek <jakub@redhat.com>
31361
31362 PR other/108413
31363 * config/riscv/riscv-vsetvl.h: Add space in between Copyright and (C).
31364 * config/riscv/riscv-vsetvl.cc: Likewise.
31365
31366 2023-01-16 Jakub Jelinek <jakub@redhat.com>
31367
31368 PR c++/105593
31369 * config/i386/xmmintrin.h (_mm_undefined_ps): Temporarily
31370 disable -Winit-self using pragma GCC diagnostic ignored.
31371 * config/i386/emmintrin.h (_mm_undefined_pd, _mm_undefined_si128):
31372 Likewise.
31373 * config/i386/avxintrin.h (_mm256_undefined_pd, _mm256_undefined_ps,
31374 _mm256_undefined_si256): Likewise.
31375 * config/i386/avx512fintrin.h (_mm512_undefined_pd,
31376 _mm512_undefined_ps, _mm512_undefined_epi32): Likewise.
31377 * config/i386/avx512fp16intrin.h (_mm_undefined_ph,
31378 _mm256_undefined_ph, _mm512_undefined_ph): Likewise.
31379
31380 2023-01-16 Kewen Lin <linkw@linux.ibm.com>
31381
31382 PR target/108272
31383 * config/rs6000/rs6000.cc (rs6000_opaque_type_invalid_use_p): Add the
31384 support for invalid uses in inline asm, factor out the checking and
31385 erroring to lambda function check_and_error_invalid_use.
31386
31387 2023-01-15 Aldy Hernandez <aldyh@redhat.com>
31388
31389 PR tree-optimization/107608
31390 * range-op-float.cc (range_operator_float::fold_range): Avoid
31391 folding into INF when flag_trapping_math.
31392 * value-range.h (frange::known_isinf): Return false for possible NANs.
31393
31394 2023-01-15 Xianmiao Qu <cooper.qu@linux.alibaba.com>
31395
31396 * config.gcc (csky-*-*): Support --with-float=softfp.
31397
31398 2023-01-14 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
31399
31400 * config/xtensa/xtensa-protos.h (order_regs_for_local_alloc):
31401 Rename to xtensa_adjust_reg_alloc_order.
31402 * config/xtensa/xtensa.cc (xtensa_adjust_reg_alloc_order):
31403 Ditto. And also remove code to reorder register numbers for
31404 leaf functions, rename the tables, and adjust the allocation
31405 order for the call0 ABI to use register A0 more.
31406 (xtensa_leaf_regs): Remove.
31407 * config/xtensa/xtensa.h (REG_ALLOC_ORDER): Cosmetics.
31408 (order_regs_for_local_alloc): Rename as the above.
31409 (LEAF_REGISTERS, LEAF_REG_REMAP, leaf_function): Remove.
31410
31411 2023-01-14 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
31412
31413 * config/aarch64/aarch64-sve.md (aarch64_vec_duplicate_vq<mode>_le):
31414 Change to define_insn_and_split to fold ldr+dup to ld1rq.
31415 * config/aarch64/predicates.md (aarch64_sve_dup_ld1rq_operand): New.
31416
31417 2023-01-14 Alexandre Oliva <oliva@adacore.com>
31418
31419 * hash-table.h (is_deleted): Precheck !is_empty.
31420 (mark_deleted): Postcheck !is_empty.
31421 (copy constructor): Test is_empty before is_deleted.
31422
31423 2023-01-14 Alexandre Oliva <oliva@adacore.com>
31424
31425 PR target/40457
31426 * config/arm/arm.md (movmisaligndi): Prefer aligned SImode
31427 moves.
31428
31429 2023-01-13 Eric Botcazou <ebotcazou@adacore.com>
31430
31431 PR rtl-optimization/108274
31432 * function.cc (thread_prologue_and_epilogue_insns): Also update the
31433 DF information for calls in a few more cases.
31434
31435 2023-01-13 John David Anglin <danglin@gcc.gnu.org>
31436
31437 * config/pa/pa-linux.h (TARGET_SYNC_LIBCALL): Delete define.
31438 * config/pa/pa.cc (pa_init_libfuncs): Use MAX_SYNC_LIBFUNC_SIZE
31439 define.
31440 * config/pa/pa.h (TARGET_SYNC_LIBCALLS): Use flag_sync_libcalls.
31441 (MAX_SYNC_LIBFUNC_SIZE): Define.
31442 (TARGET_CPU_CPP_BUILTINS): Define __SOFTFP__ when soft float is
31443 enabled.
31444 * config/pa/pa.md (atomic_storeqi): Emit __atomic_exchange_1
31445 libcall when sync libcalls are disabled.
31446 (atomic_storehi, atomic_storesi, atomic_storedi): Likewise.
31447 (atomic_loaddi): Emit __atomic_load_8 libcall when sync libcalls
31448 are disabled on 32-bit target.
31449 * config/pa/pa.opt (matomic-libcalls): New option.
31450 * doc/invoke.texi (HPPA Options): Update.
31451
31452 2023-01-13 Alexander Monakov <amonakov@ispras.ru>
31453
31454 PR rtl-optimization/108117
31455 PR rtl-optimization/108132
31456 * sched-deps.cc (deps_analyze_insn): Do not schedule across
31457 calls before reload.
31458
31459 2023-01-13 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
31460
31461 * common/config/arm/arm-common.cc (arm_canon_arch_option_1): Ignore cde
31462 options for -mlibarch.
31463 * config/arm/arm-cpus.in (begin cpu cortex-m55): Add cde options.
31464 * doc/invoke.texi (CDE): Document options for Cortex-M55 CPU.
31465
31466 2023-01-13 Qing Zhao <qing.zhao@oracle.com>
31467
31468 * attribs.cc (strict_flex_array_level_of): Move this function to ...
31469 * attribs.h (strict_flex_array_level_of): Remove the declaration.
31470 * gimple-array-bounds.cc (array_bounds_checker::check_array_ref):
31471 replace the referece to strict_flex_array_level_of with
31472 DECL_NOT_FLEXARRAY.
31473 * tree.cc (component_ref_size): Likewise.
31474
31475 2023-01-13 Richard Biener <rguenther@suse.de>
31476
31477 PR target/55522
31478 * config/arm/linux-eabi.h (ENDFILE_SPEC): Don't add
31479 crtfastmath.o for -shared.
31480 * config/arm/unknown-elf.h (STARTFILE_SPEC): Likewise.
31481
31482 2023-01-13 Richard Biener <rguenther@suse.de>
31483
31484 PR target/55522
31485 * config/aarch64/aarch64-elf-raw.h (ENDFILE_SPEC): Don't add
31486 crtfastmath.o for -shared.
31487 * config/aarch64/aarch64-freebsd.h (GNU_USER_TARGET_MATHFILE_SPEC):
31488 Likewise.
31489 * config/aarch64/aarch64-linux.h (GNU_USER_TARGET_MATHFILE_SPEC):
31490 Likewise.
31491
31492 2023-01-13 Richard Sandiford <richard.sandiford@arm.com>
31493
31494 * config/aarch64/aarch64.cc (aarch64_dwarf_frame_reg_mode): New
31495 function.
31496 (TARGET_DWARF_FRAME_REG_MODE): Define.
31497
31498 2023-01-13 Richard Biener <rguenther@suse.de>
31499
31500 PR target/107209
31501 * config/aarch64/aarch64.cc (aarch64_gimple_fold_builtin): Don't
31502 update EH info on the fly.
31503
31504 2023-01-13 Richard Biener <rguenther@suse.de>
31505
31506 PR tree-optimization/108387
31507 * tree-ssa-sccvn.cc (visit_nary_op): Check for SSA_NAME
31508 value before inserting expression into the tables.
31509
31510 2023-01-12 Andrew Pinski <apinski@marvell.com>
31511 Roger Sayle <roger@nextmovesoftware.com>
31512
31513 PR tree-optimization/92342
31514 * match.pd ((m1 CMP m2) * d -> (m1 CMP m2) ? d : 0):
31515 Use tcc_comparison and :c for the multiply.
31516 (b & -(a CMP c) -> (a CMP c)?b:0): New pattern.
31517
31518 2023-01-12 Christophe Lyon <christophe.lyon@arm.com>
31519 Richard Sandiford <richard.sandiford@arm.com>
31520
31521 PR target/105549
31522 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment):
31523 Check DECL_PACKED for bitfield.
31524 (aarch64_layout_arg): Warn when parameter passing ABI changes.
31525 (aarch64_function_arg_boundary): Do not warn here.
31526 (aarch64_gimplify_va_arg_expr): Warn when parameter passing ABI
31527 changes.
31528
31529 2023-01-12 Christophe Lyon <christophe.lyon@arm.com>
31530 Richard Sandiford <richard.sandiford@arm.com>
31531
31532 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Fix
31533 comment.
31534 (aarch64_layout_arg): Factorize warning conditions.
31535 (aarch64_function_arg_boundary): Fix typo.
31536 * function.cc (currently_expanding_function_start): New variable.
31537 (expand_function_start): Handle
31538 currently_expanding_function_start.
31539 * function.h (currently_expanding_function_start): Declare.
31540
31541 2023-01-12 Richard Biener <rguenther@suse.de>
31542
31543 PR tree-optimization/99412
31544 * tree-ssa-reassoc.cc (is_phi_for_stmt): Remove.
31545 (swap_ops_for_binary_stmt): Remove reduction handling.
31546 (rewrite_expr_tree_parallel): Adjust.
31547 (reassociate_bb): Likewise.
31548 * tree-parloops.cc (build_new_reduction): Handle MINUS_EXPR.
31549
31550 2023-01-12 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
31551
31552 * config/xtensa/xtensa.md (ctzsi2, ffssi2):
31553 Rearrange the emitting codes.
31554
31555 2023-01-12 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
31556
31557 * config/xtensa/xtensa.md (*btrue):
31558 Correct value of the attribute "length" that depends on
31559 TARGET_DENSITY and operands, and add '?' character to the register
31560 constraint of the compared operand.
31561
31562 2023-01-12 Alexandre Oliva <oliva@adacore.com>
31563
31564 * hash-table.h (expand): Check elements and deleted counts.
31565 (verify): Likewise.
31566
31567 2023-01-11 Roger Sayle <roger@nextmovesoftware.com>
31568
31569 PR tree-optimization/71343
31570 * tree-ssa-sccvn.cc (visit_nary_op) <case LSHIFT_EXPR>: Make
31571 the value number of the expression X << C the same as the value
31572 number for the multiplication X * (1<<C).
31573
31574 2023-01-11 David Faust <david.faust@oracle.com>
31575
31576 PR target/108293
31577 * config/bpf/bpf.cc (bpf_print_operand): Correct handling for
31578 floating point modes.
31579
31580 2023-01-11 Eric Botcazou <ebotcazou@adacore.com>
31581
31582 PR tree-optimization/108199
31583 * tree-sra.cc (sra_modify_expr): Deal with reverse storage order
31584 for bit-field references.
31585
31586 2023-01-11 Kewen Lin <linkw@linux.ibm.com>
31587
31588 * config/rs6000/rs6000.cc (rs6000_option_override_internal): Make
31589 OPTION_MASK_P10_FUSION implicit setting honour Power10 tuning setting.
31590 * config/rs6000/rs6000-cpus.def (ISA_3_1_MASKS_SERVER): Remove
31591 OPTION_MASK_P10_FUSION.
31592
31593 2023-01-11 Richard Biener <rguenther@suse.de>
31594
31595 PR tree-optimization/107767
31596 * tree-cfgcleanup.cc (phi_alternatives_equal): Export.
31597 * tree-cfgcleanup.h (phi_alternatives_equal): Declare.
31598 * tree-switch-conversion.cc (switch_conversion::collect):
31599 Count unique non-default targets accounting for later
31600 merging opportunities.
31601
31602 2023-01-11 Martin Liska <mliska@suse.cz>
31603
31604 PR middle-end/107976
31605 * params.opt: Limit JT params.
31606 * stmt.cc (emit_case_dispatch_table): Use auto_vec.
31607
31608 2023-01-11 Richard Biener <rguenther@suse.de>
31609
31610 PR tree-optimization/108352
31611 * tree-ssa-threadbackward.cc
31612 (back_threader_profitability::profitable_path_p): Adjust
31613 heuristic that allows non-multi-way branch threads creating
31614 irreducible loops.
31615 * doc/invoke.texi (--param fsm-scale-path-blocks): Remove.
31616 (--param fsm-scale-path-stmts): Adjust.
31617 * params.opt (--param=fsm-scale-path-blocks=): Remove.
31618 (-param=fsm-scale-path-stmts=): Adjust description.
31619
31620 2023-01-11 Richard Biener <rguenther@suse.de>
31621
31622 PR tree-optimization/108353
31623 * tree-ssa-propagate.cc (cfg_blocks_back, ssa_edge_worklist_back):
31624 Remove.
31625 (add_ssa_edge): Simplify.
31626 (add_control_edge): Likewise.
31627 (ssa_prop_init): Likewise.
31628 (ssa_prop_fini): Likewise.
31629 (ssa_propagation_engine::ssa_propagate): Likewise.
31630
31631 2023-01-11 Andreas Krebbel <krebbel@linux.ibm.com>
31632
31633 * config/s390/s390.md (*not<mode>): New pattern.
31634
31635 2023-01-11 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
31636
31637 * config/xtensa/xtensa.cc (xtensa_insn_cost):
31638 Let insn cost for size be obtained by applying COSTS_N_INSNS()
31639 to instruction length and then dividing by 3.
31640
31641 2023-01-10 Richard Biener <rguenther@suse.de>
31642
31643 PR tree-optimization/106293
31644 * tree-ssa-dse.cc (dse_classify_store): Use a worklist to
31645 process degenerate PHI defs.
31646
31647 2023-01-10 Roger Sayle <roger@nextmovesoftware.com>
31648
31649 PR rtl-optimization/106421
31650 * cprop.cc (bypass_block): Check that DEST is local to this
31651 function (non-NULL) before calling find_edge.
31652
31653 2023-01-10 Martin Jambor <mjambor@suse.cz>
31654
31655 PR ipa/108110
31656 * ipa-param-manipulation.h (ipa_param_body_adjustments): New members
31657 sort_replacements, lookup_first_base_replacement and
31658 m_sorted_replacements_p.
31659 * ipa-param-manipulation.cc: Define INCLUDE_ALGORITHM.
31660 (ipa_param_body_adjustments::register_replacement): Set
31661 m_sorted_replacements_p to false.
31662 (compare_param_body_replacement): New function.
31663 (ipa_param_body_adjustments::sort_replacements): Likewise.
31664 (ipa_param_body_adjustments::common_initialization): Call
31665 sort_replacements.
31666 (ipa_param_body_adjustments::ipa_param_body_adjustments): Initialize
31667 m_sorted_replacements_p.
31668 (ipa_param_body_adjustments::lookup_replacement_1): Rework to use
31669 std::lower_bound.
31670 (ipa_param_body_adjustments::lookup_first_base_replacement): New
31671 function.
31672 (ipa_param_body_adjustments::modify_call_stmt): Use
31673 lookup_first_base_replacement.
31674 * omp-simd-clone.cc (ipa_simd_modify_function_body): Call
31675 adjustments->sort_replacements.
31676
31677 2023-01-10 Richard Biener <rguenther@suse.de>
31678
31679 PR tree-optimization/108314
31680 * tree-vect-stmts.cc (vectorizable_condition): Do not
31681 perform BIT_NOT_EXPR optimization for EXTRACT_LAST_REDUCTION.
31682
31683 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
31684
31685 * config/csky/csky-linux-elf.h (SYSROOT_SUFFIX_SPEC): New.
31686
31687 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
31688
31689 * config/csky/csky.h (MULTILIB_DEFAULTS): Fix float abi option.
31690
31691 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
31692
31693 * config/csky/csky.cc (csky_cpu_cpp_builtins): Add builtin
31694 defines for soft float abi.
31695
31696 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
31697
31698 * config/csky/csky.md (smart_bseti): Change condition to CSKY_ISA_FEATURE (E1).
31699 (smart_bclri): Likewise.
31700 (fast_bseti): Change condition to CSKY_ISA_FEATURE (E2).
31701 (fast_bclri): Likewise.
31702 (fast_cmpnesi_i): Likewise.
31703 (*fast_cmpltsi_i): Likewise.
31704 (*fast_cmpgeusi_i): Likewise.
31705
31706 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
31707
31708 * config/csky/csky_insn_fpuv3.md (l<frm_pattern><fixsuop><mode>si2): Test
31709 flag_fp_int_builtin_inexact || !flag_trapping_math.
31710 (<frm_pattern><mode>2): Likewise.
31711
31712 2023-01-10 Andreas Krebbel <krebbel@linux.ibm.com>
31713
31714 * config/s390/s390.cc (s390_register_info): Check call_used_regs
31715 instead of hard-coding the register numbers for call saved
31716 registers.
31717 (s390_optimize_register_info): Likewise.
31718
31719 2023-01-09 Eric Botcazou <ebotcazou@adacore.com>
31720
31721 * doc/gm2.texi (Overview): Fix @node markers.
31722 (Using): Likewise. Remove subsections that were moved to Overview
31723 from the menu and move others around.
31724
31725 2023-01-09 Richard Biener <rguenther@suse.de>
31726
31727 PR middle-end/108209
31728 * genmatch.cc (commutative_op): Fix return value for
31729 user-id with non-commutative first replacement.
31730
31731 2023-01-09 Jakub Jelinek <jakub@redhat.com>
31732
31733 PR target/107453
31734 * calls.cc (expand_call): For calls with
31735 TYPE_NO_NAMED_ARGS_STDARG_P (funtype) use zero for n_named_args.
31736 Formatting fix.
31737
31738 2023-01-09 Richard Biener <rguenther@suse.de>
31739
31740 PR middle-end/69482
31741 * cfgexpand.cc (discover_nonconstant_array_refs_r): Volatile
31742 qualified accesses also force objects to memory.
31743
31744 2023-01-09 Martin Liska <mliska@suse.cz>
31745
31746 PR lto/108330
31747 * lto-cgraph.cc (compute_ltrans_boundary): Do not insert
31748 NULL (deleleted value) to a hash_set.
31749
31750 2023-01-08 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
31751
31752 * config/xtensa/xtensa.md (*splice_bits):
31753 New insn_and_split pattern.
31754
31755 2023-01-07 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
31756
31757 * config/xtensa/xtensa.cc
31758 (xtensa_split_imm_two_addends, xtensa_emit_add_imm):
31759 New helper functions.
31760 (xtensa_set_return_address, xtensa_output_mi_thunk):
31761 Change to use the helper function.
31762 (xtensa_emit_adjust_stack_ptr): Ditto.
31763 And also change to try reusing the content of scratch register
31764 A9 if the register is not modified in the function body.
31765
31766 2023-01-07 LIU Hao <lh_mouse@126.com>
31767
31768 PR middle-end/108300
31769 * config/xtensa/xtensa-dynconfig.c: Define `WIN32_LEAN_AND_MEAN`
31770 before <windows.h>.
31771 * diagnostic-color.cc: Likewise.
31772 * plugin.cc: Likewise.
31773 * prefix.cc: Likewise.
31774
31775 2023-01-06 Joseph Myers <joseph@codesourcery.com>
31776
31777 * doc/extend.texi (__builtin_tgmath): Do not restate standard rule
31778 for handling real integer types.
31779
31780 2023-01-06 Tamar Christina <tamar.christina@arm.com>
31781
31782 Revert:
31783 2022-12-12 Tamar Christina <tamar.christina@arm.com>
31784
31785 * config/aarch64/aarch64-simd.md (*aarch64_simd_movv2hf): New.
31786 (mov<mode>, movmisalign<mode>, aarch64_dup_lane<mode>,
31787 aarch64_store_lane0<mode>, aarch64_simd_vec_set<mode>,
31788 @aarch64_simd_vec_copy_lane<mode>, vec_set<mode>,
31789 reduc_<optab>_scal_<mode>, reduc_<fmaxmin>_scal_<mode>,
31790 aarch64_reduc_<optab>_internal<mode>, aarch64_get_lane<mode>,
31791 vec_init<mode><Vel>, vec_extract<mode><Vel>): Support V2HF.
31792 (aarch64_simd_dupv2hf): New.
31793 * config/aarch64/aarch64.cc (aarch64_classify_vector_mode):
31794 Add E_V2HFmode.
31795 * config/aarch64/iterators.md (VHSDF_P): New.
31796 (V2F, VMOVE, nunits, Vtype, Vmtype, Vetype, stype, VEL,
31797 Vel, q, vp): Add V2HF.
31798 * config/arm/types.md (neon_fp_reduc_add_h): New.
31799
31800 2023-01-06 Martin Liska <mliska@suse.cz>
31801
31802 PR middle-end/107966
31803 * doc/options.texi: Fix Var documentation in internal manual.
31804
31805 2023-01-05 Roger Sayle <roger@nextmovesoftware.com>
31806
31807 Revert:
31808 2023-01-03 Roger Sayle <roger@nextmovesoftware.com>
31809
31810 * config/i386/i386-expand.cc (ix86_expand_int_movcc): Rewrite
31811 RTL expansion to allow condition (mask) to be shared/reused,
31812 by avoiding overwriting pseudos and adding REG_EQUAL notes.
31813
31814 2023-01-05 Iain Sandoe <iain@sandoe.co.uk>
31815
31816 * common.opt: Add -static-libgm2.
31817 * config/darwin.h (LINK_SPEC): Handle static-libgm2.
31818 * doc/gm2.texi: Document static-libgm2.
31819 * gcc.cc (driver_handle_option): Allow static-libgm2.
31820
31821 2023-01-05 Tejas Joshi <TejasSanjay.Joshi@amd.com>
31822
31823 * common/config/i386/i386-common.cc (processor_alias_table):
31824 Use CPU_ZNVER4 for znver4.
31825 * config/i386/i386.md: Add znver4.md.
31826 * config/i386/znver4.md: New.
31827
31828 2023-01-04 Jakub Jelinek <jakub@redhat.com>
31829
31830 PR tree-optimization/108253
31831 * tree-vrp.cc (maybe_set_nonzero_bits): Handle var with pointer
31832 types.
31833
31834 2023-01-04 Jakub Jelinek <jakub@redhat.com>
31835
31836 PR middle-end/108237
31837 * generic-match-head.cc: Include tree-pass.h.
31838 (canonicalize_math_p, optimize_vectors_before_lowering_p): Define
31839 to false if cfun and cfun->curr_properties has PROP_gimple_opt_math
31840 resp. PROP_gimple_lvec property set.
31841
31842 2023-01-04 Jakub Jelinek <jakub@redhat.com>
31843
31844 PR sanitizer/108256
31845 * convert.cc (do_narrow): Punt for MULT_EXPR if original
31846 type doesn't wrap around and -fsanitize=signed-integer-overflow
31847 is on.
31848 * fold-const.cc (fold_unary_loc) <CASE_CONVERT>: Likewise.
31849
31850 2023-01-04 Hu, Lin1 <lin1.hu@intel.com>
31851
31852 * common/config/i386/cpuinfo.h (get_intel_cpu): Handle Emeraldrapids.
31853 * common/config/i386/i386-common.cc: Add Emeraldrapids.
31854
31855 2023-01-04 Hu, Lin1 <lin1.hu@intel.com>
31856
31857 * common/config/i386/cpuinfo.h (get_intel_cpu): Remove case 0xb5
31858 for meteorlake.
31859
31860 2023-01-03 Sandra Loosemore <sandra@codesourcery.com>
31861
31862 * cgraph.h (struct cgraph_node): Add gc_candidate bit, modify
31863 default constructor to initialize it.
31864 * cgraphunit.cc (expand_all_functions): Save gc_candidate functions
31865 for last and iterate to handle recursive calls. Delete leftover
31866 candidates at the end.
31867 * omp-simd-clone.cc (simd_clone_create): Set gc_candidate bit
31868 on local clones.
31869 * tree-vect-stmts.cc (vectorizable_simd_clone_call): Clear
31870 gc_candidate bit when a clone is used.
31871
31872 2023-01-03 Florian Weimer <fweimer@redhat.com>
31873
31874 Revert:
31875 2023-01-02 Florian Weimer <fweimer@redhat.com>
31876
31877 * dwarf2cfi.cc (init_return_column_size): Remove.
31878 (init_one_dwarf_reg_size): Adjust.
31879 (generate_dwarf_reg_sizes): New function. Extracted
31880 from expand_builtin_init_dwarf_reg_sizes.
31881 (expand_builtin_init_dwarf_reg_sizes): Call
31882 generate_dwarf_reg_sizes.
31883 * target.def (init_dwarf_reg_sizes_extra): Adjust
31884 hook signature.
31885 * config/msp430/msp430.cc
31886 (msp430_init_dwarf_reg_sizes_extra): Adjust.
31887 * config/rs6000/rs6000.cc
31888 (rs6000_init_dwarf_reg_sizes_extra): Likewise.
31889 * doc/tm.texi: Update.
31890
31891 2023-01-03 Florian Weimer <fweimer@redhat.com>
31892
31893 Revert:
31894 2023-01-02 Florian Weimer <fweimer@redhat.com>
31895
31896 * debug.h (dwarf_reg_sizes_constant): Declare.
31897 * dwarf2cfi.cc (dwarf_reg_sizes_constant): New function.
31898
31899 2023-01-03 Siddhesh Poyarekar <siddhesh@gotplt.org>
31900
31901 PR tree-optimization/105043
31902 * doc/extend.texi (Object Size Checking): Split out into two
31903 subsections and mention _FORTIFY_SOURCE.
31904
31905 2023-01-03 Roger Sayle <roger@nextmovesoftware.com>
31906
31907 * config/i386/i386-expand.cc (ix86_expand_int_movcc): Rewrite
31908 RTL expansion to allow condition (mask) to be shared/reused,
31909 by avoiding overwriting pseudos and adding REG_EQUAL notes.
31910
31911 2023-01-03 Roger Sayle <roger@nextmovesoftware.com>
31912
31913 PR target/108229
31914 * config/i386/i386-features.cc
31915 (general_scalar_chain::compute_convert_gain) <case PLUS>: Consider
31916 the gain/cost of converting a MEM operand.
31917
31918 2023-01-03 Jakub Jelinek <jakub@redhat.com>
31919
31920 PR middle-end/108264
31921 * expr.cc (store_expr): For stores into SUBREG_PROMOTED_* targets
31922 from source which doesn't have scalar integral mode first convert
31923 it to outer_mode.
31924
31925 2023-01-03 Jakub Jelinek <jakub@redhat.com>
31926
31927 PR rtl-optimization/108263
31928 * cfgrtl.cc (fixup_reorder_chain): Avoid trying to redirect
31929 asm goto to EXIT.
31930
31931 2023-01-02 Alexander Monakov <amonakov@ispras.ru>
31932
31933 PR target/87832
31934 * config/i386/lujiazui.md (lujiazui_div): New automaton.
31935 (lua_div): New unit.
31936 (lua_idiv_qi): Correct unit in the reservation.
31937 (lua_idiv_qi_load): Ditto.
31938 (lua_idiv_hi): Ditto.
31939 (lua_idiv_hi_load): Ditto.
31940 (lua_idiv_si): Ditto.
31941 (lua_idiv_si_load): Ditto.
31942 (lua_idiv_di): Ditto.
31943 (lua_idiv_di_load): Ditto.
31944 (lua_fdiv_SF): Ditto.
31945 (lua_fdiv_SF_load): Ditto.
31946 (lua_fdiv_DF): Ditto.
31947 (lua_fdiv_DF_load): Ditto.
31948 (lua_fdiv_XF): Ditto.
31949 (lua_fdiv_XF_load): Ditto.
31950 (lua_ssediv_SF): Ditto.
31951 (lua_ssediv_load_SF): Ditto.
31952 (lua_ssediv_V4SF): Ditto.
31953 (lua_ssediv_load_V4SF): Ditto.
31954 (lua_ssediv_V8SF): Ditto.
31955 (lua_ssediv_load_V8SF): Ditto.
31956 (lua_ssediv_SD): Ditto.
31957 (lua_ssediv_load_SD): Ditto.
31958 (lua_ssediv_V2DF): Ditto.
31959 (lua_ssediv_load_V2DF): Ditto.
31960 (lua_ssediv_V4DF): Ditto.
31961 (lua_ssediv_load_V4DF): Ditto.
31962
31963 2023-01-02 Florian Weimer <fweimer@redhat.com>
31964
31965 * debug.h (dwarf_reg_sizes_constant): Declare.
31966 * dwarf2cfi.cc (dwarf_reg_sizes_constant): New function.
31967
31968 2023-01-02 Florian Weimer <fweimer@redhat.com>
31969
31970 * dwarf2cfi.cc (init_return_column_size): Remove.
31971 (init_one_dwarf_reg_size): Adjust.
31972 (generate_dwarf_reg_sizes): New function. Extracted
31973 from expand_builtin_init_dwarf_reg_sizes.
31974 (expand_builtin_init_dwarf_reg_sizes): Call
31975 generate_dwarf_reg_sizes.
31976 * target.def (init_dwarf_reg_sizes_extra): Adjust
31977 hook signature.
31978 * config/msp430/msp430.cc
31979 (msp430_init_dwarf_reg_sizes_extra): Adjust.
31980 * config/rs6000/rs6000.cc
31981 (rs6000_init_dwarf_reg_sizes_extra): Likewise.
31982 * doc/tm.texi: Update.
31983
31984 2023-01-02 Jakub Jelinek <jakub@redhat.com>
31985
31986 * gcc.cc (process_command): Update copyright notice dates.
31987 * gcov-dump.cc (print_version): Ditto.
31988 * gcov.cc (print_version): Ditto.
31989 * gcov-tool.cc (print_version): Ditto.
31990 * gengtype.cc (create_file): Ditto.
31991 * doc/cpp.texi: Bump @copying's copyright year.
31992 * doc/cppinternals.texi: Ditto.
31993 * doc/gcc.texi: Ditto.
31994 * doc/gccint.texi: Ditto.
31995 * doc/gcov.texi: Ditto.
31996 * doc/install.texi: Ditto.
31997 * doc/invoke.texi: Ditto.
31998
31999 2023-01-01 Roger Sayle <roger@nextmovesoftware.com>
32000 Uroš Bizjak <ubizjak@gmail.com>
32001
32002 * config/i386/i386.md (extendditi2): New define_insn.
32003 (define_split): Use DWIH mode iterator to treat new extendditi2
32004 identically to existing extendsidi2_1.
32005 (define_peephole2): Likewise.
32006 (define_peephole2): Likewise.
32007 (define_Split): Likewise.
32008
32009 \f
32010 Copyright (C) 2023 Free Software Foundation, Inc.
32011
32012 Copying and distribution of this file, with or without modification,
32013 are permitted in any medium without royalty provided the copyright
32014 notice and this notice are preserved.