Message ID | 20231116084436.31620-1-xujiahao@loongson.cn |
---|---|
State | New |
Headers | show |
Series | LoongArch: Increase cost of vector aligned store/load. | expand |
Pushed to r14-5545. 在 2023/11/16 下午4:44, Jiahao Xu 写道: > Based on SPEC2017 performance evaluation results, it's better to make them equal > to the cost of unaligned store/load so as to avoid odd alignment peeling. > > gcc/ChangeLog: > > * config/loongarch/loongarch.cc > (loongarch_builtin_vectorization_cost): Adjust. > > diff --git a/gcc/config/loongarch/loongarch.cc b/gcc/config/loongarch/loongarch.cc > index 738911661d7..d05743bec87 100644 > --- a/gcc/config/loongarch/loongarch.cc > +++ b/gcc/config/loongarch/loongarch.cc > @@ -3893,11 +3893,9 @@ loongarch_builtin_vectorization_cost (enum vect_cost_for_stmt type_of_cost, > case scalar_stmt: > case scalar_load: > case vector_stmt: > - case vector_load: > case vec_to_scalar: > case scalar_to_vec: > case scalar_store: > - case vector_store: > return 1; > > case vec_promote_demote: > @@ -3905,6 +3903,8 @@ loongarch_builtin_vectorization_cost (enum vect_cost_for_stmt type_of_cost, > return LASX_SUPPORTED_MODE_P (mode) > && !LSX_SUPPORTED_MODE_P (mode) ? 2 : 1; > > + case vector_load: > + case vector_store: > case unaligned_load: > case unaligned_store: > return 2;
On Fri, 2023-11-17 at 10:21 +0800, chenglulu wrote: > Pushed to r14-5545. > > 在 2023/11/16 下午4:44, Jiahao Xu 写道: > > Based on SPEC2017 performance evaluation results, it's better to make them equal > > to the cost of unaligned store/load so as to avoid odd alignment peeling. > > > > gcc/ChangeLog: > > > > * config/loongarch/loongarch.cc > > (loongarch_builtin_vectorization_cost): Adjust. /* snip */ > > + case vector_load: > > + case vector_store: > > case unaligned_load: > > case unaligned_store: > > return 2; It seems penalizing the vectorizing and causes: FAIL: gcc.target/loongarch/vector/lasx/lasx-xvstelm.c -mlasx scan-assembler-times xvstelm.w 8 Maybe we can make unaligned_load and unaligned_store cost 1 too instead of increasing vector_load and vector_store?
在 2023/11/19 上午2:25, Xi Ruoyao 写道: > On Fri, 2023-11-17 at 10:21 +0800, chenglulu wrote: >> Pushed to r14-5545. >> >> 在 2023/11/16 下午4:44, Jiahao Xu 写道: >>> Based on SPEC2017 performance evaluation results, it's better to make them equal >>> to the cost of unaligned store/load so as to avoid odd alignment peeling. >>> >>> gcc/ChangeLog: >>> >>> * config/loongarch/loongarch.cc >>> (loongarch_builtin_vectorization_cost): Adjust. > /* snip */ > >>> + case vector_load: >>> + case vector_store: >>> case unaligned_load: >>> case unaligned_store: >>> return 2; > It seems penalizing the vectorizing and causes: > > FAIL: gcc.target/loongarch/vector/lasx/lasx-xvstelm.c -mlasx scan-assembler-times xvstelm.w 8 > > Maybe we can make unaligned_load and unaligned_store cost 1 too instead > of increasing vector_load and vector_store? > If make the cost of unaligned_load and unaligned_store cost 1 too, it will result in a 1.5% overall performance decrease in SPEC CPU 2017 fprate on 3A6000. Therefore, I don't think it's a good idea. The lasx-xvstelm.c file tests whether the vec_extract operation and fst can be combined into xvstelm.I think it would be better to add a compilation option, such as "-fno-vect-cost-model," to make it unaffected by the cost model.
diff --git a/gcc/config/loongarch/loongarch.cc b/gcc/config/loongarch/loongarch.cc index 738911661d7..d05743bec87 100644 --- a/gcc/config/loongarch/loongarch.cc +++ b/gcc/config/loongarch/loongarch.cc @@ -3893,11 +3893,9 @@ loongarch_builtin_vectorization_cost (enum vect_cost_for_stmt type_of_cost, case scalar_stmt: case scalar_load: case vector_stmt: - case vector_load: case vec_to_scalar: case scalar_to_vec: case scalar_store: - case vector_store: return 1; case vec_promote_demote: @@ -3905,6 +3903,8 @@ loongarch_builtin_vectorization_cost (enum vect_cost_for_stmt type_of_cost, return LASX_SUPPORTED_MODE_P (mode) && !LSX_SUPPORTED_MODE_P (mode) ? 2 : 1; + case vector_load: + case vector_store: case unaligned_load: case unaligned_store: return 2;