mirror of git://gcc.gnu.org/git/gcc.git
lex.c (search_line_sse42): Use __builtin_ia32_loaddqu and __builtin_ia32_pcmpestri128 instead of asm.
* lex.c (search_line_sse42): Use __builtin_ia32_loaddqu and __builtin_ia32_pcmpestri128 instead of asm. From-SVN: r188782
This commit is contained in:
parent
bbe10a06e0
commit
d35d1c0fee
|
|
@ -1,3 +1,8 @@
|
||||||
|
2011-06-19 Uros Bizjak <ubizjak@gmail.com>
|
||||||
|
|
||||||
|
* lex.c (search_line_sse42): Use __builtin_ia32_loaddqu and
|
||||||
|
__builtin_ia32_pcmpestri128 instead of asm.
|
||||||
|
|
||||||
2012-06-04 Dimitrios Apostolou <jimis@gmx.net>
|
2012-06-04 Dimitrios Apostolou <jimis@gmx.net>
|
||||||
|
|
||||||
* line-map.c (linemap_enter_macro): Don't zero max_column_hint in
|
* line-map.c (linemap_enter_macro): Don't zero max_column_hint in
|
||||||
|
|
|
||||||
|
|
@ -427,6 +427,8 @@ search_line_sse42 (const uchar *s, const uchar *end)
|
||||||
/* Check for unaligned input. */
|
/* Check for unaligned input. */
|
||||||
if (si & 15)
|
if (si & 15)
|
||||||
{
|
{
|
||||||
|
v16qi sv;
|
||||||
|
|
||||||
if (__builtin_expect (end - s < 16, 0)
|
if (__builtin_expect (end - s < 16, 0)
|
||||||
&& __builtin_expect ((si & 0xfff) > 0xff0, 0))
|
&& __builtin_expect ((si & 0xfff) > 0xff0, 0))
|
||||||
{
|
{
|
||||||
|
|
@ -439,8 +441,9 @@ search_line_sse42 (const uchar *s, const uchar *end)
|
||||||
|
|
||||||
/* ??? The builtin doesn't understand that the PCMPESTRI read from
|
/* ??? The builtin doesn't understand that the PCMPESTRI read from
|
||||||
memory need not be aligned. */
|
memory need not be aligned. */
|
||||||
__asm ("%vpcmpestri $0, (%1), %2"
|
sv = __builtin_ia32_loaddqu ((const char *) s);
|
||||||
: "=c"(index) : "r"(s), "x"(search), "a"(4), "d"(16));
|
index = __builtin_ia32_pcmpestri128 (search, 4, sv, 16, 0);
|
||||||
|
|
||||||
if (__builtin_expect (index < 16, 0))
|
if (__builtin_expect (index < 16, 0))
|
||||||
goto found;
|
goto found;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue