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

--- Comment #3 from liuhongt at gcc dot gnu.org ---
(In reply to liuhongt from comment #1)
> test.c:28:8: note:   vect_is_simple_use: operand qh_16(D) >> 1, type of def:
> internal
> test.c:28:8: note:   vect_is_simple_use: operand qh_16(D), type of def:
> external
> test.c:28:8: note:   vect_is_simple_use: operand qh_16(D) >> 3, type of def:
> internal
> test.c:28:8: note:   vect_is_simple_use: operand qh_16(D) >> 4, type of def:
> internal
> test.c:28:8: note:   vect_is_simple_use: operand qh_16(D) >> 5, type of def:
> internal
> test.c:28:8: note:   vect_is_simple_use: operand qh_16(D) >> 6, type of def:
> internal
> test.c:28:8: note:   vect_is_simple_use: operand qh_16(D) >> 7, type of def:
> internal
> test.c:28:8: note:   vect_is_simple_use: operand qh_16(D) >> 8, type of def:
> internal
> test.c:28:8: note:   vect_is_simple_use: operand qh_16(D) >> 9, type of def:
> internal
> test.c:28:8: note:   vect_is_simple_use: operand qh_16(D) >> 10, type of
> def: internal
> test.c:28:8: note:   vect_is_simple_use: operand qh_16(D) >> 11, type of
> def: internal
> test.c:28:8: note:   vect_is_simple_use: operand qh_16(D) >> 12, type of
> def: internal
> test.c:28:8: note:   vect_is_simple_use: operand qh_16(D) >> 13, type of
> def: internal
> test.c:28:8: note:   vect_is_simple_use: operand qh_16(D) >> 14, type of
> def: internal
> test.c:28:8: note:   vect_is_simple_use: operand qh_16(D) >> 15, type of
> def: internal
> test.c:28:8: note:   === vect_analyze_slp ===
> test.c:28:8: note:   Starting SLP discovery for
> test.c:28:8: note:     _15 = qh_16(D) >> 15;
> test.c:28:8: note:     _14 = qh_16(D) >> 14;
> test.c:28:8: note:     _13 = qh_16(D) >> 13;
> test.c:28:8: note:     _12 = qh_16(D) >> 12;
> test.c:28:8: note:     _11 = qh_16(D) >> 11;
> test.c:28:8: note:     _10 = qh_16(D) >> 10;
> test.c:28:8: note:     _9 = qh_16(D) >> 9;
> test.c:28:8: note:     _8 = qh_16(D) >> 8;
> test.c:28:8: note:     _7 = qh_16(D) >> 7;
> test.c:28:8: note:     _6 = qh_16(D) >> 6;
> test.c:28:8: note:     _5 = qh_16(D) >> 5;
> test.c:28:8: note:     _4 = qh_16(D) >> 4;
> test.c:28:8: note:     _3 = qh_16(D) >> 3;
> test.c:28:8: note:     _1 = qh_16(D) >> 1;
> test.c:28:8: note:     _2 = qh_16(D) >> 2;
> test.c:28:8: note:   starting SLP discovery for node 0x5d4e740
> test.c:28:8: note:   Build SLP for _15 = qh_16(D) >> 15;
> test.c:28:8: note:   get vectype for scalar type (group size 14): unsigned
> int
> test.c:28:8: note:   vectype: vector(1) unsigned int
> test.c:28:8: note:   nunits = 1
> test.c:28:8: missed:   Build SLP failed: op not supported by target.
> test.c:28:8: note:   SLP discovery for node 0x5d4e740 failed
> test.c:28:8: note:   SLP discovery failed

If compiler is smart, it should take 
> test.c:28:8: note:   vect_is_simple_use: operand qh_16(D), type of def:
> external
in the group as qh_16 >> 0.

or normally, it should splitted into groups size 4 + 4 + 3 and vectorize for 2
group size 4.

Reply via email to