Commit Graph

656 Commits

Author SHA1 Message Date
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
Julian Seward
204930a489 Move to new place.
git-svn-id: svn://svn.valgrind.org/vex/trunk@624
2004-12-05 23:54:32 +00:00
Julian Seward
f7d387c46d Contains most fpu, mmx and sse1 insns.
git-svn-id: svn://svn.valgrind.org/vex/trunk@623
2004-12-05 23:53:22 +00:00
Julian Seward
0e0cb11e95 Place for storing x86 original code files.
git-svn-id: svn://svn.valgrind.org/vex/trunk@622
2004-12-05 23:51:54 +00:00
Julian Seward
ae14891105 Make small procedures to add/sub small amounts from esp.
git-svn-id: svn://svn.valgrind.org/vex/trunk@621
2004-12-05 21:22:38 +00:00
Julian Seward
15c112611b Finish SSE1 instructions! Finallyatlast.
git-svn-id: svn://svn.valgrind.org/vex/trunk@620
2004-12-05 19:29:45 +00:00
Julian Seward
6e6f665b0f Fix a load of confusion with SSE scalar float insns and memory.
git-svn-id: svn://svn.valgrind.org/vex/trunk@619
2004-12-05 15:42:05 +00:00
Julian Seward
f76dbe65ed Even more SSE insns.
git-svn-id: svn://svn.valgrind.org/vex/trunk@618
2004-12-05 02:47:40 +00:00
Julian Seward
1b7069f596 x86 host/guest: even more SSE instructions
git-svn-id: svn://svn.valgrind.org/vex/trunk@617
2004-12-04 20:33:02 +00:00
Julian Seward
2875f2e1f9 Rationalisation/cleanup of float to/from int conversions and rounding
modes associated with them.



git-svn-id: svn://svn.valgrind.org/vex/trunk@616
2004-12-04 14:36:09 +00:00
Julian Seward
b69ba13305 x86 guest/host: a whole bunch more SSE instructions.
git-svn-id: svn://svn.valgrind.org/vex/trunk@615
2004-12-04 01:38:37 +00:00
Julian Seward
236f79b0a1 Add a bunch of easy SSE insns.
git-svn-id: svn://svn.valgrind.org/vex/trunk@614
2004-12-03 20:08:31 +00:00
Julian Seward
f172787ae4 Mucho messing around with x86 FP/SSE rounding modes etc. As a result
implement a bunch of SSE float-int conversion insns.



git-svn-id: svn://svn.valgrind.org/vex/trunk@613
2004-12-03 19:43:31 +00:00
Cerion Armour-Brown
347ec43cec cleaned up dis_mov & dis_shift_lsl, and made a stab at dis_ldm_stm: load/store multiple
git-svn-id: svn://svn.valgrind.org/vex/trunk@612
2004-12-03 18:54:08 +00:00
Julian Seward
28f8f4c261 Try to reduce the number of warnings gcc gives.
git-svn-id: svn://svn.valgrind.org/vex/trunk@611
2004-12-03 11:55:29 +00:00
Cerion Armour-Brown
713fee1473 trying to get shift_lsl to work + cleaned up a little
git-svn-id: svn://svn.valgrind.org/vex/trunk@610
2004-12-03 11:16:42 +00:00
Julian Seward
40c52285d1 Add another comment and actually complete the commit message :-)
git-svn-id: svn://svn.valgrind.org/vex/trunk@609
2004-12-02 23:36:20 +00:00
Julian Seward
415c39f175 Try to answer a few q
git-svn-id: svn://svn.valgrind.org/vex/trunk@608
2004-12-02 23:35:18 +00:00
Cerion Armour-Brown
ef19019311 Ceri's first attempts at figuring out what the heck is going on!
git-svn-id: svn://svn.valgrind.org/vex/trunk@607
2004-12-02 20:19:22 +00:00