Hi I hope someone can help me. I've been trying to write some tight integer loops in way that could be auto-vectorized, saving me to write assembler or using specific vectorization extensions. Unfortunately I've not yet managed to make gcc vectorize any of them.
I've simplified the case to just perform the very first operation in the loop; converting from two's complement to sign-and-magnitude. I've then used -ftree-vectorizer-verbose to examine if and if not, why not the loops were not vectorized, but I am afraid I don't understand the output. The simplest version of the loop is here (it appears the branch is not a problem, but I have another version without). inline uint16_t transsign(int16_t v) { if (v<0) { return 0x8000U | (1-v); } else { return v; } } It very simply converts in a fashion that maintains the full effective bit- width. The error from the vectorizer is: vectorizesign.cpp:42: note: not vectorized: relevant stmt not supported: v.1_16 = (uint16_t) D.2157_11; It appears the unsupported operation in vectorization is the typecast from int16_t to uint16_t, can this really be the case, or is the output misleading? If it is the case, then is there good reason for it, or can I fix it myself by adding additional vectorizable operations? I've attached both test case and full output of ftree-vectorized-verbose=9 Best regards `Allan
#include <stdint.h> inline uint16_t transsign1(int16_t v) { // written with no control-flow to facilitate auto-vectorization uint16_t sv = v >> 15; // signed left-shift gives a classic sign selector -1 or 0 sv = sv & 0x7FFFU; // never invert the sign-bit return v ^ sv; // conditional invertion by xor } inline uint16_t transsign2(int16_t v) { if (v<0) { return 0x8000U | ~v; } else { return v; } } inline uint16_t transsign3(int16_t v) { if (v<0) { return 0x8000U | (1-v); } else { return v; } } // candidate for vectorizaton void convertts1(uint16_t* out, int16_t* in, uint32_t len) { for(unsigned int i=0;i<len;++i) { out[i] = transsign1(in[i]); } } // candidate for vectorizaton void convertts2(uint16_t* out, int16_t* in, uint32_t len) { for(unsigned int i=0;i<len;++i) { out[i] = transsign2(in[i]); } } // candidate for vectorizaton void convertts3(uint16_t* out, int16_t* in, uint32_t len) { for(unsigned int i=0;i<len;++i) { out[i] = transsign3(in[i]); } }
gcc: 2: No such file or directory vectorizesign.cpp:28: note: ===== analyze_loop_nest ===== vectorizesign.cpp:28: note: === vect_analyze_loop_form === vectorizesign.cpp:28: note: split exit edge. vectorizesign.cpp:28: note: === get_loop_niters === vectorizesign.cpp:28: note: ==> get_loop_niters:len_3(D) vectorizesign.cpp:28: note: Symbolic number of iterations is len_3(D) vectorizesign.cpp:28: note: === vect_analyze_data_refs === vectorizesign.cpp:28: note: get vectype with 8 units of type short int vectorizesign.cpp:28: note: vectype: vector short int vectorizesign.cpp:28: note: get vectype with 8 units of type short unsigned int vectorizesign.cpp:28: note: vectype: vector short unsigned int vectorizesign.cpp:28: note: === vect_analyze_scalar_cycles === vectorizesign.cpp:28: note: Analyze phi: i_16 = PHI <i_14(5), 0(3)> vectorizesign.cpp:28: note: Access function of PHI: {0, +, 1}_1 vectorizesign.cpp:28: note: step: 1, init: 0 vectorizesign.cpp:28: note: Detected induction. vectorizesign.cpp:28: note: Analyze phi: SMT.12_27 = PHI <SMT.12_26(5), SMT.12_25(D)(3)> vectorizesign.cpp:28: note: === vect_pattern_recog === vectorizesign.cpp:28: note: vect_is_simple_use: operand i_16 vectorizesign.cpp:28: note: def_stmt: i_16 = PHI <i_14(5), 0(3)> vectorizesign.cpp:28: note: type of def: 4. vectorizesign.cpp:28: note: === vect_mark_stmts_to_be_vectorized === vectorizesign.cpp:28: note: init: phi relevant? i_16 = PHI <i_14(5), 0(3)> vectorizesign.cpp:28: note: init: phi relevant? SMT.12_27 = PHI <SMT.12_26(5), SMT.12_25(D)(3)> vectorizesign.cpp:28: note: init: stmt relevant? D.2120_5 = i_16 * 2; vectorizesign.cpp:28: note: init: stmt relevant? D.2121_7 = out_6(D) + D.2120_5; vectorizesign.cpp:28: note: init: stmt relevant? D.2122_10 = in_9(D) + D.2120_5; vectorizesign.cpp:28: note: init: stmt relevant? D.2123_11 = *D.2122_10; vectorizesign.cpp:28: note: init: stmt relevant? D.2124_12 = (int) D.2123_11; vectorizesign.cpp:28: note: init: stmt relevant? D.2170_17 = D.2124_12 >> 15; vectorizesign.cpp:28: note: init: stmt relevant? sv_18 = (uint16_t) D.2170_17; vectorizesign.cpp:28: note: init: stmt relevant? sv_19 = sv_18 & 32767; vectorizesign.cpp:28: note: init: stmt relevant? sv.0_20 = (short int) sv_19; vectorizesign.cpp:28: note: init: stmt relevant? D.2167_21 = sv.0_20 ^ D.2123_11; vectorizesign.cpp:28: note: init: stmt relevant? D.2166_22 = (uint16_t) D.2167_21; vectorizesign.cpp:28: note: init: stmt relevant? *D.2121_7 = D.2166_22; vectorizesign.cpp:28: note: vec_stmt_relevant_p: stmt has vdefs. vectorizesign.cpp:28: note: mark relevant 4, live 0. vectorizesign.cpp:28: note: init: stmt relevant? i_14 = i_16 + 1; vectorizesign.cpp:28: note: init: stmt relevant? if (len_3(D) > i_14) vectorizesign.cpp:28: note: worklist: examine stmt: *D.2121_7 = D.2166_22; vectorizesign.cpp:28: note: vect_is_simple_use: operand D.2166_22 vectorizesign.cpp:28: note: def_stmt: D.2166_22 = (uint16_t) D.2167_21; vectorizesign.cpp:28: note: type of def: 3. vectorizesign.cpp:28: note: mark relevant 4, live 0. vectorizesign.cpp:28: note: worklist: examine stmt: D.2166_22 = (uint16_t) D.2167_21; vectorizesign.cpp:28: note: vect_is_simple_use: operand D.2167_21 vectorizesign.cpp:28: note: def_stmt: D.2167_21 = sv.0_20 ^ D.2123_11; vectorizesign.cpp:28: note: type of def: 3. vectorizesign.cpp:28: note: mark relevant 4, live 0. vectorizesign.cpp:28: note: worklist: examine stmt: D.2167_21 = sv.0_20 ^ D.2123_11; vectorizesign.cpp:28: note: vect_is_simple_use: operand sv.0_20 vectorizesign.cpp:28: note: def_stmt: sv.0_20 = (short int) sv_19; vectorizesign.cpp:28: note: type of def: 3. vectorizesign.cpp:28: note: mark relevant 4, live 0. vectorizesign.cpp:28: note: vect_is_simple_use: operand D.2123_11 vectorizesign.cpp:28: note: def_stmt: D.2123_11 = *D.2122_10; vectorizesign.cpp:28: note: type of def: 3. vectorizesign.cpp:28: note: mark relevant 4, live 0. vectorizesign.cpp:28: note: worklist: examine stmt: D.2123_11 = *D.2122_10; vectorizesign.cpp:28: note: worklist: examine stmt: sv.0_20 = (short int) sv_19; vectorizesign.cpp:28: note: vect_is_simple_use: operand sv_19 vectorizesign.cpp:28: note: def_stmt: sv_19 = sv_18 & 32767; vectorizesign.cpp:28: note: type of def: 3. vectorizesign.cpp:28: note: mark relevant 4, live 0. vectorizesign.cpp:28: note: worklist: examine stmt: sv_19 = sv_18 & 32767; vectorizesign.cpp:28: note: vect_is_simple_use: operand sv_18 vectorizesign.cpp:28: note: def_stmt: sv_18 = (uint16_t) D.2170_17; vectorizesign.cpp:28: note: type of def: 3. vectorizesign.cpp:28: note: mark relevant 4, live 0. vectorizesign.cpp:28: note: worklist: examine stmt: sv_18 = (uint16_t) D.2170_17; vectorizesign.cpp:28: note: vect_is_simple_use: operand D.2170_17 vectorizesign.cpp:28: note: def_stmt: D.2170_17 = D.2124_12 >> 15; vectorizesign.cpp:28: note: type of def: 3. vectorizesign.cpp:28: note: mark relevant 4, live 0. vectorizesign.cpp:28: note: worklist: examine stmt: D.2170_17 = D.2124_12 >> 15; vectorizesign.cpp:28: note: vect_is_simple_use: operand D.2124_12 vectorizesign.cpp:28: note: def_stmt: D.2124_12 = (int) D.2123_11; vectorizesign.cpp:28: note: type of def: 3. vectorizesign.cpp:28: note: mark relevant 4, live 0. vectorizesign.cpp:28: note: worklist: examine stmt: D.2124_12 = (int) D.2123_11; vectorizesign.cpp:28: note: vect_is_simple_use: operand D.2123_11 vectorizesign.cpp:28: note: def_stmt: D.2123_11 = *D.2122_10; vectorizesign.cpp:28: note: type of def: 3. vectorizesign.cpp:28: note: mark relevant 4, live 0. vectorizesign.cpp:28: note: already marked relevant/live. vectorizesign.cpp:28: note: === vect_analyze_data_refs_alignment === vectorizesign.cpp:28: note: vect_compute_data_ref_alignment: vectorizesign.cpp:28: note: can't force alignment of ref: *D.2122_10 vectorizesign.cpp:28: note: vect_compute_data_ref_alignment: vectorizesign.cpp:28: note: can't force alignment of ref: *D.2121_7 vectorizesign.cpp:28: note: === vect_determine_vectorization_factor === vectorizesign.cpp:28: note: ==> examining phi: i_16 = PHI <i_14(5), 0(3)> vectorizesign.cpp:28: note: ==> examining phi: SMT.12_27 = PHI <SMT.12_26(5), SMT.12_25(D)(3)> vectorizesign.cpp:28: note: ==> examining statement: D.2120_5 = i_16 * 2; vectorizesign.cpp:28: note: skip. vectorizesign.cpp:28: note: ==> examining statement: D.2121_7 = out_6(D) + D.2120_5; vectorizesign.cpp:28: note: skip. vectorizesign.cpp:28: note: ==> examining statement: D.2122_10 = in_9(D) + D.2120_5; vectorizesign.cpp:28: note: skip. vectorizesign.cpp:28: note: ==> examining statement: D.2123_11 = *D.2122_10; vectorizesign.cpp:28: note: vectype: vector short int vectorizesign.cpp:28: note: nunits = 8 vectorizesign.cpp:28: note: ==> examining statement: D.2124_12 = (int) D.2123_11; vectorizesign.cpp:28: note: get vectype for scalar type: short int vectorizesign.cpp:28: note: get vectype with 8 units of type short int vectorizesign.cpp:28: note: vectype: vector short int vectorizesign.cpp:28: note: vectype: vector short int vectorizesign.cpp:28: note: nunits = 8 vectorizesign.cpp:28: note: ==> examining statement: D.2170_17 = D.2124_12 >> 15; vectorizesign.cpp:28: note: get vectype for scalar type: int vectorizesign.cpp:28: note: get vectype with 4 units of type int vectorizesign.cpp:28: note: vectype: vector int vectorizesign.cpp:28: note: vectype: vector int vectorizesign.cpp:28: note: nunits = 4 vectorizesign.cpp:28: note: ==> examining statement: sv_18 = (uint16_t) D.2170_17; vectorizesign.cpp:28: note: get vectype for scalar type: uint16_t vectorizesign.cpp:28: note: get vectype with 8 units of type uint16_t vectorizesign.cpp:28: note: vectype: vector short unsigned int vectorizesign.cpp:28: note: vectype: vector short unsigned int vectorizesign.cpp:28: note: nunits = 8 vectorizesign.cpp:28: note: ==> examining statement: sv_19 = sv_18 & 32767; vectorizesign.cpp:28: note: get vectype for scalar type: uint16_t vectorizesign.cpp:28: note: get vectype with 8 units of type uint16_t vectorizesign.cpp:28: note: vectype: vector short unsigned int vectorizesign.cpp:28: note: vectype: vector short unsigned int vectorizesign.cpp:28: note: nunits = 8 vectorizesign.cpp:28: note: ==> examining statement: sv.0_20 = (short int) sv_19; vectorizesign.cpp:28: note: get vectype for scalar type: short int vectorizesign.cpp:28: note: get vectype with 8 units of type short int vectorizesign.cpp:28: note: vectype: vector short int vectorizesign.cpp:28: note: vectype: vector short int vectorizesign.cpp:28: note: nunits = 8 vectorizesign.cpp:28: note: ==> examining statement: D.2167_21 = sv.0_20 ^ D.2123_11; vectorizesign.cpp:28: note: get vectype for scalar type: short int vectorizesign.cpp:28: note: get vectype with 8 units of type short int vectorizesign.cpp:28: note: vectype: vector short int vectorizesign.cpp:28: note: vectype: vector short int vectorizesign.cpp:28: note: nunits = 8 vectorizesign.cpp:28: note: ==> examining statement: D.2166_22 = (uint16_t) D.2167_21; vectorizesign.cpp:28: note: get vectype for scalar type: uint16_t vectorizesign.cpp:28: note: get vectype with 8 units of type uint16_t vectorizesign.cpp:28: note: vectype: vector short unsigned int vectorizesign.cpp:28: note: vectype: vector short unsigned int vectorizesign.cpp:28: note: nunits = 8 vectorizesign.cpp:28: note: ==> examining statement: *D.2121_7 = D.2166_22; vectorizesign.cpp:28: note: vectype: vector short unsigned int vectorizesign.cpp:28: note: nunits = 8 vectorizesign.cpp:28: note: ==> examining statement: i_14 = i_16 + 1; vectorizesign.cpp:28: note: skip. vectorizesign.cpp:28: note: ==> examining statement: if (len_3(D) > i_14) vectorizesign.cpp:28: note: skip. vectorizesign.cpp:28: note: vectorization factor = 8 vectorizesign.cpp:28: note: === vect_analyze_dependences === vectorizesign.cpp:28: note: versioning for alias required: can't determine dependence between *D.2122_10 and *D.2121_7 vectorizesign.cpp:28: note: mark for run-time aliasing test between *D.2122_10 and *D.2121_7 vectorizesign.cpp:28: note: === vect_analyze_data_ref_accesses === vectorizesign.cpp:28: note: === vect_prune_runtime_alias_test_list === vectorizesign.cpp:28: note: === vect_analyze_slp === vectorizesign.cpp:28: note: === vect_make_slp_decision === vectorizesign.cpp:28: note: === vect_detect_hybrid_slp === vectorizesign.cpp:28: note: === vect_enhance_data_refs_alignment === vectorizesign.cpp:28: note: Unknown misalignment, is_packed = 0 vectorizesign.cpp:28: note: Alignment of access forced using versioning. vectorizesign.cpp:28: note: Versioning for alignment will be applied. vectorizesign.cpp:28: note: Vectorizing an unaligned access. vectorizesign.cpp:28: note: === vect_analyze_operations === vectorizesign.cpp:28: note: examining phi: i_16 = PHI <i_14(5), 0(3)> vectorizesign.cpp:28: note: examining phi: SMT.12_27 = PHI <SMT.12_26(5), SMT.12_25(D)(3)> vectorizesign.cpp:28: note: ==> examining statement: D.2120_5 = i_16 * 2; vectorizesign.cpp:28: note: irrelevant. vectorizesign.cpp:28: note: ==> examining statement: D.2121_7 = out_6(D) + D.2120_5; vectorizesign.cpp:28: note: irrelevant. vectorizesign.cpp:28: note: ==> examining statement: D.2122_10 = in_9(D) + D.2120_5; vectorizesign.cpp:28: note: irrelevant. vectorizesign.cpp:28: note: ==> examining statement: D.2123_11 = *D.2122_10; vectorizesign.cpp:28: note: get vectype with 8 units of type short int vectorizesign.cpp:28: note: vectype: vector short int vectorizesign.cpp:28: note: vect_is_simple_use: operand *D.2122_10 vectorizesign.cpp:28: note: not ssa-name. vectorizesign.cpp:28: note: use not simple. vectorizesign.cpp:28: note: vect_is_simple_use: operand *D.2122_10 vectorizesign.cpp:28: note: not ssa-name. vectorizesign.cpp:28: note: use not simple. vectorizesign.cpp:28: note: vect_model_load_cost: unaligned supported by hardware. vectorizesign.cpp:28: note: vect_model_load_cost: inside_cost = 2, outside_cost = 0 . vectorizesign.cpp:28: note: ==> examining statement: D.2124_12 = (int) D.2123_11; vectorizesign.cpp:28: note: get vectype with 8 units of type short int vectorizesign.cpp:28: note: vectype: vector short int vectorizesign.cpp:28: note: get vectype with 4 units of type int vectorizesign.cpp:28: note: vectype: vector int vectorizesign.cpp:28: note: vect_is_simple_use: operand D.2123_11 vectorizesign.cpp:28: note: def_stmt: D.2123_11 = *D.2122_10; vectorizesign.cpp:28: note: type of def: 3. vectorizesign.cpp:28: note: get vectype with 4 units of type int vectorizesign.cpp:28: note: vectype: vector int vectorizesign.cpp:28: note: === vectorizable_promotion === vectorizesign.cpp:28: note: vect_model_simple_cost: inside_cost = 2, outside_cost = 0 . vectorizesign.cpp:28: note: ==> examining statement: D.2170_17 = D.2124_12 >> 15; vectorizesign.cpp:28: note: get vectype with 4 units of type int vectorizesign.cpp:28: note: vectype: vector int vectorizesign.cpp:28: note: vect_is_simple_use: operand D.2124_12 vectorizesign.cpp:28: note: def_stmt: D.2124_12 = (int) D.2123_11; vectorizesign.cpp:28: note: type of def: 3. vectorizesign.cpp:28: note: vect_is_simple_use: operand 15 vectorizesign.cpp:28: note: vector/scalar shift/rotate found. vectorizesign.cpp:28: note: === vectorizable_operation === vectorizesign.cpp:28: note: vect_model_simple_cost: inside_cost = 2, outside_cost = 1 . vectorizesign.cpp:28: note: ==> examining statement: sv_18 = (uint16_t) D.2170_17; vectorizesign.cpp:28: note: get vectype with 4 units of type int vectorizesign.cpp:28: note: vectype: vector int vectorizesign.cpp:28: note: get vectype with 8 units of type uint16_t vectorizesign.cpp:28: note: vectype: vector short unsigned int vectorizesign.cpp:28: note: get vectype with 4 units of type int vectorizesign.cpp:28: note: vectype: vector int vectorizesign.cpp:28: note: get vectype with 8 units of type uint16_t vectorizesign.cpp:28: note: vectype: vector short unsigned int vectorizesign.cpp:28: note: vect_is_simple_use: operand D.2170_17 vectorizesign.cpp:28: note: def_stmt: D.2170_17 = D.2124_12 >> 15; vectorizesign.cpp:28: note: type of def: 3. vectorizesign.cpp:28: note: get vectype with 8 units of type uint16_t vectorizesign.cpp:28: note: vectype: vector short unsigned int vectorizesign.cpp:28: note: === vectorizable_demotion === vectorizesign.cpp:28: note: vect_model_simple_cost: inside_cost = 1, outside_cost = 0 . vectorizesign.cpp:28: note: ==> examining statement: sv_19 = sv_18 & 32767; vectorizesign.cpp:28: note: get vectype with 8 units of type uint16_t vectorizesign.cpp:28: note: vectype: vector short unsigned int vectorizesign.cpp:28: note: vect_is_simple_use: operand sv_18 vectorizesign.cpp:28: note: def_stmt: sv_18 = (uint16_t) D.2170_17; vectorizesign.cpp:28: note: type of def: 3. vectorizesign.cpp:28: note: vect_is_simple_use: operand 32767 vectorizesign.cpp:28: note: === vectorizable_operation === vectorizesign.cpp:28: note: vect_model_simple_cost: inside_cost = 1, outside_cost = 1 . vectorizesign.cpp:28: note: ==> examining statement: sv.0_20 = (short int) sv_19; vectorizesign.cpp:28: note: get vectype with 8 units of type uint16_t vectorizesign.cpp:28: note: vectype: vector short unsigned int vectorizesign.cpp:28: note: get vectype with 8 units of type short int vectorizesign.cpp:28: note: vectype: vector short int vectorizesign.cpp:28: note: get vectype with 8 units of type uint16_t vectorizesign.cpp:28: note: vectype: vector short unsigned int vectorizesign.cpp:28: note: get vectype with 8 units of type short int vectorizesign.cpp:28: note: vectype: vector short int vectorizesign.cpp:28: note: get vectype with 8 units of type short int vectorizesign.cpp:28: note: vectype: vector short int vectorizesign.cpp:28: note: vect_is_simple_use: operand sv_19 vectorizesign.cpp:28: note: def_stmt: sv_19 = sv_18 & 32767; vectorizesign.cpp:28: note: type of def: 3. vectorizesign.cpp:28: note: no optab. vectorizesign.cpp:28: note: not vectorized: relevant stmt not supported: sv.0_20 = (short int) sv_19; vectorizesign.cpp:28: note: bad operation or unsupported loop bound. vectorizesign.cpp:27: note: vectorized 0 loops in function. vectorizesign.cpp:35: note: ===== analyze_loop_nest ===== vectorizesign.cpp:35: note: === vect_analyze_loop_form === vectorizesign.cpp:35: note: split exit edge. vectorizesign.cpp:35: note: === get_loop_niters === vectorizesign.cpp:35: note: ==> get_loop_niters:len_3(D) vectorizesign.cpp:35: note: Symbolic number of iterations is len_3(D) vectorizesign.cpp:35: note: === vect_analyze_data_refs === vectorizesign.cpp:35: note: get vectype with 8 units of type short int vectorizesign.cpp:35: note: vectype: vector short int vectorizesign.cpp:35: note: get vectype with 8 units of type short unsigned int vectorizesign.cpp:35: note: vectype: vector short unsigned int vectorizesign.cpp:35: note: === vect_analyze_scalar_cycles === vectorizesign.cpp:35: note: Analyze phi: i_8 = PHI <i_14(8), 0(3)> vectorizesign.cpp:35: note: Access function of PHI: {0, +, 1}_1 vectorizesign.cpp:35: note: step: 1, init: 0 vectorizesign.cpp:35: note: Detected induction. vectorizesign.cpp:35: note: Analyze phi: SMT.54_15 = PHI <SMT.54_24(8), SMT.54_23(D)(3)> vectorizesign.cpp:35: note: === vect_pattern_recog === vectorizesign.cpp:35: note: vect_is_simple_use: operand i_8 vectorizesign.cpp:35: note: def_stmt: i_8 = PHI <i_14(8), 0(3)> vectorizesign.cpp:35: note: type of def: 4. vectorizesign.cpp:35: note: === vect_mark_stmts_to_be_vectorized === vectorizesign.cpp:35: note: init: phi relevant? i_8 = PHI <i_14(8), 0(3)> vectorizesign.cpp:35: note: init: phi relevant? SMT.54_15 = PHI <SMT.54_24(8), SMT.54_23(D)(3)> vectorizesign.cpp:35: note: init: stmt relevant? D.2137_5 = i_8 * 2; vectorizesign.cpp:35: note: init: stmt relevant? D.2139_10 = in_9(D) + D.2137_5; vectorizesign.cpp:35: note: init: stmt relevant? D.2140_11 = *D.2139_10; vectorizesign.cpp:35: note: init: stmt relevant? D.2175_16 = ~D.2140_11; vectorizesign.cpp:35: note: init: stmt relevant? D.2174_17 = (uint16_t) D.2175_16; vectorizesign.cpp:35: note: init: stmt relevant? D.2173_18 = D.2174_17 | 32768; vectorizesign.cpp:35: note: init: stmt relevant? D.2173_19 = (uint16_t) D.2140_11; vectorizesign.cpp:35: note: init: stmt relevant? D.2173_20 = [cond_expr] D.2140_11 < 0 ? D.2173_18 : D.2173_19; vectorizesign.cpp:35: note: init: stmt relevant? D.2138_7 = out_6(D) + D.2137_5; vectorizesign.cpp:35: note: init: stmt relevant? *D.2138_7 = D.2173_20; vectorizesign.cpp:35: note: vec_stmt_relevant_p: stmt has vdefs. vectorizesign.cpp:35: note: mark relevant 4, live 0. vectorizesign.cpp:35: note: init: stmt relevant? i_14 = i_8 + 1; vectorizesign.cpp:35: note: init: stmt relevant? if (len_3(D) > i_14) vectorizesign.cpp:35: note: worklist: examine stmt: *D.2138_7 = D.2173_20; vectorizesign.cpp:35: note: vect_is_simple_use: operand D.2173_20 vectorizesign.cpp:35: note: def_stmt: D.2173_20 = [cond_expr] D.2140_11 < 0 ? D.2173_18 : D.2173_19; vectorizesign.cpp:35: note: type of def: 3. vectorizesign.cpp:35: note: mark relevant 4, live 0. vectorizesign.cpp:35: note: worklist: examine stmt: D.2173_20 = [cond_expr] D.2140_11 < 0 ? D.2173_18 : D.2173_19; vectorizesign.cpp:35: note: vect_is_simple_use: operand D.2140_11 vectorizesign.cpp:35: note: def_stmt: D.2140_11 = *D.2139_10; vectorizesign.cpp:35: note: type of def: 3. vectorizesign.cpp:35: note: mark relevant 4, live 0. vectorizesign.cpp:35: note: vect_is_simple_use: operand D.2173_18 vectorizesign.cpp:35: note: def_stmt: D.2173_18 = D.2174_17 | 32768; vectorizesign.cpp:35: note: type of def: 3. vectorizesign.cpp:35: note: mark relevant 4, live 0. vectorizesign.cpp:35: note: vect_is_simple_use: operand D.2173_19 vectorizesign.cpp:35: note: def_stmt: D.2173_19 = (uint16_t) D.2140_11; vectorizesign.cpp:35: note: type of def: 3. vectorizesign.cpp:35: note: mark relevant 4, live 0. vectorizesign.cpp:35: note: worklist: examine stmt: D.2173_19 = (uint16_t) D.2140_11; vectorizesign.cpp:35: note: vect_is_simple_use: operand D.2140_11 vectorizesign.cpp:35: note: def_stmt: D.2140_11 = *D.2139_10; vectorizesign.cpp:35: note: type of def: 3. vectorizesign.cpp:35: note: mark relevant 4, live 0. vectorizesign.cpp:35: note: already marked relevant/live. vectorizesign.cpp:35: note: worklist: examine stmt: D.2173_18 = D.2174_17 | 32768; vectorizesign.cpp:35: note: vect_is_simple_use: operand D.2174_17 vectorizesign.cpp:35: note: def_stmt: D.2174_17 = (uint16_t) D.2175_16; vectorizesign.cpp:35: note: type of def: 3. vectorizesign.cpp:35: note: mark relevant 4, live 0. vectorizesign.cpp:35: note: worklist: examine stmt: D.2174_17 = (uint16_t) D.2175_16; vectorizesign.cpp:35: note: vect_is_simple_use: operand D.2175_16 vectorizesign.cpp:35: note: def_stmt: D.2175_16 = ~D.2140_11; vectorizesign.cpp:35: note: type of def: 3. vectorizesign.cpp:35: note: mark relevant 4, live 0. vectorizesign.cpp:35: note: worklist: examine stmt: D.2175_16 = ~D.2140_11; vectorizesign.cpp:35: note: vect_is_simple_use: operand D.2140_11 vectorizesign.cpp:35: note: def_stmt: D.2140_11 = *D.2139_10; vectorizesign.cpp:35: note: type of def: 3. vectorizesign.cpp:35: note: mark relevant 4, live 0. vectorizesign.cpp:35: note: already marked relevant/live. vectorizesign.cpp:35: note: worklist: examine stmt: D.2140_11 = *D.2139_10; vectorizesign.cpp:35: note: === vect_analyze_data_refs_alignment === vectorizesign.cpp:35: note: vect_compute_data_ref_alignment: vectorizesign.cpp:35: note: can't force alignment of ref: *D.2139_10 vectorizesign.cpp:35: note: vect_compute_data_ref_alignment: vectorizesign.cpp:35: note: can't force alignment of ref: *D.2138_7 vectorizesign.cpp:35: note: === vect_determine_vectorization_factor === vectorizesign.cpp:35: note: ==> examining phi: i_8 = PHI <i_14(8), 0(3)> vectorizesign.cpp:35: note: ==> examining phi: SMT.54_15 = PHI <SMT.54_24(8), SMT.54_23(D)(3)> vectorizesign.cpp:35: note: ==> examining statement: D.2137_5 = i_8 * 2; vectorizesign.cpp:35: note: skip. vectorizesign.cpp:35: note: ==> examining statement: D.2139_10 = in_9(D) + D.2137_5; vectorizesign.cpp:35: note: skip. vectorizesign.cpp:35: note: ==> examining statement: D.2140_11 = *D.2139_10; vectorizesign.cpp:35: note: vectype: vector short int vectorizesign.cpp:35: note: nunits = 8 vectorizesign.cpp:35: note: ==> examining statement: D.2175_16 = ~D.2140_11; vectorizesign.cpp:35: note: get vectype for scalar type: short int vectorizesign.cpp:35: note: get vectype with 8 units of type short int vectorizesign.cpp:35: note: vectype: vector short int vectorizesign.cpp:35: note: vectype: vector short int vectorizesign.cpp:35: note: nunits = 8 vectorizesign.cpp:35: note: ==> examining statement: D.2174_17 = (uint16_t) D.2175_16; vectorizesign.cpp:35: note: get vectype for scalar type: uint16_t vectorizesign.cpp:35: note: get vectype with 8 units of type uint16_t vectorizesign.cpp:35: note: vectype: vector short unsigned int vectorizesign.cpp:35: note: vectype: vector short unsigned int vectorizesign.cpp:35: note: nunits = 8 vectorizesign.cpp:35: note: ==> examining statement: D.2173_18 = D.2174_17 | 32768; vectorizesign.cpp:35: note: get vectype for scalar type: uint16_t vectorizesign.cpp:35: note: get vectype with 8 units of type uint16_t vectorizesign.cpp:35: note: vectype: vector short unsigned int vectorizesign.cpp:35: note: vectype: vector short unsigned int vectorizesign.cpp:35: note: nunits = 8 vectorizesign.cpp:35: note: ==> examining statement: D.2173_19 = (uint16_t) D.2140_11; vectorizesign.cpp:35: note: get vectype for scalar type: uint16_t vectorizesign.cpp:35: note: get vectype with 8 units of type uint16_t vectorizesign.cpp:35: note: vectype: vector short unsigned int vectorizesign.cpp:35: note: vectype: vector short unsigned int vectorizesign.cpp:35: note: nunits = 8 vectorizesign.cpp:35: note: ==> examining statement: D.2173_20 = [cond_expr] D.2140_11 < 0 ? D.2173_18 : D.2173_19; vectorizesign.cpp:35: note: get vectype for scalar type: uint16_t vectorizesign.cpp:35: note: get vectype with 8 units of type uint16_t vectorizesign.cpp:35: note: vectype: vector short unsigned int vectorizesign.cpp:35: note: vectype: vector short unsigned int vectorizesign.cpp:35: note: nunits = 8 vectorizesign.cpp:35: note: ==> examining statement: D.2138_7 = out_6(D) + D.2137_5; vectorizesign.cpp:35: note: skip. vectorizesign.cpp:35: note: ==> examining statement: *D.2138_7 = D.2173_20; vectorizesign.cpp:35: note: vectype: vector short unsigned int vectorizesign.cpp:35: note: nunits = 8 vectorizesign.cpp:35: note: ==> examining statement: i_14 = i_8 + 1; vectorizesign.cpp:35: note: skip. vectorizesign.cpp:35: note: ==> examining statement: if (len_3(D) > i_14) vectorizesign.cpp:35: note: skip. vectorizesign.cpp:35: note: vectorization factor = 8 vectorizesign.cpp:35: note: === vect_analyze_dependences === vectorizesign.cpp:35: note: versioning for alias required: can't determine dependence between *D.2139_10 and *D.2138_7 vectorizesign.cpp:35: note: mark for run-time aliasing test between *D.2139_10 and *D.2138_7 vectorizesign.cpp:35: note: === vect_analyze_data_ref_accesses === vectorizesign.cpp:35: note: === vect_prune_runtime_alias_test_list === vectorizesign.cpp:35: note: === vect_analyze_slp === vectorizesign.cpp:35: note: === vect_make_slp_decision === vectorizesign.cpp:35: note: === vect_detect_hybrid_slp === vectorizesign.cpp:35: note: === vect_enhance_data_refs_alignment === vectorizesign.cpp:35: note: Unknown misalignment, is_packed = 0 vectorizesign.cpp:35: note: Alignment of access forced using versioning. vectorizesign.cpp:35: note: Versioning for alignment will be applied. vectorizesign.cpp:35: note: Vectorizing an unaligned access. vectorizesign.cpp:35: note: === vect_analyze_operations === vectorizesign.cpp:35: note: examining phi: i_8 = PHI <i_14(8), 0(3)> vectorizesign.cpp:35: note: examining phi: SMT.54_15 = PHI <SMT.54_24(8), SMT.54_23(D)(3)> vectorizesign.cpp:35: note: ==> examining statement: D.2137_5 = i_8 * 2; vectorizesign.cpp:35: note: irrelevant. vectorizesign.cpp:35: note: ==> examining statement: D.2139_10 = in_9(D) + D.2137_5; vectorizesign.cpp:35: note: irrelevant. vectorizesign.cpp:35: note: ==> examining statement: D.2140_11 = *D.2139_10; vectorizesign.cpp:35: note: get vectype with 8 units of type short int vectorizesign.cpp:35: note: vectype: vector short int vectorizesign.cpp:35: note: vect_is_simple_use: operand *D.2139_10 vectorizesign.cpp:35: note: not ssa-name. vectorizesign.cpp:35: note: use not simple. vectorizesign.cpp:35: note: vect_is_simple_use: operand *D.2139_10 vectorizesign.cpp:35: note: not ssa-name. vectorizesign.cpp:35: note: use not simple. vectorizesign.cpp:35: note: vect_model_load_cost: unaligned supported by hardware. vectorizesign.cpp:35: note: vect_model_load_cost: inside_cost = 2, outside_cost = 0 . vectorizesign.cpp:35: note: ==> examining statement: D.2175_16 = ~D.2140_11; vectorizesign.cpp:35: note: get vectype with 8 units of type short int vectorizesign.cpp:35: note: vectype: vector short int vectorizesign.cpp:35: note: vect_is_simple_use: operand D.2140_11 vectorizesign.cpp:35: note: def_stmt: D.2140_11 = *D.2139_10; vectorizesign.cpp:35: note: type of def: 3. vectorizesign.cpp:35: note: === vectorizable_operation === vectorizesign.cpp:35: note: vect_model_simple_cost: inside_cost = 1, outside_cost = 0 . vectorizesign.cpp:35: note: ==> examining statement: D.2174_17 = (uint16_t) D.2175_16; vectorizesign.cpp:35: note: get vectype with 8 units of type short int vectorizesign.cpp:35: note: vectype: vector short int vectorizesign.cpp:35: note: get vectype with 8 units of type uint16_t vectorizesign.cpp:35: note: vectype: vector short unsigned int vectorizesign.cpp:35: note: get vectype with 8 units of type short int vectorizesign.cpp:35: note: vectype: vector short int vectorizesign.cpp:35: note: get vectype with 8 units of type uint16_t vectorizesign.cpp:35: note: vectype: vector short unsigned int vectorizesign.cpp:35: note: get vectype with 8 units of type uint16_t vectorizesign.cpp:35: note: vectype: vector short unsigned int vectorizesign.cpp:35: note: vect_is_simple_use: operand D.2175_16 vectorizesign.cpp:35: note: def_stmt: D.2175_16 = ~D.2140_11; vectorizesign.cpp:35: note: type of def: 3. vectorizesign.cpp:35: note: no optab. vectorizesign.cpp:35: note: not vectorized: relevant stmt not supported: D.2174_17 = (uint16_t) D.2175_16; vectorizesign.cpp:35: note: bad operation or unsupported loop bound. vectorizesign.cpp:34: note: vectorized 0 loops in function. vectorizesign.cpp:42: note: ===== analyze_loop_nest ===== vectorizesign.cpp:42: note: === vect_analyze_loop_form === vectorizesign.cpp:42: note: split exit edge. vectorizesign.cpp:42: note: === get_loop_niters === vectorizesign.cpp:42: note: ==> get_loop_niters:len_3(D) vectorizesign.cpp:42: note: Symbolic number of iterations is len_3(D) vectorizesign.cpp:42: note: === vect_analyze_data_refs === vectorizesign.cpp:42: note: get vectype with 8 units of type short int vectorizesign.cpp:42: note: vectype: vector short int vectorizesign.cpp:42: note: get vectype with 8 units of type short unsigned int vectorizesign.cpp:42: note: vectype: vector short unsigned int vectorizesign.cpp:42: note: === vect_analyze_scalar_cycles === vectorizesign.cpp:42: note: Analyze phi: i_8 = PHI <i_14(8), 0(3)> vectorizesign.cpp:42: note: Access function of PHI: {0, +, 1}_1 vectorizesign.cpp:42: note: step: 1, init: 0 vectorizesign.cpp:42: note: Detected induction. vectorizesign.cpp:42: note: Analyze phi: SMT.90_15 = PHI <SMT.90_24(8), SMT.90_23(D)(3)> vectorizesign.cpp:42: note: === vect_pattern_recog === vectorizesign.cpp:42: note: vect_is_simple_use: operand i_8 vectorizesign.cpp:42: note: def_stmt: i_8 = PHI <i_14(8), 0(3)> vectorizesign.cpp:42: note: type of def: 4. vectorizesign.cpp:42: note: === vect_mark_stmts_to_be_vectorized === vectorizesign.cpp:42: note: init: phi relevant? i_8 = PHI <i_14(8), 0(3)> vectorizesign.cpp:42: note: init: phi relevant? SMT.90_15 = PHI <SMT.90_24(8), SMT.90_23(D)(3)> vectorizesign.cpp:42: note: init: stmt relevant? D.2154_5 = i_8 * 2; vectorizesign.cpp:42: note: init: stmt relevant? D.2156_10 = in_9(D) + D.2154_5; vectorizesign.cpp:42: note: init: stmt relevant? D.2157_11 = *D.2156_10; vectorizesign.cpp:42: note: init: stmt relevant? v.1_16 = (uint16_t) D.2157_11; vectorizesign.cpp:42: note: init: stmt relevant? D.2179_17 = 1 - v.1_16; vectorizesign.cpp:42: note: init: stmt relevant? D.2178_18 = D.2179_17 | 32768; vectorizesign.cpp:42: note: init: stmt relevant? D.2178_19 = (uint16_t) D.2157_11; vectorizesign.cpp:42: note: init: stmt relevant? D.2178_20 = [cond_expr] D.2157_11 < 0 ? D.2178_18 : D.2178_19; vectorizesign.cpp:42: note: init: stmt relevant? D.2155_7 = out_6(D) + D.2154_5; vectorizesign.cpp:42: note: init: stmt relevant? *D.2155_7 = D.2178_20; vectorizesign.cpp:42: note: vec_stmt_relevant_p: stmt has vdefs. vectorizesign.cpp:42: note: mark relevant 4, live 0. vectorizesign.cpp:42: note: init: stmt relevant? i_14 = i_8 + 1; vectorizesign.cpp:42: note: init: stmt relevant? if (len_3(D) > i_14) vectorizesign.cpp:42: note: worklist: examine stmt: *D.2155_7 = D.2178_20; vectorizesign.cpp:42: note: vect_is_simple_use: operand D.2178_20 vectorizesign.cpp:42: note: def_stmt: D.2178_20 = [cond_expr] D.2157_11 < 0 ? D.2178_18 : D.2178_19; vectorizesign.cpp:42: note: type of def: 3. vectorizesign.cpp:42: note: mark relevant 4, live 0. vectorizesign.cpp:42: note: worklist: examine stmt: D.2178_20 = [cond_expr] D.2157_11 < 0 ? D.2178_18 : D.2178_19; vectorizesign.cpp:42: note: vect_is_simple_use: operand D.2157_11 vectorizesign.cpp:42: note: def_stmt: D.2157_11 = *D.2156_10; vectorizesign.cpp:42: note: type of def: 3. vectorizesign.cpp:42: note: mark relevant 4, live 0. vectorizesign.cpp:42: note: vect_is_simple_use: operand D.2178_18 vectorizesign.cpp:42: note: def_stmt: D.2178_18 = D.2179_17 | 32768; vectorizesign.cpp:42: note: type of def: 3. vectorizesign.cpp:42: note: mark relevant 4, live 0. vectorizesign.cpp:42: note: vect_is_simple_use: operand D.2178_19 vectorizesign.cpp:42: note: def_stmt: D.2178_19 = (uint16_t) D.2157_11; vectorizesign.cpp:42: note: type of def: 3. vectorizesign.cpp:42: note: mark relevant 4, live 0. vectorizesign.cpp:42: note: worklist: examine stmt: D.2178_19 = (uint16_t) D.2157_11; vectorizesign.cpp:42: note: vect_is_simple_use: operand D.2157_11 vectorizesign.cpp:42: note: def_stmt: D.2157_11 = *D.2156_10; vectorizesign.cpp:42: note: type of def: 3. vectorizesign.cpp:42: note: mark relevant 4, live 0. vectorizesign.cpp:42: note: already marked relevant/live. vectorizesign.cpp:42: note: worklist: examine stmt: D.2178_18 = D.2179_17 | 32768; vectorizesign.cpp:42: note: vect_is_simple_use: operand D.2179_17 vectorizesign.cpp:42: note: def_stmt: D.2179_17 = 1 - v.1_16; vectorizesign.cpp:42: note: type of def: 3. vectorizesign.cpp:42: note: mark relevant 4, live 0. vectorizesign.cpp:42: note: worklist: examine stmt: D.2179_17 = 1 - v.1_16; vectorizesign.cpp:42: note: vect_is_simple_use: operand v.1_16 vectorizesign.cpp:42: note: def_stmt: v.1_16 = (uint16_t) D.2157_11; vectorizesign.cpp:42: note: type of def: 3. vectorizesign.cpp:42: note: mark relevant 4, live 0. vectorizesign.cpp:42: note: worklist: examine stmt: v.1_16 = (uint16_t) D.2157_11; vectorizesign.cpp:42: note: vect_is_simple_use: operand D.2157_11 vectorizesign.cpp:42: note: def_stmt: D.2157_11 = *D.2156_10; vectorizesign.cpp:42: note: type of def: 3. vectorizesign.cpp:42: note: mark relevant 4, live 0. vectorizesign.cpp:42: note: already marked relevant/live. vectorizesign.cpp:42: note: worklist: examine stmt: D.2157_11 = *D.2156_10; vectorizesign.cpp:42: note: === vect_analyze_data_refs_alignment === vectorizesign.cpp:42: note: vect_compute_data_ref_alignment: vectorizesign.cpp:42: note: can't force alignment of ref: *D.2156_10 vectorizesign.cpp:42: note: vect_compute_data_ref_alignment: vectorizesign.cpp:42: note: can't force alignment of ref: *D.2155_7 vectorizesign.cpp:42: note: === vect_determine_vectorization_factor === vectorizesign.cpp:42: note: ==> examining phi: i_8 = PHI <i_14(8), 0(3)> vectorizesign.cpp:42: note: ==> examining phi: SMT.90_15 = PHI <SMT.90_24(8), SMT.90_23(D)(3)> vectorizesign.cpp:42: note: ==> examining statement: D.2154_5 = i_8 * 2; vectorizesign.cpp:42: note: skip. vectorizesign.cpp:42: note: ==> examining statement: D.2156_10 = in_9(D) + D.2154_5; vectorizesign.cpp:42: note: skip. vectorizesign.cpp:42: note: ==> examining statement: D.2157_11 = *D.2156_10; vectorizesign.cpp:42: note: vectype: vector short int vectorizesign.cpp:42: note: nunits = 8 vectorizesign.cpp:42: note: ==> examining statement: v.1_16 = (uint16_t) D.2157_11; vectorizesign.cpp:42: note: get vectype for scalar type: uint16_t vectorizesign.cpp:42: note: get vectype with 8 units of type uint16_t vectorizesign.cpp:42: note: vectype: vector short unsigned int vectorizesign.cpp:42: note: vectype: vector short unsigned int vectorizesign.cpp:42: note: nunits = 8 vectorizesign.cpp:42: note: ==> examining statement: D.2179_17 = 1 - v.1_16; vectorizesign.cpp:42: note: get vectype for scalar type: uint16_t vectorizesign.cpp:42: note: get vectype with 8 units of type uint16_t vectorizesign.cpp:42: note: vectype: vector short unsigned int vectorizesign.cpp:42: note: vectype: vector short unsigned int vectorizesign.cpp:42: note: nunits = 8 vectorizesign.cpp:42: note: ==> examining statement: D.2178_18 = D.2179_17 | 32768; vectorizesign.cpp:42: note: get vectype for scalar type: uint16_t vectorizesign.cpp:42: note: get vectype with 8 units of type uint16_t vectorizesign.cpp:42: note: vectype: vector short unsigned int vectorizesign.cpp:42: note: vectype: vector short unsigned int vectorizesign.cpp:42: note: nunits = 8 vectorizesign.cpp:42: note: ==> examining statement: D.2178_19 = (uint16_t) D.2157_11; vectorizesign.cpp:42: note: get vectype for scalar type: uint16_t vectorizesign.cpp:42: note: get vectype with 8 units of type uint16_t vectorizesign.cpp:42: note: vectype: vector short unsigned int vectorizesign.cpp:42: note: vectype: vector short unsigned int vectorizesign.cpp:42: note: nunits = 8 vectorizesign.cpp:42: note: ==> examining statement: D.2178_20 = [cond_expr] D.2157_11 < 0 ? D.2178_18 : D.2178_19; vectorizesign.cpp:42: note: get vectype for scalar type: uint16_t vectorizesign.cpp:42: note: get vectype with 8 units of type uint16_t vectorizesign.cpp:42: note: vectype: vector short unsigned int vectorizesign.cpp:42: note: vectype: vector short unsigned int vectorizesign.cpp:42: note: nunits = 8 vectorizesign.cpp:42: note: ==> examining statement: D.2155_7 = out_6(D) + D.2154_5; vectorizesign.cpp:42: note: skip. vectorizesign.cpp:42: note: ==> examining statement: *D.2155_7 = D.2178_20; vectorizesign.cpp:42: note: vectype: vector short unsigned int vectorizesign.cpp:42: note: nunits = 8 vectorizesign.cpp:42: note: ==> examining statement: i_14 = i_8 + 1; vectorizesign.cpp:42: note: skip. vectorizesign.cpp:42: note: ==> examining statement: if (len_3(D) > i_14) vectorizesign.cpp:42: note: skip. vectorizesign.cpp:42: note: vectorization factor = 8 vectorizesign.cpp:42: note: === vect_analyze_dependences === vectorizesign.cpp:42: note: versioning for alias required: can't determine dependence between *D.2156_10 and *D.2155_7 vectorizesign.cpp:42: note: mark for run-time aliasing test between *D.2156_10 and *D.2155_7 vectorizesign.cpp:42: note: === vect_analyze_data_ref_accesses === vectorizesign.cpp:42: note: === vect_prune_runtime_alias_test_list === vectorizesign.cpp:42: note: === vect_analyze_slp === vectorizesign.cpp:42: note: === vect_make_slp_decision === vectorizesign.cpp:42: note: === vect_detect_hybrid_slp === vectorizesign.cpp:42: note: === vect_enhance_data_refs_alignment === vectorizesign.cpp:42: note: Unknown misalignment, is_packed = 0 vectorizesign.cpp:42: note: Alignment of access forced using versioning. vectorizesign.cpp:42: note: Versioning for alignment will be applied. vectorizesign.cpp:42: note: Vectorizing an unaligned access. vectorizesign.cpp:42: note: === vect_analyze_operations === vectorizesign.cpp:42: note: examining phi: i_8 = PHI <i_14(8), 0(3)> vectorizesign.cpp:42: note: examining phi: SMT.90_15 = PHI <SMT.90_24(8), SMT.90_23(D)(3)> vectorizesign.cpp:42: note: ==> examining statement: D.2154_5 = i_8 * 2; vectorizesign.cpp:42: note: irrelevant. vectorizesign.cpp:42: note: ==> examining statement: D.2156_10 = in_9(D) + D.2154_5; vectorizesign.cpp:42: note: irrelevant. vectorizesign.cpp:42: note: ==> examining statement: D.2157_11 = *D.2156_10; vectorizesign.cpp:42: note: get vectype with 8 units of type short int vectorizesign.cpp:42: note: vectype: vector short int vectorizesign.cpp:42: note: vect_is_simple_use: operand *D.2156_10 vectorizesign.cpp:42: note: not ssa-name. vectorizesign.cpp:42: note: use not simple. vectorizesign.cpp:42: note: vect_is_simple_use: operand *D.2156_10 vectorizesign.cpp:42: note: not ssa-name. vectorizesign.cpp:42: note: use not simple. vectorizesign.cpp:42: note: vect_model_load_cost: unaligned supported by hardware. vectorizesign.cpp:42: note: vect_model_load_cost: inside_cost = 2, outside_cost = 0 . vectorizesign.cpp:42: note: ==> examining statement: v.1_16 = (uint16_t) D.2157_11; vectorizesign.cpp:42: note: get vectype with 8 units of type short int vectorizesign.cpp:42: note: vectype: vector short int vectorizesign.cpp:42: note: get vectype with 8 units of type uint16_t vectorizesign.cpp:42: note: vectype: vector short unsigned int vectorizesign.cpp:42: note: get vectype with 8 units of type short int vectorizesign.cpp:42: note: vectype: vector short int vectorizesign.cpp:42: note: get vectype with 8 units of type uint16_t vectorizesign.cpp:42: note: vectype: vector short unsigned int vectorizesign.cpp:42: note: get vectype with 8 units of type uint16_t vectorizesign.cpp:42: note: vectype: vector short unsigned int vectorizesign.cpp:42: note: vect_is_simple_use: operand D.2157_11 vectorizesign.cpp:42: note: def_stmt: D.2157_11 = *D.2156_10; vectorizesign.cpp:42: note: type of def: 3. vectorizesign.cpp:42: note: no optab. vectorizesign.cpp:42: note: not vectorized: relevant stmt not supported: v.1_16 = (uint16_t) D.2157_11; vectorizesign.cpp:42: note: bad operation or unsupported loop bound. vectorizesign.cpp:41: note: vectorized 0 loops in function.