diff options
author | 2017-07-25 11:20:52 +0200 | |
---|---|---|
committer | 2017-07-25 14:27:30 +0200 | |
commit | b3d79e430a4c0a447121890514cdee48e4675df4 (patch) | |
tree | ebc0f5fc16d5caf009f59550407abadbc40415ff /compiler/utils/mips/assembler_mips.h | |
parent | 03ce1df8f9b1b8d207fc685fd084b96697a50182 (diff) |
MIPS: Add maddv/msubv MSA instructions
Added maddv.df, msubv.df, fmadd.df and fmsub.df MSA instructions
in assembler, disassembler and tests.
These instructions are needed for multiplyaccumulate support in
ART Vectorizer.
Test: mma test-art-host-gtest
Change-Id: Idef7faaeed47f1fef83fa58676ce664afe24ffe8
Diffstat (limited to 'compiler/utils/mips/assembler_mips.h')
-rw-r--r-- | compiler/utils/mips/assembler_mips.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/compiler/utils/mips/assembler_mips.h b/compiler/utils/mips/assembler_mips.h index e42bb3fa3d..a7ff931e7e 100644 --- a/compiler/utils/mips/assembler_mips.h +++ b/compiler/utils/mips/assembler_mips.h @@ -613,6 +613,19 @@ class MipsAssembler FINAL : public Assembler, public JNIMacroAssembler<PointerSi void IlvrW(VectorRegister wd, VectorRegister ws, VectorRegister wt); void IlvrD(VectorRegister wd, VectorRegister ws, VectorRegister wt); + void MaddvB(VectorRegister wd, VectorRegister ws, VectorRegister wt); + void MaddvH(VectorRegister wd, VectorRegister ws, VectorRegister wt); + void MaddvW(VectorRegister wd, VectorRegister ws, VectorRegister wt); + void MaddvD(VectorRegister wd, VectorRegister ws, VectorRegister wt); + void MsubvB(VectorRegister wd, VectorRegister ws, VectorRegister wt); + void MsubvH(VectorRegister wd, VectorRegister ws, VectorRegister wt); + void MsubvW(VectorRegister wd, VectorRegister ws, VectorRegister wt); + void MsubvD(VectorRegister wd, VectorRegister ws, VectorRegister wt); + void FmaddW(VectorRegister wd, VectorRegister ws, VectorRegister wt); + void FmaddD(VectorRegister wd, VectorRegister ws, VectorRegister wt); + void FmsubW(VectorRegister wd, VectorRegister ws, VectorRegister wt); + void FmsubD(VectorRegister wd, VectorRegister ws, VectorRegister wt); + // Helper for replicating floating point value in all destination elements. void ReplicateFPToVectorRegister(VectorRegister dst, FRegister src, bool is_double); |