]> git.ipfire.org Git - thirdparty/valgrind.git/log
thirdparty/valgrind.git
19 years agoppc64: handle 32HLto64, 64HLtoV128
Cerion Armour-Brown [Mon, 2 Jan 2006 12:28:17 +0000 (12:28 +0000)] 
ppc64: handle 32HLto64, 64HLtoV128

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

19 years agoppc64: handle V128to64, V128HIto64.
Julian Seward [Mon, 2 Jan 2006 00:35:24 +0000 (00:35 +0000)] 
ppc64: handle V128to64, V128HIto64.

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

19 years agox86 counterpart to r1521: For SSE scalar comparison operations where
Julian Seward [Sun, 1 Jan 2006 17:15:19 +0000 (17:15 +0000)] 
x86 counterpart to r1521: For SSE scalar comparison operations where
one operand is in memory, do not read more memory than needed.

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

19 years agoFor SSE scalar comparison operations where one operand is in memory,
Julian Seward [Sun, 1 Jan 2006 13:17:38 +0000 (13:17 +0000)] 
For SSE scalar comparison operations where one operand is in memory,
do not read more memory than needed.

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

19 years agoApparently "sync" has an undocumented relative called "lwsync". Sigh.
Julian Seward [Fri, 30 Dec 2005 15:04:29 +0000 (15:04 +0000)] 
Apparently "sync" has an undocumented relative called "lwsync".  Sigh.

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

19 years agoHandle dcbz in 64-bit mode.
Julian Seward [Fri, 30 Dec 2005 03:39:14 +0000 (03:39 +0000)] 
Handle dcbz in 64-bit mode.

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

19 years agoPerformance improvements for flag handling.
Julian Seward [Mon, 26 Dec 2005 19:33:55 +0000 (19:33 +0000)] 
Performance improvements for flag handling.

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

19 years agoComment-only fix
Julian Seward [Mon, 26 Dec 2005 19:33:24 +0000 (19:33 +0000)] 
Comment-only fix

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

19 years agoComment only changes - misc refs to ppc32 changed to ppc.
Cerion Armour-Brown [Sat, 24 Dec 2005 13:14:11 +0000 (13:14 +0000)] 
Comment only changes - misc refs to ppc32 changed to ppc.

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

19 years agoPut mode64 in ISelEnv, removing global variable.
Cerion Armour-Brown [Sat, 24 Dec 2005 12:39:47 +0000 (12:39 +0000)] 
Put mode64 in ISelEnv, removing global variable.

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

19 years agoFix AltiVec load/store on ppc64 - was only considering lo32 bits of address.
Cerion Armour-Brown [Sat, 24 Dec 2005 12:32:10 +0000 (12:32 +0000)] 
Fix AltiVec load/store on ppc64 - was only considering lo32 bits of address.

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

19 years agoHandle 64HLto128 in 64-bit mode.
Julian Seward [Fri, 23 Dec 2005 12:46:16 +0000 (12:46 +0000)] 
Handle 64HLto128 in 64-bit mode.

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

19 years agorenamed VEX dirs guest-ppc32/ -> guest-ppc/, host-ppc32/ -> host-ppc/
Cerion Armour-Brown [Fri, 23 Dec 2005 11:43:01 +0000 (11:43 +0000)] 
renamed VEX dirs guest-ppc32/ -> guest-ppc/, host-ppc32/ -> host-ppc/
and adjusted all references to them

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

19 years agoUpdate comment.
Julian Seward [Fri, 23 Dec 2005 01:48:23 +0000 (01:48 +0000)] 
Update comment.

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

19 years agoDeal with backend case of 1Sto64
Cerion Armour-Brown [Fri, 23 Dec 2005 01:06:35 +0000 (01:06 +0000)] 
Deal with backend case of 1Sto64

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

19 years agoChanged naming convention from 'PPC32' to 'PPC' for all VEX code common to both PPC32...
Cerion Armour-Brown [Fri, 23 Dec 2005 00:55:09 +0000 (00:55 +0000)] 
Changed naming convention from 'PPC32' to 'PPC' for all VEX code common to both PPC32 and PPC64.
And tidied up a fair bit while i was at it.

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

19 years agoImplemented almost all of the remaining 64bit-mode insns.
Cerion Armour-Brown [Thu, 22 Dec 2005 14:32:35 +0000 (14:32 +0000)] 
Implemented almost all of the remaining 64bit-mode insns.

Currently:
Not yet implemented: td(i)
Implemented, not tested: ldarx, stdcx.

All common-mode int & fp insns in 64bit-mode tested.
Altivec insns in 64bit-mode still to be tested.

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

19 years agosmall fixes for ppc64 layout stuff
Julian Seward [Thu, 22 Dec 2005 03:01:17 +0000 (03:01 +0000)] 
small fixes for ppc64 layout stuff

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

19 years agoStrict-aliasing fix needed to make gcc-4.1.0 happy.
Julian Seward [Sun, 18 Dec 2005 03:07:11 +0000 (03:07 +0000)] 
Strict-aliasing fix needed to make gcc-4.1.0 happy.

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

19 years agoFix typos.
Cerion Armour-Brown [Sat, 17 Dec 2005 11:28:53 +0000 (11:28 +0000)] 
Fix typos.

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

19 years agoFix switchback.c to reflect changes to call of LibVEX_Translate()
Cerion Armour-Brown [Fri, 16 Dec 2005 13:49:00 +0000 (13:49 +0000)] 
Fix switchback.c to reflect changes to call of LibVEX_Translate()
Fix test_ppc_jm1.c to reflect direct linking
 - main -> __main etc
 - vex_printf -> vexxx_printf etc

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

19 years agoFixed up front and backend for 32bit mul,div,cmp,shift in mode64
Cerion Armour-Brown [Fri, 16 Dec 2005 13:40:18 +0000 (13:40 +0000)] 
Fixed up front and backend for 32bit mul,div,cmp,shift in mode64
Backend:
 - separated shifts from other alu ops
 - gave {shift, mul, div, cmp} ops a bool to indicate 32|64bit insn
 - fixed and implemented more mode64 cases

Also improved some IR by moving imm's to right arg of binop - backend assumes this.

All integer ppc32 insns now pass switchback tests in 64bit mode.
(ppc64-only insns not yet fully tested)

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

19 years agoppc32/64 backend: take r29 out of circulation so the Valgrind
Julian Seward [Fri, 16 Dec 2005 01:06:42 +0000 (01:06 +0000)] 
ppc32/64 backend: take r29 out of circulation so the Valgrind
dispatcher can use it.

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

19 years agoMake suitable changes for ppc32/ppc64 following recent x86/amd64
Julian Seward [Thu, 15 Dec 2005 21:33:50 +0000 (21:33 +0000)] 
Make suitable changes for ppc32/ppc64 following recent x86/amd64
dispatch changes.  Note, this doesn't change the generated code at
all.

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

19 years agoModify amd64 backend to use jump-jump scheme rather than call-return
Julian Seward [Thu, 15 Dec 2005 15:45:20 +0000 (15:45 +0000)] 
Modify amd64 backend to use jump-jump scheme rather than call-return
scheme.

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

19 years ago- x86 back end: change code generation convention, so that instead of
Julian Seward [Thu, 15 Dec 2005 14:02:34 +0000 (14:02 +0000)] 
- x86 back end: change code generation convention, so that instead of
  dispatchers CALLing generated code which later RETs, dispatchers
  jump to generated code and it jumps back to the dispatcher.  This
  removes two memory references per translation run and by itself
  gives a measureable performance improvement on P4.  As a result,
  there is new plumbing so that the caller of LibVEX_Translate can
  supply the address of the dispatcher to jump back to.

  This probably breaks all other targets.  Do not update.

- Administrative cleanup: LibVEX_Translate has an excessive
  number of arguments.  Remove them all and instead add a struct
  by which the arguments are supplied.  Add further comments
  about the meaning of some fields.

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

19 years agoStop gcc complaining.
Julian Seward [Thu, 15 Dec 2005 13:58:07 +0000 (13:58 +0000)] 
Stop gcc complaining.

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

19 years agoEnable fsqrt
Cerion Armour-Brown [Wed, 14 Dec 2005 22:00:53 +0000 (22:00 +0000)] 
Enable fsqrt
Document store fp single-precision problem

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

19 years agoMore svn:ignores for VEX.
Cerion Armour-Brown [Wed, 14 Dec 2005 10:22:25 +0000 (10:22 +0000)] 
More svn:ignores for VEX.

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

19 years agoSwitchbacker updates
Cerion Armour-Brown [Tue, 13 Dec 2005 21:30:48 +0000 (21:30 +0000)] 
Switchbacker updates
 - no longer using home-grown linker - simply compiling and linking switchback.c with test_xxx.c
 - updated to handle ppc64 (along with it's weirdo function descriptors...)
 - have to be careful not to use exported functions from libvex_arch_linux.a, hence vex_printf -> vexxx_printf in test_xxx.c

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

19 years agoFix vex_printf padding.
Cerion Armour-Brown [Tue, 13 Dec 2005 20:23:36 +0000 (20:23 +0000)] 
Fix vex_printf padding.

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

19 years agoImplemented backend for ppc64, sharing ppc32 backend.
Cerion Armour-Brown [Tue, 13 Dec 2005 20:21:11 +0000 (20:21 +0000)] 
Implemented backend for ppc64, sharing ppc32 backend.
 - all immediates now use ULongs
 - some change in register usage conventions

Implemented most insns for mode64, plus most ppc64-only instructions
 - new Iop_DivU/S64

Fixed couple of bugs in backend:
 - iselIntExpr_RI must sign-extend immediates
 - hdefs.c::Iop_Mul16/32: set syned = False

Currently runs several test programs succesfully via the switchbacker (bzip, emfloat), but still dies with real progs.

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

19 years agoAdded 'Bool mode64' to the various backend functions, to distinguish 32/64bit arch's.
Cerion Armour-Brown [Tue, 13 Dec 2005 12:02:26 +0000 (12:02 +0000)] 
Added 'Bool mode64' to the various backend functions, to distinguish 32/64bit arch's.
This will be needed for the ppc32/64 backend.

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

19 years agofix padding for VexGuestPPC64State
Cerion Armour-Brown [Tue, 6 Dec 2005 19:11:02 +0000 (19:11 +0000)] 
fix padding for VexGuestPPC64State

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

19 years agoRe-enabled ppc32 frontend floating point load/store single precision insns:
Cerion Armour-Brown [Fri, 2 Dec 2005 16:03:46 +0000 (16:03 +0000)] 
Re-enabled ppc32 frontend floating point load/store single precision insns:
 - lfsu, stfsu, stfsux

Note: fp store single precision insns are being rounded twice, giving a loss of precision... this needs some thinking to solve properly...

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

19 years agoFixed a couple of mode32 bugs introduced by mode64
Cerion Armour-Brown [Wed, 30 Nov 2005 19:55:22 +0000 (19:55 +0000)] 
Fixed a couple of mode32 bugs introduced by mode64
Adapted more code to handle mode64
New irops: Iop_CmpORD64S/U

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

19 years agoFix %lr handling for bcctr and bclr.
Julian Seward [Tue, 29 Nov 2005 18:19:11 +0000 (18:19 +0000)] 
Fix %lr handling for bcctr and bclr.

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

19 years agoSet mode64 from the given guest subarch.
Julian Seward [Tue, 29 Nov 2005 14:47:04 +0000 (14:47 +0000)] 
Set mode64 from the given guest subarch.

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

19 years agoMissed this in commit of vex: r1475 (ppc64 first pass)
Cerion Armour-Brown [Tue, 29 Nov 2005 13:48:52 +0000 (13:48 +0000)] 
Missed this in commit of vex: r1475 (ppc64 first pass)

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

19 years agoFirst pass at VEX support of ppc64.
Cerion Armour-Brown [Tue, 29 Nov 2005 13:27:20 +0000 (13:27 +0000)] 
First pass at VEX support of ppc64.

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

19 years agoModify the tree builder to use a fixed-size binding environment rather
Julian Seward [Mon, 28 Nov 2005 13:39:37 +0000 (13:39 +0000)] 
Modify the tree builder to use a fixed-size binding environment rather
than one that is potentially proportional to the length of the input
BB.  This changes its complexity from quadratic to linear (in the
length of the BB) and gives a noticable increase in the overall speed
of vex.  The tradeoff is that it can no longer guarantee to build
maximal trees, but in practice in only rarely fails to do so (about 1
in 100 bbs) and so the resulting degradation in code quality is
completely insignificant (unmeasurable).

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

19 years ago3rd go at making args match format string.
Julian Seward [Mon, 28 Nov 2005 13:34:19 +0000 (13:34 +0000)] 
3rd go at making args match format string.

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

19 years ago64-bit format string fix
Julian Seward [Fri, 25 Nov 2005 04:28:46 +0000 (04:28 +0000)] 
64-bit format string fix

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

19 years agoBe paranoid about the alignment of the storage arrays.
Julian Seward [Fri, 25 Nov 2005 02:47:00 +0000 (02:47 +0000)] 
Be paranoid about the alignment of the storage arrays.

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

19 years agoUse a very fast in-line allocator. This improves its performance by
Julian Seward [Wed, 23 Nov 2005 04:25:07 +0000 (04:25 +0000)] 
Use a very fast in-line allocator.  This improves its performance by
up to 10% on a P4.

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

19 years agoCompile vex at -O2. This improves its performance by about 15%
Julian Seward [Wed, 23 Nov 2005 03:54:48 +0000 (03:54 +0000)] 
Compile vex at -O2.  This improves its performance by about 15%
on a PIII running SuSE 10 (gcc 4.0.2).

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

19 years agoDo float-to-bit-image conversion in a way which does not break ANSI C
Julian Seward [Wed, 23 Nov 2005 03:53:45 +0000 (03:53 +0000)] 
Do float-to-bit-image conversion in a way which does not break ANSI C
aliasing rules.

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

19 years agogcc-2.96 build fixes
Julian Seward [Fri, 18 Nov 2005 22:18:23 +0000 (22:18 +0000)] 
gcc-2.96 build fixes

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

19 years agoCleaned up access to 'special purpose' registers.
Cerion Armour-Brown [Fri, 18 Nov 2005 20:57:41 +0000 (20:57 +0000)] 
Cleaned up access to 'special purpose' registers.

Added todo/limitations comments for AltiVec.

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

19 years agoTrack valgrind r5196, wrt Non-Java mode
Cerion Armour-Brown [Fri, 18 Nov 2005 20:45:51 +0000 (20:45 +0000)] 
Track valgrind r5196, wrt Non-Java mode

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

19 years agoCleaned up toIR.c somewhat
Cerion Armour-Brown [Fri, 18 Nov 2005 18:25:12 +0000 (18:25 +0000)] 
Cleaned up toIR.c somewhat
 - cleaner extraction of instruction fields, consistent variable names, spaces for tabs, comments++

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

19 years agoImplemented most of the remaining altivec fp ops:
Cerion Armour-Brown [Wed, 16 Nov 2005 18:02:58 +0000 (18:02 +0000)] 
Implemented most of the remaining altivec fp ops:
rounds (vrfi*), converts (vctu/sxs, vcfu/sx)

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

19 years agoYet more irops, for fp vector conversion/rounding.
Cerion Armour-Brown [Wed, 16 Nov 2005 17:21:10 +0000 (17:21 +0000)] 
Yet more irops, for fp vector conversion/rounding.

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

19 years agoImplement SSE2 'clflush'.
Julian Seward [Tue, 15 Nov 2005 11:16:30 +0000 (11:16 +0000)] 
Implement SSE2 'clflush'.

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

19 years agodelete unused multiply primops
Julian Seward [Tue, 15 Nov 2005 10:21:19 +0000 (10:21 +0000)] 
delete unused multiply primops

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

19 years agogcc4 picked up a typo.
Cerion Armour-Brown [Mon, 14 Nov 2005 03:32:23 +0000 (03:32 +0000)] 
gcc4 picked up a typo.

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

19 years agoMore av insns: vmaddfp, vnmsubfp
Cerion Armour-Brown [Mon, 14 Nov 2005 02:37:44 +0000 (02:37 +0000)] 
More av insns: vmaddfp, vnmsubfp

Rough 'n ready IR used - results will be rounded along the way, not just at the end of the calculations, giving some error.

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

19 years agoFrontend
Cerion Armour-Brown [Mon, 14 Nov 2005 00:44:47 +0000 (00:44 +0000)] 
Frontend
--------
Added a bunch of altivec float insns:
vaddfp, vsubfp, vmaxfp, vminfp,
vrefp, vrsqrtefp
vcmpgefp, vcmpgtfp, vcmpbfp

Made use of fact that ppc backend for compare insns return
zero'd lanes if either of the corresponding args is a nan.
 - perhaps better to have an irop Iop_isNan32Fx4, but seems unecessary work until we get into running non-native code through vex.
 - better still, tighten down the spec for compare irops wrt nan

Backend
-------
Separated av float ops to own insn group - they're only ever type 32x4
Added av float unary insns
Added av float cmp insns - for irops that don't map directly to native insns, native behaviour wrt nan's is followed, requiring lane value==nan comparisons for each argument vector.

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

19 years agoNew irops: Iop_CmpGT32Fx4, Iop_CmpGE32Fx4
Cerion Armour-Brown [Mon, 14 Nov 2005 00:35:59 +0000 (00:35 +0000)] 
New irops: Iop_CmpGT32Fx4, Iop_CmpGE32Fx4

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

19 years agoMore profiling-induced speedups.
Julian Seward [Sun, 13 Nov 2005 20:30:24 +0000 (20:30 +0000)] 
More profiling-induced speedups.

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

19 years agoAdd some flag-specialisation cases that profiling showed the need for.
Julian Seward [Sun, 13 Nov 2005 19:51:04 +0000 (19:51 +0000)] 
Add some flag-specialisation cases that profiling showed the need for.

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

19 years agoRevise the PPC32 subarchitecture kinds, so as to facilitated
Julian Seward [Sun, 13 Nov 2005 00:53:05 +0000 (00:53 +0000)] 
Revise the PPC32 subarchitecture kinds, so as to facilitated
supporting CPUs that have neither Altivec nor FPU.

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

19 years agoAlways mark blrl as a return.
Julian Seward [Sat, 12 Nov 2005 12:56:31 +0000 (12:56 +0000)] 
Always mark blrl as a return.

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

19 years agoAdd "make -j N" kludge to Vex too.
Julian Seward [Fri, 11 Nov 2005 18:37:10 +0000 (18:37 +0000)] 
Add "make -j N" kludge to Vex too.

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

19 years agoHandle instrumentation artefacts arising from memchecking Altivec
Julian Seward [Thu, 10 Nov 2005 18:10:58 +0000 (18:10 +0000)] 
Handle instrumentation artefacts arising from memchecking Altivec
code.  Also, rename a few primops and add another folding rule.

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

19 years agoFix usage of Iop_MullEven* to give IR correct meaning of which lanes being multiplied...
Cerion Armour-Brown [Wed, 9 Nov 2005 21:34:20 +0000 (21:34 +0000)] 
Fix usage of Iop_MullEven* to give IR correct meaning of which lanes being multiplied, i.e. lowest significant lane = zero
(rather than the ibm-speke 'most significant = zero')

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

19 years agoFrontend:
Cerion Armour-Brown [Tue, 8 Nov 2005 16:23:07 +0000 (16:23 +0000)] 
Frontend:
 added remaining integer altivec insns (phew!)
  - vsum4ubs, vsum4sbs, vsum4shs, vsum2sws, vsumsws
  - vmsummbm, vmsumuhs, vmsumshs

 various helpers to construct IR
  - expand8x16*:      sign/zero-extend V128_8x16 lanes => 2x V128_16x8
  - breakV128to4x64*: break V128 to 4xI32's, sign/zero-extend to I64's
  - mkQNarrow64to32*: un/signed saturating narrow 64 to 32
  - mkV128from4x64*:  narrow 4xI64's to 4xI32's, combine to V128_34x4

Backend:
 Iop_Add64
   - added PPC32Instr_AddSubC32: 32-bit add/sub read/write carry
 64-bit Iex_Const
 Iop_32Sto64

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

19 years agoDon't delete existing target-specific .a's when a target-switch happens.
Julian Seward [Mon, 7 Nov 2005 15:37:24 +0000 (15:37 +0000)] 
Don't delete existing target-specific .a's when a target-switch happens.

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

19 years agoChanges for biarch (x86 and amd64) support.
Julian Seward [Mon, 7 Nov 2005 14:59:13 +0000 (14:59 +0000)] 
Changes for biarch (x86 and amd64) support.

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

19 years agoHandle some SSE3 instructions. A curious side-effect of this is that
Julian Seward [Mon, 7 Nov 2005 14:23:52 +0000 (14:23 +0000)] 
Handle some SSE3 instructions.  A curious side-effect of this is that
it makes it possible to run SSE3 code on an SSE2-only machine.

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

19 years agoSimulate complete LDT and GDT, rather than just a prefix thereof.
Julian Seward [Sat, 5 Nov 2005 15:46:22 +0000 (15:46 +0000)] 
Simulate complete LDT and GDT, rather than just a prefix thereof.

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

19 years agoformat string wibble
Julian Seward [Sat, 5 Nov 2005 13:04:34 +0000 (13:04 +0000)] 
format string wibble

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

19 years agoStop gcc4 complaining.
Julian Seward [Sat, 5 Nov 2005 02:58:55 +0000 (02:58 +0000)] 
Stop gcc4 complaining.

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

19 years agoImplement FINIT.
Julian Seward [Sat, 5 Nov 2005 02:55:06 +0000 (02:55 +0000)] 
Implement FINIT.

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

19 years agoImplement vector FP unordered compares on amd64.
Julian Seward [Sat, 5 Nov 2005 02:33:25 +0000 (02:33 +0000)] 
Implement vector FP unordered compares on amd64.

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

19 years agoThe earth's core is a vast mass of molten sse and sse2 instructions.
Julian Seward [Sat, 5 Nov 2005 01:54:07 +0000 (01:54 +0000)] 
The earth's core is a vast mass of molten sse and sse2 instructions.
Occasionally some make their way to the surface and spew out, causing
havoc for miles around.

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

19 years agoReenable FUCOMP %st(0),%st(?).
Julian Seward [Sat, 5 Nov 2005 01:12:18 +0000 (01:12 +0000)] 
Reenable FUCOMP %st(0),%st(?).

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

19 years agoImplement SHRDv imm8.
Julian Seward [Fri, 4 Nov 2005 20:49:36 +0000 (20:49 +0000)] 
Implement SHRDv imm8.

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

19 years agoImplement shld/shrd on amd64. Total timewasting nightmare, not helped
Julian Seward [Fri, 4 Nov 2005 20:05:57 +0000 (20:05 +0000)] 
Implement shld/shrd on amd64.  Total timewasting nightmare, not helped
by AMD's out-of-range shift behaviour being both undocumented and
bizarre.

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

19 years agoNew irop Iop_MullEven*
Cerion Armour-Brown [Fri, 4 Nov 2005 19:44:48 +0000 (19:44 +0000)] 
New irop Iop_MullEven*
 - a widening un/signed multiply of even lanes

Recast misused irops Iop_MulLo/Hi* as Iop_MullEven*

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

19 years agoHandle jecxz in addition to jrcxz.
Julian Seward [Fri, 4 Nov 2005 14:34:52 +0000 (14:34 +0000)] 
Handle jecxz in addition to jrcxz.

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

19 years agoHandle address-size overrides in the common case (explicit memory references).
Julian Seward [Fri, 4 Nov 2005 14:18:31 +0000 (14:18 +0000)] 
Handle address-size overrides in the common case (explicit memory references).

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

19 years agoHandle any number of 0x66 (operand-size-override) prefixes.
Julian Seward [Thu, 3 Nov 2005 14:00:57 +0000 (14:00 +0000)] 
Handle any number of 0x66 (operand-size-override) prefixes.

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

19 years agowibble
Julian Seward [Thu, 3 Nov 2005 13:42:28 +0000 (13:42 +0000)] 
wibble

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

19 years agoAPI change: make the handling of syscall-denoting instructions a bit
Julian Seward [Thu, 3 Nov 2005 13:27:24 +0000 (13:27 +0000)] 
API change: make the handling of syscall-denoting instructions a bit
more general, so as to facilitate handling different combinations of
syscall/int more easily.

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

19 years agoGenerate offsets for all amd64 integer registers.
Julian Seward [Thu, 3 Nov 2005 13:19:33 +0000 (13:19 +0000)] 
Generate offsets for all amd64 integer registers.

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

19 years agoImplement 66 0F 11 = MOVUPD (untested)
Julian Seward [Tue, 1 Nov 2005 18:59:38 +0000 (18:59 +0000)] 
Implement 66 0F 11 = MOVUPD (untested)

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

19 years agoTidy up a couple of format strings.
Julian Seward [Sat, 29 Oct 2005 22:30:47 +0000 (22:30 +0000)] 
Tidy up a couple of format strings.

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

19 years agox86 front end: implement in/out insns.
Julian Seward [Sat, 29 Oct 2005 19:19:51 +0000 (19:19 +0000)] 
x86 front end: implement in/out insns.

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

20 years agoFill in a few missing Altivec cases:
Julian Seward [Sat, 22 Oct 2005 12:49:49 +0000 (12:49 +0000)] 
Fill in a few missing Altivec cases:
- rename Iop_Perm to Iop_Perm8x16
- backend: handle Iop_CmpNEZ8x16
- frontend: for vperm, mask off all irrelevant parts of the steering values

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

20 years agoRemove inefficient and not-completely-general logic in addHRegUse and
Julian Seward [Sat, 22 Oct 2005 12:46:06 +0000 (12:46 +0000)] 
Remove inefficient and not-completely-general logic in addHRegUse and
replace with something general and simpler.

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

20 years agoMinor altivec changes:
Julian Seward [Sat, 22 Oct 2005 02:01:16 +0000 (02:01 +0000)] 
Minor altivec changes:
- vsplt{b,h,w}: guarantee to always produce in-range shifts
- lvs{l,r}: mask second arg to helper so assertion in helper doesn't fire.
  Also pass in offset to dest rather than reg #.

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

20 years agoUnbreak build.
Julian Seward [Thu, 20 Oct 2005 11:56:00 +0000 (11:56 +0000)] 
Unbreak build.

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

20 years agoAPI change: pass both the VexGuestExtents and the original
Julian Seward [Tue, 18 Oct 2005 12:01:48 +0000 (12:01 +0000)] 
API change: pass both the VexGuestExtents and the original
pre-redirection guest address to instrumentation functions.

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

20 years agoBuild fixes for gcc-2.96 (which does not allow declarations after the
Julian Seward [Wed, 12 Oct 2005 11:34:33 +0000 (11:34 +0000)] 
Build fixes for gcc-2.96 (which does not allow declarations after the
first statement in a block).

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

20 years agoHandle the out-of-range shift cases for slw/srw in a different way
Julian Seward [Sat, 8 Oct 2005 19:58:48 +0000 (19:58 +0000)] 
Handle the out-of-range shift cases for slw/srw in a different way
which creates less IR and fewer insns at the back end.  Worth about 2%
running bzip2 -d with --tool=none.

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

20 years agoEnable chasing of unconditional branches and calls.
Julian Seward [Sat, 8 Oct 2005 11:28:16 +0000 (11:28 +0000)] 
Enable chasing of unconditional branches and calls.

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

20 years agoSpecial-case rlwnms which are really slwi or srwi. This gives about
Julian Seward [Fri, 7 Oct 2005 09:45:16 +0000 (09:45 +0000)] 
Special-case rlwnms which are really slwi or srwi.  This gives about
1% translated code size improvement for run-of-the-mill integer code.

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

20 years agoHandle FUCOM %st(0),%st(?).
Julian Seward [Wed, 5 Oct 2005 17:58:32 +0000 (17:58 +0000)] 
Handle FUCOM %st(0),%st(?).

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

20 years agoHandle BT/BTS/BTR/BTC at size 4 as well as 8.
Julian Seward [Wed, 5 Oct 2005 17:19:11 +0000 (17:19 +0000)] 
Handle BT/BTS/BTR/BTC at size 4 as well as 8.

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