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

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
          Component|target                      |tree-optimization
             Status|UNCONFIRMED                 |NEW
     Ever confirmed|0                           |1
           Severity|normal                      |enhancement
   Last reconfirmed|                            |2021-08-03

--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Confirmed.

At the gimple level we should be able to produce a SHUFFLE with the other
vector being full of zeros:
  _1 = BIT_FIELD_REF <x_3(D), 16, 48>;
  _2 = BIT_FIELD_REF <x_3(D), 16, 112>;
  _4 = {_1, _2};


This is what clang produces:
        vpshufb .LCPI0_0(%rip), %xmm0, %xmm0    # xmm0 =
xmm0[6,7,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero

....
.LCPI1_0:
        .byte   6                               # 0x6
        .byte   7                               # 0x7
        .byte   14                              # 0xe
        .byte   15                              # 0xf
        .byte   128                             # 0x80
        .byte   128                             # 0x80
        .byte   128                             # 0x80
        .byte   128                             # 0x80
        .byte   128                             # 0x80
        .byte   128                             # 0x80
        .byte   128                             # 0x80
        .byte   128                             # 0x80
        .byte   128                             # 0x80
        .byte   128                             # 0x80
        .byte   128                             # 0x80
        .byte   128                             # 0x80

The problem is also seem on aarch64 too.

Reply via email to