]> git.ipfire.org Git - thirdparty/valgrind.git/log
thirdparty/valgrind.git
12 years agoARM back end: handle IRDefaults in dirty helper calls.
Julian Seward [Mon, 17 Dec 2012 21:55:21 +0000 (21:55 +0000)] 
ARM back end: handle IRDefaults in dirty helper calls.

git-svn-id: svn://svn.valgrind.org/vex/branches/COMEM@2595

12 years agoIR: add the ability to specify the call-didn't-happen ("default")
Julian Seward [Mon, 17 Dec 2012 21:54:10 +0000 (21:54 +0000)] 
IR: add the ability to specify the call-didn't-happen ("default")
return value for conditional dirty helper calls returning values.  The
default value can be either all-zeroes or all-ones.

git-svn-id: svn://svn.valgrind.org/vex/branches/COMEM@2594

12 years agoRemove a bit of debug printing.
Julian Seward [Mon, 17 Dec 2012 21:51:59 +0000 (21:51 +0000)] 
Remove a bit of debug printing.

git-svn-id: svn://svn.valgrind.org/vex/branches/COMEM@2593

12 years agoChange a bunch more Thumb load/store events to use IR guarded loads/stores.
Julian Seward [Wed, 12 Dec 2012 18:30:12 +0000 (18:30 +0000)] 
Change a bunch more Thumb load/store events to use IR guarded loads/stores.

git-svn-id: svn://svn.valgrind.org/vex/branches/COMEM@2589

12 years ago* make ARM word and unsigned byte load/stores use LoadG/StoreG
Julian Seward [Mon, 26 Nov 2012 13:47:31 +0000 (13:47 +0000)] 
* make ARM word and unsigned byte load/stores use LoadG/StoreG
* correctness fix for default cases in already-done cases

git-svn-id: svn://svn.valgrind.org/vex/branches/COMEM@2574

12 years agoMake a couple more load/store cases use IRLoadG/IRStoreG. Also add
Julian Seward [Mon, 26 Nov 2012 10:44:19 +0000 (10:44 +0000)] 
Make a couple more load/store cases use IRLoadG/IRStoreG.  Also add
debug printing to find out which load/store cases are most used in
practice.

git-svn-id: svn://svn.valgrind.org/vex/branches/COMEM@2573

12 years agoInitial front changes for ARM, to generate direct IR for at least some
Julian Seward [Sun, 25 Nov 2012 15:26:48 +0000 (15:26 +0000)] 
Initial front changes for ARM, to generate direct IR for at least some
conditional loads and stores.  Very incomplete -- most load-store
cases still use the old scheme.

git-svn-id: svn://svn.valgrind.org/vex/branches/COMEM@2572

12 years agoARM back end changes, to support code generation for IR guarded loads
Julian Seward [Sun, 25 Nov 2012 15:17:42 +0000 (15:17 +0000)] 
ARM back end changes, to support code generation for IR guarded loads
and stores.

git-svn-id: svn://svn.valgrind.org/vex/branches/COMEM@2571

12 years agoAdd IR level definitions and associated iropt hackery, to support
Julian Seward [Sun, 25 Nov 2012 15:14:44 +0000 (15:14 +0000)] 
Add IR level definitions and associated iropt hackery, to support
direct representation of conditional (guarded) loads and stores in IR.

git-svn-id: svn://svn.valgrind.org/vex/branches/COMEM@2570

12 years agoMove this directory to the right place. Duh.
Julian Seward [Sun, 25 Nov 2012 12:48:39 +0000 (12:48 +0000)] 
Move this directory to the right place.  Duh.

git-svn-id: svn://svn.valgrind.org/vex/branches/COMEM@2569

12 years agoCreate a copy of trunk r2567 to hold work on adding direct support
Julian Seward [Sun, 25 Nov 2012 12:35:42 +0000 (12:35 +0000)] 
Create a copy of trunk r2567 to hold work on adding direct support
for conditional loads and stores to IR ("COnditional MEMory")

git-svn-id: svn://svn.valgrind.org/vex/COMEM@2568

12 years agoFormatting only change.
Florian Krohm [Sun, 25 Nov 2012 01:22:27 +0000 (01:22 +0000)] 
Formatting only change.

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

12 years agoMake some function parameters pointer to const.
Florian Krohm [Sat, 24 Nov 2012 21:07:14 +0000 (21:07 +0000)] 
Make some function parameters pointer to const.
Companion patch to valgrind r13138.

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

12 years agoCorrectly model LL/SC on MIPS.
Petar Jovanovic [Fri, 23 Nov 2012 00:44:37 +0000 (00:44 +0000)] 
Correctly model LL/SC on MIPS.

As the issue with RMW on MIPS does not block execution anymore (see Valgrind
patch r13136), we can switch back to model it through LoadL and StoreC instead
of using incorrect Load and Store.

This will give back correct output to memcheck/tests/atomic_incs on MIPS.

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

12 years agoChanges for -Wwrite-strings
Florian Krohm [Wed, 21 Nov 2012 00:36:55 +0000 (00:36 +0000)] 
Changes for -Wwrite-strings

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

12 years agoVEX, ppc fix use of modified value in the Iop_32HLto64 implementation
Carl Love [Tue, 20 Nov 2012 17:32:48 +0000 (17:32 +0000)] 
VEX, ppc fix use of modified value in the Iop_32HLto64 implementation

The issue with the Iop_32HLto64, as explained by Julian:
One of the "rules of the game" of instruction selection is that the register
returned by any of the isel* functions may not be modified -- if it needs to
be modified, first copy the value off to a different register. The rule exists
because, in this case, e->Iex.Binop.arg2 might be an IRExpr_RdTmp, in which
case iselWordExpr_R simply returns the register which holds the value of the
relevant IR temporary. And so if r_Lo is modified then any subsequent uses of
that IR temporary will get the wrong value. In this case, r_Lo is
modified without first copying it.

This patch fixes the issue by assigning the result of the AND operation to
a temporary and then using the temporary result in the OR operation thus
avoiding using a modified value.

This patch is for bugzilla 309922.

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

12 years agoAdd a special-case implementation of PCMPISTRI $0x3A, which generates
Julian Seward [Tue, 20 Nov 2012 15:24:24 +0000 (15:24 +0000)] 
Add a special-case implementation of PCMPISTRI $0x3A, which generates
in-line IR instead of calling helpers.  This is so that Memcheck can
do exact definedness propagation through it.  This is important for
dealing with inlined PCMPISTRI-based strlen calls.

#309921, comment 6.  (Patrick J. LoPresti , lopresti@gmail.com)

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

12 years agoFix type mixup. Spotted by GCC, analysed by Julian.
Florian Krohm [Mon, 19 Nov 2012 16:29:31 +0000 (16:29 +0000)] 
Fix type mixup. Spotted by GCC, analysed by Julian.

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

12 years agoAdd support for binary DFP operations (64-bit).
Florian Krohm [Sat, 10 Nov 2012 22:34:14 +0000 (22:34 +0000)] 
Add support for binary DFP operations (64-bit).
Patch by Maran (maranp@linux.vnet.ibm.com).
Part of fixing BZ 307113.

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

12 years agoImprove accuracy of definedness tracking through the x86 PMOVMSKB and
Julian Seward [Thu, 8 Nov 2012 10:57:08 +0000 (10:57 +0000)] 
Improve accuracy of definedness tracking through the x86 PMOVMSKB and
BSF instructions, as the lack of it causes false positives (VEX side).
Fixes #308627.  Combined efforts of Patrick J. LoPresti
<lopresti@gmail.com> and me.

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

12 years agoValgrind, ppc: Fix missing checks for 64-bit instructions operating in 32-bit mode...
Carl Love [Mon, 29 Oct 2012 20:23:41 +0000 (20:23 +0000)] 
Valgrind, ppc:  Fix missing checks for 64-bit instructions operating in 32-bit mode, Bugzilla 308573

A number of the POWER instructions are only intended to run on 64-bit
hardware.  These instructions will give a SIGILL instruction on 32-bit
hardware.  The check for 32-bit mode on some of these instructions is
missing.  Although, the 64-bit hardware will execute these instructions
on 64-bit hardware without generating a SIGILL the use of these
instructions in 32-bit mode on 64-bit hardware is typically indicative of
a programming error. There are cases where these instructions are used
to determine if the code is running on 32-bit hardware or not.  In these
cases, the instruction needs to generate a SIGILL for the error handler
to properly determine the hardware is running in 32-bit mode.

This patch adds the 32-bit mode check for those 64-bit instructions that
do not have the check.  If the check fails, the instruction is flagged
as an unsupported instruction and a SIGILL message is generated.

This patch fixes the bug reported in:
Bug 308573 - Internal Valgrind error on 64-bit instruction executed in
32-bit mode

Note, there is an accompaning fix to memcheck/tests/ppc32/power_ISA2_05.c
to only execute the 64-bit instruction prtyd test in 64-bit mode.

Carl Love  cel@us.ibm.com

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

12 years agoAdd machinery to support DFP rounding modes.
Florian Krohm [Sat, 27 Oct 2012 16:19:31 +0000 (16:19 +0000)] 
Add machinery to support DFP rounding modes.
Part of fixing BZ 307113.
Patch by Maran <maranp@linux.vnet.ibm.com>

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

12 years agoFix compilation warning on non-mips targets (rm was flagged as unused)
Julian Seward [Fri, 26 Oct 2012 08:00:59 +0000 (08:00 +0000)] 
Fix compilation warning on non-mips targets (rm was flagged as unused)

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

12 years agoConstify VEX's external interface.
Florian Krohm [Sun, 21 Oct 2012 02:09:51 +0000 (02:09 +0000)] 
Constify VEX's external interface.

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

12 years agoAdd a proper support for several MIPS instructions that generate SigFPE.
Petar Jovanovic [Fri, 19 Oct 2012 14:55:58 +0000 (14:55 +0000)] 
Add a proper support for several MIPS instructions that generate SigFPE.

This VEX change needs to be paired with r13059 on Valgrind.

Add support to properly handle TEQ, ADD and SUB instructions that generate
exceptions on MIPS platforms.

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

12 years agoAllow representation of trace caches (VexCache).
Florian Krohm [Thu, 18 Oct 2012 03:11:39 +0000 (03:11 +0000)] 
Allow representation of trace caches (VexCache).
Add more verbiage as to what can be expected from the "caches" array.

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

12 years agos390: Order the operands of the multiply-and-add/subtract IROps
Florian Krohm [Tue, 16 Oct 2012 02:53:33 +0000 (02:53 +0000)] 
s390: Order the operands of the multiply-and-add/subtract IROps
such that they match the definition in libvex_ir.h.  This was
spotted by Julian.

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

12 years agocheck in ltg jhe fix. Fixes https://bugs.kde.org/show_bug.cgi?id=308427
Christian Borntraeger [Mon, 15 Oct 2012 14:03:20 +0000 (14:03 +0000)] 
check in ltg jhe fix. Fixes https://bugs.kde.org/show_bug.cgi?id=308427

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

12 years agoFix HChar / UCHar / Char mixups. VEX now compiles without
Florian Krohm [Sat, 13 Oct 2012 19:34:19 +0000 (19:34 +0000)] 
Fix HChar / UCHar / Char mixups. VEX now compiles without
warnings about assigning pointers to incompatible types.

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

12 years agoPass VexArchInfo to the instrumentation functions.
Florian Krohm [Sun, 7 Oct 2012 21:58:07 +0000 (21:58 +0000)] 
Pass VexArchInfo to the instrumentation functions.

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

12 years agoAdd data structures for cache representation to libvex.h:
Florian Krohm [Sun, 7 Oct 2012 19:44:40 +0000 (19:44 +0000)] 
Add data structures for cache representation to libvex.h:
VexCacheInfo, VexCache, and VexCacheKind.
VexArchInfo gets a VexCacheInfo member which LibVEX_default_VexArchInfo
initialises.

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

12 years agos390: This is a pre-patch for DFP support. It renames certain
Florian Krohm [Sun, 7 Oct 2012 15:42:37 +0000 (15:42 +0000)] 
s390: This is a pre-patch for DFP support. It renames certain
identifiers to explicitly refer to BFP, as there will be counterparts
in the future for DFP.
Patch by Maran <maranp@linux.vnet.ibm.com>.
Part of fixing #307113.

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

12 years agoMake header files compilable by itself to get two benefits:
Florian Krohm [Sun, 30 Sep 2012 20:30:17 +0000 (20:30 +0000)] 
Make header files compilable by itself to get two benefits:
- never have to worry about order of inclusion
- never have to figure out hidden dependencies in order to be
  able to include a file

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

12 years agoChange the return value of LibVEX_{Chain,UnChain,PatchProfInc}.
Florian Krohm [Sat, 29 Sep 2012 17:05:46 +0000 (17:05 +0000)] 
Change the return value of LibVEX_{Chain,UnChain,PatchProfInc}.
These functions now always return the address range that was
patched. Therefore, these functions no longer need knowledge
about I-cache coherency of the host system.

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

12 years agoShorten the list of allocable registers for MIPS to fit Loongson MIPS32 mode.
Petar Jovanovic [Fri, 21 Sep 2012 00:06:14 +0000 (00:06 +0000)] 
Shorten the list of allocable registers for MIPS to fit Loongson MIPS32 mode.

In order to fit MIPS32 mode on Loongson and work around its issues, we avoid
use of odd single precision FP registers. This results in expected execution/
results of some FPU instructions on Loongson. Running FPU intensive tests has
not shown any performance decrease after the change is introduced.

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

12 years agoIn function irExpr_to_AvailExpr: Replace if-chains with a switch stmt.
Florian Krohm [Thu, 20 Sep 2012 02:40:57 +0000 (02:40 +0000)] 
In function irExpr_to_AvailExpr: Replace if-chains with a switch stmt.
This is a followup to r2524.

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

12 years agos390: Give function static linkage. Also avoids a compiler warning.
Florian Krohm [Thu, 20 Sep 2012 01:25:28 +0000 (01:25 +0000)] 
s390: Give function static linkage. Also avoids a compiler warning.

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

12 years agos390: Rename host_s390_disasm.[ch] to s390_disasm.[ch] as they
Florian Krohm [Thu, 20 Sep 2012 01:22:10 +0000 (01:22 +0000)] 
s390: Rename host_s390_disasm.[ch] to s390_disasm.[ch] as they
are not really host specific.

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

12 years agos390: Fix another harmless unop/binop field mixup.
Florian Krohm [Wed, 19 Sep 2012 16:01:21 +0000 (16:01 +0000)] 
s390: Fix another harmless unop/binop field mixup.
Spotted by Maran <maranp@linux.vnet.ibm.com>

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

12 years agos390: Update IR generation for the SRNM insn.
Florian Krohm [Tue, 18 Sep 2012 20:24:38 +0000 (20:24 +0000)] 
s390: Update IR generation for the SRNM insn.
Add support for the SRNMB insn.
New emulation warning EmWarn_S390X_invalid_rounding.

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

12 years agoAdd support for: uqsub16 shadd16 uhsub8 uhsub16. Fixes #304035.
Julian Seward [Mon, 17 Sep 2012 15:27:58 +0000 (15:27 +0000)] 
Add support for: uqsub16 shadd16 uhsub8 uhsub16.  Fixes #304035.

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

12 years agoFix PCMPxSTRx variant $0x46. Fixes #306664.
Julian Seward [Mon, 17 Sep 2012 13:40:11 +0000 (13:40 +0000)] 
Fix PCMPxSTRx variant $0x46.  Fixes #306664.

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

12 years agoSTM<c>.W <Rn>{!},<registers> (Encoding T2): allow the base register to
Julian Seward [Mon, 17 Sep 2012 11:37:43 +0000 (11:37 +0000)] 
STM<c>.W <Rn>{!},<registers> (Encoding T2): allow the base register to
appear in the list in any position, provided that writeback is not
selected.  Fixes #306297.

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

12 years agoConstify the format string in a few printf-like functions.
Florian Krohm [Thu, 13 Sep 2012 20:21:42 +0000 (20:21 +0000)] 
Constify the format string in a few printf-like functions.

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

12 years agoTweak the IR injector so it can handle an immediate operand for
Florian Krohm [Thu, 13 Sep 2012 19:33:24 +0000 (19:33 +0000)] 
Tweak the IR injector so it can handle an immediate operand for
shift operations. This is needed for Iop_ShlD64 and the like on
powerpc where the shift amount is an immediate field in the insn.
Part of fixing bugzilla #305948.

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

12 years agoAvoid compiler warning.
Florian Krohm [Thu, 13 Sep 2012 15:58:01 +0000 (15:58 +0000)] 
Avoid compiler warning.

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

12 years agos390: Handle S390_BFP_NABS correctly for 128-bit arguments.
Florian Krohm [Thu, 13 Sep 2012 03:13:26 +0000 (03:13 +0000)] 
s390: Handle S390_BFP_NABS correctly for 128-bit arguments.

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

12 years agos390: Fix s390_emit_SFPC. That insn never required two registers.
Florian Krohm [Wed, 12 Sep 2012 19:52:16 +0000 (19:52 +0000)] 
s390: Fix s390_emit_SFPC. That insn never required two registers.

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

12 years agos390: Change the handling of S390_ROUND_PER_FPC (which indicates that the
Florian Krohm [Wed, 12 Sep 2012 19:38:42 +0000 (19:38 +0000)] 
s390: Change the handling of S390_ROUND_PER_FPC (which indicates that the
actual rounding mode is to be taken from the FPC register). Previously, this
was just mapped to S390_ROUND_NEAREST_EVEN, which obviously has correctness
issues.

First, we add a function get_bfp_rounding_mode_from_fpc to extract the
rounding mode from the guest FPC when building IR.
Second, have encode_bfp_rounding_mode invoke get_bfp_rounding_mode_from_fpc
whenever a S390_ROUND_PER_FPC is requested.
Third, in insn selection track whether (and if so to what value) the
rounding mode was set for the IRSB at hand. That way redundant assignments
can be avoided. This works well because the IR optimiser do a fine job
recognising end eliminating the expressions returned earlier from
get_bfp_rounding_more_from_fpc. So they get all mapped to the same IRTemp.
Note, VEX r2524 is essential to get this behaviour.
Fourth, remove the rounding more from the bfp_unop/binop/triop s390_insns.
Fifth, if the rounding mode can be set on the insn directly, prefer that
over setting it in the FPC and picking it up from there.

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

12 years agoAdd three new kinds of AvailExpr: Mttc, Mtct, and Mtcc
Florian Krohm [Wed, 12 Sep 2012 16:40:54 +0000 (16:40 +0000)] 
Add three new kinds of AvailExpr:  Mttc, Mtct, and Mtcc
namely for Mux0X expressions where one or both of the operands
is constant.

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

12 years agos390: Remove insns for 128-bit BFP and merge with 32/64-bit. This
Florian Krohm [Mon, 10 Sep 2012 23:44:37 +0000 (23:44 +0000)] 
s390: Remove insns for 128-bit BFP and merge with 32/64-bit. This
eliminates code duplication.

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

12 years agos390: More prep work bfp reorg. In the future unary/binary/ternary
Florian Krohm [Mon, 10 Sep 2012 03:09:04 +0000 (03:09 +0000)] 
s390: More prep work bfp reorg. In the future unary/binary/ternary
operations on bfp data will no longer require a rounding mode in the
s390_insn. Only type conversion operations need a rounding mode.
So in this patch S390_BFP_CONVERT is introduced and
S390_BFP128_CONVERT_TO/FROM are consolidated to S390_BFP128_CONVERT.
This also makes the representation of bfp and bfp128 symmetric.
s390_insn gets a new variant: s390_convert.
The type conversion ops get their own data type now: s390_conv_t

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

12 years agos390: Prepare for bfp reorg. Change the emit functions for the
Florian Krohm [Sun, 9 Sep 2012 18:18:25 +0000 (18:18 +0000)] 
s390: Prepare for bfp reorg. Change the emit functions for the
convert-to-fixed and load-rounded instructions to emit the extended
form. E.g. change s390_emit_CEFBR to s390_emit_CEFBRA. In the future
we will take advantage of those insns if the host's hardware facilities
allow it.

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

12 years agos390: Add asserts to s390_emit_XYZ functions for convert-to/from-logical.
Florian Krohm [Sun, 9 Sep 2012 18:12:28 +0000 (18:12 +0000)] 
s390: Add asserts to s390_emit_XYZ functions for convert-to/from-logical.
This should have been part of r2496 when those functions were added.

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

12 years agoCorrecting how load/store doubles are modelled on MIPS for big-endian.
Petar Jovanovic [Sun, 9 Sep 2012 01:10:59 +0000 (01:10 +0000)] 
Correcting how load/store doubles are modelled on MIPS for big-endian.

One of the previous changes, r2511, was correct for little-endian and introduced
a regression for big-endian MIPS. This corrects the endianness issues.

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

12 years agos390: Fix another mixup. Did not cause problems due to same
Florian Krohm [Fri, 7 Sep 2012 21:18:42 +0000 (21:18 +0000)] 
s390: Fix another mixup. Did not cause problems due to same
field offset.

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

12 years agoFix a mixup. This never caused a problem because the fields happened
Florian Krohm [Fri, 7 Sep 2012 15:00:53 +0000 (15:00 +0000)] 
Fix a mixup. This never caused a problem because the fields happened
to have the same offset.

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

12 years agos390: Fix condition code computation for convert-to-fixed/logical
Florian Krohm [Thu, 6 Sep 2012 03:13:22 +0000 (03:13 +0000)] 
s390: Fix condition code computation for convert-to-fixed/logical
insns. Previously the condition code was computed based on the
to-be-converted value only. But that is not sufficient as testcase
none/tests/s390x/rounding-1 shows. The rounding mode needs to be
considered, too. Therefore, the rounding mode is now stored in the
flags thunk as well (in IRRoundingMode encoding). Note, that this is
done for *all* convert-to-fixed/logical insns. It's possible that some
of them do not need the rounding mode but I did not bother exploring
the fine print. Setting the rounding mode as it was on the incoming
insn certainly will not be detrimental so we can as well do it.
This patch fixes bugzilla #306054.

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

12 years agos390: The load-rounded insns also need to issue an emulation
Florian Krohm [Wed, 5 Sep 2012 20:05:20 +0000 (20:05 +0000)] 
s390: The load-rounded insns also need to issue an emulation
warning when the floating point extension is not present and
m3 != 0.

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

12 years agos390: Non-functional change.
Florian Krohm [Wed, 5 Sep 2012 19:54:08 +0000 (19:54 +0000)] 
s390: Non-functional change.
Rename enable_rounding_mode to enable_bfp_rounding_mode in
anticipation of dfp coming. Change its return value to be an
IRTemp which will be handy soon. Fix all call-sites.

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

12 years agoBinary floating point cleanup. This was an area that was hushed up
Florian Krohm [Wed, 5 Sep 2012 04:19:09 +0000 (04:19 +0000)] 
Binary floating point cleanup. This was an area that was hushed up
a bit when the s390 port was first committed. Time to get it in shape.

This patch
- completes s390_round_t to list all rounding modes that can appear
  in a convert-to instruction
- adapts function encode_rounding_mode accordingly
- ensures that all s390_round_t -> IRRoundingMode conversions go through
  encode_rounding_mode

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

12 years agoAdd vassert for DFP shift value to make sure shift value is an immediate value.
Carl Love [Tue, 4 Sep 2012 22:09:48 +0000 (22:09 +0000)] 
Add vassert for DFP shift value to make sure shift value is an immediate value.
V-bit tester was putting shift value in a register for the DFP shift
instructions causing the test to crash, see bugzilla #305948.

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

12 years agoLoad/store doubles on MIPS are modeled through Ity_F64 rather than two Ity_F32.
Petar Jovanovic [Tue, 4 Sep 2012 13:45:42 +0000 (13:45 +0000)] 
Load/store doubles on MIPS are modeled through Ity_F64 rather than two Ity_F32.

This patch changes how the load/store doublewords are modeled on MIPS.
Previously, this was modeled through two Ity_F32s which caused test reports to
be different to expected.
This fixes memcheck/tests/fprw.

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

12 years agoAdd ARM front/back end support for IR injection.
Julian Seward [Mon, 3 Sep 2012 21:48:42 +0000 (21:48 +0000)] 
Add ARM front/back end support for IR injection.

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

12 years agos390: Undo part of r2501. The "convert to fixed" opcodes always have an m3
Florian Krohm [Mon, 3 Sep 2012 17:41:22 +0000 (17:41 +0000)] 
s390: Undo part of r2501. The "convert to fixed" opcodes always have an m3
field -- independent of the floating point extension facility.
So do not issue an emulation warning for those opcodes.

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

12 years agoSupport the variety of "convert to/from fixed" and "load rounded" opcodes
Florian Krohm [Sun, 2 Sep 2012 18:07:08 +0000 (18:07 +0000)] 
Support the variety of "convert to/from fixed" and "load rounded" opcodes
that have an additional m3 and/or m4 field.
Add emulation warning EmWarn_S390X_fpext_rounding and issue it in case
the current opcode cannot be emulated correctly (i.e. with the specified
rounding mode).
New function: emulation_warning.
Part of fixing bugzilla #306098.

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

12 years agoRemove alignment checks for VMPSADBW, VPHMINPOSUW, VPALIGNR since they
Julian Seward [Sun, 2 Sep 2012 12:13:34 +0000 (12:13 +0000)] 
Remove alignment checks for VMPSADBW, VPHMINPOSUW, VPALIGNR since they
do not apply to the AVX versions of these instructions.  Fixes #305926.
(Jakub Jelinek, jakub@redhat.com)

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

12 years agos390: Mark a few more function parameters as unused.
Florian Krohm [Sat, 1 Sep 2012 20:01:39 +0000 (20:01 +0000)] 
s390: Mark a few more function parameters as unused.

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

12 years agos390: Generate an emulation failure if an insn is encountered that
Florian Krohm [Sat, 1 Sep 2012 17:54:09 +0000 (17:54 +0000)] 
s390: Generate an emulation failure if an insn is encountered that
requires the floating point extension facility but the host does not
have it. Factored out function emulation_failure.

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

12 years agos390: Add support for the "convert from/to logical" instruction family.
Florian Krohm [Sat, 1 Sep 2012 00:12:11 +0000 (00:12 +0000)] 
s390: Add support for the "convert from/to logical" instruction family.
A few (7) new IROps are introduced.
Patch by Christian Borntraeger (borntraeger@de.ibm.com).
Fixes bugzilla #274695.

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

12 years agoComment only change.
Florian Krohm [Thu, 30 Aug 2012 22:57:47 +0000 (22:57 +0000)] 
Comment only change.

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

12 years agos390: Add floating point extension facility to hwcaps.
Florian Krohm [Thu, 30 Aug 2012 20:28:00 +0000 (20:28 +0000)] 
s390: Add floating point extension facility to hwcaps.

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

12 years agoFix address computation in IR injection. When loading / storing a
Florian Krohm [Wed, 29 Aug 2012 17:40:52 +0000 (17:40 +0000)] 
Fix address computation in IR injection. When loading / storing a
128-bit value as 2 64-bit values, the two memory locations are 8 bytes
apart. Always. Everywhere. Due to a thinko this was busted on 32-bit
eachines.
Also add an assert that values requiring more than 128 bit are currently
not supported.

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

12 years agoFix IR injection for ppc32. Need to use mkSzImm not mkU64...
Florian Krohm [Wed, 29 Aug 2012 15:00:13 +0000 (15:00 +0000)] 
Fix IR injection for ppc32. Need to use mkSzImm not mkU64...

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

12 years agoMake debug printout look nicer.
Florian Krohm [Tue, 28 Aug 2012 20:58:23 +0000 (20:58 +0000)] 
Make debug printout look nicer.

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

12 years agoVEX-side support for the V-bit tester.
Florian Krohm [Tue, 28 Aug 2012 16:49:30 +0000 (16:49 +0000)] 
VEX-side support for the V-bit tester.
- recognise the new "special instruction" for all architectures
  (ARM needs implementation work; x86 and ARM are untested)
- inject IR into the superblock
- type definition for the IR injection control block

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

12 years agos390: Add the zEC12 machine model.
Florian Krohm [Tue, 28 Aug 2012 13:31:31 +0000 (13:31 +0000)] 
s390: Add the zEC12 machine model.

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

12 years agos390: Add support for the ecag insn. Patch from Divya Vyas
Florian Krohm [Sun, 26 Aug 2012 18:58:13 +0000 (18:58 +0000)] 
s390: Add support for the ecag insn. Patch from Divya Vyas
(divyvyas@linux.vnet.ibm.com) with mods to terminate the super block
with EmFail in case the insn is not available on the host.
Part of fixing bugzilla #275800.

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

12 years agoOn s390: Terminate the superblock with Ijk_EmFail if an stckf insn
Florian Krohm [Sun, 26 Aug 2012 14:32:28 +0000 (14:32 +0000)] 
On s390: Terminate the superblock with Ijk_EmFail if an stckf insn
is encountered but not supported on the host.

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

12 years agos390: Add STCKF hardware facility to hwcaps.
Florian Krohm [Sun, 26 Aug 2012 04:22:33 +0000 (04:22 +0000)] 
s390: Add STCKF hardware facility to hwcaps.

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

12 years agoOn s390: Terminate the superblock with Ijk_EmFail if an stfle insn
Florian Krohm [Sun, 26 Aug 2012 03:41:56 +0000 (03:41 +0000)] 
On s390: Terminate the superblock with Ijk_EmFail if an stfle insn
is encountered but not supported on the host.

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

12 years agoFollowup to r2483, purely mechanical. Rename:
Florian Krohm [Sun, 26 Aug 2012 03:20:07 +0000 (03:20 +0000)] 
Followup to r2483, purely mechanical. Rename:
VexEmWarn -> VexEmNote
EmWarn_NUMBER -> EmNote_NUMBER
guest_EMWARN -> guest_EMNOTE
LibVEX_EmWarn_string -> LibVEX_EmNote_string
offB_EMWARN -> offB_EMNOTE
EmWarn_NONE -> EmNote_NONE

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

12 years agoRename libvex_emwarn.h to libvex_emnote.h and fix all
Florian Krohm [Sat, 25 Aug 2012 21:48:04 +0000 (21:48 +0000)] 
Rename libvex_emwarn.h to libvex_emnote.h and fix all
#include's. The renaming of guest_EMWARN, VexemWarn etc will
be done in a followup patch.
The rationale for all this is that we want to reuse the existing
machinery for emulation warnings also for emulation failures.
And that calls for some kind of neutral naming scheme.

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

12 years agoComment only change.
Florian Krohm [Sat, 25 Aug 2012 02:01:25 +0000 (02:01 +0000)] 
Comment only change.

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

12 years agoRemove now-redundant comment that should have been removed in r2475.
Julian Seward [Fri, 24 Aug 2012 16:47:27 +0000 (16:47 +0000)] 
Remove now-redundant comment that should have been removed in r2475.

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

12 years agoImplement MOVBE in 32 bit mode. Fixes #304867. (Ambroz Bizjak,
Julian Seward [Thu, 23 Aug 2012 23:39:49 +0000 (23:39 +0000)] 
Implement MOVBE in 32 bit mode.  Fixes #304867.  (Ambroz Bizjak,
ambrop7@gmail.com)

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

12 years agoImplement QDADD and QDSUB. Fixes #305199. (Mans Rullgard,
Julian Seward [Thu, 23 Aug 2012 20:56:17 +0000 (20:56 +0000)] 
Implement QDADD and QDSUB.  Fixes #305199.  (Mans Rullgard,
mans@mansr.com)

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

12 years agoFix LZCNT and TZCNT properly. Fixes #295808. (Jakub Jelinek,
Julian Seward [Thu, 23 Aug 2012 20:14:51 +0000 (20:14 +0000)] 
Fix LZCNT and TZCNT properly.  Fixes #295808.  (Jakub Jelinek,
jakub@redhat.com)

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

12 years agoRe-enable 'prefetch m8' and 'prefetchw m8'. Fixes #305321.
Julian Seward [Thu, 23 Aug 2012 19:47:05 +0000 (19:47 +0000)] 
Re-enable 'prefetch m8' and 'prefetchw m8'.  Fixes #305321.

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

12 years agoIimplement 0F 7F encoding of movq between two registers. Fixes
Julian Seward [Thu, 23 Aug 2012 19:00:06 +0000 (19:00 +0000)] 
Iimplement 0F 7F encoding of movq between two registers.  Fixes
#305042.  (Mans Rullgard, mans@mansr.com)

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

12 years agoHandle a reg-reg encoding of MOVAPS. Fixes #289584.
Julian Seward [Thu, 23 Aug 2012 18:49:59 +0000 (18:49 +0000)] 
Handle a reg-reg encoding of MOVAPS.  Fixes #289584.
(Alexander Potapenko, glider@google.com)

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

12 years agoRemove unused IRops Iop_SqrtF64r32 and Iop_CalcFPRF.
Florian Krohm [Tue, 21 Aug 2012 22:15:19 +0000 (22:15 +0000)] 
Remove unused IRops Iop_SqrtF64r32 and Iop_CalcFPRF.

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

12 years agoHandle Iop_Left16 so And16 / Sub16 work properly with memcheck.
Florian Krohm [Mon, 20 Aug 2012 20:13:27 +0000 (20:13 +0000)] 
Handle Iop_Left16 so And16 / Sub16 work properly with memcheck.

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

12 years agoFix insn selection for Iop_Shr8/16 and Iop_Sar8/16 on s390.
Florian Krohm [Mon, 20 Aug 2012 13:44:29 +0000 (13:44 +0000)] 
Fix insn selection for Iop_Shr8/16 and Iop_Sar8/16 on s390.

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

12 years agoRemove unused IR ops: Iop_I16StoF64, Iop_F32toI16S, and Iop_I16StoF32.
Florian Krohm [Sat, 18 Aug 2012 02:41:58 +0000 (02:41 +0000)] 
Remove unused IR ops: Iop_I16StoF64, Iop_F32toI16S, and Iop_I16StoF32.

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

12 years agoFix a mnemonic
Florian Krohm [Thu, 16 Aug 2012 23:57:43 +0000 (23:57 +0000)] 
Fix a mnemonic

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

12 years agoFix a mixup. This never caused a problem because both fields have
Florian Krohm [Thu, 16 Aug 2012 00:11:20 +0000 (00:11 +0000)] 
Fix a mixup. This never caused a problem because both fields have
the same offset in the enclosing struct.

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

12 years agoVEX part Implement --vex-iropt-register-updates=sp-at-mem-access
Philippe Waroquiers [Tue, 14 Aug 2012 22:29:01 +0000 (22:29 +0000)] 
VEX part Implement --vex-iropt-register-updates=sp-at-mem-access

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

13 years agoSupport Ijk_TInval style exits on ARM, so that --smc-check= works on
Julian Seward [Wed, 8 Aug 2012 21:02:20 +0000 (21:02 +0000)] 
Support Ijk_TInval style exits on ARM, so that --smc-check= works on
ARM.  (Not that it's actually necessary, but still ..)

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

13 years agofix the put optimization. It is ok to have F-types in the CC_*
Christian Borntraeger [Wed, 8 Aug 2012 14:11:33 +0000 (14:11 +0000)] 
fix the put optimization. It is ok to have F-types in the CC_*
registers, dont assert, just use the slow path.

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