Julian Seward
2fcaf5ee4c
Instruction selection/emission for Add64 and Sub64.
...
git-svn-id: svn://svn.valgrind.org/vex/trunk@716
2005-01-15 20:43:10 +00:00
Julian Seward
715ca1b759
Add new IR primops: Iop_CmpNEZ8x8, Iop_CmpNEZ16x4, Iop_CmpNEZ32x2 and
...
isel support for them in the x86 back end. They are used for Memcheck
annotation of 64-bit SIMD code.
git-svn-id: svn://svn.valgrind.org/vex/trunk@715
2005-01-13 19:16:04 +00:00
Julian Seward
0d4ff22359
Fix typos in comment.
...
git-svn-id: svn://svn.valgrind.org/vex/trunk@714
2005-01-13 16:36:42 +00:00
Julian Seward
5ca186679b
Comment-only change: record code generation conventions and
...
limitations for x86.
git-svn-id: svn://svn.valgrind.org/vex/trunk@713
2005-01-13 16:33:19 +00:00
Julian Seward
5f05f2a682
On x86 host and guest, re-implement the way MMX instructions are done,
...
to bring them into line with how SSE works. Previously, MMX was done
using helper functions calls inserted by the front end. This meant
proper MMX instrumentation was impossible (unlike SSE). Now it works
the way all other code does: the front end does not insert calls to
helper functions, but rather builds expression trees using 64-bit
vector primops. These are instrumented as the 128-bit vector primops
already are, and passed to the back ends.
Because emitting combined x87 and MMX code together is too complex,
the x86 back end generates calls to the same helpers as before --
except they are invisible to the front end. And, of course, some of
those calls may now be running instrumentation operations rather than
real-value operations.
git-svn-id: svn://svn.valgrind.org/vex/trunk@712
2005-01-13 15:06:51 +00:00
Julian Seward
866f896155
Add some starting-off material for PPC32.
...
git-svn-id: svn://svn.valgrind.org/vex/trunk@711
2005-01-12 11:25:02 +00:00
Julian Seward
8f57657569
Rename ...
...
git-svn-id: svn://svn.valgrind.org/vex/trunk@710
2005-01-12 11:12:49 +00:00
Julian Seward
cfed7ec9dd
For holding 32-bit PPC originals.
...
git-svn-id: svn://svn.valgrind.org/vex/trunk@709
2005-01-12 11:12:28 +00:00
Julian Seward
b00a46b995
This is no longer useful.
...
git-svn-id: svn://svn.valgrind.org/vex/trunk@708
2005-01-12 11:10:40 +00:00
Julian Seward
47ecc83df5
Handle another PSLLDQ sub-case.
...
git-svn-id: svn://svn.valgrind.org/vex/trunk@707
2005-01-11 15:03:53 +00:00
Julian Seward
6fef2ca38f
Partial implementation of pslldq (SSE2).
...
git-svn-id: svn://svn.valgrind.org/vex/trunk@706
2005-01-10 20:37:31 +00:00
Julian Seward
3feb4705a7
x86 floating point accuracy improvements. The aim is to make x86 FP
...
behave more consistently like an 64-bit implementation. Mostly this
means running the host with the FPU set to 64-bit precision, not
80-bit.
Requires corresponding changes on the Valgrind side of the fence.
git-svn-id: svn://svn.valgrind.org/vex/trunk@705
2005-01-10 16:49:19 +00:00
Julian Seward
1979c4a512
Program to check values of x87 constants.
...
git-svn-id: svn://svn.valgrind.org/vex/trunk@704
2005-01-10 13:34:46 +00:00
Julian Seward
f9c3baa22f
Program for investigating FP rounding error effects.
...
git-svn-id: svn://svn.valgrind.org/vex/trunk@703
2005-01-08 18:26:47 +00:00
Julian Seward
dd57f1a169
Observe the memory fencing properties of CPUID.
...
git-svn-id: svn://svn.valgrind.org/vex/trunk@702
2005-01-08 18:25:05 +00:00
Julian Seward
7064bcf7cf
Fix printing of various instructions when disassembling.
...
git-svn-id: svn://svn.valgrind.org/vex/trunk@701
2005-01-08 18:17:32 +00:00
Julian Seward
eae818a4d4
Fix some minor things to do with memory fences and the Elan3 drivers.
...
Also recognise "lock addl $0,0(%esp)" as a memory fence.
git-svn-id: svn://svn.valgrind.org/vex/trunk@700
2005-01-07 14:14:50 +00:00
Julian Seward
0c82ae8732
SSE2 fixes for mfence-ing.
...
git-svn-id: svn://svn.valgrind.org/vex/trunk@699
2005-01-07 13:36:14 +00:00
Julian Seward
603ac0176b
Machinery for investigation of LOCK prefixes.
...
git-svn-id: svn://svn.valgrind.org/vex/trunk@698
2005-01-07 13:25:28 +00:00
Julian Seward
4ea7cb7702
Add a trivial new IR construction: a memory fence statement. Connect
...
up to x86 front and back ends.
git-svn-id: svn://svn.valgrind.org/vex/trunk@697
2005-01-07 12:09:15 +00:00
Julian Seward
bac1d406d1
Make it a more effective test.
...
git-svn-id: svn://svn.valgrind.org/vex/trunk@696
2005-01-06 15:46:22 +00:00
Julian Seward
694bd05976
Darn; fix stupid copy-n-paste bug introduced in previous fsave/frstor
...
fix. Thanks to 'make regtest' for finding it.
git-svn-id: svn://svn.valgrind.org/vex/trunk@695
2005-01-06 15:45:54 +00:00
Julian Seward
af50309b3d
* x86 guest: fix bug in stmxcsr -- rounding mode field set wrongly
...
* x86 guest: fix longstanding bug in fsave/frstor -- they dumped
FP registers in physical order, instead of ST order
* x86 guest: implement fxsave
git-svn-id: svn://svn.valgrind.org/vex/trunk@694
2005-01-06 12:36:38 +00:00
Julian Seward
955cb78e27
Improve these test programs.
...
git-svn-id: svn://svn.valgrind.org/vex/trunk@693
2005-01-06 12:33:30 +00:00
Julian Seward
ad829fd971
Test program for x86 fxsave insn.
...
git-svn-id: svn://svn.valgrind.org/vex/trunk@692
2005-01-06 10:57:16 +00:00
Julian Seward
59f3c4bc62
Add crude 'minidist' target (not yet entirely satisfactory).
...
git-svn-id: svn://svn.valgrind.org/vex/trunk@691
2005-01-05 19:11:09 +00:00
Julian Seward
830da1aa7a
Remove old CPUID stuff that wasn't being used.
...
git-svn-id: svn://svn.valgrind.org/vex/trunk@690
2005-01-05 10:38:54 +00:00
Julian Seward
0060619e2c
Push subarchitecture stuff through the x86 parts.
...
git-svn-id: svn://svn.valgrind.org/vex/trunk@689
2004-12-31 22:37:42 +00:00
Julian Seward
c0b3ddcb71
C89 police (make buildable with gcc-2.96)
...
git-svn-id: svn://svn.valgrind.org/vex/trunk@688
2004-12-31 17:22:04 +00:00
Julian Seward
094785a778
No longer try to build the attached Valgrind snapshots.
...
git-svn-id: svn://svn.valgrind.org/vex/trunk@687
2004-12-31 17:21:28 +00:00
Julian Seward
798ee7f8ea
Update the memcheck instrumenter embedded herein.
...
git-svn-id: svn://svn.valgrind.org/vex/trunk@686
2004-12-30 02:05:34 +00:00
Julian Seward
d21448887c
Rename some variables and types, to make it easier to read. No
...
functionality changes.
git-svn-id: svn://svn.valgrind.org/vex/trunk@685
2004-12-30 01:44:51 +00:00
Julian Seward
39789516fc
Remove register preferencing mechanism; does not seem to help.
...
git-svn-id: svn://svn.valgrind.org/vex/trunk@684
2004-12-30 00:14:54 +00:00
Julian Seward
c4fa13144d
In iropt, try and call flatten_BB less. Enhance the sanity checker
...
so that it does check for flatness at the relevant places.
git-svn-id: svn://svn.valgrind.org/vex/trunk@683
2004-12-29 19:25:06 +00:00
Julian Seward
0bef1ed004
Fix nonsensical assertion.
...
git-svn-id: svn://svn.valgrind.org/vex/trunk@682
2004-12-29 19:23:49 +00:00
Julian Seward
6a66d4e659
Oops. Track arch/subarch changes.
...
git-svn-id: svn://svn.valgrind.org/vex/trunk@681
2004-12-29 17:48:22 +00:00
Julian Seward
42eafce9cc
Sanity check re support for precise exceptions, resulting in more
...
comments. No functionality change.
git-svn-id: svn://svn.valgrind.org/vex/trunk@680
2004-12-29 17:34:50 +00:00
Julian Seward
c48d6e72eb
Looks like major changes, but in fact are just rearrangements and
...
further commenting of code. Rearrange sequence of procedures to
better reflect the flow of data through iropt. Add documentation at
the start explaining more precisely what it does.
The only functional change is to do initial flattening even at
optimisation level 0, so we can disable most of iropt for debugging
purposes and still have a functioning Valgrind.
git-svn-id: svn://svn.valgrind.org/vex/trunk@679
2004-12-29 17:09:11 +00:00
Julian Seward
be957c107a
Add support for subarchitectures. Currently ignored.
...
Supported x86 subarchitectures:
* sse0 - have fxsave/fxrstor (ie, the SSE state), but no sse insns
That is, Pentium II and later
* sse1 - have SSE1 - Pentium III and later
* sse2 - have SSE2 - Pentium 4 and M and later
git-svn-id: svn://svn.valgrind.org/vex/trunk@678
2004-12-21 01:23:00 +00:00
Julian Seward
60f5eced31
Duh. Un-break specialisation of x86 guest helper functions. Duh.
...
git-svn-id: svn://svn.valgrind.org/vex/trunk@677
2004-12-20 05:45:39 +00:00
Julian Seward
a78bd5e8bb
iselCondCode: better handling of a pattern frequently generated by
...
memcheck.
git-svn-id: svn://svn.valgrind.org/vex/trunk@676
2004-12-20 05:07:38 +00:00
Julian Seward
e5e6288d83
Fix autoversioning a bit more.
...
git-svn-id: svn://svn.valgrind.org/vex/trunk@675
2004-12-20 04:42:49 +00:00
Julian Seward
0d26e5ca99
New function LibVEX_Version, returning version string automagically
...
generated by 'svnversion -n .'. Only updated when you do 'make
version'.
git-svn-id: svn://svn.valgrind.org/vex/trunk@674
2004-12-20 04:37:50 +00:00
Julian Seward
b9a7b8a138
Move the IR tree matcher into its own module to get rid of
...
duplication.
git-svn-id: svn://svn.valgrind.org/vex/trunk@673
2004-12-20 04:12:14 +00:00
Cerion Armour-Brown
f022a59a1d
Skeleton work on host-arm/isel, plus some cleaning up of hdefs
...
git-svn-id: svn://svn.valgrind.org/vex/trunk@672
2004-12-17 20:30:21 +00:00
Julian Seward
7a8ecf526c
Don't squawk about kludged RDTSC, and update list of limitations.
...
git-svn-id: svn://svn.valgrind.org/vex/trunk@671
2004-12-17 19:14:24 +00:00
Cerion Armour-Brown
8408b3c81d
Cleaned up hdefs.h, fleshed out hdefs.c
...
git-svn-id: svn://svn.valgrind.org/vex/trunk@670
2004-12-16 14:06:34 +00:00
Cerion Armour-Brown
99e14dc8ee
ahem - copy/paste comment error
...
git-svn-id: svn://svn.valgrind.org/vex/trunk@669
2004-12-16 12:10:59 +00:00
Cerion Armour-Brown
018026146f
First stab at host arm instruction defs
...
git-svn-id: svn://svn.valgrind.org/vex/trunk@668
2004-12-16 11:50:19 +00:00
Julian Seward
9f6ba7be6f
constant folder: try a bit harder to clean up memcheck's output
...
git-svn-id: svn://svn.valgrind.org/vex/trunk@667
2004-12-16 11:41:06 +00:00