1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-08-05 19:35:52 +03:00

[BZ #22142] powerpc: Fix the carry bit on mpn_[add|sub]_n on POWER7

Fix the ifdef clause that was being used in the opposite way, setting
a wrong value of the carry bit.

This is also correcting 2 memory accesses that were mistakenly referring
to r0 while they were supposed to mean the immediate value 0.

	[BZ #22142]
	* stdio-common/tst-printf.c (fp_test): Add tests for DBL_MAX and
	-DBL_MAX.
	(do_test): Likewise.
	* stdio-common/tst-printf.sh: Likewise.
	* sysdeps/powerpc/powerpc64/power7/add_n.S: Invert the initial
	ifdef clause in order to set the carry bit right.  Replace r0 by
	0 without changing the behavior.
This commit is contained in:
Tulio Magno Quites Machado Filho
2017-10-13 15:44:39 -03:00
parent 006e766437
commit 179dcdb7af
4 changed files with 27 additions and 4 deletions

View File

@@ -1,3 +1,14 @@
2017-10-13 Tulio Magno Quites Machado Filho <tuliom@linux.vnet.ibm.com>
[BZ #22142]
* stdio-common/tst-printf.c (fp_test): Add tests for DBL_MAX and
-DBL_MAX.
(do_test): Likewise.
* stdio-common/tst-printf.sh: Likewise.
* sysdeps/powerpc/powerpc64/power7/add_n.S: Invert the initial
ifdef clause in order to set the carry bit right. Replace r0 by
0 without changing the behavior.
2017-10-13 Joseph Myers <joseph@codesourcery.com> 2017-10-13 Joseph Myers <joseph@codesourcery.com>
* sysdeps/sparc/sparc32/fpu/s_fabsl.c: Include * sysdeps/sparc/sparc32/fpu/s_fabsl.c: Include

View File

@@ -136,6 +136,8 @@ fp_test (void)
} }
printf("%10s\n", (char *) NULL); printf("%10s\n", (char *) NULL);
printf("%-10s\n", (char *) NULL); printf("%-10s\n", (char *) NULL);
printf("%.8f\n", DBL_MAX);
printf("%.8f\n", -DBL_MAX);
} }
static int static int
@@ -181,6 +183,8 @@ I am ready for my first lesson today.";
printf("null string:\t\"%s\"\n", (char *)NULL); printf("null string:\t\"%s\"\n", (char *)NULL);
printf("limited string:\t\"%.22s\"\n", longstr); printf("limited string:\t\"%.22s\"\n", longstr);
printf("a-style max:\t\"%a\"\n", DBL_MAX);
printf("a-style -max:\t\"%a\"\n", -DBL_MAX);
printf("e-style >= 1:\t\"%e\"\n", 12.34); printf("e-style >= 1:\t\"%e\"\n", 12.34);
printf("e-style >= .1:\t\"%e\"\n", 0.1234); printf("e-style >= .1:\t\"%e\"\n", 0.1234);
printf("e-style < .1:\t\"%e\"\n", 0.001234); printf("e-style < .1:\t\"%e\"\n", 0.001234);

View File

@@ -57,6 +57,8 @@ space-padded string: " Hi, Z."
left-adjusted S string: "Hi, Z. " left-adjusted S string: "Hi, Z. "
null string: "(null)" null string: "(null)"
limited string: "Good morning, Doctor C" limited string: "Good morning, Doctor C"
a-style max: "0x1.fffffffffffffp+1023"
a-style -max: "-0x1.fffffffffffffp+1023"
e-style >= 1: "1.234000e+01" e-style >= 1: "1.234000e+01"
e-style >= .1: "1.234000e-01" e-style >= .1: "1.234000e-01"
e-style < .1: "1.234000e-03" e-style < .1: "1.234000e-03"
@@ -124,6 +126,8 @@ prefix 6d 6o 6x 6X 6u
% | -123 | 377 | ff | FF |4294967295 | % | -123 | 377 | ff | FF |4294967295 |
(null) (null)
(null) (null)
179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.00000000
-179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.00000000
1.234568e+06 should be 1.234568e+06 1.234568e+06 should be 1.234568e+06
1234567.800000 should be 1234567.800000 1234567.800000 should be 1234567.800000
1.23457e+06 should be 1.23457e+06 1.23457e+06 should be 1.23457e+06
@@ -173,6 +177,8 @@ space-padded string: " Hi, Z."
left-adjusted S string: "Hi, Z. " left-adjusted S string: "Hi, Z. "
null string: "(null)" null string: "(null)"
limited string: "Good morning, Doctor C" limited string: "Good morning, Doctor C"
a-style max: "0x1.fffffffffffffp+1023"
a-style -max: "-0x1.fffffffffffffp+1023"
e-style >= 1: "1.234000e+01" e-style >= 1: "1.234000e+01"
e-style >= .1: "1.234000e-01" e-style >= .1: "1.234000e-01"
e-style < .1: "1.234000e-03" e-style < .1: "1.234000e-03"
@@ -240,6 +246,8 @@ prefix 6d 6o 6x 6X 6u
% | -123 | 377 | ff | FF |4294967295 | % | -123 | 377 | ff | FF |4294967295 |
(null) (null)
(null) (null)
179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.00000000
-179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.00000000
1.234568e+06 should be 1.234568e+06 1.234568e+06 should be 1.234568e+06
1234567.800000 should be 1234567.800000 1234567.800000 should be 1234567.800000
1.23457e+06 should be 1.23457e+06 1.23457e+06 should be 1.23457e+06

View File

@@ -38,17 +38,17 @@
ENTRY_TOCLESS (FUNC, 5) ENTRY_TOCLESS (FUNC, 5)
#ifdef USE_AS_SUB #ifdef USE_AS_SUB
addic r0, r0, 0 addic r0, r1, -1
#else #else
addic r0, r1, -1 addic r0, r0, 0
#endif #endif
andi. r7, N, 1 andi. r7, N, 1
beq L(bx0) beq L(bx0)
ld r7, 0(UP) ld r7, 0(UP)
ld r9, r0(VP) ld r9, 0(VP)
ADDSUBC r11, r9, r7 ADDSUBC r11, r9, r7
std r11, r0(RP) std r11, 0(RP)
cmpldi N, N, 1 cmpldi N, N, 1
beq N, L(end) beq N, L(end)
addi UP, UP, 8 addi UP, UP, 8