diff options
author | Richard Biener <rguenther@suse.de> | 2023-08-15 15:17:08 +0200 |
---|---|---|
committer | Richard Biener <rguenther@suse.de> | 2023-08-17 13:16:22 +0200 |
commit | 99b5921bfc8f9122fb7ccb0a4284179fd3a2f2ba (patch) | |
tree | f85a48ef714a413598269c83682a67da1ce7f9f4 /libgomp/allocator.c | |
parent | 17d670dbca16d8ccb502c5d82c67981b1ba937af (diff) | |
download | gcc-99b5921bfc8f9122fb7ccb0a4284179fd3a2f2ba.zip gcc-99b5921bfc8f9122fb7ccb0a4284179fd3a2f2ba.tar.gz gcc-99b5921bfc8f9122fb7ccb0a4284179fd3a2f2ba.tar.bz2 |
Handle TYPE_OVERFLOW_UNDEFINED vectorized BB reductions
The following changes the gate to perform vectorization of BB reductions
to use needs_fold_left_reduction_p which in turn requires handling
TYPE_OVERFLOW_UNDEFINED types in the epilogue code generation by
promoting any operations generated there to use unsigned arithmetic.
The following does this, there's currently only v16qi where x86
supports a .REDUC_PLUS reduction for integral modes so I had to
add a x86 specific testcase using GIMPLE IL.
* tree-vect-slp.cc (vect_slp_check_for_roots): Use
!needs_fold_left_reduction_p to decide whether we can
handle the reduction with association.
(vectorize_slp_instance_root_stmt): For TYPE_OVERFLOW_UNDEFINED
reductions perform all arithmetic in an unsigned type.
* gcc.target/i386/vect-reduc-2.c: New testcase.
Diffstat (limited to 'libgomp/allocator.c')
0 files changed, 0 insertions, 0 deletions