backport: re PR target/81481 (Spills %xmm to stack in glibc strspn SSE 4.2 variant)
2018-01-16 Richard Biener <rguenther@suse.de> Backport from mainline 2017-09-29 Vladimir Makarov <vmakarov@redhat.com> PR target/81481 * ira-costs.c (scan_one_insn): Don't take into account PIC equiv with a symbol for LRA. * gcc.target/i386/pr81481.c: New. From-SVN: r256731
This commit is contained in:
parent
31ba61a781
commit
30bd6019be
|
@ -1,3 +1,12 @@
|
||||||
|
2018-01-16 Richard Biener <rguenther@suse.de>
|
||||||
|
|
||||||
|
Backport from mainline
|
||||||
|
2017-09-29 Vladimir Makarov <vmakarov@redhat.com>
|
||||||
|
|
||||||
|
PR target/81481
|
||||||
|
* ira-costs.c (scan_one_insn): Don't take into account PIC equiv
|
||||||
|
with a symbol for LRA.
|
||||||
|
|
||||||
2018-01-15 Segher Boessenkool <segher@kernel.crashing.org>
|
2018-01-15 Segher Boessenkool <segher@kernel.crashing.org>
|
||||||
|
|
||||||
Backport from mainline
|
Backport from mainline
|
||||||
|
|
|
@ -1485,7 +1485,10 @@ scan_one_insn (rtx_insn *insn)
|
||||||
&& targetm.legitimate_constant_p (GET_MODE (SET_DEST (set)),
|
&& targetm.legitimate_constant_p (GET_MODE (SET_DEST (set)),
|
||||||
XEXP (note, 0))
|
XEXP (note, 0))
|
||||||
&& REG_N_SETS (REGNO (SET_DEST (set))) == 1))
|
&& REG_N_SETS (REGNO (SET_DEST (set))) == 1))
|
||||||
&& general_operand (SET_SRC (set), GET_MODE (SET_SRC (set))))
|
&& general_operand (SET_SRC (set), GET_MODE (SET_SRC (set)))
|
||||||
|
/* LRA does not use equiv with a symbol for PIC code. */
|
||||||
|
&& (! ira_use_lra_p || ! pic_offset_table_rtx
|
||||||
|
|| ! contains_symbol_ref_p (XEXP (note, 0))))
|
||||||
{
|
{
|
||||||
enum reg_class cl = GENERAL_REGS;
|
enum reg_class cl = GENERAL_REGS;
|
||||||
rtx reg = SET_DEST (set);
|
rtx reg = SET_DEST (set);
|
||||||
|
|
|
@ -1,3 +1,11 @@
|
||||||
|
2018-01-16 Richard Biener <rguenther@suse.de>
|
||||||
|
|
||||||
|
Backport from mainline
|
||||||
|
2017-09-29 Vladimir Makarov <vmakarov@redhat.com>
|
||||||
|
|
||||||
|
PR target/81481
|
||||||
|
* gcc.target/i386/pr81481.c: New.
|
||||||
|
|
||||||
2018-01-15 Segher Boessenkool <segher@kernel.crashing.org>
|
2018-01-15 Segher Boessenkool <segher@kernel.crashing.org>
|
||||||
|
|
||||||
Backport from mainline
|
Backport from mainline
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
/* { dg-do compile } */
|
||||||
|
/* { dg-require-effective-target ssse3 } */
|
||||||
|
/* { dg-options "-O2 -fpic -mssse3" } */
|
||||||
|
/* { dg-final { scan-assembler-not "pshufb\[ \t\]\\(%esp\\)" } } */
|
||||||
|
#include <immintrin.h>
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
Loading…
Reference in New Issue