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.