[Bug target/96814] [11 Regression] wrong code with -march=cascadelake since r11-1445-g502d63b6d6141597
marxin at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Sep 2 14:54:44 GMT 2020
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96814
Martin Liška <marxin at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |rguenth at gcc dot gnu.org
--- Comment #2 from Martin Liška <marxin at gcc dot gnu.org> ---
So before the revision we generated:
_1 = { 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 };
_2 = VEC_COND_EXPR <_1, { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }>;
_3 = VIEW_CONVERT_EXPR<V>(_2);
x = _3;
but now we have:
<bb 2> :
_1 = { -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
_24 = VIEW_CONVERT_EXPR<unsigned short>(_1);
_25 = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
_26 = BIT_FIELD_REF <_25, 1, 0>;
_27 = _26;
_28 = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 };
_29 = BIT_FIELD_REF <_28, 1, 0>;
_30 = _29;
_31 = _24 & 1;
_32 = _31 != 0 ? _27 : _30;
...
_151 = _24 & 32768;
_152 = _151 != 0 ? _147 : _150;
_2 = {_32, _40, _48, _56, _64, _72, _80, _88, _96, _104, _112, _120, _128,
_136, _144, _152};
_3 = .VCOND_MASK (_2, { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 });
_4 = VIEW_CONVERT_EXPR<V>(_3);
x = _4;
i_15 = 0;
goto <bb 4>; [INV]
It's because veclower sees:
_1 = { -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
_2 = VEC_COND_EXPR <_1, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, {
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }>;
_3 = VEC_COND_EXPR <_2, { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }>;
_4 = VIEW_CONVERT_EXPR<V>(_3);
and if I see correctly the creation of the mask _2 is broken in RTL (probably
one can't build one from a vector costructor)?
Anyway SSA_NAMEs like _128 don't have any use.
@Richi: Can you please help me with that? I'm looking into it for quite some
time :/
More information about the Gcc-bugs
mailing list