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

--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
So the new FRE pass does things like

-  _746 = {_2, 1, 2, 3, 4, 5, 6, 7};
-  _783 = BIT_FIELD_REF <_746, 16, 0>;
-  _1801 = _783 + 2;
-  _1800 = {_2, 1, 2, 3, 4, 5, 6, 7};
-  _1788 = BIT_FIELD_REF <_1800, 16, 16>;
-  _1787 = _1788 + 2;
-  _1775 = {_2, 1, 2, 3, 4, 5, 6, 7};
-  _1774 = BIT_FIELD_REF <_1775, 16, 32>;
-  _1762 = _1774 + 2;
-  _1761 = {_2, 1, 2, 3, 4, 5, 6, 7};
-  _1749 = BIT_FIELD_REF <_1761, 16, 48>;
-  _1748 = _1749 + 2;
-  _1736 = {_2, 1, 2, 3, 4, 5, 6, 7};
-  _1735 = BIT_FIELD_REF <_1736, 16, 64>;
-  _748 = _1735 + 2;
-  _784 = {_2, 1, 2, 3, 4, 5, 6, 7};
-  _1710 = BIT_FIELD_REF <_784, 16, 80>;
-  _1709 = _1710 + 2;
-  _1697 = {_2, 1, 2, 3, 4, 5, 6, 7};
-  _1696 = BIT_FIELD_REF <_1697, 16, 96>;
-  _1684 = _1696 + 2;
-  _1683 = {_2, 1, 2, 3, 4, 5, 6, 7};
-  _1671 = BIT_FIELD_REF <_1683, 16, 112>;
-  _1670 = _1671 + 2;
-  _4 = {_1801, _1787, _1762, _1748, _748, _1709, _1684, _1670};
+  _1801 = _2 + 2;
+  _4 = {_1801, 3, 4, 5, 6, 7, 8, 9};

thus it improves vector lowering generated code.  Unfortunately the
testcases / differences are too big and I'm not set up to do runtime
testing for big-endian arm.

Would it be possible to reduce the testcase to a single of the

    v1 = 2 + v0;   check (short, 8, v0, v1, 2, +, l);
    v1 = 2 - v0;   check (short, 8, v0, v1, 2, -, l);
    v1 = 2 * v0;   check (short, 8, v0, v1, 2, *, l);
    v1 = 2 / v0;   check (short, 8, v0, v1, 2, /, l);
    v1 = 2 % v0;   check (short, 8, v0, v1, 2, %, l);
...

lines?

Reply via email to