diff options
author | liuhongt <hongtao.liu@intel.com> | 2025-03-11 18:40:07 -0700 |
---|---|---|
committer | liuhongt <hongtao.liu@intel.com> | 2025-05-27 17:51:18 -0700 |
commit | 1bc5b47f5b06dc4e8d2e7b622a7100b40b8e6b27 (patch) | |
tree | a3461da9dc36da5a3f3f155ba3f89dacb94a001e /gcc/fortran/iresolve.cc | |
parent | 905a156bec341a766a90e77db9d7149f13991510 (diff) | |
download | gcc-1bc5b47f5b06dc4e8d2e7b622a7100b40b8e6b27.zip gcc-1bc5b47f5b06dc4e8d2e7b622a7100b40b8e6b27.tar.gz gcc-1bc5b47f5b06dc4e8d2e7b622a7100b40b8e6b27.tar.bz2 |
For datarefs with big gap, split them into different groups.
The patch tries to solve miss vectorization for below case.
void
foo (int* a, int* restrict b)
{
b[0] = a[0] * a[64];
b[1] = a[65] * a[1];
b[2] = a[2] * a[66];
b[3] = a[67] * a[3];
b[4] = a[68] * a[4];
b[5] = a[69] * a[5];
b[6] = a[6] * a[70];
b[7] = a[7] * a[71];
}
In vect_analyze_data_ref_accesses, a[0], a[1], .. a[7], a[64], ...,
a[71] are in same group with size of 71. It caused vectorization
unprofitable.
gcc/ChangeLog:
PR tree-optimization/119181
* tree-vect-data-refs.cc (vect_analyze_data_ref_accesses):
Split datarefs when there's a gap bigger than
MAX_BITSIZE_MODE_ANY_MODE.
gcc/testsuite/ChangeLog:
* gcc.dg/vect/bb-slp-pr119181.c: New test.
Diffstat (limited to 'gcc/fortran/iresolve.cc')
0 files changed, 0 insertions, 0 deletions