patches/glibc/ports-2.10.1/540-alpha-fix-memchr.patch
author Remy Bohmer <linux@bohmer.net>
Thu May 27 23:18:19 2010 +0200 (2010-05-27)
changeset 2060 51e4597b07fc
permissions -rw-r--r--
scripts: add option to strip all toolchain executables

To reduce filesizes of the toolchain and even improve build times
of projects to be build with this toolchain it is usefull to strip
the delivered toolchain executables. Since it is not likely that we
will debug the toolchain executables itself we do not need the
debug information inside the executables itself.

Signed-off-by: Remy Bohmer <linux@bohmer.net>
     1 2009-07-27  Aurelien Jarno  <aurelien@aurel32.net>
     2 
     3 	* sysdeps/alpha/memchr.S: Use prefetch load.
     4 	* sysdeps/alpha/alphaev6/memchr.S: Likewise.
     5 
     6 diff -durN glibc-2.10.1.orig/glibc-ports-2.10.1/sysdeps/alpha/alphaev6/memchr.S glibc-2.10.1/glibc-ports-2.10.1/sysdeps/alpha/alphaev6/memchr.S
     7 --- glibc-2.10.1.orig/glibc-ports-2.10.1/sysdeps/alpha/alphaev6/memchr.S	2009-05-16 10:36:20.000000000 +0200
     8 +++ glibc-2.10.1/glibc-ports-2.10.1/sysdeps/alpha/alphaev6/memchr.S	2009-11-13 00:51:15.000000000 +0100
     9 @@ -127,7 +127,7 @@
    10          cmpbge  $31, $1, $2	# E :
    11          bne     $2, $found_it	# U :
    12  	# At least one byte left to process.
    13 -	ldq	$1, 8($0)	# L :
    14 +	ldq	$31, 8($0)	# L :
    15  	subq	$5, 1, $18	# E : U L U L
    16  
    17  	addq	$0, 8, $0	# E :
    18 @@ -143,38 +143,38 @@
    19  	and	$4, 8, $4	# E : odd number of quads?
    20  	bne	$4, $odd_quad_count # U :
    21  	# At least three quads remain to be accessed
    22 -	mov	$1, $4		# E : L U L U : move prefetched value to correct reg
    23 +	nop			# E : L U L U : move prefetched value to correct reg
    24  
    25  	.align	4
    26  $unrolled_loop:
    27 -	ldq	$1, 8($0)	# L : prefetch $1
    28 -	xor	$17, $4, $2	# E :
    29 -	cmpbge	$31, $2, $2	# E :
    30 -	bne	$2, $found_it	# U : U L U L
    31 +	ldq	$1, 0($0)	# L : load quad
    32 +	xor	$17, $1, $2	# E :
    33 +	ldq	$31, 8($0)	# L : prefetch next quad
    34 +	cmpbge	$31, $2, $2	# E : U L U L
    35  
    36 +	bne	$2, $found_it	# U :
    37  	addq	$0, 8, $0	# E :
    38  	nop			# E :
    39  	nop			# E :
    40 -	nop			# E :
    41  
    42  $odd_quad_count:
    43 +	ldq	$1, 0($0)	# L : load quad
    44  	xor	$17, $1, $2	# E :
    45 -	ldq	$4, 8($0)	# L : prefetch $4
    46 +	ldq	$31, 8($0)	# L : prefetch $4
    47  	cmpbge	$31, $2, $2	# E :
    48 -	addq	$0, 8, $6	# E :
    49  
    50 +	addq	$0, 8, $6	# E :
    51  	bne	$2, $found_it	# U :
    52  	cmpult	$6, $18, $6	# E :
    53  	addq	$0, 8, $0	# E :
    54 -	nop			# E :
    55  
    56  	bne	$6, $unrolled_loop # U :
    57 -	mov	$4, $1		# E : move prefetched value into $1
    58  	nop			# E :
    59  	nop			# E :
    60 -
    61 -$final:	subq	$5, $0, $18	# E : $18 <- number of bytes left to do
    62  	nop			# E :
    63 +
    64 +$final:	ldq	$1, 0($0)	# L : load last quad
    65 +	subq	$5, $0, $18	# E : $18 <- number of bytes left to do
    66  	nop			# E :
    67  	bne	$18, $last_quad	# U :
    68  
    69 diff -durN glibc-2.10.1.orig/glibc-ports-2.10.1/sysdeps/alpha/memchr.S glibc-2.10.1/glibc-ports-2.10.1/sysdeps/alpha/memchr.S
    70 --- glibc-2.10.1.orig/glibc-ports-2.10.1/sysdeps/alpha/memchr.S	2009-05-16 10:36:20.000000000 +0200
    71 +++ glibc-2.10.1/glibc-ports-2.10.1/sysdeps/alpha/memchr.S	2009-11-13 00:51:15.000000000 +0100
    72 @@ -119,7 +119,7 @@
    73  
    74  	# At least one byte left to process.
    75  
    76 -	ldq	t0, 8(v0)	# e0	:
    77 +	ldq	zero, 8(v0)	# e0	: prefetch next quad
    78  	subq	t4, 1, a2	# .. e1 :
    79  	addq	v0, 8, v0	#-e0	:
    80  
    81 @@ -138,19 +138,19 @@
    82  
    83  	# At least three quads remain to be accessed
    84  
    85 -	mov	t0, t3		# e0	: move prefetched value to correct reg
    86 -
    87  	.align	4
    88  $unrolled_loop:
    89 -	ldq	t0, 8(v0)	#-e0	: prefetch t0
    90 -	xor	a1, t3, t1	# .. e1 :
    91 -	cmpbge	zero, t1, t1	# e0	:
    92 -	bne	t1, $found_it	# .. e1 :
    93 +	ldq	t0, 0(v0)	# e0	: load quad
    94 +	xor	a1, t0, t1	# .. e1 :
    95 +	ldq	zero, 8(v0)	# e0	: prefetch next quad
    96 +	cmpbge	zero, t1, t1	# .. e1:
    97 +	bne	t1, $found_it	# e0    :
    98  
    99 -	addq	v0, 8, v0	#-e0	:
   100 +	addq	v0, 8, v0	#    e1	:
   101  $odd_quad_count:
   102 +	ldq	t0, 0(v0)	# e0	: load quad
   103  	xor	a1, t0, t1	# .. e1 :
   104 -	ldq	t3, 8(v0)	# e0	: prefetch t3
   105 +	ldq	zero, 8(v0)	# e0	: prefetch next quad
   106  	cmpbge	zero, t1, t1	# .. e1 :
   107  	addq	v0, 8, t5	#-e0	:
   108  	bne	t1, $found_it	# .. e1	:
   109 @@ -159,8 +159,8 @@
   110  	addq	v0, 8, v0	# .. e1 :
   111  	bne	t5, $unrolled_loop #-e1 :
   112  
   113 -	mov	t3, t0		# e0	: move prefetched value into t0
   114 -$final:	subq	t4, v0, a2	# .. e1	: a2 <- number of bytes left to do
   115 +$final:	ldq	t0, 0(v0)	# e0	: load last quad
   116 +	subq	t4, v0, a2	# .. e1	: a2 <- number of bytes left to do
   117  	bne	a2, $last_quad	# e1	:
   118  
   119  $not_found:
   120 diff -durN glibc-2.10.1.orig/ports/sysdeps/alpha/alphaev6/memchr.S glibc-2.10.1/ports/sysdeps/alpha/alphaev6/memchr.S
   121 diff -durN glibc-2.10.1.orig/ports/sysdeps/alpha/memchr.S glibc-2.10.1/ports/sysdeps/alpha/memchr.S