]> git.ipfire.org Git - thirdparty/valgrind.git/log
thirdparty/valgrind.git
20 years agoImplement SBB Ev,Gv.
Julian Seward [Wed, 20 Jul 2005 10:55:26 +0000 (10:55 +0000)] 
Implement SBB Ev,Gv.

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

20 years agoImplement LOOP disp8 (0xE2).
Julian Seward [Wed, 20 Jul 2005 10:15:34 +0000 (10:15 +0000)] 
Implement LOOP disp8 (0xE2).

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

20 years agoImplement F3 90 (rep nop).
Julian Seward [Wed, 20 Jul 2005 09:23:13 +0000 (09:23 +0000)] 
Implement F3 90 (rep nop).

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

20 years agoSpecialise NZ after ANDL/ORL/XORL. This fixes #109314.
Julian Seward [Wed, 20 Jul 2005 01:12:48 +0000 (01:12 +0000)] 
Specialise NZ after ANDL/ORL/XORL.  This fixes #109314.

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

20 years agoAdd some specialisation rules which are ultimately helpful in reduce
Julian Seward [Wed, 20 Jul 2005 00:30:37 +0000 (00:30 +0000)] 
Add some specialisation rules which are ultimately helpful in reduce
memcheck's false-error rate on inlined strlen and related nasties.

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

20 years agoMake ADC Ev,Gv work.
Julian Seward [Tue, 19 Jul 2005 23:59:54 +0000 (23:59 +0000)] 
Make ADC Ev,Gv work.

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

20 years agoiselCondCode: handle literals.
Julian Seward [Tue, 19 Jul 2005 08:42:56 +0000 (08:42 +0000)] 
iselCondCode: handle literals.

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

20 years agoAdd a folding rule for 1Sto16.
Julian Seward [Mon, 18 Jul 2005 13:58:49 +0000 (13:58 +0000)] 
Add a folding rule for 1Sto16.

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

20 years agoHandle 0 :: Ity_I1 as well as 1 :: Ity_I1.
Julian Seward [Mon, 18 Jul 2005 13:54:49 +0000 (13:54 +0000)] 
Handle 0 :: Ity_I1 as well as 1 :: Ity_I1.

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

20 years agoFix up linking/relocation a bit, and track API changes in r1272.
Julian Seward [Mon, 18 Jul 2005 11:39:47 +0000 (11:39 +0000)] 
Fix up linking/relocation a bit, and track API changes in r1272.

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

20 years agoTrack API changes in r1272.
Julian Seward [Mon, 18 Jul 2005 11:38:58 +0000 (11:38 +0000)] 
Track API changes in r1272.

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

20 years agoSome changes to the ppc32 compilation pipeline, with two aims:
Julian Seward [Mon, 18 Jul 2005 11:38:02 +0000 (11:38 +0000)] 
Some changes to the ppc32 compilation pipeline, with two aims:

* to achieve code quality comparable with x86/amd64 pipelines

* to make the value flow clearer to memcheck, in the hope of
  reducing the very high false error rate it gives on ppc

Code quality is substantially improved, but the error rate is just as
high as it was before.  Needs investigation.

Many instructions are now commented out -- mostly they just need
commenting back in.  Simple integer programs (date, ls, xfontsel)
work.

Front end changes
~~~~~~~~~~~~~~~~
Change the way CR and XER are represented, and hence redo the way
integer comparisons and conditional branches work:

* Introduce a two new IR primops CmpORD32S and CmpORD32U; these do
  ppc-style 3-way comparisons (<, >, ==).  It's hard to simulate ppc
  efficiently without them.  Use these to implement integer compares.

* Get rid of all thunks for condition codes -- CR and XER state
  is always up to date now.

* Split XER into four fields and CR into 16 fields, so that
  their various components can be accessed directly without
  endless shifting and masking.  Created suitable impedance
  matching functions to read/write XER and CR as a whole.

* Use hardware BI numbering throughout.

Back end changes
~~~~~~~~~~~~~~~
* Simplify condition code handling and use hardware BI numbering
  throughout

* Reduce the number of instruction kinds by merging integer subtracts
  and shifts into PPC32Instr_Alu32.  Use rlwimi to do Shl/Shr by
  immediate.

* Create a copy of PPC32RI (reg-or-imm) called PPC32RH
  (reg-or-halfword-imm), and give the latter a flag indicating whether
  the imm is regarded as signed or not.  Use PPC32RH in most places
  where PPC32RI was used before.

* Add instruction selection functions to compute a value into a
  PPC32RI, a PPC32RH of specified signedness, and a PPC32RH variant in
  which the immediate is unsigned and in the range 1 .. 31 inclusive
  (used for shifts-by-immediate).

* Simplify PPC32Instr_MulL; all 3 operands are now simply registers.

* Add a new (fake) insn PPC32Instr_LI32 to get arbitrary 32-bit
  immediates into int registers; this hides all the ugly li vs lis/ori
  details.

* Handle CmpORD32{S,U}.

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

20 years agoFix build breakage.
Julian Seward [Thu, 14 Jul 2005 07:00:06 +0000 (07:00 +0000)] 
Fix build breakage.

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

20 years agoImplement 8-byte-transfer cases for lwsi and stswi.
Julian Seward [Fri, 8 Jul 2005 21:55:22 +0000 (21:55 +0000)] 
Implement 8-byte-transfer cases for lwsi and stswi.

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

20 years agoAdded LibVEX_GuestPPC32_put_cr7(), LibVEX_GuestPPC32_put_cr()
Cerion Armour-Brown [Fri, 8 Jul 2005 13:34:47 +0000 (13:34 +0000)] 
Added LibVEX_GuestPPC32_put_cr7(), LibVEX_GuestPPC32_put_cr()

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

20 years agoAdded LibVEX_GuestPPC32_get_cr() for easy access to entire cond reg
Cerion Armour-Brown [Fri, 8 Jul 2005 13:10:35 +0000 (13:10 +0000)] 
Added LibVEX_GuestPPC32_get_cr() for easy access to entire cond reg
Filled in some missing defaults in LibVEX_GuestPPC32_initialise()

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

20 years agoMy life is one endless stream of small things which don't quite work.
Julian Seward [Thu, 7 Jul 2005 14:15:35 +0000 (14:15 +0000)] 
My life is one endless stream of small things which don't quite work.
This time it's gcc giving us an instruction with REX.W redundantly set
to 1.

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

20 years agoComment-only-change: record subtle interactions between self-checks
Julian Seward [Thu, 7 Jul 2005 13:52:03 +0000 (13:52 +0000)] 
Comment-only-change: record subtle interactions between self-checks
and bb chasing.

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

20 years agoFix bits and pieces needed to make self-checking-translations work
Julian Seward [Thu, 7 Jul 2005 13:12:04 +0000 (13:12 +0000)] 
Fix bits and pieces needed to make self-checking-translations work
on amd64.

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

20 years agoTidy up some loose ends in the self-checking-translations machinery,
Julian Seward [Thu, 7 Jul 2005 12:26:36 +0000 (12:26 +0000)] 
Tidy up some loose ends in the self-checking-translations machinery,
and unroll the adler32 loop in a not-very-successful attempt to reduce
the overhead of checking.

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

20 years agoMake LibVEX_Translate (an API fn) take a Bool indicating whether or
Julian Seward [Thu, 7 Jul 2005 09:56:24 +0000 (09:56 +0000)] 
Make LibVEX_Translate (an API fn) take a Bool indicating whether or
not a self-checking translation has been requested.

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

20 years agoBasic support for self-checking translations. It fits quite neatly
Julian Seward [Thu, 7 Jul 2005 01:32:16 +0000 (01:32 +0000)] 
Basic support for self-checking translations.  It fits quite neatly
into the IR: if a translation self-check fails, the translation exits
passing VEX_TRC_JMP_TINVAL to the despatcher and with the
guest_TISTART/guest_TILEN pseudo-registers indicating what area of the
guest code needs to be invalidated.  The actual checksumming is done
by a helper function which does (a variant of) the Adler32 checksum.

Space/time overhead, whilst substantial, looks tolerable.  There's a
little room for optimisation of the basic scheme.  It would certainly
be viable to run with self-checking for all translations to support
Valgrinding JITs (including V itself) without any assistance from the
JIT.

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

20 years agoKeep older versions of gcc (3.0.4) happy.
Julian Seward [Tue, 5 Jul 2005 23:54:16 +0000 (23:54 +0000)] 
Keep older versions of gcc (3.0.4) happy.

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

20 years ago... and fix the fix (oh for clear documentation...)
Cerion Armour-Brown [Mon, 4 Jul 2005 12:16:56 +0000 (12:16 +0000)] 
... and fix the fix (oh for clear documentation...)

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

20 years agofixed load-mult-word bad-insn-check bug
Cerion Armour-Brown [Mon, 4 Jul 2005 11:56:13 +0000 (11:56 +0000)] 
fixed load-mult-word bad-insn-check bug

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

20 years agoWhat is it with me add and's!
Cerion Armour-Brown [Mon, 4 Jul 2005 11:47:44 +0000 (11:47 +0000)] 
What is it with me add and's!

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

20 years agoBringing back load/store multiple word. *These insns not yet checked*
Cerion Armour-Brown [Mon, 4 Jul 2005 11:11:59 +0000 (11:11 +0000)] 
Bringing back load/store multiple word.  *These insns not yet checked*

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

20 years agoImplement fcmovu/fcmovnu. gcc-4.0.1 -msse2 -ftree-vectorize generates them.
Julian Seward [Mon, 4 Jul 2005 10:26:32 +0000 (10:26 +0000)] 
Implement fcmovu/fcmovnu.  gcc-4.0.1 -msse2 -ftree-vectorize generates them.

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

20 years agoAdd some casts.
Julian Seward [Mon, 4 Jul 2005 10:08:24 +0000 (10:08 +0000)] 
Add some casts.

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

20 years agoA further hack to reduce ppc32 reg-alloc costs: don't give the
Julian Seward [Mon, 4 Jul 2005 09:40:56 +0000 (09:40 +0000)] 
A further hack to reduce ppc32 reg-alloc costs: don't give the
regalloc so many registers to play with.  In the majority of cases it
won't be able to make much use of vast hordes of FP and Altivec
registers anyway.

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

20 years agoFix (well, ameliorate, at least) some lurking performance problems
Julian Seward [Mon, 4 Jul 2005 09:38:58 +0000 (09:38 +0000)] 
Fix (well, ameliorate, at least) some lurking performance problems
(time taken to do register allocation, not quality of result) which
were tolerable when allocating for x86/amd64 but got bad when dealing
with ppc-ish numbers of real registers (90 ish).

* Don't sanity-check the entire regalloc state after each insn
  processed; this is total overkill.  Instead do it every 7th insn
  processed (somewhat arbitrarily) and just before the last insn.

* Reinstate an optimisation from the old UCode allocator: shadow
  the primary state structure (rreg_state) with a redundant inverse
  mapping (vreg_state) to remove the need to search
  through rreg_state when looking for info about a given vreg, a
  very common operation.  Add logic to keep the two maps consistent.
  Add a sanity check to ensure they really are consistent.

* Rename some variables and macros to make the code easier to
  understand.

On x86->x86 (--tool=none), total Vex runtime is reduced by about 10%,
and amd64 is similar.  For ppc32 the vex runtime is nearly halved.  On
x86->x86 (--tool=none), register allocation now consumes only about
10% of the total Vex run time.

When hooked up to Valgrind, run time of short-running programs --
which is dominated by translation time -- is reduced by up to 10%.

Calltree/kcachegrind/cachegrind proved instrumental in tracking down
and quantifying these performance problems.  Thanks, Josef & Nick.

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

20 years agoFix comment.
Julian Seward [Mon, 4 Jul 2005 09:21:19 +0000 (09:21 +0000)] 
Fix comment.

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

20 years agoGet rid of endianness assumption in client-request-spotter.
Julian Seward [Sun, 3 Jul 2005 01:51:29 +0000 (01:51 +0000)] 
Get rid of endianness assumption in client-request-spotter.

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

20 years agoChange type of deltas from ULong to Long throughout. Probably
Julian Seward [Sun, 3 Jul 2005 01:03:01 +0000 (01:03 +0000)] 
Change type of deltas from ULong to Long throughout.  Probably
pointless.

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

20 years agoChange type of deltas from UInt to Int throughout. Probably
Julian Seward [Sun, 3 Jul 2005 00:52:48 +0000 (00:52 +0000)] 
Change type of deltas from UInt to Int throughout.  Probably
pointless.

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

20 years agoType casting cleanups.
Julian Seward [Sun, 3 Jul 2005 00:05:31 +0000 (00:05 +0000)] 
Type casting cleanups.

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

20 years agoThe logic that drove basic block to IR disassembly had been duplicated
Julian Seward [Sat, 2 Jul 2005 19:24:10 +0000 (19:24 +0000)] 
The logic that drove basic block to IR disassembly had been duplicated
over the 3 front ends (x86, amd64, ppc32).  Given the need to take
into account basic block chasing, adding of instruction marks, etc,
the logic is not completely straightforward, and so commoning it up is
a good thing.

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

20 years agoFix backend bug: the immediate on PPC32AMode_IR is 16 bits signed, not
Julian Seward [Sat, 2 Jul 2005 01:29:32 +0000 (01:29 +0000)] 
Fix backend bug: the immediate on PPC32AMode_IR is 16 bits signed, not
unsigned.

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

20 years agoImplemented altivec load: lvx - xfontsel runs now (tool=none)
Cerion Armour-Brown [Fri, 1 Jul 2005 21:16:10 +0000 (21:16 +0000)] 
Implemented altivec load: lvx - xfontsel runs now (tool=none)
plus a little cleaning of toIR.c

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

20 years agoCleaned up read/write register functions, wrt XER, and fixed a bug for write to VSCR.
Cerion Armour-Brown [Fri, 1 Jul 2005 18:56:33 +0000 (18:56 +0000)] 
Cleaned up read/write register functions, wrt XER, and fixed a bug for write to VSCR.

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

20 years agoFixed a couple of bugs relating to condition register reading/writing, and conditiona...
Cerion Armour-Brown [Fri, 1 Jul 2005 18:44:52 +0000 (18:44 +0000)] 
Fixed a couple of bugs relating to condition register reading/writing, and conditional register logic

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

20 years agocomment-only change: renumber register offsets correctly
Cerion Armour-Brown [Fri, 1 Jul 2005 18:41:01 +0000 (18:41 +0000)] 
comment-only change: renumber register offsets correctly

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

20 years agoYet Another Folding Rule (YAFR) (tm)
Julian Seward [Fri, 1 Jul 2005 10:51:24 +0000 (10:51 +0000)] 
Yet Another Folding Rule (YAFR) (tm)

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

20 years agoTrack recent API change (introduction of VexArchInfo).
Julian Seward [Fri, 1 Jul 2005 10:50:50 +0000 (10:50 +0000)] 
Track recent API change (introduction of VexArchInfo).

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

20 years agoEnhance IR so as to distinguish between little- and big-endian loads and
Julian Seward [Thu, 30 Jun 2005 23:31:27 +0000 (23:31 +0000)] 
Enhance IR so as to distinguish between little- and big-endian loads and
stores, so that PPC can be properly handled.  Until now it's been hardwired
to assume little-endian.

As a result, IRStmt_STle is renamed IRStmt_Store and IRExpr_LDle is
renamed IRExpr_Load.

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

20 years agodeltaIRStmt: handle IRStmt_MFence.
Julian Seward [Thu, 30 Jun 2005 13:38:38 +0000 (13:38 +0000)] 
deltaIRStmt: handle IRStmt_MFence.

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

20 years agoFix pointer-type mismatches.
Julian Seward [Thu, 30 Jun 2005 12:50:50 +0000 (12:50 +0000)] 
Fix pointer-type mismatches.

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

20 years agoComment wibble
Julian Seward [Thu, 30 Jun 2005 12:26:18 +0000 (12:26 +0000)] 
Comment wibble

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

20 years agoFill in guest_ppc32_state_requires_precise_mem_exns() properly, so Vex
Julian Seward [Thu, 30 Jun 2005 12:21:04 +0000 (12:21 +0000)] 
Fill in guest_ppc32_state_requires_precise_mem_exns() properly, so Vex
has a bit more of a chance of optimising the IR.

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

20 years agoConnect up the plumbing which allows the ppc32 front end to know the
Julian Seward [Thu, 30 Jun 2005 12:08:48 +0000 (12:08 +0000)] 
Connect up the plumbing which allows the ppc32 front end to know the
cache line size it is supposed to simulate.  Use this in
dis_cache_manage().  Finally reinstate 'dcbz'.

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

20 years ago(API-visible change): generalise the VexSubArch idea. Everywhere
Julian Seward [Thu, 30 Jun 2005 11:49:14 +0000 (11:49 +0000)] 
(API-visible change): generalise the VexSubArch idea.  Everywhere
where a VexSubArch was previously passed around, a VexArchInfo is now
passed around.  This is a struct which carries more details about any
given architecture and in particular gives a clean way to pass around
info about PPC cache line sizes, which is needed for guest-side PPC.

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

20 years agoWe have more than 59 allocateable regs now (duh)
Cerion Armour-Brown [Wed, 29 Jun 2005 19:05:08 +0000 (19:05 +0000)] 
We have more than 59 allocateable regs now (duh)
+ Better insn printout for altivec load/store

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

20 years agosome more isel cases: v128,f32
Cerion Armour-Brown [Wed, 29 Jun 2005 19:01:32 +0000 (19:01 +0000)] 
some more isel cases: v128,f32

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

20 years agoFixed bug in doHelperCall, passing LONG_LONG params
Cerion Armour-Brown [Wed, 29 Jun 2005 18:53:23 +0000 (18:53 +0000)] 
Fixed bug in doHelperCall, passing LONG_LONG params

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

20 years agoFixed coupla altivec typos
Cerion Armour-Brown [Wed, 29 Jun 2005 07:59:18 +0000 (07:59 +0000)] 
Fixed coupla altivec typos
 - hopefully fixes FC4 build

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

20 years agoImplemented just enough of isel for an AltiVec store
Cerion Armour-Brown [Tue, 28 Jun 2005 21:07:02 +0000 (21:07 +0000)] 
Implemented just enough of isel for an AltiVec store
 - ls runs on g5 now, yay!

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

20 years agoReshuffled host-ppc32 AltiVec integer insns
Cerion Armour-Brown [Tue, 28 Jun 2005 20:59:18 +0000 (20:59 +0000)] 
Reshuffled host-ppc32 AltiVec integer insns
Added some AltiVec fp insns and CMov

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

20 years agoPPC32 AltiVec host-end framework & intruction output
Cerion Armour-Brown [Tue, 28 Jun 2005 18:06:23 +0000 (18:06 +0000)] 
PPC32 AltiVec host-end framework & intruction output
 - no fp yet

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

20 years agoPPC32 AltiVec reg offsets
Cerion Armour-Brown [Tue, 28 Jun 2005 17:30:56 +0000 (17:30 +0000)] 
PPC32 AltiVec reg offsets

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

20 years agoAltiVec insn parsing for guest end.
Cerion Armour-Brown [Tue, 28 Jun 2005 17:23:09 +0000 (17:23 +0000)] 
AltiVec insn parsing for guest end.

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

20 years agofixed sign-extension bug for branches
Cerion Armour-Brown [Fri, 24 Jun 2005 11:25:46 +0000 (11:25 +0000)] 
fixed sign-extension bug for branches

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

20 years agoDisable i-am-kludged messages in the cache control insns.
Julian Seward [Thu, 23 Jun 2005 22:38:45 +0000 (22:38 +0000)] 
Disable i-am-kludged messages in the cache control insns.

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

20 years agoDisable dangerous case in advance4 which is not currently needed.
Julian Seward [Thu, 23 Jun 2005 21:14:45 +0000 (21:14 +0000)] 
Disable dangerous case in advance4 which is not currently needed.

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

20 years agoAdded isel Ist_Tmp:Ity_I64, iselInt64Expr::Iex_Get
Cerion Armour-Brown [Thu, 23 Jun 2005 15:25:57 +0000 (15:25 +0000)] 
Added isel Ist_Tmp:Ity_I64, iselInt64Expr::Iex_Get
Allowed 64-bit args for doHelperCall()

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

20 years ago... and write 64bit vals the right way around...
Cerion Armour-Brown [Thu, 23 Jun 2005 12:45:11 +0000 (12:45 +0000)] 
... and write 64bit vals the right way around...

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

20 years agoAdded to insn selector: CmpNEZ8, Ist_Put::Ity_I64
Cerion Armour-Brown [Thu, 23 Jun 2005 11:00:14 +0000 (11:00 +0000)] 
Added to insn selector: CmpNEZ8, Ist_Put::Ity_I64

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

20 years agoFix ppc32 'Call' bug
Cerion Armour-Brown [Thu, 23 Jun 2005 08:44:52 +0000 (08:44 +0000)] 
Fix ppc32 'Call' bug
 - was (very) incorrectly jumping over the call on cond failure

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

20 years agoamd64 back end: handle 8Uto32.
Julian Seward [Tue, 21 Jun 2005 13:51:18 +0000 (13:51 +0000)] 
amd64 back end: handle 8Uto32.

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

20 years agocomment wibble
Cerion Armour-Brown [Mon, 20 Jun 2005 16:28:32 +0000 (16:28 +0000)] 
comment wibble

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

20 years agothis one was x86 code. grr.
Cerion Armour-Brown [Mon, 20 Jun 2005 14:57:59 +0000 (14:57 +0000)] 
this one was x86 code. grr.

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

20 years agomore ppc32 .orig files
Cerion Armour-Brown [Mon, 20 Jun 2005 13:52:30 +0000 (13:52 +0000)] 
more ppc32 .orig files

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

20 years agoFloating-point for ppc32
Cerion Armour-Brown [Mon, 20 Jun 2005 13:45:57 +0000 (13:45 +0000)] 
Floating-point for ppc32

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

20 years agoguest-ppc32
Cerion Armour-Brown [Mon, 20 Jun 2005 12:42:04 +0000 (12:42 +0000)] 
guest-ppc32
~~~~~~~~~~
- store-with-update instrs: Valgrind pagefault handler expects faulting address >= current stack ptr, so we need to update the stack ptr register _before_ storing the old stack ptr
- branch_ctr_ok (bad calc for 'branch if %ctr zero' case)
- mcrf: scanning bitfields in the wrong direction
- on spotting the magic sequence, delta += 24
- updated DIPs for +ve-only args

host-ppc32
~~~~~~~~~
- fixed CMov reg usage
- fixed Pin_Call in emit_PPC32Instr(): we already know how far we're jumping
- fixed Pin_Goto in emit_PPC32Instr(): vassert right range of jump deltas

other-ppc32
~~~~~~~~~~
- exported OFFSET_ppc32_(various) for valgrind

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

20 years agofix 'Usage:'
Cerion Armour-Brown [Mon, 20 Jun 2005 12:15:54 +0000 (12:15 +0000)] 
fix 'Usage:'

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

20 years agoicc police strike again
Julian Seward [Tue, 14 Jun 2005 21:59:16 +0000 (21:59 +0000)] 
icc police strike again

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

20 years agoMake iropt not complain about missing folding rules at the default
Julian Seward [Mon, 13 Jun 2005 16:30:18 +0000 (16:30 +0000)] 
Make iropt not complain about missing folding rules at the default
verbosity setting (zero).

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

20 years agoThe guest-state effect declaration for x86 'fldenv' has been wrong for
Julian Seward [Mon, 13 Jun 2005 12:33:36 +0000 (12:33 +0000)] 
The guest-state effect declaration for x86 'fldenv' has been wrong for
a long time -- it says fldenv writes the FP regs, which isn't true.

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

20 years agoImplement fldenv/fstenv on amd64.
Julian Seward [Mon, 13 Jun 2005 12:17:27 +0000 (12:17 +0000)] 
Implement fldenv/fstenv on amd64.

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

20 years agoamd64: handle MOVUPS G to E
Julian Seward [Fri, 10 Jun 2005 11:04:52 +0000 (11:04 +0000)] 
amd64: handle MOVUPS G to E

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

20 years agoApparently someone somewhere in some obscure library deep in the
Julian Seward [Mon, 30 May 2005 11:19:54 +0000 (11:19 +0000)] 
Apparently someone somewhere in some obscure library deep in the
basement of mozilla requires 'lods'.

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

20 years agoHandle fnclex, needed by g95.
Julian Seward [Wed, 25 May 2005 00:44:13 +0000 (00:44 +0000)] 
Handle fnclex, needed by g95.

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

20 years agoAdd a folding rule for 1Uto64.
Julian Seward [Fri, 20 May 2005 19:21:45 +0000 (19:21 +0000)] 
Add a folding rule for 1Uto64.

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

20 years agoHandle XCHG Gb,Eb.
Julian Seward [Wed, 18 May 2005 12:04:04 +0000 (12:04 +0000)] 
Handle XCHG Gb,Eb.

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

20 years agoHandle XCHG rAX, reg for 32-bit regs as well as 64-bit regs. I'm not
Julian Seward [Wed, 18 May 2005 11:47:47 +0000 (11:47 +0000)] 
Handle XCHG rAX, reg for 32-bit regs as well as 64-bit regs.  I'm not
sure this is right -- the AMD64 docs are very difficult to interpret
on the subtle point of precisely what is and isn't to be regarded as a
no-op.

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

20 years agoHandle XOR Ib, AL.
Julian Seward [Wed, 18 May 2005 10:22:47 +0000 (10:22 +0000)] 
Handle XOR Ib, AL.

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

20 years agoFix behaviour of MOVQ on amd64.
Julian Seward [Sat, 14 May 2005 11:17:25 +0000 (11:17 +0000)] 
Fix behaviour of MOVQ on amd64.

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

20 years agoFinally fix the behaviour of MOVQ (xmm -> xmm).
Julian Seward [Sat, 14 May 2005 02:04:12 +0000 (02:04 +0000)] 
Finally fix the behaviour of MOVQ (xmm -> xmm).

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

20 years agoHandle NegF64.
Julian Seward [Sat, 14 May 2005 02:02:50 +0000 (02:02 +0000)] 
Handle NegF64.

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

20 years agoReinstate a SBB case.
Julian Seward [Fri, 13 May 2005 13:54:48 +0000 (13:54 +0000)] 
Reinstate a SBB case.

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

20 years agoReinstate a bunch more x87 instructions.
Julian Seward [Thu, 12 May 2005 19:21:55 +0000 (19:21 +0000)] 
Reinstate a bunch more x87 instructions.

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

20 years agoAdd the beginnings of what might be a general mechanism to pass
Julian Seward [Thu, 12 May 2005 17:55:01 +0000 (17:55 +0000)] 
Add the beginnings of what might be a general mechanism to pass
ABI-specific knowledge through the IR compilation pipeline.  This
entails a new IR construction, AbiHint.

Currently there is only one kind of hint, and it is generated by the
amd64 front end.  This tells whoever wants to know that a function
call or return has happened, and so the 128 bytes below %rsp should be
considered undefined.

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

20 years agoMore floating-point tuning.
Julian Seward [Thu, 12 May 2005 02:14:52 +0000 (02:14 +0000)] 
More floating-point tuning.

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

20 years agoAdd a couple more %rflag-helper specialisations.
Julian Seward [Wed, 11 May 2005 23:16:43 +0000 (23:16 +0000)] 
Add a couple more %rflag-helper specialisations.

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

20 years agoAllow reg-alloc to use %rbx. This is a callee-saved register and
Julian Seward [Wed, 11 May 2005 23:16:13 +0000 (23:16 +0000)] 
Allow reg-alloc to use %rbx.  This is a callee-saved register and
therefore particularly valuable - bringing it into circulation reduces
the volume of code generated by memcheck by about 3%.

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

20 years agoAh, the joys of register allocation. You might think that giving
Julian Seward [Wed, 11 May 2005 22:55:08 +0000 (22:55 +0000)] 
Ah, the joys of register allocation.  You might think that giving
reg-alloc as many registers as possible maximises performance.  You
would be wrong.  Giving it more registers generates more spilling of
caller-saved regs around the innumerable helper calls created by
Memcheck.  What we really need are zillions of callee-save registers,
but those are in short supply.  Hmm, perhaps I should let it use %rbx
too -- that's listed as callee-save.

Anyway, the current arrangement allows reg-alloc to use 8
general-purpose regs and 10 xmm registers.  The x87 registers are not
used at all.  This seems to work fairly well.

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

20 years agoDo a bit better for (part of) a very common memcheck idiom: "is this
Julian Seward [Wed, 11 May 2005 22:47:32 +0000 (22:47 +0000)] 
Do a bit better for (part of) a very common memcheck idiom: "is this
pointer defined ?"

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

20 years agogcc-2.96 build fixes
Julian Seward [Wed, 11 May 2005 16:24:00 +0000 (16:24 +0000)] 
gcc-2.96 build fixes

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

20 years agoMake the amd64 back end capable of dealing with the stuff memcheck
Julian Seward [Wed, 11 May 2005 16:13:37 +0000 (16:13 +0000)] 
Make the amd64 back end capable of dealing with the stuff memcheck
generates for 128-bit vector primops.

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

20 years agoAMD64 backend cleanup: get rid of instruction variants which the insn
Julian Seward [Wed, 11 May 2005 15:37:50 +0000 (15:37 +0000)] 
AMD64 backend cleanup: get rid of instruction variants which the insn
selector doesn't generate.

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

20 years agoThese cases are now verified.
Julian Seward [Wed, 11 May 2005 10:05:04 +0000 (10:05 +0000)] 
These cases are now verified.

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