https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97158

--- Comment #1 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Tom de Vries <vr...@gcc.gnu.org>:

https://gcc.gnu.org/g:ca52f937fff52c494ef2951490c1654750ef8157

commit r11-3383-gca52f937fff52c494ef2951490c1654750ef8157
Author: Tom de Vries <tdevr...@suse.de>
Date:   Tue Sep 22 13:16:39 2020 +0200

    [nvptx] Handle move from DF subreg to DF reg in nvptx_output_mov_insn

    When compiling test-case gcc.dg/atomic/c11-atomic-exec-1.c, we run into
    these ptxas errors:
    ...
    line 100; error: Rounding modifier required for instruction 'cvt'
    line 105; error: Rounding modifier required for instruction 'cvt'
    ...

    The problem is that this move:
    ...
    //(insn 13 11 14 2
    //      (set (reg:DF 28 [ _9 ])
    //           (subreg:DF (reg:TI 22 [ _1 ]) 0)) 9 {*movdf_insn}
    //       (nil))
                    cvt.f64.u64     %r28, %r22$0;
    ...
    is emitted as cvt.f64.u64, while it should be a mov.b64 instead.

    Fix this by handling this case in nvptx_output_mov_insn.

    Tested on nvptx.

    gcc/ChangeLog:

            PR target/97158
            * config/nvptx/nvptx.c (nvptx_output_mov_insn): Handle move from
            DF subreg to DF reg.

Reply via email to