[Bug target/81481] [7/8 Regression] Spills %xmm to stack in glibc strspn SSE 4.2 variant

2017-09-29 Thread vmakarov at gcc dot gnu.org
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

2017-09-28 Thread vmakarov at gcc dot gnu.org
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

2017-09-26 Thread amonakov at gcc dot gnu.org
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

2017-08-16 Thread rguenth at gcc dot gnu.org
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

2017-08-14 Thread rguenth at gcc dot gnu.org
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

2017-08-14 Thread rguenth at gcc dot gnu.org
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

2017-07-19 Thread rguenth at gcc dot gnu.org
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

2017-07-19 Thread rguenth at gcc dot gnu.org
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).