Closed
Description
This may not be reprodusible with the upstream Flang, because I have a customized LLVM pipeline that runs some extra passes. At the same time, I can confirm that #143017 causes the miscompare by reverting it.
The only change in the whole benchmark appears in stiff2mat.f
module that contains a single function.
Attaching the assembly for stiff2mat.f
:
- With [X86] combineConcatVectorOps - concat per-lane v2f64/v4f64 shuffles into vXf64 vshufpd #143017: bad.s.gz
- Without [X86] combineConcatVectorOps - concat per-lane v2f64/v4f64 shuffles into vXf64 vshufpd #143017: good.s.gz
Here is the LLVM IR and MIR dumps right before and afrer x86-isel
:
- With [X86] combineConcatVectorOps - concat per-lane v2f64/v4f64 shuffles into vXf64 vshufpd #143017: isel.bad.log.gz
- Without [X86] combineConcatVectorOps - concat per-lane v2f64/v4f64 shuffles into vXf64 vshufpd #143017: isel.good.log.gz
Please let me know if you need information from more passes.