You can subscribe to this list here.
| 2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
(122) |
Nov
(152) |
Dec
(69) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2003 |
Jan
(6) |
Feb
(25) |
Mar
(73) |
Apr
(82) |
May
(24) |
Jun
(25) |
Jul
(10) |
Aug
(11) |
Sep
(10) |
Oct
(54) |
Nov
(203) |
Dec
(182) |
| 2004 |
Jan
(307) |
Feb
(305) |
Mar
(430) |
Apr
(312) |
May
(187) |
Jun
(342) |
Jul
(487) |
Aug
(637) |
Sep
(336) |
Oct
(373) |
Nov
(441) |
Dec
(210) |
| 2005 |
Jan
(385) |
Feb
(480) |
Mar
(636) |
Apr
(544) |
May
(679) |
Jun
(625) |
Jul
(810) |
Aug
(838) |
Sep
(634) |
Oct
(521) |
Nov
(965) |
Dec
(543) |
| 2006 |
Jan
(494) |
Feb
(431) |
Mar
(546) |
Apr
(411) |
May
(406) |
Jun
(322) |
Jul
(256) |
Aug
(401) |
Sep
(345) |
Oct
(542) |
Nov
(308) |
Dec
(481) |
| 2007 |
Jan
(427) |
Feb
(326) |
Mar
(367) |
Apr
(255) |
May
(244) |
Jun
(204) |
Jul
(223) |
Aug
(231) |
Sep
(354) |
Oct
(374) |
Nov
(497) |
Dec
(362) |
| 2008 |
Jan
(322) |
Feb
(482) |
Mar
(658) |
Apr
(422) |
May
(476) |
Jun
(396) |
Jul
(455) |
Aug
(267) |
Sep
(280) |
Oct
(253) |
Nov
(232) |
Dec
(304) |
| 2009 |
Jan
(486) |
Feb
(470) |
Mar
(458) |
Apr
(423) |
May
(696) |
Jun
(461) |
Jul
(551) |
Aug
(575) |
Sep
(134) |
Oct
(110) |
Nov
(157) |
Dec
(102) |
| 2010 |
Jan
(226) |
Feb
(86) |
Mar
(147) |
Apr
(117) |
May
(107) |
Jun
(203) |
Jul
(193) |
Aug
(238) |
Sep
(300) |
Oct
(246) |
Nov
(23) |
Dec
(75) |
| 2011 |
Jan
(133) |
Feb
(195) |
Mar
(315) |
Apr
(200) |
May
(267) |
Jun
(293) |
Jul
(353) |
Aug
(237) |
Sep
(278) |
Oct
(611) |
Nov
(274) |
Dec
(260) |
| 2012 |
Jan
(303) |
Feb
(391) |
Mar
(417) |
Apr
(441) |
May
(488) |
Jun
(655) |
Jul
(590) |
Aug
(610) |
Sep
(526) |
Oct
(478) |
Nov
(359) |
Dec
(372) |
| 2013 |
Jan
(467) |
Feb
(226) |
Mar
(391) |
Apr
(281) |
May
(299) |
Jun
(252) |
Jul
(311) |
Aug
(352) |
Sep
(481) |
Oct
(571) |
Nov
(222) |
Dec
(231) |
| 2014 |
Jan
(185) |
Feb
(329) |
Mar
(245) |
Apr
(238) |
May
(281) |
Jun
(399) |
Jul
(382) |
Aug
(500) |
Sep
(579) |
Oct
(435) |
Nov
(487) |
Dec
(256) |
| 2015 |
Jan
(338) |
Feb
(357) |
Mar
(330) |
Apr
(294) |
May
(191) |
Jun
(108) |
Jul
(142) |
Aug
(261) |
Sep
(190) |
Oct
(54) |
Nov
(83) |
Dec
(22) |
| 2016 |
Jan
(49) |
Feb
(89) |
Mar
(33) |
Apr
(50) |
May
(27) |
Jun
(34) |
Jul
(53) |
Aug
(53) |
Sep
(98) |
Oct
(206) |
Nov
(93) |
Dec
(53) |
| 2017 |
Jan
(65) |
Feb
(82) |
Mar
(102) |
Apr
(86) |
May
(187) |
Jun
(67) |
Jul
(23) |
Aug
(93) |
Sep
(65) |
Oct
(45) |
Nov
(35) |
Dec
(17) |
| 2018 |
Jan
(26) |
Feb
(35) |
Mar
(38) |
Apr
(32) |
May
(8) |
Jun
(43) |
Jul
(27) |
Aug
(30) |
Sep
(43) |
Oct
(42) |
Nov
(38) |
Dec
(67) |
| 2019 |
Jan
(32) |
Feb
(37) |
Mar
(53) |
Apr
(64) |
May
(49) |
Jun
(18) |
Jul
(14) |
Aug
(53) |
Sep
(25) |
Oct
(30) |
Nov
(49) |
Dec
(31) |
| 2020 |
Jan
(87) |
Feb
(45) |
Mar
(37) |
Apr
(51) |
May
(99) |
Jun
(36) |
Jul
(11) |
Aug
(14) |
Sep
(20) |
Oct
(24) |
Nov
(40) |
Dec
(23) |
| 2021 |
Jan
(14) |
Feb
(53) |
Mar
(85) |
Apr
(15) |
May
(19) |
Jun
(3) |
Jul
(14) |
Aug
(1) |
Sep
(57) |
Oct
(73) |
Nov
(56) |
Dec
(22) |
| 2022 |
Jan
(3) |
Feb
(22) |
Mar
(6) |
Apr
(55) |
May
(46) |
Jun
(39) |
Jul
(15) |
Aug
(9) |
Sep
(11) |
Oct
(34) |
Nov
(20) |
Dec
(36) |
| 2023 |
Jan
(79) |
Feb
(41) |
Mar
(99) |
Apr
(169) |
May
(48) |
Jun
(16) |
Jul
(16) |
Aug
(57) |
Sep
(19) |
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
1
(10) |
2
(22) |
3
(15) |
4
(14) |
5
(8) |
6
(10) |
7
(14) |
|
8
(9) |
9
(10) |
10
(21) |
11
(16) |
12
(17) |
13
(15) |
14
(8) |
|
15
(12) |
16
(8) |
17
(44) |
18
(24) |
19
(29) |
20
(29) |
21
(17) |
|
22
(17) |
23
(16) |
24
(18) |
25
(16) |
26
(15) |
27
(16) |
28
(11) |
|
29
(11) |
30
(10) |
31
(12) |
|
|
|
|
|
From: <sv...@va...> - 2006-01-27 15:11:33
|
Author: sewardj
Date: 2006-01-27 15:11:31 +0000 (Fri, 27 Jan 2006)
New Revision: 5596
Log:
Track vex r1553 (addition of Iop_Est8FRecip, case Iop_Est5FRSqrt)
Modified:
trunk/memcheck/mc_translate.c
Modified: trunk/memcheck/mc_translate.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/memcheck/mc_translate.c 2006-01-26 18:04:46 UTC (rev 5595)
+++ trunk/memcheck/mc_translate.c 2006-01-27 15:11:31 UTC (rev 5596)
@@ -2185,6 +2185,8 @@
case Iop_SqrtF64:
case Iop_AbsF64:
case Iop_2xm1F64:
+ case Iop_Est8FRecip:
+ case Iop_Est5FRSqrt:
case Iop_Clz64:
case Iop_Ctz64:
return mkPCastTo(mce, Ity_I64, vatom);
|
|
From: <sv...@va...> - 2006-01-27 15:09:49
|
Author: sewardj
Date: 2006-01-27 15:09:35 +0000 (Fri, 27 Jan 2006)
New Revision: 1553
Log:
Handle ppc32/64 fres, frsqrte.
Modified:
trunk/priv/guest-ppc/toIR.c
trunk/priv/host-ppc/hdefs.c
trunk/priv/host-ppc/hdefs.h
trunk/priv/host-ppc/isel.c
trunk/priv/ir/irdefs.c
trunk/pub/libvex_ir.h
Modified: trunk/priv/guest-ppc/toIR.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/priv/guest-ppc/toIR.c 2006-01-26 03:02:26 UTC (rev 1552)
+++ trunk/priv/guest-ppc/toIR.c 2006-01-27 15:09:35 UTC (rev 1553)
@@ -5701,16 +5701,15 @@
assign( frD, roundToSgl( unop(Iop_SqrtF64, mkexpr(frB)) ));
break;
=20
-//zz case 0x18: // fres (Floating Reciprocal Estimate Single, PPC3=
2 p421)
-//zz if (frA_addr !=3D 0 || frC_addr !=3D 0) {
-//zz vex_printf("dis_fp_arith(ppc)(instr,fres)\n");
-//zz return False;
-//zz }
-//zz DIP("fres%s fr%u,fr%u\n", flag_rC ? ".":"",
-//zz frD_addr, frB_addr);
-//zz DIP(" =3D> not implemented\n"); =20
-//zz // CAB: Can we use one of the 128 bit SIMD Iop_Recip32F op=
s?
-//zz return False;
+ case 0x18: // fres (Floating Reciprocal Estimate Single, PPC32 p42=
1)
+ if (frA_addr !=3D 0 || frC_addr !=3D 0) {
+ vex_printf("dis_fp_arith(ppc)(instr,fres)\n");
+ return False;
+ }
+ DIP("fres%s fr%u,fr%u\n", flag_rC ? ".":"",
+ frD_addr, frB_addr);
+ assign( frD, unop(Iop_Est8FRecip, mkexpr(frB)) );
+ break;
=20
case 0x19: // fmuls (Floating Multiply Single, PPC32 p414)
if (frB_addr !=3D 0) {
@@ -5805,16 +5804,15 @@
assign( frD, binop( Iop_MulF64, mkexpr(frA), mkexpr(frC) ) );
break;
=20
-//zz case 0x1A: // frsqrte (Floating Recip SqRt Est., PPC32 p424)
-//zz if (frA_addr !=3D 0 || frC_addr !=3D 0) {
-//zz vex_printf("dis_fp_arith(ppc)(instr,frsqrte)\n");
-//zz return False;
-//zz }
-//zz DIP("frsqrte%s fr%u,fr%u\n", flag_rC ? ".":"",
-//zz frD_addr, frB_addr);
-//zz DIP(" =3D> not implemented\n");
-//zz // CAB: Iop_SqrtF64, then one of the 128 bit SIMD Iop_Reci=
p32F ops?
-//zz return False;
+ case 0x1A: // frsqrte (Floating Recip SqRt Est., PPC32 p424)
+ if (frA_addr !=3D 0 || frC_addr !=3D 0) {
+ vex_printf("dis_fp_arith(ppc)(instr,frsqrte)\n");
+ return False;
+ }
+ DIP("frsqrte%s fr%u,fr%u\n", flag_rC ? ".":"",
+ frD_addr, frB_addr);
+ assign( frD, unop(Iop_Est5FRSqrt, mkexpr(frB)) );
+ break;
=20
default:
vex_printf("dis_fp_arith(ppc)(3F: opc2)\n");
Modified: trunk/priv/host-ppc/hdefs.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/priv/host-ppc/hdefs.c 2006-01-26 03:02:26 UTC (rev 1552)
+++ trunk/priv/host-ppc/hdefs.c 2006-01-27 15:09:35 UTC (rev 1553)
@@ -620,6 +620,8 @@
case Pfp_ABS: return "fabs";
case Pfp_NEG: return "fneg";
case Pfp_MOV: return "fmr";
+ case Pfp_RES: return "fres";
+ case Pfp_RSQRTE: return "frsqrte";
default: vpanic("showPPCFpOp");
}
}
@@ -3124,6 +3126,12 @@
UInt fr_dst =3D fregNo(i->Pin.FpUnary.dst);
UInt fr_src =3D fregNo(i->Pin.FpUnary.src);
switch (i->Pin.FpUnary.op) {
+ case Pfp_RSQRTE: // frsqrtre, PPC32 p424
+ p =3D mkFormA( p, 63, fr_dst, 0, fr_src, 0, 26, 0 );
+ break;
+ case Pfp_RES: // fres, PPC32 p421
+ p =3D mkFormA( p, 59, fr_dst, 0, fr_src, 0, 24, 0 );
+ break;
case Pfp_SQRT: // fsqrt, PPC32 p427
p =3D mkFormA( p, 63, fr_dst, 0, fr_src, 0, 22, 0 );
break;
Modified: trunk/priv/host-ppc/hdefs.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/priv/host-ppc/hdefs.h 2006-01-26 03:02:26 UTC (rev 1552)
+++ trunk/priv/host-ppc/hdefs.h 2006-01-27 15:09:35 UTC (rev 1553)
@@ -371,7 +371,7 @@
Pfp_ADD, Pfp_SUB, Pfp_MUL, Pfp_DIV,=20
=20
/* Unary */
- Pfp_SQRT, Pfp_ABS, Pfp_NEG, Pfp_MOV
+ Pfp_SQRT, Pfp_ABS, Pfp_NEG, Pfp_MOV, Pfp_RES, Pfp_RSQRTE
}
PPCFpOp;
=20
Modified: trunk/priv/host-ppc/isel.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/priv/host-ppc/isel.c 2006-01-26 03:02:26 UTC (rev 1552)
+++ trunk/priv/host-ppc/isel.c 2006-01-27 15:09:35 UTC (rev 1553)
@@ -2876,9 +2876,11 @@
if (e->tag =3D=3D Iex_Unop) {
PPCFpOp fpop =3D Pfp_INVALID;
switch (e->Iex.Unop.op) {
- case Iop_NegF64: fpop =3D Pfp_NEG; break;
- case Iop_AbsF64: fpop =3D Pfp_ABS; break;
- case Iop_SqrtF64: fpop =3D Pfp_SQRT; break;
+ case Iop_NegF64: fpop =3D Pfp_NEG; break;
+ case Iop_AbsF64: fpop =3D Pfp_ABS; break;
+ case Iop_SqrtF64: fpop =3D Pfp_SQRT; break;
+ case Iop_Est8FRecip: fpop =3D Pfp_RES; break;
+ case Iop_Est5FRSqrt: fpop =3D Pfp_RSQRTE; break;
default: break;
}
if (fpop !=3D Pfp_INVALID) {
Modified: trunk/priv/ir/irdefs.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/priv/ir/irdefs.c 2006-01-26 03:02:26 UTC (rev 1552)
+++ trunk/priv/ir/irdefs.c 2006-01-27 15:09:35 UTC (rev 1553)
@@ -263,6 +263,9 @@
case Iop_TanF64: vex_printf("TanF64"); return;
case Iop_2xm1F64: vex_printf("2xm1F64"); return;
=20
+ case Iop_Est8FRecip: vex_printf("Est8FRecip"); return;
+ case Iop_Est5FRSqrt: vex_printf("Est5FRSqrt"); return;
+
case Iop_CmpF64: vex_printf("CmpF64"); return;
=20
case Iop_F64toI16: vex_printf("F64toI16"); return;
@@ -1517,6 +1520,7 @@
BINARY(Ity_I32,Ity_F64,Ity_F64);
case Iop_NegF64: case Iop_AbsF64: case Iop_SqrtF64:
case Iop_SinF64: case Iop_CosF64: case Iop_TanF64: case Iop_2xm1F6=
4:
+ case Iop_Est8FRecip: case Iop_Est5FRSqrt:
UNARY(Ity_F64,Ity_F64);
=20
case Iop_ReinterpI64asF64: UNARY(Ity_F64, Ity_I64);
Modified: trunk/pub/libvex_ir.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/pub/libvex_ir.h 2006-01-26 03:02:26 UTC (rev 1552)
+++ trunk/pub/libvex_ir.h 2006-01-27 15:09:35 UTC (rev 1553)
@@ -331,7 +331,7 @@
Iop_1Sto32, /* :: Ity_Bit -> Ity_I32, signed widen */
Iop_1Sto64, /* :: Ity_Bit -> Ity_I64, signed widen */
=20
- /* ------ Floating point. We try and be IEEE754 compliant. ------=
*/
+ /* ------ Floating point. We try to be IEEE754 compliant. ------ =
*/
=20
/* Binary operations mandated by IEEE754. */
Iop_AddF64, Iop_SubF64, Iop_MulF64, Iop_DivF64, /* Iop_RemF64, */
@@ -359,6 +359,10 @@
Iop_TanF64, /* FTAN */
Iop_2xm1F64, /* (2^arg - 1.0) */
=20
+ /* Unary ops supported by PPC but not mandated by 754. */
+ Iop_Est8FRecip, /* reciprocal estimate, 8 good bits */
+ Iop_Est5FRSqrt, /* reciprocal square root estimate, 5 good bits */
+
/* Comparison, yielding GT/LT/EQ/UN(ordered), as per the following=
:
0x45 Unordered
0x01 LT
|
|
From: <js...@ac...> - 2006-01-27 10:38:43
|
Nightly build on minnie ( SuSE 10.0, ppc32 ) started at 2006-01-27 05:00:01 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 188 tests, 10 stderr failures, 2 stdout failures ================= memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/mempool (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/sigaltstack (stderr) memcheck/tests/stack_changes (stdout) memcheck/tests/stack_changes (stderr) memcheck/tests/xml1 (stderr) none/tests/faultstatus (stderr) none/tests/mremap (stderr) none/tests/ppc32/jm-fp (stdout) none/tests/ppc32/jm-fp (stderr) |
|
From: <js...@ac...> - 2006-01-27 04:03:48
|
Nightly build on phoenix ( SuSE 10.0 ) started at 2006-01-27 03:30:01 GMT Checking out vex source tree ... done Building vex ... done Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 221 tests, 7 stderr failures, 0 stdout failures ================= memcheck/tests/leak-tree (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/x86/faultstatus (stderr) none/tests/x86/int (stderr) |
|
From: <js...@ac...> - 2006-01-27 03:56:43
|
Nightly build on g5 ( YDL 4.0, ppc970 ) started at 2006-01-27 04:40:00 CET Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 191 tests, 6 stderr failures, 1 stdout failure ================= memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/leakotron (stdout) memcheck/tests/pointer-trace (stderr) none/tests/faultstatus (stderr) none/tests/fdleak_fcntl (stderr) none/tests/mremap (stderr) |
|
From: Tom H. <to...@co...> - 2006-01-27 03:43:55
|
Nightly build on dunsmere ( athlon, Fedora Core 4 ) started at 2006-01-27 03:30:05 GMT Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 223 tests, 7 stderr failures, 1 stdout failure ================= memcheck/tests/leak-tree (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) memcheck/tests/x86/sse1_memory (stdout) none/tests/x86/faultstatus (stderr) none/tests/x86/int (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 223 tests, 8 stderr failures, 1 stdout failure ================= memcheck/tests/leak-tree (stderr) memcheck/tests/mempool (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) memcheck/tests/x86/sse1_memory (stdout) none/tests/x86/faultstatus (stderr) none/tests/x86/int (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Fri Jan 27 03:37:04 2006 --- new.short Fri Jan 27 03:43:48 2006 *************** *** 8,12 **** ! == 223 tests, 8 stderr failures, 1 stdout failure ================= memcheck/tests/leak-tree (stderr) - memcheck/tests/mempool (stderr) memcheck/tests/pointer-trace (stderr) --- 8,11 ---- ! == 223 tests, 7 stderr failures, 1 stdout failure ================= memcheck/tests/leak-tree (stderr) memcheck/tests/pointer-trace (stderr) |
|
From: Tom H. <th...@cy...> - 2006-01-27 03:30:33
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2006-01-27 03:00:02 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 242 tests, 7 stderr failures, 1 stdout failure ================= memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) memcheck/tests/x86/sse1_memory (stdout) none/tests/amd64/faultstatus (stderr) none/tests/fdleak_fcntl (stderr) none/tests/x86/faultstatus (stderr) none/tests/x86/int (stderr) |
|
From: Tom H. <th...@cy...> - 2006-01-27 03:30:31
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2006-01-27 03:15:02 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 222 tests, 21 stderr failures, 1 stdout failure ================= memcheck/tests/addressable (stderr) memcheck/tests/badjump (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/erringfds (stderr) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-regroot (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/mempool (stderr) memcheck/tests/partial_load_dflt (stderr) memcheck/tests/partial_load_ok (stderr) memcheck/tests/partiallydefinedeq (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/sigkill (stderr) memcheck/tests/stack_changes (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) memcheck/tests/x86/sse1_memory (stdout) memcheck/tests/xml1 (stderr) none/tests/x86/faultstatus (stderr) none/tests/x86/int (stderr) |
|
From: Tom H. <th...@cy...> - 2006-01-27 03:23:48
|
Nightly build on dellow ( x86_64, Fedora Core 4 ) started at 2006-01-27 03:10:08 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 242 tests, 5 stderr failures, 1 stdout failure ================= memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) memcheck/tests/x86/sse1_memory (stdout) none/tests/amd64/faultstatus (stderr) none/tests/x86/faultstatus (stderr) none/tests/x86/int (stderr) |
|
From: Tom H. <th...@cy...> - 2006-01-27 03:19:24
|
Nightly build on aston ( x86_64, Fedora Core 3 ) started at 2006-01-27 03:05:13 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 242 tests, 6 stderr failures, 1 stdout failure ================= memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) memcheck/tests/x86/sse1_memory (stdout) none/tests/amd64/faultstatus (stderr) none/tests/x86/faultstatus (stderr) none/tests/x86/int (stderr) |
|
From: Eric P. <eri...@wa...> - 2006-01-26 20:31:30
|
Hi folks, I've just been trying to make Wine run under valgrind (3.1.0). Things greately evolved since our last tries: we can now run lots of applications, and a major part of our test suite under valgrind. congrats folks!! The down side being of course some more bugs to fix <g>. I've posted two patches in bugzilla to improve some parts, which hopefully can make for 3.2.0. There's still a showstopper for a better Wine support. The way we handle SEH (structured exception handling in Windows's terms) doesn't work with valgrind (tested on x86). Basically, Wine needs to translate some Unix signals into exceptions (in Windows language). For lots of reason, we decided to implement this situation with: - grabbing information about the signal (sigcontext, cause of the signal - btw, on the two patches I'm talking of is about trapno information that we do need). This is done in the unix signal handler - from the unix signal handler, push that information onto the stack (thread stack, not the signal handler stack) - change EIP in the sigcontext to the address of a dedicated function of ours - when the finish the signal handler, execution will resume in the dedicated function, where we can transfer all signal information, but executed on the thread stack (not the signal stack) We had to do it for reasons dealing mainly for race issues. What doesn't currently work in valgrind is changing the EIP in the sigcontext. Current implementation of restore_sigcontext() in coregrind/m_sigframe/sigframe-x86-linux.c doesn't restore EIP into VEX: when we return from the signal handler, execution resumes at the opcode with first generated the signal. Back to square one :-/ I simply tried to set EIP back in the restore_sigcontext() function, but this leads to a crash in IR (about unsupported opcode). I suppose I'm missing something (like resetting some other elements for execution in some other places). Anything I could do about this ? TIA -- Eric Pouech |
|
From: Julian S. <js...@ac...> - 2006-01-26 19:24:34
|
Dave > I am running on an IBM Power5 machine running SuSe Enterprise Server 9 > and am getting the following crash when starting up Valgrind (copied > from SVN on 1-18) on any 64 bit program: > ==24861== Process terminating with default action of signal 11 > (SIGSEGV)==24861== Bad permissions for mapped region at address 0x53E0 > ==24861== at 0x53E0: ??? I also tried it out on POWER5 / SLES9 a few days ago and fixed exactly this. It's because the initial PC and toc pointer are not properly relocated (as you also noticed). > Eventually this entry address 0x53e0 will be propagated out to start up > the dynamic linker and get the segfault. My guess is that this value > needs to be relocated relative to 0x400000 but I'm not that familiar > at how this should work. Good detective work. That's exactly the same diagnosis I came to, and I fixed it in valgrind r5576, last Friday. Can you svn up and try again? > If you need more information to re-create this please let me know. > > Is this the correct forum for this sort of report or should I be > submitting a Bugzilla? For code which is currently under active development (you are keeping an eye on the svn commit messages, right?), this is the right kind of place. For stable/official releases, or for bugs in code which hasn't been hacked around recently, bugzilla is better. The line is a bit hazy. > What is the criteria I should use for deciding where to submit future > problem reports? I would only add that if you're reporting bugs against recent dev code, it's worth svn up-ing and rebuilding everything from scratch before chasing a bug. The rate of change can sometimes be very high, as it has been these past couple of weeks for ppc64. Good to see you folks exercising the ppc32/64 port. J |
|
From: Dave N. <dc...@us...> - 2006-01-26 19:01:18
|
I am running on an IBM Power5 machine running SuSe Enterprise Server 9
and am getting the following crash when starting up Valgrind (copied
from SVN on 1-18) on any 64 bit program:
--24861-- Command line
--24861-- /home/dcn/null
--24861-- Startup, with flags:
--24861-- -v
--24861-- Contents of /proc/version:
--24861-- Linux version 2.6.5-7.97-pseries64.nm (geeko@buildhost) (gcc
version 3.3.3 (SuSE Linux)) #1 SMP Thu Mar 31 10:55:11 PST 2005
--24861-- Arch and subarch: PPC64, ppc64-int-and-fp
--24861-- Valgrind library directory:
/home/dcn/svn/1-18/install_bin/lib/valgrind/
--24861-- Reading syms from /lib64/ld-2.3.3.so (0x4000000)
--24861-- Reading syms from /home/dcn/null (0x10000000)
--24861-- Reading syms from
/home/dcn/svn/1-18/install_bin/lib/valgrind/ppc64-linux/memcheck
(0x70000000)
--24861-- object doesn't have a dynamic symbol table
--24861-- Reading suppressions file:
/home/dcn/svn/1-18/install_bin/lib/valgrind//default.supp
==24861== Jump to the invalid address stated on the next line
==24861== at 0x53E0: ???
==24861== Address 0x53E0 is not stack'd, malloc'd or (recently) free'd
==24861==
==24861== Process terminating with default action of signal 11
(SIGSEGV)==24861== Bad permissions for mapped region at address 0x53E0
==24861== at 0x53E0: ???
After some debugging on an IBM PPC970 where the same SVN version of
valgrind works just fine on 64 bit programs I noticed that one
difference was the dynamic loader: Power5 -> /lib64/ld-2.3.3.so
970 -> /lib64/ld-2.3.4.so
I think the significant difference between these two loaders is the
load address (objdump -h) :
970:LOAD off 0x0000000000000000 vaddr 0x000000806cb20000 paddr
0x000000806cb20000 align 2**16
P5:LOAD off 0x0000000000000000 vaddr 0x0000000000000000 paddr
0x0000000000000000 align 2**16
While debugging on both machines I noticed that vaddr==0 causes
Load_ELF to traverse different paths and I'm guessing that you haven't
tried out the vaddr=0 path. The comment in load_ELF says:
("Otherwise" means dynamically linked)
- Otherwise, we need to use mapelf() a second time to load the
interpreter. The interpreter can go anywhere, but mapelf() wants
to be told a specific address to put it at. So an advisory query
is passed to aspacem, asking where it would put an anonymous
client mapping of size INTERP_SIZE. That address is then used
as the mapping address for the interpreter.
While debugging on the Power5 I see the code allocating a segment at
0x400000:
Breakpoint 19, load_ELF (fd=0x6, name=0x1 <Address 0x1 out of bounds>,
info=0x70bc1ed0) at m_ume.c:481
481 (void)mapelf(interp, (ESZ(Addr))advised - interp_addr);
(gdb) a
483 VG_(close)(interp->fd);
(gdb) p interp_addr
$103 = 0x0
(gdb) p advised
$104 = 0x4000000
If I step a bit further where the entry address is calculated:
(gdb) a
485 entry = (void *)(advised - interp_addr + interp->e.e_entry);
(gdb) a
486 info->interp_base = (ESZ(Addr))advised;
(gdb) p entry
$105 = (void *) 0x402d2d0
(gdb) p interp->e.e_entry
$106 = 0x2d2d0
(gdb) x/4x 0x402d2d0
0x402d2d0: 0x00000000 0x000053e0 0x00000000 0x000363e8
Eventually this entry address 0x53e0 will be propagated out to start up
the dynamic linker and get the segfault. My guess is that this value
needs to be relocated relative to 0x400000 but I'm not that familiar
at how this should work.
If you need more information to re-create this please let me know.
Is this the correct forum for this sort of report or should I be
submitting a Bugzilla?
What is the criteria I should use for deciding where to submit future
problem reports?
Bugzilla ==> reports against official Valgrind releases?
|
|
From: <sv...@va...> - 2006-01-26 18:04:54
|
Author: sewardj Date: 2006-01-26 18:04:46 +0000 (Thu, 26 Jan 2006) New Revision: 5595 Log: Get rid of some will-never-be-used redirections -- names which are in libstdc++ but which are not (C++) mangled. Modified: trunk/coregrind/m_replacemalloc/vg_replace_malloc.c Modified: trunk/coregrind/m_replacemalloc/vg_replace_malloc.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/coregrind/m_replacemalloc/vg_replace_malloc.c 2006-01-26 14:25:= 51 UTC (rev 5594) +++ trunk/coregrind/m_replacemalloc/vg_replace_malloc.c 2006-01-26 18:04:= 46 UTC (rev 5595) @@ -150,14 +150,6 @@ //ALLOC_or_NULL(m_libpgc_dot_so, malloc, malloc); =20 =20 -// operator new(unsigned int), unmangled for some bizarre reason -ALLOC_or_BOMB(m_libstc_plus_plus_star, builtin_new, __builtin_new); -ALLOC_or_BOMB(m_libc_dot_so_star, builtin_new, __builtin_new); - -ALLOC_or_BOMB(m_libstc_plus_plus_star, __builtin_new, __builtin_new); -ALLOC_or_BOMB(m_libc_dot_so_star, __builtin_new, __builtin_new); - - // operator new(unsigned int), GNU mangling, 32-bit platforms // operator new(unsigned long), GNU mangling, 64-bit platforms #if VG_WORDSIZE =3D=3D 4 @@ -186,11 +178,6 @@ #endif =20 =20 -// operator new[](unsigned int), unmangled for some bizarre reason -ALLOC_or_BOMB(m_libstc_plus_plus_star, __builtin_vec_new, __builtin_vec_= new ); -ALLOC_or_BOMB(m_libc_dot_so_star, __builtin_vec_new, __builtin_vec_= new ); - - // operator new[](unsigned int), GNU mangling, 32-bit platforms // operator new[](unsigned long), GNU mangling, 64-bit platforms #if VG_WORDSIZE =3D=3D 4 @@ -238,10 +225,6 @@ FREE(m_libstc_plus_plus_star, cfree, free ); FREE(m_libc_dot_so_star, cfree, free ); =20 -// do we really need these? -FREE(m_libstc_plus_plus_star, __builtin_delete, __builtin_delete ); -FREE(m_libc_dot_so_star, __builtin_delete, __builtin_delete ); - // operator delete(void*), GNU mangling FREE(m_libstc_plus_plus_star, _ZdlPv, __builtin_delete ); FREE(m_libc_dot_so_star, _ZdlPv, __builtin_delete ); @@ -251,8 +234,6 @@ FREE(m_libc_dot_so_star, _ZdlPvRKSt9nothrow_t, __builtin_delete ); =20 // operator delete[](void*), GNU mangling -FREE(m_libstc_plus_plus_star, __builtin_vec_delete, __builtin_vec_delet= e ); -FREE(m_libc_dot_so_star, __builtin_vec_delete, __builtin_vec_delet= e ); FREE(m_libstc_plus_plus_star, _ZdaPv, __builtin_vec_delet= e ); FREE(m_libc_dot_so_star, _ZdaPv, __builtin_vec_delet= e ); =20 |
|
From: <sv...@va...> - 2006-01-26 14:26:10
|
Author: sewardj
Date: 2006-01-26 14:25:51 +0000 (Thu, 26 Jan 2006)
New Revision: 5594
Log:
ppc32-linux: enable __NR_statfs
Modified:
trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c
trunk/coregrind/vki_unistd-ppc32-linux.h
Modified: trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c 2006-01-25 02:58:28 U=
TC (rev 5593)
+++ trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c 2006-01-26 14:25:51 U=
TC (rev 5594)
@@ -1563,7 +1563,7 @@
GENX_(__NR_getpriority, sys_getpriority), // 96
GENX_(__NR_setpriority, sys_setpriority), // 97
//.. GENX_(__NR_profil, sys_ni_syscall), // 98
-//.. GENXY(__NR_statfs, sys_statfs), // 99
+ GENXY(__NR_statfs, sys_statfs), // 99
//..=20
//.. GENXY(__NR_fstatfs, sys_fstatfs), // 100
//.. LINX_(__NR_ioperm, sys_ioperm), // 101
Modified: trunk/coregrind/vki_unistd-ppc32-linux.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/vki_unistd-ppc32-linux.h 2006-01-25 02:58:28 UTC (rev=
5593)
+++ trunk/coregrind/vki_unistd-ppc32-linux.h 2006-01-26 14:25:51 UTC (rev=
5594)
@@ -128,7 +128,7 @@
#define __NR_getpriority 96
#define __NR_setpriority 97
//#define __NR_profil 98
-//#define __NR_statfs 99
+#define __NR_statfs 99
//#define __NR_fstatfs 100
//#define __NR_ioperm 101
#define __NR_socketcall 102
|
|
From: <js...@ac...> - 2006-01-26 10:33:39
|
Nightly build on minnie ( SuSE 10.0, ppc32 ) started at 2006-01-26 05:00:01 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 188 tests, 10 stderr failures, 2 stdout failures ================= memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/mempool (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/sigaltstack (stderr) memcheck/tests/stack_changes (stdout) memcheck/tests/stack_changes (stderr) memcheck/tests/xml1 (stderr) none/tests/faultstatus (stderr) none/tests/mremap (stderr) none/tests/ppc32/jm-fp (stdout) none/tests/ppc32/jm-fp (stderr) |
|
From: <js...@ac...> - 2006-01-26 04:03:10
|
Nightly build on g5 ( YDL 4.0, ppc970 ) started at 2006-01-26 04:40:00 CET Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 191 tests, 6 stderr failures, 1 stdout failure ================= memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/leakotron (stdout) memcheck/tests/pointer-trace (stderr) none/tests/faultstatus (stderr) none/tests/fdleak_fcntl (stderr) none/tests/mremap (stderr) |
|
From: <js...@ac...> - 2006-01-26 03:57:54
|
Nightly build on phoenix ( SuSE 10.0 ) started at 2006-01-26 03:30:01 GMT Checking out vex source tree ... done Building vex ... done Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 221 tests, 7 stderr failures, 0 stdout failures ================= memcheck/tests/leak-tree (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/x86/faultstatus (stderr) none/tests/x86/int (stderr) |
|
From: Tom H. <to...@co...> - 2006-01-26 03:44:26
|
Nightly build on dunsmere ( athlon, Fedora Core 4 ) started at 2006-01-26 03:30:05 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 223 tests, 8 stderr failures, 1 stdout failure ================= memcheck/tests/leak-tree (stderr) memcheck/tests/mempool (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) memcheck/tests/x86/sse1_memory (stdout) none/tests/x86/faultstatus (stderr) none/tests/x86/int (stderr) |
|
From: Tom H. <th...@cy...> - 2006-01-26 03:30:32
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2006-01-26 03:15:03 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 222 tests, 21 stderr failures, 1 stdout failure ================= memcheck/tests/addressable (stderr) memcheck/tests/badjump (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/erringfds (stderr) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-regroot (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/mempool (stderr) memcheck/tests/partial_load_dflt (stderr) memcheck/tests/partial_load_ok (stderr) memcheck/tests/partiallydefinedeq (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/sigkill (stderr) memcheck/tests/stack_changes (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) memcheck/tests/x86/sse1_memory (stdout) memcheck/tests/xml1 (stderr) none/tests/x86/faultstatus (stderr) none/tests/x86/int (stderr) |
|
From: Tom H. <th...@cy...> - 2006-01-26 03:24:28
|
Nightly build on dellow ( x86_64, Fedora Core 4 ) started at 2006-01-26 03:10:06 GMT Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 242 tests, 7 stderr failures, 1 stdout failure ================= memcheck/tests/mempool (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) memcheck/tests/x86/sse1_memory (stdout) none/tests/amd64/faultstatus (stderr) none/tests/x86/faultstatus (stderr) none/tests/x86/int (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 242 tests, 7 stderr failures, 2 stdout failures ================= memcheck/tests/leakotron (stdout) memcheck/tests/mempool (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) memcheck/tests/x86/sse1_memory (stdout) none/tests/amd64/faultstatus (stderr) none/tests/x86/faultstatus (stderr) none/tests/x86/int (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Thu Jan 26 03:17:40 2006 --- new.short Thu Jan 26 03:24:08 2006 *************** *** 8,11 **** ! == 242 tests, 7 stderr failures, 2 stdout failures ================= ! memcheck/tests/leakotron (stdout) memcheck/tests/mempool (stderr) --- 8,10 ---- ! == 242 tests, 7 stderr failures, 1 stdout failure ================= memcheck/tests/mempool (stderr) |
|
From: Tom H. <th...@cy...> - 2006-01-26 03:19:41
|
Nightly build on aston ( x86_64, Fedora Core 3 ) started at 2006-01-26 03:05:09 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 242 tests, 6 stderr failures, 1 stdout failure ================= memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) memcheck/tests/x86/sse1_memory (stdout) none/tests/amd64/faultstatus (stderr) none/tests/x86/faultstatus (stderr) none/tests/x86/int (stderr) |
|
From: Tom H. <th...@cy...> - 2006-01-26 03:13:48
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2006-01-26 03:00:03 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 242 tests, 7 stderr failures, 1 stdout failure ================= memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) memcheck/tests/x86/sse1_memory (stdout) none/tests/amd64/faultstatus (stderr) none/tests/fdleak_fcntl (stderr) none/tests/x86/faultstatus (stderr) none/tests/x86/int (stderr) |
|
From: <sv...@va...> - 2006-01-26 03:03:18
|
Author: sewardj
Date: 2006-01-26 03:02:26 +0000 (Thu, 26 Jan 2006)
New Revision: 1552
Log:
In 32-bit mode, handle F64toI64 and I64toF64.
Modified:
trunk/priv/host-ppc/isel.c
Modified: trunk/priv/host-ppc/isel.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/priv/host-ppc/isel.c 2006-01-26 02:24:17 UTC (rev 1551)
+++ trunk/priv/host-ppc/isel.c 2006-01-26 03:02:26 UTC (rev 1552)
@@ -2478,6 +2478,35 @@
*rLo =3D iselWordExpr_R(env, e->Iex.Binop.arg2);
return;
=20
+ /* F64toI64 */
+ case Iop_F64toI64: {
+ HReg tLo =3D newVRegI(env);
+ HReg tHi =3D newVRegI(env);
+ HReg r1 =3D StackFramePtr(env->mode64);
+ PPCAMode* zero_r1 =3D PPCAMode_IR( 0, r1 );
+ PPCAMode* four_r1 =3D PPCAMode_IR( 4, r1 );
+ HReg fsrc =3D iselDblExpr(env, e->Iex.Binop.arg2);
+ HReg ftmp =3D newVRegF(env);
+
+ vassert(!env->mode64);
+ /* Set host rounding mode */
+ set_FPU_rounding_mode( env, e->Iex.Binop.arg1 );
+
+ sub_from_sp( env, 16 );
+ addInstr(env, PPCInstr_FpCftI(False/*F->I*/, False/*int64*/,
+ ftmp, fsrc));
+ addInstr(env, PPCInstr_FpLdSt(False/*store*/, 8, ftmp, zero_=
r1));
+ addInstr(env, PPCInstr_Load(4, tHi, zero_r1, False/*mode32*/=
));
+ addInstr(env, PPCInstr_Load(4, tLo, four_r1, False/*mode32*/=
));
+ add_to_sp( env, 16 );
+
+ /* Restore default FPU rounding. */
+ set_FPU_rounding_default( env );
+ *rHi =3D tHi;
+ *rLo =3D tLo;
+ return;
+ }
+
default:=20
break;
}
@@ -2814,6 +2843,32 @@
/* Restore default FPU rounding. */
set_FPU_rounding_default( env );
return fdst;
+ } else {
+ /* 32-bit mode */
+ HReg fdst =3D newVRegF(env);
+ HReg isrcHi, isrcLo;
+ HReg r1 =3D StackFramePtr(env->mode64);
+ PPCAMode* zero_r1 =3D PPCAMode_IR( 0, r1 );
+ PPCAMode* four_r1 =3D PPCAMode_IR( 4, r1 );
+
+ iselInt64Expr(&isrcHi, &isrcLo, env, e->Iex.Binop.arg2);
+
+ /* Set host rounding mode */
+ set_FPU_rounding_mode( env, e->Iex.Binop.arg1 );
+
+ sub_from_sp( env, 16 );
+
+ addInstr(env, PPCInstr_Store(4, zero_r1, isrcHi, False/*mode=
32*/));
+ addInstr(env, PPCInstr_Store(4, four_r1, isrcLo, False/*mode=
32*/));
+ addInstr(env, PPCInstr_FpLdSt(True/*load*/, 8, fdst, zero_r1=
));
+ addInstr(env, PPCInstr_FpCftI(True/*I->F*/, False/*int64*/,=20
+ fdst, fdst));
+
+ add_to_sp( env, 16 );
+
+ /* Restore default FPU rounding. */
+ set_FPU_rounding_default( env );
+ return fdst;
}
}
}
|
|
From: <sv...@va...> - 2006-01-26 02:24:22
|
Author: sewardj
Date: 2006-01-26 02:24:17 +0000 (Thu, 26 Jan 2006)
New Revision: 1551
Log:
A bit more backend tidying:
- fix up more float-integer conversions
- remove unused signedness field on PPCInstr_Load
Modified:
trunk/priv/host-ppc/hdefs.c
trunk/priv/host-ppc/hdefs.h
trunk/priv/host-ppc/isel.c
Modified: trunk/priv/host-ppc/hdefs.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/priv/host-ppc/hdefs.c 2006-01-25 21:29:48 UTC (rev 1550)
+++ trunk/priv/host-ppc/hdefs.c 2006-01-26 02:24:17 UTC (rev 1551)
@@ -582,6 +582,7 @@
case Pun_NEG: return "neg";
case Pun_CLZ32: return "cntlzw";
case Pun_CLZ64: return "cntlzd";
+ case Pun_EXTSW: return "extsw";
default: vpanic("showPPCUnaryOp");
}
}
@@ -837,12 +838,11 @@
vassert(cond.test !=3D Pct_ALWAYS);
return i;
}
-PPCInstr* PPCInstr_Load ( UChar sz, Bool syned,
+PPCInstr* PPCInstr_Load ( UChar sz,
HReg dst, PPCAMode* src, Bool mode64 ) {
PPCInstr* i =3D LibVEX_Alloc(sizeof(PPCInstr));
i->tag =3D Pin_Load;
i->Pin.Load.sz =3D sz;
- i->Pin.Load.syned =3D syned;
i->Pin.Load.src =3D src;
i->Pin.Load.dst =3D dst;
vassert(sz =3D=3D 1 || sz =3D=3D 2 || sz =3D=3D 4 || sz =3D=3D 8);
@@ -1333,8 +1333,7 @@
Bool idxd =3D toBool(i->Pin.Load.src->tag =3D=3D Pam_RR);
UChar sz =3D i->Pin.Load.sz;
UChar c_sz =3D sz=3D=3D1 ? 'b' : sz=3D=3D2 ? 'h' : sz=3D=3D4 ? 'w'=
: 'd';
- HChar* s_syned =3D i->Pin.Load.syned ? "a" : sz=3D=3D8 ? "" : "z";
- vex_printf("l%c%s%s ", c_sz, s_syned, idxd ? "x" : "" );
+ vex_printf("l%cz%s ", c_sz, idxd ? "x" : "" );
ppHRegPPC(i->Pin.Load.dst);
vex_printf(",");
ppPPCAMode(i->Pin.Load.src);
@@ -2138,10 +2137,10 @@
switch (hregClass(rreg)) {
case HRcInt64:
vassert(mode64);
- return PPCInstr_Load( 8, False, rreg, am, mode64 );
+ return PPCInstr_Load( 8, rreg, am, mode64 );
case HRcInt32:
vassert(!mode64);
- return PPCInstr_Load( 4, False, rreg, am, mode64 );
+ return PPCInstr_Load( 4, rreg, am, mode64 );
case HRcFlt64:
return PPCInstr_FpLdSt ( True/*load*/, 8, rreg, am );
case HRcVec128:
@@ -2534,7 +2533,9 @@
UChar* ptmp =3D p;
vassert(nbuf >=3D 32);
=20
-// vex_printf("asm ");ppPPCInstr(i, mode64); vex_printf("\n");
+ if (0) {
+ vex_printf("asm ");ppPPCInstr(i, mode64); vex_printf("\n");
+ }
=20
switch (i->tag) {
=20
@@ -2797,8 +2798,13 @@
p =3D mkFormX(p, 31, r_src, r_dst, 0, 26, 0);
break;
case Pun_CLZ64: // cntlzd r_dst, r_src
+ vassert(mode64);
p =3D mkFormX(p, 31, r_src, r_dst, 0, 58, 0);
break;
+ case Pun_EXTSW: // extsw r_dst, r_src
+ vassert(mode64);
+ p =3D mkFormX(p, 31, r_src, r_dst, 0, 986, 0);
+ break;
default: goto bad;
}
goto done;
@@ -3011,28 +3017,25 @@
case Pin_Load: {
PPCAMode* am_addr =3D i->Pin.Load.src;
UInt r_dst =3D iregNo(i->Pin.Load.dst, mode64);
- Bool syned =3D i->Pin.Load.syned;
UInt opc1, opc2, sz =3D i->Pin.Load.sz;
switch (am_addr->tag) {
case Pam_IR:
switch(sz) {
- case 1: opc1 =3D 34; break;
- case 2: opc1 =3D (syned) ? 42: 40; break;
- case 4: opc1 =3D 32; break;
- case 8: opc1 =3D 58; break;
- default:
- goto bad;
+ case 1: opc1 =3D 34; break;
+ case 2: opc1 =3D 40; break;
+ case 4: opc1 =3D 32; break;
+ case 8: opc1 =3D 58; vassert(mode64); break;
+ default: goto bad;
}
p =3D doAMode_IR(p, opc1, r_dst, am_addr, mode64);
goto done;
case Pam_RR:
switch(sz) {
- case 1: opc2 =3D 87; break;
- case 2: opc2 =3D (syned) ? 343: 279; break;
- case 4: opc2 =3D 23; break;
- case 8: opc2 =3D 21; break;
- default:
- goto bad;
+ case 1: opc2 =3D 87; break;
+ case 2: opc2 =3D 279; break;
+ case 4: opc2 =3D 23; break;
+ case 8: opc2 =3D 21; vassert(mode64); break;
+ default: goto bad;
}
p =3D doAMode_RR(p, 31, opc2, r_dst, am_addr, mode64);
goto done;
@@ -3215,68 +3218,19 @@
p =3D mkFormX(p, 63, fr_dst, 0, fr_src, 14, 0);
goto done;
}
+ if (i->Pin.FpCftI.fromI =3D=3D False && i->Pin.FpCftI.int32 =3D=3D=
False) {
+ // fctid (conv f64 to i64), PPC64 p437
+ p =3D mkFormX(p, 63, fr_dst, 0, fr_src, 814, 0);
+ goto done;
+ }
+ if (i->Pin.FpCftI.fromI =3D=3D True && i->Pin.FpCftI.int32 =3D=3D =
False) {
+ // fcfid (conv i64 to f64), PPC64 p434
+ p =3D mkFormX(p, 63, fr_dst, 0, fr_src, 846, 0);
+ goto done;
+ }
goto bad;
}
=20
-// case Pin_FpF64toI32: {
-// UInt r_dst =3D iregNo(i->Pin.FpF64toI32.dst, mode64);
-// UInt fr_src =3D fregNo(i->Pin.FpF64toI32.src);
-// UChar fr_tmp =3D 7; // Temp freg
-// PPCAMode* am_addr;
-//
-// // fctiw (conv f64 to i32), PPC32 p404
-// p =3D mkFormX(p, 63, fr_tmp, 0, fr_src, 14, 0);
-//
-// // No RI form of stfiwx, so need PPCAMode_RR:
-// am_addr =3D PPCAMode_RR( StackFramePtr(mode64),
-// hregPPC_GPR0(mode64) );
-//
-// // stfiwx (store fp64[lo32] as int32), PPC32 p517
-// p =3D doAMode_RR(p, 31, 983, fr_tmp, am_addr, mode64);
-//
-// // lwzx (load int32), PPC32 p463
-// p =3D doAMode_RR(p, 31, 23, r_dst, am_addr, mode64);
-// goto done;
-// }
-//
-// case Pin_FpF64toI64: {
-// UInt r_dst =3D iregNo(i->Pin.FpF64toI64.dst, mode64);
-// UInt fr_src =3D fregNo(i->Pin.FpF64toI64.src);
-// UChar fr_tmp =3D 7; // Temp freg
-// PPCAMode* am_addr;
-//
-// // fctid (conv f64 to i64), PPC64 p437
-// p =3D mkFormX(p, 63, fr_tmp, 0, fr_src, 814, 0);
-//
-// am_addr =3D PPCAMode_RR( StackFramePtr(mode64),
-// hregPPC_GPR0(mode64) );
-//
-// // stfdx (store fp64), PPC64 p589
-// p =3D doAMode_RR(p, 31, 727, fr_tmp, am_addr, mode64);
-//
-// // ldx (load int64), PPC64 p476
-// p =3D doAMode_RR(p, 31, 21, r_dst, am_addr, mode64);
-// goto done;
-// }
-//
-// case Pin_FpI64toF64: {
-// UInt r_src =3D iregNo(i->Pin.FpI64toF64.src, mode64);
-// UInt fr_dst =3D fregNo(i->Pin.FpI64toF64.dst);
-// UChar fr_tmp =3D 7; // Temp freg
-// PPCAMode* am_addr =3D PPCAMode_RR( StackFramePtr(mode64),
-// hregPPC_GPR0(mode64) );
-//
-// // stdx r_src,r0,r1
-// p =3D doAMode_RR(p, 31, 149, r_src, am_addr, mode64);
-//
-// // lfdx fr7,r0,r1
-// p =3D doAMode_RR(p, 31, 599, fr_tmp, am_addr, mode64);
-//
-// // fcfid (conv i64 to f64), PPC64 p434
-// p =3D mkFormX(p, 63, fr_dst, 0, fr_tmp, 846, 0);
-// goto done;
-// }
-
case Pin_FpCMov: {
UInt fr_dst =3D fregNo(i->Pin.FpCMov.dst);
UInt fr_src =3D fregNo(i->Pin.FpCMov.src);
Modified: trunk/priv/host-ppc/hdefs.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/priv/host-ppc/hdefs.h 2006-01-25 21:29:48 UTC (rev 1550)
+++ trunk/priv/host-ppc/hdefs.h 2006-01-26 02:24:17 UTC (rev 1551)
@@ -327,7 +327,8 @@
Pun_NEG,
Pun_NOT,
Pun_CLZ32,
- Pun_CLZ64
+ Pun_CLZ64,
+ Pun_EXTSW
}
PPCUnaryOp;
=20
@@ -450,7 +451,7 @@
Pin_Call, /* call to address in register */
Pin_Goto, /* conditional/unconditional jmp to dst */
Pin_CMov, /* conditional move */
- Pin_Load, /* load a 8|16|32|64 bit value from mem */
+ Pin_Load, /* zero-extending load a 8|16|32|64 bit value from=
mem */
Pin_Store, /* store a 8|16|32|64 bit value to mem */
Pin_Set, /* convert condition code to value 0 or 1 */
Pin_MfCR, /* move from condition register to GPR */
@@ -543,7 +544,7 @@
HReg srcL;
PPCRH* srcR;
} Cmp;
- /* Not and Neg */
+ /* Not, Neg, Clz32/64, Extsw */
struct {
PPCUnaryOp op;
HReg dst;
@@ -589,10 +590,9 @@
HReg dst;
PPCRI* src;
} CMov;
- /* Sign/Zero extending loads. Dst size is host word size */
+ /* Zero extending loads. Dst size is host word size */
struct {
UChar sz; /* 1|2|4|8 */
- Bool syned;
HReg dst;
PPCAMode* src;
} Load;
@@ -774,7 +774,7 @@
extern PPCInstr* PPCInstr_Call ( PPCCondCode, Addr64, UInt );
extern PPCInstr* PPCInstr_Goto ( IRJumpKind, PPCCondCode cond, PPC=
RI* dst );
extern PPCInstr* PPCInstr_CMov ( PPCCondCode, HReg dst, PPCRI* src=
);
-extern PPCInstr* PPCInstr_Load ( UChar sz, Bool syned,
+extern PPCInstr* PPCInstr_Load ( UChar sz,
HReg dst, PPCAMode* src, Bool mod=
e64 );
extern PPCInstr* PPCInstr_Store ( UChar sz, PPCAMode* dst,
HReg src, Bool mode64 );
Modified: trunk/priv/host-ppc/isel.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/priv/host-ppc/isel.c 2006-01-25 21:29:48 UTC (rev 1550)
+++ trunk/priv/host-ppc/isel.c 2006-01-26 02:24:17 UTC (rev 1551)
@@ -1029,7 +1029,7 @@
if (e->Iex.Load.end !=3D Iend_BE)
goto irreducible;
addInstr(env, PPCInstr_Load( toUChar(sizeofIRType(ty)),=20
- False, r_dst, am_addr, mode64 ));
+ r_dst, am_addr, mode64 ));
return r_dst;
break;
}
@@ -1305,7 +1305,7 @@
HReg fsrc =3D iselDblExpr(env, e->Iex.Binop.arg2);
HReg ftmp =3D newVRegF(env);
HReg idst =3D newVRegI(env);
- vassert(!env->mode64); // wait for 64-bit test case
+
/* Set host rounding mode */
set_FPU_rounding_mode( env, e->Iex.Binop.arg1 );
=20
@@ -1313,8 +1313,12 @@
addInstr(env, PPCInstr_FpCftI(False/*F->I*/, True/*int32*/,=20
ftmp, fsrc));
addInstr(env, PPCInstr_FpSTFIW(r1, ftmp));
- addInstr(env, PPCInstr_Load(4, True/*signed*/,=20
- idst, zero_r1, mode64));
+ addInstr(env, PPCInstr_Load(4, idst, zero_r1, mode64));
+
+ /* in 64-bit mode we need to sign-widen idst. */
+ if (mode64)
+ addInstr(env, PPCInstr_Unary(Pun_EXTSW, idst, idst));
+
add_to_sp( env, 16 );
=20
/* Restore default FPU rounding. */
@@ -1323,19 +1327,27 @@
}
=20
if (e->Iex.Binop.op =3D=3D Iop_F64toI64) {
- HReg fr_src =3D iselDblExpr(env, e->Iex.Binop.arg2);
- HReg r_dst =3D newVRegI(env); =20
- /* Set host rounding mode */
- set_FPU_rounding_mode( env, e->Iex.Binop.arg1 );
+ if (mode64) {
+ HReg r1 =3D StackFramePtr(env->mode64);
+ PPCAMode* zero_r1 =3D PPCAMode_IR( 0, r1 );
+ HReg fsrc =3D iselDblExpr(env, e->Iex.Binop.arg2);
+ HReg idst =3D newVRegI(env); =20
+ HReg ftmp =3D newVRegF(env);
=20
- sub_from_sp( env, 16 );
-vassert(0);
-// addInstr(env, PPCInstr_FpF64toI64(r_dst, fr_src));
- add_to_sp( env, 16 );
+ /* Set host rounding mode */
+ set_FPU_rounding_mode( env, e->Iex.Binop.arg1 );
=20
- /* Restore default FPU rounding. */
- set_FPU_rounding_default( env );
- return r_dst;
+ sub_from_sp( env, 16 );
+ addInstr(env, PPCInstr_FpCftI(False/*F->I*/, False/*int64*/,
+ ftmp, fsrc));
+ addInstr(env, PPCInstr_FpLdSt(False/*store*/, 8, ftmp, zero_=
r1));
+ addInstr(env, PPCInstr_Load(8, idst, zero_r1, True/*mode64*/=
));
+ add_to_sp( env, 16 );
+
+ /* Restore default FPU rounding. */
+ set_FPU_rounding_default( env );
+ return idst;
+ }
}
=20
break;
@@ -1366,7 +1378,7 @@
if (matchIRExpr(&mi,p_LDbe16_then_16Uto32,e)) {
HReg r_dst =3D newVRegI(env);
PPCAMode* amode =3D iselWordExpr_AMode( env, mi.bindee[0] );
- addInstr(env, PPCInstr_Load(2,False,r_dst,amode, mode64));
+ addInstr(env, PPCInstr_Load(2,r_dst,amode, mode64));
return r_dst;
}
}
@@ -1566,7 +1578,7 @@
addInstr(env,
PPCInstr_AvLdSt( False/*store*/, 16, vec, am_off0 ));
addInstr(env,
- PPCInstr_Load( 4, False, dst, am_off12, mode64 ));
+ PPCInstr_Load( 4, dst, am_off12, mode64 ));
=20
add_to_sp( env, 32 ); // Reset SP
return dst;
@@ -1591,7 +1603,7 @@
PPCInstr_AvLdSt( False/*store*/, 16, vec, am_off0 )=
);
addInstr(env,
PPCInstr_Load(=20
- 8, False, dst,=20
+ 8, dst,=20
op_unop =3D=3D Iop_V128HIto64 ? am_off0 : am_off=
8,=20
mode64 ));
=20
@@ -1624,8 +1636,7 @@
addInstr(env, PPCInstr_FpLdSt( False/*store*/, 8,
fr_src, am_addr ));
// load as Ity_I64
- addInstr(env, PPCInstr_Load( 8, False,
- r_dst, am_addr, mode64 ));
+ addInstr(env, PPCInstr_Load( 8, r_dst, am_addr, mode64 ));
=20
add_to_sp( env, 16 ); // Reset SP
return r_dst;
@@ -1646,7 +1657,7 @@
PPCAMode* am_addr =3D PPCAMode_IR( e->Iex.Get.offset,
GuestStatePtr(mode64) );
addInstr(env, PPCInstr_Load( toUChar(sizeofIRType(ty)),=20
- False, r_dst, am_addr, mode64 ));
+ r_dst, am_addr, mode64 ));
return r_dst;
}
break;
@@ -1659,7 +1670,7 @@
e->Iex.GetI.ix, e->Iex.GetI.bias=
);
HReg r_dst =3D newVRegI(env);
addInstr(env, PPCInstr_Load( toUChar(8),
- False, r_dst, src_am, mode64 ));
+ r_dst, src_am, mode64 ));
return r_dst;
}
break;
@@ -2370,8 +2381,8 @@
PPCAMode* am_addr4 =3D advance4(env, am_addr);
HReg tLo =3D newVRegI(env);
HReg tHi =3D newVRegI(env);
- addInstr(env, PPCInstr_Load( 4, False, tHi, am_addr, False/*mode3=
2*/ ));
- addInstr(env, PPCInstr_Load( 4, False, tLo, am_addr4, False/*mode3=
2*/ ));
+ addInstr(env, PPCInstr_Load( 4, tHi, am_addr, False/*mode32*/ ));
+ addInstr(env, PPCInstr_Load( 4, tLo, am_addr4, False/*mode32*/ ));
*rHi =3D tHi;
*rLo =3D tLo;
return;
@@ -2521,9 +2532,9 @@
=20
// load hi,lo words (of hi/lo half of vec) as Ity_I32's
addInstr(env,
- PPCInstr_Load( 4, False, tHi, am_offHI, False/*mode32*=
/ ));
+ PPCInstr_Load( 4, tHi, am_offHI, False/*mode32*/ ));
addInstr(env,
- PPCInstr_Load( 4, False, tLo, am_offLO, False/*mode32*=
/ ));
+ PPCInstr_Load( 4, tLo, am_offLO, False/*mode32*/ ));
=20
add_to_sp( env, 32 ); // Reset SP
*rHi =3D tHi;
@@ -2581,9 +2592,9 @@
fr_src, am_addr0 ));
=20
// load hi,lo as Ity_I32's
- addInstr(env, PPCInstr_Load( 4, False, r_dstHi,
+ addInstr(env, PPCInstr_Load( 4, r_dstHi,
am_addr0, False/*mode32*/ ));
- addInstr(env, PPCInstr_Load( 4, False, r_dstLo,
+ addInstr(env, PPCInstr_Load( 4, r_dstLo,
am_addr1, False/*mode32*/ ));
*rHi =3D r_dstHi;
*rLo =3D r_dstLo;
@@ -2782,21 +2793,28 @@
}
=20
if (e->Iex.Binop.op =3D=3D Iop_I64toF64) {
- HReg fr_dst =3D newVRegF(env);
- HReg r_src =3D iselWordExpr_R(env, e->Iex.Binop.arg2);
- vassert(mode64);
+ if (mode64) {
+ HReg fdst =3D newVRegF(env);
+ HReg isrc =3D iselWordExpr_R(env, e->Iex.Binop.arg2);
+ HReg r1 =3D StackFramePtr(env->mode64);
+ PPCAMode* zero_r1 =3D PPCAMode_IR( 0, r1 );
=20
- /* Set host rounding mode */
- set_FPU_rounding_mode( env, e->Iex.Binop.arg1 );
+ /* Set host rounding mode */
+ set_FPU_rounding_mode( env, e->Iex.Binop.arg1 );
=20
- sub_from_sp( env, 16 );
-vassert(0);
-// addInstr(env, PPCInstr_FpI64toF64(fr_dst, r_src));
- add_to_sp( env, 16 );
+ sub_from_sp( env, 16 );
=20
- /* Restore default FPU rounding. */
- set_FPU_rounding_default( env );
- return fr_dst;
+ addInstr(env, PPCInstr_Store(8, zero_r1, isrc, True/*mode64*=
/));
+ addInstr(env, PPCInstr_FpLdSt(True/*load*/, 8, fdst, zero_r1=
));
+ addInstr(env, PPCInstr_FpCftI(True/*I->F*/, False/*int64*/,=20
+ fdst, fdst));
+
+ add_to_sp( env, 16 );
+
+ /* Restore default FPU rounding. */
+ set_FPU_rounding_default( env );
+ return fdst;
+ }
}
}
=20
|