]> git.ipfire.org Git - thirdparty/valgrind.git/log
thirdparty/valgrind.git
20 years ago* Enhance the x86 instruction selector to generate for the primops
Julian Seward [Tue, 26 Apr 2005 23:39:45 +0000 (23:39 +0000)] 
* Enhance the x86 instruction selector to generate for the primops
  introduced in rev 1144.

* Rearrange iselCondCode and introduce a few new patterns which
  deal better with the IR that Memcheck commonly generates

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

20 years agoAdd a few new primops which allow for more concise expression of
Julian Seward [Tue, 26 Apr 2005 23:34:34 +0000 (23:34 +0000)] 
Add a few new primops which allow for more concise expression of
the instrumentation Memcheck generates:

* CmpNEZ{8,16,32,64}, which are equivalent to CmpNE<sz> with one
  argument zero

* Neg{8,16,32,64}, which is equivalent to Sub<sz> with the first
  argument zero

For 64-bit platforms, add these primops.  This gives a complete set of
primops for conversions between the integral types (I8, I16, I32,
I64), so that a widening/narrowing from any type to any other type can
be achieved in a single primop:

* Iop_8Uto64, Iop_8Sto64, Iop_16Uto64, Iop_16Sto64

* Iop_64to8, Iop_64to16

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

20 years agoAdd various %rflag-helper specialisation cases and fast paths. This
Julian Seward [Tue, 26 Apr 2005 01:53:48 +0000 (01:53 +0000)] 
Add various %rflag-helper specialisation cases and fast paths.  This
more or less doubles performance of the baseline simulation on integer
code.

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

20 years agoHandle more cases, and a bit of tuning.
Julian Seward [Tue, 26 Apr 2005 01:52:29 +0000 (01:52 +0000)] 
Handle more cases, and a bit of tuning.

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

20 years agoAdd 64-bit comparisons.
Julian Seward [Tue, 26 Apr 2005 01:52:01 +0000 (01:52 +0000)] 
Add 64-bit comparisons.

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

20 years agoIncrease number of integer registers in use from 3 to 8.
Julian Seward [Tue, 26 Apr 2005 01:51:24 +0000 (01:51 +0000)] 
Increase number of integer registers in use from 3 to 8.

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

20 years agoHandle a couple more memcheck-generated primops. With this, I can run
Julian Seward [Sun, 24 Apr 2005 00:26:37 +0000 (00:26 +0000)] 
Handle a couple more memcheck-generated primops.  With this, I can run
konqueror on memcheck on amd64.

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

20 years agoHandle some artefacts resulting from memchecking of x87 floating-point
Julian Seward [Sat, 23 Apr 2005 23:41:46 +0000 (23:41 +0000)] 
Handle some artefacts resulting from memchecking of x87 floating-point
code (I64-typed PutI/GetI).

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

20 years agoMore code-generation cases.
Julian Seward [Sat, 23 Apr 2005 01:15:47 +0000 (01:15 +0000)] 
More code-generation cases.

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

20 years agoUpdate.
Julian Seward [Fri, 22 Apr 2005 21:21:09 +0000 (21:21 +0000)] 
Update.

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

20 years agoComment-only change.
Julian Seward [Fri, 22 Apr 2005 21:20:47 +0000 (21:20 +0000)] 
Comment-only change.

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

20 years agorm'd.
Julian Seward [Thu, 21 Apr 2005 01:57:44 +0000 (01:57 +0000)] 
rm'd.

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

20 years agoAdd an identity, Or8(x,0) --> x.
Julian Seward [Thu, 21 Apr 2005 01:35:48 +0000 (01:35 +0000)] 
Add an identity, Or8(x,0) --> x.

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

20 years agoFix some more insn selection cases required by Memcheck.
Julian Seward [Wed, 20 Apr 2005 22:57:11 +0000 (22:57 +0000)] 
Fix some more insn selection cases required by Memcheck.

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

20 years agoUpdate comment re PutI/GetI (comment-only change).
Julian Seward [Tue, 19 Apr 2005 23:06:11 +0000 (23:06 +0000)] 
Update comment re PutI/GetI (comment-only change).

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

20 years agoComplete implementation of pslldq/psrldq. Also some whitespace changes.
Julian Seward [Thu, 7 Apr 2005 17:31:27 +0000 (17:31 +0000)] 
Complete implementation of pslldq/psrldq.  Also some whitespace changes.

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

20 years agoHandle bsr{w,l,q} and allow bsfq.
Julian Seward [Thu, 7 Apr 2005 02:03:52 +0000 (02:03 +0000)] 
Handle bsr{w,l,q} and allow bsfq.

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

20 years agoFix comment.
Julian Seward [Thu, 7 Apr 2005 02:02:23 +0000 (02:02 +0000)] 
Fix comment.

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

20 years agoFix a nasty assembler bug, in the handling of Set64, arising from
Julian Seward [Thu, 7 Apr 2005 02:01:23 +0000 (02:01 +0000)] 
Fix a nasty assembler bug, in the handling of Set64, arising from
confusion over whether we were looking at a complete integer register
number or just the lower 3 bits of it.  Rename functions pertaining to
messing with integer register numbers in an attempt to stop this
happening in future.

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

20 years agoReinstate tests for bsf{w,l} and bsr{w,l}.
Julian Seward [Thu, 7 Apr 2005 01:56:21 +0000 (01:56 +0000)] 
Reinstate tests for bsf{w,l} and bsr{w,l}.

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

20 years agoMore AMD64 instructions: sfence, movnti, bsf{w,l,q}
Julian Seward [Wed, 6 Apr 2005 20:01:56 +0000 (20:01 +0000)] 
More AMD64 instructions: sfence, movnti, bsf{w,l,q}

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

20 years agoComment-only changes
Julian Seward [Wed, 6 Apr 2005 10:27:11 +0000 (10:27 +0000)] 
Comment-only changes

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

20 years agoAs per r1121, avoid WaW stalls writing the guest state for movss mem->reg.
Julian Seward [Wed, 6 Apr 2005 01:45:44 +0000 (01:45 +0000)] 
As per r1121, avoid WaW stalls writing the guest state for movss mem->reg.

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

20 years agoiselIntExpr64(const): save a precious register in the case where
Julian Seward [Wed, 6 Apr 2005 01:11:53 +0000 (01:11 +0000)] 
iselIntExpr64(const): save a precious register in the case where
the two halves have the same value.

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

20 years agoWhen generating IR for movsd mem->reg, don't first write the entire
Julian Seward [Wed, 6 Apr 2005 01:11:08 +0000 (01:11 +0000)] 
When generating IR for movsd mem->reg, don't first write the entire
guest reg with zeroes and then overwrite the lower half.  This forces
the back end to generate code which creates huge write-after-write
stalls in the memory system of P4s due to the different sized writes.
This apparently small change reduces the run-time of one
sse2-intensive floating point program from 145 seconds to 90 seconds
(--tool=none).

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

20 years agoAdd a pattern for 64UtoV128(LDle:I64(addr)), so as to generate a
Julian Seward [Wed, 6 Apr 2005 00:47:01 +0000 (00:47 +0000)] 
Add a pattern for 64UtoV128(LDle:I64(addr)), so as to generate a
single movsd.  This fixes a common, poorly handed case in generating
sse2 code.

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

20 years agoWhenever the flags thunk is set, fill in all the fields, even NDEP
Julian Seward [Tue, 5 Apr 2005 01:54:19 +0000 (01:54 +0000)] 
Whenever the flags thunk is set, fill in all the fields, even NDEP
which isn't usually used.  This makes redundant-PUT elimination work
better, fixing a rather subtle optimisation bug.  For at least one
floating-point case this gives a significant speedup.  Consider a bb
like this:

    (no flag setting insns before inc)
    inc ...
    (no flag setting insns)
    add ...

inc sets CC_OP, CC_DEP1 and CC_NDEP; the latter is expensive because a
call to calculate_eflags_c is required.

add sets CC_OP, CC_DEP1 and CC_DEP2.  The CC_NDEP value is now
irrelevant, but because CC_NDEP is not overwritten, iropt cannot
remove the previous assignment to it, and so the expensive helper call
remains even though it is irrelevant.

This commit fixes that: By always setting NDEP to zero whenever its
value will be unused, any previous assignment to it will be removed by
iropt.

This change should be propagated to the amd64 front end too.

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

20 years ago#include <rude_words.h>. The recent change of denotation of no-op IR
Julian Seward [Mon, 4 Apr 2005 23:12:54 +0000 (23:12 +0000)] 
#include <rude_words.h>.  The recent change of denotation of no-op IR
statements from NULL to IRStmt_NoOp screwed up the how-much-to-unroll
heuristics in iropt, resulting in iropt being significantly less
enthusiastic about unrolling than it was before the change.  Gaaah!
This commit should fix it.

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

20 years agoReinstate ADC Iv, eAX.
Julian Seward [Sun, 3 Apr 2005 14:59:54 +0000 (14:59 +0000)] 
Reinstate ADC Iv, eAX.

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

20 years agoRemember to clear C2 after fsincos, as that actually makes it work
Julian Seward [Fri, 1 Apr 2005 20:19:20 +0000 (20:19 +0000)] 
Remember to clear C2 after fsincos, as that actually makes it work
right with reasonable-sized inputs.  This confirms fsincos as the
golden lemon of x87 floating point instructions, since Vex has by now
chomped through vast amounts of floating point code on x86 and this is
the first time this bug has come to light.

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

20 years agoSupport a few more insns I ran across whilst trying to start up
Julian Seward [Wed, 30 Mar 2005 23:20:47 +0000 (23:20 +0000)] 
Support a few more insns I ran across whilst trying to start up
konqueror (mostly successfully) and mozilla (promising but
unsuccessful).

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

20 years agoAdd a folding rule for Mul64.
Julian Seward [Wed, 30 Mar 2005 23:19:46 +0000 (23:19 +0000)] 
Add a folding rule for Mul64.

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

20 years agoGenerate instruction-pointer offsets too.
Julian Seward [Wed, 30 Mar 2005 18:40:23 +0000 (18:40 +0000)] 
Generate instruction-pointer offsets too.

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

20 years agoRe-enable 'xchg reg, mem'.
Julian Seward [Wed, 30 Mar 2005 18:20:48 +0000 (18:20 +0000)] 
Re-enable 'xchg reg, mem'.

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

20 years agoUse cpp symbol __x86_64__ rather than __amd64__ on the advice of
Julian Seward [Tue, 29 Mar 2005 21:35:08 +0000 (21:35 +0000)] 
Use cpp symbol __x86_64__ rather than __amd64__ on the advice of
Michael Matz.

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

20 years agoFix incorrect DIP.
Julian Seward [Tue, 29 Mar 2005 21:33:11 +0000 (21:33 +0000)] 
Fix incorrect DIP.

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

20 years agoIncrease default max bb size from 50 to 60 guest instructions.
Julian Seward [Tue, 29 Mar 2005 21:32:41 +0000 (21:32 +0000)] 
Increase default max bb size from 50 to 60 guest instructions.

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

20 years agomore icc -Wall cleanups
Julian Seward [Mon, 28 Mar 2005 00:46:27 +0000 (00:46 +0000)] 
more icc -Wall cleanups

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

20 years agoHandle Grp8 w/immediate arg.
Julian Seward [Sun, 27 Mar 2005 17:59:45 +0000 (17:59 +0000)] 
Handle Grp8 w/immediate arg.

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

20 years agoFix a stupid bug causing FP instructions to sometimes be ignored, and
Julian Seward [Sun, 27 Mar 2005 17:36:08 +0000 (17:36 +0000)] 
Fix a stupid bug causing FP instructions to sometimes be ignored, and
fill in various missing cases.

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

20 years agoImplement yet more amd64 instructions.
Julian Seward [Sun, 27 Mar 2005 05:08:32 +0000 (05:08 +0000)] 
Implement yet more amd64 instructions.

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

20 years agoRe-enable a couple of SSE MOVQ cases.
Julian Seward [Sun, 27 Mar 2005 04:48:32 +0000 (04:48 +0000)] 
Re-enable a couple of SSE MOVQ cases.

Observe that MOVQ is probably subtly broken on both x86 and amd64 wrt
zeroing out upper halves of destination registers.  This should be
checked out.

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

20 years agoFix many amd64 floating point cases that were missing.
Julian Seward [Sun, 27 Mar 2005 04:01:15 +0000 (04:01 +0000)] 
Fix many amd64 floating point cases that were missing.

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

20 years agoImplement ldmxcsr/stmxcsr.
Julian Seward [Sun, 27 Mar 2005 02:22:32 +0000 (02:22 +0000)] 
Implement ldmxcsr/stmxcsr.

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

20 years agoLooks like I forgot to tell memcheck not to bother to track
Julian Seward [Sun, 27 Mar 2005 02:21:52 +0000 (02:21 +0000)] 
Looks like I forgot to tell memcheck not to bother to track
definedness of the sse rounding mode info.  Fixed.

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

20 years agoMore paranoia
Julian Seward [Sun, 27 Mar 2005 02:20:56 +0000 (02:20 +0000)] 
More paranoia

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

20 years agoamd64 front/back end stuff needed to support x87 extended-real
Julian Seward [Sat, 26 Mar 2005 21:50:31 +0000 (21:50 +0000)] 
amd64 front/back end stuff needed to support x87 extended-real
loads/stores.

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

20 years agoFix comment.
Julian Seward [Sat, 26 Mar 2005 21:49:42 +0000 (21:49 +0000)] 
Fix comment.

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

20 years agoMove some conversion functions (IEEE double <-> x87 extended-real
Julian Seward [Sat, 26 Mar 2005 20:33:38 +0000 (20:33 +0000)] 
Move some conversion functions (IEEE double <-> x87 extended-real
format) into their own module, so they can be shared by the x86 and
amd64 front ends.

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

20 years agoGenerate IRStmt_IMark so that cachegrind et al work on amd64.
Julian Seward [Sat, 26 Mar 2005 13:15:23 +0000 (13:15 +0000)] 
Generate IRStmt_IMark so that cachegrind et al work on amd64.

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

20 years agoMove an assertion to a better place.
Julian Seward [Sat, 26 Mar 2005 13:14:54 +0000 (13:14 +0000)] 
Move an assertion to a better place.

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

20 years agoUpdate the embedded memcheck instrumenter so it works again.
Julian Seward [Sat, 26 Mar 2005 13:02:20 +0000 (13:02 +0000)] 
Update the embedded memcheck instrumenter so it works again.

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

20 years agoUpdate comment.
Julian Seward [Sat, 26 Mar 2005 12:57:39 +0000 (12:57 +0000)] 
Update comment.

Stare at sanity checks but still fail to figure out how to make them
cheaper.  The register allocator's sanity checks consume 15%-20% of
the total running time of Vex.

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

20 years agoicc -Wall cleanups
Julian Seward [Sat, 26 Mar 2005 11:59:23 +0000 (11:59 +0000)] 
icc -Wall cleanups

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

20 years agoreinstate test_misc()
Julian Seward [Sat, 26 Mar 2005 11:58:50 +0000 (11:58 +0000)] 
reinstate test_misc()

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

20 years agoFix bug? in do_put_x87 which would have resulting in FLDENV setting to
Julian Seward [Fri, 25 Mar 2005 22:39:28 +0000 (22:39 +0000)] 
Fix bug? in do_put_x87 which would have resulting in FLDENV setting to
zero registers which the to-be-loaded tag word indicates are empty.

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

20 years agoThe helper for FXAM wasn't setting the C1 flag correctly. This bug
Julian Seward [Fri, 25 Mar 2005 22:33:54 +0000 (22:33 +0000)] 
The helper for FXAM wasn't setting the C1 flag correctly.  This bug
is more-or-less undetectable at least if you use fstsw to examine
the results of FXAM, since fstsw doesn't copy C1.

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

20 years agoDo a sane level of testing.
Julian Seward [Fri, 25 Mar 2005 22:32:39 +0000 (22:32 +0000)] 
Do a sane level of testing.

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

20 years agoPut some ULLs at the end of 64-bit constants for good measure.
Julian Seward [Fri, 25 Mar 2005 20:31:46 +0000 (20:31 +0000)] 
Put some ULLs at the end of 64-bit constants for good measure.

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

20 years agoicc -Wall fixes
Julian Seward [Fri, 25 Mar 2005 20:30:58 +0000 (20:30 +0000)] 
icc -Wall fixes

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

20 years agoicc -Wall fixes
Julian Seward [Fri, 25 Mar 2005 20:30:32 +0000 (20:30 +0000)] 
icc -Wall fixes

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

20 years agoImplement %ffree.
Julian Seward [Fri, 25 Mar 2005 20:30:00 +0000 (20:30 +0000)] 
Implement %ffree.

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

20 years agoUpdate stuff in test harness.
Julian Seward [Fri, 25 Mar 2005 20:29:35 +0000 (20:29 +0000)] 
Update stuff in test harness.

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

20 years agoVery inadequate test program for fxam.
Julian Seward [Fri, 25 Mar 2005 20:29:00 +0000 (20:29 +0000)] 
Very inadequate test program for fxam.

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

20 years agoPlacate icc -Wall. Required hand-to-hand combat with icc, and I may
Julian Seward [Fri, 25 Mar 2005 14:39:37 +0000 (14:39 +0000)] 
Placate icc -Wall.  Required hand-to-hand combat with icc, and I may
have broken something.

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

20 years agoPlacate icc -Wall.
Julian Seward [Fri, 25 Mar 2005 14:07:11 +0000 (14:07 +0000)] 
Placate icc -Wall.

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

20 years agoIcc typechecker police.
Julian Seward [Fri, 25 Mar 2005 13:48:55 +0000 (13:48 +0000)] 
Icc typechecker police.

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

20 years agoFix some isel cases pertaining to 1-bit values. This makes lackey
Julian Seward [Thu, 24 Mar 2005 20:40:12 +0000 (20:40 +0000)] 
Fix some isel cases pertaining to 1-bit values.  This makes lackey
work on amd64.  Yay!

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

20 years agoDon't shout about kludged rdtsc
Julian Seward [Thu, 24 Mar 2005 20:39:05 +0000 (20:39 +0000)] 
Don't shout about kludged rdtsc

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

20 years agoReinstate 'xadd' instruction.
Julian Seward [Wed, 23 Mar 2005 13:34:11 +0000 (13:34 +0000)] 
Reinstate 'xadd' instruction.

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

20 years agoRe-enable a few cases.
Julian Seward [Wed, 23 Mar 2005 11:36:48 +0000 (11:36 +0000)] 
Re-enable a few cases.

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

20 years agoMake rdtsc return 1 instead of 0, to stop glibc's resolver looping.
Julian Seward [Wed, 23 Mar 2005 11:35:55 +0000 (11:35 +0000)] 
Make rdtsc return 1 instead of 0, to stop glibc's resolver looping.

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

20 years agoDeal more rationally with LOCK prefixes, correct at least in the way
Julian Seward [Wed, 23 Mar 2005 11:25:12 +0000 (11:25 +0000)] 
Deal more rationally with LOCK prefixes, correct at least in the way
Valgrind-3.0 intends to use Vex.  This should be applied to the x86 line
too.

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

20 years ago* widening (u)mulq from memory operand
Julian Seward [Wed, 23 Mar 2005 03:39:55 +0000 (03:39 +0000)] 
* widening (u)mulq from memory operand
* movb imm8,%bh (untested)

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

20 years agoFix silly bug introduced in r1066.
Julian Seward [Wed, 23 Mar 2005 03:02:50 +0000 (03:02 +0000)] 
Fix silly bug introduced in r1066.

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

20 years agoWe don't need two copies of this -- there's another in orig_x86.
Julian Seward [Tue, 22 Mar 2005 14:00:31 +0000 (14:00 +0000)] 
We don't need two copies of this -- there's another in orig_x86.

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

20 years agoTurns out the recent IRStmt_NoOp hackery broke the IR optimiser quite
Julian Seward [Tue, 22 Mar 2005 02:24:05 +0000 (02:24 +0000)] 
Turns out the recent IRStmt_NoOp hackery broke the IR optimiser quite
seriously.  It was still transforming correctly, but many of the
transformations had been hampered by no longer being able to recognise
no-ops properly.  This hopefully fixes it.

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

20 years agoamd64 back end: deal with (ignore) Ist_IMark and Ist_NoOp
Julian Seward [Tue, 22 Mar 2005 00:15:00 +0000 (00:15 +0000)] 
amd64 back end: deal with (ignore) Ist_IMark and Ist_NoOp

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

20 years agoGenerate offsets needed for V on amd64.
Julian Seward [Mon, 21 Mar 2005 17:41:45 +0000 (17:41 +0000)] 
Generate offsets needed for V on amd64.

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

20 years agoMake several more files compile cleanly with icc -Wall. Hopefully
Julian Seward [Mon, 21 Mar 2005 03:11:17 +0000 (03:11 +0000)] 
Make several more files compile cleanly with icc -Wall.  Hopefully
this doesn't break anything.

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

20 years agoThe "icc -Wall" placation project rumbles onward ...
Julian Seward [Mon, 21 Mar 2005 02:47:42 +0000 (02:47 +0000)] 
The "icc -Wall" placation project rumbles onward ...

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

20 years agoThe Icc typechecker police have been round banging on our doors again.
Julian Seward [Mon, 21 Mar 2005 01:06:20 +0000 (01:06 +0000)] 
The Icc typechecker police have been round banging on our doors again.
Placating icc -Wall is a Herculean task; I don't know if it will ever
get completed.

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

20 years agoBring up-to-date.
Julian Seward [Mon, 21 Mar 2005 01:03:49 +0000 (01:03 +0000)] 
Bring up-to-date.

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

20 years agoA small API change: pass both the guest and host word sizes to the
Julian Seward [Mon, 21 Mar 2005 00:54:33 +0000 (00:54 +0000)] 
A small API change: pass both the guest and host word sizes to the
instrumentatation functions.

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

20 years agoAdd a new IR statement kind: IRStmt_NoOp, to denote a no-operation.
Julian Seward [Mon, 21 Mar 2005 00:15:53 +0000 (00:15 +0000)] 
Add a new IR statement kind: IRStmt_NoOp, to denote a no-operation.
These are generated by the IR optimiser.  The use of no-ops replaces
the old practice of allowing a BB to contain NULL pointers in its
statement array as a way of denoting no-ops.  NULL stmts are now no
longer allowed under any circumstances, and the IR sanity checker will
reject any BB containing them.

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

20 years agoFix copy-n-paste-o spotted by Ceri.
Julian Seward [Mon, 21 Mar 2005 00:12:15 +0000 (00:12 +0000)] 
Fix copy-n-paste-o spotted by Ceri.

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

20 years agoThis commit looks big but it is really quite small. Fixes some
Julian Seward [Sun, 20 Mar 2005 18:44:44 +0000 (18:44 +0000)] 
This commit looks big but it is really quite small.  Fixes some
matters arising from the first-pass attempt at IRifying cachegrind:

* Make all library-user visible functions have names that
  match either LibVEX_* or *IR[A-Z]*.

* Put a comment at the top of libvex_ir.h explaining the
  naming scheme a little.

* Make a previously-private function public, giving eqIRAtom.

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

20 years agoThe party never stops in x86-land: implement 'fstsw' as cachegrind's
Julian Seward [Sun, 20 Mar 2005 12:51:39 +0000 (12:51 +0000)] 
The party never stops in x86-land: implement 'fstsw' as cachegrind's
regression tests require it.

Also tighten up assertion checking in putIReg, and update some
copyright notices.

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

20 years agoMore insns: ftst, movupd
Julian Seward [Sat, 19 Mar 2005 14:27:04 +0000 (14:27 +0000)] 
More insns: ftst, movupd

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

20 years agoMove this file to the right place.
Julian Seward [Sat, 19 Mar 2005 14:26:27 +0000 (14:26 +0000)] 
Move this file to the right place.

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

20 years agoTest for the x87 'tst' instruction. In the wrong place unfortunately.
Julian Seward [Sat, 19 Mar 2005 14:25:49 +0000 (14:25 +0000)] 
Test for the x87 'tst' instruction.  In the wrong place unfortunately.

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

20 years agoFramework for front-end floating point disassembly
Cerion Armour-Brown [Fri, 18 Mar 2005 12:23:33 +0000 (12:23 +0000)] 
Framework for front-end floating point disassembly

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

20 years agoFill in missing pinsrw memory-to-xmm case.
Julian Seward [Thu, 17 Mar 2005 14:03:46 +0000 (14:03 +0000)] 
Fill in missing pinsrw memory-to-xmm case.

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

20 years agoQuieten down gcc
Cerion Armour-Brown [Thu, 17 Mar 2005 14:03:36 +0000 (14:03 +0000)] 
Quieten down gcc

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

20 years agoUse ULong instead of Int for stopAfter and n_bbs_done - shouldn't run out of bbs...
Cerion Armour-Brown [Thu, 17 Mar 2005 13:11:06 +0000 (13:11 +0000)] 
Use ULong instead of Int for stopAfter and n_bbs_done - shouldn't run out of bbs for a while now...

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

20 years agohandy test wrapper
Cerion Armour-Brown [Thu, 17 Mar 2005 13:01:08 +0000 (13:01 +0000)] 
handy test wrapper

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

20 years agostop compiler errors on fp regs, add possibily of setting xer_ca, clearly choose...
Cerion Armour-Brown [Thu, 17 Mar 2005 13:00:11 +0000 (13:00 +0000)] 
stop compiler errors on fp regs, add possibily of setting xer_ca, clearly choose what tests to run

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

20 years agoPrint IMarks a bit more visibly.
Julian Seward [Thu, 17 Mar 2005 09:57:03 +0000 (09:57 +0000)] 
Print IMarks a bit more visibly.

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

20 years agoWe no longer need a complete spare copy of V hanging off the Vex tree.
Julian Seward [Wed, 16 Mar 2005 20:54:10 +0000 (20:54 +0000)] 
We no longer need a complete spare copy of V hanging off the Vex tree.

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

20 years agoAdd a new kind of IR stmt: "instruction marks" (IRStmt_IMark), so as
Julian Seward [Wed, 16 Mar 2005 18:19:10 +0000 (18:19 +0000)] 
Add a new kind of IR stmt: "instruction marks" (IRStmt_IMark), so as
to support profiling.  It is the responsibility of front ends (toIR.c)
to generate these.  For each instruction, the first IR stmt emitted
should be an IMark, stating the guest address and length of the guest
instruction represented by the IR that follows.  All IR stmts
following the IMark but before the next IMark are then assumed to
'belong to' the guest insn described by the first IMark.  IMarks do
not denote executable code and can be ignored at any point in the
proceedings; they are an optional addition which help
profiling-annotators to navigate the IR stmt stream.

This commit adds IR level infrastructure for IMarks and IMark
generation in the x86 front end.  The amd64 and ppc32 front end are
not yet done.

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