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
Julian Seward
15a71c4eba
Special case for CmpNE64(x,0), which is frequently generated when
...
Memchecking floating point code.
git-svn-id: svn://svn.valgrind.org/vex/trunk@666
2004-12-16 11:40:20 +00:00
Julian Seward
054153f439
More needles in haystacks: pmovmskb (sse): pass args to helper in the
...
correct order :-)
git-svn-id: svn://svn.valgrind.org/vex/trunk@665
2004-12-16 11:39:04 +00:00
Julian Seward
c2c2e989f8
Don't inadvertantly invert the D flag when doing pushfl. Real needle
...
in a haystack job, finding this one.
git-svn-id: svn://svn.valgrind.org/vex/trunk@664
2004-12-16 02:54:54 +00:00
Julian Seward
18ee709ba4
Implement pusha/popa.
...
git-svn-id: svn://svn.valgrind.org/vex/trunk@663
2004-12-15 18:43:39 +00:00
Julian Seward
77788899d8
More SSE2 cases needed for gsl-1.5 regtests with icc -O -xW (SSE2).
...
git-svn-id: svn://svn.valgrind.org/vex/trunk@662
2004-12-15 17:42:58 +00:00
Cerion Armour-Brown
da7f752f5b
Added DIP()s everywhere, removed all the vex_printf()s
...
git-svn-id: svn://svn.valgrind.org/vex/trunk@661
2004-12-15 13:04:06 +00:00
Julian Seward
667e964a6e
x86 guest: implement SSE1 movaps G -> E (stores)
...
git-svn-id: svn://svn.valgrind.org/vex/trunk@660
2004-12-15 12:35:00 +00:00
Julian Seward
5bc8ffc865
#if 0 some unused fns in an attempt to reduce the noise level from gcc.
...
git-svn-id: svn://svn.valgrind.org/vex/trunk@659
2004-12-15 12:21:28 +00:00
Julian Seward
c349b5c2d5
Give different emulation warnings for setting of %mxcsr.fz and %mxcsr.daz.
...
git-svn-id: svn://svn.valgrind.org/vex/trunk@658
2004-12-15 12:13:52 +00:00
Julian Seward
1405b9db10
Fixes to get gsl-1.5 regressions to work with icc-8.0 -xK (SSE1)
...
git-svn-id: svn://svn.valgrind.org/vex/trunk@657
2004-12-15 11:57:58 +00:00
Cerion Armour-Brown
4bfc335ad9
fixed oldFlagC usage
...
git-svn-id: svn://svn.valgrind.org/vex/trunk@656
2004-12-14 12:08:09 +00:00
Julian Seward
04cb55aaee
Fix push/pop/load/store of segment registers.
...
git-svn-id: svn://svn.valgrind.org/vex/trunk@655
2004-12-14 10:00:16 +00:00
Julian Seward
b8c23f6482
* x86 host: make SSE spills/restores work
...
* x86 guest: fill in some missing SSE cases
git-svn-id: svn://svn.valgrind.org/vex/trunk@654
2004-12-14 01:16:59 +00:00
Julian Seward
d6dea91979
Improve redundant-PutI elimination a bit, so it is not completely
...
fooled by some of the stupidities from guest x86 MMX code.
git-svn-id: svn://svn.valgrind.org/vex/trunk@653
2004-12-13 18:22:48 +00:00
Julian Seward
282caf54c3
Even more folding rules.
...
git-svn-id: svn://svn.valgrind.org/vex/trunk@652
2004-12-13 14:14:16 +00:00
Julian Seward
71d97365c4
Mechanism for dealing with failures of instruction decodes, and also
...
of LibVEX-provided address translation.
git-svn-id: svn://svn.valgrind.org/vex/trunk@651
2004-12-13 14:09:01 +00:00
Julian Seward
106fd4b1f7
x86 guest: simulate LDT/GDT enough that code using segment override
...
prefixes can work.
git-svn-id: svn://svn.valgrind.org/vex/trunk@650
2004-12-13 10:48:19 +00:00
Julian Seward
b69b1851ee
Folding rule for Iop_64to32.
...
git-svn-id: svn://svn.valgrind.org/vex/trunk@649
2004-12-13 10:47:15 +00:00
Julian Seward
8b99fb8b87
x86 guest/host: fix enough 128-bit vector stuff that memcheck works for
...
SSE2. Added a new Iop_Not128 bit primop and generate at least tolerable
SSE code for it.
git-svn-id: svn://svn.valgrind.org/vex/trunk@648
2004-12-12 16:46:47 +00:00
Julian Seward
62b1fa8079
x86 host: Stuff in support of memchecking of 64x2 vector FP.
...
git-svn-id: svn://svn.valgrind.org/vex/trunk@647
2004-12-10 21:45:38 +00:00
Julian Seward
e02f9b6c7a
Stuff needed for Memcheck of SSE1 instructions.
...
git-svn-id: svn://svn.valgrind.org/vex/trunk@646
2004-12-10 18:56:29 +00:00
Cerion Armour-Brown
c27dff378d
Dealt with more 'unpredictables' (all of them?)
...
Reworked some bad code - was assigning multiple times to an IRTemp (apparently
not allowed?!)
git-svn-id: svn://svn.valgrind.org/vex/trunk@645
2004-12-10 15:28:43 +00:00
Julian Seward
87c3a34a1b
More support for memchecking 128-bit SIMD code.
...
git-svn-id: svn://svn.valgrind.org/vex/trunk@644
2004-12-10 14:59:57 +00:00
Cerion Armour-Brown
eff25d02ed
Dealt with undefined instr's properly
...
git-svn-id: svn://svn.valgrind.org/vex/trunk@643
2004-12-10 11:43:10 +00:00
Cerion Armour-Brown
e2419dbd5d
added padding to VexGuestArmState
...
git-svn-id: svn://svn.valgrind.org/vex/trunk@642
2004-12-10 10:46:16 +00:00
Cerion Armour-Brown
79595c01ac
Finished dis_branch, so we get IR code for a complete bb now - yay!
...
Fixed a bunch of type errors picked up by the sanity checker
git-svn-id: svn://svn.valgrind.org/vex/trunk@641
2004-12-10 10:18:58 +00:00
Julian Seward
cca70dff12
Finish almost all SSE2 integer instructions. (!)
...
git-svn-id: svn://svn.valgrind.org/vex/trunk@640
2004-12-10 01:48:18 +00:00
Julian Seward
e5119dcd20
x86 host/guest: SSE2 integer shifts and subtracts
...
git-svn-id: svn://svn.valgrind.org/vex/trunk@639
2004-12-09 23:25:14 +00:00
Cerion Armour-Brown
09d1a87ef6
Reworked dis_loadstore_mult(): load/store multiple
...
Reworked data processing instrs:
- all dpi's are dealt with in dis_dataproc()
- dis_shifter_op() finds the shift expression
- directly if 'immediate', else via dis_shift(), dis_rotate
- returns the shifter_carry_out
(would rather not to do this... how to avoid it?!)
Added dis_loadstore_w_ub : load/store word|unsigned byte
First stab at dis_branch(), but not there yet.
Laid out disInstr to parse the entire arm instruction set.
- was the easiest thing to do to avoid all the undefined and not-yet-implemented instructions.
Some work on flag calculations - not yet right!
git-svn-id: svn://svn.valgrind.org/vex/trunk@638
2004-12-09 19:04:57 +00:00
Julian Seward
90969d6910
x86 guest/host: implement a whole bunch of SSE2 integer insns
...
git-svn-id: svn://svn.valgrind.org/vex/trunk@637
2004-12-09 03:44:34 +00:00
Julian Seward
f273b21842
IR level for support of 128 integer SIMD operations. Use this to do
...
SSE2 integer operations (x86 guest/host).
git-svn-id: svn://svn.valgrind.org/vex/trunk@636
2004-12-09 00:39:32 +00:00
Julian Seward
a310e39a1f
Delete commented-out bits of the old UCode insn decoder.
...
git-svn-id: svn://svn.valgrind.org/vex/trunk@635
2004-12-08 17:01:23 +00:00
Julian Seward
b4c4fd0ab9
x86 guest: finish SSE2 floating point insns.
...
git-svn-id: svn://svn.valgrind.org/vex/trunk@634
2004-12-08 14:37:10 +00:00