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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |rsandifo at gcc dot gnu.org

--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
/space/rguenther/src/gcc/gcc/testsuite/gcc.dg/vect/bb-slp-pr95866.c:13:1: note:
  vector/vector shift/rotate found.

Indeed it uses a vector-vector shift ...

The odd thing is we have

# Return 1 if the target supports hardware vector shift by register operation.

proc check_effective_target_vect_var_shift { } {
    return [check_cached_effective_target_indexed vect_var_shift {
      expr {(([istarget i?86-*-*] || [istarget x86_64-*-*])
             && [check_avx2_available])

and

# Return 1 if the target supports hardware vector shift operation.

proc check_effective_target_vect_shift { } {
    return [check_cached_effective_target_indexed vect_shift {
      expr {([istarget powerpc*-*-*]
              && ![istarget powerpc-*-linux*paired*])
             || [istarget ia64-*-*] 
             || [istarget i?86-*-*] || [istarget x86_64-*-*]
             || [istarget aarch64*-*-*]
             || [is-effective-target arm_neon]
             || ([istarget mips*-*-*]
                 && ([et-is-effective-target mips_msa]
                     || [et-is-effective-target mips_loongson_mmi]))
             || ([istarget s390*-*-*]
                 && [check_effective_target_s390_vx])
             || [istarget amdgcn-*-*] }}]

vect_var_shift is only used by g++.dg/vect/pr87914.cc:

// { dg-final { scan-tree-dump "OUTER LOOP VECTORIZED" "vect" { target {
vect_var_shift && vect_int } } } }

but that would also have passed with powerpc vect_shift.  Looks like
aarch64 has ashl expanders in aarch64-simd.md.

And the target selectors as usual are a bit of a mess ... :/

And looks like I added vect_var_shift.  Not sure if it is now time to
add vect_scalar_shift (and maybe rename vect_var_shift to vect_vect_shift)
and leave it to others to sort out vect_shift (meaning then whether a
target supports either variant).

Easiest would be to change the target selector on the new testcase to
{ x86_64-*-* i?86-*-* } ...

Reply via email to