On Sat, Sep 7, 2024 at 7:08 PM Jeff Law <jeffreya...@gmail.com> wrote:
>
>
>
> On 9/6/24 5:32 AM, Jin Ma wrote:
> > In the process of DF to SI, we generally use "unsigned_fix" rather than
> > "truncate" for conversion. Although this has no effect in general,
> > unexpected ICE often occurs when precise semantic analysis is required.
> >
> > gcc/ChangeLog:
> >
> >       * config/riscv/riscv.md:  Change "truncate" to "unsigned_fix" for
> >          the Zfa extension on rv32.
> >
> > gcc/testsuite/ChangeLog:
> >
> >       * gcc.target/riscv/zfa-fmovh-fmovp-bug.c: New test.
> This doesn't look correct.
>
> fmv.x.w just moves the bits from one place to another, no conversion.
>
> So I don't see how the original pattern was correct.  Using truncate on
> an FP mode source isn't defined.  But I also don't think the updated
> pattern is correct either.
> jeff

Having matching pattern for these Zfa moves seems pointless because
the optimization that utilizes the instructions in
riscv_split_doubleword_move() uses:
gen_movdfsisi3_rv32(), gen_movsidf2_low_rv32() and gen_movsidf2_high_rv32().
In the XTheadFmv pattern, we use unspec, so the pattern won't match.
I think this should be done for Zfa as well.

Reply via email to