https://gcc.gnu.org/bugzilla/show_bug.cgi?id=126424
Bug ID: 126424
Summary: [meta] Poor code generation for TImode parallel
Product: gcc
Version: 17.0
Status: UNCONFIRMED
Keywords: meta-bug
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
We generate very bad code sequences for TImode PARALLEL moves:
1. Move from TImode PARALLEL from
(parallel:TI [
(expr_list:REG_DEP_TRUE (reg:DI 20 xmm0 [ a ])
(const_int 0 [0]))
(expr_list:REG_DEP_TRUE (reg:DI 21 xmm1 [ a+8 ])
(const_int 8 [0x8]))
])
or
(parallel:TI [
(expr_list:REG_DEP_TRUE (reg:SI 5 di [ x ])
(const_int 0 [0]))
(expr_list:REG_DEP_TRUE (reg:DI 4 si [ x+8 ])
(const_int 8 [0x8]))
])
into
(reg:TI 106)
2. Move to TImode PARALLEL from
(mem/c:BLK (plus:DI (reg/f:DI 93 virtual-stack-vars)
(const_int -16 [0xfffffffffffffff0])) [1 D.2978+0 S12 A128])
into
(parallel:BLK [
(expr_list:REG_DEP_TRUE (reg:TI 102 [ <retval> ])
(const_int 0 [0]))
])