]>
git.ipfire.org Git - thirdparty/valgrind.git/log
Julian Seward [Sun, 23 Nov 2014 17:32:07 +0000 (17:32 +0000)]
Merge, from trunk, r2994
2994 fix stupid bug introduced in 2993
git-svn-id: svn://svn.valgrind.org/vex/branches/VEX_3_10_BRANCH@3019
Julian Seward [Sun, 23 Nov 2014 17:31:10 +0000 (17:31 +0000)]
Merge, from trunk, r2993
2993 arm64: implement ADDP etc
git-svn-id: svn://svn.valgrind.org/vex/branches/VEX_3_10_BRANCH@3018
Julian Seward [Sun, 23 Nov 2014 17:29:10 +0000 (17:29 +0000)]
Merge, from trunk, r2992.
2992 arm64: Implement "fcvtpu w, s". n-i-bz.
git-svn-id: svn://svn.valgrind.org/vex/branches/VEX_3_10_BRANCH@3017
Julian Seward [Sun, 23 Nov 2014 17:28:18 +0000 (17:28 +0000)]
Merge, from trunk, r2991.
340856 disInstr(arm64): unhandled instruction 0x1E634C45 (fcsel)
2991
git-svn-id: svn://svn.valgrind.org/vex/branches/VEX_3_10_BRANCH@3016
Julian Seward [Sun, 23 Nov 2014 17:27:11 +0000 (17:27 +0000)]
Merge, from trunk, r2990.
2990 Add detection of old ppc32 magic instructions from bug 278808.
git-svn-id: svn://svn.valgrind.org/vex/branches/VEX_3_10_BRANCH@3015
Julian Seward [Sun, 23 Nov 2014 17:25:53 +0000 (17:25 +0000)]
Merge, from trunk, r2988
340725 AVX2: Incorrect decoding of vpbroadcast{b,w} reg,reg forms
2988
git-svn-id: svn://svn.valgrind.org/vex/branches/VEX_3_10_BRANCH@3014
Julian Seward [Sun, 23 Nov 2014 17:24:51 +0000 (17:24 +0000)]
Merge, from trunk, r2987
340632 arm64: unhandled instruction fcvtas
2987
git-svn-id: svn://svn.valgrind.org/vex/branches/VEX_3_10_BRANCH@3013
Julian Seward [Sun, 23 Nov 2014 17:23:24 +0000 (17:23 +0000)]
Merge, from trunk, r2986
340033 arm64: unhandled instruction for dmb ishld and some other
isb-dmb-dsb variants...
2986
git-svn-id: svn://svn.valgrind.org/vex/branches/VEX_3_10_BRANCH@3012
Julian Seward [Sun, 23 Nov 2014 17:22:16 +0000 (17:22 +0000)]
Merge, from trunk, r2985
335713 arm64: unhanded instruction: prfm (immediate)
2985
git-svn-id: svn://svn.valgrind.org/vex/branches/VEX_3_10_BRANCH@3011
Julian Seward [Sun, 23 Nov 2014 17:21:12 +0000 (17:21 +0000)]
Merge, from trunk, r2984
340509 arm64: unhandled instruction fcvtas
2984
git-svn-id: svn://svn.valgrind.org/vex/branches/VEX_3_10_BRANCH@3010
Julian Seward [Sun, 23 Nov 2014 17:20:09 +0000 (17:20 +0000)]
Merge, from trunk, r2983
339938 disInstr(arm64): unhandled instruction 0x4F8010A4 (fmla)
== 339950
2983
git-svn-id: svn://svn.valgrind.org/vex/branches/VEX_3_10_BRANCH@3009
Julian Seward [Sun, 23 Nov 2014 17:18:46 +0000 (17:18 +0000)]
Merge, from trunk, r2982
339927 Unhandled instruction 0x9E7100C6 (fcvtmu) on aarch64
2982
git-svn-id: svn://svn.valgrind.org/vex/branches/VEX_3_10_BRANCH@3008
Julian Seward [Sun, 23 Nov 2014 17:17:39 +0000 (17:17 +0000)]
Merge, from trunk, r2981
339926 Unhandled instruction 0x1E674001 (frintx) on aarm64
2981
git-svn-id: svn://svn.valgrind.org/vex/branches/VEX_3_10_BRANCH@3007
Julian Seward [Sun, 23 Nov 2014 12:52:05 +0000 (12:52 +0000)]
Merge, from trunk, r2979
* add a missing extra m-reg check for some LD/ST vector cases
* implement
LD1/ST1 (multiple 1-elem structs to/from 2 regs
LD1/ST1 (multiple 1-elem structs to/from 3 regs
LD1/ST1 (multiple 1-elem structs to/from 4 regs
LD1R (single structure, replicate)
LD2R (single structure, replicate)
LD3R (single structure, replicate)
LD4R (single structure, replicate)
LD1/ST1 (single structure, to/from one lane)
LD2/ST2 (single structure, to/from one lane)
LD3/ST3 (single structure, to/from one lane)
LD4/ST4 (single structure, to/from one lane)
I believe this completes the implementation of load and store
instructions for AArch64 ARMv8.
git-svn-id: svn://svn.valgrind.org/vex/branches/VEX_3_10_BRANCH@3006
Julian Seward [Sun, 23 Nov 2014 12:49:14 +0000 (12:49 +0000)]
Merge, from trunk, r2976
Implement SIMD (de)interleaving loads/stores:
LD1/ST1 (multiple 1-elem structs to/from 1 reg
LD2/ST2 (multiple 2-elem structs to/from 2 regs
LD3/ST3 (multiple 3-elem structs to/from 3 regs
LD4/ST4 (multiple 4-elem structs to/from 4 regs
Also:
LDNP, STNP (load/store vector pair, non-temporal)
git-svn-id: svn://svn.valgrind.org/vex/branches/VEX_3_10_BRANCH@3005
Julian Seward [Sun, 23 Nov 2014 12:16:11 +0000 (12:16 +0000)]
Merge, from trunk, r2975
339858 arm64 dmb sy not implemented
2975 (subsequently overwritten by 2986)
git-svn-id: svn://svn.valgrind.org/vex/branches/VEX_3_10_BRANCH@3004
Julian Seward [Sun, 23 Nov 2014 12:14:41 +0000 (12:14 +0000)]
Merge, from trunk, 2962, 2966, 2967, 2973
339433 ppc64 lxvw4x instruction uses four 32-byte loads
git-svn-id: svn://svn.valgrind.org/vex/branches/VEX_3_10_BRANCH@3003
Julian Seward [Sun, 23 Nov 2014 11:57:49 +0000 (11:57 +0000)]
Merge, from trunk, r2960
339182 ppc64: AvSplat ought to load destination vector register with 16/16
bytes stored prior
git-svn-id: svn://svn.valgrind.org/vex/branches/VEX_3_10_BRANCH@3002
Julian Seward [Sun, 23 Nov 2014 11:56:09 +0000 (11:56 +0000)]
Merge, from trunk, r2957:
339336 PPC64 store quad instruction (stq) is not supposed to
change the address register contents
git-svn-id: svn://svn.valgrind.org/vex/branches/VEX_3_10_BRANCH@3001
Julian Seward [Mon, 8 Sep 2014 11:50:47 +0000 (11:50 +0000)]
Create VEX_3_10_BRANCH as a copy of trunk r2949.
git-svn-id: svn://svn.valgrind.org/vex/branches/VEX_3_10_BRANCH@2950
Julian Seward [Sun, 7 Sep 2014 23:23:17 +0000 (23:23 +0000)]
Change how FXSAVE and FXRSTOR are done, so as to avoid pushing the XMM
register contents themselves through the helper functions. This
avoids the false positives reported in #291310.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2949
Florian Krohm [Sat, 6 Sep 2014 21:43:28 +0000 (21:43 +0000)]
Minor refactoring to avoid special handling of emulation
failures in s390_irgen_PFPO.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2948
Julian Seward [Sat, 6 Sep 2014 08:08:47 +0000 (08:08 +0000)]
Handle fcvtpu Xd,Sn. Fixes #335564.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2947
Florian Krohm [Fri, 5 Sep 2014 21:52:29 +0000 (21:52 +0000)]
Use const instead of a comment.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2946
Julian Seward [Fri, 5 Sep 2014 20:38:34 +0000 (20:38 +0000)]
iselStmt, case Ist_Dirty: remove pointless conditional. Spotted by
Coverity and Florian Krohm.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2945
Petar Jovanovic [Thu, 4 Sep 2014 17:34:56 +0000 (17:34 +0000)]
mips64: fix jmpKind for BLTZ and BGEZ
As spotted by Maran Pakkirisamy, jump kind for BLTZ and BGEZ should be
Ijk_Boring and not Ijk_Call.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2944
Julian Seward [Thu, 4 Sep 2014 11:44:03 +0000 (11:44 +0000)]
arm64: enable support for: str bN, [reg, reg etc]
and str hN, [reg, reg etc]. Fixes #337762.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2943
Petar Jovanovic [Wed, 3 Sep 2014 14:39:56 +0000 (14:39 +0000)]
mips64: implement Cavium BBIT0 and BBIT1 instructions
Implement Cavium specific instructions:
- BBIT0 (Branch on bit clear)
- BBIT1 (Branch on bit set)
This should fix the hang issue reported in:
https://bugs.kde.org/show_bug.cgi?id=336139
git-svn-id: svn://svn.valgrind.org/vex/trunk@2942
Florian Krohm [Tue, 2 Sep 2014 14:54:39 +0000 (14:54 +0000)]
Add a missing return statement. Spotted by the Coverity checker.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2941
Julian Seward [Mon, 1 Sep 2014 14:13:15 +0000 (14:13 +0000)]
arm64: route all whole-vector shift/rotate/slice operations
through Iop_SliceV128, so as to give it some testing. Implement
Iop_SliceV128 in the back end.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2940
Julian Seward [Mon, 1 Sep 2014 11:32:47 +0000 (11:32 +0000)]
Rename Iop_Extract{64,V128} to Iop_Slice{64,V128}, improve their
documentation, and swap the sense of the first and second args
so as to be more in keeping with the rest of the ops here, so
that the more significant arg is arg1 rather than arg2.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2939
Julian Seward [Fri, 29 Aug 2014 21:58:03 +0000 (21:58 +0000)]
Add support for generating ProfInc sequences on ARM64, so as to
make it possible to profile vex-generated ARM64 code.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2938
Petar Jovanovic [Fri, 29 Aug 2014 17:34:22 +0000 (17:34 +0000)]
mips: remove unused macro
Remove unused instance of macro ASM_VOLATILE_CASE(rd, sel).
git-svn-id: svn://svn.valgrind.org/vex/trunk@2937
Petar Jovanovic [Fri, 29 Aug 2014 17:05:40 +0000 (17:05 +0000)]
mips: fix typo (IRType/IRTemp)
Fix typo (IRType used instead of IRTemp).
git-svn-id: svn://svn.valgrind.org/vex/trunk@2936
Julian Seward [Tue, 26 Aug 2014 18:30:48 +0000 (18:30 +0000)]
Add support for four IROps that Memcheck generates on arm64, that
the front end doesn't generate.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2935
Julian Seward [Tue, 26 Aug 2014 18:29:26 +0000 (18:29 +0000)]
Comment-only change.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2934
Julian Seward [Sun, 24 Aug 2014 20:36:14 +0000 (20:36 +0000)]
arm64: implement:
{zip,uzp,trn}{1,2} (vector)
urecpe, ursqrte (vector)
git-svn-id: svn://svn.valgrind.org/vex/trunk@2933
Julian Seward [Sun, 24 Aug 2014 14:00:19 +0000 (14:00 +0000)]
Rename IROps for reciprocal estimate, reciprocal step, reciprocal sqrt
estimate and reciprocal sqrt step, to be more consistent. Remove
64FxWhatever versions of those ops since they are never used. As a
side effect, observe that RSqrt32Fx4 and Rsqrte32Fx4 are the same and
hence fix the duplication, at the same time. No functional change.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2932
Mark Wielaard [Thu, 21 Aug 2014 17:46:00 +0000 (17:46 +0000)]
Bug 330319 - vex amd64->IR: unhandled instruction bytes: 0xF 0x1 0xD5 (xend)
We are never in an transaction (xbegin immediately aborts).
So this just always generates a General Protection Fault.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2931
Julian Seward [Wed, 20 Aug 2014 08:54:06 +0000 (08:54 +0000)]
putGST_masked: correctly handle the case where the mask is for
FPSCR.RN or FPSCR.DRN, but does not cover the entire field. Then it
is important to update the exposed parts but leave the not-exposed
parts unchanged. This is a regression relative to circa 5 years ago.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2929
Julian Seward [Mon, 18 Aug 2014 12:28:02 +0000 (12:28 +0000)]
arm64: implement:
suqadd, usqadd (scalar)
suqadd, usqadd (vector)
git-svn-id: svn://svn.valgrind.org/vex/trunk@2928
Julian Seward [Sun, 17 Aug 2014 19:59:09 +0000 (19:59 +0000)]
arm64: implement srhadd, urhadd (vector)
git-svn-id: svn://svn.valgrind.org/vex/trunk@2927
Julian Seward [Sun, 17 Aug 2014 18:32:14 +0000 (18:32 +0000)]
arm64: implement
sshr, ushr, ssra, usra (scalar, imm)
srshr, urshr, srsra, ursra (scalar, imm)
srshr, urshr, srsra, ursra (vector, imm)
sshl, srshl, ushl, urshl (scalar, imm)
sshl, srshl, ushl, urshl (vector, vector)
ssra, usra (vector, imm)
git-svn-id: svn://svn.valgrind.org/vex/trunk@2926
Julian Seward [Fri, 15 Aug 2014 09:29:36 +0000 (09:29 +0000)]
No functional change. Remove commented out code copied from the
arm32 port, which is never going to get used.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2925
Julian Seward [Fri, 15 Aug 2014 09:11:08 +0000 (09:11 +0000)]
Rename Iop_QSalN*, Iop_QShlN* and Iop_QShlN*S so as to more accurately
reflect what they actually do, which is a zero-fill shift left followed
by one of three flavours of saturation (S->S, U->U or S->U).
git-svn-id: svn://svn.valgrind.org/vex/trunk@2924
Julian Seward [Fri, 15 Aug 2014 05:35:35 +0000 (05:35 +0000)]
arm64: implement: {uqshl, sqshl, sqshlu} (scalar, imm) and fix two
bugs in the implementation of the (vector, imm) variants.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2923
Julian Seward [Thu, 14 Aug 2014 22:26:52 +0000 (22:26 +0000)]
arm64: implement: {uqshl, sqshl, sqshlu} (vector, imm).
git-svn-id: svn://svn.valgrind.org/vex/trunk@2922
Julian Seward [Thu, 14 Aug 2014 22:25:31 +0000 (22:25 +0000)]
Add a simple folding rule for Iop_ZeroHI64ofV128.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2921
Julian Seward [Wed, 13 Aug 2014 13:10:47 +0000 (13:10 +0000)]
arm64: implement: uqshrn{2}, sqrshrun{2}, sqshrun{2} (scalar, imm)
git-svn-id: svn://svn.valgrind.org/vex/trunk@2920
Philippe Waroquiers [Mon, 11 Aug 2014 22:45:47 +0000 (22:45 +0000)]
Small cleanups in VEX:
* rm unused arm64 function
* ijk_nodecode: always set the 4 components of the result
(avoid a compiler warning that a part is not initialised)
git-svn-id: svn://svn.valgrind.org/vex/trunk@2919
Julian Seward [Mon, 11 Aug 2014 14:02:47 +0000 (14:02 +0000)]
arm64: implement:
uqshrn{2}, sqrshrun{2}, sqshrun{2} (vector, imm)
sqxtn{2}, uqxtn{2}, sqxtun{2} (vector and scalar)
git-svn-id: svn://svn.valgrind.org/vex/trunk@2918
Julian Seward [Mon, 11 Aug 2014 14:01:00 +0000 (14:01 +0000)]
Add a new folding rule:
ZeroHI64ofV128( ZeroHI64ofV128(x) ) --> ZeroHI64ofV128(x)
git-svn-id: svn://svn.valgrind.org/vex/trunk@2917
Philippe Waroquiers [Sat, 9 Aug 2014 08:13:19 +0000 (08:13 +0000)]
Unbreak the build
priv/guest_ppc_toIR.c: In function disInstr_PPC:
priv/guest_ppc_toIR.c:20160:7: error: dis undeclared (first use in this function)
dis.continueAt = 0;
^
git-svn-id: svn://svn.valgrind.org/vex/trunk@2916
Carl Love [Fri, 8 Aug 2014 22:26:31 +0000 (22:26 +0000)]
This commit is for Bugzilla 334834.
The compiler is generating a message
"dres.continueAt’ may be used uninitialized in this function".
Setting dres.continueAT to zero since this is an error case
and we should not be continuing.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2915
Carl Love [Thu, 7 Aug 2014 23:25:23 +0000 (23:25 +0000)]
This commit is for Bugzilla 334834. The Bugzilla contains patch 2 of 3
to add PPC64 LE support. The other two patches can be found in Bugzillas
334384 and 334836.
POWER PC, add the functional Little Endian support, patch 2 VEX part
The IBM POWER processor now supports both Big Endian and Little Endian.
The ABI for Little Endian also changes. Specifically, the function
descriptor is not used, the stack size changed, accessing the TOC
changed. Functions now have a local and a global entry point. Register
r2 contains the TOC for local calls and register r12 contains the TOC
for global calls. This patch makes the functional changes to the
Valgrind tool. The patch makes the changes needed for the
none/tests/ppc32 and none/tests/ppc64 Makefile.am. A number of the
ppc specific tests have Endian dependencies that are not fixed in
this patch. They are fixed in the next patch.
Per Julian's comments renamed coregrind/m_dispatch/dispatch-ppc64-linux.S
to coregrind/m_dispatch/dispatch-ppc64be-linux.S Created new file for LE
coregrind/m_dispatch/dispatch-ppc64le-linux.S. The same was done for
coregrind/m_syswrap/syscall-ppc-linux.S.
Signed-off-by: Carl Love <carll@us.ibm.com>
git-svn-id: svn://svn.valgrind.org/vex/trunk@2914
Julian Seward [Mon, 4 Aug 2014 08:09:47 +0000 (08:09 +0000)]
arm64: add support for: sqshl, uqshl, sqrshl, uqrshl (reg) (vector and scalar)
git-svn-id: svn://svn.valgrind.org/vex/trunk@2913
Julian Seward [Mon, 4 Aug 2014 08:09:23 +0000 (08:09 +0000)]
Add a folding rule: XorV128(t,0) ==> t.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2912
Julian Seward [Sun, 3 Aug 2014 12:45:19 +0000 (12:45 +0000)]
arm64: implement remaining SQDMULH and SQRDMULH cases.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2911
Julian Seward [Thu, 24 Jul 2014 12:42:03 +0000 (12:42 +0000)]
Improve infrastructure for dealing with endianness in VEX. This patch
removes all decisions about endianness from VEX. Instead, it requires
that the LibVEX_* calls pass in information about the guest or host
endianness (depending on context) and in turn it passes that info
through to all the places that need it:
* the front ends (xx_toIR.c)
* the back ends (xx_isel.c)
* the patcher functions (Chain, UnChain, PatchProfInc)
Mostly it is boring and ugly plumbing. As far as types go, there is a
new type "VexEndness" that carries the endianness. This also makes it
possible to stop using Bools to indicate endianness. VexArchInfo has
a new field of type VexEndness. Apart from that, no other changes in
types.
Followups: MIPS front and back ends have not yet been fixed up to use
the passed-in endianness information. Currently they assume that the
endianness of both host and guest is the same as the endianness of the
target for which VEX is being compiled.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2910
Julian Seward [Tue, 22 Jul 2014 09:27:49 +0000 (09:27 +0000)]
arm64: implement:
{sqdmlal,sqdmlsl,sqdmull}{d_s_s[],s_h_h[]}
{sqdmlal,sqdmlsl,sqdmull}{d_s_s,s_h_h}
{sqdmlal,sqdmlsl,sqdmull}{2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h)}
sqrdmulh 4s,2s,8h,4h (vector)
git-svn-id: svn://svn.valgrind.org/vex/trunk@2909
Julian Seward [Tue, 22 Jul 2014 09:26:36 +0000 (09:26 +0000)]
Comment-only change.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2908
Julian Seward [Mon, 21 Jul 2014 09:19:50 +0000 (09:19 +0000)]
arm64: implement: sqneg, {u,s}q{add,sub} (scalar),
{sqdmlal,sqdmlsl,sqdmull} (vector x element)
As part of this, rename Iop_QDMulLong* to Iop_QDMull* so as to be
consistent with their non-saturating equivalents.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2907
Julian Seward [Mon, 21 Jul 2014 07:55:45 +0000 (07:55 +0000)]
Initialise a couple of scalars that gcc -Og thinks might be
uninitialised, presumably because at -Og it doesn't do enough
block straightening-outening or whatever to see that they are
always assigned before use.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2906
Florian Krohm [Fri, 18 Jul 2014 21:23:46 +0000 (21:23 +0000)]
Add a few more algebraic optimisations for Iop_And8/16.
Observed on s390.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2905
Julian Seward [Wed, 16 Jul 2014 23:14:33 +0000 (23:14 +0000)]
Remove fields from VexAbiInfo that only had relevance to the old AIX5
port: guest_ppc_sc_continues_at_LR and host_ppc32_regalign_int64_args.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2904
Florian Krohm [Wed, 16 Jul 2014 20:29:38 +0000 (20:29 +0000)]
Comment out an unsed function to avoid a compiler warning.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2903
Florian Krohm [Wed, 16 Jul 2014 20:17:49 +0000 (20:17 +0000)]
Fix algebraic simplification for Iop_AndV256.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2902
Julian Seward [Tue, 15 Jul 2014 11:08:42 +0000 (11:08 +0000)]
arm64: implement: LD1/ST1 (multi 1-elem structs, 2 regs, post index)
git-svn-id: svn://svn.valgrind.org/vex/trunk@2901
Julian Seward [Mon, 14 Jul 2014 20:39:23 +0000 (20:39 +0000)]
arm64: implement "mrs Xt, cntvct_el0" by pass-through to the host.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2900
Julian Seward [Fri, 11 Jul 2014 12:05:47 +0000 (12:05 +0000)]
arm64: implement: {sli,sri} (vector & scalar), sqabs (vector & scalar)
Fix instruction decoding bug in dis_AdvSIMD_vector_x_indexed_elem
introduced in r2874 but not exposed until recently.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2899
Julian Seward [Thu, 10 Jul 2014 14:22:45 +0000 (14:22 +0000)]
arm64: implement: shll #imm, shrn #imm, rshrn #imm,
{smlal,umlal,smlsl,umlsl,smull,umull} (elem)
git-svn-id: svn://svn.valgrind.org/vex/trunk@2898
Julian Seward [Thu, 3 Jul 2014 12:27:21 +0000 (12:27 +0000)]
arm32: support (ARM) PLDW [reg, reg]. The non-W variant was already
accepted. Fixes #323178. (vasily.golubev@gmail.com)
git-svn-id: svn://svn.valgrind.org/vex/trunk@2897
Julian Seward [Thu, 3 Jul 2014 11:01:38 +0000 (11:01 +0000)]
arm32: support (ARM) PLDW [reg, #imm]. The non-W variant was already
accepted. Fixes #323179. (vasily.golubev@gmail.com)
git-svn-id: svn://svn.valgrind.org/vex/trunk@2896
Julian Seward [Mon, 30 Jun 2014 07:33:56 +0000 (07:33 +0000)]
arm64: implement: sadalp uadalp saddlp uaddlp saddlv uaddlv saddw{2}
uaddw{2} ssubw{2} usubw{2} shadd uhadd shsub uhsub sqadd uqadd sqsub
uqsub smaxp umaxp sminp uminp
git-svn-id: svn://svn.valgrind.org/vex/trunk@2895
Julian Seward [Sat, 28 Jun 2014 22:11:16 +0000 (22:11 +0000)]
arm64: change the representation of FPSR.QC so that it can be
used efficiently to record SIMD saturation, and remove support
for all other bits of FPSR, since we don't model them anyway.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2894
Julian Seward [Sat, 28 Jun 2014 12:21:37 +0000 (12:21 +0000)]
arm64: implement: sabal uabal sabdl uabdl saddl uaddl ssubl usubl
smlal umlal smlsl umlsl smull umull
git-svn-id: svn://svn.valgrind.org/vex/trunk@2893
Julian Seward [Fri, 27 Jun 2014 10:43:22 +0000 (10:43 +0000)]
arm64:
* implement: rev32, rev64, saba, uaba, sabd, uabd.
* factor out a large number of duplicated expressions of the form
bitQ == 0 ? unop(Iop_ZeroHI64ofV128, mkexpr(t)) : mkexpr(t)
git-svn-id: svn://svn.valgrind.org/vex/trunk@2892
Julian Seward [Thu, 26 Jun 2014 12:39:05 +0000 (12:39 +0000)]
arm64: implement: rbit 16b,8b, rev16 16b,8b
git-svn-id: svn://svn.valgrind.org/vex/trunk@2891
Julian Seward [Thu, 26 Jun 2014 10:49:33 +0000 (10:49 +0000)]
Rename the vector subparts-of-lanes-reversal IROps to names
that are easier to understand. No functional change.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2890
Julian Seward [Thu, 26 Jun 2014 08:18:08 +0000 (08:18 +0000)]
The vector versions of the count leading zeros/sign bits primops
(Iop_Cls* and Iop_Clz*) misleadingly imply a signedness in the
incoming lanes. Rename them to fix this. Fixes #326026.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2889
Julian Seward [Thu, 26 Jun 2014 07:41:14 +0000 (07:41 +0000)]
arm64: implement pmull{2}.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2888
Julian Seward [Wed, 25 Jun 2014 13:05:23 +0000 (13:05 +0000)]
arm64: implement:
LD3/ST3 (multi 3-elem structs, 3 regs, post index) (2d variants only)
pmul 16b_16b_16b, 8b_8b_8b
git-svn-id: svn://svn.valgrind.org/vex/trunk@2887
Julian Seward [Wed, 25 Jun 2014 12:19:02 +0000 (12:19 +0000)]
Remove commented out junk which is never going to get used.
No functional change.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2886
Julian Seward [Wed, 25 Jun 2014 11:59:24 +0000 (11:59 +0000)]
Fix bogus-looking assertion.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2885
Julian Seward [Tue, 24 Jun 2014 10:26:52 +0000 (10:26 +0000)]
Implement LD1/ST1 {3 regs . 16b}, [ea] (no offset)
git-svn-id: svn://svn.valgrind.org/vex/trunk@2884
Julian Seward [Mon, 23 Jun 2014 09:09:41 +0000 (09:09 +0000)]
arm64: more SIMD instructions:
ins (vec[], vec[])
mla, mls, mul (vec, vec, vec[])
various more movi/mvni cases
not 16b/8b
git-svn-id: svn://svn.valgrind.org/vex/trunk@2883
Julian Seward [Fri, 20 Jun 2014 14:27:27 +0000 (14:27 +0000)]
Fix an enum type confusion, PPCAvFpOp vs PPCAvOp, as excellently
detected by Clang. Gcc, are you paying attention?
git-svn-id: svn://svn.valgrind.org/vex/trunk@2882
Julian Seward [Fri, 20 Jun 2014 08:30:21 +0000 (08:30 +0000)]
Increase the number of vector registers available for allocation from
3 to 5.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2881
Julian Seward [Thu, 19 Jun 2014 22:20:47 +0000 (22:20 +0000)]
Implement: dup_{d_d[], s_s[], h_h[], b_b[]}, ext
git-svn-id: svn://svn.valgrind.org/vex/trunk@2880
Julian Seward [Thu, 19 Jun 2014 14:21:37 +0000 (14:21 +0000)]
Implement: orr_{8h,4h}_imm8_shifted, orr_{4s,2s}_imm8_shifted,
bic_{8h,4h}_imm8_shifted, bic_{4s,2s}_imm8_shifted, cls_std6_std6,
cm{eq,ge,gt,hi,hs,tst}_d_d_d, cm{ge,gt,le,lt}_d_d_zero,
cnt_{16,8}b_{16,8}b
git-svn-id: svn://svn.valgrind.org/vex/trunk@2879
Julian Seward [Sun, 15 Jun 2014 21:55:33 +0000 (21:55 +0000)]
arm64: implement: addp std7_std7_std7, addv vector, addp d_2d
git-svn-id: svn://svn.valgrind.org/vex/trunk@2878
Julian Seward [Sun, 15 Jun 2014 19:36:29 +0000 (19:36 +0000)]
arm64: implement: abs d_d, neg d_d, abs std7_std7, addhn, subhn, raddhn, rsubhn
git-svn-id: svn://svn.valgrind.org/vex/trunk@2877
Julian Seward [Sun, 15 Jun 2014 08:17:35 +0000 (08:17 +0000)]
Remove temporary front end scaffolding for Cat{Even,Odd}Lanes
and Interleave{LO,HI} operations, and instead generate real
UZP1/UZP2/ZIP1/ZIP2 instructions in the back end.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2876
Julian Seward [Sat, 14 Jun 2014 18:05:30 +0000 (18:05 +0000)]
Implement LD1R (single structure, replicate).
git-svn-id: svn://svn.valgrind.org/vex/trunk@2875
Julian Seward [Thu, 12 Jun 2014 13:16:01 +0000 (13:16 +0000)]
Implement FMUL 2d_2d_d[], 4s_4s_s[], 2s_2s_s[].
git-svn-id: svn://svn.valgrind.org/vex/trunk@2874
Julian Seward [Thu, 12 Jun 2014 10:15:46 +0000 (10:15 +0000)]
Remove the old SIMD decoder entirely.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2873
Julian Seward [Wed, 11 Jun 2014 20:57:23 +0000 (20:57 +0000)]
Move remaining implemented SIMD instructions into the new SIMD/FP
decoding framework.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2872
Julian Seward [Tue, 10 Jun 2014 22:52:05 +0000 (22:52 +0000)]
Reimplement the SIMD and FP instruction decoder, so as to avoid huge
amounts of duplicated decode, and to follow the documentation more
closely.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2871
Dejan Jevtic [Mon, 9 Jun 2014 10:54:49 +0000 (10:54 +0000)]
mips: Fix non mips compiler warning.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2870
Julian Seward [Wed, 4 Jun 2014 13:09:44 +0000 (13:09 +0000)]
Support ADC/ADCS/SBC/SBCS. Fixes #335496. (dimitry@google.com)
git-svn-id: svn://svn.valgrind.org/vex/trunk@2868