]> git.ipfire.org Git - thirdparty/valgrind.git/log
thirdparty/valgrind.git
20 years agoCleanups:
Julian Seward [Fri, 9 Sep 2005 10:25:39 +0000 (10:25 +0000)] 
Cleanups:
- remove various unused vars
- try and use ea_standard/ea_rA_or_zero where possible to do
  effective-address computations

git-svn-id: svn://svn.valgrind.org/vex/trunk@1378

20 years agorm unused vars in dis_int_ldst_str
Julian Seward [Fri, 9 Sep 2005 09:50:34 +0000 (09:50 +0000)] 
rm unused vars in dis_int_ldst_str

git-svn-id: svn://svn.valgrind.org/vex/trunk@1377

20 years agoImplement stswi/stswx.
Julian Seward [Fri, 9 Sep 2005 09:35:29 +0000 (09:35 +0000)] 
Implement stswi/stswx.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1376

20 years agoEnhance the dead-code removal pass so that it detects unconditional
Julian Seward [Fri, 9 Sep 2005 08:33:03 +0000 (08:33 +0000)] 
Enhance the dead-code removal pass so that it detects unconditional
side exits and deletes all code after them.  This helps clean up the
IR created by {l,st}sw{i,x} from the ppc32 front end.  It's also a
general transformation which ought to have been implemented long ago.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1375

20 years agoImplement lswi and lswx. The generated IR should be good for
Julian Seward [Fri, 9 Sep 2005 08:31:18 +0000 (08:31 +0000)] 
Implement lswi and lswx.  The generated IR should be good for
instrumentation by memcheck and does not reference any memory it
should not.  Unfortunately the IR is long and inefficient.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1374

20 years agoReinstate stwbrx.
Julian Seward [Thu, 8 Sep 2005 17:53:03 +0000 (17:53 +0000)] 
Reinstate stwbrx.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1373

20 years agoReinstate crand, crnand, crorc.
Julian Seward [Thu, 8 Sep 2005 17:33:27 +0000 (17:33 +0000)] 
Reinstate crand, crnand, crorc.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1372

20 years agoImplement mftb{,u}.
Julian Seward [Tue, 6 Sep 2005 10:25:46 +0000 (10:25 +0000)] 
Implement mftb{,u}.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1371

20 years agoRemove some helper functions to do with flag handling. These are
Julian Seward [Tue, 6 Sep 2005 09:55:27 +0000 (09:55 +0000)] 
Remove some helper functions to do with flag handling.  These are
unused because the relevant computations are now done in line.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1370

20 years agoReinstate lwbrx.
Julian Seward [Tue, 6 Sep 2005 09:10:09 +0000 (09:10 +0000)] 
Reinstate lwbrx.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1369

20 years agoObserve any externally supplied $(CC).
Julian Seward [Mon, 29 Aug 2005 12:07:41 +0000 (12:07 +0000)] 
Observe any externally supplied $(CC).

git-svn-id: svn://svn.valgrind.org/vex/trunk@1364

20 years agoDon't even mention malloc, since it screws up statically linked, glibc
Julian Seward [Fri, 26 Aug 2005 18:00:31 +0000 (18:00 +0000)] 
Don't even mention malloc, since it screws up statically linked, glibc
Valgrind.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1363

20 years agoImplement MOVUPS -- move from G (xmm) to E (mem or xmm) [UNVERIFIED]
Julian Seward [Thu, 25 Aug 2005 21:34:24 +0000 (21:34 +0000)] 
Implement MOVUPS -- move from G (xmm) to E (mem or xmm) [UNVERIFIED]

git-svn-id: svn://svn.valgrind.org/vex/trunk@1362

20 years agovex_printf/sprintf hackery.
Julian Seward [Thu, 25 Aug 2005 21:20:18 +0000 (21:20 +0000)] 
vex_printf/sprintf hackery.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1361

20 years agoBuild rflag thunk for adc/sbb correctly.
Julian Seward [Wed, 24 Aug 2005 10:56:01 +0000 (10:56 +0000)] 
Build rflag thunk for adc/sbb correctly.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1353

20 years agoamd64: Handle BT/BTS/BTR/BTC Gv, Ev.
Julian Seward [Wed, 24 Aug 2005 10:46:19 +0000 (10:46 +0000)] 
amd64: Handle BT/BTS/BTR/BTC Gv, Ev.
x86:   Fix signedness bug in existing BT/BTS/BTR/BTC Gv, Ev code.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1352

20 years agoFix incorrect building of the flags thunk after ADC and SBB.
Julian Seward [Wed, 24 Aug 2005 10:01:36 +0000 (10:01 +0000)] 
Fix incorrect building of the flags thunk after ADC and SBB.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1351

20 years agoEnable ADC Ib, AL.
Julian Seward [Wed, 24 Aug 2005 09:22:39 +0000 (09:22 +0000)] 
Enable ADC Ib, AL.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1350

20 years agoImplement LOOP{,E,NE}.
Julian Seward [Tue, 23 Aug 2005 23:44:35 +0000 (23:44 +0000)] 
Implement LOOP{,E,NE}.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1349

20 years agoRename a couple of inconsistently-named helper functions.
Julian Seward [Tue, 23 Aug 2005 23:26:37 +0000 (23:26 +0000)] 
Rename a couple of inconsistently-named helper functions.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1348

20 years agoWhitespace-only change.
Julian Seward [Tue, 23 Aug 2005 23:17:38 +0000 (23:17 +0000)] 
Whitespace-only change.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1347

20 years agoImplement RDTSC (amd64).
Julian Seward [Tue, 23 Aug 2005 23:16:51 +0000 (23:16 +0000)] 
Implement RDTSC (amd64).

git-svn-id: svn://svn.valgrind.org/vex/trunk@1346

20 years agoRename a couple of inconsistently-named helper functions.
Julian Seward [Tue, 23 Aug 2005 19:30:58 +0000 (19:30 +0000)] 
Rename a couple of inconsistently-named helper functions.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1345

20 years agoImplement RDTSC on x86.
Julian Seward [Tue, 23 Aug 2005 19:24:29 +0000 (19:24 +0000)] 
Implement RDTSC on x86.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1344

20 years agoImplement LOOP/LOOPE/LOOPNE.
Julian Seward [Tue, 23 Aug 2005 17:29:27 +0000 (17:29 +0000)] 
Implement LOOP/LOOPE/LOOPNE.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1343

20 years agoEnable testing of RCL insns.
Julian Seward [Tue, 23 Aug 2005 15:41:40 +0000 (15:41 +0000)] 
Enable testing of RCL insns.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1342

20 years agoSupport x86 RCL instructions.
Julian Seward [Tue, 23 Aug 2005 15:41:14 +0000 (15:41 +0000)] 
Support x86 RCL instructions.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1341

20 years agoOn a PPC32Instr_Call, don't merely record how many integer registers
Julian Seward [Sun, 21 Aug 2005 00:48:37 +0000 (00:48 +0000)] 
On a PPC32Instr_Call, don't merely record how many integer registers
carry parameters.  Instead record the actual identities of such
registers in a bitmask.  This is necessary because the PPC calling
conventions have "holes" in the register ranges.  For example, a
routine taking an UInt(32-bit) first param and an ULong(64-bit) second
param passes the first arg in r3 but the second one in r5 and r6, and
r4 is not used.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1340

20 years agoAdd tested but unused code just in case it is useful at some point in
Julian Seward [Thu, 18 Aug 2005 11:50:43 +0000 (11:50 +0000)] 
Add tested but unused code just in case it is useful at some point in
the future: a potentially more memcheck-friendly implementation of
count-leading-zeroes.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1339

20 years agodis_Grp2: decode address mode correctly
Julian Seward [Sun, 14 Aug 2005 00:09:58 +0000 (00:09 +0000)] 
dis_Grp2: decode address mode correctly

git-svn-id: svn://svn.valgrind.org/vex/trunk@1334

20 years agoHandle Iop_Sar16, so that front end amd64 "cwtd" does not bomb.
Julian Seward [Sat, 13 Aug 2005 23:58:34 +0000 (23:58 +0000)] 
Handle Iop_Sar16, so that front end amd64 "cwtd" does not bomb.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1333

20 years agoImplement 'rep ret'.
Julian Seward [Fri, 12 Aug 2005 23:51:31 +0000 (23:51 +0000)] 
Implement 'rep ret'.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1332

20 years agoImplement cmpxchg8b. Sheesh. What a total dog of an instruction.
Julian Seward [Fri, 12 Aug 2005 23:04:48 +0000 (23:04 +0000)] 
Implement cmpxchg8b.  Sheesh.  What a total dog of an instruction.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1331

20 years agoImplement PREFETCH{W} m8.
Julian Seward [Wed, 10 Aug 2005 12:27:46 +0000 (12:27 +0000)] 
Implement PREFETCH{W} m8.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1324

20 years agoImplement DC /3 (FCOMP double-real).
Julian Seward [Wed, 10 Aug 2005 11:43:42 +0000 (11:43 +0000)] 
Implement DC /3 (FCOMP double-real).

git-svn-id: svn://svn.valgrind.org/vex/trunk@1323

20 years agoReenable FST %st(0),%st(?) (0xDD 0xD0 .. 0xDD 0xD7).
Julian Seward [Mon, 8 Aug 2005 09:58:05 +0000 (09:58 +0000)] 
Reenable FST %st(0),%st(?) (0xDD 0xD0 .. 0xDD 0xD7).

git-svn-id: svn://svn.valgrind.org/vex/trunk@1322

20 years agoDon't emit cmovl since older x86s don't support it; instead emit a
Julian Seward [Mon, 8 Aug 2005 00:33:37 +0000 (00:33 +0000)] 
Don't emit cmovl since older x86s don't support it; instead emit a
conditional jump over an unconditional move.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1321

20 years agoA minimal implementation of the x86 sysenter instruction
Julian Seward [Sun, 7 Aug 2005 14:48:03 +0000 (14:48 +0000)] 
A minimal implementation of the x86 sysenter instruction
(experimental).  Limitations as commented in the code.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1320

20 years agoTrack the status of the %EFLAGS.AC (alignment check) bit, but
Julian Seward [Sat, 6 Aug 2005 11:45:02 +0000 (11:45 +0000)] 
Track the status of the %EFLAGS.AC (alignment check) bit, but
otherwise ignore it.  This fixes a crash induced by incorrect CPU
identification.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1319

20 years agoReinstate SBB r/m, reg.
Julian Seward [Sat, 6 Aug 2005 10:04:12 +0000 (10:04 +0000)] 
Reinstate SBB r/m, reg.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1318

20 years agoGet rid of ludicrously over-paranoid assertion that caused all last
Julian Seward [Fri, 5 Aug 2005 02:55:36 +0000 (02:55 +0000)] 
Get rid of ludicrously over-paranoid assertion that caused all last
night's x86 regtests to fail.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1317

20 years ago- Partial implementation of reservations, to make lwarx/stwcx. work
Julian Seward [Thu, 4 Aug 2005 18:32:19 +0000 (18:32 +0000)] 
- Partial implementation of reservations, to make lwarx/stwcx. work
- Reenable some more integer insns

git-svn-id: svn://svn.valgrind.org/vex/trunk@1316

20 years agoImplement dual licensing.
Julian Seward [Wed, 3 Aug 2005 16:07:36 +0000 (16:07 +0000)] 
Implement dual licensing.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1313

20 years agoNewer version of GPLv2 text with newer FSF addresses, no other changes.
Julian Seward [Wed, 3 Aug 2005 15:47:33 +0000 (15:47 +0000)] 
Newer version of GPLv2 text with newer FSF addresses, no other changes.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1312

20 years agoImplement 0xA0 /* MOV Ob,AL */ and 0xA2 /* MOV AL,Ob */.
Julian Seward [Tue, 2 Aug 2005 21:27:25 +0000 (21:27 +0000)] 
Implement 0xA0 /* MOV Ob,AL */ and 0xA2 /* MOV AL,Ob */.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1311

20 years agoIgnore redundant REX.W prefix on CALL Ev.
Julian Seward [Tue, 2 Aug 2005 21:20:36 +0000 (21:20 +0000)] 
Ignore redundant REX.W prefix on CALL Ev.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1310

20 years agoMake copyright notices consistent.
Julian Seward [Tue, 2 Aug 2005 11:14:04 +0000 (11:14 +0000)] 
Make copyright notices consistent.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1309

20 years agoSpecialise NZ after DECW.
Julian Seward [Mon, 1 Aug 2005 13:35:18 +0000 (13:35 +0000)] 
Specialise NZ after DECW.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1308

20 years agoImplement 0xA1 /* MOV Ov,eAX */ and 0xA3 /* MOV eAX,Ov */. This
Julian Seward [Mon, 1 Aug 2005 13:03:32 +0000 (13:03 +0000)] 
Implement 0xA1 /* MOV Ov,eAX */ and 0xA3 /* MOV eAX,Ov */.  This
should fix #109810.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1307

20 years agoReinstate some FP instructions. With --tool=none we now have a
Julian Seward [Fri, 29 Jul 2005 21:58:51 +0000 (21:58 +0000)] 
Reinstate some FP instructions.  With --tool=none we now have a
successful run through gsl-1.6, which is great.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1306

20 years agoImplement ffreep %st(0). Fixes #109718.
Julian Seward [Fri, 29 Jul 2005 11:57:00 +0000 (11:57 +0000)] 
Implement ffreep %st(0).  Fixes #109718.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1305

20 years agoImplement ficom{p,}{w,l}. This should fix #103594.
Julian Seward [Fri, 29 Jul 2005 11:28:38 +0000 (11:28 +0000)] 
Implement ficom{p,}{w,l}.  This should fix #103594.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1304

20 years agoTypechecker police.
Julian Seward [Wed, 27 Jul 2005 00:22:37 +0000 (00:22 +0000)] 
Typechecker police.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1303

20 years agoGet rid of warnings from gcc.
Julian Seward [Wed, 27 Jul 2005 00:22:15 +0000 (00:22 +0000)] 
Get rid of warnings from gcc.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1302

20 years agoNever ever delete vex_svnversion.h except when doing 'make version'.
Julian Seward [Tue, 26 Jul 2005 22:44:27 +0000 (22:44 +0000)] 
Never ever delete vex_svnversion.h except when doing 'make version'.
Purpose is so that 'make distclean' or 'make clean' in a tarball'd
build do not delete it, and so do not render the tree unbuildable.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1301

20 years agoDon't delete vex_svnversion.h during 'make clean'. This causes
Julian Seward [Tue, 26 Jul 2005 10:10:25 +0000 (10:10 +0000)] 
Don't delete vex_svnversion.h during 'make clean'.  This causes
breakage if someone builds from the final V tarball, then does 'make
clean', then re-runs make -- because creating this file requires (1)
svnversion to be present on the end-user system, which it probably
isn't, and (2) the metadata which svnversion consults also to be
present here, which it certainly isn't [in the cut-down VEX image in
the distro tarball.]

git-svn-id: svn://svn.valgrind.org/vex/trunk@1300

20 years agoImplement a couple of missing x87 insns.
Julian Seward [Mon, 25 Jul 2005 11:58:34 +0000 (11:58 +0000)] 
Implement a couple of missing x87 insns.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1299

20 years agoUpdate always-defined areas.
Julian Seward [Sun, 24 Jul 2005 06:29:34 +0000 (06:29 +0000)] 
Update always-defined areas.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1298

20 years agoMore isel cases.
Julian Seward [Sun, 24 Jul 2005 06:29:00 +0000 (06:29 +0000)] 
More isel cases.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1297

20 years agoSome of the ppc32 front end stuff generates huge amounts of IR and
Julian Seward [Sat, 23 Jul 2005 20:34:51 +0000 (20:34 +0000)] 
Some of the ppc32 front end stuff generates huge amounts of IR and
more space is needed.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1296

20 years agoReenable an ADC variant.
Julian Seward [Sat, 23 Jul 2005 17:37:03 +0000 (17:37 +0000)] 
Reenable an ADC variant.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1295

20 years agoImplement ADC Ib, AL.
Julian Seward [Sat, 23 Jul 2005 13:50:32 +0000 (13:50 +0000)] 
Implement ADC Ib, AL.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1294

20 years agoEnable RCR tests.
Julian Seward [Sat, 23 Jul 2005 13:28:05 +0000 (13:28 +0000)] 
Enable RCR tests.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1293

20 years agoAn appallingly inefficient, but correct, implementation of rcr. On
Julian Seward [Sat, 23 Jul 2005 13:19:32 +0000 (13:19 +0000)] 
An appallingly inefficient, but correct, implementation of rcr.  On
x86, rcr is a dog.  On amd64 it is a mangy dog with fleas on.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1292

20 years agoImplement bswapq %reg. Generates pretty verbose code, but it works.
Julian Seward [Sat, 23 Jul 2005 12:07:37 +0000 (12:07 +0000)] 
Implement bswapq %reg.  Generates pretty verbose code, but it works.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1291

20 years agoPartially successful effort to get FP working again.
Julian Seward [Fri, 22 Jul 2005 09:39:02 +0000 (09:39 +0000)] 
Partially successful effort to get FP working again.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1290

20 years agoFix signedness of immediate.
Julian Seward [Fri, 22 Jul 2005 09:38:21 +0000 (09:38 +0000)] 
Fix signedness of immediate.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1289

20 years agoReinstate rlwnm and change ROTL32 back to what it looked like before I
Julian Seward [Thu, 21 Jul 2005 21:33:57 +0000 (21:33 +0000)] 
Reinstate rlwnm and change ROTL32 back to what it looked like before I
messed it up :-)

git-svn-id: svn://svn.valgrind.org/vex/trunk@1288

20 years agoFix XER.OV computation after multiply.
Julian Seward [Thu, 21 Jul 2005 17:07:18 +0000 (17:07 +0000)] 
Fix XER.OV computation after multiply.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1287

20 years agoFix very stupid bug in my mtxer implementation. The relevant IRStmts
Julian Seward [Thu, 21 Jul 2005 16:58:55 +0000 (16:58 +0000)] 
Fix very stupid bug in my mtxer implementation.  The relevant IRStmts
would work better (viz, at all :-) if they were added to the IR code
list after being created, instead of merely being dropped down the
back of the fridge.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1286

20 years agoDo all ppc32 flag calculations in-line, partly for performance reasons
Julian Seward [Thu, 21 Jul 2005 14:48:31 +0000 (14:48 +0000)] 
Do all ppc32 flag calculations in-line, partly for performance reasons
and partly to try and avoid confusing memcheck so much.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1285

20 years agoImplement STC/CLC/CMC, and take the opportunity to make PUSHFL work a
Julian Seward [Thu, 21 Jul 2005 10:07:13 +0000 (10:07 +0000)] 
Implement STC/CLC/CMC, and take the opportunity to make PUSHFL work a
bit more like how the hardware does.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1284

20 years agoImplement SBB Ev,Gv.
Julian Seward [Wed, 20 Jul 2005 10:55:26 +0000 (10:55 +0000)] 
Implement SBB Ev,Gv.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1283

20 years agoImplement LOOP disp8 (0xE2).
Julian Seward [Wed, 20 Jul 2005 10:15:34 +0000 (10:15 +0000)] 
Implement LOOP disp8 (0xE2).

git-svn-id: svn://svn.valgrind.org/vex/trunk@1282

20 years agoImplement F3 90 (rep nop).
Julian Seward [Wed, 20 Jul 2005 09:23:13 +0000 (09:23 +0000)] 
Implement F3 90 (rep nop).

git-svn-id: svn://svn.valgrind.org/vex/trunk@1281

20 years agoSpecialise NZ after ANDL/ORL/XORL. This fixes #109314.
Julian Seward [Wed, 20 Jul 2005 01:12:48 +0000 (01:12 +0000)] 
Specialise NZ after ANDL/ORL/XORL.  This fixes #109314.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1280

20 years agoAdd some specialisation rules which are ultimately helpful in reduce
Julian Seward [Wed, 20 Jul 2005 00:30:37 +0000 (00:30 +0000)] 
Add some specialisation rules which are ultimately helpful in reduce
memcheck's false-error rate on inlined strlen and related nasties.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1279

20 years agoMake ADC Ev,Gv work.
Julian Seward [Tue, 19 Jul 2005 23:59:54 +0000 (23:59 +0000)] 
Make ADC Ev,Gv work.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1278

20 years agoiselCondCode: handle literals.
Julian Seward [Tue, 19 Jul 2005 08:42:56 +0000 (08:42 +0000)] 
iselCondCode: handle literals.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1277

20 years agoAdd a folding rule for 1Sto16.
Julian Seward [Mon, 18 Jul 2005 13:58:49 +0000 (13:58 +0000)] 
Add a folding rule for 1Sto16.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1276

20 years agoHandle 0 :: Ity_I1 as well as 1 :: Ity_I1.
Julian Seward [Mon, 18 Jul 2005 13:54:49 +0000 (13:54 +0000)] 
Handle 0 :: Ity_I1 as well as 1 :: Ity_I1.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1275

20 years agoFix up linking/relocation a bit, and track API changes in r1272.
Julian Seward [Mon, 18 Jul 2005 11:39:47 +0000 (11:39 +0000)] 
Fix up linking/relocation a bit, and track API changes in r1272.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1274

20 years agoTrack API changes in r1272.
Julian Seward [Mon, 18 Jul 2005 11:38:58 +0000 (11:38 +0000)] 
Track API changes in r1272.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1273

20 years agoSome changes to the ppc32 compilation pipeline, with two aims:
Julian Seward [Mon, 18 Jul 2005 11:38:02 +0000 (11:38 +0000)] 
Some changes to the ppc32 compilation pipeline, with two aims:

* to achieve code quality comparable with x86/amd64 pipelines

* to make the value flow clearer to memcheck, in the hope of
  reducing the very high false error rate it gives on ppc

Code quality is substantially improved, but the error rate is just as
high as it was before.  Needs investigation.

Many instructions are now commented out -- mostly they just need
commenting back in.  Simple integer programs (date, ls, xfontsel)
work.

Front end changes
~~~~~~~~~~~~~~~~
Change the way CR and XER are represented, and hence redo the way
integer comparisons and conditional branches work:

* Introduce a two new IR primops CmpORD32S and CmpORD32U; these do
  ppc-style 3-way comparisons (<, >, ==).  It's hard to simulate ppc
  efficiently without them.  Use these to implement integer compares.

* Get rid of all thunks for condition codes -- CR and XER state
  is always up to date now.

* Split XER into four fields and CR into 16 fields, so that
  their various components can be accessed directly without
  endless shifting and masking.  Created suitable impedance
  matching functions to read/write XER and CR as a whole.

* Use hardware BI numbering throughout.

Back end changes
~~~~~~~~~~~~~~~
* Simplify condition code handling and use hardware BI numbering
  throughout

* Reduce the number of instruction kinds by merging integer subtracts
  and shifts into PPC32Instr_Alu32.  Use rlwimi to do Shl/Shr by
  immediate.

* Create a copy of PPC32RI (reg-or-imm) called PPC32RH
  (reg-or-halfword-imm), and give the latter a flag indicating whether
  the imm is regarded as signed or not.  Use PPC32RH in most places
  where PPC32RI was used before.

* Add instruction selection functions to compute a value into a
  PPC32RI, a PPC32RH of specified signedness, and a PPC32RH variant in
  which the immediate is unsigned and in the range 1 .. 31 inclusive
  (used for shifts-by-immediate).

* Simplify PPC32Instr_MulL; all 3 operands are now simply registers.

* Add a new (fake) insn PPC32Instr_LI32 to get arbitrary 32-bit
  immediates into int registers; this hides all the ugly li vs lis/ori
  details.

* Handle CmpORD32{S,U}.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1272

20 years agoFix build breakage.
Julian Seward [Thu, 14 Jul 2005 07:00:06 +0000 (07:00 +0000)] 
Fix build breakage.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1271

20 years agoImplement 8-byte-transfer cases for lwsi and stswi.
Julian Seward [Fri, 8 Jul 2005 21:55:22 +0000 (21:55 +0000)] 
Implement 8-byte-transfer cases for lwsi and stswi.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1270

20 years agoAdded LibVEX_GuestPPC32_put_cr7(), LibVEX_GuestPPC32_put_cr()
Cerion Armour-Brown [Fri, 8 Jul 2005 13:34:47 +0000 (13:34 +0000)] 
Added LibVEX_GuestPPC32_put_cr7(), LibVEX_GuestPPC32_put_cr()

git-svn-id: svn://svn.valgrind.org/vex/trunk@1269

20 years agoAdded LibVEX_GuestPPC32_get_cr() for easy access to entire cond reg
Cerion Armour-Brown [Fri, 8 Jul 2005 13:10:35 +0000 (13:10 +0000)] 
Added LibVEX_GuestPPC32_get_cr() for easy access to entire cond reg
Filled in some missing defaults in LibVEX_GuestPPC32_initialise()

git-svn-id: svn://svn.valgrind.org/vex/trunk@1268

20 years agoMy life is one endless stream of small things which don't quite work.
Julian Seward [Thu, 7 Jul 2005 14:15:35 +0000 (14:15 +0000)] 
My life is one endless stream of small things which don't quite work.
This time it's gcc giving us an instruction with REX.W redundantly set
to 1.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1267

20 years agoComment-only-change: record subtle interactions between self-checks
Julian Seward [Thu, 7 Jul 2005 13:52:03 +0000 (13:52 +0000)] 
Comment-only-change: record subtle interactions between self-checks
and bb chasing.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1266

20 years agoFix bits and pieces needed to make self-checking-translations work
Julian Seward [Thu, 7 Jul 2005 13:12:04 +0000 (13:12 +0000)] 
Fix bits and pieces needed to make self-checking-translations work
on amd64.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1265

20 years agoTidy up some loose ends in the self-checking-translations machinery,
Julian Seward [Thu, 7 Jul 2005 12:26:36 +0000 (12:26 +0000)] 
Tidy up some loose ends in the self-checking-translations machinery,
and unroll the adler32 loop in a not-very-successful attempt to reduce
the overhead of checking.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1264

20 years agoMake LibVEX_Translate (an API fn) take a Bool indicating whether or
Julian Seward [Thu, 7 Jul 2005 09:56:24 +0000 (09:56 +0000)] 
Make LibVEX_Translate (an API fn) take a Bool indicating whether or
not a self-checking translation has been requested.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1263

20 years agoBasic support for self-checking translations. It fits quite neatly
Julian Seward [Thu, 7 Jul 2005 01:32:16 +0000 (01:32 +0000)] 
Basic support for self-checking translations.  It fits quite neatly
into the IR: if a translation self-check fails, the translation exits
passing VEX_TRC_JMP_TINVAL to the despatcher and with the
guest_TISTART/guest_TILEN pseudo-registers indicating what area of the
guest code needs to be invalidated.  The actual checksumming is done
by a helper function which does (a variant of) the Adler32 checksum.

Space/time overhead, whilst substantial, looks tolerable.  There's a
little room for optimisation of the basic scheme.  It would certainly
be viable to run with self-checking for all translations to support
Valgrinding JITs (including V itself) without any assistance from the
JIT.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1262

20 years agoKeep older versions of gcc (3.0.4) happy.
Julian Seward [Tue, 5 Jul 2005 23:54:16 +0000 (23:54 +0000)] 
Keep older versions of gcc (3.0.4) happy.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1261

20 years ago... and fix the fix (oh for clear documentation...)
Cerion Armour-Brown [Mon, 4 Jul 2005 12:16:56 +0000 (12:16 +0000)] 
... and fix the fix (oh for clear documentation...)

git-svn-id: svn://svn.valgrind.org/vex/trunk@1260

20 years agofixed load-mult-word bad-insn-check bug
Cerion Armour-Brown [Mon, 4 Jul 2005 11:56:13 +0000 (11:56 +0000)] 
fixed load-mult-word bad-insn-check bug

git-svn-id: svn://svn.valgrind.org/vex/trunk@1259

20 years agoWhat is it with me add and's!
Cerion Armour-Brown [Mon, 4 Jul 2005 11:47:44 +0000 (11:47 +0000)] 
What is it with me add and's!

git-svn-id: svn://svn.valgrind.org/vex/trunk@1258

20 years agoBringing back load/store multiple word. *These insns not yet checked*
Cerion Armour-Brown [Mon, 4 Jul 2005 11:11:59 +0000 (11:11 +0000)] 
Bringing back load/store multiple word.  *These insns not yet checked*

git-svn-id: svn://svn.valgrind.org/vex/trunk@1257

20 years agoImplement fcmovu/fcmovnu. gcc-4.0.1 -msse2 -ftree-vectorize generates them.
Julian Seward [Mon, 4 Jul 2005 10:26:32 +0000 (10:26 +0000)] 
Implement fcmovu/fcmovnu.  gcc-4.0.1 -msse2 -ftree-vectorize generates them.

git-svn-id: svn://svn.valgrind.org/vex/trunk@1256