Ok. Add -Wno-psabi which reduce 5 FAILS.

V3:
https://gcc.gnu.org/pipermail/gcc-patches/2023-August/628572.html 




juzhe.zh...@rivai.ai
 
From: Robin Dapp
Date: 2023-08-28 16:22
To: Juzhe-Zhong; gcc-patches
CC: rdapp.gcc; kito.cheng; kito.cheng; jeffreyalaw
Subject: Re: [PATCH V2] RISC-V: Enable vec_int testsuite for RVV VLA 
vectorization
Thanks,
 
just giving my quick thoughts on some of the FAILs:
 
> Test report:
> FAIL: gcc.dg/vect/bb-slp-10.c -flto -ffat-lto-objects  scan-tree-dump slp2 
> "unsupported unaligned access"
> FAIL: gcc.dg/vect/bb-slp-10.c scan-tree-dump slp2 "unsupported unaligned 
> access"
 
For these we would need to add riscv to target_vect_element_align_preferred.
That might depend on uarch, though. 
 
> FAIL: gcc.dg/vect/bb-slp-70.c (test for excess errors)
> FAIL: gcc.dg/vect/bb-slp-70.c -flto -ffat-lto-objects (test for excess errors)
> FAIL: gcc.dg/vect/bb-slp-layout-17.c (test for excess errors)
> FAIL: gcc.dg/vect/bb-slp-layout-17.c -flto -ffat-lto-objects (test for excess 
> errors)
 
For these we need -Wno-psabi for now.   Besides, I still wanted to provide a
popcount fallback sometime soon.
 
> FAIL: gcc.dg/vect/pr65310.c -flto -ffat-lto-objects  scan-tree-dump vect 
> "can't force alignment"
> FAIL: gcc.dg/vect/pr65310.c -flto -ffat-lto-objects  scan-tree-dump-not vect 
> "misalign = 0"
> FAIL: gcc.dg/vect/pr65310.c scan-tree-dump vect "can't force alignment"
> FAIL: gcc.dg/vect/pr65310.c scan-tree-dump-not vect "misalign = 0"
 
Same as above with vect_element_align_preferred.
 
> XPASS: gcc.dg/vect/vect-10.c -flto -ffat-lto-objects  scan-tree-dump-times 
> vect "vectorized 1 loops" 1
> XPASS: gcc.dg/vect/vect-10.c scan-tree-dump-times vect "vectorized 1 loops" 1
> FAIL: gcc.dg/vect/vect-104.c -flto -ffat-lto-objects  scan-tree-dump-times 
> vect "possible dependence between data-refs" 1
> FAIL: gcc.dg/vect/vect-104.c scan-tree-dump-times vect "possible dependence 
> between data-refs" 1
> FAIL: gcc.dg/vect/vect-109.c -flto -ffat-lto-objects  scan-tree-dump-times 
> vect "unsupported unaligned access" 2
> FAIL: gcc.dg/vect/vect-109.c scan-tree-dump-times vect "unsupported unaligned 
> access" 2
> XPASS: gcc.dg/vect/vect-24.c -flto -ffat-lto-objects  scan-tree-dump-times 
> vect "vectorized 3 loops" 1
> XPASS: gcc.dg/vect/vect-24.c scan-tree-dump-times vect "vectorized 3 loops" 1
> FAIL: gcc.dg/vect/vect-26.c -flto -ffat-lto-objects  scan-tree-dump-times 
> vect "Alignment of access forced using peeling" 1
> FAIL: gcc.dg/vect/vect-26.c scan-tree-dump-times vect "Alignment of access 
> forced using peeling" 1
> FAIL: gcc.dg/vect/vect-27.c -flto -ffat-lto-objects  scan-tree-dump-times 
> vect "Vectorizing an unaligned access" 1
> FAIL: gcc.dg/vect/vect-27.c scan-tree-dump-times vect "Vectorizing an 
> unaligned access" 1
> FAIL: gcc.dg/vect/vect-29.c -flto -ffat-lto-objects  scan-tree-dump-times 
> vect "Vectorizing an unaligned access" 1
> FAIL: gcc.dg/vect/vect-29.c scan-tree-dump-times vect "Vectorizing an 
> unaligned access" 1
> FAIL: gcc.dg/vect/vect-33.c -flto -ffat-lto-objects  scan-tree-dump-times 
> vect "Alignment of access forced using versioning" 1
> FAIL: gcc.dg/vect/vect-33.c scan-tree-dump-times vect "Alignment of access 
> forced using versioning" 1
> FAIL: gcc.dg/vect/vect-72.c -flto -ffat-lto-objects  scan-tree-dump-times 
> vect "Vectorizing an unaligned access" 1
> FAIL: gcc.dg/vect/vect-72.c scan-tree-dump-times vect "Vectorizing an 
> unaligned access" 1
> FAIL: gcc.dg/vect/vect-75-big-array.c -flto -ffat-lto-objects  
> scan-tree-dump-times vect "Vectorizing an unaligned access" 1
> FAIL: gcc.dg/vect/vect-75-big-array.c scan-tree-dump-times vect "Vectorizing 
> an unaligned access" 1
> FAIL: gcc.dg/vect/vect-75.c -flto -ffat-lto-objects  scan-tree-dump-times 
> vect "Vectorizing an unaligned access" 1
> FAIL: gcc.dg/vect/vect-75.c scan-tree-dump-times vect "Vectorizing an 
> unaligned access" 1
> FAIL: gcc.dg/vect/vect-77-alignchecks.c -flto -ffat-lto-objects  
> scan-tree-dump-times vect "Vectorizing an unaligned access" 1
> FAIL: gcc.dg/vect/vect-77-alignchecks.c scan-tree-dump-times vect 
> "Vectorizing an unaligned access" 1
> FAIL: gcc.dg/vect/vect-77-global.c -flto -ffat-lto-objects  
> scan-tree-dump-times vect "Vectorizing an unaligned access" 1
> FAIL: gcc.dg/vect/vect-77-global.c scan-tree-dump-times vect "Vectorizing an 
> unaligned access" 1
> FAIL: gcc.dg/vect/vect-78-alignchecks.c -flto -ffat-lto-objects  
> scan-tree-dump-times vect "Vectorizing an unaligned access" 1
> FAIL: gcc.dg/vect/vect-78-alignchecks.c scan-tree-dump-times vect 
> "Vectorizing an unaligned access" 1
> FAIL: gcc.dg/vect/vect-78-global.c -flto -ffat-lto-objects  
> scan-tree-dump-times vect "Vectorizing an unaligned access" 1
> FAIL: gcc.dg/vect/vect-78-global.c scan-tree-dump-times vect "Vectorizing an 
> unaligned access" 1
> FAIL: gcc.dg/vect/vect-89-big-array.c -flto -ffat-lto-objects  
> scan-tree-dump-times vect "Alignment of access forced using peeling" 1
> FAIL: gcc.dg/vect/vect-89-big-array.c scan-tree-dump-times vect "Alignment of 
> access forced using peeling" 1
> FAIL: gcc.dg/vect/vect-89.c -flto -ffat-lto-objects  scan-tree-dump-times 
> vect "Alignment of access forced using peeling" 1
> FAIL: gcc.dg/vect/vect-89.c scan-tree-dump-times vect "Alignment of access 
> forced using peeling" 1
> FAIL: gcc.dg/vect/vect-96.c -flto -ffat-lto-objects  scan-tree-dump-times 
> vect "Alignment of access forced using peeling" 1
> FAIL: gcc.dg/vect/vect-96.c -flto -ffat-lto-objects  scan-tree-dump-times 
> vect "Vectorizing an unaligned access" 1
> FAIL: gcc.dg/vect/vect-96.c scan-tree-dump-times vect "Alignment of access 
> forced using peeling" 1
> FAIL: gcc.dg/vect/vect-96.c scan-tree-dump-times vect "Vectorizing an 
> unaligned access" 1
 
As mentioned back when we added the movmisalign pattern,  most of those are not 
real
problems but due to us not properly reporting whether we support misaligned 
vectors
in HW or not.
 
> FAIL: gcc.dg/vect/vect-align-1.c -flto -ffat-lto-objects execution test
> FAIL: gcc.dg/vect/vect-align-1.c execution test
> FAIL: gcc.dg/vect/vect-align-2.c -flto -ffat-lto-objects execution test
> FAIL: gcc.dg/vect/vect-align-2.c execution test
 
Those need vect_hw_misalign (if the uarch supports it). 
 
> FAIL: gcc.dg/vect/vect-div-bitmask-4.c (test for excess errors)
> FAIL: gcc.dg/vect/vect-div-bitmask-4.c -flto -ffat-lto-objects (test for 
> excess errors)
 
-Wno-psabi again.  I would add this to the default vectorizer settings.
 
> FAIL: gcc.dg/vect/vect-multitypes-1.c -flto -ffat-lto-objects  
> scan-tree-dump-times vect "Alignment of access forced using peeling" 2
> FAIL: gcc.dg/vect/vect-multitypes-1.c scan-tree-dump-times vect "Alignment of 
> access forced using peeling" 2
> FAIL: gcc.dg/vect/vect-multitypes-11.c -flto -ffat-lto-objects  
> scan-tree-dump-times vect "vectorized 1 loops" 1
> FAIL: gcc.dg/vect/vect-multitypes-11.c scan-tree-dump-times vect "vectorized 
> 1 loops" 1
> FAIL: gcc.dg/vect/vect-multitypes-3.c -flto -ffat-lto-objects  
> scan-tree-dump-times vect "Vectorizing an unaligned access" 3
> FAIL: gcc.dg/vect/vect-multitypes-3.c scan-tree-dump-times vect "Vectorizing 
> an unaligned access" 3
> FAIL: gcc.dg/vect/vect-multitypes-4.c -flto -ffat-lto-objects  
> scan-tree-dump-times vect "Alignment of access forced using peeling" 2
> FAIL: gcc.dg/vect/vect-multitypes-4.c -flto -ffat-lto-objects  
> scan-tree-dump-times vect "Vectorizing an unaligned access" 8
> FAIL: gcc.dg/vect/vect-multitypes-4.c scan-tree-dump-times vect "Alignment of 
> access forced using peeling" 2
> FAIL: gcc.dg/vect/vect-multitypes-4.c scan-tree-dump-times vect "Vectorizing 
> an unaligned access" 8
> FAIL: gcc.dg/vect/vect-multitypes-6.c -flto -ffat-lto-objects  
> scan-tree-dump-times vect "Vectorizing an unaligned access" 6
> FAIL: gcc.dg/vect/vect-multitypes-6.c scan-tree-dump-times vect "Vectorizing 
> an unaligned access" 6
 
vect_hw_misalign again.
 
> FAIL: gcc.dg/vect/vect-peel-1.c -flto -ffat-lto-objects  scan-tree-dump-times 
> vect "Alignment of access forced using peeling" 1
> FAIL: gcc.dg/vect/vect-peel-1.c scan-tree-dump-times vect "Alignment of 
> access forced using peeling" 1
> FAIL: gcc.dg/vect/vect-peel-3.c -flto -ffat-lto-objects  scan-tree-dump-times 
> vect "Alignment of access forced using peeling" 1
> FAIL: gcc.dg/vect/vect-peel-3.c -flto -ffat-lto-objects  scan-tree-dump-times 
> vect "Vectorizing an unaligned access" 1
> FAIL: gcc.dg/vect/vect-peel-3.c scan-tree-dump-times vect "Alignment of 
> access forced using peeling" 1
> FAIL: gcc.dg/vect/vect-peel-3.c scan-tree-dump-times vect "Vectorizing an 
> unaligned access" 1
> FAIL: gcc.dg/vect/vect-peel-4.c -flto -ffat-lto-objects  scan-tree-dump-times 
> vect "Vectorizing an unaligned access" 1
> FAIL: gcc.dg/vect/vect-peel-4.c scan-tree-dump-times vect "Vectorizing an 
> unaligned access" 1
 
vect_element_align_preferred again.
 
> -    } "-march=rv32gcv -mabi=ilp32d"] || [check_runtime riscv_vector_hw64 {
> +    } ""] || [check_runtime riscv_vector_hw64 {
>          int main (void)
>          {
>              asm ("vsetivli zero,8,e16,m1,ta,ma");
>              asm ("vadd.vv v8,v8,v16" : : : "v8");
>              return 0;
>          }
> -    } "-march=rv64gcv -mabi=lp64d"]
> +    } ""]
>  }
> @@ -11100,6 +11101,15 @@ proc check_vect_support_and_set_flags { } {
>          }
>      } elseif [istarget amdgcn-*-*] {
>          set dg-do-what-default run
> +    } elseif [istarget riscv64-*-*] {
> + if [check_effective_target_riscv_vector_hw] {
> +     lappend DEFAULT_VECTCFLAGS "--param" "riscv-autovec-preference=scalable"
> +     set dg-do-what-default run 
> + } else {
> +     lappend DEFAULT_VECTCFLAGS "-march=rv64gcv_zvfh" "-mabi=lp64d"
> +     lappend DEFAULT_VECTCFLAGS "--param" "riscv-autovec-preference=scalable"
> +     set dg-do-what-default compile
 
Please add -Wno-psabi the the DEFAULT_VECTCFLAGS for now.  This already helps
with the test cases where we return a vector.
 
Regards
Robin
 
 

Reply via email to