From 2dec927e60395210946e5b9dbaa03111dad2466a Mon Sep 17 00:00:00 2001 From: Goran Jakovljevic Date: Wed, 2 Aug 2017 11:41:26 +0200 Subject: MIPS64: Implement HSelect Test: mma test-art-host-gtest Test: mma test-art-target-gtest in QEMU (MIPS64R6) Test: ./testrunner.py --target --optimizing in QEMU (MIPS64R6) Change-Id: I633fc479e0ca61b7d49b4c36fbe5db9a94da535d --- compiler/utils/mips64/assembler_mips64.cc | 16 ++++++++++++++++ compiler/utils/mips64/assembler_mips64.h | 4 ++++ compiler/utils/mips64/assembler_mips64_test.cc | 20 ++++++++++++++++++++ 3 files changed, 40 insertions(+) (limited to 'compiler/utils') diff --git a/compiler/utils/mips64/assembler_mips64.cc b/compiler/utils/mips64/assembler_mips64.cc index 7a1beb656b..70414e7987 100644 --- a/compiler/utils/mips64/assembler_mips64.cc +++ b/compiler/utils/mips64/assembler_mips64.cc @@ -1002,6 +1002,22 @@ void Mips64Assembler::SelD(FpuRegister fd, FpuRegister fs, FpuRegister ft) { EmitFR(0x11, 0x11, ft, fs, fd, 0x10); } +void Mips64Assembler::SeleqzS(FpuRegister fd, FpuRegister fs, FpuRegister ft) { + EmitFR(0x11, 0x10, ft, fs, fd, 0x14); +} + +void Mips64Assembler::SeleqzD(FpuRegister fd, FpuRegister fs, FpuRegister ft) { + EmitFR(0x11, 0x11, ft, fs, fd, 0x14); +} + +void Mips64Assembler::SelnezS(FpuRegister fd, FpuRegister fs, FpuRegister ft) { + EmitFR(0x11, 0x10, ft, fs, fd, 0x17); +} + +void Mips64Assembler::SelnezD(FpuRegister fd, FpuRegister fs, FpuRegister ft) { + EmitFR(0x11, 0x11, ft, fs, fd, 0x17); +} + void Mips64Assembler::RintS(FpuRegister fd, FpuRegister fs) { EmitFR(0x11, 0x10, static_cast(0), fs, fd, 0x1a); } diff --git a/compiler/utils/mips64/assembler_mips64.h b/compiler/utils/mips64/assembler_mips64.h index c39d120bce..a062f5f8b3 100644 --- a/compiler/utils/mips64/assembler_mips64.h +++ b/compiler/utils/mips64/assembler_mips64.h @@ -599,6 +599,10 @@ class Mips64Assembler FINAL : public Assembler, public JNIMacroAssembler