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

            Bug ID: 126231
           Summary: Missing zero_extend patterns
           Product: gcc
           Version: 16.1.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: hjl.tools at gmail dot com
  Target Milestone: ---
            Target: x86-64

Many zero_extend patterns are missing:

[hjl@gnu-zen4-1 zext]$ cat f.c
#include <x86intrin.h>

unsigned long long
fun12 (__m128h x)
{
  return _mm_cvt_roundsh_u32
    (x, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
}
[hjl@gnu-zen4-1 zext]$ make CC=gcc f.s
gcc -O2 -march=x86-64-v4 -mavx512fp16 -dp -S f.c
[hjl@gnu-zen4-1 zext]$ cat f.s
        .file   "f.c"
        .text
        .p2align 4
        .globl  fun12
        .type   fun12, @function
fun12:
.LFB7483:
        .cfi_startproc
        vcvtsh2usi      {rn-sae}, %xmm0, %eax   # 7     [c=9 l=6] 
avx512fp16_vcvtsh2usi_round
        movl    %eax, %eax      # 9     [c=4 l=2]  *zero_extendsidi2/3
        ret             # 23    [c=0 l=1]  simple_return_internal
        .cfi_endproc
.LFE7483:
        .size   fun12, .-fun12
        .ident  "GCC: (GNU) 16.1.1 20260515 (Red Hat 16.1.1-2)"
        .section        .note.GNU-stack,"",@progbits
[hjl@gnu-zen4-1 zext]$

Reply via email to