]>
git.ipfire.org Git - thirdparty/valgrind.git/log
Cerion Armour-Brown [Wed, 14 Sep 2005 20:35:47 +0000 (20:35 +0000)]
more altivec insns: vsr, vspltw
- only working with with --tool=none
back-end:
hdefs:
new type for PPC32Instr_AvSplat:
PPC32VI5s => {vector-reg | signed-5bit-imm}
fixed ShlV128, ShrV128 to shift the full 128bits
isel:
implemented Iop_Dup32x4, Iop_ShrV128
new function mk_AvDuplicateRI()
- takes in ri_src (imm|reg, latter of type 8|16|32)
returns vector reg of duplicated lanes of ri_src
avoids store/load for immediates up to simm6.
git-svn-id: svn://svn.valgrind.org/vex/trunk@1392
Cerion Armour-Brown [Tue, 13 Sep 2005 18:41:09 +0000 (18:41 +0000)]
implemented guest-ppc32 lvsl, lvsr using dirty helper function
git-svn-id: svn://svn.valgrind.org/vex/trunk@1391
Cerion Armour-Brown [Tue, 13 Sep 2005 17:25:41 +0000 (17:25 +0000)]
yet another new IR primop: Iop_QNarrow32Ux4
git-svn-id: svn://svn.valgrind.org/vex/trunk@1390
Cerion Armour-Brown [Tue, 13 Sep 2005 16:34:28 +0000 (16:34 +0000)]
Added a number of new IR primops to support integer AltiVec insns
git-svn-id: svn://svn.valgrind.org/vex/trunk@1389
Cerion Armour-Brown [Tue, 13 Sep 2005 13:34:09 +0000 (13:34 +0000)]
a couple more simple altivec insns
- vandc, vnor, vsel
git-svn-id: svn://svn.valgrind.org/vex/trunk@1388
Cerion Armour-Brown [Mon, 12 Sep 2005 22:51:53 +0000 (22:51 +0000)]
ppc guest_state vector regs must be 16byte aligned for loads/stores
git-svn-id: svn://svn.valgrind.org/vex/trunk@1387
Cerion Armour-Brown [Mon, 12 Sep 2005 20:49:09 +0000 (20:49 +0000)]
front end:
- implemented insns: mfvscr, mtvscr, vand, vor, vxor
- fixed default vscr: enable non-java mode
back end:
- implemented enough to satisfy the front end: V128to32, 32UtoV128, not, and, or, xor
- fixed conversions to/from v128 to use quad-word-aligned stack addressing for their vector load/stores
git-svn-id: svn://svn.valgrind.org/vex/trunk@1386
Cerion Armour-Brown [Sat, 10 Sep 2005 12:02:24 +0000 (12:02 +0000)]
reinstated altivec insn disassembly framework
- no more insns implemented, just easier to see what insn is needed when we hit an unhandled insn.
git-svn-id: svn://svn.valgrind.org/vex/trunk@1385
Julian Seward [Fri, 9 Sep 2005 22:31:49 +0000 (22:31 +0000)]
Typechecker cleanups (non-functional changes)
git-svn-id: svn://svn.valgrind.org/vex/trunk@1384
Julian Seward [Fri, 9 Sep 2005 19:45:36 +0000 (19:45 +0000)]
iselInt64Expr: handle 64-bit Mux0X.
git-svn-id: svn://svn.valgrind.org/vex/trunk@1383
Julian Seward [Fri, 9 Sep 2005 19:45:02 +0000 (19:45 +0000)]
Fix mcrxr.
git-svn-id: svn://svn.valgrind.org/vex/trunk@1382
Cerion Armour-Brown [Fri, 9 Sep 2005 16:38:19 +0000 (16:38 +0000)]
reinstate lhau, lhaux, sthux, mcrxr
git-svn-id: svn://svn.valgrind.org/vex/trunk@1381
Cerion Armour-Brown [Fri, 9 Sep 2005 16:31:24 +0000 (16:31 +0000)]
implemented Iop_64HLtoV128 in iselVecExpr_wrk
git-svn-id: svn://svn.valgrind.org/vex/trunk@1380
Julian Seward [Fri, 9 Sep 2005 10:36:55 +0000 (10:36 +0000)]
Reinstate stfdux, fctiw.
git-svn-id: svn://svn.valgrind.org/vex/trunk@1379
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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