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
(16) |
2
(23) |
3
(15) |
|
4
(19) |
5
(21) |
6
(27) |
7
(18) |
8
(17) |
9
(15) |
10
(11) |
|
11
(9) |
12
(18) |
13
(26) |
14
(28) |
15
(26) |
16
(20) |
17
(27) |
|
18
(16) |
19
(40) |
20
(2) |
21
(11) |
22
(27) |
23
(24) |
24
(16) |
|
25
(10) |
26
(12) |
27
(16) |
28
(7) |
29
(6) |
30
(15) |
31
(5) |
|
From: <sv...@va...> - 2005-12-23 23:46:32
|
Author: njn
Date: 2005-12-23 23:46:31 +0000 (Fri, 23 Dec 2005)
New Revision: 5426
Log:
Add comment.
Modified:
branches/COMPVBITS/memcheck/mc_main.c
Modified: branches/COMPVBITS/memcheck/mc_main.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
--- branches/COMPVBITS/memcheck/mc_main.c 2005-12-23 23:34:51 UTC (rev 54=
25)
+++ branches/COMPVBITS/memcheck/mc_main.c 2005-12-23 23:46:31 UTC (rev 54=
26)
@@ -128,6 +128,13 @@
writing shadow memory. Only a couple are strictly necessary (eg.
get_vabits8 and set_vabits8), most are just specialised for specific
common cases to improve performance.
+
+ Aside: the V+A bits are less precise than they could be -- we have no=
way
+ of marking memory as read-only. It would be great if we could add an
+ extra state VA_BITSn_READONLY. But then we'd have 5 different states=
,
+ which requires 2.3 bits to hold, and there's no way to do that elegan=
tly
+ -- we'd have to double up to 4 bits of metadata per byte, which doesn=
't
+ seem worth it.
*/
=20
/* --------------- Basic configuration --------------- */
|
|
From: <sv...@va...> - 2005-12-23 23:34:53
|
Author: sewardj
Date: 2005-12-23 23:34:51 +0000 (Fri, 23 Dec 2005)
New Revision: 5425
Log:
ppc64 ELF allows the 288 bytes below the stack pointer to be accessed.
Modified:
trunk/include/pub_tool_machine.h
Modified: trunk/include/pub_tool_machine.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/include/pub_tool_machine.h 2005-12-23 23:33:51 UTC (rev 5424)
+++ trunk/include/pub_tool_machine.h 2005-12-23 23:34:51 UTC (rev 5425)
@@ -36,7 +36,7 @@
# define VG_MAX_INSTR_SZB 16 // max length of native instructi=
on
# define VG_CLREQ_SZB 18 // length of a client request, ma=
y
// be larger than VG_MAX_INSTR_=
SZB
-# define VG_STACK_REDZONE_SZB 0 // number of addressable bytes be=
low SP
+# define VG_STACK_REDZONE_SZB 0 // number of addressable bytes be=
low %RSP
#elif defined(VGA_amd64)
# define VG_MIN_INSTR_SZB 1
# define VG_MAX_INSTR_SZB 16
@@ -51,7 +51,8 @@
# define VG_MIN_INSTR_SZB 4
# define VG_MAX_INSTR_SZB 4=20
# define VG_CLREQ_SZB 24
-# define VG_STACK_REDZONE_SZB 0
+# define VG_STACK_REDZONE_SZB 288 // number of addressable bytes be=
low R1
+ // from 64-bit PowerPC ELF ABI Su=
pplement 1.7
#else
# error Unknown arch
#endif
|
|
From: <sv...@va...> - 2005-12-23 23:33:53
|
Author: sewardj
Date: 2005-12-23 23:33:51 +0000 (Fri, 23 Dec 2005)
New Revision: 5424
Log:
Make ppc64-linux stack unwinding work.
Modified:
trunk/coregrind/m_stacktrace.c
Modified: trunk/coregrind/m_stacktrace.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_stacktrace.c 2005-12-23 23:08:04 UTC (rev 5423)
+++ trunk/coregrind/m_stacktrace.c 2005-12-23 23:33:51 UTC (rev 5424)
@@ -94,8 +94,9 @@
}=20
=20
/* Otherwise unwind the stack in a platform-specific way. Trying
- to merge the x86, amd64 and ppc32 logic into a single piece of
- code is just too confusing and difficult to performance-tune. */
+ to merge the x86, amd64, ppc32 and ppc64 logic into a single
+ piece of code is just too confusing and difficult to
+ performance-tune. */
=20
# if defined(VGP_x86_linux)
=20
@@ -251,13 +252,18 @@
ips[0] =3D ip;
i =3D 1;
=20
- if (fp_min <=3D fp && fp < fp_max-4+1) {
+ if (fp_min <=3D fp && fp < fp_max-VG_WORDSIZE+1) {
=20
/* initial FP is sane; keep going */
fp =3D (((UWord*)fp)[0]);
=20
while (True) {
=20
+ /* on ppc64-linux (ppc64-elf, really), the lr save slot is 2
+ words back from sp, whereas on ppc32-elf(?) it's only one
+ word back. */
+ const Int lr_offset =3D VG_WORDSIZE=3D=3D8 ? 2 : 1;
+
if (i >=3D n_ips)
break;
=20
@@ -269,7 +275,7 @@
if (i =3D=3D 1 && lr_is_first_RA)
ip =3D lr;
else
- ip =3D (((UWord*)fp)[1]);
+ ip =3D (((UWord*)fp)[lr_offset]);
=20
fp =3D (((UWord*)fp)[0]);
ips[i++] =3D ip;
|
|
From: <sv...@va...> - 2005-12-23 23:08:11
|
Author: njn Date: 2005-12-23 23:08:04 +0000 (Fri, 23 Dec 2005) New Revision: 5423 Log: Change default --reps value from 3 to 1. Modified: trunk/perf/vg_perf.in Modified: trunk/perf/vg_perf.in =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=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/perf/vg_perf.in 2005-12-23 12:56:11 UTC (rev 5422) +++ trunk/perf/vg_perf.in 2005-12-23 23:08:04 UTC (rev 5423) @@ -87,7 +87,7 @@ ); =20 # Command line options -my $n_reps =3D 3; # Run each program $n_reps times and choose the be= st one. +my $n_reps =3D 1; # Run each program $n_reps times and choose the be= st one. my @vgdirs; # Dirs of the various Valgrinds being measured. =20 my $num_tests_done =3D 0; |
|
From: <js...@ac...> - 2005-12-23 14:15:54
|
Nightly build on phoenix ( SuSE 10.0 ) started at 2005-12-23 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 == 208 tests, 6 stderr failures, 1 stdout failure ================= memcheck/tests/leak-tree (stderr) memcheck/tests/mempool (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) none/tests/mremap2 (stdout) none/tests/x86/faultstatus (stderr) none/tests/x86/int (stderr) |
|
From: <sv...@va...> - 2005-12-23 12:56:20
|
Author: sewardj
Date: 2005-12-23 12:56:11 +0000 (Fri, 23 Dec 2005)
New Revision: 5422
Log:
ppc64-linux fixes
Modified:
trunk/lackey/lk_main.c
Modified: trunk/lackey/lk_main.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/lackey/lk_main.c 2005-12-23 12:47:42 UTC (rev 5421)
+++ trunk/lackey/lk_main.c 2005-12-23 12:56:11 UTC (rev 5422)
@@ -36,8 +36,8 @@
#include "pub_tool_debuginfo.h"
#include "pub_tool_libcbase.h"
#include "pub_tool_options.h"
+#include "pub_tool_machine.h" // VG_(fnptr_to_fnentry)
=20
-
/* The name of the function of which the number of calls is to be
* counted, with default. Override with command line option
* --fnname. */
@@ -196,7 +196,9 @@
tl_assert(typeIx < N_TYPES);
=20
argv =3D mkIRExprVec_1( mkIRExpr_HWord( (HWord)&detailCounts[op][type=
Ix] ) );
- di =3D unsafeIRDirty_0_N( 1, "increment_detail", &increment_detail, a=
rgv);
+ di =3D unsafeIRDirty_0_N( 1, "increment_detail",
+ VG_(fnptr_to_fnentry)( &increment_detail )=
,=20
+ argv);
addStmtToIRBB( bb, IRStmt_Dirty(di) );
}
=20
@@ -264,7 +266,8 @@
}
=20
/* Count this basic block. */
- di =3D unsafeIRDirty_0_N( 0, "add_one_BB_entered", &add_one_BB_entere=
d,
+ di =3D unsafeIRDirty_0_N( 0, "add_one_BB_entered",=20
+ VG_(fnptr_to_fnentry)( &add_one_BB_entered=
),
mkIRExprVec_0() );
addStmtToIRBB( bb, IRStmt_Dirty(di) );
=20
@@ -273,7 +276,8 @@
if (!st || st->tag =3D=3D Ist_NoOp) continue;
=20
/* Count one VEX statement. */
- di =3D unsafeIRDirty_0_N( 0, "add_one_IRStmt", &add_one_IRStmt,=20
+ di =3D unsafeIRDirty_0_N( 0, "add_one_IRStmt",=20
+ VG_(fnptr_to_fnentry)( &add_one_IRStmt =
),=20
mkIRExprVec_0() );
addStmtToIRBB( bb, IRStmt_Dirty(di) );
=20
@@ -281,7 +285,7 @@
case Ist_IMark:
/* Count guest instruction. */
di =3D unsafeIRDirty_0_N( 0, "add_one_guest_instr",
- &add_one_guest_instr,=20
+ VG_(fnptr_to_fnentry)( &add_one_g=
uest_instr ),=20
mkIRExprVec_0() );
addStmtToIRBB( bb, IRStmt_Dirty(di) );
=20
@@ -302,9 +306,10 @@
if (VG_(get_fnname_if_entry)(st->Ist.IMark.addr,=20
fnname, sizeof(fnname))
&& 0 =3D=3D VG_(strcmp)(fnname, lk_clo_fnname)) {
- di =3D unsafeIRDirty_0_N( 0, "add_one_func_call",=20
- &add_one_func_call,=20
- mkIRExprVec_0() );
+ di =3D unsafeIRDirty_0_N(=20
+ 0, "add_one_func_call",=20
+ VG_(fnptr_to_fnentry)( &add_one_func_call ),=20
+ mkIRExprVec_0() );
addStmtToIRBB( bb, IRStmt_Dirty(di) );
}
addStmtToIRBB( bb, st );
@@ -312,7 +317,8 @@
=20
case Ist_Exit:
/* Count Jcc */
- di =3D unsafeIRDirty_0_N( 0, "add_one_Jcc", &add_one_Jcc,=20
+ di =3D unsafeIRDirty_0_N( 0, "add_one_Jcc",=20
+ VG_(fnptr_to_fnentry)( &add_one_J=
cc ),=20
mkIRExprVec_0() );
addStmtToIRBB( bb, IRStmt_Dirty(di) );
=20
@@ -320,7 +326,8 @@
=20
/* Count non-taken Jcc */
di =3D unsafeIRDirty_0_N( 0, "add_one_Jcc_untaken",=20
- &add_one_Jcc_untaken, mkIRExprVec=
_0() );
+ VG_(fnptr_to_fnentry)( &add_one_J=
cc_untaken ),
+ mkIRExprVec_0() );
addStmtToIRBB( bb, IRStmt_Dirty(di) );
break;
=20
@@ -374,7 +381,8 @@
=20
/* Count this basic block. */
di =3D unsafeIRDirty_0_N( 0, "add_one_BB_completed",=20
- &add_one_BB_completed, mkIRExprVec_0() );
+ VG_(fnptr_to_fnentry)( &add_one_BB_complet=
ed ),=20
+ mkIRExprVec_0() );
addStmtToIRBB( bb, IRStmt_Dirty(di) );
=20
return bb;
|
|
From: <sv...@va...> - 2005-12-23 12:47:44
|
Author: sewardj
Date: 2005-12-23 12:47:42 +0000 (Fri, 23 Dec 2005)
New Revision: 5421
Log:
ppc64-linux fixes.
Modified:
trunk/cachegrind/cg_main.c
Modified: trunk/cachegrind/cg_main.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/cachegrind/cg_main.c 2005-12-23 12:47:16 UTC (rev 5420)
+++ trunk/cachegrind/cg_main.c 2005-12-23 12:47:42 UTC (rev 5421)
@@ -42,6 +42,7 @@
#include "pub_tool_oset.h"
#include "pub_tool_tooliface.h"
#include "pub_tool_clientstate.h"
+#include "pub_tool_machine.h" // VG_(fnptr_to_fnentry)
=20
#include "cg_arch.h"
#include "cg_sim.c"
@@ -627,7 +628,9 @@
tl_assert(helperName);
tl_assert(helperAddr);
tl_assert(argv);
- di =3D unsafeIRDirty_0_N( regparms, helperName, helperAddr, argv);
+ di =3D unsafeIRDirty_0_N( regparms,=20
+ helperName, VG_(fnptr_to_fnentry)( helperA=
ddr ),=20
+ argv );
addStmtToIRBB( cgs->bbOut, IRStmt_Dirty(di) );
}
=20
|
|
From: <sv...@va...> - 2005-12-23 12:47:19
|
Author: sewardj
Date: 2005-12-23 12:47:16 +0000 (Fri, 23 Dec 2005)
New Revision: 5420
Log:
Handle ppc64-related primops.
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 2005-12-23 11:44:40 UTC (rev 5419)
+++ trunk/memcheck/mc_translate.c 2005-12-23 12:47:16 UTC (rev 5420)
@@ -1986,6 +1986,10 @@
case Iop_DivU32:
return mkLazy2(mce, Ity_I32, vatom1, vatom2);
=20
+ case Iop_DivS64:
+ case Iop_DivU64:
+ return mkLazy2(mce, Ity_I64, vatom1, vatom2);
+
case Iop_Add32:
if (mce->bogusLiterals)
return expensiveAddSub(mce,True,Ity_I32,=20
|
|
From: <sv...@va...> - 2005-12-23 12:46:19
|
Author: sewardj
Date: 2005-12-23 12:46:16 +0000 (Fri, 23 Dec 2005)
New Revision: 1508
Log:
Handle 64HLto128 in 64-bit mode.
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 2005-12-23 11:43:01 UTC (rev 1507)
+++ trunk/priv/host-ppc/isel.c 2005-12-23 12:46:16 UTC (rev 1508)
@@ -2401,6 +2401,12 @@
return;
}
=20
+ /* 64HLto128(e1,e2) */
+ case Iop_64HLto128:
+ *rHi =3D iselIntExpr_R(env, e->Iex.Binop.arg1);
+ *rLo =3D iselIntExpr_R(env, e->Iex.Binop.arg2);
+ return;
+
default:=20
break;
}
|
|
From: <sv...@va...> - 2005-12-23 11:44:48
|
Author: cerion Date: 2005-12-23 11:44:40 +0000 (Fri, 23 Dec 2005) New Revision: 5419 Log: Tracking VEX r1507 adjusted references to renamed VEX dirs guest-ppc/, host-ppc/ Modified: trunk/Makefile.am Modified: trunk/Makefile.am =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=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/Makefile.am 2005-12-23 02:29:58 UTC (rev 5418) +++ trunk/Makefile.am 2005-12-23 11:44:40 UTC (rev 5419) @@ -123,9 +123,9 @@ VEX/priv/ir/irdefs.c \ VEX/priv/ir/iropt.c \ VEX/priv/ir/iropt.h \ - VEX/priv/host-ppc32/isel.c \ - VEX/priv/host-ppc32/hdefs.c \ - VEX/priv/host-ppc32/hdefs.h \ + VEX/priv/host-ppc/isel.c \ + VEX/priv/host-ppc/hdefs.c \ + VEX/priv/host-ppc/hdefs.h \ VEX/priv/main/vex_svnversion.h \ VEX/priv/main/vex_globals.c \ VEX/priv/main/vex_globals.h \ @@ -151,9 +151,9 @@ VEX/priv/guest-amd64/ghelpers.c \ VEX/priv/guest-amd64/gdefs.h \ VEX/priv/guest-amd64/toIR.c \ - VEX/priv/guest-ppc32/ghelpers.c \ - VEX/priv/guest-ppc32/gdefs.h \ - VEX/priv/guest-ppc32/toIR.c \ + VEX/priv/guest-ppc/ghelpers.c \ + VEX/priv/guest-ppc/gdefs.h \ + VEX/priv/guest-ppc/toIR.c \ VEX/priv/host-generic/reg_alloc2.c \ VEX/priv/host-generic/h_generic_regs.c \ VEX/priv/host-generic/h_generic_regs.h \ |
|
From: <sv...@va...> - 2005-12-23 11:43:08
|
Author: cerion
Date: 2005-12-23 11:43:01 +0000 (Fri, 23 Dec 2005)
New Revision: 1507
Log:
renamed VEX dirs guest-ppc32/ -> guest-ppc/, host-ppc32/ -> host-ppc/
and adjusted all references to them
Added:
trunk/priv/guest-ppc/
trunk/priv/host-ppc/
Removed:
trunk/priv/guest-ppc32/
trunk/priv/host-ppc32/
Modified:
trunk/Makefile
trunk/Makefile-icc
trunk/priv/guest-ppc/gdefs.h
trunk/priv/guest-ppc/ghelpers.c
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/main/vex_main.c
Modified: trunk/Makefile
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=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/Makefile 2005-12-23 01:48:23 UTC (rev 1506)
+++ trunk/Makefile 2005-12-23 11:43:01 UTC (rev 1507)
@@ -8,12 +8,13 @@
pub/libvex_guest_amd64.h \
pub/libvex_guest_arm.h \
pub/libvex_guest_ppc32.h \
+ pub/libvex_guest_ppc64.h \
pub/libvex_guest_offsets.h
=20
PRIV_HEADERS =3D priv/host-x86/hdefs.h \
priv/host-amd64/hdefs.h \
priv/host-arm/hdefs.h \
- priv/host-ppc32/hdefs.h \
+ priv/host-ppc/hdefs.h \
priv/host-generic/h_generic_regs.h \
priv/host-generic/h_generic_simd64.h \
priv/main/vex_globals.h \
@@ -23,7 +24,7 @@
priv/guest-x86/gdefs.h \
priv/guest-amd64/gdefs.h \
priv/guest-arm/gdefs.h \
- priv/guest-ppc32/gdefs.h \
+ priv/guest-ppc/gdefs.h \
priv/ir/irmatch.h \
priv/ir/iropt.h
=20
@@ -36,11 +37,11 @@
priv/host-x86/hdefs.o \
priv/host-amd64/hdefs.o \
priv/host-arm/hdefs.o \
- priv/host-ppc32/hdefs.o \
+ priv/host-ppc/hdefs.o \
priv/host-x86/isel.o \
priv/host-amd64/isel.o \
priv/host-arm/isel.o \
- priv/host-ppc32/isel.o \
+ priv/host-ppc/isel.o \
priv/host-generic/h_generic_regs.o \
priv/host-generic/h_generic_simd64.o \
priv/host-generic/reg_alloc2.o \
@@ -49,11 +50,11 @@
priv/guest-x86/ghelpers.o \
priv/guest-amd64/ghelpers.o \
priv/guest-arm/ghelpers.o \
- priv/guest-ppc32/ghelpers.o \
+ priv/guest-ppc/ghelpers.o \
priv/guest-x86/toIR.o \
priv/guest-amd64/toIR.o \
priv/guest-arm/toIR.o \
- priv/guest-ppc32/toIR.o
+ priv/guest-ppc/toIR.o
=20
PUB_INCLUDES =3D -Ipub
=20
@@ -213,9 +214,9 @@
$(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-arm/hdefs.o \
-c priv/host-arm/hdefs.c
=20
-priv/host-ppc32/hdefs.o: $(ALL_HEADERS) priv/host-ppc32/hdefs.c
- $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-ppc32/hdefs.o \
- -c priv/host-ppc32/hdefs.c
+priv/host-ppc/hdefs.o: $(ALL_HEADERS) priv/host-ppc/hdefs.c
+ $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-ppc/hdefs.o \
+ -c priv/host-ppc/hdefs.c
=20
priv/host-x86/isel.o: $(ALL_HEADERS) priv/host-x86/isel.c
$(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-x86/isel.o \
@@ -229,9 +230,9 @@
$(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-arm/isel.o \
-c priv/host-arm/isel.c
=20
-priv/host-ppc32/isel.o: $(ALL_HEADERS) priv/host-ppc32/isel.c
- $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-ppc32/isel.o \
- -c priv/host-ppc32/isel.c
+priv/host-ppc/isel.o: $(ALL_HEADERS) priv/host-ppc/isel.c
+ $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-ppc/isel.o \
+ -c priv/host-ppc/isel.c
=20
priv/host-generic/h_generic_regs.o: $(ALL_HEADERS) priv/host-generic/h_g=
eneric_regs.c
$(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-generic/h_generic_regs.o =
\
@@ -277,10 +278,10 @@
$(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest-arm/toIR.o \
-c priv/guest-arm/toIR.c
=20
-priv/guest-ppc32/ghelpers.o: $(ALL_HEADERS) priv/guest-ppc32/ghelpers.c
- $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest-ppc32/ghelpers.o \
- -c priv/guest-ppc32/ghelpers.c
+priv/guest-ppc/ghelpers.o: $(ALL_HEADERS) priv/guest-ppc/ghelpers.c
+ $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest-ppc/ghelpers.o \
+ -c priv/guest-ppc/ghelpers.c
=20
-priv/guest-ppc32/toIR.o: $(ALL_HEADERS) priv/guest-ppc32/toIR.c
- $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest-ppc32/toIR.o \
- -c priv/guest-ppc32/toIR.c
+priv/guest-ppc/toIR.o: $(ALL_HEADERS) priv/guest-ppc/toIR.c
+ $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest-ppc/toIR.o \
+ -c priv/guest-ppc/toIR.c
Modified: trunk/Makefile-icc
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=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/Makefile-icc 2005-12-23 01:48:23 UTC (rev 1506)
+++ trunk/Makefile-icc 2005-12-23 11:43:01 UTC (rev 1507)
@@ -8,12 +8,13 @@
pub/libvex_guest_amd64.h \
pub/libvex_guest_arm.h \
pub/libvex_guest_ppc32.h \
+ pub/libvex_guest_ppc64.h \
pub/libvex_guest_offsets.h
=20
PRIV_HEADERS =3D priv/host-x86/hdefs.h \
priv/host-amd64/hdefs.h \
priv/host-arm/hdefs.h \
- priv/host-ppc32/hdefs.h \
+ priv/host-ppc/hdefs.h \
priv/host-generic/h_generic_regs.h \
priv/host-generic/h_generic_simd64.h \
priv/main/vex_globals.h \
@@ -23,7 +24,7 @@
priv/guest-x86/gdefs.h \
priv/guest-amd64/gdefs.h \
priv/guest-arm/gdefs.h \
- priv/guest-ppc32/gdefs.h \
+ priv/guest-ppc/gdefs.h \
priv/ir/irmatch.h \
priv/ir/iropt.h
=20
@@ -36,11 +37,11 @@
priv/host-x86/hdefs.o \
priv/host-amd64/hdefs.o \
priv/host-arm/hdefs.o \
- priv/host-ppc32/hdefs.o \
+ priv/host-ppc/hdefs.o \
priv/host-x86/isel.o \
priv/host-amd64/isel.o \
priv/host-arm/isel.o \
- priv/host-ppc32/isel.o \
+ priv/host-ppc/isel.o \
priv/host-generic/h_generic_regs.o \
priv/host-generic/h_generic_simd64.o \
priv/host-generic/reg_alloc2.o \
@@ -49,11 +50,11 @@
priv/guest-x86/ghelpers.o \
priv/guest-amd64/ghelpers.o \
priv/guest-arm/ghelpers.o \
- priv/guest-ppc32/ghelpers.o \
+ priv/guest-ppc/ghelpers.o \
priv/guest-x86/toIR.o \
priv/guest-amd64/toIR.o \
priv/guest-arm/toIR.o \
- priv/guest-ppc32/toIR.o
+ priv/guest-ppc/toIR.o
=20
PUB_INCLUDES =3D -Ipub
=20
@@ -165,9 +166,9 @@
$(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-arm/hdefs.o \
-c priv/host-arm/hdefs.c
=20
-priv/host-ppc32/hdefs.o: $(ALL_HEADERS) priv/host-ppc32/hdefs.c
- $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-ppc32/hdefs.o \
- -c priv/host-ppc32/hdefs.c
+priv/host-ppc/hdefs.o: $(ALL_HEADERS) priv/host-ppc/hdefs.c
+ $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-ppc/hdefs.o \
+ -c priv/host-ppc/hdefs.c
=20
priv/host-x86/isel.o: $(ALL_HEADERS) priv/host-x86/isel.c
$(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-x86/isel.o \
@@ -181,9 +182,9 @@
$(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-arm/isel.o \
-c priv/host-arm/isel.c
=20
-priv/host-ppc32/isel.o: $(ALL_HEADERS) priv/host-ppc32/isel.c
- $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-ppc32/isel.o \
- -c priv/host-ppc32/isel.c
+priv/host-ppc/isel.o: $(ALL_HEADERS) priv/host-ppc/isel.c
+ $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-ppc/isel.o \
+ -c priv/host-ppc/isel.c
=20
priv/host-generic/h_generic_regs.o: $(ALL_HEADERS) priv/host-generic/h_g=
eneric_regs.c
$(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/host-generic/h_generic_regs.o =
\
@@ -229,10 +230,10 @@
$(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest-arm/toIR.o \
-c priv/guest-arm/toIR.c
=20
-priv/guest-ppc32/ghelpers.o: $(ALL_HEADERS) priv/guest-ppc32/ghelpers.c
- $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest-ppc32/ghelpers.o \
- -c priv/guest-ppc32/ghelpers.c
+priv/guest-ppc/ghelpers.o: $(ALL_HEADERS) priv/guest-ppc/ghelpers.c
+ $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest-ppc/ghelpers.o \
+ -c priv/guest-ppc/ghelpers.c
=20
-priv/guest-ppc32/toIR.o: $(ALL_HEADERS) priv/guest-ppc32/toIR.c
- $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest-ppc32/toIR.o \
- -c priv/guest-ppc32/toIR.c
+priv/guest-ppc/toIR.o: $(ALL_HEADERS) priv/guest-ppc/toIR.c
+ $(CC) $(CCFLAGS) $(ALL_INCLUDES) -o priv/guest-ppc/toIR.o \
+ -c priv/guest-ppc/toIR.c
Copied: trunk/priv/guest-ppc (from rev 1506, trunk/priv/guest-ppc32)
Modified: trunk/priv/guest-ppc/gdefs.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/guest-ppc32/gdefs.h 2005-12-23 01:48:23 UTC (rev 1506)
+++ trunk/priv/guest-ppc/gdefs.h 2005-12-23 11:43:01 UTC (rev 1507)
@@ -1,7 +1,7 @@
=20
/*---------------------------------------------------------------*/
/*--- ---*/
-/*--- This file (guest-ppc32/gdefs.h) is ---*/
+/*--- This file (guest-ppc/gdefs.h) is ---*/
/*--- Copyright (C) OpenWorks LLP. All rights reserved. ---*/
/*--- ---*/
/*---------------------------------------------------------------*/
@@ -44,7 +44,7 @@
without prior written permission.
*/
=20
-/* Only to be used within the guest-ppc32 directory. */
+/* Only to be used within the guest-ppc directory. */
=20
=20
#ifndef __LIBVEX_GUEST_PPC_DEFS_H
@@ -156,5 +156,5 @@
#endif /* ndef __LIBVEX_GUEST_PPC_DEFS_H */
=20
/*---------------------------------------------------------------*/
-/*--- end guest-ppc32/gdefs.h ---*/
+/*--- end guest-ppc/gdefs.h ---*/
/*---------------------------------------------------------------*/
Modified: trunk/priv/guest-ppc/ghelpers.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-ppc32/ghelpers.c 2005-12-23 01:48:23 UTC (rev 1506)
+++ trunk/priv/guest-ppc/ghelpers.c 2005-12-23 11:43:01 UTC (rev 1507)
@@ -1,7 +1,7 @@
=20
/*---------------------------------------------------------------*/
/*--- ---*/
-/*--- This file (guest-ppc32/ghelpers.c) is ---*/
+/*--- This file (guest-ppc/ghelpers.c) is ---*/
/*--- Copyright (C) OpenWorks LLP. All rights reserved. ---*/
/*--- ---*/
/*---------------------------------------------------------------*/
@@ -53,7 +53,7 @@
=20
#include "main/vex_util.h"
#include "guest-generic/bb_to_IR.h"
-#include "guest-ppc32/gdefs.h"
+#include "guest-ppc/gdefs.h"
=20
=20
/* This file contains helper functions for ppc32 and ppc64 guest code.
@@ -64,7 +64,7 @@
Only change the signatures of these helper functions very
carefully. If you change the signature here, you'll have to change
the parameters passed to it in the IR calls constructed by
- guest-ppc32/toIR.c.
+ guest-ppc/toIR.c.
*/
=20
=20
@@ -74,7 +74,7 @@
=20
/* CALLED FROM GENERATED CODE */
/* DIRTY HELPER (non-referentially-transparent) */
-/* Horrible hack. On non-ppc32 platforms, return 1. */
+/* Horrible hack. On non-ppc platforms, return 1. */
/* Reads a complete, consistent 64-bit TB value. */
ULong ppcg_dirtyhelper_MFTB ( void )
{
@@ -748,5 +748,5 @@
};
=20
/*---------------------------------------------------------------*/
-/*--- end guest-ppc32/ghelpers.c ---*/
+/*--- end guest-ppc/ghelpers.c ---*/
/*---------------------------------------------------------------*/
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-ppc32/toIR.c 2005-12-23 01:48:23 UTC (rev 1506)
+++ trunk/priv/guest-ppc/toIR.c 2005-12-23 11:43:01 UTC (rev 1507)
@@ -1,7 +1,7 @@
=20
/*--------------------------------------------------------------------*/
/*--- ---*/
-/*--- This file (guest-ppc32/toIR.c) is ---*/
+/*--- This file (guest-ppc/toIR.c) is ---*/
/*--- Copyright (C) OpenWorks LLP. All rights reserved. ---*/
/*--- ---*/
/*--------------------------------------------------------------------*/
@@ -116,7 +116,7 @@
#include "main/vex_util.h"
#include "main/vex_globals.h"
#include "guest-generic/bb_to_IR.h"
-#include "guest-ppc32/gdefs.h"
+#include "guest-ppc/gdefs.h"
=20
=20
/*------------------------------------------------------------*/
@@ -9089,5 +9089,5 @@
//}
=20
/*--------------------------------------------------------------------*/
-/*--- end guest-ppc32/toIR.c ---*/
+/*--- end guest-ppc/toIR.c ---*/
/*--------------------------------------------------------------------*/
Copied: trunk/priv/host-ppc (from rev 1506, trunk/priv/host-ppc32)
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-ppc32/hdefs.c 2005-12-23 01:48:23 UTC (rev 1506)
+++ trunk/priv/host-ppc/hdefs.c 2005-12-23 11:43:01 UTC (rev 1507)
@@ -1,7 +1,7 @@
=20
/*---------------------------------------------------------------*/
/*--- ---*/
-/*--- This file (host-ppc32/hdefs.c) is ---*/
+/*--- This file (host-ppc/hdefs.c) is ---*/
/*--- Copyright (C) OpenWorks LLP. All rights reserved. ---*/
/*--- ---*/
/*---------------------------------------------------------------*/
@@ -50,7 +50,7 @@
=20
#include "main/vex_util.h"
#include "host-generic/h_generic_regs.h"
-#include "host-ppc32/hdefs.h"
+#include "host-ppc/hdefs.h"
=20
=20
/* --------- Registers. --------- */
@@ -3717,5 +3717,5 @@
}
=20
/*---------------------------------------------------------------*/
-/*--- end host-ppc32/hdefs.c ---*/
+/*--- end host-ppc/hdefs.c ---*/
/*---------------------------------------------------------------*/
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-ppc32/hdefs.h 2005-12-23 01:48:23 UTC (rev 1506)
+++ trunk/priv/host-ppc/hdefs.h 2005-12-23 11:43:01 UTC (rev 1507)
@@ -1,7 +1,7 @@
=20
/*---------------------------------------------------------------*/
/*--- ---*/
-/*--- This file (host-ppc32/hdefs.h) is ---*/
+/*--- This file (host-ppc/hdefs.h) is ---*/
/*--- Copyright (C) OpenWorks LLP. All rights reserved. ---*/
/*--- ---*/
/*---------------------------------------------------------------*/
@@ -835,5 +835,5 @@
#endif /* ndef __LIBVEX_HOST_PPC_HDEFS_H */
=20
/*---------------------------------------------------------------*/
-/*--- end host-ppc32/hdefs.h ---*/
+/*--- end host-ppc/hdefs.h ---*/
/*---------------------------------------------------------------*/
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-ppc32/isel.c 2005-12-23 01:48:23 UTC (rev 1506)
+++ trunk/priv/host-ppc/isel.c 2005-12-23 11:43:01 UTC (rev 1507)
@@ -1,7 +1,7 @@
=20
/*---------------------------------------------------------------*/
/*--- ---*/
-/*--- This file (host-ppc32/isel.c) is ---*/
+/*--- This file (host-ppc/isel.c) is ---*/
/*--- Copyright (C) OpenWorks LLP. All rights reserved. ---*/
/*--- ---*/
/*---------------------------------------------------------------*/
@@ -52,7 +52,7 @@
#include "main/vex_util.h"
#include "main/vex_globals.h"
#include "host-generic/h_generic_regs.h"
-#include "host-ppc32/hdefs.h"
+#include "host-ppc/hdefs.h"
=20
/* Is our guest binary 32 or 64bit? Set at each call to
iselBB_PPC below. */
@@ -133,7 +133,7 @@
/*--- misc helpers ---*/
/*---------------------------------------------------------*/
=20
-/* These are duplicated in guest-ppc32/toIR.c */
+/* These are duplicated in guest-ppc/toIR.c */
static IRExpr* unop ( IROp op, IRExpr* a )
{
return IRExpr_Unop(op, a);
@@ -4473,5 +4473,5 @@
=20
=20
/*---------------------------------------------------------------*/
-/*--- end host-ppc32/isel.c ---*/
+/*--- end host-ppc/isel.c ---*/
/*---------------------------------------------------------------*/
Modified: trunk/priv/main/vex_main.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/main/vex_main.c 2005-12-23 01:48:23 UTC (rev 1506)
+++ trunk/priv/main/vex_main.c 2005-12-23 11:43:01 UTC (rev 1507)
@@ -59,13 +59,13 @@
=20
#include "host-x86/hdefs.h"
#include "host-amd64/hdefs.h"
-#include "host-ppc32/hdefs.h"
+#include "host-ppc/hdefs.h"
=20
#include "guest-generic/bb_to_IR.h"
#include "guest-x86/gdefs.h"
#include "guest-amd64/gdefs.h"
#include "guest-arm/gdefs.h"
-#include "guest-ppc32/gdefs.h"
+#include "guest-ppc/gdefs.h"
=20
=20
/* This file contains the top level interface to the library. */
|
|
From: <js...@ac...> - 2005-12-23 03:47:08
|
Nightly build on g5 ( YDL 4.0, ppc970 ) started at 2005-12-23 04:40:00 CET 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 == 176 tests, 15 stderr failures, 1 stdout failure ================= memcheck/tests/badjump (stderr) memcheck/tests/badjump2 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/leakotron (stdout) memcheck/tests/mempool (stderr) memcheck/tests/partiallydefinedeq (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/supp1 (stderr) memcheck/tests/supp_unknown (stderr) memcheck/tests/toobig-allocs (stderr) memcheck/tests/xml1 (stderr) massif/tests/toobig-allocs (stderr) none/tests/faultstatus (stderr) none/tests/fdleak_cmsg (stderr) none/tests/mremap (stderr) |
|
From: Tom H. <to...@co...> - 2005-12-23 03:43:04
|
Nightly build on dunsmere ( athlon, Fedora Core 4 ) started at 2005-12-23 03:30:04 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 == 210 tests, 7 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) none/tests/mremap2 (stdout) none/tests/x86/faultstatus (stderr) none/tests/x86/int (stderr) |
|
From: Tom H. <th...@cy...> - 2005-12-23 03:30:03
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2005-12-23 03:15:06 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 == 209 tests, 17 stderr failures, 0 stdout failures ================= memcheck/tests/addressable (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) none/tests/x86/faultstatus (stderr) none/tests/x86/int (stderr) |
|
From: Tom H. <th...@cy...> - 2005-12-23 03:26:52
|
Nightly build on dellow ( x86_64, Fedora Core 4 ) started at 2005-12-23 03:10:14 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 == 227 tests, 6 stderr failures, 2 stdout failures ================= memcheck/tests/leakotron (stdout) memcheck/tests/mempool (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/x86/scalar (stderr) none/tests/amd64/faultstatus (stderr) none/tests/mremap2 (stdout) none/tests/x86/faultstatus (stderr) none/tests/x86/int (stderr) |
|
From: Tom H. <th...@cy...> - 2005-12-23 03:23:12
|
Nightly build on aston ( x86_64, Fedora Core 3 ) started at 2005-12-23 03:05:07 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 == 227 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) none/tests/amd64/faultstatus (stderr) none/tests/mremap2 (stdout) none/tests/x86/faultstatus (stderr) none/tests/x86/int (stderr) |
|
From: Tom H. <th...@cy...> - 2005-12-23 03:18:20
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2005-12-23 03:00:02 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 == 227 tests, 6 stderr failures, 0 stdout failures ================= memcheck/tests/mempool (stderr) memcheck/tests/pointer-trace (stderr) none/tests/amd64/faultstatus (stderr) none/tests/fdleak_fcntl (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 == 227 tests, 5 stderr failures, 0 stdout failures ================= memcheck/tests/mempool (stderr) none/tests/amd64/faultstatus (stderr) none/tests/fdleak_fcntl (stderr) none/tests/x86/faultstatus (stderr) none/tests/x86/int (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Fri Dec 23 03:05:49 2005 --- new.short Fri Dec 23 03:18:12 2005 *************** *** 8,11 **** ! == 227 tests, 5 stderr failures, 0 stdout failures ================= memcheck/tests/mempool (stderr) none/tests/amd64/faultstatus (stderr) --- 8,12 ---- ! == 227 tests, 6 stderr failures, 0 stdout failures ================= memcheck/tests/mempool (stderr) + memcheck/tests/pointer-trace (stderr) none/tests/amd64/faultstatus (stderr) |
|
From: <sv...@va...> - 2005-12-23 02:30:05
|
Author: sewardj
Date: 2005-12-23 02:29:58 +0000 (Fri, 23 Dec 2005)
New Revision: 5418
Log:
Deal with function pointer vs function entry crazyness on ppc64-linux.
Memcheck is done, but any tool which generates IR helper calls will
need to be similarly adulterated.
Modified:
trunk/coregrind/m_machine.c
trunk/coregrind/m_translate.c
trunk/include/pub_tool_machine.h
trunk/memcheck/mc_translate.c
Modified: trunk/coregrind/m_machine.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_machine.c 2005-12-23 01:16:16 UTC (rev 5417)
+++ trunk/coregrind/m_machine.c 2005-12-23 02:29:58 UTC (rev 5418)
@@ -499,6 +499,29 @@
}
=20
=20
+// Given a pointer to a function as obtained by "& functionname" in C,
+// produce a pointer to the actual entry point for the function. For
+// most platforms it's the identity function. Unfortunately, on
+// ppc64-linux it isn't (sigh).
+void* VG_(fnptr_to_fnentry)( void* f )
+{
+#if defined(VGP_x86_linux)
+ return f;
+#elif defined(VGP_amd64_linux)
+ return f;
+#elif defined(VGP_ppc32_linux)
+ return f;
+#elif defined(VGP_ppc64_linux)
+ /* f is a pointer to a 3-word function descriptor, of which
+ the first word is the entry address. */
+ /* Don't ask me. Really. I have no idea why. */
+ ULong* descr =3D (ULong*)f;
+ return (void*)(descr[0]);
+#else
+# error "Unknown platform"
+#endif
+}
+
/*--------------------------------------------------------------------*/
/*--- end ---*/
/*--------------------------------------------------------------------*/
Modified: trunk/coregrind/m_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/coregrind/m_translate.c 2005-12-23 01:16:16 UTC (rev 5417)
+++ trunk/coregrind/m_translate.c 2005-12-23 02:29:58 UTC (rev 5418)
@@ -241,7 +241,8 @@
dcall =3D unsafeIRDirty_0_N( =
\
1/*regparms*/, =
\
"track_" #kind "_mem_stack_" #syze, =
\
- VG_(tdict).track_##kind##_mem_stack_##syze, =
\
+ VG_(fnptr_to_fnentry)( =
\
+ VG_(tdict).track_##kind##_mem_stack_##syze ), =
\
mkIRExprVec_1(IRExpr_Tmp(tmpp)) =
\
); =
\
dcall->nFxState =3D 1; =
\
@@ -341,7 +342,8 @@
=20
dcall =3D unsafeIRDirty_0_N(=20
2/*regparms*/,=20
- "VG_(unknown_SP_update)", &VG_(unknown_SP_update),
+ "VG_(unknown_SP_update)",=20
+ VG_(fnptr_to_fnentry)( &VG_(unknown_SP_update) ),
mkIRExprVec_2( IRExpr_Tmp(old_SP), st->Ist.Put.data =
)=20
);
addStmtToIRBB( bb, IRStmt_Dirty(dcall) );
Modified: trunk/include/pub_tool_machine.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/include/pub_tool_machine.h 2005-12-23 01:16:16 UTC (rev 5417)
+++ trunk/include/pub_tool_machine.h 2005-12-23 02:29:58 UTC (rev 5418)
@@ -84,6 +84,12 @@
extern Bool VG_(thread_stack_next) ( ThreadId* tid, Addr* stack_mi=
n,
Addr* stack_ma=
x );
=20
+// Given a pointer to a function as obtained by "& functionname" in C,
+// produce a pointer to the actual entry point for the function. For
+// most platforms it's the identity function. Unfortunately, on
+// ppc64-linux it isn't (sigh).
+extern void* VG_(fnptr_to_fnentry)( void* );
+
#endif // __PUB_TOOL_MACHINE_H
=20
/*--------------------------------------------------------------------*/
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 2005-12-23 01:16:16 UTC (rev 5417)
+++ trunk/memcheck/mc_translate.c 2005-12-23 02:29:58 UTC (rev 5418)
@@ -30,10 +30,11 @@
*/
=20
#include "pub_tool_basics.h"
-#include "pub_tool_hashtable.h" // For mac_shared.h
+#include "pub_tool_hashtable.h" // For mac_shared.h
#include "pub_tool_libcassert.h"
#include "pub_tool_libcprint.h"
#include "pub_tool_tooliface.h"
+#include "pub_tool_machine.h" // VG_(fnptr_to_fnentry)
#include "mc_include.h"
=20
=20
@@ -845,39 +846,44 @@
=20
switch (sz) {
case 0:
- di =3D unsafeIRDirty_0_N( 0/*regparms*/,=20
- "MC_(helperc_value_check0_fail)",
- &MC_(helperc_value_check0_fail),
- mkIRExprVec_0()=20
- );
+ di =3D unsafeIRDirty_0_N(=20
+ 0/*regparms*/,=20
+ "MC_(helperc_value_check0_fail)",
+ VG_(fnptr_to_fnentry)( &MC_(helperc_value_check0_fail) =
),
+ mkIRExprVec_0()=20
+ );
break;
case 1:
- di =3D unsafeIRDirty_0_N( 0/*regparms*/,=20
- "MC_(helperc_value_check1_fail)",
- &MC_(helperc_value_check1_fail),
- mkIRExprVec_0()=20
- );
+ di =3D unsafeIRDirty_0_N(=20
+ 0/*regparms*/,=20
+ "MC_(helperc_value_check1_fail)",
+ VG_(fnptr_to_fnentry)( &MC_(helperc_value_check1_fail) =
),
+ mkIRExprVec_0()=20
+ );
break;
case 4:
- di =3D unsafeIRDirty_0_N( 0/*regparms*/,=20
- "MC_(helperc_value_check4_fail)",
- &MC_(helperc_value_check4_fail),
- mkIRExprVec_0()=20
- );
+ di =3D unsafeIRDirty_0_N(=20
+ 0/*regparms*/,=20
+ "MC_(helperc_value_check4_fail)",
+ VG_(fnptr_to_fnentry)( &MC_(helperc_value_check4_fail) =
),
+ mkIRExprVec_0()=20
+ );
break;
case 8:
- di =3D unsafeIRDirty_0_N( 0/*regparms*/,=20
- "MC_(helperc_value_check8_fail)",
- &MC_(helperc_value_check8_fail),
- mkIRExprVec_0()=20
- );
+ di =3D unsafeIRDirty_0_N(=20
+ 0/*regparms*/,=20
+ "MC_(helperc_value_check8_fail)",
+ VG_(fnptr_to_fnentry)( &MC_(helperc_value_check8_fail) =
),
+ mkIRExprVec_0()=20
+ );
break;
default:
- di =3D unsafeIRDirty_0_N( 1/*regparms*/,=20
- "MC_(helperc_complain_undef)",
- &MC_(helperc_complain_undef),
- mkIRExprVec_1( mkIRExpr_HWord( sz ))
- );
+ di =3D unsafeIRDirty_0_N(=20
+ 1/*regparms*/,=20
+ "MC_(helperc_complain_undef)",
+ VG_(fnptr_to_fnentry)( &MC_(helperc_complain_undef) ),
+ mkIRExprVec_1( mkIRExpr_HWord( sz ))
+ );
break;
}
di->guard =3D cond;
@@ -2331,7 +2337,8 @@
read. */
datavbits =3D newIRTemp(mce->bb->tyenv, ty);
di =3D unsafeIRDirty_1_N( datavbits,=20
- 1/*regparms*/, hname, helper,=20
+ 1/*regparms*/,=20
+ hname, VG_(fnptr_to_fnentry)( helper ),=20
mkIRExprVec_1( addrAct ));
setHelperAnns( mce, di );
stmt( mce->bb, IRStmt_Dirty(di) );
@@ -2594,16 +2601,18 @@
addrLo64 =3D assignNew(mce, tyAddr, binop(mkAdd, addr, eBiasLo64)=
);
vdataLo64 =3D assignNew(mce, Ity_I64, unop(Iop_V128to64, vdata));
diLo64 =3D unsafeIRDirty_0_N(=20
- 1/*regparms*/, hname, helper,=20
- mkIRExprVec_2( addrLo64, vdataLo64 ));
-
+ 1/*regparms*/,=20
+ hname, VG_(fnptr_to_fnentry)( helper ),=20
+ mkIRExprVec_2( addrLo64, vdataLo64 )
+ );
eBiasHi64 =3D tyAddr=3D=3DIty_I32 ? mkU32(bias+offHi64) : mkU64(bi=
as+offHi64);
addrHi64 =3D assignNew(mce, tyAddr, binop(mkAdd, addr, eBiasHi64)=
);
vdataHi64 =3D assignNew(mce, Ity_I64, unop(Iop_V128HIto64, vdata))=
;
diHi64 =3D unsafeIRDirty_0_N(=20
- 1/*regparms*/, hname, helper,=20
- mkIRExprVec_2( addrHi64, vdataHi64 ));
-
+ 1/*regparms*/,=20
+ hname, VG_(fnptr_to_fnentry)( helper ),=20
+ mkIRExprVec_2( addrHi64, vdataHi64 )
+ );
setHelperAnns( mce, diLo64 );
setHelperAnns( mce, diHi64 );
stmt( mce->bb, IRStmt_Dirty(diLo64) );
@@ -2625,13 +2634,17 @@
the back ends aren't clever enough to handle 64-bit
regparm args. Therefore be different. */
di =3D unsafeIRDirty_0_N(=20
- 1/*regparms*/, hname, helper,=20
- mkIRExprVec_2( addrAct, vdata ));
+ 1/*regparms*/,=20
+ hname, VG_(fnptr_to_fnentry)( helper ),=20
+ mkIRExprVec_2( addrAct, vdata )
+ );
} else {
di =3D unsafeIRDirty_0_N(=20
- 2/*regparms*/, hname, helper,=20
+ 2/*regparms*/,=20
+ hname, VG_(fnptr_to_fnentry)( helper ),=20
mkIRExprVec_2( addrAct,
- zwidenToHostWord( mce, vdata )));
+ zwidenToHostWord( mce, vdata ))
+ );
}
setHelperAnns( mce, di );
stmt( mce->bb, IRStmt_Dirty(di) );
@@ -2849,7 +2862,7 @@
di =3D unsafeIRDirty_0_N(
0/*regparms*/,
"MC_(helperc_MAKE_STACK_UNINIT)",
- &MC_(helperc_MAKE_STACK_UNINIT),
+ VG_(fnptr_to_fnentry)( &MC_(helperc_MAKE_STACK_UNINIT) ),
mkIRExprVec_2( base, mkIRExpr_HWord( (UInt)len) )
);
stmt( mce->bb, IRStmt_Dirty(di) );
|
|
From: <sv...@va...> - 2005-12-23 01:48:26
|
Author: sewardj Date: 2005-12-23 01:48:23 +0000 (Fri, 23 Dec 2005) New Revision: 1506 Log: Update comment. Modified: trunk/priv/host-ppc32/isel.c Modified: trunk/priv/host-ppc32/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-ppc32/isel.c 2005-12-23 01:06:35 UTC (rev 1505) +++ trunk/priv/host-ppc32/isel.c 2005-12-23 01:48:23 UTC (rev 1506) @@ -74,7 +74,8 @@ GPR11 if mode64: not used - calls by ptr / env ptr for some langs GPR12 if mode64: not used - exceptions / global linkage code GPR13 not used - Thread-specific pointer - GPR14:29 Allocateable + GPR14:28 Allocateable + GPR29 Unused by us (reserved for the dispatcher) GPR30 AltiVec temp spill register GPR31 GuestStatePointer =20 |
|
From: <sv...@va...> - 2005-12-23 01:16:22
|
Author: cerion
Date: 2005-12-23 01:16:16 +0000 (Fri, 23 Dec 2005)
New Revision: 5417
Log:
Tidied up jm-insns.c test a little.
Modified:
trunk/none/tests/ppc32/jm-insns.c
trunk/none/tests/ppc32/jm-int.stdout.exp
Modified: trunk/none/tests/ppc32/jm-insns.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/none/tests/ppc32/jm-insns.c 2005-12-23 00:57:03 UTC (rev 5416)
+++ trunk/none/tests/ppc32/jm-insns.c 2005-12-23 01:16:16 UTC (rev 5417)
@@ -186,6 +186,18 @@
#include <unistd.h>
#include <malloc.h>
=20
+
+#define ASSEMBLY_FUNC(__fname, __insn) \
+asm(".section \".text\"\n" \
+ "\t.align 2\n" \
+ "\t.type "__fname",@function\n" \
+ __fname":\n" \
+ "\t"__insn"\n" \
+ "\tblr\n" \
+ "\t.previous\n" \
+ )
+
+
/* -------------- BEGIN #include "test-ppc.h" -------------- */
/*
* test-ppc.h:
@@ -281,6 +293,7 @@
#define FDPRINTF(fmt, args...) do { } while (0)
#endif
=20
+
/* Produce the 64-bit pattern corresponding to the supplied double. */
static uint64_t double_to_bits ( double d )
{
@@ -304,8 +317,26 @@
}
#endif
=20
+
+#if defined (HAS_ALTIVEC)
+static void AB_DPRINTF_VEC32x4 ( vector unsigned int v )
+{
+#if defined (DEBUG_ARGS_BUILD)
+ int i;
+ unsigned int* p_int =3D (unsigned int*)&v;
+ AB_DPRINTF("val");
+ for (i=3D0; i<4; i++) {
+ AB_DPRINTF(" %08x", p_int[i]);
+ }
+ AB_DPRINTF("\n");
+#endif
+}
+#endif
+
+
#define unused __attribute__ (( unused ))
=20
+
/* -------------- BEGIN #include "ops-ppc.c" -------------- */
=20
/* #include "test-ppc.h" */
@@ -706,83 +737,48 @@
{ NULL, NULL, },
};
=20
-static void test_cmp (void)
+static void test_cmpw (void)
{
- __asm__ __volatile__ ("cmp 2, 14, 15");
+ __asm__ __volatile__ ("cmpw 2, 14, 15");
}
=20
-static void test_cmpl (void)
+static void test_cmplw (void)
{
- __asm__ __volatile__ ("cmpl 2, 14, 15");
+ __asm__ __volatile__ ("cmplw 2, 14, 15");
}
=20
static test_t tests_icr_ops_two[] =3D {
- { &test_cmp , " cmp", },
- { &test_cmpl , " cmpl", },
+ { &test_cmpw , " cmpw", },
+ { &test_cmplw , " cmplw", },
{ NULL, NULL, },
};
=20
-extern void test_cmpi (void);
-asm(".text\n"
- "test_cmpi:\n"
- "\tcmpi 2, 14, 15\n"
- "\tblr\n"
- ".previous\n"
-);
+extern void test_cmpwi (void);
+ASSEMBLY_FUNC("test_cmpwi", "cmpwi 2, 14, 0");
=20
-extern void test_cmpli (void);
-asm(".text\n"
- "test_cmpli:\n"
- "\tcmpli 2, 14, 15\n"
- "\tblr\n"
- ".previous\n"
-);
+extern void test_cmplwi (void);
+ASSEMBLY_FUNC("test_cmplwi", "cmplwi 2, 14, 0");
=20
static test_t tests_icr_ops_two_i16[] =3D {
- { &test_cmpi , " cmpi", },
- { &test_cmpli , " cmpli", },
+ { &test_cmpwi , " cmpwi", },
+ { &test_cmplwi , " cmplwi", },
{ NULL, NULL, },
};
=20
extern void test_addi (void);
-asm(".text\n"
- "test_addi:\n"
- "\taddi 17, 14, 0\n"
- "\tblr\n"
- ".previous\n"
-);
+ASSEMBLY_FUNC("test_addi", "addi 17, 14, 0");
=20
extern void test_addic (void);
-asm(".text\n"
- "test_addic:\n"
- "\taddic 17, 14, 0\n"
- "\tblr\n"
- ".previous\n"
-);
+ASSEMBLY_FUNC("test_addic", "addic 17, 14, 0");
=20
extern void test_addis (void);
-asm(".text\n"
- "test_addis:\n"
- "\taddis 17, 14, 0\n"
- "\tblr\n"
- ".previous\n"
-);
+ASSEMBLY_FUNC("test_addis", "addis 17, 14, 0");
=20
extern void test_mulli (void);
-asm(".text\n"
- "test_mulli:\n"
- "\tmulli 17, 14, 0\n"
- "\tblr\n"
- ".previous\n"
-);
+ASSEMBLY_FUNC("test_mulli", "mulli 17, 14, 0");
=20
extern void test_subfic (void);
-asm(".text\n"
- "test_subfic:\n"
- "\tsubfic 17, 14, 0\n"
- "\tblr\n"
- ".previous\n"
-);
+ASSEMBLY_FUNC("test_subfic", "subfic 17, 14, 0");
=20
static test_t tests_ia_ops_two_i16[] =3D {
{ &test_addi , " addi", },
@@ -794,12 +790,7 @@
};
=20
extern void test_addic_ (void);
-asm(".text\n"
- "test_addic_:\n"
- "\taddic. 17, 14, 0\n"
- "\tblr\n"
- ".previous\n"
-);
+ASSEMBLY_FUNC("test_addic_", "addic. 17, 14, 0");
=20
static test_t tests_iar_ops_two_i16[] =3D {
{ &test_addic_ , " addic.", },
@@ -807,36 +798,16 @@
};
=20
extern void test_ori (void);
-asm(".text\n"
- "test_ori:\n"
- "\tori 17, 14, 0\n"
- "\tblr\n"
- ".previous\n"
-);
+ASSEMBLY_FUNC("test_ori", "ori 17, 14, 0");
=20
extern void test_oris (void);
-asm(".text\n"
- "test_oris:\n"
- "\toris 17, 14, 0\n"
- "\tblr\n"
- ".previous\n"
-);
+ASSEMBLY_FUNC("test_oris", "oris 17, 14, 0");
=20
extern void test_xori (void);
-asm(".text\n"
- "test_xori:\n"
- "\txori 17, 14, 0\n"
- "\tblr\n"
- ".previous\n"
-);
+ASSEMBLY_FUNC("test_xori", "xori 17, 14, 0");
=20
extern void test_xoris (void);
-asm(".text\n"
- "test_xoris:\n"
- "\txoris 17, 14, 0\n"
- "\tblr\n"
- ".previous\n"
-);
+ASSEMBLY_FUNC("test_xoris", "xoris 17, 14, 0");
=20
static test_t tests_il_ops_two_i16[] =3D {
{ &test_ori , " ori", },
@@ -847,20 +818,10 @@
};
=20
extern void test_andi_ (void);
-asm(".text\n"
- "test_andi_:\n"
- "\tandi. 17, 14, 0\n"
- "\tblr\n"
- ".previous\n"
-);
+ASSEMBLY_FUNC("test_andi_", "andi. 17, 14, 0");
=20
extern void test_andis_ (void);
-asm(".text\n"
- "test_andis_:\n"
- "\tandis. 17, 14, 0\n"
- "\tblr\n"
- ".previous\n"
-);
+ASSEMBLY_FUNC("test_andis_", "andis. 17, 14, 0");
=20
static test_t tests_ilr_ops_two_i16[] =3D {
{ &test_andi_ , " andi.", },
@@ -1093,36 +1054,16 @@
};
=20
extern void test_rlwimi (void);
-asm(".text\n"
- "test_rlwimi:\n"
- "\trlwimi 17, 14, 0, 0, 0\n"
- "\tblr\n"
- ".previous\n"
-);
+ASSEMBLY_FUNC("test_rlwimi", "rlwimi 17, 14, 0, 0, 0");
=20
extern void test_rlwinm (void);
-asm(".text\n"
- "test_rlwinm:\n"
- "\trlwinm 17, 14, 0, 0, 0\n"
- "\tblr\n"
- ".previous\n"
-);
+ASSEMBLY_FUNC("test_rlwinm", "rlwinm 17, 14, 0, 0, 0");
=20
extern void test_rlwnm (void);
-asm(".text\n"
- "test_rlwnm:\n"
- "\trlwnm 17, 14, 15, 0, 0\n"
- "\tblr\n"
- ".previous\n"
-);
+ASSEMBLY_FUNC("test_rlwnm", "rlwnm 17, 14, 15, 0, 0");
=20
extern void test_srawi (void);
-asm(".text\n"
- "test_srawi:\n"
- "\tsrawi 17, 14, 0\n"
- "\tblr\n"
- ".previous\n"
-);
+ASSEMBLY_FUNC("test_srawi", "srawi 17, 14, 0");
=20
static void test_mfcr (void)
{
@@ -1151,60 +1092,25 @@
};
=20
extern void test_rlwimi_ (void);
-asm(".text\n"
- "test_rlwimi_:\n"
- "\trlwimi. 17, 14, 0, 0, 0\n"
- "\tblr\n"
- ".previous\n"
-);
+ASSEMBLY_FUNC("test_rlwimi_", "rlwimi. 17, 14, 0, 0, 0");
=20
extern void test_rlwinm_ (void);
-asm(".text\n"
- "test_rlwinm_:\n"
- "\trlwinm. 17, 14, 0, 0, 0\n"
- "\tblr\n"
- ".previous\n"
-);
+ASSEMBLY_FUNC("test_rlwinm_", "rlwinm. 17, 14, 0, 0, 0");
=20
extern void test_rlwnm_ (void);
-asm(".text\n"
- "test_rlwnm_:\n"
- "\trlwnm. 17, 14, 15, 0, 0\n"
- "\tblr\n"
- ".previous\n"
-);
+ASSEMBLY_FUNC("test_rlwnm_", "rlwnm. 17, 14, 15, 0, 0");
=20
extern void test_srawi_ (void);
-asm(".text\n"
- "test_srawi_:\n"
- "\tsrawi. 17, 14, 0\n"
- "\tblr\n"
- ".previous\n"
-);
+ASSEMBLY_FUNC("test_srawi_", "srawi. 17, 14, 0");
=20
extern void test_mcrf (void);
-asm(".text\n"
- "test_mcrf:\n"
- "\tmcrf 0, 0\n"
- "\tblr\n"
- ".previous\n"
-);
+ASSEMBLY_FUNC("test_mcrf", "mcrf 0, 0");
=20
extern void test_mcrxr (void);
-asm(".text\n"
- "test_mcrxr:\n"
- "\tmcrxr 0\n"
- "\tblr\n"
- ".previous\n"
-);
+ASSEMBLY_FUNC("test_mcrxr", "mcrxr 0");
=20
extern void test_mtcrf (void);
-asm(".text\n"
- "test_mtcrf:\n"
- "\tmtcrf 0, 14\n"
- "\tblr\n"
- ".previous\n"
-);
+ASSEMBLY_FUNC("test_mtcrf", "mtcrf 0, 14");
=20
static test_t tests_ilr_ops_spe[] =3D {
{ &test_rlwimi_ , " rlwimi.", },
@@ -1218,68 +1124,28 @@
};
=20
extern void test_lbz (void);
-asm(".text\n"
- "test_lbz:\n"
- "\tlbz 17,0(14)\n"
- "\tblr\n"
- ".previous\n"
-);
+ASSEMBLY_FUNC("test_lbz", "lbz 17,0(14)");
=20
extern void test_lbzu (void);
-asm(".text\n"
- "test_lbzu:\n"
- "\tlbzu 17,0(14)\n"
- "\tblr\n"
- ".previous\n"
-);
+ASSEMBLY_FUNC("test_lbzu", "lbzu 17,0(14)");
=20
extern void test_lha (void);
-asm(".text\n"
- "test_lha:\n"
- "\tlha 17,0(14)\n"
- "\tblr\n"
- ".previous\n"
-);
+ASSEMBLY_FUNC("test_lha", "lha 17,0(14)");
=20
extern void test_lhau (void);
-asm(".text\n"
- "test_lhau:\n"
- "\tlhau 17,0(14)\n"
- "\tblr\n"
- ".previous\n"
-);
+ASSEMBLY_FUNC("test_lhau", "lhau 17,0(14)");
=20
extern void test_lhz (void);
-asm(".text\n"
- "test_lhz:\n"
- "\tlhz 17,0(14)\n"
- "\tblr\n"
- ".previous\n"
-);
+ASSEMBLY_FUNC("test_lhz", "lhz 17,0(14)");
=20
extern void test_lhzu (void);
-asm(".text\n"
- "test_lhzu:\n"
- "\tlhzu 17,0(14)\n"
- "\tblr\n"
- ".previous\n"
-);
+ASSEMBLY_FUNC("test_lhzu", "lhzu 17,0(14)");
=20
extern void test_lwz (void);
-asm(".text\n"
- "test_lwz:\n"
- "\tlwz 17,0(14)\n"
- "\tblr\n"
- ".previous\n"
-);
+ASSEMBLY_FUNC("test_lwz", "lwz 17,0(14)");
=20
extern void test_lwzu (void);
-asm(".text\n"
- "test_lwzu:\n"
- "\tlwzu 17,0(14)\n"
- "\tblr\n"
- ".previous\n"
-);
+ASSEMBLY_FUNC("test_lwzu", "lwzu 17,0(14)");
=20
static test_t tests_ild_ops_two_i16[] =3D {
{ &test_lbz , " lbz", },
@@ -1346,52 +1212,22 @@
};
=20
extern void test_stb (void);
-asm(".text\n"
- "test_stb:\n"
- "\tstb 14,0(15)\n"
- "\tblr\n"
- ".previous\n"
-);
+ASSEMBLY_FUNC("test_stb", "stb 14,0(15)");
=20
extern void test_stbu (void);
-asm(".text\n"
- "test_stbu:\n"
- "\tstbu 14,0(15)\n"
- "\tblr\n"
- ".previous\n"
-);
+ASSEMBLY_FUNC("test_stbu", "stbu 14,0(15)");
=20
extern void test_sth (void);
-asm(".text\n"
- "test_sth:\n"
- "\tsth 14,0(15)\n"
- "\tblr\n"
- ".previous\n"
-);
+ASSEMBLY_FUNC("test_sth", "sth 14,0(15)");
=20
extern void test_sthu (void);
-asm(".text\n"
- "test_sthu:\n"
- "\tsthu 14,0(15)\n"
- "\tblr\n"
- ".previous\n"
-);
+ASSEMBLY_FUNC("test_sthu", "sthu 14,0(15)");
=20
extern void test_stw (void);
-asm(".text\n"
- "test_stw:\n"
- "\tstw 14,0(15)\n"
- "\tblr\n"
- ".previous\n"
-);
+ASSEMBLY_FUNC("test_stw", "stw 14,0(15)");
=20
extern void test_stwu (void);
-asm(".text\n"
- "test_stwu:\n"
- "\tstwu 14,0(15)\n"
- "\tblr\n"
- ".previous\n"
-);
+ASSEMBLY_FUNC("test_stwu", "stwu 14,0(15)");
=20
static test_t tests_ist_ops_three_i16[] =3D {
{ &test_stb , " stb", },
@@ -1836,36 +1672,16 @@
=20
#if !defined (NO_FLOAT)
extern void test_lfs (void);
-asm(".text\n"
- "test_lfs:\n"
- "\tlfs 17,0(14)\n"
- "\tblr\n"
- ".previous\n"
-);
+ASSEMBLY_FUNC("test_lfs", "lfs 17,0(14)");
=20
extern void test_lfsu (void);
-asm(".text\n"
- "test_lfsu:\n"
- "\tlfsu 17,0(14)\n"
- "\tblr\n"
- ".previous\n"
-);
+ASSEMBLY_FUNC("test_lfsu", "lfsu 17,0(14)");
=20
extern void test_lfd (void);
-asm(".text\n"
- "test_lfd:\n"
- "\tlfd 17,0(14)\n"
- "\tblr\n"
- ".previous\n"
-);
+ASSEMBLY_FUNC("test_lfd", "lfd 17,0(14)");
=20
extern void test_lfdu (void);
-asm(".text\n"
- "test_lfdu:\n"
- "\tlfdu 17,0(14)\n"
- "\tblr\n"
- ".previous\n"
-);
+ASSEMBLY_FUNC("test_lfdu", "lfdu 17,0(14)");
=20
static test_t tests_fld_ops_two_i16[] =3D {
{ &test_lfs , " lfs", },
@@ -1908,36 +1724,16 @@
=20
#if !defined (NO_FLOAT)
extern void test_stfs (void);
-asm(".text\n"
- "test_stfs:\n"
- "\tstfs 14,0(15)\n"
- "\tblr\n"
- ".previous\n"
-);
+ASSEMBLY_FUNC("test_stfs", "stfs 14,0(15)");
=20
extern void test_stfsu (void);
-asm(".text\n"
- "test_stfsu:\n"
- "\tstfsu 14,0(15)\n"
- "\tblr\n"
- ".previous\n"
-);
+ASSEMBLY_FUNC("test_stfsu", "stfsu 14,0(15)");
=20
extern void test_stfd (void);
-asm(".text\n"
- "test_stfd:\n"
- "\tstfd 14,0(15)\n"
- "\tblr\n"
- ".previous\n"
-);
+ASSEMBLY_FUNC("test_stfd", "stfd 14,0(15)");
=20
extern void test_stfdu (void);
-asm(".text\n"
- "test_stfdu:\n"
- "\tstfdu 14,0(15)\n"
- "\tblr\n"
- ".previous\n"
-);
+ASSEMBLY_FUNC("test_stfdu", "stfdu 14,0(15)");
=20
static test_t tests_fst_ops_three_i16[] =3D {
{ &test_stfs , " stfs", },
@@ -2753,60 +2549,25 @@
}
=20
extern void test_vspltb (void);
-asm(".text\n"
- "test_vspltb:\n"
- "\tvspltb 17, 14, 0\n"
- "\tblr\n"
- ".previous\n"
-);
+ASSEMBLY_FUNC("test_vspltb", "vspltb 17, 14, 0");
=20
extern void test_vsplth (void);
-asm(".text\n"
- "test_vsplth:\n"
- "\tvsplth 17, 14, 0\n"
- "\tblr\n"
- ".previous\n"
-);
+ASSEMBLY_FUNC("test_vsplth", "vsplth 17, 14, 0");
=20
extern void test_vspltw (void);
-asm(".text\n"
- "test_vspltw:\n"
- "\tvspltw 17, 14, 0\n"
- "\tblr\n"
- ".previous\n"
-);
+ASSEMBLY_FUNC("test_vspltw", "vspltw 17, 14, 0");
=20
extern void test_vspltisb (void);
-asm(".text\n"
- "test_vspltisb:\n"
- "\tvspltisb 17, 0\n"
- "\tblr\n"
- ".previous\n"
-);
+ASSEMBLY_FUNC("test_vspltisb", "vspltisb 17, 0");
=20
extern void test_vspltish (void);
-asm(".text\n"
- "test_vspltish:\n"
- "\tvspltish 17, 0\n"
- "\tblr\n"
- ".previous\n"
-);
+ASSEMBLY_FUNC("test_vspltish", "vspltish 17, 0");
=20
extern void test_vspltisw (void);
-asm(".text\n"
- "test_vspltisw:\n"
- "\tvspltisw 17, 0\n"
- "\tblr\n"
- ".previous\n"
-);
+ASSEMBLY_FUNC("test_vspltisw", "vspltisw 17, 0");
=20
extern void test_vsldoi (void);
-asm(".text\n"
- "test_vsldoi:\n"
- "\tvsldoi 17, 14, 15, 0\n"
- "\tblr\n"
- ".previous\n"
-);
+ASSEMBLY_FUNC("test_vsldoi", "vsldoi 17, 14, 15, 0");
=20
static void test_lvsl (void)
{
@@ -3062,36 +2823,16 @@
=20
#if defined (HAS_ALTIVEC)
extern void test_vcfux (void);
-asm(".text\n"
- "test_vcfux:\n"
- "\tvcfux 17, 14, 0\n"
- "\tblr\n"
- ".previous\n"
-);
+ASSEMBLY_FUNC("test_vcfux", "vcfux 17, 14, 0");
=20
extern void test_vcfsx (void);
-asm(".text\n"
- "test_vcfsx:\n"
- "\tvcfsx 17, 14, 0\n"
- "\tblr\n"
- ".previous\n"
-);
+ASSEMBLY_FUNC("test_vcfsx", "vcfsx 17, 14, 0");
=20
extern void test_vctuxs (void);
-asm(".text\n"
- "test_vctuxs:\n"
- "\tvctuxs 17, 14, 0\n"
- "\tblr\n"
- ".previous\n"
-);
+ASSEMBLY_FUNC("test_vctuxs", "vctuxs 17, 14, 0");
=20
extern void test_vctsxs (void);
-asm(".text\n"
- "test_vctsxs:\n"
- "\tvctsxs 17, 14, 0\n"
- "\tblr\n"
- ".previous\n"
-);
+ASSEMBLY_FUNC("test_vctsxs", "vctsxs 17, 14, 0");
=20
static test_t tests_av_float_ops_spe[] =3D {
{ &test_vcfux , " vcfux", },
@@ -3976,14 +3717,14 @@
#endif
=20
static inline void register_farg (void *farg,
- int s, uint16_t exp, uint64_t mant)
+ int s, uint16_t _exp, uint64_t mant)
{
uint64_t tmp;
=20
- tmp =3D ((uint64_t)s << 63) | ((uint64_t)exp << 52) | mant;
+ tmp =3D ((uint64_t)s << 63) | ((uint64_t)_exp << 52) | mant;
*(uint64_t *)farg =3D tmp;
AB_DPRINTF("%d %03x %013llx =3D> %016llx %0e\n",
- s, exp, mant, *(uint64_t *)farg, *(double *)farg);
+ s, _exp, mant, *(uint64_t *)farg, *(double *)farg);
}
=20
static void build_fargs_table (void)
@@ -4018,12 +3759,12 @@
* -SNaN : 1 0xFF 0x400000 =3D> 0xFFC00000
*/
uint64_t mant;
- uint16_t exp, e0, e1;
+ uint16_t _exp, e0, e1;
int s;
int i=3D0;
=20
/* Note: VEX isn't so hot with denormals, so don't bother
- testing them: set exp > 0
+ testing them: set _exp > 0
*/
=20
if ( arg_list_size =3D=3D 1 ) { // Large
@@ -4033,11 +3774,11 @@
for (e1=3D0x001; ; e1 =3D ((e1 + 1) << 2) + 6) {
if (e1 >=3D 0x400)
e1 =3D 0x3fe;
- exp =3D (e0 << 10) | e1;
+ _exp =3D (e0 << 10) | e1;
for (mant =3D 0x0000000000001ULL; mant < (1ULL << 52);
/* Add 'random' bits */
mant =3D ((mant + 0x4A6) << 13) + 0x359) {
- register_farg(&fargs[i++], s, exp, mant);
+ register_farg(&fargs[i++], s, _exp, mant);
}
if (e1 =3D=3D 0x3fe)
break;
@@ -4052,12 +3793,12 @@
// for (e1=3D0x001; ; e1 =3D ((e1 + 1) << 5) + 7) { // x3
if (e1 >=3D 0x400)
e1 =3D 0x3fe;
-// exp =3D (e0 << 10) | e1;
- exp =3D e1;
+// _exp =3D (e0 << 10) | e1;
+ _exp =3D e1;
for (mant =3D 0x0000000000001ULL; mant < (1ULL << 52);
/* Add 'random' bits */
mant =3D ((mant + 0x4A6) << 29) + 0x359) { // x2
- register_farg(&fargs[i++], s, exp, mant);
+ register_farg(&fargs[i++], s, _exp, mant);
}
if (e1 =3D=3D 0x3fe)
break;
@@ -4073,44 +3814,44 @@
/* Special values */
/* +0.0 : 0 0x000 0x0000000000000 */
s =3D 0;
- exp =3D 0x000;
+ _exp =3D 0x000;
mant =3D 0x0000000000000ULL;
- register_farg(&fargs[i++], s, exp, mant);
+ register_farg(&fargs[i++], s, _exp, mant);
/* -0.0 : 1 0x000 0x0000000000000 */
s =3D 1;
- exp =3D 0x000;
+ _exp =3D 0x000;
mant =3D 0x0000000000000ULL;
- register_farg(&fargs[i++], s, exp, mant);
+ register_farg(&fargs[i++], s, _exp, mant);
/* +infinity : 0 0x7FF 0x0000000000000 */
s =3D 0;
- exp =3D 0x7FF;
+ _exp =3D 0x7FF;
mant =3D 0x0000000000000ULL;
- register_farg(&fargs[i++], s, exp, mant);
+ register_farg(&fargs[i++], s, _exp, mant);
/* -infinity : 1 0x7FF 0x0000000000000 */
s =3D 1;
- exp =3D 0x7FF;
+ _exp =3D 0x7FF;
mant =3D 0x0000000000000ULL;
- register_farg(&fargs[i++], s, exp, mant);
+ register_farg(&fargs[i++], s, _exp, mant);
/* +QNaN : 0 0x7FF 0x7FFFFFFFFFFFF */
s =3D 0;
- exp =3D 0x7FF;
+ _exp =3D 0x7FF;
mant =3D 0x7FFFFFFFFFFFFULL;
- register_farg(&fargs[i++], s, exp, mant);
+ register_farg(&fargs[i++], s, _exp, mant);
/* -QNaN : 1 0x7FF 0x7FFFFFFFFFFFF */
s =3D 1;
- exp =3D 0x7FF;
+ _exp =3D 0x7FF;
mant =3D 0x7FFFFFFFFFFFFULL;
- register_farg(&fargs[i++], s, exp, mant);
+ register_farg(&fargs[i++], s, _exp, mant);
/* +SNaN : 0 0x7FF 0x8000000000000 */
s =3D 0;
- exp =3D 0x7FF;
+ _exp =3D 0x7FF;
mant =3D 0x8000000000000ULL;
- register_farg(&fargs[i++], s, exp, mant);
+ register_farg(&fargs[i++], s, _exp, mant);
/* -SNaN : 1 0x7FF 0x8000000000000 */
s =3D 1;
- exp =3D 0x7FF;
+ _exp =3D 0x7FF;
mant =3D 0x8000000000000ULL;
- register_farg(&fargs[i++], s, exp, mant);
+ register_farg(&fargs[i++], s, _exp, mant);
AB_DPRINTF("Registered %d fargs values\n", i);
=20
nb_fargs =3D i;
@@ -4126,8 +3867,8 @@
for (tmp=3D0; ; tmp =3D tmp + 1 + (tmp >> 1)) {
if (tmp >=3D 0x100000000ULL)
tmp =3D 0xFFFFFFFF;
- iargs[i++] =3D tmp;
- AB_DPRINTF("val %08llx\n", tmp);
+ iargs[i++] =3D (uint32_t)tmp;
+ AB_DPRINTF("val %08x\n", (uint32_t)tmp);
if (tmp =3D=3D 0xFFFFFFFF)
break;
}
@@ -4138,8 +3879,8 @@
for (tmp=3D0; ; tmp =3D 999999*tmp + 999999) { // gives 3
if (tmp >=3D 0x100000000ULL)
tmp =3D 0xFFFFFFFF;
- iargs[i++] =3D tmp;
- AB_DPRINTF("val %08llx\n", tmp);
+ iargs[i++] =3D (uint32_t)tmp;
+ AB_DPRINTF("val %08x\n", (uint32_t)tmp);
if (tmp =3D=3D 0xFFFFFFFF)
break;
}
@@ -4185,7 +3926,9 @@
unsigned int i=3D2;
viargs =3D memalign(16, i * sizeof(vector unsigned int));
viargs[0] =3D (vector unsigned int) { 0x01020304,0x05060708,0x090A0B0=
C,0x0E0D0E0F };
+ AB_DPRINTF_VEC32x4( viargs[0] );
viargs[1] =3D (vector unsigned int) { 0xF1F2F3F4,0xF5F6F7F8,0xF9FAFBF=
C,0xFEFDFEFF };
+ AB_DPRINTF_VEC32x4( viargs[1] );
#else
unsigned int i,j;
// build from iargs table (large/default already set)
@@ -4193,6 +3936,7 @@
for (i=3D0; i<nb_iargs; i++) {
j =3D iargs[i];
viargs[i] =3D (vector unsigned int){ j, j*2, j*3, j*4 };
+ AB_DPRINTF_VEC32x4( viargs[i] );
}
#endif
=20
@@ -4201,15 +3945,15 @@
}
=20
static inline void register_vfarg (vector float* vfarg,
- int s, uint8_t exp, uint32_t mant)
+ int s, uint8_t _exp, uint32_t mant)
{
uint32_t tmp;
vector uint32_t* vfargI =3D (vector uint32_t*)vfarg;
=20
- tmp =3D ((uint64_t)s << 31) | ((uint64_t)exp << 23) | mant;
+ tmp =3D ((uint64_t)s << 31) | ((uint64_t)_exp << 23) | mant;
*vfargI =3D (vector uint32_t){ tmp,tmp,tmp,tmp };
AB_DPRINTF("%d %02x %06x =3D> %08x %0e\n",
- s, exp, mant, *((uint32_t*)&tmp), *(float*)&tmp);
+ s, _exp, mant, *((uint32_t*)&tmp), *(float*)&tmp);
}
=20
static void build_vfargs_table (void)
@@ -4229,7 +3973,7 @@
* (8 values)
*/
uint32_t mant;
- uint16_t exp;
+ uint16_t _exp;
int s;
int i=3D0;
=20
@@ -4240,12 +3984,12 @@
=20
// 4 values:
for (s=3D0; s<2; s++) {
- for (exp=3D0x5; ; exp +=3D 0x9D ) {
- if (exp > 0xDF)
+ for (_exp=3D0x5; ; _exp +=3D 0x9D ) {
+ if (_exp > 0xDF)
break;
for (mant =3D 0x3FFFFF; mant < 0x7FFFFF;
mant =3D /* random */ ((mant + 0x1A6) << 31) + 0x159) {
- register_vfarg(&vfargs[i++], s, (uint8_t)exp, mant);
+ register_vfarg(&vfargs[i++], s, (uint8_t)_exp, mant);
}
}
}
@@ -4254,15 +3998,15 @@
vfargs =3D memalign(16, nb_vfargs * sizeof(vector float));
=20
for (s=3D0; s<2; s++) {
- for (exp=3D0x0; ; exp +=3D 0x3F ) {
- // for (exp=3D0; ; exp =3D ((exp + 1) << 1) + 3) {
- if (exp >=3D 0xFE)
- exp =3D 0xFE;
+ for (_exp=3D0x0; ; _exp +=3D 0x3F ) {
+ // for (_exp=3D0; ; _exp =3D ((_exp + 1) << 1) + 3) {
+ if (_exp >=3D 0xFE)
+ _exp =3D 0xFE;
for (mant =3D 0x0; mant < 0x7FFFFF;
mant =3D /* random */ ((mant + 0x4A6) << 5) + 0x359) {
- register_vfarg(&vfargs[i++], s, (uint8_t)exp, mant);
+ register_vfarg(&vfargs[i++], s, (uint8_t)_exp, mant);
}
- if (exp >=3D 0xFE)
+ if (_exp >=3D 0xFE)
break;
}
}
@@ -4271,50 +4015,50 @@
/* Special values */
/* +0.0 : 0 0x00 0x000000 */
s =3D 0;
- exp =3D 0x00;
+ _exp =3D 0x00;
mant =3D 0x000000;
- register_vfarg(&vfargs[i++], s, exp, mant);
+ register_vfarg(&vfargs[i++], s, _exp, mant);
/* -0.0 : 1 0x00 0x000000 */
s =3D 1;
- exp =3D 0x00;
+ _exp =3D 0x00;
mant =3D 0x000000;
- register_vfarg(&vfargs[i++], s, exp, mant);
+ register_vfarg(&vfargs[i++], s, _exp, mant);
=20
/* +infinity : 0 0xFF 0x000000 */
s =3D 0;
- exp =3D 0xFF;
+ _exp =3D 0xFF;
mant =3D 0x000000;
- register_vfarg(&vfargs[i++], s, exp, mant);
+ register_vfarg(&vfargs[i++], s, _exp, mant);
/* -infinity : 1 0xFF 0x000000 */
s =3D 1;
- exp =3D 0xFF;
+ _exp =3D 0xFF;
mant =3D 0x000000;
- register_vfarg(&vfargs[i++], s, exp, mant);
+ register_vfarg(&vfargs[i++], s, _exp, mant);
=20
- /* NaN: exponent all 1s, non-zero fraction */
+ /* NaN: _exponent all 1s, non-zero fraction */
/* SNaN is a NaN with the most significant fraction bit clear.*/
/* +SNaN : 0 0xFF 0x7FFFFF */
s =3D 0;
- exp =3D 0xFF;
+ _exp =3D 0xFF;
mant =3D 0x7FFFFF;
- register_vfarg(&vfargs[i++], s, exp, mant);
+ register_vfarg(&vfargs[i++], s, _exp, mant);
/* -SNaN : 1 0xFF 0x7FFFFF */
s =3D 1;
- exp =3D 0xFF;
+ _exp =3D 0xFF;
mant =3D 0x7FFFFF;
- register_vfarg(&vfargs[i++], s, exp, mant);
+ register_vfarg(&vfargs[i++], s, _exp, mant);
=20
/* QNaN is a NaN with the most significant fraction bit set */
/* +QNaN : 0 0xFF 0x3F0000 */
s =3D 0;
- exp =3D 0xFF;
+ _exp =3D 0xFF;
mant =3D 0x3FFFFF;
- register_vfarg(&vfargs[i++], s, exp, mant);
+ register_vfarg(&vfargs[i++], s, _exp, mant);
/* -QNaN : 1 0xFF 0x3F0000 */
s =3D 1;
- exp =3D 0xFF;
+ _exp =3D 0xFF;
mant =3D 0x3FFFFF;
- register_vfarg(&vfargs[i++], s, exp, mant);
+ register_vfarg(&vfargs[i++], s, _exp, mant);
AB_DPRINTF("Registered %d vfargs values\n", i);
=20
assert(i <=3D nb_vfargs);
Modified: trunk/none/tests/ppc32/jm-int.stdout.exp
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=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/none/tests/ppc32/jm-int.stdout.exp 2005-12-23 00:57:03 UTC (rev=
5416)
+++ trunk/none/tests/ppc32/jm-int.stdout.exp 2005-12-23 01:16:16 UTC (rev=
5417)
@@ -673,46 +673,46 @@
srw. ffffffff, ffffffff =3D> 00000000 (20000000 00000000)
=20
PPC integer compare insns (two args):
- cmp 00000000, 00000000 =3D> 00000000 (00200000 00000000)
- cmp 00000000, 000f423f =3D> 00000000 (00800000 00000000)
- cmp 00000000, ffffffff =3D> 00000000 (00400000 00000000)
- cmp 000f423f, 00000000 =3D> 00000000 (00400000 00000000)
- cmp 000f423f, 000f423f =3D> 00000000 (00200000 00000000)
- cmp 000f423f, ffffffff =3D> 00000000 (00400000 00000000)
- cmp ffffffff, 00000000 =3D> 00000000 (00800000 00000000)
- cmp ffffffff, 000f423f =3D> 00000000 (00800000 00000000)
- cmp ffffffff, ffffffff =3D> 00000000 (00200000 00000000)
+ cmpw 00000000, 00000000 =3D> 00000000 (00200000 00000000)
+ cmpw 00000000, 000f423f =3D> 00000000 (00800000 00000000)
+ cmpw 00000000, ffffffff =3D> 00000000 (00400000 00000000)
+ cmpw 000f423f, 00000000 =3D> 00000000 (00400000 00000000)
+ cmpw 000f423f, 000f423f =3D> 00000000 (00200000 00000000)
+ cmpw 000f423f, ffffffff =3D> 00000000 (00400000 00000000)
+ cmpw ffffffff, 00000000 =3D> 00000000 (00800000 00000000)
+ cmpw ffffffff, 000f423f =3D> 00000000 (00800000 00000000)
+ cmpw ffffffff, ffffffff =3D> 00000000 (00200000 00000000)
=20
- cmpl 00000000, 00000000 =3D> 00000000 (00200000 00000000)
- cmpl 00000000, 000f423f =3D> 00000000 (00800000 00000000)
- cmpl 00000000, ffffffff =3D> 00000000 (00800000 00000000)
- cmpl 000f423f, 00000000 =3D> 00000000 (00400000 00000000)
- cmpl 000f423f, 000f423f =3D> 00000000 (00200000 00000000)
- cmpl 000f423f, ffffffff =3D> 00000000 (00800000 00000000)
- cmpl ffffffff, 00000000 =3D> 00000000 (00400000 00000000)
- cmpl ffffffff, 000f423f =3D> 00000000 (00400000 00000000)
- cmpl ffffffff, ffffffff =3D> 00000000 (00200000 00000000)
+ cmplw 00000000, 00000000 =3D> 00000000 (00200000 00000000)
+ cmplw 00000000, 000f423f =3D> 00000000 (00800000 00000000)
+ cmplw 00000000, ffffffff =3D> 00000000 (00800000 00000000)
+ cmplw 000f423f, 00000000 =3D> 00000000 (00400000 00000000)
+ cmplw 000f423f, 000f423f =3D> 00000000 (00200000 00000000)
+ cmplw 000f423f, ffffffff =3D> 00000000 (00800000 00000000)
+ cmplw ffffffff, 00000000 =3D> 00000000 (00400000 00000000)
+ cmplw ffffffff, 000f423f =3D> 00000000 (00400000 00000000)
+ cmplw ffffffff, ffffffff =3D> 00000000 (00200000 00000000)
=20
PPC integer compare with immediate insns (two args):
- cmpi 00000000, 00000000 =3D> 00000000 (00200000 00000000)
- cmpi 00000000, 000003e7 =3D> 00000000 (00800000 00000000)
- cmpi 00000000, 0000ffff =3D> 00000000 (00400000 00000000)
- cmpi 000f423f, 00000000 =3D> 00000000 (00400000 00000000)
- cmpi 000f423f, 000003e7 =3D> 00000000 (00400000 00000000)
- cmpi 000f423f, 0000ffff =3D> 00000000 (00400000 00000000)
- cmpi ffffffff, 00000000 =3D> 00000000 (00800000 00000000)
- cmpi ffffffff, 000003e7 =3D> 00000000 (00800000 00000000)
- cmpi ffffffff, 0000ffff =3D> 00000000 (00200000 00000000)
+ cmpwi 00000000, 00000000 =3D> 00000000 (00200000 00000000)
+ cmpwi 00000000, 000003e7 =3D> 00000000 (00800000 00000000)
+ cmpwi 00000000, 0000ffff =3D> 00000000 (00400000 00000000)
+ cmpwi 000f423f, 00000000 =3D> 00000000 (00400000 00000000)
+ cmpwi 000f423f, 000003e7 =3D> 00000000 (00400000 00000000)
+ cmpwi 000f423f, 0000ffff =3D> 00000000 (00400000 00000000)
+ cmpwi ffffffff, 00000000 =3D> 00000000 (00800000 00000000)
+ cmpwi ffffffff, 000003e7 =3D> 00000000 (00800000 00000000)
+ cmpwi ffffffff, 0000ffff =3D> 00000000 (00200000 00000000)
=20
- cmpli 00000000, 00000000 =3D> 00000000 (00200000 00000000)
- cmpli 00000000, 000003e7 =3D> 00000000 (00800000 00000000)
- cmpli 00000000, 0000ffff =3D> 00000000 (00800000 00000000)
- cmpli 000f423f, 00000000 =3D> 00000000 (00400000 00000000)
- cmpli 000f423f, 000003e7 =3D> 00000000 (00400000 00000000)
- cmpli 000f423f, 0000ffff =3D> 00000000 (00400000 00000000)
- cmpli ffffffff, 00000000 =3D> 00000000 (00400000 00000000)
- cmpli ffffffff, 000003e7 =3D> 00000000 (00400000 00000000)
- cmpli ffffffff, 0000ffff =3D> 00000000 (00400000 00000000)
+ cmplwi 00000000, 00000000 =3D> 00000000 (00200000 00000000)
+ cmplwi 00000000, 000003e7 =3D> 00000000 (00800000 00000000)
+ cmplwi 00000000, 0000ffff =3D> 00000000 (00800000 00000000)
+ cmplwi 000f423f, 00000000 =3D> 00000000 (00400000 00000000)
+ cmplwi 000f423f, 000003e7 =3D> 00000000 (00400000 00000000)
+ cmplwi 000f423f, 0000ffff =3D> 00000000 (00400000 00000000)
+ cmplwi ffffffff, 00000000 =3D> 00000000 (00400000 00000000)
+ cmplwi ffffffff, 000003e7 =3D> 00000000 (00400000 00000000)
+ cmplwi ffffffff, 0000ffff =3D> 00000000 (00400000 00000000)
=20
PPC integer arith insns
with one register + one 16 bits immediate args:
|
|
From: <sv...@va...> - 2005-12-23 01:06:39
|
Author: cerion
Date: 2005-12-23 01:06:35 +0000 (Fri, 23 Dec 2005)
New Revision: 1505
Log:
Deal with backend case of 1Sto64
Modified:
trunk/priv/host-ppc32/isel.c
Modified: trunk/priv/host-ppc32/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-ppc32/isel.c 2005-12-23 00:55:09 UTC (rev 1504)
+++ trunk/priv/host-ppc32/isel.c 2005-12-23 01:06:35 UTC (rev 1505)
@@ -1582,6 +1582,17 @@
r_dst, r_dst, PPCRH_Imm(False,31)));
return r_dst;
}
+ case Iop_1Sto64: {
+ /* could do better than this, but for now ... */
+ HReg r_dst =3D newVRegI(env);
+ PPCCondCode cond =3D iselCondCode(env, e->Iex.Unop.arg);
+ addInstr(env, PPCInstr_Set(cond,r_dst));
+ addInstr(env, PPCInstr_Shft(Pshft_SHL, False/*64bit shift*/,
+ r_dst, r_dst, PPCRH_Imm(False,63)))=
;
+ addInstr(env, PPCInstr_Shft(Pshft_SAR, False/*64bit shift*/,
+ r_dst, r_dst, PPCRH_Imm(False,63)))=
;
+ return r_dst;
+ }
case Iop_Clz32:
case Iop_Clz64: {
PPCUnaryOp op_clz =3D (op_unop =3D=3D Iop_Clz32) ? Pun_CLZ32 :
|
|
From: <sv...@va...> - 2005-12-23 00:57:05
|
Author: cerion
Date: 2005-12-23 00:57:03 +0000 (Fri, 23 Dec 2005)
New Revision: 5416
Log:
Track changes to PPC naming convention - VEX r1504
Modified:
trunk/coregrind/m_machine.c
trunk/coregrind/m_transtab.c
trunk/coregrind/pub_core_machine.h
Modified: trunk/coregrind/m_machine.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_machine.c 2005-12-23 00:16:24 UTC (rev 5415)
+++ trunk/coregrind/m_machine.c 2005-12-23 00:57:03 UTC (rev 5416)
@@ -238,7 +238,13 @@
then safe to use VG_(machine_get_VexArchInfo)=20
and VG_(machine_ppc32_has_FP)
and VG_(machine_ppc32_has_VMX)
+ -------------
+ ppc64: initially: call VG_(machine_get_hwcaps)
+ call VG_(machine_ppc64_set_clszB)
=20
+ then safe to use VG_(machine_get_VexArchInfo)=20
+ and VG_(machine_ppc64_has_VMX)
+
VG_(machine_get_hwcaps) may use signals (although it attempts to
leave signal state unchanged) and therefore should only be
called before m_main sets up the client's signal state.
@@ -456,11 +462,11 @@
/* Either the value must not have been set yet (zero) or we can
tolerate it being set to the same value multiple times, as the
stack scanning logic in m_main is a bit stupid. */
- vg_assert(vai.ppc32_cache_line_szB =3D=3D 0
- || vai.ppc32_cache_line_szB =3D=3D szB);
+ vg_assert(vai.ppc_cache_line_szB =3D=3D 0
+ || vai.ppc_cache_line_szB =3D=3D szB);
=20
vg_assert(szB =3D=3D 32 || szB =3D=3D 128);
- vai.ppc32_cache_line_szB =3D szB;
+ vai.ppc_cache_line_szB =3D szB;
}
#endif
=20
@@ -474,11 +480,11 @@
/* Either the value must not have been set yet (zero) or we can
tolerate it being set to the same value multiple times, as the
stack scanning logic in m_main is a bit stupid. */
- vg_assert(vai.ppc32_cache_line_szB =3D=3D 0
- || vai.ppc32_cache_line_szB =3D=3D szB);
+ vg_assert(vai.ppc_cache_line_szB =3D=3D 0
+ || vai.ppc_cache_line_szB =3D=3D szB);
=20
vg_assert(szB =3D=3D 32 || szB =3D=3D 128);
- vai.ppc32_cache_line_szB =3D szB;
+ vai.ppc_cache_line_szB =3D szB;
}
#endif
=20
Modified: trunk/coregrind/m_transtab.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_transtab.c 2005-12-23 00:16:24 UTC (rev 5415)
+++ trunk/coregrind/m_transtab.c 2005-12-23 00:57:03 UTC (rev 5416)
@@ -31,7 +31,7 @@
=20
#include "pub_core_basics.h"
#include "pub_core_debuglog.h"
-#include "pub_core_machine.h" // ppc32: VG_(cache_line_size_ppc32)
+#include "pub_core_machine.h" // For VG(machine_get_VexArchInfo)
#include "pub_core_libcbase.h"
#include "pub_core_libcassert.h"
#include "pub_core_libcprint.h"
@@ -742,7 +742,7 @@
VexArchInfo vai;
=20
VG_(machine_get_VexArchInfo)( NULL, &vai );
- cls =3D vai.ppc32_cache_line_szB;
+ cls =3D vai.ppc_cache_line_szB;
=20
/* Stay sane .. */
vg_assert(cls =3D=3D 32 || cls =3D=3D 128);
Modified: trunk/coregrind/pub_core_machine.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/pub_core_machine.h 2005-12-23 00:16:24 UTC (rev 5415)
+++ trunk/coregrind/pub_core_machine.h 2005-12-23 00:57:03 UTC (rev 5416)
@@ -87,7 +87,7 @@
//-------------------------------------------------------------
/* Details about the capabilities of the underlying (host) CPU. These
details are acquired by (1) enquiring with the CPU at startup, or
- (2) from the AT_SYSINFO entries the kernel gave us (ppc32 cache
+ (2) from the AT_SYSINFO entries the kernel gave us (ppc cache
line size). It's a bit nasty in the sense that there's no obvious
way to stop uses of some of this info before it's ready to go.
=20
|
|
From: <sv...@va...> - 2005-12-23 00:55:14
|
Author: cerion Date: 2005-12-23 00:55:09 +0000 (Fri, 23 Dec 2005) New Revision: 1504 Log: Changed naming convention from 'PPC32' to 'PPC' for all VEX code common t= o both PPC32 and PPC64. And tidied up a fair bit while i was at it. Modified: trunk/priv/guest-ppc32/gdefs.h trunk/priv/guest-ppc32/ghelpers.c trunk/priv/guest-ppc32/toIR.c trunk/priv/host-ppc32/hdefs.c trunk/priv/host-ppc32/hdefs.h trunk/priv/host-ppc32/isel.c trunk/priv/main/vex_main.c trunk/pub/libvex.h trunk/switchback/switchback.c trunk/test_main.c [... diff too large to include ...] |
|
From: <sv...@va...> - 2005-12-23 00:16:29
|
Author: sewardj
Date: 2005-12-23 00:16:24 +0000 (Fri, 23 Dec 2005)
New Revision: 5415
Log:
Handle CmpORD64{U,S} as ppc64 requires those.
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 2005-12-22 23:13:27 UTC (rev 5414)
+++ trunk/memcheck/mc_translate.c 2005-12-23 00:16:24 UTC (rev 5415)
@@ -682,7 +682,7 @@
and similarly the unsigned variant. The default interpretation is:
=20
CmpORD32{S,U}#(x,y,x#,y#) =3D PCast(x# `UifU` y#) =20
- & (7<<1)
+ & (7<<1)
=20
The "& (7<<1)" reflects the fact that all result bits except 3,2,1
are zero and therefore defined (viz, zero).
@@ -695,9 +695,10 @@
will be defined even if the rest of x isn't. In which case we do:
=20
CmpORD32S#(x,x#,0,{impliedly 0}#)
- =3D PCast(x#) & (3<<1) -- standard interp for GT,EQ
- | (x# >> 31) << 3 -- LT =3D x#[31]
+ =3D PCast(x#) & (3<<1) -- standard interp for GT#,EQ#
+ | (x# >>u 31) << 3 -- LT# =3D x#[31]
=20
+ Analogous handling for CmpORD64{S,U}.
*/
static Bool isZeroU32 ( IRAtom* e )
{
@@ -707,56 +708,81 @@
&& e->Iex.Const.con->Ico.U32 =3D=3D 0 );
}
=20
-static IRAtom* doCmpORD32 ( MCEnv* mce,
- IROp cmp_op,
- IRAtom* xxhash, IRAtom* yyhash,=20
- IRAtom* xx, IRAtom* yy )
+static Bool isZeroU64 ( IRAtom* e )
{
+ return
+ toBool( e->tag =3D=3D Iex_Const
+ && e->Iex.Const.con->tag =3D=3D Ico_U64
+ && e->Iex.Const.con->Ico.U64 =3D=3D 0 );
+}
+
+static IRAtom* doCmpORD ( MCEnv* mce,
+ IROp cmp_op,
+ IRAtom* xxhash, IRAtom* yyhash,=20
+ IRAtom* xx, IRAtom* yy )
+{
+ Bool m64 =3D cmp_op =3D=3D Iop_CmpORD64S || cmp_op =3D=3D Iop_Cm=
pORD64U;
+ Bool syned =3D cmp_op =3D=3D Iop_CmpORD64S || cmp_op =3D=3D Iop_Cm=
pORD32S;
+ IROp opOR =3D m64 ? Iop_Or64 : Iop_Or32;
+ IROp opAND =3D m64 ? Iop_And64 : Iop_And32;
+ IROp opSHL =3D m64 ? Iop_Shl64 : Iop_Shl32;
+ IROp opSHR =3D m64 ? Iop_Shr64 : Iop_Shr32;
+ IRType ty =3D m64 ? Ity_I64 : Ity_I32;
+ Int width =3D m64 ? 64 : 32;
+
+ Bool (*isZero)(IRAtom*) =3D m64 ? isZeroU64 : isZeroU32;
+
+ IRAtom* threeLeft1 =3D NULL;
+ IRAtom* sevenLeft1 =3D NULL;
+
tl_assert(isShadowAtom(mce,xxhash));
tl_assert(isShadowAtom(mce,yyhash));
tl_assert(isOriginalAtom(mce,xx));
tl_assert(isOriginalAtom(mce,yy));
tl_assert(sameKindedAtoms(xxhash,xx));
tl_assert(sameKindedAtoms(yyhash,yy));
- tl_assert(cmp_op =3D=3D Iop_CmpORD32S || cmp_op =3D=3D Iop_CmpORD32U)=
;
+ tl_assert(cmp_op =3D=3D Iop_CmpORD32S || cmp_op =3D=3D Iop_CmpORD32U
+ || cmp_op =3D=3D Iop_CmpORD64S || cmp_op =3D=3D Iop_CmpORD6=
4U);
=20
if (0) {
ppIROp(cmp_op); VG_(printf)(" ");=20
ppIRExpr(xx); VG_(printf)(" "); ppIRExpr( yy ); VG_(printf)("\n");
}
=20
- if (isZeroU32(yy)) {
+ if (syned && isZero(yy)) {
/* fancy interpretation */
/* if yy is zero, then it must be fully defined (zero#). */
- tl_assert(isZeroU32(yyhash));
+ tl_assert(isZero(yyhash));
+ threeLeft1 =3D m64 ? mkU64(3<<1) : mkU32(3<<1);
return
binop(
- Iop_Or32,
+ opOR,
assignNew(
- mce,Ity_I32,
+ mce,ty,
binop(
- Iop_And32,
- mkPCastTo(mce,Ity_I32, xxhash),=20
- mkU32(3<<1)
+ opAND,
+ mkPCastTo(mce,ty, xxhash),=20
+ threeLeft1
)),
assignNew(
- mce,Ity_I32,
+ mce,ty,
binop(
- Iop_Shl32,
+ opSHL,
assignNew(
- mce,Ity_I32,
- binop(Iop_Shr32, xxhash, mkU8(31))),
+ mce,ty,
+ binop(opSHR, xxhash, mkU8(width-1))),
mkU8(3)
))
);
} else {
/* standard interpretation */
+ sevenLeft1 =3D m64 ? mkU64(7<<1) : mkU32(7<<1);
return=20
binop(=20
- Iop_And32,=20
- mkPCastTo( mce,Ity_I32,
- mkUifU32(mce, xxhash,yyhash)),
- mkU32(7<<1)
+ opAND,=20
+ mkPCastTo( mce,ty,
+ mkUifU(mce,ty, xxhash,yyhash)),
+ sevenLeft1
);
}
}
@@ -1973,7 +1999,9 @@
=20
case Iop_CmpORD32S:
case Iop_CmpORD32U:
- return doCmpORD32(mce, op, vatom1,vatom2, atom1,atom2);
+ case Iop_CmpORD64S:
+ case Iop_CmpORD64U:
+ return doCmpORD(mce, op, vatom1,vatom2, atom1,atom2);
=20
case Iop_Add64:
if (mce->bogusLiterals)
|