Commit Graph

674 Commits

Author SHA1 Message Date
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
Julian Seward
025d4369bb x86 guest: another stack of SSE2 insns.
git-svn-id: svn://svn.valgrind.org/vex/trunk@633
2004-12-08 12:31:22 +00:00
Julian Seward
a234d1dc97 x86 guest: Implement a whole bunch of SSE2 instructions, mostly
int-float conversions.  Very repetitive.



git-svn-id: svn://svn.valgrind.org/vex/trunk@632
2004-12-07 19:02:18 +00:00
Julian Seward
43641ec037 Redundant-Get elimination: only do the substitution when the types
match.  Not doing so leads to incorrectly typed IR.


git-svn-id: svn://svn.valgrind.org/vex/trunk@631
2004-12-07 19:00:57 +00:00
Julian Seward
867ab938c4 Copy-n-paste 32x4 floating point stuff into 64x2 floating point stuff so
as to form a basis for SSE2 floating point support.



git-svn-id: svn://svn.valgrind.org/vex/trunk@630
2004-12-07 11:16:04 +00:00
Julian Seward
c73a5a146c x86 guest: Implement various insns:
ldmxcsr/stmxcsr
   fldenv/fstenv
   prefetch of various flavours (no-op for us)
   fclex (no-op for us)
   Some segment reg stuff, but nothing usable yet


git-svn-id: svn://svn.valgrind.org/vex/trunk@629
2004-12-06 14:29:12 +00:00
Julian Seward
8970b347b9 Tests for x86 fldenv/fstenv; also fix error in frstor test.
git-svn-id: svn://svn.valgrind.org/vex/trunk@628
2004-12-06 14:26:28 +00:00
Julian Seward
3ffae38d0e Program for testing setting of MXCSR.
git-svn-id: svn://svn.valgrind.org/vex/trunk@627
2004-12-06 12:15:05 +00:00
Julian Seward
c70e19435b Fix bug exposed by improved insn_sse test.
git-svn-id: svn://svn.valgrind.org/vex/trunk@626
2004-12-06 00:36:25 +00:00
Julian Seward
ed9a19d140 Another test case, containing a lot of FP code, which generally stresses
iropt quite a lot.


git-svn-id: svn://svn.valgrind.org/vex/trunk@625
2004-12-06 00:00:04 +00:00