]> git.ipfire.org Git - thirdparty/valgrind.git/log
thirdparty/valgrind.git
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

19 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

19 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

19 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

19 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

19 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

19 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

19 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

19 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

19 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

19 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

19 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

19 years agoImplement JRCXZ.
Julian Seward [Wed, 5 Oct 2005 16:58:23 +0000 (16:58 +0000)] 
Implement JRCXZ.

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

19 years agoHandle the redundant-encoding (Grp5) versions of {inc,dec}{b,w}.
Julian Seward [Wed, 5 Oct 2005 10:39:58 +0000 (10:39 +0000)] 
Handle the redundant-encoding (Grp5) versions of {inc,dec}{b,w}.

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

19 years agoHandle SSE2 pmaddwd.
Julian Seward [Tue, 4 Oct 2005 20:00:49 +0000 (20:00 +0000)] 
Handle SSE2 pmaddwd.

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

19 years agoImplement SSE2 psadbw.
Julian Seward [Tue, 4 Oct 2005 11:43:37 +0000 (11:43 +0000)] 
Implement SSE2 psadbw.

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

19 years agoImplement LAHF.
Julian Seward [Mon, 3 Oct 2005 11:39:02 +0000 (11:39 +0000)] 
Implement LAHF.

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

19 years agoImplement the 0F 7F encoding for movq mmreg, mmreg.
Julian Seward [Mon, 3 Oct 2005 02:44:01 +0000 (02:44 +0000)] 
Implement the 0F 7F encoding for movq mmreg, mmreg.

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

19 years agoEnable Xin_MFence on VexSubArchX86_sse0.
Julian Seward [Mon, 3 Oct 2005 02:16:02 +0000 (02:16 +0000)] 
Enable Xin_MFence on VexSubArchX86_sse0.

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

19 years agoFix various adc/sbb instruction variants.
Julian Seward [Mon, 3 Oct 2005 02:07:08 +0000 (02:07 +0000)] 
Fix various adc/sbb instruction variants.

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

19 years agox86 front end: implement FXTRACT. I knew there was a reason I'd been
Julian Seward [Mon, 3 Oct 2005 01:02:40 +0000 (01:02 +0000)] 
x86 front end: implement FXTRACT.  I knew there was a reason I'd been
avoiding this ...

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

19 years agoSome AltiVec vector-multiply arith insns
Cerion Armour-Brown [Fri, 16 Sep 2005 16:02:11 +0000 (16:02 +0000)] 
Some AltiVec vector-multiply arith insns
(those that don't need >32bit signed adds)
 - vmhaddshs, vmhraddshs, vmladduhm, vmsumubm, vmsumuhm, vmsumshm

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

19 years agospacing and var name chages only
Cerion Armour-Brown [Fri, 16 Sep 2005 08:55:50 +0000 (08:55 +0000)] 
spacing and var name chages only
 - 'saturated' op names get a preceding Q instead of a trailing S

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

19 years agoMore AltiVec: shifts and rotates
Cerion Armour-Brown [Fri, 16 Sep 2005 07:54:40 +0000 (07:54 +0000)] 
More AltiVec: shifts and rotates
 - vrl*, vsl*, vsr*

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

19 years agoRename primop Iop_Rot* Iop_Rotl*
Cerion Armour-Brown [Fri, 16 Sep 2005 07:53:31 +0000 (07:53 +0000)] 
Rename primop Iop_Rot* Iop_Rotl*

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

19 years agoAdded packing/unpacking AltiVec insns
Cerion Armour-Brown [Fri, 16 Sep 2005 07:13:44 +0000 (07:13 +0000)] 
Added packing/unpacking AltiVec insns
 - vpk*, vupk*

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

19 years agoAdded AltiVec permutation insns:
Cerion Armour-Brown [Thu, 15 Sep 2005 21:58:50 +0000 (21:58 +0000)] 
Added AltiVec permutation insns:
 - vperm, vsldoi, vmrg*, vsplt*

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

19 years agoCouple more primops: Iop_ShlN8x16, Iop_ShrN8x16, Iop_SarN8x16
Cerion Armour-Brown [Thu, 15 Sep 2005 16:28:36 +0000 (16:28 +0000)] 
Couple more primops: Iop_ShlN8x16, Iop_ShrN8x16, Iop_SarN8x16

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

19 years agoMakefile fixes:
Julian Seward [Thu, 15 Sep 2005 16:00:58 +0000 (16:00 +0000)] 
Makefile fixes:

- Fix default compiler better
- Add dummy install target to help V's build system
- Don't hardwire 'ar' (fix for #112199).

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

19 years agoAdded AltiVec integer compare insns.
Cerion Armour-Brown [Thu, 15 Sep 2005 14:22:58 +0000 (14:22 +0000)] 
Added AltiVec integer compare insns.

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

19 years agoImplemented simple AltiVec arithmetic insns:
Cerion Armour-Brown [Thu, 15 Sep 2005 12:42:16 +0000 (12:42 +0000)] 
Implemented simple AltiVec arithmetic insns:
 - add, sub, max, min, avg, hi/lo mul
   and all varieties thereof: (un)signed, (un)saturated, 8|16|32 lane size...

fixed backend hi/lo_mul: only valid for 16|32 bit lanes, not 8.

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

19 years agoAdded AltiVec sub-vector load/store insns:
Cerion Armour-Brown [Wed, 14 Sep 2005 22:59:26 +0000 (22:59 +0000)] 
Added AltiVec sub-vector load/store insns:
  lvebx, lvehx, lvewx, stvebx, stvehx, stvewx

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

19 years agoimplemented vaddcuw
Cerion Armour-Brown [Wed, 14 Sep 2005 21:15:40 +0000 (21:15 +0000)] 
implemented vaddcuw
backend:
 Iop_ShrN32x4, Iop_Add32x4, Iop_CmpGT32Ux4
 fixed emit_Instr::Pin_AvSplat for negative nums
 fixed mk_AvDuplicateRI for imm's 16:31, -32:-17 inclusive

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

19 years agomore altivec insns: vsr, vspltw
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

19 years agoimplemented guest-ppc32 lvsl, lvsr using dirty helper function
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

19 years agoyet another new IR primop: Iop_QNarrow32Ux4
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

19 years agoAdded a number of new IR primops to support integer AltiVec insns
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

19 years agoa couple more simple altivec insns
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

19 years agoppc guest_state vector regs must be 16byte aligned for loads/stores
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

19 years agofront end:
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

19 years agoreinstated altivec insn disassembly framework
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

19 years agoTypechecker cleanups (non-functional changes)
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

19 years agoiselInt64Expr: handle 64-bit Mux0X.
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

19 years agoFix mcrxr.
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

19 years agoreinstate lhau, lhaux, sthux, mcrxr
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

19 years agoimplemented Iop_64HLtoV128 in iselVecExpr_wrk
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

19 years agoReinstate stfdux, fctiw.
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

19 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

19 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

19 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

19 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

19 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

19 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

19 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

19 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

19 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