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]$