[Bug target/101129] [11/12 Regression] wrong code at -O1 since r11-5839
jakub at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Jun 18 20:46:14 GMT 2021
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101129
--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Optimized difference:
--- pr101129.c.244t.optimized.r11-5838 2021-06-18 22:40:20.915971652 +0200
+++ pr101129.c.244t.optimized.r11-5839 2021-06-18 22:40:34.739789553 +0200
@@ -8,6 +8,7 @@ void foo0 (u32 u32_0, U * ret)
__int128 _1;
vector(16) unsigned char _2;
unsigned char _3;
+ vector(16) <signed-boolean:8> _4;
vector(16) signed char _5;
__int128 _6;
__int128 _7;
@@ -31,7 +32,8 @@ void foo0 (u32 u32_0, U * ret)
_14 = u32_0_13(D) & 4;
_3 = (unsigned char) _14;
_2 = {_3, _3, _3, _3, _3, _3, _3, _3, _3, _3, _3, _3, _3, _3, _3, _3};
- _5 = .VCONDU (_2, { 5, 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 }, { 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, 108);
+ _4 = _2 < { 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
+ _5 = VIEW_CONVERT_EXPR<vector(16) signed char>(_4);
_6 = VIEW_CONVERT_EXPR<__int128>(_5);
u128_2_15 = _1 * _6;
_7 = u128_2_15 >> 64;
Assembly difference:
--- pr101129.s.r11-5838 2021-06-18 22:40:20.919971599 +0200
+++ pr101129.s.r11-5839 2021-06-18 22:40:34.743789500 +0200
@@ -14,19 +14,16 @@ foo0:
.localentry foo0,.-foo0
rlwinm 9,3,0,29,29
mtvsrd 32,9
- vspltb 0,0,7
+ vspltb 1,0,7
addis 9,2,.LC0@toc@ha
addi 9,9,.LC0@toc@l
- lxvd2x 33,0,9
- vcmpgtub 0,1,0
- addi 9,1,-16
- xxpermdi 32,32,32,2
- stxvd2x 32,0,9
- ld 9,-8(1)
- ld 10,-16(1)
+ lxvd2x 32,0,9
+ vcmpgtub 0,0,1
+ mfvsrd 11,32
+ xxpermdi 0,32,32,3
+ mfvsrd 10,0
+ add 10,11,10
mulld 10,10,3
- mulhdu 3,3,9
- add 10,10,3
addis 9,2,.LANCHOR0@toc@ha
lbz 9,.LANCHOR0@toc@l(9)
add 10,10,9
More information about the Gcc-bugs
mailing list