From 51765b098301fff1897361b2d1a21af356d9d6d8 Mon Sep 17 00:00:00 2001 From: Lena Djokic Date: Thu, 22 Jun 2017 13:49:59 +0200 Subject: MIPS32: ART Vectorizer MIPS32 implementation which uses MSA extension. Note: Testing is done with checker parts of tests 640, 645, 646 and 651, locally changed to cover MIPS32 cases. These changes can't be included in this patch since MSA is not a default option. Test: ./testrunner.py --target --optimizing -j1 in QEMU (mips32r6) Change-Id: Ieba28f94c48c943d5444017bede9a5d409149762 --- compiler/utils/mips/assembler_mips.cc | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'compiler/utils/mips/assembler_mips.cc') diff --git a/compiler/utils/mips/assembler_mips.cc b/compiler/utils/mips/assembler_mips.cc index 44b9bb4eb9..c581f1c58f 100644 --- a/compiler/utils/mips/assembler_mips.cc +++ b/compiler/utils/mips/assembler_mips.cc @@ -2904,6 +2904,17 @@ void MipsAssembler::IlvrD(VectorRegister wd, VectorRegister ws, VectorRegister w static_cast(wt)); } +void MipsAssembler::ReplicateFPToVectorRegister(VectorRegister dst, + FRegister src, + bool is_double) { + // Float or double in FPU register Fx can be considered as 0th element in vector register Wx. + if (is_double) { + SplatiD(dst, static_cast(src), 0); + } else { + SplatiW(dst, static_cast(src), 0); + } +} + void MipsAssembler::LoadConst32(Register rd, int32_t value) { if (IsUint<16>(value)) { // Use OR with (unsigned) immediate to encode 16b unsigned int. -- cgit v1.2.3-59-g8ed1b