diff mbox series

LoongArch: Increase cost of vector aligned store/load.

Message ID 20231116084436.31620-1-xujiahao@loongson.cn
State New
Headers show
Series LoongArch: Increase cost of vector aligned store/load. | expand

Commit Message

Jiahao Xu Nov. 16, 2023, 8:44 a.m. UTC
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.

Comments

Lulu Cheng Nov. 17, 2023, 2:21 a.m. UTC | #1
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;
Xi Ruoyao Nov. 18, 2023, 6:25 p.m. UTC | #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?
Jiahao Xu Nov. 23, 2023, 8:11 a.m. UTC | #3
在 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 mbox series

Patch

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;