https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81496
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Last reconfirmed| |2021-08-15
Ever confirmed|0 |1
Severity|normal |enhancement
Status|UNCONFIRMED |NEW
--- Comment #6 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
The first 2 examples (the __int128 ones) are due to:
(insn 4 3 5 2 (set (reg:TI 85)
(subreg:TI (reg:DI 86) 0)) "/app/example.cpp":8:31 -1
(nil))
(insn 5 4 6 2 (set (subreg:DI (reg:TI 85) 8)
(reg:DI 87)) "/app/example.cpp":8:31 -1
(nil))
Or rather:
(insn 11 8 12 2 (set (reg:V4DI 91)
(vec_concat:V4DI (subreg:V2DI (reg/v:TI 84 [ x ]) 0)
(subreg:V2DI (reg/v:TI 88 [ y ]) 0))) "/app/example.cpp":8:40 -1
(nil))
clang produces interesting results too.
They sometimes do vpunpcklqdq and other times do vpinsrd