]> git.ipfire.org Git - thirdparty/valgrind.git/log
thirdparty/valgrind.git
14 years agoMerge from trunk, r2087 (Handle moves from TPIDRURO to integer
Julian Seward [Mon, 14 Feb 2011 13:56:17 +0000 (13:56 +0000)] 
Merge from trunk, r2087 (Handle moves from TPIDRURO to integer
registers in Thumb mode.)

git-svn-id: svn://svn.valgrind.org/vex/branches/VEX_3_6_BRANCH@2101

14 years agoMerge from trunk, r2086 (Get rid of unintended complex integral constant)
Julian Seward [Mon, 14 Feb 2011 13:53:18 +0000 (13:53 +0000)] 
Merge from trunk, r2086 (Get rid of unintended complex integral constant)

git-svn-id: svn://svn.valgrind.org/vex/branches/VEX_3_6_BRANCH@2100

14 years agoMerge from trunk, r2085 (Implement LOOPNEL (32-bit version of LOOPNE).)
Julian Seward [Mon, 14 Feb 2011 13:50:19 +0000 (13:50 +0000)] 
Merge from trunk, r2085 (Implement LOOPNEL (32-bit version of LOOPNE).)

git-svn-id: svn://svn.valgrind.org/vex/branches/VEX_3_6_BRANCH@2099

14 years agoMerge from trunk, r2084 (Implement rex.W/FXSAVE and also both variants
Julian Seward [Mon, 14 Feb 2011 13:48:03 +0000 (13:48 +0000)] 
Merge from trunk, r2084 (Implement rex.W/FXSAVE and also both variants
of FXRSTOR.)

git-svn-id: svn://svn.valgrind.org/vex/branches/VEX_3_6_BRANCH@2098

14 years agoMerge from trunk, r2082 (Add support for SSE4.2 CRC32{B,W,L,Q}.)
Julian Seward [Mon, 14 Feb 2011 13:44:28 +0000 (13:44 +0000)] 
Merge from trunk, r2082 (Add support for SSE4.2 CRC32{B,W,L,Q}.)

git-svn-id: svn://svn.valgrind.org/vex/branches/VEX_3_6_BRANCH@2097

14 years agoMerge from trunk, r2080 (Handle PCMPxSTRx $0x00.)
Julian Seward [Mon, 14 Feb 2011 13:39:47 +0000 (13:39 +0000)] 
Merge from trunk, r2080 (Handle PCMPxSTRx $0x00.)

git-svn-id: svn://svn.valgrind.org/vex/branches/VEX_3_6_BRANCH@2096

14 years agoMerge from trunk, r2079 (Tolerate redundant REX.W in POPQ m64.)
Julian Seward [Mon, 14 Feb 2011 13:37:03 +0000 (13:37 +0000)] 
Merge from trunk, r2079 (Tolerate redundant REX.W in POPQ m64.)

git-svn-id: svn://svn.valgrind.org/vex/branches/VEX_3_6_BRANCH@2095

14 years agoMerge from trunk, r2078 (Add support for AAD and AAM (base 10 only).)
Julian Seward [Mon, 14 Feb 2011 13:33:36 +0000 (13:33 +0000)] 
Merge from trunk, r2078 (Add support for AAD and AAM (base 10 only).)

git-svn-id: svn://svn.valgrind.org/vex/branches/VEX_3_6_BRANCH@2094

14 years agoMerge from trunk, r2076 (Implement SSE4.x EXTRACTPS, BLENDVPD,
Julian Seward [Mon, 14 Feb 2011 13:30:26 +0000 (13:30 +0000)] 
Merge from trunk, r2076 (Implement SSE4.x EXTRACTPS, BLENDVPD,
BLENDVPS, PBLENDVB.)

git-svn-id: svn://svn.valgrind.org/vex/branches/VEX_3_6_BRANCH@2093

14 years agoMerge from trunk, r2075 (Implement SSE4.1 PBLENDW.)
Julian Seward [Mon, 14 Feb 2011 13:26:56 +0000 (13:26 +0000)] 
Merge from trunk, r2075 (Implement SSE4.1 PBLENDW.)

git-svn-id: svn://svn.valgrind.org/vex/branches/VEX_3_6_BRANCH@2092

14 years agoMerge from trunk, r2074 (Handle non-immediate-rounding-mode versions
Julian Seward [Mon, 14 Feb 2011 13:23:21 +0000 (13:23 +0000)] 
Merge from trunk, r2074 (Handle non-immediate-rounding-mode versions
of ROUND{P,S}{S,D}.)

git-svn-id: svn://svn.valgrind.org/vex/branches/VEX_3_6_BRANCH@2091

14 years agoMerge from trunk, r2072 (Implement ROUNDPD and ROUNDPS (imm rounding
Julian Seward [Mon, 14 Feb 2011 13:19:51 +0000 (13:19 +0000)] 
Merge from trunk, r2072 (Implement ROUNDPD and ROUNDPS (imm rounding
mode only).)

git-svn-id: svn://svn.valgrind.org/vex/branches/VEX_3_6_BRANCH@2090

14 years agoMerge from trunk, r2073 (Fix bug in ppc64g_dirtyhelper_LVS)
Julian Seward [Mon, 14 Feb 2011 13:10:35 +0000 (13:10 +0000)] 
Merge from trunk, r2073 (Fix bug in ppc64g_dirtyhelper_LVS)

git-svn-id: svn://svn.valgrind.org/vex/branches/VEX_3_6_BRANCH@2089

14 years agoMerge from trunk, r2067 (Add support for SMSAD{X}, SMLSD{X}, USAD{A}8.)
Julian Seward [Wed, 20 Oct 2010 21:38:42 +0000 (21:38 +0000)] 
Merge from trunk, r2067 (Add support for SMSAD{X}, SMLSD{X}, USAD{A}8.)

git-svn-id: svn://svn.valgrind.org/vex/branches/VEX_3_6_BRANCH@2068

14 years agoCreate VEX_3_6_BRANCH as a copy of trunk r2065.
Julian Seward [Fri, 15 Oct 2010 08:48:02 +0000 (08:48 +0000)] 
Create VEX_3_6_BRANCH as a copy of trunk r2065.

git-svn-id: svn://svn.valgrind.org/vex/branches/VEX_3_6_BRANCH@2066

14 years agoUpdate copyright notices.
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

14 years agoHandle NOP.W (Thumb) and NOP (ARM). Partial fix for #253636.
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

14 years agoFix bogus register constraints for ARM mode LDREX and STREX.
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

14 years agoNEON front end: fix bugs in VMIN, VZIP, VRSHL.
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

14 years agoFix some enum type confusion in host_arm_defs.[ch].
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

14 years agoThumb instructions: instead of generating tons of lardy boilerplate IR
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

14 years agoGive all the ARM code generation enums non-overlapping value ranges, so
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

14 years agoImprove constant folding of expressions of the form 'op(t,t)'
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

14 years agoAdd alignment checks to MOVDQA and a bunch of other SSE insns which
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

14 years agoHandle the undocumented but apparently-actually-used instruction
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

14 years agoamd64 CPUID: don't claim that the guest supports AES insns,
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

14 years agoComment-only change.
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

14 years agoIncrease the size of the JIT's scratch working area from 4MB to 5MB.
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

14 years agoOn ARM, request precise exceptions for R7. This is needed to
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

14 years agoSupport PCLMULDQ (Emmanuel Thomé, Emmanuel.Thome@gmail.com).
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

14 years agoTrack (but ignore) the state of %RFLAGS.ACFLAG, since that is
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

14 years agoHandle Ity_I128 in sizeofIRType. (Florian Krohm, britzel@acm.org).
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

14 years agoSupport CMPXCHG reg, reg on amd64. (Vince Weaver, vince@csl.cornell.edu).
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

14 years agoHandle ADC Iv, eAX and SBB Iv, eAX (Jakub Jelinek, jakub@redhat.com)
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

14 years agoSupport REV and REV16 in Thumb mode, both short and long encodings.
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

14 years agoImplement (Thumb) ORN (immediate) and ORN (register). Fixes #252326.
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

14 years agoImplement v7 barrier insns (DMB, DSB, ISB) in Thumb mode
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

14 years agoImplement LDREX and STREX in Thumb mode. Fixes #252258.
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

14 years agoImplement RBIT in ARM mode.
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

14 years agoLibVEX_GuestARM_get_cpsr: set CPSR.Q, .GE, .T and .M
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

14 years agoImplement (ARM): REV, REV16, SMMUL.
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

14 years agoFix incorrect handling of VTRN.32 insn. (Dmitry Zhurikhin, zhur@ispras.ru)
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

14 years agoAccept d16-d31 register arguments in VFP code. Fixes #244493.
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

14 years agoAdd some 32-bit SIMD integer primops, and use these to shorten up the
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

14 years agoImplement UHADD8.
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

14 years agoImplement SSUB8.
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

14 years agoIn ARM mode: enable LDRD/STRD of the form "reg, [reg], reg"
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

14 years agoImplement SADD16, SSUB16, SASX, SMLAWB, SMLAWT.
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

14 years agoIf the host does not support Neon, then don't accept Neon instructions
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

14 years agoHandle 16Uto64, which can now show up at the back end as a
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

14 years agoMinor amd64 instruction selection improvements, leading to a
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

14 years agoSupport new PowerISA_2.05 instructions available on Power6 CPUs.
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

14 years agoSupport the DCBZL instruction. Also, query the host CPU at startup
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

14 years agoEnable BX PC in Thumb mode. Partial fix for #249775.
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

14 years agoHandle RBIT (bit-reverse) in Thumb mode. Partial fix for #249924.
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

14 years agoAvoid genSpill/genReload asserts for VFP spills/reloads with offsets
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

14 years agoReduce to 5 the number of available Q (128-bit) registers available
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

14 years agoSupport the PLI instruction (icache preload hint) in ARM mode, so
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

14 years agoFix debug printing for Neon VLDn/VSTn instructions.
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

14 years agoFix generation of writeback values in Neon VLDn/VSTn instructions.
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

14 years agoAdd support for v6 media instructions in both ARM and Thumb modes.
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

14 years agoHandle "Special" instructions in Thumb mode: "R3 = guest_NRADDR" and
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

14 years agoFix some compiler complaints when building on 64-bit platforms.
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

14 years agoFix various compiler warnings and remove an unused function.
Julian Seward [Sun, 22 Aug 2010 18:24:51 +0000 (18:24 +0000)] 
Fix various compiler warnings and remove an unused function.

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

14 years agoMerge from branches/THUMB: new IR primops and associated
Julian Seward [Sun, 22 Aug 2010 12:59:02 +0000 (12:59 +0000)] 
Merge from branches/THUMB: new IR primops and associated
infrastructure, needed to represent NEON instructions.  Way more new
ones than I would like, but I can't see a way to avoid having them.

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

14 years agoMerge from branches/THUMB: hwcaps for ARM. May get simplified since
Julian Seward [Sun, 22 Aug 2010 12:54:56 +0000 (12:54 +0000)] 
Merge from branches/THUMB: hwcaps for ARM.  May get simplified since
in fact ARM v5 and v6 are not supported targets -- ARMv7 remains the
minimum supported target.

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

14 years agoMerge from branches/THUMB: back end changes to support NEON code generation.
Julian Seward [Sun, 22 Aug 2010 12:48:28 +0000 (12:48 +0000)] 
Merge from branches/THUMB: back end changes to support NEON code generation.

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

14 years agoMerge from branches/THUMB: front end changes to support:
Julian Seward [Sun, 22 Aug 2010 12:44:20 +0000 (12:44 +0000)] 
Merge from branches/THUMB: front end changes to support:
* Thumb integer instructions
* NEON in both ARM and Thumb mode
* VFP in both ARM and Thumb mode
* infrastructure to support APSR.Q flag representation

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

14 years agoMerge from branches/THUMB: A spechelper interface change that allows
Julian Seward [Sun, 22 Aug 2010 12:38:53 +0000 (12:38 +0000)] 
Merge from branches/THUMB: A spechelper interface change that allows
the helper to look back at the previous IR statements.  May be backed
out if it turns out no longer to be needed for optimising Thumb
translations.

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

14 years agoEnable SSE 4.1 and 4.2 by default on x86_64. (x86 remains stuck
Julian Seward [Thu, 19 Aug 2010 13:25:10 +0000 (13:25 +0000)] 
Enable SSE 4.1 and 4.2 by default on x86_64.  (x86 remains stuck
at SSE3, at least for the time being.)

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

14 years agoAdd a moderately comprehensive implementation of the SSE4.2 string
Julian Seward [Tue, 17 Aug 2010 22:52:08 +0000 (22:52 +0000)] 
Add a moderately comprehensive implementation of the SSE4.2 string
instructions PCMP{I,E}STR{I,M}.  They are an absolute nightmare of
complexity.  Most of the 8-bit data processing variants are supported,
but none of the 16-bit variants.

Also add support for PINSRB and PTEST.

With these changes, I believe Valgrind supports all the SSE4.2
instructions used in glibc-2.11 on x86_64-linux, as well as anything
that gcc can emit.  So that gives fairly good coverage.

Currently these instructions are handled, but CPUID still claims to be
an older, non-SSE4 capable Core 2, so that software that correctly
checks CPU features should not use them.  Following further testing I
will enable the relevant SSE4.2 bits in CPUID.

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

15 years agoAdd partial support for the SSE 4.2 PCMPISTRI instruction, at least
Julian Seward [Fri, 6 Aug 2010 07:59:38 +0000 (07:59 +0000)] 
Add partial support for the SSE 4.2 PCMPISTRI instruction, at least
for (some of) the sub-cases that glibc uses (64-bit mode only).  Also,
prepare for transitioning CPUID in 64-bit mode to indicate SSE4.2
support (not yet enabled).

Be warned, this commit will require a from-clean rebuild of Valgrind.

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

15 years agoUpdate for Core iX.
Julian Seward [Fri, 6 Aug 2010 07:55:29 +0000 (07:55 +0000)] 
Update for Core iX.

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

15 years agoDon't trash the ELF ABI redzone for amd64 when emulating BT{,S,R,C}
Julian Seward [Thu, 29 Jul 2010 18:10:51 +0000 (18:10 +0000)] 
Don't trash the ELF ABI redzone for amd64 when emulating BT{,S,R,C}
reg,reg.  Fixes (well, at least, makes an appalling kludge a bit less
appalling) #245925.

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

15 years agoAdd a folding rule for 32Sto64.
Julian Seward [Thu, 29 Jul 2010 16:12:41 +0000 (16:12 +0000)] 
Add a folding rule for 32Sto64.

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

15 years agoOnly decode LZCNT if the host supports it, since otherwise we risk
Julian Seward [Thu, 29 Jul 2010 15:39:05 +0000 (15:39 +0000)] 
Only decode LZCNT if the host supports it, since otherwise we risk
confusing it with BSR.  Followup to #212335.

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

15 years agoSupport the amd SSE4.something LZCNT instruction. Fixes #212335
Julian Seward [Thu, 29 Jul 2010 11:34:38 +0000 (11:34 +0000)] 
Support the amd SSE4.something LZCNT instruction.  Fixes #212335
and its various clones, at least #227551, #241290 and #240639.

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

15 years agoHandle mov[ua[pd G(xmm) -> E(xmm) case, which is something binutils
Julian Seward [Thu, 29 Jul 2010 07:19:30 +0000 (07:19 +0000)] 
Handle mov[ua[pd G(xmm) -> E(xmm) case, which is something binutils
doesn't produce, presumably because it uses the E->G encoding for xmm
reg-reg moves.  Fixes #238713.  (Pierre Willenbrock,
pierre@pirsoft.de).

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

15 years agox86/amd64 FXTRACT: mimic the Core i5 behaviour when the argument is a
Julian Seward [Thu, 29 Jul 2010 07:01:29 +0000 (07:01 +0000)] 
x86/amd64 FXTRACT: mimic the Core i5 behaviour when the argument is a
negative NaN.

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

15 years agoIgnore a redundant REX.W prefix on an MMX pinsrw instruction
Julian Seward [Thu, 29 Jul 2010 05:13:58 +0000 (05:13 +0000)] 
Ignore a redundant REX.W prefix on an MMX pinsrw instruction
(Dan Gohman, dgohman@gmail.com).  Fixes #239992.

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

15 years agoAdd a program for printing out cpuid info.
Julian Seward [Wed, 28 Jul 2010 19:26:59 +0000 (19:26 +0000)] 
Add a program for printing out cpuid info.

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

15 years agoSupport the SSE4 insn 'roundss' in 32-bit mode. Lack of this was
Julian Seward [Fri, 23 Jul 2010 21:23:25 +0000 (21:23 +0000)] 
Support the SSE4 insn 'roundss' in 32-bit mode.  Lack of this was
causing problems for people running 32-bit apps on MacOSX 10.6 on
newer hardware.  Fixes #241377.

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

15 years agoImplement ROUNDSS (partial implementation, in the case where
Julian Seward [Sun, 27 Jun 2010 09:06:34 +0000 (09:06 +0000)] 
Implement ROUNDSS (partial implementation, in the case where
the rounding mode is specified within the instruction itself).

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

15 years agoImplement ROUNDSD (partial implementation, in the case where
Julian Seward [Fri, 25 Jun 2010 10:25:54 +0000 (10:25 +0000)] 
Implement ROUNDSD (partial implementation, in the case where
the rounding mode is specified within the instruction itself).
Fixes #197266.

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

15 years agoImplement SSE4 instructions: PCMPGTQ PMAXUD PMINUD PMAXSB PMINSB PMULLD
Julian Seward [Fri, 18 Jun 2010 08:17:41 +0000 (08:17 +0000)] 
Implement SSE4 instructions: PCMPGTQ PMAXUD PMINUD PMAXSB PMINSB PMULLD
I believe this covers everything that gcc-4.4 and gcc-4.5 will generate
with "-O3 -msse4.2".  Note, this commit changes the set of IR ops and so
requires a from-scratch rebuild of the tree.

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

15 years agoImplement more SSE4 instructions:
Julian Seward [Mon, 14 Jun 2010 21:29:35 +0000 (21:29 +0000)] 
Implement more SSE4 instructions:
PINSRD PMINUD POPCNTW POPCNTL POPCNTQ

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

15 years agoImplement SIDT and SGDT as pass-throughs to the host. It's a pretty
Julian Seward [Mon, 7 Jun 2010 16:22:22 +0000 (16:22 +0000)] 
Implement SIDT and SGDT as pass-throughs to the host.  It's a pretty
bad thing to do, but I can't think of a way to virtualise these
properly.  Patch from Alexander Potapenko.  See
https://bugs.kde.org/show_bug.cgi?id=205241#c38

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

15 years agoImplement XADD reg,reg (Nicolas Sauzede, nicolas.sauzede@st.com).
Julian Seward [Mon, 10 May 2010 20:51:22 +0000 (20:51 +0000)] 
Implement XADD reg,reg (Nicolas Sauzede, nicolas.sauzede@st.com).
Fixes #195662.

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

15 years agoEnable FISTS. Fixes #234037. (Bradley Baetz, bbaetz@gmail.com)
Julian Seward [Mon, 10 May 2010 20:08:12 +0000 (20:08 +0000)] 
Enable FISTS.  Fixes #234037.  (Bradley Baetz, bbaetz@gmail.com)

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

15 years agoHandle v7 memory fence instructions: ISB DSB DMB and their v6 equivalents:
Julian Seward [Tue, 4 May 2010 08:48:43 +0000 (08:48 +0000)] 
Handle v7 memory fence instructions: ISB DSB DMB and their v6 equivalents:
mcr 15,0,r0,c7,c5,4     mcr 15,0,r0,c7,c10,4    mcr 15,0,r0,c7,c10,5
respectively.  Re-emit them in the v6 form so as not to inhibit possible
support for v6-only platforms in the future.  Extended version of a patch
from Alexander Potapenko (glider@google.com).  Fixes bug 228060.

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

15 years agoHandle more x86 NOP forms, as required by Fedora 13. Fixes bug
Julian Seward [Mon, 3 May 2010 21:58:22 +0000 (21:58 +0000)] 
Handle more x86 NOP forms, as required by Fedora 13.  Fixes bug
233576.  Jakub Jelinek <jakub@redhat.com>.

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

15 years agoUpdate copyright dates to 2010 and change license to standard GPL2+.
Julian Seward [Mon, 3 May 2010 21:38:49 +0000 (21:38 +0000)] 
Update copyright dates to 2010 and change license to standard GPL2+.

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

15 years ago(re-commit r1976):
Julian Seward [Thu, 29 Apr 2010 08:52:00 +0000 (08:52 +0000)] 
(re-commit r1976):
Added new SSE4.1 instruction:
  PMAXUD

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

15 years ago(re-commit r1975):
Julian Seward [Thu, 29 Apr 2010 08:50:09 +0000 (08:50 +0000)] 
(re-commit r1975):
Added new SSE4.1 instruction:
  PINSRQ

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

15 years ago(re-commit r1974):
Julian Seward [Thu, 29 Apr 2010 08:48:09 +0000 (08:48 +0000)] 
(re-commit r1974):
Fix up printing for some of the SSE4.1 insns.

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

15 years ago(re-commit r1973):
Julian Seward [Thu, 29 Apr 2010 08:46:38 +0000 (08:46 +0000)] 
(re-commit r1973):
Added new SSE4.1 instructions:
  PEXTRW, PEXTRQ, PEXTRD, PEXTRB

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

15 years ago(re-commit r1972):
Julian Seward [Thu, 29 Apr 2010 08:44:13 +0000 (08:44 +0000)] 
(re-commit r1972):
Fixed copy+paste error in R1971

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

15 years ago(re-commit r1971)
Julian Seward [Thu, 29 Apr 2010 08:42:37 +0000 (08:42 +0000)] 
(re-commit r1971)
Added new SSE4 instructions PMINSD, PMAXSD.

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

15 years ago(re-commit r1970):
Julian Seward [Thu, 29 Apr 2010 08:39:18 +0000 (08:39 +0000)] 
(re-commit r1970):
Tested BLENDPS
Added new SSE4 instructions DPPD and DPPS

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

15 years agoiselVecExpr_wrk: 128-bit constants: handle all 16 cases
Donna Robinson [Fri, 2 Apr 2010 14:15:58 +0000 (14:15 +0000)] 
iselVecExpr_wrk: 128-bit constants: handle all 16 cases
                 of the form 0x0000 .. 0xFFFF.

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