[Bug target/81481] [7/8 Regression] Spills %xmm to stack in glibc strspn SSE 4.2 variant
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81481 --- Comment #5 from Vladimir Makarov --- Author: vmakarov Date: Fri Sep 29 17:39:58 2017 New Revision: 253300 URL: https://gcc.gnu.org/viewcvs?rev=253300&root=gcc&view=rev Log: 2017-09-29 Vladimir Makarov PR target/81481 * ira-costs.c (scan_one_insn): Don't take into account PIC equiv with a symbol for LRA. 2017-09-29 Vladimir Makarov PR target/81481 * gcc.target/i386/pr81481.c: New. Added: trunk/gcc/testsuite/gcc.target/i386/pr81481.c Modified: trunk/gcc/ChangeLog trunk/gcc/ira-costs.c trunk/gcc/testsuite/ChangeLog
[Bug target/81481] [7/8 Regression] Spills %xmm to stack in glibc strspn SSE 4.2 variant
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81481 --- Comment #4 from Vladimir Makarov --- In IRA we have (insn 9 8 24 2 (set (reg:V2DI 100 [ MEM[(const __m128i_u * {ref-all})_1] ]) (mem:V2DI (plus:SI (plus:SI (reg:SI 99 [ i ]) (reg:SI 87)) (const:SI (unspec:SI [ (symbol_ref:SI ("c") [flags 0x42] ) ] UNSPEC_GOTOFF))) [0 MEM[(const __m128i_u * {ref-all})_1]+0 S16 A8])) "./include/emmintrin.h":702 1233 {movv2di_internal} (expr_list:REG_EQUIV (mem:V2DI (plus:SI (plus:SI (reg:SI 99 [ i ]) (reg:SI 87)) (const:SI (unspec:SI [ (symbol_ref:SI ("c") [flags 0x42] ) ] UNSPEC_GOTOFF))) [0 MEM[(const __m128i_u * {ref-all})_1]+0 S16 A8]) (nil))) (insn 24 9 10 2 (set (reg/v/f:SI 97 [ x ]) (mem/f/c:SI (reg/f:SI 16 argp) [2 x+0 S4 A32])) "./include/tmmintrin.h":138 82 {*movsi_internal} (expr_list:REG_EQUIV (mem/f/c:SI (reg/f:SI 16 argp) [2 x+0 S4 A32]) (nil))) ... (insn 11 10 14 2 (set (reg:V16QI 101) (unspec:V16QI [ (reg:V16QI 102 [ *x_5(D) ]) (subreg:V16QI (reg:V2DI 100 [ MEM[(const __m128i_u * {ref-all})_1] ]) 0) ] UNSPEC_PSHUFB)) "./include/tmmintrin.h":138 3798 {ssse3_pshufbv16qi3} (expr_list:REG_DEAD (reg:V16QI 102 [ *x_5(D) ]) (expr_list:REG_DEAD (reg:V2DI 100 [ MEM[(const __m128i_u * {ref-all})_1] ]) (nil Pseudo 100 gets NO_REGS class in ira-costs.c a6 (r100,l0) best NO_REGS, allocno NO_REGS a6(r100,l0) costs: SSE_FIRST_REG:0,0 NO_REX_SSE_REGS:0,0 MEM:-9000,-9000 because it is supposed in ira-costs.c that we can remove insn 9 by using equiv memory for pseudo 100. LRA does not use this equivalence because the related code in IRA and LRA is not fully synced. If the patch will be not ready this week, then it will be ready only in a week.
[Bug target/81481] [7/8 Regression] Spills %xmm to stack in glibc strspn SSE 4.2 variant
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81481 Alexander Monakov changed: What|Removed |Added CC||amonakov at gcc dot gnu.org --- Comment #3 from Alexander Monakov --- A bit further reduced, needs -m32 -mssse3 -fpic -O2: #include extern const signed char c[31] __attribute__((visibility("hidden"))); __m128i f(__m128i *x, void *v) { int i; asm("# %0" : "=r"(i)); __m128i t = _mm_loadu_si128((void*)&c[i]); __m128i xx = *x; xx = _mm_shuffle_epi8(xx, t); asm("# %0 %1 %2" : "+x"(xx) : "r"(c), "r"(i)); return xx; }
[Bug target/81481] [7/8 Regression] Spills %xmm to stack in glibc strspn SSE 4.2 variant
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81481 Richard Biener changed: What|Removed |Added Target Milestone|7.2 |7.3
[Bug target/81481] [7/8 Regression] Spills %xmm to stack in glibc strspn SSE 4.2 variant
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81481 Richard Biener changed: What|Removed |Added Target Milestone|7.2 |7.3 Target Milestone|7.2 |7.3 --- Comment #3 from Richard Biener --- GCC 7.2 is being released, adjusting target milestone. --- Comment #4 from Richard Biener --- GCC 7.2 is being released, adjusting target milestone.
[Bug target/81481] [7/8 Regression] Spills %xmm to stack in glibc strspn SSE 4.2 variant
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81481 Richard Biener changed: What|Removed |Added Target Milestone|7.2 |7.3 Target Milestone|7.2 |7.3 --- Comment #3 from Richard Biener --- GCC 7.2 is being released, adjusting target milestone. --- Comment #4 from Richard Biener --- GCC 7.2 is being released, adjusting target milestone.
[Bug target/81481] [7/8 Regression] Spills %xmm to stack in glibc strspn SSE 4.2 variant
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81481 --- Comment #2 from Richard Biener --- I'm too dumb to understand the LRA dump ;)
[Bug target/81481] [7/8 Regression] Spills %xmm to stack in glibc strspn SSE 4.2 variant
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81481 Richard Biener changed: What|Removed |Added CC||vmakarov at gcc dot gnu.org Known to work||4.8.5, 6.4.0 Target Milestone|--- |7.2 Known to fail||7.1.0, 7.1.1, 8.0 --- Comment #1 from Richard Biener --- Unfortunately neither -mincoming-stack-boundary nor -mstackrealign are valid in target attributes (to annotate affected functions only).