<feed xmlns='http://www.w3.org/2005/Atom'>
<title>delta/glibc.git, branch azanella/generic-strings</title>
<subtitle>sourceware.org: git/glibc.git
</subtitle>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/glibc.git/'/>
<entry>
<title>sh: Add string-fzb.h</title>
<updated>2018-10-02T15:32:35+00:00</updated>
<author>
<name>Adhemerval Zanella</name>
<email>adhemerval.zanella@linaro.org</email>
</author>
<published>2017-02-21T20:14:16+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/glibc.git/commit/?id=af69c5ba72b80b2bc937243801349eb197ad5553'/>
<id>af69c5ba72b80b2bc937243801349eb197ad5553</id>
<content type='text'>
Use the SH cmp/str on has_{zero,eq,zero_eq}.

Checked on sh4-linux-gnu.

	Adhemerval Zanella &lt;adhemerval.zanella@linaro.org&gt;

	* sysdeps/sh/string-fzb.h: New file.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Use the SH cmp/str on has_{zero,eq,zero_eq}.

Checked on sh4-linux-gnu.

	Adhemerval Zanella &lt;adhemerval.zanella@linaro.org&gt;

	* sysdeps/sh/string-fzb.h: New file.
</pre>
</div>
</content>
</entry>
<entry>
<title>powerpc: Add string-fza.h</title>
<updated>2018-10-02T15:32:35+00:00</updated>
<author>
<name>Richard Henderson</name>
<email>rth@twiddle.net</email>
</author>
<published>2017-02-16T18:26:18+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/glibc.git/commit/?id=16f899cfa103a17c08c3b2f61a8d40f4f5e914a6'/>
<id>16f899cfa103a17c08c3b2f61a8d40f4f5e914a6</id>
<content type='text'>
While ppc has the more important string functions in assembly,
there are still a few generic routines used.

Use the Power 6 CMPB insn for testing of zeros.

Checked on powerpc64le-linux-gnu.

	Richard Henderson  &lt;rth@twiddle.net&gt;

	* sysdeps/powerpc/string-fza.h: New file.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
While ppc has the more important string functions in assembly,
there are still a few generic routines used.

Use the Power 6 CMPB insn for testing of zeros.

Checked on powerpc64le-linux-gnu.

	Richard Henderson  &lt;rth@twiddle.net&gt;

	* sysdeps/powerpc/string-fza.h: New file.
</pre>
</div>
</content>
</entry>
<entry>
<title>arm: Add string-fza.h</title>
<updated>2018-10-02T15:32:35+00:00</updated>
<author>
<name>Richard Henderson</name>
<email>rth@twiddle.net</email>
</author>
<published>2017-02-16T18:24:23+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/glibc.git/commit/?id=4de86538e47d0b7fe56678b22f05550900e3b87a'/>
<id>4de86538e47d0b7fe56678b22f05550900e3b87a</id>
<content type='text'>
While arm has the more important string functions in assembly,
there are still a few generic routines used.

Use the UQSUB8 insn for testing of zeros.

Checked on armv7-linux-gnueabihf

	Richard Henderson  &lt;rth@twiddle.net&gt;

	* sysdeps/arm/armv6t2/string-fza.h: New file.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
While arm has the more important string functions in assembly,
there are still a few generic routines used.

Use the UQSUB8 insn for testing of zeros.

Checked on armv7-linux-gnueabihf

	Richard Henderson  &lt;rth@twiddle.net&gt;

	* sysdeps/arm/armv6t2/string-fza.h: New file.
</pre>
</div>
</content>
</entry>
<entry>
<title>alpha: Add string-fzb.h and string-fzi.h</title>
<updated>2018-10-02T15:32:35+00:00</updated>
<author>
<name>Richard Henderson</name>
<email>rth@twiddle.net</email>
</author>
<published>2017-02-16T18:23:27+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/glibc.git/commit/?id=38cd3552d8b6df18b14b4625ef29ae9e27f9a704'/>
<id>38cd3552d8b6df18b14b4625ef29ae9e27f9a704</id>
<content type='text'>
While alpha has the more important string functions in assembly,
there are still a few for find the generic routines are used.

Use the CMPBGE insn, via the builtin, for testing of zeros.  Use a
simplified expansion of __builtin_ctz when the insn isn't available.

Checked on alpha-linux-gnu.

	Richard Henderson  &lt;rth@twiddle.net&gt;

	* sysdeps/alpha/string-fzb.h: New file.
	* sysdeps/alpha/string-fzi.h: Likewise.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
While alpha has the more important string functions in assembly,
there are still a few for find the generic routines are used.

Use the CMPBGE insn, via the builtin, for testing of zeros.  Use a
simplified expansion of __builtin_ctz when the insn isn't available.

Checked on alpha-linux-gnu.

	Richard Henderson  &lt;rth@twiddle.net&gt;

	* sysdeps/alpha/string-fzb.h: New file.
	* sysdeps/alpha/string-fzi.h: Likewise.
</pre>
</div>
</content>
</entry>
<entry>
<title>hppa: Add string-fzb.h and string-fzi.h</title>
<updated>2018-10-02T15:32:35+00:00</updated>
<author>
<name>Richard Henderson</name>
<email>rth@twiddle.net</email>
</author>
<published>2017-02-16T18:22:39+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/glibc.git/commit/?id=70ea2db81287ba26a33960568f325ebfbd7479ef'/>
<id>70ea2db81287ba26a33960568f325ebfbd7479ef</id>
<content type='text'>
Use UXOR,SBZ to test for a zero byte within a word.  While we can
get semi-decent code out of asm-goto, we would do slightly better
with a compiler builtin.

For index_zero et al, sequential testing of bytes is less expensive than
any tricks that involve a count-leading-zeros insn that we don't have.

Checked on hppa-linux-gnu.

	Richard Henderson  &lt;rth@twiddle.net&gt;

	* sysdeps/hppa/string-fzb.h: New file.
	* sysdeps/hppa/string-fzi.h: Likewise.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Use UXOR,SBZ to test for a zero byte within a word.  While we can
get semi-decent code out of asm-goto, we would do slightly better
with a compiler builtin.

For index_zero et al, sequential testing of bytes is less expensive than
any tricks that involve a count-leading-zeros insn that we don't have.

Checked on hppa-linux-gnu.

	Richard Henderson  &lt;rth@twiddle.net&gt;

	* sysdeps/hppa/string-fzb.h: New file.
	* sysdeps/hppa/string-fzi.h: Likewise.
</pre>
</div>
</content>
</entry>
<entry>
<title>hppa: Add memcopy.h</title>
<updated>2018-10-02T15:32:35+00:00</updated>
<author>
<name>Richard Henderson</name>
<email>rth@twiddle.net</email>
</author>
<published>2017-02-16T18:22:02+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/glibc.git/commit/?id=7f84429390ba38906bc7438f0035f81d207f2ab0'/>
<id>7f84429390ba38906bc7438f0035f81d207f2ab0</id>
<content type='text'>
GCC's combine pass cannot merge (x &gt;&gt; c | y &lt;&lt; (32 - c)) into a
double-word shift unless (1) the subtract is in the same basic block
and (2) the result of the subtract is used exactly once.  Neither
condition is true for any use of MERGE.

By forcing the use of a double-word shift, we not only reduce
contention on SAR, but also allow the setting of SAR to be hoisted
outside of a loop.

Checked on hppa-linux-gnu.

	Richard Henderson  &lt;rth@twiddle.net&gt;

	* sysdeps/hppa/memcopy.h: New file.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
GCC's combine pass cannot merge (x &gt;&gt; c | y &lt;&lt; (32 - c)) into a
double-word shift unless (1) the subtract is in the same basic block
and (2) the result of the subtract is used exactly once.  Neither
condition is true for any use of MERGE.

By forcing the use of a double-word shift, we not only reduce
contention on SAR, but also allow the setting of SAR to be hoisted
outside of a loop.

Checked on hppa-linux-gnu.

	Richard Henderson  &lt;rth@twiddle.net&gt;

	* sysdeps/hppa/memcopy.h: New file.
</pre>
</div>
</content>
</entry>
<entry>
<title>string: Improve generic strcpy</title>
<updated>2018-10-02T15:32:35+00:00</updated>
<author>
<name>Adhemerval Zanella</name>
<email>adhemerval.zanella@linaro.com</email>
</author>
<published>2017-03-08T15:56:17+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/glibc.git/commit/?id=c9181a2ed5c336e080c6751a117e2f5e533ca06a'/>
<id>c9181a2ed5c336e080c6751a117e2f5e533ca06a</id>
<content type='text'>
New generic implementation tries to use word operations along with
the new string-fz{b,i} functions even for inputs with different
alignments (with still uses aligned access plus merge operation
to get a correct word by word comparison).

Checked on x86_64-linux-gnu, i686-linux-gnu, sparc64-linux-gnu,
and sparcv9-linux-gnu by removing the arch-specific assembly
implementation and disabling multi-arch (it covers both LE and BE
for 64 and 32 bits).

	Richard Henderson  &lt;rth@twiddle.net&gt;
	Adhemerval Zanella  &lt;adhemerval.zanella@linaro.org&gt;

	* string/strcpy.c: Rewrite using memcopy.h, string-fzb.h,
        string-fzi.h.
	* string/test-strcpy.c (test_main): Add more coverage.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
New generic implementation tries to use word operations along with
the new string-fz{b,i} functions even for inputs with different
alignments (with still uses aligned access plus merge operation
to get a correct word by word comparison).

Checked on x86_64-linux-gnu, i686-linux-gnu, sparc64-linux-gnu,
and sparcv9-linux-gnu by removing the arch-specific assembly
implementation and disabling multi-arch (it covers both LE and BE
for 64 and 32 bits).

	Richard Henderson  &lt;rth@twiddle.net&gt;
	Adhemerval Zanella  &lt;adhemerval.zanella@linaro.org&gt;

	* string/strcpy.c: Rewrite using memcopy.h, string-fzb.h,
        string-fzi.h.
	* string/test-strcpy.c (test_main): Add more coverage.
</pre>
</div>
</content>
</entry>
<entry>
<title>string: Improve generic strcmp</title>
<updated>2018-10-02T15:32:35+00:00</updated>
<author>
<name>Richard Henderson</name>
<email>rth@twiddle.net</email>
</author>
<published>2017-02-16T18:21:26+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/glibc.git/commit/?id=550081c1e4d6263b1b641a0ef50eb6002ada4019'/>
<id>550081c1e4d6263b1b641a0ef50eb6002ada4019</id>
<content type='text'>
New generic implementation tries to use word operations along with
the new string-fz{b,i} functions even for inputs with different
alignments (with still uses aligned access plus merge operation
to get a correct word by word comparison).

Checked on x86_64-linux-gnu, i686-linux-gnu, sparc64-linux-gnu,
and sparcv9-linux-gnu by removing the arch-specific assembly
implementation and disabling multi-arch (it covers both LE and BE
for 64 and 32 bits).

	Richard Henderson  &lt;rth@twiddle.net&gt;
	Adhemerval Zanella  &lt;adhemerval.zanella@linaro.org&gt;

	* string/strcmp.c: Rewrite using memcopy.h, string-fzb.h,
	string-fzi.h.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
New generic implementation tries to use word operations along with
the new string-fz{b,i} functions even for inputs with different
alignments (with still uses aligned access plus merge operation
to get a correct word by word comparison).

Checked on x86_64-linux-gnu, i686-linux-gnu, sparc64-linux-gnu,
and sparcv9-linux-gnu by removing the arch-specific assembly
implementation and disabling multi-arch (it covers both LE and BE
for 64 and 32 bits).

	Richard Henderson  &lt;rth@twiddle.net&gt;
	Adhemerval Zanella  &lt;adhemerval.zanella@linaro.org&gt;

	* string/strcmp.c: Rewrite using memcopy.h, string-fzb.h,
	string-fzi.h.
</pre>
</div>
</content>
</entry>
<entry>
<title>string: Improve generic strchrnul</title>
<updated>2018-10-02T15:32:35+00:00</updated>
<author>
<name>Richard Henderson</name>
<email>rth@twiddle.net</email>
</author>
<published>2017-02-16T18:19:40+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/glibc.git/commit/?id=b9121635b413aa6584b385b7135803f868cf6673'/>
<id>b9121635b413aa6584b385b7135803f868cf6673</id>
<content type='text'>
New algorithm have the following key differences:

  - Reads first word unaligned and use string-maskoff function to
    remove unwanted data.  This strategy follow assemble optimized
    ones for aarch64, powerpc and tile.

  - Use string-fz{b,i} functions.

Checked on x86_64-linux-gnu, i686-linux-gnu, sparc64-linux-gnu,
and sparcv9-linux-gnu by removing the arch-specific assembly
implementation and disabling multi-arch (it covers both LE and BE
for 64 and 32 bits).

	[BZ #5806]
	* string/strchrnul.c: Use string-fzb.h, string-fzi.h.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
New algorithm have the following key differences:

  - Reads first word unaligned and use string-maskoff function to
    remove unwanted data.  This strategy follow assemble optimized
    ones for aarch64, powerpc and tile.

  - Use string-fz{b,i} functions.

Checked on x86_64-linux-gnu, i686-linux-gnu, sparc64-linux-gnu,
and sparcv9-linux-gnu by removing the arch-specific assembly
implementation and disabling multi-arch (it covers both LE and BE
for 64 and 32 bits).

	[BZ #5806]
	* string/strchrnul.c: Use string-fzb.h, string-fzi.h.
</pre>
</div>
</content>
</entry>
<entry>
<title>string: Improve generic strchr</title>
<updated>2018-10-02T15:32:35+00:00</updated>
<author>
<name>Richard Henderson</name>
<email>rth@twiddle.net</email>
</author>
<published>2017-02-16T18:18:48+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/glibc.git/commit/?id=5e8d99f2a619b38f27092f286ad06ccf690f5d0b'/>
<id>5e8d99f2a619b38f27092f286ad06ccf690f5d0b</id>
<content type='text'>
New algorithm have the following key differences:

  - Reads first word unaligned and use string-maskoff function to
    remove unwanted data.  This strategy follow assemble optimized
    ones for aarch64 and powerpc.

  - Use string-fz{b,i} and string-extbyte function.

Checked on x86_64-linux-gnu, i686-linux-gnu, sparc64-linux-gnu,
and sparcv9-linux-gnu by removing the arch-specific assembly
implementation and disabling multi-arch (it covers both LE and BE
for 64 and 32 bits).

	Richard Henderson  &lt;rth@twiddle.net&gt;
	Adhemerval Zanella  &lt;adhemerval.zanella@linaro.org&gt;

	[BZ #5806]
	* string/strchr.c: Use string-fzb.h, string-fzi.h, string-extbyte.h.
	* sysdeps/s390/multiarch/strchr-c.c: Redefine weak_alias.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
New algorithm have the following key differences:

  - Reads first word unaligned and use string-maskoff function to
    remove unwanted data.  This strategy follow assemble optimized
    ones for aarch64 and powerpc.

  - Use string-fz{b,i} and string-extbyte function.

Checked on x86_64-linux-gnu, i686-linux-gnu, sparc64-linux-gnu,
and sparcv9-linux-gnu by removing the arch-specific assembly
implementation and disabling multi-arch (it covers both LE and BE
for 64 and 32 bits).

	Richard Henderson  &lt;rth@twiddle.net&gt;
	Adhemerval Zanella  &lt;adhemerval.zanella@linaro.org&gt;

	[BZ #5806]
	* string/strchr.c: Use string-fzb.h, string-fzi.h, string-extbyte.h.
	* sysdeps/s390/multiarch/strchr-c.c: Redefine weak_alias.
</pre>
</div>
</content>
</entry>
</feed>
