Hi,

I asked my colleagues (@kasuga-fj and @ytmukai). They said these errors seem to 
be a bug in the MachinePipeliner and they are working on a fix with the 
community.

You can forget this issue. Thanks.

Best regards,
Takahiro Kawashima,
Fujitsu

> Hi,
> 
> Thank you for investigation.
> 
> I have a colleague who is working on the machine pipeliner. I'll ask him.
> 
> Regards,
> Takahiro Kawashima,
> Fujitsu
> 
> > > It is caused by enabling the slp-vectorizer pass.
> > > Failing tests are the following.
> > > 
> > >   
> > > https://github.com/fujitsu/compiler-test-suite/blob/main/Fortran/0105/0105_0223.f90
> > >   
> > > https://github.com/fujitsu/compiler-test-suite/blob/main/Fortran/0631/0631_0051.f
> > >   
> > > https://github.com/fujitsu/compiler-test-suite/blob/main/Fortran/0631/0631_0054.f
> > > 
> > > Compiler flags are the following.
> > > 
> > >   flang -O3 -mcpu=neoverse-v1 -msve-vector-bits=scalable -mllvm 
> > > -scalable-vectorization=preferred -mllvm 
> > > -treat-scalable-fixed-error-as-warning=false -mllvm 
> > > -aarch64-enable-pipeliner -mllvm -pipeliner-mve-cg -DNDEBUG -fstack-arrays
> > > 
> > > 0631_0051.f and 0631_0054.f seem to fail by miscompiling. Output of ot 
> > > test execution differs form the expected one.
> > > 
> > > 0105_0223.f90 fails by an assertion failure in the backend.
> > > 
> > > flang: llvm/include/llvm/CodeGen/SlotIndexes.h:626: void 
> > > llvm::SlotIndexes::insertMBBInMaps(llvm::MachineBasicBlock*): Assertion 
> > > `unsigned(mbb->getNumber()) == MBBRanges.size() && "Blocks must be added 
> > > in order"' failed.
> > 
> > Thank you for pointing me in the right direction. I was able to reproduce 
> > the issue in my own
> > environment as well. It appears that it's the combination of "-mllvm 
> > -aarch64-enable-pipeliner -mllvm -pipeliner-mve-cg"
> > with "-fslp-vectorize" that is causing problems in this case. Based on my 
> > testing:
> > 
> > flang -O3 -mcpu=neoverse-v1 -mllvm -aarch64-enable-pipeliner -mllvm 
> > -pipeliner-mve-cg -fslp-vectorize 0105_0223.f90 <- broken
> > flang -O3 -mcpu=neoverse-v1 -mllvm -aarch64-enable-pipeliner -mllvm 
> > -pipeliner-mve-cg -fno-slp-vectorize 0105_0223.f90 <- working
> > flang -O3 -mcpu=neoverse-v1 -fslp-vectorize 0105_0223.f90 <- working
> > flang -O3 -mcpu=neoverse-v1 0105_0223.f90 <- working (same as above, 
> > -fslp-vectorize is enabled by O3)
> > 
> > I've not had any prior experience with the two machine pipeliner flags in 
> > question, but I'll reach
> > out to some people who should know more and try to determine where the 
> > issue is coming from.
> > 
> > Overall I think the consensus in the flang community is that -O3 should 
> > behave the same way it does
> > in clang, and since clang enables the slp-vectorizer by default then so 
> > should flang. I'm not sure
> > whether an interaction with llvm backend flags such as this one here is 
> > reason enough to diverge
> > from that, but I'll start a discussion and get some external opinions on 
> > that. I suppose it depends
> > on whether the issue actually originates in the slp-vectorizer or in the 
> > pipeliner flags.
> > 
> > In the meantime, would you be able to determine whether the reasons for 
> > those flags being passed to
> > your test suite in the first place are already covered by the 
> > slp-vectorizer? As in, does omitting
> > "-mllvm -aarch64-enable-pipeliner -mllvm -pipeliner-mve-cg" actually 
> > achieve measurably worse
> > results than leaving those in alongside "-fno-slp-vectorize"? If so then it 
> > will be a very useful
> > datapoint for determining what the priority here should be.
> > 
> > Thanks,
> > Kajetan
_______________________________________________
linaro-toolchain mailing list -- linaro-toolchain@lists.linaro.org
To unsubscribe send an email to linaro-toolchain-le...@lists.linaro.org

Reply via email to