https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102080
--- Comment #4 from Hongtao.liu <crazylht at gmail dot com> --- diff --git a/test.c.032t.ccp1 b/test.c.033t.forwprop1 index 5b18739..c6f0587 100644 --- a/test.c.032t.ccp1 +++ b/test.c.033t.forwprop1 @@ -31,11 +31,12 @@ void EncodedFromDisplay () __m256 __trans_tmp_11; vector(8) float _mm256_mul_ps___A.2_1; vector(8) float _mm256_mul_ps___B.3_2; + vector(8) <signed-boolean:32> _5; vector(8) float _mm256_blendv_ps___M.0_6; vector(8) float _mm256_blendv_ps___Y.1_7; vector(8) int _8; vector(8) <signed-boolean:32> _9; - vector(8) float _10; + vector(8) float _12; <bb 2> : _mm256_mul_ps___A.2_1 = _mm256_mul_ps___A; @@ -45,8 +46,9 @@ void EncodedFromDisplay () _mm256_blendv_ps___Y.1_7 = _mm256_blendv_ps___Y; _8 = VIEW_CONVERT_EXPR<vector(8) int>(_mm256_blendv_ps___M.0_6); _9 = _8 < { 0, 0, 0, 0, 0, 0, 0, 0 }; - _10 = VEC_COND_EXPR <_9, _mm256_blendv_ps___Y.1_7, __trans_tmp_11_4>; - IfThenElse___trans_tmp_9 = _10; + _5 = _8 >= { 0, 0, 0, 0, 0, 0, 0, 0 }; + _12 = .COND_MUL (_5, _mm256_mul_ps___A.2_1, _mm256_mul_ps___B.3_2, _mm256_blendv_ps___Y.1_7); + IfThenElse___trans_tmp_9 = _12; return; fwprop1 should check if the type of _5 satisfies the predicate of cond_mul.