History log of /external/valgrind/memcheck/mc_translate.c
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
72e4640ec92ff566dbba01f69197865016cfeb84 05-Sep-2015 florian <florian@a5019735-40e9-0310-863c-91ae7b9d1cf9> Changes related to new IROp Iop_RoundF128toInt. See VEX r3183.
s390: Add testcase for fixbr.
Patch by Andreas Arnez <arnez@linux.vnet.ibm.com>.
Part of fixing BZ #350290.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15629 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
2672faefb066656b3c757a711c7eda4189aa2c89 01-Sep-2015 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Rename the new option --expensive-definedness-check introduced in
r15594 to --expensive-definedness-checks. (Pluralised it, iow.)


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15611 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
9ee20ebd0a2f2872b9fc4d93648e044ede2f2d87 27-Aug-2015 florian <florian@a5019735-40e9-0310-863c-91ae7b9d1cf9> New memcheck command line option: --expensive-definedness-check
Pertains to BZ #340392


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15594 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
b3a1e4bffbdbbf38304f216af405009868f43628 21-Aug-2015 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Update copyright dates, to include 2015. No functional change.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15577 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
9dc5dd68225707ddec0aa432eb3d47e12efa6a4a 21-Aug-2015 florian <florian@a5019735-40e9-0310-863c-91ae7b9d1cf9> When scanning the statement list for bogus literals we
can stop once the first such literal was found. No need
to scan further.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15574 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
290b9cabbd2b2c42db10cd79921403cc231e4f7c 12-Aug-2015 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Handle new ILGop_IdentV128 introduced by vex r3169.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15522 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
ad4e979f408239dabbaae955d8ffcb84a51a5c85 05-Jul-2015 florian <florian@a5019735-40e9-0310-863c-91ae7b9d1cf9> Fix typos in source code. Patch by Dmitriy (olshevskiy87@bk.ru).
Fixes BZ #349874


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15394 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
d4dc5fc0e4091cead54ebbcdfddc60e0f3ff8081 01-May-2015 philippe <philippe@a5019735-40e9-0310-863c-91ae7b9d1cf9> This patch adds a function that allows to directly properly size an xarray
when the size is known in advance.

3 places identified where this function can be used trivially.

The result is a reduction of 'realloc' operations in core
arena, and a small reduction in ttaux arena
(it is the nr of operations that decreases, the memory usage itself
stays the same (ignoring some 'rounding' effects).

E.g. for perf/bigcode 0, we change from
core 1085742/ 216745904 totalloc-blocks/bytes, 1085733 searches
ttaux 5348/ 6732560 totalloc-blocks/bytes, 5326 searches
to
core 712666/ 190998592 totalloc-blocks/bytes, 712657 searches
ttaux 5319/ 6731808 totalloc-blocks/bytes, 5296 searches

For bz2, we switch from
core 50285/ 32383664 totalloc-blocks/bytes, 50256 searches
ttaux 670/ 245160 totalloc-blocks/bytes, 669 searches
to
core 32564/ 29971984 totalloc-blocks/bytes, 32535 searches
ttaux 605/ 243280 totalloc-blocks/bytes, 604 searches

Performance wise, on amd64, this improves memcheck performance
on perf tests by 0.0, 0.1 or 0.2 seconds depending on the test.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15173 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
7222f649c0dab0f50f5a60f841accc64a127856e 07-Apr-2015 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Track vex r3120, that changed the type of Iop_Sqrt64x2 and Iop_Sqrt32x4.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15074 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
1f4b1ebde67b0277f4f61ee3a00f8f47163f0678 06-Apr-2015 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Memcheck: add support for recently added IROps:
Iop_F64toF16
Iop_F32toF16
Iop_F16toF64
Iop_F16toF32



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15070 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
143507687feede3a6ff901684859e1e0db3c4f98 24-Feb-2015 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Handle new IROps added in vex r3092:
Iop_RecipStep64Fx2, Iop_RSqrtStep64Fx2
Iop_RSqrtEst64Fx2, Iop_RecipEst64Fx2
Iop_RecpExpF64, Iop_RecpExpF32
--This line, and those below, will be ignored--

M memcheck/mc_translate.c


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14959 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
be9d235a4fa09afd7a3384b335eac5cae9251b1e 28-Jan-2015 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Handle new value ILGop_Ident64 in enum type IRLoadGOp. This tracks
vex r3074.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14892 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
f466eef8e53aafcb617997e1ca18b7c829168db8 02-Jan-2015 florian <florian@a5019735-40e9-0310-863c-91ae7b9d1cf9> Track the IMark changes in VEX r3055.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14844 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
f837aa7d6dfed0424b23b9c46d7fadbc6af2a060 20-Nov-2014 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> isBogusAtom: handle missing case Ico_F32.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14740 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
3c0c94777f547bcb5eadbe8cb4328debf0f51875 24-Sep-2014 florian <florian@a5019735-40e9-0310-863c-91ae7b9d1cf9> Ripple from constifying parameters of instrumentation functions and
callbacks from VexTranslateArgs. See VEX r2958.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14564 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
7b7b1cbe53ee541a803e1e00b58d58fcee65aa97 01-Sep-2014 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Track vex r2939 (renaming and arg-order change for Iop_Extract{64,V128}).


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14404 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
bfd03f8a6388bf367e61b7b2523f34eb215a8168 26-Aug-2014 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Handle the new IROps introduced to support ARM64 SIMD.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14362 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
147865ccf6e5711cd910f2b1532da59ad1d78bb9 26-Aug-2014 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Iop_Rol64x2 was handled as if it were a 32x4 case. This moves
it to the right place.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14361 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
ee6bb779947e3e5350a083d5e87efa18ffddedcf 24-Aug-2014 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Track renaming of {reciprocal, reciprocal sqrt}{estimate, step}
primops in vex r2932.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14350 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
e541e222ef15d58e1a61f97fcf729468628efa54 15-Aug-2014 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Track vex r2924 (Renaming of Iop_QSalN*, Iop_QShlN* and Iop_QShlN*S)


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14282 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
4d6ce849ad8534867072dbc7ed31464019e23396 21-Jul-2014 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Track vex r2907, which amongst other things, renamed Iop_QDMulLong* to
Iop_QDMull*.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14178 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
55404925be52fe200bf22e31959573df7ba870a4 26-Jun-2014 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Track vex r2890 (renaming of vector subparts-of-lanes-reversal IROps)


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14103 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
2e4d5af35b4e326fef32e503d210f3bcc25238cf 26-Jun-2014 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Track vex r2889 (rename vector Cls/Clz primops)


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14102 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
87a5bad8b2742f75dd60ba505d9f8d660cde3aba 15-Jun-2014 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Handle new IROp Iop_Abs64x2.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14043 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
c46e6ccde63cd661f1f781d78054ef8cd86f8536 10-Mar-2014 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Handle IROps introduced by the arm64 port:
Iop_ZeroHI64ofV128, Iop_ZeroHI96ofV128, Iop_ZeroHI112ofV128,
Iop_ZeroHI120ofV128, Iop_Abs64Fx2, Iop_Neg64Fx2



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13860 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
1eb272f53fadb410dd27fb38fb1be75af84868d0 26-Jan-2014 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Handle and instrument an extra rounding-mode argument as added by
vex r2809 to the following primops:

Iop_Add32Fx4, Iop_Sub32Fx4, Iop_Mul32Fx4, Iop_Div32Fx4,
Iop_Add64Fx2, Iop_Sub64Fx2, Iop_Mul64Fx2, Iop_Div64Fx2,
Iop_Add64Fx4, Iop_Sub64Fx4, Iop_Mul64Fx4, Iop_Div64Fx4,
Iop_Add32Fx8, Iop_Sub32Fx8, Iop_Mul32Fx8, Iop_Div32Fx8,



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13781 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
a150fe951e31f5bfde41e5c12e65f5a48f07779a 11-Dec-2013 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Select expensive add/sub/cmp interpretations for blocks containing
Iop_GetMSBs8x16, since the presence of those usually implies PMOVMSKB
instructions in the block, which can mean "inlined string operations".
Reduces the noise level a lot in some icc12 -O2 generated sequences.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13757 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
0f157ddb404bcde7815a1c5bf2d7e41c114f3d73 18-Oct-2013 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Update copyright dates (20XY-2012 ==> 20XY-2013)


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13658 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
e6bd3e49c6f37b871974c3b5212476f1eed3fb77 18-Oct-2013 carll <carll@a5019735-40e9-0310-863c-91ae7b9d1cf9> This commit adds testing support for the following instructions:
vaddcuq, vadduqm, vaddecuq, vaddeuqm,
vsubcuq, vsubuqm, vsubecuq, vsubeuqm,
vbpermq and vgbbd.

The completes adding the Power ISA 2.07 support.

Bugzilla 325816

VEX commit id 2790


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13653 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
24e40de8f2127d70117ed9af3bc4474cbc29cb8a 15-Oct-2013 carll <carll@a5019735-40e9-0310-863c-91ae7b9d1cf9> Power 8 support, phase 5

This commit adds the testcases for the following instructions:

vpmsumb, vpmsumh, vpmsumw, vpmsumd, vpermxor, vcipher, vcipherlast,
vncipher, vncipherlast, vsbox,
vclzb, vclzw, vclzh, vclzd,
vpopcntb, vpopcnth, vpopcntw, vpopcntd,
vnand, vorc, veqv,
vshasigmaw, vshasigmad,
bcdadd, bcdsub

The VEX commit that added the support for the above instructions was
commit 2789.

The patch is for Bugzilla 325628


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13646 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
6277067119ad816282b8e57727295b3adee14075 01-Oct-2013 carll <carll@a5019735-40e9-0310-863c-91ae7b9d1cf9> Add tests for the phase 3 ISA 2.07 code patch

This patch adds testcases to an existing testcase
source file to test the new instructions which were
added to VEX support in the phase 3 ISA 2.07 code patch.
The patch also makes a small change to memcheck's
vbit tester code to allow successful execution.

Signed-off-by: Maynard Johnson <maynardj@us.ibm.com>

Bugzilla 324894. Corresponding VEX commit 2779

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13594 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
6756454dd872134b243a7a4ff43b953c5bb309ee 16-Aug-2013 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Add support for direct V256 shadow helper returns -- memcheck side.
(Patrick J. LoPresti, lopresti@gmail.com). Bug 294285.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13500 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
a5c3ecb923e27dcd995ba763d436b477e1e2a61e 15-Aug-2013 florian <florian@a5019735-40e9-0310-863c-91ae7b9d1cf9> Followup to VEX r2742 which eliminates IRExprP__VECRET and IRExprP__BBPTR
and adds Iex_VECRET and Iex_BBPTR.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13498 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
dfbf294f08ac004a60cb3b528d544cb7d0404eb0 12-Aug-2013 carll <carll@a5019735-40e9-0310-863c-91ae7b9d1cf9> Initial ISA 2.07 support for POWER8-tuned libc

The IBM Power ISA 2.07 has been published on power.org, and IBM's new POWER8
processor is under development to implement that ISA. This patch provides
initial runtime and testsuite support for running Valgrind on POWER8 systems
running a soon-to-be released Linux distribution. This Linux distro will
include a POWER8-tuned libc that uses a subset of the new instructions from
ISA 2.07. Since virtually all applications link with libc, it would be
impossible to run an application under Valgrind on this distro without adding
support for these new instructions to Valgrind, so that's the intent of this
patch. Note that applications built on this distro will *not* employ new POWER8
instructions by default. There are roughly 150 new instructions in the Power
ISA 2.07, including hardware transaction management (HTM). Support for these
new instructions (modulo the subset included in this bug) will be added to
Valgrind in a phased approach, similar to what we did for Power ISA 2.06.

Bugzilla 322294, VEX commit 2740

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13494 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
21a5f8cd6b05e19a644ee9a9f8623f0be1d4badc 08-Aug-2013 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Fix # 294285: --partial-loads-ok does not work for 16-byte SSE loads
(core fixes for the memcheck handling of 128 bit loads)
(Patrick J. LoPresti, lopresti@gmail.com)



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13488 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
7a3706554059125b018dcd12267db8d9c3e9176f 04-Jul-2013 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Handle Iop_QAdd16Ux2. Needed for recent ARM v6media additions committed
in vex r2731.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13446 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
ba5693c7155e28fc5d2cbe1be751a77fb2097d02 17-Jun-2013 florian <florian@a5019735-40e9-0310-863c-91ae7b9d1cf9> valgrind side changes to support the new IRops introduced
in VEX r2727 (conversion ops between binary floating point and
decimal floating point).
Patch by Maran Pakkirisamy (maranp@linux.vnet.ibm.com).
Part of fixing BZ 307113.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13428 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
054684ff9ed37d70584d6a954df3382edd8b9729 06-Jun-2013 florian <florian@a5019735-40e9-0310-863c-91ae7b9d1cf9> More comment only changes as the "DFP rounding mode" has been removed.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13421 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
733b4db9e2385911103f8b10ec2a5a72f9329941 06-Jun-2013 florian <florian@a5019735-40e9-0310-863c-91ae7b9d1cf9> Comment only changes: IRRoundingModeDFP -> IRRoundingMode.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13419 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
b9e6d244e474c971ea88181de1f83a30057db9da 11-May-2013 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> complainIfUndefined: reinstate the 3rd argument (guard) so as to make
the definedness check and possible shadow temp set-to-defined be
optional. Use this to properly instrument IRLoadG and IRStoreG, so
that if the load/store does not happen, not only is the validity of
the address not checked, neither is the definedness.

This fixes a regression introduced by the COMEM branch on ARM, in
which conditional loads/stores with addresses which are undefined at
runtime and with guards which are false, would generate false errors.

Also extensively re-checked the check-generation machinery and updated
a bunch of comments.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13386 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
39b08d85652c321c2779a0256027d66144847c3c 05-May-2013 florian <florian@a5019735-40e9-0310-863c-91ae7b9d1cf9> valgrind side support for
Iop_F64toD64, Iop_D64toF64
Iop_F64toD128, Iop_D128toF64,
Iop_F128toD128, Iop_D128toF128

Companion patch of VEX r2717.
Patch by Maran Pakkirisamy (maranp@linux.vnet.ibm.com).
Part of fixing BZ #307113


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13382 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
a2f309566f7bdd7ac8e2347ef50e873894f95498 27-Mar-2013 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Memcheck fixes for new IR ops introduced by r2702 (which added support
for AVX2, BMI1, BMI2 and FMA instructions). Part of #305728.
(Jakub Jelinek, jakub@redhat.com)



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13338 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
07bfda2113275e92f0eacf9aaf5d6944a75fe86e 29-Jan-2013 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Non functional change (formatting, comments) related to newly created
Iex_ITE.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13276 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
a28c43c3aac5a8b1c5cdf4e47acab1b1f79de778 29-Jan-2013 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Fix the mkLazy3 case for I32 x I8 x I128 -> I128.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13275 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
5686b2d7e97a6f65e436531dac999a52a3d3dac9 29-Jan-2013 florian <florian@a5019735-40e9-0310-863c-91ae7b9d1cf9> Infrastructure cleanup part 2. valgrind side changes.
Replace Iex_Mux0X with Iex_ITE (if-then-else).
Companion patch to VEX r2668.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13273 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
cc9616506450cb02944b62dc07774c29462bfefc 26-Jan-2013 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Changes to track r2664, which changed the type of the condition field
of Mux0X from Ity_I8 to Ity_I1. Patch from Florian Krohm.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13267 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
fb583cbc61a1d82a4a970887a6d54737038b71b6 22-Jan-2013 carll <carll@a5019735-40e9-0310-863c-91ae7b9d1cf9> Fix implementation of the DFP integer operands.

The implementation of integer operands doesn't really match the documentation
for the Iop. Take for example Iop_ExtractExpD64. It is documented as
D64 -> I64 but the implementation of the UNARY is defined as
UNARY(Ity_D64, Ity_D64). The result is an integer that is stored in an integer
format in a floating point register. On the IBM s390 however, the architecture
stores the integer value in a general purpose register (GPR) not a floating
point register. This issue exists with the implementation of 11 Iops where the
PPC implementation has either a source or destination whose value is an integer
but the value is stored in a floating point register in an integer format. After
reviewing the PPC implementation with the s390 developer, it was agreed the
cleanest way to fix this is to change the PPC implementation. The BINOP will be
changed to be consistent with the Iop description. This means the PPC
instruction implementation of the PPC instruction in guest_ppc_toIR.c will need
to reinterpret integer source operands as integers which will move the value
from a floating point register to an integer register before calling binop().
The underlying PPC implementation of the unop() for the specific Iop will also
need to change to move the value from the integer register back to the floating
point register so the native instruction can be issued with the integer value
in a floating point register. It was decided that making the changed in PPC,
rather then having the s390 reinterpret integers as DFP and then move the value
back to an integer register, was preferable as it makes the implementation of
the unop(), binops(), triop() consistent with the definition of the Iop.

This patch also includes the needed changes for the vbit tester. The Iop
definitions in memcheck/tests/vbit-test/util.c had to be updated to be consitent
with the changes in the Iops as documented below. Also, the function mkLazy3()
in memcheck/mc_translate.c had to be updated to handle the I32 x I8 x I64 -> I64
and I32 x I8 x I128 -> I128 cases.

The specific list of changes are as follows:

Iop name in pub/libvex_ir.h
documented type
type of UNARY/BINARY/TERNARY in priv/ir_defs.c
-------------------------------------------------------

Iop_ExtractExpD64
D64 -> I64
UNARY(Ity_D64, Ity_D64); (current)
UNARY(Ity_D64, Ity_I64); (fix)


Iop_ExtractExpD128
D128 -> I64
UNARY(Ity_D128, Ity_D64); (current)
UNARY(Ity_D128, Ity_I64); (fix)

Iop_InsertExpD64
I64 x I64 -> D64
I64 x D64 -> D64 (fix definition)
BINARY(Ity_D64,Ity_D64, Ity_D64); (current)
BINARY(Ity_I64,Ity_D64, Ity_D64); (fix)

Iop_InsertExpD128
I64 x I128 -> D128
I64 x D128 -> D128 (fix definition)
BINARY(Ity_D64,Ity_D128, Ity_D128); (current)
BINARY(Ity_I64,Ity_D128, Ity_D128); (fix)

Iop_I64StoD128
I64S -> D128
UNARY(Ity_D64, Ity_D128); (current)
UNARY(Ity_I64, Ity_D128); (fix)

Iop_D64toI64S
IRRoundingModeDFP(I32) x D64 -> I64
BINARY(ity_RMode, Ity_D64, Ity_D64) (current)
BINARY(ity_RMode, Ity_D64, Ity_I64) (fix)

Iop_D128toI64S
IRRoundingModeDFP(I32) x D128 -> I64
BINARY(ity_RMode, Ity_D128, Ity_D64); (current)
BINARY(ity_RMode, Ity_D128, Ity_I64); (fix)

Iop_I64StoD64
IRRoundingModeDFP(I32) x I64 -> D64
BINARY(ity_RMode, Ity_D64, Ity_D64); (current)
BINARY(ity_RMode, Ity_I64, Ity_D64); (fix)

Iop_SignificanceRoundD64
IRRoundingModeDFP(I32) x I8 x D64 -> D64
TERNARY(ity_RMode,Ity_D64,Ity_D64, Ity_D64); (current)
TERNARY(ity_RMode,Ity_I8,Ity_D64, Ity_D64); (fix)

Iop_SignificanceRoundD128
IRRoundingModeDFP(I32) x I8 x D128 -> D128
TERNARY(ity_RMode,Ity_D128,Ity_D128, Ity_D128); (current)
TERNARY(ity_RMode,Ity_I8,Ity_D128, Ity_D128); (fix)

The patch is for bugzilla 311100
VEX Committed revision 2652

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13260 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
6c0aa2cf8701e2ab6c4cc69db30654c24afc7dd5 21-Jan-2013 florian <florian@a5019735-40e9-0310-863c-91ae7b9d1cf9> In mc_translate a NULL guard expression is sometimes passed around
functions to indicate a "true" expression. That caused some confusion
and led people to believe believe, that IRDirty::guard could be NULL.
It cannot.
This confusion was indirectly spotted by coverity's checker who figured
out that IRDirty::guard was sometimes unconditionally dereferenced
and sometimes compared against NULL.
Cleaning this up...


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13250 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
cafe50502ae73d6d6d0f214e06a4619e6cb1b278 17-Jan-2013 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Merge, from branches/COMEM, revisions 13139 to 13235.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13236 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
53eb2a0f3b35eafb8fa713566ca5b4e6e4f3490c 12-Jan-2013 florian <florian@a5019735-40e9-0310-863c-91ae7b9d1cf9> Add memcheck support for the IROps added in VEX r2631.
Adapt vbit-tester.
Patch by Maran Pakkirisamy (maranp@linux.vnet.ibm.com).
Part of fixing BZ 307113.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13224 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
974b409a9c293f1341f26bb2cfc13982af76b19b 27-Dec-2012 florian <florian@a5019735-40e9-0310-863c-91ae7b9d1cf9> valgrind-side support for Iop_ExtractSigD64 and Iop_ExtractSigD128.
See also companion patch VEX r2621.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13211 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
29a36b99ad14c9c5a9aa5e89ff3e0d8274fc0339 26-Dec-2012 florian <florian@a5019735-40e9-0310-863c-91ae7b9d1cf9> valgrind side changes to support Iop_CmpExpD64 and Iop_CmpExpD128.
VEX buddy patch is r2617.
Enhance testcase for CEDTR and CEXTR. Adapt vbit tester.
Patch by Maran Pakkirisamy (maranp@linux.vnet.ibm.com).
This is part of fixing BZ 307113.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13203 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
f4bed371e207f1bb0e52b796ac5f81d93a88245f 21-Dec-2012 florian <florian@a5019735-40e9-0310-863c-91ae7b9d1cf9> Fix mc_translate for Iop_D64toD32.
Spotted and fixed by Maran Pakkirisamy (maranp@linux.vnet.ibm.com).


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13193 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
f517634b4a879b7653efa40d60c62fa3419809ed 13-Dec-2012 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Valgrind-side changes for new primop Iop_GetMSBs8x16, introduced in
vex r2590.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13179 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
6bd9dc18c043927c1196caba20a327238a179c42 23-Nov-2012 florian <florian@a5019735-40e9-0310-863c-91ae7b9d1cf9> Changes to allow compilation with -Wwrite-strings. That compiler option
is not used for testcases, just for valgrind proper.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13137 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
4cfa81b027d5952bfa9cc0ca05638483fde2eb9a 08-Nov-2012 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Improve accuracy of definedness tracking through the x86 PMOVMSKB and
BSF instructions, as the lack of it causes false positives (Valgrind
side). Fixes #308627. (Patrick J. LoPresti <lopresti@gmail.com>)



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13108 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
a5f894c271248c13e0bb387e5ca33fa122b4819c 21-Oct-2012 florian <florian@a5019735-40e9-0310-863c-91ae7b9d1cf9> First round of Char/HChar fixes for memcheck.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13071 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
11f3cc844c38a8388063230bbf7deb69fdf2b812 21-Oct-2012 florian <florian@a5019735-40e9-0310-863c-91ae7b9d1cf9> Followup to constification of VEX's external interface (VEX r2555).


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13066 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
ca503be79ca377d89b1692c37c97a06ed14dad3b 07-Oct-2012 florian <florian@a5019735-40e9-0310-863c-91ae7b9d1cf9> This is the 2nd installment of the cache info reorganisation.
The host's VexArchInfo is passed to the tool instrumentation
functions. Purely mechanic patch.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13031 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
9fb31093cfbaeba9ebb965b318d07fb344120666 17-Sep-2012 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Handle Iop_QSub16Ux2, needed in fix for #304035.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12980 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
1b9609aa2638e4c81f3eb0d27fdaa4c944aaf33e 01-Sep-2012 florian <florian@a5019735-40e9-0310-863c-91ae7b9d1cf9> s390: Valgrind-side changes to fixing bugzilla #274695:
Testcase, vbit tester update, memcheck support for the new IROps,
NEWS announcement and opcode list update.
Patch by Christian Borntraeger (borntraeger@de.ibm.com).
Vbit tester tweaks by myself.
Fixes bugzilla #274695.
See also companion patch VEX r2496.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12921 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
1943eb58b7e3a5c7b7108d33765b810192cda32c 22-Aug-2012 florian <florian@a5019735-40e9-0310-863c-91ae7b9d1cf9> Fix propagation of undefinedness for Iop_DPBtoBCD and Iop_BCDtoDPB.
Any undefined input bit will cause all output bits to be undefined.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12885 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
537ed2d090e7472a6cb2ee80239d4780551a5f19 20-Aug-2012 florian <florian@a5019735-40e9-0310-863c-91ae7b9d1cf9> Handle the following IRops as they may get generated:
Iop_Mul8, Iop_Sar8, Iop_CmpwNEZ32, and Iop_8HLto16.
With this change mc_translate now handles all IR ops which are architecture
independent, except Iop_LeftXYZ and Iop_Max32U.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12884 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
7eb17a827d03c3f7c83f75b6634ea15cbdfede5a 18-Aug-2012 florian <florian@a5019735-40e9-0310-863c-91ae7b9d1cf9> Remove memcheck support for IR op Iop_I16StoF32 which is unused.
See also VEX r2471.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12877 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
03f8d3fc25f5a45c5826259d1b33b7f310117279 05-Aug-2012 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Update copyright dates to include 2012.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12843 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
434ffae63b5e5460c0475dc24cd0383bc63fe1b8 19-Jul-2012 florian <florian@a5019735-40e9-0310-863c-91ae7b9d1cf9> Observe guards on dirty helpers in memcheck.
This means, that any guest state and/or memory accesses of the helper (and
complaints about those) only occur if the guard expression is true at runtime.
Definedness of parameters that the helper might have is *always* checked,
as parameters are evaluated regardless of the guard expression.
New functions: expr2vbits_guarded_Load and gen_guarded_load_b.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12762 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
2157b2c139946c0b70c0e5e2ae2a38de57a43954 11-Jul-2012 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> RM: Implement QADD and QSUB (valgrind side fixes). Fixes #286917.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12727 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
bd43bfa3f1672bae00037a1a213d8e452735af64 29-Jun-2012 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Generate type-correct IR (always a good thing :-) when instrumenting
256 bit stores with --undef-value-errors=no.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12684 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
350e8f7a0ef0b83d7e9cf2d699284668e5b146f5 25-Jun-2012 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Add handling of 256-bit vector FP arithmetic ops, so as to support AVX.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12673 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
cda994be0e7356b10ad5771ffec348e42569762f 08-Jun-2012 florian <florian@a5019735-40e9-0310-863c-91ae7b9d1cf9> Amend do_shadow_Dirty and do_origins_Dirty so they no longer assert
if the helper call touches an odd number of bytes in memory.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12624 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
457cba665b03815e2f375abd093aac35aaab303a 03-Jun-2012 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> POWER Processor decimal FP support, part 5. (Valgrind side). Bug #299694.
(Carl Love, carll@us.ibm.com and Maynard Johnson, maynardj@us.ibm.com)

This patch adds support for Power Decimal Floating Point (DFP) . This
is the fifth patch set in the series of five to add the DFP
instruction support to Valgrind. Adds support for the ddedpd,
ddedpdq, denbcd, denbcdq, dtstsf, and dtstsfq instructions.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12603 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
26441746bda788fc0327527a62427ca562f25311 02-Jun-2012 florian <florian@a5019735-40e9-0310-863c-91ae7b9d1cf9> Rippled from VEX r2366. Part of reducing size of IRExpr.
These are the valgrind bits.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12602 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
e2ab2974c8bcaf3863956ba2d5368092a54e0703 01-Jun-2012 florian <florian@a5019735-40e9-0310-863c-91ae7b9d1cf9> Ripple from VEX r2363. Part of reducing size of IRExpr.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12599 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
2eecb74d4a8816485c97ae8e535ce25511460bc8 01-Jun-2012 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Track the change to IRDirty guest state effect annotations introduced
in vex r2362.

mc_translate.c: also do PCast 64->32 a bit more efficiently.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12598 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
d39b02261c40ae7b51bd2cdf56f8abf93c87bd46 31-May-2012 florian <florian@a5019735-40e9-0310-863c-91ae7b9d1cf9> Reduce size of an IRStmt from 40 bytes to 32 bytes on LP64
by allocating the details of a PutI statement into a struct
of its own and link to that (as is being done for Dirty and CAS).

These are the valgrind bits (see also VEX r2361).


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12596 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
45fa9f4bd1819c7ac0d9469df4e35cee0c130153 21-May-2012 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Add initial support for Intel AVX instructions (Valgrind side).
Tracker bug is #273475.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12569 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
0892b8268c61648ba031eba3dc83db8f4b036613 29-Apr-2012 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Test cases for POWER Power Decimal Floating Point (DFP) test class,
test group and test exponent instructions dtstdc, dtstdcq, dtstdg,
dtstdgq, dtstex and dtstexq. Bug #298862. (Carl Love,
carll@us.ibm.com and Maynard Johnson, maynardj@us.ibm.com)



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12546 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
18c72faa664f18877f33a40c8b429f3aa41dc5e2 23-Apr-2012 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> POWER Processor decimal floating point instruction support, part 3 --
test cases. (Carl Love, carll@us.ibm.com). Bug 298080.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12541 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
ea8b02f730f184b4edb9ebe1ad07a5d823ef8155 12-Apr-2012 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> POWER Processor decimal floating point instruction support: part 2
(bug #297497) (Carl Love, carll@us.ibm.com) (Valgrind side, mostly
tests)



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12500 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
b0ccb4d09a74c94a712b2edf9894b408f270493a 02-Apr-2012 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Initial support for POWER Processor decimal floating point
instruction support -- VEX side changes. See #295221.

This patch adds test cases. Also adds some minor Memcheck
instrumentation tweaks necessitated by the IR changes.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12476 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
54eac25a54a255d5deaa228547d2ef145590929b 27-Mar-2012 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> /* Do expensive interpretation for Iop_Add32 and Iop_Add64 on
Darwin. 10.7 is mostly built with LLVM, which uses these for
bitfield inserts, and we get a lot of false errors if the cheap
interpretation is used, alas. Could solve this much better if
we knew which of such adds came from x86/amd64 LEA instructions,
since these are the only ones really needing the expensive
interpretation, but that would require some way to tag them in
the _toIR.c front ends, which is a lot of faffing around. So
for now just use the slow and blunt-instrument solution. */

Pertains to, although does not completely solve, #242137.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12467 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
6643e96a72e8530a7c8830c02ffb2fb4aee74c88 17-Jan-2012 philippe <philippe@a5019735-40e9-0310-863c-91ae7b9d1cf9> Fixes 282230 group allocator for small fixed size, use it for MC_Chunk/SEc vbit

* new files include/pub_tool_groupalloc.h and coregrind/m_groupalloc.c
implementing a group allocator (based on helgrind group alloc).
* include/Makefile.am coregrind/Makefile.am : added pub_tool_groupalloc.h
and m_groupalloc.c
* helgrind/libhb_core.c : use pub_tool_groupalloc.h/m_groupalloc.c
instead of the local implementation.
* include/pub_tool_oset.h coregrind/m_oset.c : new function
allowing to create an oset that will use a pool allocator.
new function allowing to clone an oset (so as to share the pool alloc)
* memcheck/tests/unit_oset.c drd/tests/unit_bitmap.c : modified
so that it compiles with the new m_oset.c
* memcheck/mc_main.c : use group alloc for MC_Chunk
memcheck/mc_include.h : declare the MC_Chunk group alloc
* memcheck/mc_main.c : use group alloc for the nodes of the secVBitTable OSet
* include/pub_tool_hashtable.h coregrind/m_hashtable.c : pass the free node
function in the VG_(HT_destruct).
(needed as the hashtable user can allocate a node with its own alloc,
the hash table destroy must be able to free the nodes with the user
own free).
* coregrind/m_gdbserver/m_gdbserver.c : pass free function to VG_(HT_destruct)
* memcheck/mc_replace_strmem.c memcheck/mc_machine.c
memcheck/mc_malloc_wrappers.c memcheck/mc_leakcheck.c
memcheck/mc_errors.c memcheck/mc_translate.c : new include needed
due to group alloc.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12341 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
ec062e8d96a361af9905b5447027819dfbfee01a 23-Oct-2011 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Update all copyright dates, from 20xy-2010 to 20xy-2011.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12206 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
b5a2923ecd25ae8ef4dc412e6af8de28c0b69b23 22-Oct-2011 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Change and simplify the way that Memcheck instruments saturating
narrowing operations. The previous scheme was simply wrong and could
cause false negatives, by causing some narrowing operations to have a
defined output even when the inputs are undefined. This was what
#279698 reported. This patch is a fix for that bug.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12190 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
9a2afe98c754faafb035b165bf844733dd896731 19-Oct-2011 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Handle new Iop_CmpEQ64x2 introduced in vex r2218.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12165 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
169ac048e00bacd4dd5e16843404be9a958832ba 05-Sep-2011 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Add support for new primops added in vex r2199.
See Bug 279994 comment 1.
(Maynard Johnson, maynardj@us.ibm.com)


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12006 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
a201c45bddd4b13c00c171d707ad58b102569f41 24-Jul-2011 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Add support for IBM Power ISA 2.06 -- stage 2 (handle new
primops in Memcheck). Bug 276784.
(Maynard Johnson, maynardj@us.ibm.com)


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11907 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
6e9de463ef677f093e9f24f126e1b11c28cf59fd 28-Jun-2011 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Delete the AIX5 port. The last release this worked for is 3.4.1,
and then only on AIX 5.2 and 5.3.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11842 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
7ee7d85cd336a7c3486b1e82306ef4bb248c82e0 16-Jun-2011 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Track vex r2163 (en-mass renaming of vector narrowing and widening primops)


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11819 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
bb0f6f4dbd082d75928f12e90a13a5d5a4a86d96 15-Jun-2011 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Unbreak Altivec code following vex r2159 (renaming of
vector saturating narrowing primops)


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11817 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
2a258897a1f1af8f5c7f0035a546971bce5c00b0 15-Jun-2011 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Valgrind-side fixes and tests for PACKUSDW, to track r2160.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11816 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
9beeb0a25c3734e90926731e9c207c2dfc7cf11f 15-Jun-2011 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Track renaming of vector saturating narrowing primops in r2159.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11814 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
9943003f546be63b208d02ab57fd31b1c00b8aba 04-May-2011 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> mkLazyN: fix incorrect type decl for 'mergeTy64', as spotted by IBM's
BEAM checker.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11726 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
f34eb496099507090f26dcf94bb780da8b3894e5 15-Apr-2011 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Add support for IBM Power ISA 2.06 -- stage 1. Valgrind-side changes
and test cases. Bug #267630 and followup fix #270794.
(Maynard Johnson, maynardj@us.ibm.com)



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11697 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
b5b87408c0c99f9f6938d8cd921e2a5f420577c4 07-Mar-2011 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Add a port to IBM z/Architecture (s390x) running Linux -- Valgrind
side components. (Florian Krohm <britzel@acm.org> and Christian
Borntraeger <borntraeger@de.ibm.com>). Fixes #243404.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11604 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
5af0506e418c4b28e7538f8ad7991bb02a206fa7 18-Oct-2010 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Handle new Iop_Sad8Ux4 introduced in vex r2067.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11452 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
c678b85d7eb4e40d1ccb247a8d879ebde0a09aff 22-Sep-2010 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Handle new 32-bit SIMD integer primops introduced in vex r2037.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11371 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
57f92b0326e164124201034afc0c51dcd8db6d07 22-Aug-2010 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Merge from branches/THUMB: tool-side handling of new primops required
for NEON support. Requires further checking.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11277 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
d376a769d87c219f48bf180546af80bd6a9476f4 27-Jun-2010 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Handle new primop Iop_RoundF32toInt, needed by SSE4 ROUNDSS (vex
r1986).


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11189 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
b823b8531aedef4c8abff2544ea12aa0795e914d 18-Jun-2010 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Valgrind-side changes needed to go with vex r1984 (Implement SSE4
insns: CMPGTQ PMAXUD PMINUD PMAXSB PMINSB PMULLD)



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11181 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
9eecbbb9a9cbbd30b903c09a9e04d8efc20bda33 03-May-2010 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Update copyright dates to 2010.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11121 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
aec1be3a7092715756648cf7e62466af5eab73c2 03-Jan-2010 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Handle Iop_SqrtF32.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11001 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
59570ffbe31930ab4d678754daaeec0715117a3d 01-Jan-2010 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Merge from branches/ARM, all parts of the ARM-Linux port except for
the changes to do with reading and using ELF and DWARF3 info.
This breaks all targets except amd64-linux and x86-linux.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@10982 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
06f96d01b9471616c142af3b9f4298cb265973cd 31-Dec-2009 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Track changes in the names of a few IR primops to do with int<->fp
conversions, as introduced in vex r1949.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@10980 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
db5907d7b94ce492f29a96c95e186fdcda23a149 26-Nov-2009 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Track vex r1930 (Change the IR representation of load linked and store
conditional.) Completes the fix of #215771.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@10957 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
afed4c5c73996f3039bf7dddc9cbe3fa105b68f9 12-Jul-2009 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Track vex r1907 (introduce Iop_CmpCas{EQ,NE}{8,16,32,64} and use them
for CAS-success? tests).

Detailed background and rationale in memcheck/mc_translate, comment
"COMMENT_ON_CasCmpEQ".

This commit changes the Memcheck instrumentation of IRCAS so as not to
do a definedness check on the success/failure indication. Also, by
being able to identify via the Iop_CasCmpEQ primitives any such checks
independently created by front ends, it can avoid instrumenting these
too.

All this is to avoid reporting new false positives observed on Fedora 7
(x86?) and openSUSE 10.2 (x86) following the recent merge of branches/DCAS.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@10432 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
1c0ce7a9edf8772773f6216dbad4bb04317d23b6 01-Jul-2009 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Merge in branches/DCAS.

This branch adds proper support for atomic instructions, proper in the
sense that the atomicity is preserved through the compilation
pipeline, and thus in the instrumented code.

These changes track the IR changes added by vex r1901. They primarily
update the instrumentation functions in all tools to handle the
changes, with the exception of exp-ptrcheck, which needs some further
work in order to be able to run threaded code.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@10392 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
4c245e595b9f6300d3120408ca873f7115d9cc7d 16-Mar-2009 njn <njn@a5019735-40e9-0310-863c-91ae7b9d1cf9> Fix all the non-VEX problems identified with the Clang Static Analyzer.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@9416 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
9f207460d70d38c46c9e81996a3dcdf90961c6db 10-Mar-2009 njn <njn@a5019735-40e9-0310-863c-91ae7b9d1cf9> Updated copyright years.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@9344 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
17b4743b17a25cade63cdd72c8f5a558d412c39b 17-Dec-2008 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Add another magic constant to the Iex_Const case in isBogusAtom, as
seen in glibc on ppc32.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@8828 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
8c93fcc1247c3c9fc3ac0617c607825a27c46c9d 30-Oct-2008 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Origin tracking: handle 16-bit excess in guest state reads/writes.
This gets rid of the messages "Approx: do_origins_Dirty(R): missed %d
bytes\n" and "Approx: do_origins_Dirty(W): missed %d bytes\n".



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@8719 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
9c606bd8634cd6b67bb41fa645b5c639668cfa2d 18-Sep-2008 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Merge all remaining changes from branches/PTRCHECK. These are some
relatively minor extensions to m_debuginfo, a major overhaul of
m_debuginfo/readdwarf3.c to get its space usage under control, and
changes throughout the system to enable heap-use profiling.

The majority of the merged changes were committed into
branches/PTRCHECK as the following revs: 8591 8595 8598 8599 8601 and
8161.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@8621 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
dead90ad64759d1c800951ea2372949d43b29cc5 08-Aug-2008 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Handle new IR ops Iop_RoundF64toF64_*.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@8520 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
afa617b9d5792ae31fc201b3549da3e3288bb37d 22-Jul-2008 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Origin-tracking fix: make sure that we have a shadow-origin (B)
temporary defined for every (original) temp used in the block's IR
preamble, as is already done of the shadow-definedness (V)
temporaries. Otherwise we can end up generating references to B
temporaries that have no assigned value, which causes the IR sanity
checker to complain. Only observed (and even then rarely) on the
complex preambles sometimes used for TOC-afflicted platforms.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@8450 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
7cf4e6b6aed533af53339f36099ed244dc4a5b7f 01-May-2008 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Merge branches/OTRACK_BY_INSTRUMENTATION into the trunk. This adds
support to Memcheck for tracking the origin of uninitialised values,
if you use the --track-origins=yes flag.

This currently causes some Memcheck regression tests to fail, because
they now print an extra line of advisory text in their output. This
will be fixed.

The core-tool interface is slightly changed. The version number for
the interface needs to be incremented.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@7982 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
4d474d086188fd1f29fa97dbd84d8ea2e589a9b8 11-Feb-2008 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Update copyright dates ("200X-2007" --> "200X-2008").


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@7398 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
114a917710310985f421b0c4748d9788164fdfc3 09-Feb-2008 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Tool-side support for the new primops required by SSSE3 instructions.
I think this is all that is required on the tools side.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@7384 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
72d75132068882b52b67dddc9af85ffaae5ac14f 10-Nov-2007 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Track vex r1793: make all tools able to handle the new IR memory bus
event statement (Ist_MBE).



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@7119 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
81651dc1ae8cc13a5c857a0fb4137304ed17aa43 28-Aug-2007 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Merge, from CGTUNE branch, a cleaned up version of r6742:

Another optimisation: allow tools to provide a final_tidy function
which they can use to mess with the final post-tree-built IR before it
is handed off to instruction selection.

In memcheck, use this to remove redundant calls to
MC_(helperc_value_check0_fail) et al. Gives a 6% reduction in code
size for Memcheck on x86 and a smaller (3% ?) speedup.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6787 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
4cc684b9b2bc521d3a6f1f415dbe8d77f91401fd 26-Aug-2007 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Merge from CGTUNE branch:

r6736:
Hook up Memcheck to the new Left and CmpwNEZ primops defined in vex r1769.

r6737:
Track vex r1770 (removal of Iop_Neg64/32/16/8 primops)





git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6779 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
6665ea2a7d2b734965d491bc6bc2e35c1a4a6f8a 25-May-2007 njn <njn@a5019735-40e9-0310-863c-91ae7b9d1cf9> Add a comment with a definitive account of when Memcheck does (and does not,
but should do) undefined value checks.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6750 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
9ebd6e0c607fa30301b1325874eb8de871c21cc5 08-Jan-2007 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Update copyright dates.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6488 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
03809aeba113248d22eb6161bb7b7606aad56844 27-Dec-2006 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Handle new primop Iop_SarN8x8 introduced in vex r1702.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6441 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
0b9d74abd0a663b530d290b2b788ddeda46e5400 24-Dec-2006 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Non-functional commit: track IR renaming in vex r1689.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6416 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
9a807e021bdfbcfb86cb0051e0e6e8a88e9eba5f 17-Dec-2006 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Add missing case, apparently not very popular :-)


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6406 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
149aed8dbfb2432fcc4785219f4620de5b8a8e10 25-Nov-2006 njn <njn@a5019735-40e9-0310-863c-91ae7b9d1cf9> Use the newly-added dopyIRBBExceptStmts() in tools.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6372 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
f1962d3683b9bc0b8ba361e3d0194590fde7090b 19-Oct-2006 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Fix bug in memcheck's instrumenter introduced in r6319. Big comment
in the code explains it. Sigh. Why can't anything be simple?



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6322 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
a087148a278b59856ec2247361d1902524c68f95 18-Oct-2006 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Observe the rule that requires all instrumenters to copy verbatim any
IR preamble preceding the first IMark.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6319 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
634ba77657e28bd4568744eb1dcc0b2cb7108e5e 15-Oct-2006 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> wibble


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6235 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
e4b0bf07b0ee0a18eacc5aba91686ab5fc1d327b 06-Jun-2006 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Update copyright dates.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5954 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
1d0825ff46d57f0ce83c3fa88538a42f67022eee 27-Mar-2006 njn <njn@a5019735-40e9-0310-863c-91ae7b9d1cf9> Merge in the COMPVBITS branch to the trunk. This is a big change to
Memcheck, replacing the 9-bits-per-byte shadow memory representation to a
2-bits-per-byte representation (with possibly a little more on the side) by
taking advantage of the fact that extremely few memory bytes are partially
defined.

For the SPEC2k benchmarks with "test" inputs, this speeds up Memcheck by a
(geometric mean) factor of 1.20, and reduces the size of shadow memory by a
(geometric mean) factor of 4.26.

At the same time, Addrcheck is removed. It hadn't worked for quite some
time, and with these improvements in Memcheck its raisons-d'etre have
shrivelled so much that it's not worth the effort to keep around. Hooray!

Nb: this code hasn't been tested on PPC. If things go wrong, look first in
the fast stack-handling functions (eg. mc_new_mem_stack_160,
MC_(helperc_MAKE_STACK_UNINIT)).


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5791 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
453e8f85186bf9f35c870059d5f4decf65f9e0aa 09-Feb-2006 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Get rid of general case in mkLazy3 and instead add new cases as they appear.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5621 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
e91cea71129edc807428c8228d0d9f5b13894a5a 08-Feb-2006 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Track vex r1573 (introduction of 4-arg IR primops for ppc fmadd/fmsub).


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5619 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
d6075ebbdce70888ee82eaff9c1b53f04cbeb9f0 04-Feb-2006 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Tidy up a couple more x86-related primops following rounding changes.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5608 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
22ac5f4e9561d5349d6864c42e7dddafb95e59a6 03-Feb-2006 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Followup to r5605: fixes for x86


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5607 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
ed69fdb48673f1aaaa5ce3ff1997fb50d1e15e40 03-Feb-2006 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> * Track introduction of IR ternary primops and rounding modes, at least as
to the extent needed to make ppc32 work.

* As a result, remove the replacements for glibc's floor/ceil fns on
ppc32/64, since vex can now correctly simulate the real ones.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5605 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
4f3e0f2d879e9f86896bfce4a4cc90fae8b936b6 27-Jan-2006 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Track vex r1553 (addition of Iop_Est8FRecip, case Iop_Est5FRSqrt)



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5596 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
461df9c36f6a07e4f0c14ae068e8e8e9bd383b26 17-Jan-2006 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> These files all speak about instrumentation functions.
Instrumentation functions now take a callback closure structure
(VgCallbackClosure*), so this commit changes the signatures
accordingly.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5535 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
b00944a4fc5320f4f9313d2090c32f6d36fd0d10 23-Dec-2005 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Handle ppc64-related primops.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5420 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
53ee1fc8a2968c7e4d1eb75b89a8d4ff6908483c 23-Dec-2005 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Deal with function pointer vs function entry crazyness on ppc64-linux.
Memcheck is done, but any tool which generates IR helper calls will
need to be similarly adulterated.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5418 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
1bc8210aff6581dd3b48b72b6c27fdbbc6669e70 23-Dec-2005 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Handle CmpORD64{U,S} as ppc64 requires those.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5415 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
13a49267f232b09c9b4a8edd01b2ac1b9d0724b9 19-Dec-2005 njn <njn@a5019735-40e9-0310-863c-91ae7b9d1cf9> Remove remaining profiling gunk from Memcheck.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5387 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
176cb4c42c42d4f126237eedbf324fdd3469eeb5 16-Nov-2005 cerion <cerion@a5019735-40e9-0310-863c-91ae7b9d1cf9> Added fp vector conversion/rounding irops to memcheck



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5149 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
e78ba2a7c5a7d33f461626a0f84c3faaf2e43950 14-Nov-2005 cerion <cerion@a5019735-40e9-0310-863c-91ae7b9d1cf9> Couple more irops for memcheck.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5121 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
cbf8be74534db8c0a875185cb583502f0c113744 10-Nov-2005 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Oops. Track primop renamings.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5074 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
43d607580781d902dd06b2c1175da5416f07581a 10-Nov-2005 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Handle IR primops arising from running Altivec code. It seems Altivec
is stronger in the vector integer area than SSE, but weaker in the
vector FP area.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5073 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
545663e151401958e8f5d0bf21843bcff3e62f1c 05-Nov-2005 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Handle vector FP unordered compares.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5013 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
620eb5bbfb2d16c432ec7fdedad0eaa898d0df5e 22-Oct-2005 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Handle a few more primops result from running Altivec code.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4964 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
4ba057cce1d81a949f5a899b5abb99e90a731bcc 18-Oct-2005 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Change the core-tool interface so that tools are fully aware of both
the guest extents for the presented translation and also its original
un-redirected guest address. These changes are needed in particular
to make cachegrind's code cache management work properly.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4943 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
a9e62a9997a442eecd38f81479c15792bca201ea 07-Oct-2005 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> ppc32 only: improve handling of CmpORD32S, so as to avoid false
positives from ppc code of the form "cmpi %reg,0 ; branch-if-negative
.." where the top bit of %reg is defined but not all of the other bits
are (common-ish enough to cause a considerable number of false
positives if not done right).



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4890 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
992dff97aa9c074f86f831a76367fb55e0541da2 07-Oct-2005 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Fix the handling of CmpORD32{S,U} which was completely bogus and
would have caused ppc32 to miss many uninitialised value errors.
(Change affects ppc32 only).

Also add reference to the Usenix paper.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4888 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
aaddbc281556387b2a16009e058f785fb4d5c576 07-Oct-2005 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Fix a memcheck anomaly observed by Nick: lazy propagation of
undefinedness was not being done properly for scalar shifts and that
could have led to undefined-value errors being falsely reported in the
obscure case where the shift amount was undefined but the end result
of the shift was unused. This commit handles shifts more in
accordance with the maximally-lazy V-bit-testing scheme used by the
rest of memcheck.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4887 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
fafaa0d8a9f70c01dc72052f22e53a617e9d2e2f 13-Sep-2005 cerion <cerion@a5019735-40e9-0310-863c-91ae7b9d1cf9> add case Iop_V128to32 to memcheck



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4626 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
bef552a3841d959ca18fac4e5ac6925ea29dfd32 30-Aug-2005 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Fix suspicious code in the memcheck instrumenter which probably
rendered many of the assertions in this file ineffective. Spotted by
Tom Truscott.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4587 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
463b3d94b19ec820c2378dde6d43d2c1f553a8d0 18-Jul-2005 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Track API changes in vex r1272.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4159 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
6e340c7a2c09971ac5ead854c40bbc0491b67636 10-Jul-2005 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Clean up endianness macros a bit. Now pub_tool_basics.h defines
VG_LITTLEENDIAN or VG_BIGENDIAN and that's what should be used.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4142 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
8cf88b7b5d8325e098b455f502c9a9239c6ee011 08-Jul-2005 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Create and use bigendian versions of MC_(helperc_{LOAD,STORE}V{2,4,8}).
This involved some serious nastyness from the Department of Cpp Abuse.

Memcheck still bombs on ppc32 for unknown reasons.

There are still endianness issues within these functions, I think.




git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4129 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
151b90d888b37cc8694684433cbed2ddc5fcd205 06-Jul-2005 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Scan the entire BB looking for "bogus literals"* before instrumenting
any of it, so as to avoid any problems arising from switching from one
scheme to the other half-way through.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4117 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
e6f8af482ef8992e0e1b2eba49cfa907a93f9b66 06-Jul-2005 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Extensively re-analyse, re-check and revise the scheme for expensive
handling of integer EQ/NE, which can sometimes do better than the
naive scheme when the inputs are partially defined. I never was
convinced it was correct before, but now I am. Regtest to follow.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4115 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
2e595858903b80f29f271dc94e32a9e052bb4c8a 01-Jul-2005 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Track Vex API change (r1239, introduction of endianness-indications in
IR loads and stores.)



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4072 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
d9774d73807c7292c72e1254119d6bd8ded81f15 27-Jun-2005 tom <tom@a5019735-40e9-0310-863c-91ae7b9d1cf9> Improve handling of inlined strlen on amd64 by using the expensive
mode for 64 bit add and subtract operations when the bogus literals
flags is set and by adding two new constants to the list of bogus
literals.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4037 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
9e5910872335c1ff7cb9733480904aa84dfe16ab 23-Jun-2005 cerion <cerion@a5019735-40e9-0310-863c-91ae7b9d1cf9> Added DivU32,DivS32 to memcheck translation (lazy)

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4004 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
c7561b931e249acf3768ead77638545b0ccaa8f1 19-Jun-2005 njn <njn@a5019735-40e9-0310-863c-91ae7b9d1cf9> Final commit for the initial modularisation pass:

- Broke part of m_scheduler off into a new module m_threadstate. It
contains ThreadState, VG_(threads)[] and some basic operations on the
thread table. All simple stuff, the complex stuff stays in m_scheduler.
This avoids lots of circular dependencies between m_scheduler and other
modules.

- Managed to finally remove core.h and tool.h, double hurrah!

- Introduced pub_tool_basics.h and pub_core_basics.h, one of which is
include by every single C file.

- Lots of little cleanups and changes related to the above.

- I even did a small amount of documentation updating.




git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3944 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
39cc73532a985e3fecf9bf3822fffc6466b38d80 09-Jun-2005 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Handle Clz64 and Ctz64.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3863 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
132bfccd21960e462352175f8553a5bdce8a210c 04-Jun-2005 njn <njn@a5019735-40e9-0310-863c-91ae7b9d1cf9> Modularised assertions and panics in m_libcassert.

As part of this, killed the VG_STRINGIFY macro, which was used to expand
out names like "VG_(foo)" and "vgPlain_foo" in assertion failure
messages. This is good since we actually want the "VG_(foo)" form used
in these messages.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3842 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
36a20fa5f779a0a6fb7b4a90dcaa6376481f1faa 03-Jun-2005 njn <njn@a5019735-40e9-0310-863c-91ae7b9d1cf9> Modularise printing functions in m_libcprint.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3840 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
826ec49ac9fcbc4f9bb1134d3b8827e4ee0f7687 12-May-2005 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Use the new IRStmt_AbiHints created by the amd64 front end. This
finally makes memcheck able to reliably track the definedness of the
stack on amd64.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3686 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
51d827bcd88ce045a383ea1ca81768757df2d1fa 09-May-2005 njn <njn@a5019735-40e9-0310-863c-91ae7b9d1cf9> Big clean-up: changed the core/tool interface to be mediated entirely
through the VG_(tdict) function dictionary, rather than using TL_(foo)
functions.

This facilitated the following changes:

- Removed the "TL_" prefix, which is no longer needed.

- Removed the auto-generated files vg_toolint.[ch], which were no longer
needed, which simplifies the build a great deal. Their (greatly
streamlined) contents went into core.h and vg_needs.h (and will soon
go into a new module defining the core/tool interface).

This also meant that tool.h.base reverted to tool.h (so no more
accidentally editing tool.h and not having the changes go into the
repo, hooray!) And gen_toolint.pl was removed. And toolfuncs.def was
removed.

- Removed VG_(missing_tool_func)(), no longer used.

- Bumped the core/tool interface major version number to 8. And I
killed the minor version number, which was never used. The layout
of the ToolInfo struct is such that this should not cause problems.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3644 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
e53bd99542226fcc64fe51c1e4158248993fc852 03-May-2005 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Handle Iop_Neg{8,16,32}.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3601 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
d9dbc19c507323f02079ea4ee3cca66149f7357c 27-Apr-2005 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Handle various new 64-bit integer primops.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3576 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
37c31ccc12f6b479b06fbe94f8f74814fb553c28 27-Apr-2005 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> * Modify the instrumenter to use the new primops introduced in
vex rev 1144.

* Observe that mkLazy2 generates IR which often turns into
long and slow code sequences in the back end, primarily because
PCast operations are expensive. Add a couple of special
cases which give noticably better performance when handling
FP-intensive code on x86.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3572 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
cd986336a55192fe237a72b323b378b674af38e0 26-Apr-2005 tom <tom@a5019735-40e9-0310-863c-91ae7b9d1cf9> Support the 64 bit comparison instructions which vex is now using.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3570 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
96a922e5fe4ef47150f1116001ebab3b98c61ea3 24-Apr-2005 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Add 64-bit values to the bogus-literal detector.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3548 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
11bcc4ec8e861aea0dc36b32f6fcc9300dddd577 24-Apr-2005 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Handle 8-byte value-check failures using a special fast-case fn (like
0,1,4 sized) rather than the generic one. Remove size 2 since that
never seems to get used.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3545 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
69a1332a98a195be9300c5c5b5e5add32bae5aa6 23-Apr-2005 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Add a few cases arising from testing on amd64.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3544 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
6cf40ffd6d17589c81b6fe6a0da6f4b6b83c4f80 21-Apr-2005 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Fix a bunch of 64-bit cases required amd64. Stop to ponder whether
there is a better way to handle the 'pessimising cast' family of
operations in such a way that Vex's back-end instruction selectors can
generate better code than they do now, with less verbosity and general
confusingness in the insn selectors.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3536 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
96403eb283475bee96cce41daf4c0c54924daf2e 01-Apr-2005 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Add a missing case. I guess it can't have been wildly popular :-)


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3496 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
d54babf82db303dfe43082bfe1af75d7b58b3267 21-Mar-2005 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Track Vex API change in rev 1062: pass both the guest and host word
sizes to the instrumentatation functions. Make most of the tools
abort if they are not the same; we can't handle that case yet.




git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3397 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
21dc345ce861ac5a5686391b77659934c1d49a3e 21-Mar-2005 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Track Vex API (semantics) changes in rev 1061: introduction of IRStmt_NoOp.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3396 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
710d6c27c3ce7bf26639bda3ab4f42695bc92c2c 20-Mar-2005 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Track minor Vex API changes that occurred in Vex rev 1059.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3393 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
29faa50dd7ea4d4a8aa3c82b299bb38880e19237 16-Mar-2005 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Make existing tools aware of IR instruction marks. (They ignore them,
though).



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3381 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
5361242f022b38fadb4cdf02428cea8b8d901a90 12-Mar-2005 njn <njn@a5019735-40e9-0310-863c-91ae7b9d1cf9> Update copyright notice for 2005 on all relevant files. Don't bother trying
to be selective about it.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3303 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
20d38f29475b36dc3ced6ee96fd6b7651faf31c8 08-Feb-2005 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Track renaming of Vex's Iop_*128* primops to Iop_*V128*.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3232 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
681be302af5528c2cb415270da9fde2e7f347e69 15-Jan-2005 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Handle Add64/Sub64 (naively).


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3224 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
acd2e910861cfc0f95229401922d38d7ce9c6259 13-Jan-2005 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Add support for 64-bit SIMD primops.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3223 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
bd598e1577f3e9c70978d2f7c77cbbd5af0c7ecd 07-Jan-2005 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Handle IRStmt_MFence in the tools.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3217 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
d5204dcce510ae2bc6cc956c13cd4700980fe6d1 31-Dec-2004 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Finishing installing PaulM's improved accuracy handling for Add/Sub,
and also do better for CmpEQ/CmpNE.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3212 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
e50a1b14b5ec5a180d2797614de48b19129c9e4f 17-Dec-2004 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> mkUifU: add missing case


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3205 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
db67f5fbbfcf585bf4ff553ab555b9e4ffc1d195 14-Dec-2004 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Handle Iop_Sar16.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3197 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
a1d9330a6d80e3c1ab69d7f0d0ad6c45b8a5cd38 12-Dec-2004 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Complete enough 128-bit vector stuff in memcheck so that SSE2 works.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3192 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
0b07059814aee8563905f2caeef186a8c83072cf 10-Dec-2004 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Support for 64x2 vector floating point.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3191 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
170ee210842367a5cc52390358ba560774f76329 10-Dec-2004 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Stuff to make Memcheck work with SSE1 instructions.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3190 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
3245c919d273a73ce23632d6a3ab4fc027fefcd9 10-Dec-2004 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Basics for 128-bit SIMD code.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3189 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
7010f6eec42f5ace7c02c582e12d8150c2a2c964 10-Dec-2004 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Fix enough stuff so that x86 MMX tests work.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3188 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
e9e16d3699cb81d5610a567c3e11d54402b0c162 10-Dec-2004 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Fix enough stuff so that x86 floating point tests work properly.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3187 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
7cf97ee841afd255879bff9ff791fbabb7f95cec 28-Nov-2004 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Build fixes for gcc-2.95.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3132 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
a72032508d826f53df7e1211327f5321d9fba56f 26-Nov-2004 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> When doing pessimistic lazy propagation through a dirty helper call,
do not consider inputs from those parts of the guest state marked as
read (or modified) which which are declared to be always-defined, and
dually do write outputs to those parts of the guest state written (or
modified) which are declared to be always-defined.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3119 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
95448075345dc73986042f6dc68eb464d02bc6a8 22-Nov-2004 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Make Memcheck compilable.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3065 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
26f025100805e561354c8c98b5ebb0c4a517d9a9 22-Nov-2004 njn <njn@a5019735-40e9-0310-863c-91ae7b9d1cf9> Converted the SK_ prefix to TL_ everywhere.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3060 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
6799325d013e8e5668c2b8727203c77294ccd202 22-Nov-2004 njn <njn@a5019735-40e9-0310-863c-91ae7b9d1cf9> Renamed VG_(skin_panic) as VG_(tool_panic).



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3057 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
ca82cc01fb1580551144b69d3f17213a80d952e1 22-Nov-2004 njn <njn@a5019735-40e9-0310-863c-91ae7b9d1cf9> Renamed sk_assert() as tl_assert().



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3055 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
885dd9184175039b5ddeff4c2b2b644d5a25ec91 04-Aug-2004 nethercote <nethercote@a5019735-40e9-0310-863c-91ae7b9d1cf9> Tweaked sanity-checking: made function naming more consistent, removed
unnecessarily global functions from vg_include.h, etc.

Also tweaked printing of malloc stats.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2562 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
996901a830e8e7c3fd8be8f0c675c71f2b108957 03-Aug-2004 nethercote <nethercote@a5019735-40e9-0310-863c-91ae7b9d1cf9> Comment changes only: s/skin/tool/


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2555 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
0987528f744321ecbf9b745746b044dcf29d468e 26-Apr-2004 nethercote <nethercote@a5019735-40e9-0310-863c-91ae7b9d1cf9> Add missing SSE case for Memcheck's instrumentation (sigh).


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2389 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
0e5d2e30d91eac63c19ccc3ca68092f7654a5862 22-Apr-2004 nethercote <nethercote@a5019735-40e9-0310-863c-91ae7b9d1cf9> SETV and TESTV never have an ArchReg as their first argument.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2383 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
989df357e73f8d4f2b88c1bce626272c68976e9e 28-Mar-2004 thughes <thughes@a5019735-40e9-0310-863c-91ae7b9d1cf9> Fix typo in FPU eflags fix.

CCMAIL: 78514-done@bugs.kde.org


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2345 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
d88f41545012708f5d79335bafb5858ad57f1d55 28-Mar-2004 thughes <thughes@a5019735-40e9-0310-863c-91ae7b9d1cf9> For FPU/MMX/SSE instructions which don't reference any memory, make memcheck
look at whether the eflags are read or written and generate UCode to validate
and/or mark as valid the eflags when necessary.

CCMAIL: 78514-done@bugs.kde.org


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2344 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
96b466ac1bc4b09b45c08b79cdadd3d42461bc2b 15-Mar-2004 thughes <thughes@a5019735-40e9-0310-863c-91ae7b9d1cf9> Move the handling of PSHUFW from the SSE code to the MMX code so that
it will work on older Athlons which only have MMXEXT support.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2319 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
1018bdd2cba920fd768aba7e4c8a823a6cbdf17b 12-Feb-2004 nethercote <nethercote@a5019735-40e9-0310-863c-91ae7b9d1cf9> Heroic patch from Tom Hughes:

This patch adds translation tests for most of the basic x86 instructions and
fixes a few missing/broken instructions to work properly.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2242 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
b1affa88ef798064014f9657fa6bb4a8501fdbf8 19-Jan-2004 nethercote <nethercote@a5019735-40e9-0310-863c-91ae7b9d1cf9> Patch from Tom Hughes, for bug 72643:

Patch to improve SSE/SS2 support

This patch should implement most of the missing SSE/SSE2 opcodes. About
the only ones it doesn't do are the MASKMOVxxx ones as they are quite
horrible and involved an implicit reference to EDI so I need to think
about them a bit more.

The patch also includes a set of tests for the MMX/SSE/SSE2 opcodes to
validate that they have the same effect under valgrind as they do when
run normally. In one or two cases this wasn't actually the case even
for some of the implemented opcodes, so I fixed those as well ;-)


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2202 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
fca60182e856482778cdc95788b6ddf0f5303169 05-Jan-2004 jseward <jseward@a5019735-40e9-0310-863c-91ae7b9d1cf9> Support for FXSAVE/FXRSTOR (Tom Hughes). Fixes #71180.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2183 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
bb1c99123c95fb9a4a2617d6e1d09559ac68db80 04-Jan-2004 nethercote <nethercote@a5019735-40e9-0310-863c-91ae7b9d1cf9> Updated copyright dates for 2004. Also added a couple of missing headers and
footers to some new files.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2177 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
00a8a6fb0a8ea5452cbe18015f4a5c630e835af7 02-Jan-2004 mueller <mueller@a5019735-40e9-0310-863c-91ae7b9d1cf9> fix comment


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2157 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
137bc55f216bc7d9528f159a78cdf9025e0b02ff 14-Nov-2003 nethercote <nethercote@a5019735-40e9-0310-863c-91ae7b9d1cf9> Started to rescind the name "skin", replacing it with "tool". Did this in all
the places that normal users will see:

- command line: --tool=foo (although --skin=foo still works)
- docs: removed all traces (included renaming coregrind_skins.html to
coregrind_tools.html)
- in the usage messages
- in error messages

Also did in in some places that I judged were unlikely to cause clashes with
existing workspaces:

- in the header comments of many files (eg. "This file is part of Memcheck, a
Valgrind tool for...")
- in the regtests script
- in the .supp files
- in AUTHORS
- in README_MISSING_SYSCALL_OR_IOCTL

Also update the AUTHORS file to mention Jeremy.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2027 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
77d30a2f72872e990a7604f029153d5f4fed665e 19-Oct-2003 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> SSE/SSE2 fixes needed to run the entire test suite of the GNU
Scientific Library (gsl-1.4) compiled with Intel Icc 7.1 20030307Z '-g
-O -xW'. I think this gives pretty good coverage of SSE/SSE2 floating
point instructions, or at least the subset emitted by Icc. So far
tested on memcheck and nulgrind; addrcheck and cachesim still testing.

MERGE TO STABLE


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@1955 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
b11168575af550e72048e09e1f372eeb13a32be6 17-Oct-2003 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Clean up and extend some of the SSE instrumentation cases.

MERGE TO STABLE


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@1948 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
5efa4fd5de1172b0ed9de484c9b22af4bf0b1ae7 14-Oct-2003 jsgf <jsgf@a5019735-40e9-0310-863c-91ae7b9d1cf9> This creates a new UInstr for multiply. This is mainly so that memcheck
can treat it like add and generate partially-defined results of multiply
with partially defined arguments. It may also speed things up a bit,
if they use lots of multiplies.

This change only deals with signed "new style" multiplies. That the x86
has two quite different kinds of multiply instructions: the "old-style"
signed and unsigned multiply which uses fixed registers (eax:edx) and
generates a result twice the size of the arguments, and the newer signed
multiple which takes general addressing modes. It seems that gcc always
(almost always?) generates the new signed multiply instructions, except
for byte-sized multiplies.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@1925 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
247f32f9a8725d69b03690a287f0832108cefdc5 03-Oct-2003 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Handle SSE5.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@1891 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
b2d443246407e9dcd733cdeb87ef810ede51b929 27-Sep-2003 njn <njn@a5019735-40e9-0310-863c-91ae7b9d1cf9> Remove extraneous tabs from Memcheck --trace-codegen output.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@1838 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
b6d9b5426120bb87736591d22376e94355130bfb 26-Sep-2003 daywalker <daywalker@a5019735-40e9-0310-863c-91ae7b9d1cf9> implement all SSE(2) ucodes. now I can run mplayer in valgrind :)


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@1832 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
0d14a5615051092ba1482572a5c2db49a17f1682 04-Sep-2003 njn <njn@a5019735-40e9-0310-863c-91ae7b9d1cf9> Trivial assertion fix -- the SSE3 instructions can be of size 8.

MERGE TO STABLE


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@1811 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
fa509e24b59d8f247b44cea2d04d3b19b54c85e8 28-Aug-2003 njn <njn@a5019735-40e9-0310-863c-91ae7b9d1cf9> Minor fix: errors on MMX_MemRd instructions were erroneously being called
writes.

MERGE TO STABLE


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@1807 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
4fbe6e9ff89567e4c8cc7fdf579ad5b8c25ce1d0 15-Jun-2003 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Rename the SSE and MMX uinstrs which read/write integer registers, in
a way consistent with the position of the register field in the
instruction. In Intel encoding parlance, the G register is in bits
5,4,3 and the E register is bits 2,1,0, and so we adopt this scheme
consistently. Considering how much confusion this has caused me in
this recent bout of SSE hacking, consistent renaming can only be a
good thing. It makes it a lot easier to figure out if parts of the
SSE handling machinery are correct, or not.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@1698 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
93992e2a8310f9ba5e1d2d2fac92e78912772405 26-May-2003 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Teach memcheck about the SSE UInstrs generated thus far. So now the
Qt GL demos run on memcheck.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@1653 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
0e1b514ab8e837f75a207a037ea53a6a721e9d28 15-Apr-2003 njn <njn@a5019735-40e9-0310-863c-91ae7b9d1cf9> Updated copyright notices for 2003. Only 4 months late.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@1526 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
d1c9e43c3272d8984ca1da1322a43f05c2e1962e 04-Apr-2003 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Implement MMX movd where the src is an mmxreg and the dst is an ireg or
memory.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@1507 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
d7971010f75e299ecba7a28eb836d872549beef1 04-Apr-2003 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Rationalise ucode generation for 4-byte moves into the MMX unit (movd).


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@1506 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
901a4a946376b70c7c87f750dc3eef44e78032be 30-Mar-2003 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Teach memcheck skin how to deal with MMX instrumentation.
Valgrind should now be fairly usable with MMX code.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@1490 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
3d7c9c8c2e4882c787a9b63befe095785f3d5d07 26-Mar-2003 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Implement support for the MMX instruction set. The scheme used is
the same as that for FPU instructions. That is, regard the MMX state
(which is the same as the FPU state) opaquely, and every time we
need to do a MMX instruction, move the simulated MMX state into the
real CPU, do the instruction, and move it back. JeremyF's optimisation
to minimise FPU saves/restores applies automatically here.

So, this scheme is simple. It will cause memcheck to complain bitterly
if uninitialised data is copied through the MMX registers, in the same
way that memcheck complains if you move uninit data through the FPU
registers. Whether this turns out to be a problem remains to be seen.

Most instructions are done, and doing the rest is easy enough, I just
need people to send test cases so I can do them on demand.

(Core) UCode has been extended with 7 new uinstrs:

MMX1 MMX2 MMX3
-- 1/2/3 byte mmx insns, no references to
integer regs or memory, copy exactly to the output stream.

MMX_MemRd MMX_MemWr
-- 2 byte mmx insns which read/write memory and therefore need
to have an address register patched in at code generation
time. These are the analogues to FPU_R / FPU_W.

MMX_RegRd MMX_RegWr
-- These have no analogues in FPU land. They hold 2 byte insns
which move data to/from a normal integer register (%eax etc),
and so this has to be made explicit so that (1) a suitable
int reg can be patched in at codegen time, and (2) so that
memcheck can do suitable magic with the V bits going into/
out of the MMX regs.

Nulgrind (ok, this is a nop, but still ...) and AddrCheck's
instrumenters have been extended to cover these new UInstrs. All
others (cachesim, memcheck, lackey, helgrind, did I forget any)
abort when they see any of them. This may be overkill but at least
it ensures we don't forget to implement it in those skins.
[A bad thing would be that some skin silently passes along
MMX uinstrs because of a default: case, when it should actually
do something with them.]

If this works out well, I propose to backport this to 2_0_BRANCH.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@1483 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
f4ce3d3d18a160af87f3aa7b60363894db10d486 10-Feb-2003 njn <njn@a5019735-40e9-0310-863c-91ae7b9d1cf9> Fixed a minor bug -- the condition for determining whether
VG_(handle_esp_assignment)() was needed by a skin (and thus whether to register
it in the baseBlock) was different to that used when determining whether to
call it in code generation... so it could be (attempted to be) called having
not been registered.

Fixed this by consistifying the conditions, using a function
VG_(need_to_handle_esp_assignment)() that is used in both places. The bug
hadn't been found previously because no existing skin exercised the mismatched
conditions in conflicting ways.

Also took VG_(track).post_mem_write out of consideration because it's no longer
important (due to a change in how stack switching is detected).

----
Improved the error message for when a helper can't be found in the baseBlock --
now looks up the debug info to tell you the name of the not-found function.

----
Increased the number of noncompact helpers allowed from 8 to 24

----
Removed a magic number that was hardcoded all over the place, introducing
VG_MAX_REGS_USED for the size of the arrays needed by VG_(get_reg_usage)()

----
Also added these functions

VG_(get_archreg)()
VG_(get_thread_archreg)()
VG_(get_thread_shadow_archreg)()
VG_(set_thread_shadow_archreg)()

which can be useful for skins.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@1419 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
51647488cc84a206e3e9b4ca773606bfe848adb5 15-Dec-2002 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Get rid of the --check-addrVs flag and everything to do with it.
It no longer makes much sense now we have a seperate addrcheck skin.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@1371 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
5c004e4befbb4bb13d9bdb5084748585ea2b9ec3 18-Nov-2002 njn <njn@a5019735-40e9-0310-863c-91ae7b9d1cf9> Overview:
- Factored out a lot of commonality between AddrCheck and MemCheck. Basic
idea is that common code goes into a single file in MemCheck, and AddrCheck
peeks in and "borrows" it.

More or less, only identical code or identical-with-respect-to-subtypes
code was factored out.

Identical-with-respect-to-subtypes means that some enum types (SuppKind,
ErrorKind, etc) were merged because they were identical except that
MemCheck had some extra constants. So some of the code borrowed by
AddrCheck contains cases it never needs. But that's not so bad, avoiding
the duplication is IMHO more important.

Removed:
- ac_include.h, it wasn't necessary

- All the old debugging stuff from ac_main.c (printing shadow regs, not
applicable for AddrCheck).

- MANUAL_DEPS from memcheck/Makefile.am because it wasn't doing anything

- Some unnecessary crud from addrcheck/Makefile.am

Added:
- memcheck/mc_common.{c,h}
- memcheck/mc_constants.h
- addrcheck/ac_common.c, which simply #includes memcheck/mc_common.c. This
hack was required because there is no way (that I could work out) to tell
Automake that it should build ../memcheck/mc_common.o before building
AddrCheck.

Changed:
- a lot of prefixes from SK_ to MC_; only core/skin interface functions are
prefixed with SK_ now. This makes it clear which functions are from the
core/skin interface, and for AddrCheck it's clear which functions are
shared with/borrowed from MemCheck. Changed some related prefixes for
consistency.

- Also factored out some duplication within AddrCheck -- some accessibility
checking was needlessly split up into separate read and write checks that
did the same thing.

Unchanged:
- I considered moving the leak detector out of core into mc_common.c, but
didn't, because it constantly accesses ShadowChunk fields and converting to
get/set methods would have been a total pain.

- Left old debugging stuff in for MemCheck, although I seriously doubt it
would still work.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@1325 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
810086f9489e1cb373bcfc15ab94a3fa3ec403f3 14-Nov-2002 njn <njn@a5019735-40e9-0310-863c-91ae7b9d1cf9> Lots of changes to future-proof the core/skin interface, making it less likely
that changes will cause binary incompatibilities. Mostly done by hiding naked
structs with function calls.

Structs hidden in this way were: UCodeBlock, SkinSupp and SkinError (which were
merged back with CoreSupp and CoreError into single types Supp and Error),
ShadowChunk, VgDetails, VgNeeds and VgTrackEvents. The last three are the most
important ones, as they are (I think) the most likely to change.

Suitable get()/set() methods were defined for each one. The way UCodeBlocks
are copied for instrumentation by skins is a little different now, using
setup_UCodeBlock. Had to add a few other functions here n there. Changed
how SK_(complete_shadow_chunk) works a bit.

Added a file coregrind/vg_needs.c which contains all the get/set functions.
It's pretty simple.

The changes are not totally ideal -- eg. ShadowChunks has get()/set() methods
for its `next' field which arguably shouldn't be exposed (betraying the fact
that it's a linked list), and the get()/set() methods are a bit cumbersome at
times, esp. for `Error' because the fields are accessed quite a few times, and
the treatment of Supps and Errors is a bit inconsistent (but they are used in
different ways), and sizeof_shadow_blocks is still a hack. But still better
than naked structs. And one advantage is that a bit of sanity checking can be
performed by the get()/set() methods, as is done for VG_({get,set}_sc_extra)()
to make sure no reading/writing occurs outside the allowed area.

I didn't do it for UInstr, because its fields are accessed directly in lots and
lots of spots, which would have been a great big pain and I was a little
worried about overhead of calling lots of extra functions, although in practice
translation times are small enough that it probably doesn't matter.

Updated the example skin and the docs, too, hurrah.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@1314 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
7a5ebcf66cfbd2fefa261cfbaf5f03527c299a29 13-Nov-2002 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Merge patch from JeremyF:

39-lock-prefix

Add a new UInstr LOCK to represent a "lock" prefix in the instruction
stream. This has the same semantics as NOP, but allows a skin to tell
whether a group of UInstrs associated with an x86 instruction are
meant to be locked.

HELGRIND: uses the LOCK UInstr to automatically take and release a
special __BUS_HARDWARE_LOCK__ around locked instructions. This only
works properly if all instructions touching a given address are locked
(even reads).


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@1310 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
8ec2cfcb9c1267fd7b20529f1b95973a9712b872 13-Oct-2002 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Incorporate horrible hack to workaround problem of emitting bogus
uninit-value errors on code with inlined strlen() et al from gcc-3.1
and above.

MERGE TO STABLE


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@1213 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
ac6c17667e489215a0795c24cc1b202254582a4f 04-Oct-2002 njn <njn@a5019735-40e9-0310-863c-91ae7b9d1cf9> Moved the following macros, which were defined multiple times in multiple
files, into vg_skin.h:

uInstr0, uInstr1, uInstr2, uInstr3, nameIReg, nameISize, nameSReg,
newTemp, newShadow, uLiteral, uCCall

As macros they avoid namespace problems (they expand to VG_(whatever)) so
this should work fine.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@1182 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
c953984b8ee34ac55830b9871138b409d9d9476c 02-Oct-2002 njn <njn@a5019735-40e9-0310-863c-91ae7b9d1cf9> Updated file descriptions in the copyright notices to reflect the core/skin
split. Each skin now has its own two-line description.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@1166 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
e427a6636de5b2d34c2223821ff5cbf79bad4fad 02-Oct-2002 njn <njn@a5019735-40e9-0310-863c-91ae7b9d1cf9> Changes made so that skin error "report this bug to" messages are distinguished
from core error ones:

- Split up VG_(panic) into VG_(core_panic) and VG_(skin_panic)

- Likewise, split vg_assert into vg_assert and sk_assert

- Added a new need string: `bug_reports_to'

- Removed VG_(skin_error) which was a previous wussy attempt at this change.
This removed the need for the hacky redeclaration of VG_(skin_error) in
vg_profile.c, which is good.

At the moment, Julian and Nick's email addresses are hard-coded into each skin
individually, rather than using a #define in vg_skin.h, because that didn't
feel quite right to me... jseward@acm.org is still done with a #define for
core errors, though.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@1164 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
9b22bca70157d5c00b9bab1df8328d02248b2783 01-Oct-2002 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Remove comment that nobody can make sense of.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@1147 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
d077f533d5422966ab9f013ccbeb0c8ecc8506ff 30-Sep-2002 sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> Teach memcheck about instrumenting {GET,PUT,USE}SEG.

Also implement MOV Sw,Ew.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@1141 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
4ba5a79d946b22c52856d62dca7c927cb306dfa3 30-Sep-2002 njn <njn@a5019735-40e9-0310-863c-91ae7b9d1cf9> Converted all functions visible from vg_skin.h with names in CamelCaps to
use_under_scores instead, to be consistent.

Also added some missing 'extern's on function declarations in vg_skin.h.

Also added a quick note in vg_regtest.in on the simplest way to run regression
tests.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@1135 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
cac76cb18577b9c51d331f56e8ea241f6effaf31 23-Sep-2002 njn25 <njn25@a5019735-40e9-0310-863c-91ae7b9d1cf9> Changed lots of files for the new core/ + skin/ directory structure:

- changed lots of Makefile.am files
- changed configure.in
- changed lots of #include lines for changed file names
- changed lots of file headers n footers for changed file names
- changed vg_regtest to handle new directory structure -- recursively
traverses subdirectories for .vgtest test files
- changed lots of paths in memcheck/ regression test expected outputs


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@1090 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c
e49d8e7dfd3a9c96feb9935b5920973dfc0b170a 23-Sep-2002 njn25 <njn25@a5019735-40e9-0310-863c-91ae7b9d1cf9> Files updated, added and removed in order to turn the ERASER branch into HEAD


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@1086 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/memcheck/mc_translate.c