]>
git.ipfire.org Git - thirdparty/valgrind.git/log
Julian Seward [Thu, 28 Apr 2011 21:03:54 +0000 (21:03 +0000)]
Handle Iop_Not64 when doing 32-bit code generation. Also, assert that
iselWordExpr_R is not asked to handle Iop_Not64 in 32-bit mode.
Fixes #270856. (Maynard Johnson, maynardj@us.ibm.com)
git-svn-id: svn://svn.valgrind.org/vex/trunk@2136
Julian Seward [Thu, 28 Apr 2011 20:13:45 +0000 (20:13 +0000)]
s390x : misc cleanups
- Remove fixs390 regarding storing the instruction address in the
IP_AT_SYSCALL slot in the guest state. I'm not sure this is used
but it certainly makes sense.
- Remove fixs390 in function s390_irgen_XONC. This was missed in
VEX r2113.
Partial fix for #271501. (Florian Krohm, britzel@acm.org)
git-svn-id: svn://svn.valgrind.org/vex/trunk@2135
Julian Seward [Thu, 28 Apr 2011 18:48:06 +0000 (18:48 +0000)]
s390x: Implement Ist_MBE
VEX IR provides the statement Ist_MBE which is used to implement memory
barriers (Imbe_Fence). We use this statement to implement serialization which
is similar.
Fixes #271385. (Florian Krohm, britzel@acm.org)
git-svn-id: svn://svn.valgrind.org/vex/trunk@2134
Julian Seward [Thu, 28 Apr 2011 18:38:42 +0000 (18:38 +0000)]
s390x: fix code confusion
Fix an enum-type mixup found by the IBM checker.
Fixes #271259. (Florian Krohm, britzel@acm.org)
git-svn-id: svn://svn.valgrind.org/vex/trunk@2133
Julian Seward [Wed, 27 Apr 2011 12:07:01 +0000 (12:07 +0000)]
s390x: invalid use of R0 as base register
When emitting code for a shift operation with the shift amount operand being in
memory we load the shift amount into R0 and use that register in SLAG etc..
That won't work because the contents of R0 will be ignored when used as a base
reg.
So, let's choose some other register and save/restore it.
Fixes #270959. (Florian Krohm, britzel@acm.org)
git-svn-id: svn://svn.valgrind.org/vex/trunk@2132
Julian Seward [Wed, 27 Apr 2011 11:58:22 +0000 (11:58 +0000)]
s390x: fpr - gpr transfer facility
We need to introduce a new hwcap to model the presence of the fpr - gpr
transfer facility. If it is not available, we cannot use the LDGR and LGDR
insns and need to use a trick similar to what ppc does (write/read stack
location).
Fixes #268619 (vex side).
(Florian Krohm, britzel@acm.org)
git-svn-id: svn://svn.valgrind.org/vex/trunk@2131
Julian Seward [Wed, 27 Apr 2011 10:07:42 +0000 (10:07 +0000)]
Fix up incorrect usage of Iop_I64UtoF32 in the PowerPC front and back
ends. Partial fix for #270851.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2130
Julian Seward [Wed, 27 Apr 2011 07:02:44 +0000 (07:02 +0000)]
Fix up some enum confusion to do with ARMNeonUnOp and ARMNeonUnOpS, as
found by "the IBM checker", and also by clang-2.9. Fixes #271820.
(Florian Krohm, britzel@acm.org)
git-svn-id: svn://svn.valgrind.org/vex/trunk@2129
Julian Seward [Tue, 26 Apr 2011 21:36:09 +0000 (21:36 +0000)]
Fix up enum confusion between PPCAvOp and PPCAvFpOp, as found by
"the IBM checker", and also by clang-2.9. Fixes #271579.
(Florian Krohm, britzel@acm.org)
git-svn-id: svn://svn.valgrind.org/vex/trunk@2128
Julian Seward [Fri, 15 Apr 2011 11:55:00 +0000 (11:55 +0000)]
Add support for IBM Power ISA 2.06 -- stage 1. Bug #267630 and
followup fix #270794. (Maynard Johnson, maynardj@us.ibm.com)
git-svn-id: svn://svn.valgrind.org/vex/trunk@2127
Julian Seward [Wed, 13 Apr 2011 15:38:17 +0000 (15:38 +0000)]
s390x: reconsider "long displacement" requirement. We currently
require that the host supports accessing memory using long
displacement. On older machines e.g. z900 that is an expensive
operation, because it is millicoded. It would be a performance win to
relax that requirement. (VEX side changes.) See #268620.
(Florian Krohm, britzel@acm.org)
git-svn-id: svn://svn.valgrind.org/vex/trunk@2126
Julian Seward [Wed, 13 Apr 2011 15:10:16 +0000 (15:10 +0000)]
s390x: Make sure to point the PSW address to the next address on SIGILL
Fixes #270082. (Christian Borntraeger <borntraeger@de.ibm.com>)
git-svn-id: svn://svn.valgrind.org/vex/trunk@2125
Julian Seward [Wed, 13 Apr 2011 14:44:29 +0000 (14:44 +0000)]
s390x: minor code generation tweaks. There were a few loose ends
(identified by fixs390) in code generation that are fixed by the
attached patch:
- use of SLFI insn if available
- unnecessary vpanic
An out-of-date comment is also removed.
Fixes #269736. (Florian Krohm <britzel@acm.org>)
git-svn-id: svn://svn.valgrind.org/vex/trunk@2124
Julian Seward [Tue, 5 Apr 2011 14:04:53 +0000 (14:04 +0000)]
s390x: tweak s390_emit_load_cc. #269864.
(Florian Krohm, britzel@acm.org)
git-svn-id: svn://svn.valgrind.org/vex/trunk@2123
Julian Seward [Tue, 5 Apr 2011 14:00:37 +0000 (14:00 +0000)]
Remove unused parameter in functions s390_emit_SLL/SRL/SRA.
Fixes #269863. (Florian Krohm, britzel@acm.org)
git-svn-id: svn://svn.valgrind.org/vex/trunk@2122
Julian Seward [Tue, 5 Apr 2011 13:19:33 +0000 (13:19 +0000)]
Support conditional load and store for s390x (VEX side).
Fixes #269209. (Christian Borntraeger, borntraeger@de.ibm.com)
git-svn-id: svn://svn.valgrind.org/vex/trunk@2121
Julian Seward [Tue, 5 Apr 2011 11:06:02 +0000 (11:06 +0000)]
Add some extra folding rules. Fixes #268513.
(Florian Krohm <britzel@acm.org>)
git-svn-id: svn://svn.valgrind.org/vex/trunk@2120
Julian Seward [Mon, 28 Mar 2011 12:14:48 +0000 (12:14 +0000)]
Remove dead assignments that gcc-4.6.0 complains about
("[-Wunused-but-set-variable]")
git-svn-id: svn://svn.valgrind.org/vex/trunk@2119
Julian Seward [Sun, 27 Mar 2011 22:16:08 +0000 (22:16 +0000)]
Add a spec rule for NS after LOGICB. Fixes #266990.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2118
Julian Seward [Sat, 26 Mar 2011 07:28:51 +0000 (07:28 +0000)]
Don't overwrite CC_NDEP in shift by zero. Fixes #269354.
(Stephen McCamant, smcc@CS.Berkeley.EDU)
git-svn-id: svn://svn.valgrind.org/vex/trunk@2117
Julian Seward [Thu, 24 Mar 2011 11:14:02 +0000 (11:14 +0000)]
Handle more cases of SUB (SP minus immediate/register). Also
tighten up checks for SP plus register. Fixes #269078.
(Ulrich Weigand, uweigand@de.ibm.com)
git-svn-id: svn://svn.valgrind.org/vex/trunk@2116
Julian Seward [Thu, 24 Mar 2011 09:01:50 +0000 (09:01 +0000)]
s390x: MHY is not universally available. Fixes #268930.
(Florian Krohm, britzel@acm.org)
git-svn-id: svn://svn.valgrind.org/vex/trunk@2115
Julian Seward [Thu, 24 Mar 2011 08:57:29 +0000 (08:57 +0000)]
s390x: FLOGR is not universally available. Fixes #268715.
(Florian Krohm, britzel@acm.org)
git-svn-id: svn://svn.valgrind.org/vex/trunk@2114
Julian Seward [Thu, 24 Mar 2011 08:50:04 +0000 (08:50 +0000)]
s390x: improve IR generation for XC. Fixes #268621.
(Florian Krohm, britzel@acm.org)
git-svn-id: svn://svn.valgrind.org/vex/trunk@2113
Julian Seward [Tue, 22 Mar 2011 16:51:38 +0000 (16:51 +0000)]
Emit Ain_Imm64 (64-bit immediate constant loads to register) using a
short form when the immediate is < 2^20. Gives a 3% code size
reduction for Helgrind with --ignore-stack-refs=yes.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2112
Julian Seward [Tue, 15 Mar 2011 12:41:30 +0000 (12:41 +0000)]
Add missing VG_REGPARM definition for ppc32-linux following r2108.
Also add spacing to make this a bit more readable.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2111
Julian Seward [Tue, 15 Mar 2011 12:36:44 +0000 (12:36 +0000)]
Fix some signed-vs-unsigned char warnings in s390 code. (Christian
Borntraeger <borntraeger@de.ibm.com>)
git-svn-id: svn://svn.valgrind.org/vex/trunk@2110
Julian Seward [Tue, 15 Mar 2011 08:05:12 +0000 (08:05 +0000)]
Don't apply function attributes to a functional parameter when
being compiled by g++ 3.x, as that can't them. Fixes #265762.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2109
Julian Seward [Mon, 14 Mar 2011 12:35:18 +0000 (12:35 +0000)]
Wrap up "__attribute__((regparm(n)))" inside a macro so it is only
visible on x86, so as to avoid producing compiler warnings on targets
for which it is ignored. Fixes #247223. (Modified version of patch
from Bart Van Assche).
git-svn-id: svn://svn.valgrind.org/vex/trunk@2108
Julian Seward [Mon, 14 Mar 2011 11:27:26 +0000 (11:27 +0000)]
Fix standalone vex builds following s390x merge.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2107
Julian Seward [Mon, 7 Mar 2011 18:34:34 +0000 (18:34 +0000)]
Add folding rules for Clz32 and Clz64. See bug 243404 comment 52.
(Florian Krohn, britzel@acm.org).
git-svn-id: svn://svn.valgrind.org/vex/trunk@2106
Julian Seward [Mon, 7 Mar 2011 16:04:07 +0000 (16:04 +0000)]
Add a port to IBM z/Architecture (s390x) running Linux -- VEX
side components. (Florian Krohm <britzel@acm.org> and Christian
Borntraeger <borntraeger@de.ibm.com>). Fixes #243404.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2105
Julian Seward [Thu, 10 Feb 2011 12:20:02 +0000 (12:20 +0000)]
Handle Ico_V128(0xFFFF), created by more aggressive constant folding
in ir_opt.c. Fixes #262985 (a regression from 3.5.0).
(Maynard Johnson, maynardj@us.ibm.com)
git-svn-id: svn://svn.valgrind.org/vex/trunk@2088
Julian Seward [Wed, 9 Feb 2011 14:21:45 +0000 (14:21 +0000)]
Handle moves from TPIDRURO to integer registers in Thumb mode.
Fixes #263877. (Jani Monoses, jani@ubuntu.com)
git-svn-id: svn://svn.valgrind.org/vex/trunk@2087
Julian Seward [Wed, 2 Feb 2011 13:35:01 +0000 (13:35 +0000)]
Get rid of unintended complex integral constant, that causes build
failure with icc-12.x and dodgyness (works-by-accident) with gcc.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2086
Julian Seward [Fri, 21 Jan 2011 20:56:16 +0000 (20:56 +0000)]
Implement LOOPNEL (32-bit version of LOOPNE). Fixes #256669.
(Jakub Jelinek <jakub@redhat.com>)
git-svn-id: svn://svn.valgrind.org/vex/trunk@2085
Julian Seward [Fri, 21 Jan 2011 18:05:19 +0000 (18:05 +0000)]
Implement rex.W/FXSAVE and also both variants of FXRSTOR.
Ick. I knew there was a reason I'd been putting this off.
Fixes #194402.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2084
Julian Seward [Fri, 21 Jan 2011 18:02:54 +0000 (18:02 +0000)]
Add alignment checking for FXSAVE/FXRSTOR.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2083
Julian Seward [Fri, 21 Jan 2011 17:51:44 +0000 (17:51 +0000)]
Add support for SSE4.2 CRC32{B,W,L,Q}. Fixes #261966.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2082
Julian Seward [Wed, 19 Jan 2011 12:21:51 +0000 (12:21 +0000)]
Accept redundant REX.W for EXTRACTPS. See #258870 comment 5.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2081
Julian Seward [Mon, 17 Jan 2011 23:06:16 +0000 (23:06 +0000)]
Handle PCMPxSTRx $0x00. Fixes #262995.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2080
Julian Seward [Mon, 17 Jan 2011 13:11:37 +0000 (13:11 +0000)]
Tolerate redundant REX.W in POPQ m64. (#256669).
git-svn-id: svn://svn.valgrind.org/vex/trunk@2079
Julian Seward [Mon, 17 Jan 2011 12:32:25 +0000 (12:32 +0000)]
Add support for AAD and AAM (base 10 only). Fixes #256387.
(Vince Weaver, vince@csl.cornell.edu)
git-svn-id: svn://svn.valgrind.org/vex/trunk@2078
Julian Seward [Mon, 17 Jan 2011 11:58:47 +0000 (11:58 +0000)]
Print 8 insn bytes when failing, not 6.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2077
Julian Seward [Mon, 17 Jan 2011 10:32:18 +0000 (10:32 +0000)]
Implement SSE4.x EXTRACTPS. Fixes #258870.
Implement SSE4.x BLENDVPD, BLENDVPS, PBLENDVB. Fixes #256968 + dup #263376.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2076
Julian Seward [Tue, 11 Jan 2011 19:55:39 +0000 (19:55 +0000)]
Implement SSE4.1 PBLENDW. Fixes #257011 (comment 1, at least).
git-svn-id: svn://svn.valgrind.org/vex/trunk@2075
Julian Seward [Tue, 11 Jan 2011 18:22:53 +0000 (18:22 +0000)]
Handle non-immediate-rounding-mode versions of ROUND{P,S}{S,D}.
Fixes #255418.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2074
Julian Seward [Mon, 10 Jan 2011 17:44:30 +0000 (17:44 +0000)]
Fix bug in ppc64g_dirtyhelper_LVS (well, elsewhere, really) causing
incorrect Altivec lvsl/lvsr handling on ppc64. (bug 250038)
git-svn-id: svn://svn.valgrind.org/vex/trunk@2073
Julian Seward [Mon, 10 Jan 2011 15:16:38 +0000 (15:16 +0000)]
Implement ROUNDPD and ROUNDPS (imm rounding mode only).
Fixes #257063 (roundps) and #255963 (roundpd).
git-svn-id: svn://svn.valgrind.org/vex/trunk@2072
Julian Seward [Mon, 10 Jan 2011 15:10:48 +0000 (15:10 +0000)]
Save an instruction on the normal idiom generated for smc-checks.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2071
Julian Seward [Mon, 10 Jan 2011 15:08:41 +0000 (15:08 +0000)]
Improve performance of smc-checks substantially, by:
(1) allowing translations to chase across BB boundaries, as in the
non-smc-check case
(2) on 64-bit targets, do the checksumming with 64-bit loads
instead of 32-bit ones.
(vex-side change)
git-svn-id: svn://svn.valgrind.org/vex/trunk@2070
Julian Seward [Mon, 18 Oct 2010 16:29:40 +0000 (16:29 +0000)]
Add support for SMSAD{X}, SMLSD{X}, USAD{A}8.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2067
Julian Seward [Tue, 12 Oct 2010 10:10:46 +0000 (10:10 +0000)]
Update copyright notices.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2065
Julian Seward [Mon, 11 Oct 2010 18:57:10 +0000 (18:57 +0000)]
Handle NOP.W (Thumb) and NOP (ARM). Partial fix for #253636.
Add a comment re conditionalisation of Thumb memory barrier insns.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2064
Julian Seward [Mon, 11 Oct 2010 18:03:13 +0000 (18:03 +0000)]
Fix bogus register constraints for ARM mode LDREX and STREX.
Derived from a patch by Rodrigo Belem <rodrigo.belem@openbossa.org>
Partially fixes #253636.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2063
Julian Seward [Wed, 6 Oct 2010 20:47:22 +0000 (20:47 +0000)]
NEON front end: fix bugs in VMIN, VZIP, VRSHL.
(Dmitry Zhurikhin, zhur@ispras.ru), no bug number.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2062
Julian Seward [Wed, 6 Oct 2010 20:34:53 +0000 (20:34 +0000)]
Fix some enum type confusion in host_arm_defs.[ch].
(Dmitry Zhurikhin, zhur@ispras.ru), no bug number.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2061
Julian Seward [Tue, 5 Oct 2010 22:29:49 +0000 (22:29 +0000)]
Thumb instructions: instead of generating tons of lardy boilerplate IR
to compute the guarding condition for instructions, and then leaning
heavily on ir_opt to almost always fold it out, avoid generating it in
the first place if it's not necessary, as per the ITxxx optimisation
analysis. This reduces startup time of Thumb applications by 0%-30%
by reducing the amount of time the JIT has to spend translating. No
effect on ARM instructions since those don't require a complex IR
preamble to establish the gating condition.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2060
Julian Seward [Mon, 4 Oct 2010 09:34:46 +0000 (09:34 +0000)]
Give all the ARM code generation enums non-overlapping value ranges, so
as to get better diagnostic information about type errors from gcc-4.5.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2059
Julian Seward [Fri, 1 Oct 2010 14:06:22 +0000 (14:06 +0000)]
Improve constant folding of expressions of the form 'op(t,t)'
where t is an IRTemp. This superficially fixes #213865, although
it doesn't actually fix all the Intel-prescribed dependency-breaking
cases tterrib listed there. The newly-handled cases here are:
OrV128(t,t) ==> t
Sub64(t,t) ==> 0
CmpEQ64(t,t), CmpEQ8x8(t,t), CmpEQ8x16(t,t) ==> all-1s
git-svn-id: svn://svn.valgrind.org/vex/trunk@2058
Julian Seward [Thu, 30 Sep 2010 14:51:51 +0000 (14:51 +0000)]
Add alignment checks to MOVDQA and a bunch of other SSE insns which
require them but for which they were missing. Fixes #153699.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2057
Julian Seward [Thu, 30 Sep 2010 13:37:31 +0000 (13:37 +0000)]
Handle the undocumented but apparently-actually-used instruction
MOVSWW [tentative fix]. Fixes #250799.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2056
Julian Seward [Thu, 30 Sep 2010 10:51:56 +0000 (10:51 +0000)]
amd64 CPUID: don't claim that the guest supports AES insns,
since it doesn't. Fixes #249991.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2055
Julian Seward [Wed, 29 Sep 2010 21:39:48 +0000 (21:39 +0000)]
Comment-only change.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2054
Julian Seward [Wed, 29 Sep 2010 21:39:12 +0000 (21:39 +0000)]
Increase the size of the JIT's scratch working area from 4MB to 5MB.
This is needed to handle long blocks of NEON code with Memcheck
--track-origins=yes.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2053
Julian Seward [Wed, 29 Sep 2010 21:36:56 +0000 (21:36 +0000)]
On ARM, request precise exceptions for R7. This is needed to
get sane stack traces in Thumb code.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2052
Julian Seward [Tue, 28 Sep 2010 19:56:32 +0000 (19:56 +0000)]
Support PCLMULDQ (Emmanuel Thomé, Emmanuel.Thome@gmail.com).
Fixes #251251.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2051
Julian Seward [Tue, 28 Sep 2010 15:59:04 +0000 (15:59 +0000)]
Track (but ignore) the state of %RFLAGS.ACFLAG, since that is
necessary for proper CPUID checking. (pepp, pelloux+kde@gmail.com)
Fixes #249943.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2050
Julian Seward [Tue, 28 Sep 2010 15:20:47 +0000 (15:20 +0000)]
Handle Ity_I128 in sizeofIRType. (Florian Krohm, britzel@acm.org).
Fixes #247875.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2049
Julian Seward [Tue, 28 Sep 2010 14:57:03 +0000 (14:57 +0000)]
Support CMPXCHG reg, reg on amd64. (Vince Weaver, vince@csl.cornell.edu).
Fixes #246311.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2048
Julian Seward [Tue, 28 Sep 2010 14:38:39 +0000 (14:38 +0000)]
Handle ADC Iv, eAX and SBB Iv, eAX (Jakub Jelinek, jakub@redhat.com)
Fixes #211410.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2047
Julian Seward [Sun, 26 Sep 2010 00:48:41 +0000 (00:48 +0000)]
Support REV and REV16 in Thumb mode, both short and long encodings.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2046
Julian Seward [Sat, 25 Sep 2010 22:06:12 +0000 (22:06 +0000)]
Implement (Thumb) ORN (immediate) and ORN (register). Fixes #252326.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2045
Julian Seward [Fri, 24 Sep 2010 23:48:29 +0000 (23:48 +0000)]
Implement v7 barrier insns (DMB, DSB, ISB) in Thumb mode
(Peter Maydell, peter.maydell@linaro.org). Fixes #252253.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2044
Julian Seward [Fri, 24 Sep 2010 23:35:59 +0000 (23:35 +0000)]
Implement LDREX and STREX in Thumb mode. Fixes #252258.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2043
Julian Seward [Fri, 24 Sep 2010 21:59:55 +0000 (21:59 +0000)]
Implement RBIT in ARM mode.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2042
Julian Seward [Thu, 23 Sep 2010 11:01:15 +0000 (11:01 +0000)]
LibVEX_GuestARM_get_cpsr: set CPSR.Q, .GE, .T and .M
in the resulting value. Fixes #251362.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2041
Julian Seward [Wed, 22 Sep 2010 22:26:40 +0000 (22:26 +0000)]
Implement (ARM): REV, REV16, SMMUL.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2040
Julian Seward [Wed, 22 Sep 2010 16:27:08 +0000 (16:27 +0000)]
Fix incorrect handling of VTRN.32 insn. (Dmitry Zhurikhin, zhur@ispras.ru)
git-svn-id: svn://svn.valgrind.org/vex/trunk@2039
Julian Seward [Wed, 22 Sep 2010 16:15:50 +0000 (16:15 +0000)]
Accept d16-d31 register arguments in VFP code. Fixes #244493.
(Dmitry Zhurikhin, zhur@ispras.ru)
git-svn-id: svn://svn.valgrind.org/vex/trunk@2038
Julian Seward [Wed, 22 Sep 2010 00:56:37 +0000 (00:56 +0000)]
Add some 32-bit SIMD integer primops, and use these to shorten up the
implementation of some ARM media v6 instructions.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2037
Julian Seward [Tue, 21 Sep 2010 00:24:11 +0000 (00:24 +0000)]
Implement UHADD8.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2036
Julian Seward [Mon, 20 Sep 2010 23:58:57 +0000 (23:58 +0000)]
Implement SSUB8.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2035
Julian Seward [Mon, 20 Sep 2010 23:34:43 +0000 (23:34 +0000)]
In ARM mode: enable LDRD/STRD of the form "reg, [reg], reg"
git-svn-id: svn://svn.valgrind.org/vex/trunk@2034
Julian Seward [Mon, 20 Sep 2010 22:35:35 +0000 (22:35 +0000)]
Implement SADD16, SSUB16, SASX, SMLAWB, SMLAWT.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2033
Julian Seward [Thu, 9 Sep 2010 07:27:24 +0000 (07:27 +0000)]
If the host does not support Neon, then don't accept Neon instructions
on the guest-side. Related to #249775.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2032
Julian Seward [Thu, 9 Sep 2010 07:14:31 +0000 (07:14 +0000)]
Handle 16Uto64, which can now show up at the back end as a
result of more iropt folding introduced in r2030.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2031
Julian Seward [Wed, 8 Sep 2010 08:34:52 +0000 (08:34 +0000)]
Minor amd64 instruction selection improvements, leading to a
1% generated code size reduction for perf/bz2.c running on
Memcheck:
- reduce the amount of pointless cast-of-a-cast code by
rewriting it out at tree-creation time in ir_opt.c
- generate movslq for 32Sto64
- generate movzbq for 8Uto64(LD(...)), ditto movzwq for 16-bit loads
git-svn-id: svn://svn.valgrind.org/vex/trunk@2030
Julian Seward [Fri, 3 Sep 2010 23:37:02 +0000 (23:37 +0000)]
Support new PowerISA_2.05 instructions available on Power6 CPUs.
(Maynard Johnson, maynardj@us.ibm.com)
git-svn-id: svn://svn.valgrind.org/vex/trunk@2029
Julian Seward [Fri, 3 Sep 2010 15:49:57 +0000 (15:49 +0000)]
Support the DCBZL instruction. Also, query the host CPU at startup
time to find out how much space DCBZL really clears, and make the
guest CPU act accordingly. (VEX-side changes)
(Dave Goodell, goodell@mcs.anl.gov)
git-svn-id: svn://svn.valgrind.org/vex/trunk@2028
Julian Seward [Thu, 2 Sep 2010 21:14:10 +0000 (21:14 +0000)]
Enable BX PC in Thumb mode. Partial fix for #249775.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2027
Julian Seward [Thu, 2 Sep 2010 21:02:47 +0000 (21:02 +0000)]
Handle RBIT (bit-reverse) in Thumb mode. Partial fix for #249924.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2026
Julian Seward [Wed, 1 Sep 2010 10:25:51 +0000 (10:25 +0000)]
Avoid genSpill/genReload asserts for VFP spills/reloads with offsets
greater than 1024 from the baseblock pointer.
Also, update comments on the use of r12.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2025
Julian Seward [Tue, 31 Aug 2010 09:32:40 +0000 (09:32 +0000)]
Reduce to 5 the number of available Q (128-bit) registers available
to the allocator, in an attempt to make register allocation a bit
faster on ARM.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2024
Julian Seward [Tue, 31 Aug 2010 09:31:06 +0000 (09:31 +0000)]
Support the PLI instruction (icache preload hint) in ARM mode, so
as to make self-hosting on ARM work.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2023
Julian Seward [Tue, 31 Aug 2010 09:29:51 +0000 (09:29 +0000)]
Fix debug printing for Neon VLDn/VSTn instructions.
(Kirill Batuzov <batuzovk@ispras.ru)
git-svn-id: svn://svn.valgrind.org/vex/trunk@2022
Julian Seward [Tue, 31 Aug 2010 09:18:22 +0000 (09:18 +0000)]
Fix generation of writeback values in Neon VLDn/VSTn instructions.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2021
Julian Seward [Sun, 29 Aug 2010 12:33:02 +0000 (12:33 +0000)]
Add support for v6 media instructions in both ARM and Thumb modes.
(Donna Robinson, donna@valgrind.org)
git-svn-id: svn://svn.valgrind.org/vex/trunk@2020
Julian Seward [Sun, 22 Aug 2010 22:21:19 +0000 (22:21 +0000)]
Handle "Special" instructions in Thumb mode: "R3 = guest_NRADDR" and
"branch-and-link-to-noredir R4". This makes function wrapping work in
Thumb mode.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2019
Julian Seward [Sun, 22 Aug 2010 18:47:30 +0000 (18:47 +0000)]
Fix some compiler complaints when building on 64-bit platforms.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2018