aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/iresolve.cc
diff options
context:
space:
mode:
authorliuhongt <hongtao.liu@intel.com>2025-03-11 18:40:07 -0700
committerliuhongt <hongtao.liu@intel.com>2025-05-27 17:51:18 -0700
commit1bc5b47f5b06dc4e8d2e7b622a7100b40b8e6b27 (patch)
treea3461da9dc36da5a3f3f155ba3f89dacb94a001e /gcc/fortran/iresolve.cc
parent905a156bec341a766a90e77db9d7149f13991510 (diff)
downloadgcc-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