On Sat, Oct 25, 2025 at 1:08 PM LIU Hao <[email protected]> wrote:
>
> Although there's no possibility of ambiguity, Intel manual says the mnemonic
> for DWORD-to-QWORD sign-extension operation should be MOVSXD. Some assemblers
> (GNU AS, NASM) also overload MOVSX, but some others don't accept MOVSX (LLVM,
> MASM, YASM in NASM mode) and require MOVSXD.
>
> This mnemonic was introduced in r0-34259-g123bf9e3f4056d in 2001, and has not
> been updated ever since.
>
> gcc/ChangeLog:
>
>         PR gcc/119079
>         * config/i386/i386.md: Use `movsxd` to perform SI-to-DI extension in 
> Intel
>         syntax.

OK.

Thanks,
Uros.

>
> Signed-off-by: LIU Hao <[email protected]>
> ---
>   gcc/config/i386/i386.md | 4 ++--
>   1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
> index 8a3e336bee66..218377a17703 100644
> --- a/gcc/config/i386/i386.md
> +++ b/gcc/config/i386/i386.md
> @@ -4982,7 +4982,7 @@
>     "TARGET_64BIT"
>     "@
>      {cltq|cdqe}
> -   movs{lq|x}\t{%1, %0|%0, %1}"
> +   movs{lq|xd}\t{%1, %0|%0, %1}"
>     [(set_attr "type" "imovx")
>      (set_attr "mode" "DI")
>      (set_attr "prefix_0f" "0")
> @@ -27859,7 +27859,7 @@
>   {
>     output_asm_insn ("mov{<imodesuffix>}\t{%3, %<k>1|%<k>1, %3}", operands);
>     output_asm_insn ("mov{<imodesuffix>}\t{%<k>1, %0|%0, %<k>1}", operands);
> -  return "movs{lq|x}\t{%2, %1|%1, %2}";
> +  return "movs{lq|xd}\t{%2, %1|%1, %2}";
>   }
>     [(set_attr "type" "multi")
>      (set_attr "length" "24")])
> --
> 2.51.1
>

Reply via email to