MIPS: Add min/max suffixed variants.
authordusan.milosavljevic <dusan.milosavljevic@imgtec.com>
Thu, 30 Apr 2015 16:43:00 +0000 (09:43 -0700)
committerCommit bot <commit-bot@chromium.org>
Thu, 30 Apr 2015 16:43:09 +0000 (16:43 +0000)
TEST=
BUG=

Review URL: https://codereview.chromium.org/1118693002

Cr-Commit-Position: refs/heads/master@{#28181}

src/mips/assembler-mips.cc
src/mips/assembler-mips.h
src/mips64/assembler-mips64.cc
src/mips64/assembler-mips64.h
test/cctest/test-assembler-mips.cc
test/cctest/test-assembler-mips64.cc
test/cctest/test-disasm-mips.cc
test/cctest/test-disasm-mips64.cc

index 237b4f42b375c4688a89c0a3d1f48476204dcd14..3e7ec15b0d2d4b49bf9cebf87480624271e07588 100644 (file)
@@ -2344,6 +2344,46 @@ void Assembler::maxa(SecondaryField fmt, FPURegister fd, FPURegister fs,
 }
 
 
+void Assembler::min_s(FPURegister fd, FPURegister fs, FPURegister ft) {
+  min(S, fd, fs, ft);
+}
+
+
+void Assembler::min_d(FPURegister fd, FPURegister fs, FPURegister ft) {
+  min(D, fd, fs, ft);
+}
+
+
+void Assembler::max_s(FPURegister fd, FPURegister fs, FPURegister ft) {
+  max(S, fd, fs, ft);
+}
+
+
+void Assembler::max_d(FPURegister fd, FPURegister fs, FPURegister ft) {
+  max(D, fd, fs, ft);
+}
+
+
+void Assembler::mina_s(FPURegister fd, FPURegister fs, FPURegister ft) {
+  mina(S, fd, fs, ft);
+}
+
+
+void Assembler::mina_d(FPURegister fd, FPURegister fs, FPURegister ft) {
+  mina(D, fd, fs, ft);
+}
+
+
+void Assembler::maxa_s(FPURegister fd, FPURegister fs, FPURegister ft) {
+  maxa(S, fd, fs, ft);
+}
+
+
+void Assembler::maxa_d(FPURegister fd, FPURegister fs, FPURegister ft) {
+  maxa(D, fd, fs, ft);
+}
+
+
 void Assembler::cvt_s_w(FPURegister fd, FPURegister fs) {
   GenInstrRegister(COP1, W, f0, fs, fd, CVT_S_W);
 }
index 374afc00dc28c2c40b7339e8948aacd7e259bd3d..6cdfcfdabd65cf43ad5be911c020ee7486136947 100644 (file)
@@ -931,6 +931,14 @@ class Assembler : public AssemblerBase {
   void mina(SecondaryField fmt, FPURegister fd, FPURegister fs, FPURegister ft);
   void max(SecondaryField fmt, FPURegister fd, FPURegister fs, FPURegister ft);
   void maxa(SecondaryField fmt, FPURegister fd, FPURegister fs, FPURegister ft);
+  void min_s(FPURegister fd, FPURegister fs, FPURegister ft);
+  void min_d(FPURegister fd, FPURegister fs, FPURegister ft);
+  void max_s(FPURegister fd, FPURegister fs, FPURegister ft);
+  void max_d(FPURegister fd, FPURegister fs, FPURegister ft);
+  void mina_s(FPURegister fd, FPURegister fs, FPURegister ft);
+  void mina_d(FPURegister fd, FPURegister fs, FPURegister ft);
+  void maxa_s(FPURegister fd, FPURegister fs, FPURegister ft);
+  void maxa_d(FPURegister fd, FPURegister fs, FPURegister ft);
 
   void cvt_s_w(FPURegister fd, FPURegister fs);
   void cvt_s_l(FPURegister fd, FPURegister fs);
index f83dd571d0b03b4df09c5cd1a552f26f68f8065b..ee2daa45bb44cf980a5b919f7686af02426b3065 100644 (file)
@@ -2100,6 +2100,46 @@ void Assembler::movf(Register rd, Register rs, uint16_t cc) {
 }
 
 
+void Assembler::min_s(FPURegister fd, FPURegister fs, FPURegister ft) {
+  min(S, fd, fs, ft);
+}
+
+
+void Assembler::min_d(FPURegister fd, FPURegister fs, FPURegister ft) {
+  min(D, fd, fs, ft);
+}
+
+
+void Assembler::max_s(FPURegister fd, FPURegister fs, FPURegister ft) {
+  max(S, fd, fs, ft);
+}
+
+
+void Assembler::max_d(FPURegister fd, FPURegister fs, FPURegister ft) {
+  max(D, fd, fs, ft);
+}
+
+
+void Assembler::mina_s(FPURegister fd, FPURegister fs, FPURegister ft) {
+  mina(S, fd, fs, ft);
+}
+
+
+void Assembler::mina_d(FPURegister fd, FPURegister fs, FPURegister ft) {
+  mina(D, fd, fs, ft);
+}
+
+
+void Assembler::maxa_s(FPURegister fd, FPURegister fs, FPURegister ft) {
+  maxa(S, fd, fs, ft);
+}
+
+
+void Assembler::maxa_d(FPURegister fd, FPURegister fs, FPURegister ft) {
+  maxa(D, fd, fs, ft);
+}
+
+
 void Assembler::sel(SecondaryField fmt, FPURegister fd, FPURegister fs,
                     FPURegister ft) {
   DCHECK(kArchVariant == kMips64r6);
index 4e434f2f0a21f5f0c25249e7d936eab4c60778bf..bb7fac460702c16ae499b00162eaddd8fef592bf 100644 (file)
@@ -962,6 +962,14 @@ class Assembler : public AssemblerBase {
   void mina(SecondaryField fmt, FPURegister fd, FPURegister fs, FPURegister ft);
   void max(SecondaryField fmt, FPURegister fd, FPURegister fs, FPURegister ft);
   void maxa(SecondaryField fmt, FPURegister fd, FPURegister fs, FPURegister ft);
+  void min_s(FPURegister fd, FPURegister fs, FPURegister ft);
+  void min_d(FPURegister fd, FPURegister fs, FPURegister ft);
+  void max_s(FPURegister fd, FPURegister fs, FPURegister ft);
+  void max_d(FPURegister fd, FPURegister fs, FPURegister ft);
+  void mina_s(FPURegister fd, FPURegister fs, FPURegister ft);
+  void mina_d(FPURegister fd, FPURegister fs, FPURegister ft);
+  void maxa_s(FPURegister fd, FPURegister fs, FPURegister ft);
+  void maxa_d(FPURegister fd, FPURegister fs, FPURegister ft);
 
   void cvt_s_w(FPURegister fd, FPURegister fs);
   void cvt_s_l(FPURegister fd, FPURegister fs);
index 1dc3e4ef441d399eacf3ec046cc1c7447e3394f9..7d0e1054010b9e241cb4b18a81b39c68ab9ef392 100644 (file)
@@ -1425,8 +1425,8 @@ TEST(MIPS17) {
 
     __ ldc1(f4, MemOperand(a0, OFFSET_OF(TestFloat, a)));
     __ ldc1(f8, MemOperand(a0, OFFSET_OF(TestFloat, b)));
-    __ min(D, f10, f4, f8);
-    __ max(D, f12, f4, f8);
+    __ min_d(f10, f4, f8);
+    __ max_d(f12, f4, f8);
     __ sdc1(f10, MemOperand(a0, OFFSET_OF(TestFloat, c)));
     __ sdc1(f12, MemOperand(a0, OFFSET_OF(TestFloat, d)));
     __ jr(ra);
index c3c56e82e6cdd42aeffd4b041e1dac972b1d90c4..a6673d8e13b6c25fd0331ea2b9dbc3accac863cb 100644 (file)
@@ -1535,8 +1535,8 @@ TEST(MIPS18) {
 
     __ ldc1(f4, MemOperand(a0, OFFSET_OF(TestFloat, a)));
     __ ldc1(f8, MemOperand(a0, OFFSET_OF(TestFloat, b)));
-    __ min(D, f10, f4, f8);
-    __ max(D, f12, f4, f8);
+    __ min_d(f10, f4, f8);
+    __ max_d(f12, f4, f8);
     __ sdc1(f10, MemOperand(a0, OFFSET_OF(TestFloat, c)));
     __ sdc1(f12, MemOperand(a0, OFFSET_OF(TestFloat, d)));
     __ jr(ra);
index 8762537a5543f0196d97a3aa278df66fddd51ca9..b66554e55eee9d51bb8060c28b7f002dc5378aa8 100644 (file)
@@ -536,8 +536,8 @@ TEST(Type1) {
     COMPARE(seleqz(D, f3, f4, f5), "462520d4       seleqz.d    f3, f4, f5");
     COMPARE(selnez(D, f3, f4, f5), "462520d7       selnez.d    f3, f4, f5");
 
-    COMPARE(min(D, f3, f4, f5), "462520dc       min.d    f3, f4, f5");
-    COMPARE(max(D, f3, f4, f5), "462520de       max.d    f3, f4, f5");
+    COMPARE(min_d(f3, f4, f5), "462520dc       min.d    f3, f4, f5");
+    COMPARE(max_d(f3, f4, f5), "462520de       max.d    f3, f4, f5");
     COMPARE(rint_d(f8, f6), "4620321a       rint.d    f8, f6");
 
     VERIFY_RUN();
index 5634861e8cb41f23678b01008690fd6c4973af66..492265b2e7d508462798109c5f8288bf70f7e317 100644 (file)
@@ -683,8 +683,8 @@ TEST(Type1) {
     COMPARE(seleqz(D, f3, f4, f5), "462520d4       seleqz.d    f3, f4, f5");
     COMPARE(selnez(D, f3, f4, f5), "462520d7       selnez.d    f3, f4, f5");
 
-    COMPARE(min(D, f3, f4, f5), "462520dc       min.d    f3, f4, f5");
-    COMPARE(max(D, f3, f4, f5), "462520de       max.d    f3, f4, f5");
+    COMPARE(min_d(f3, f4, f5), "462520dc       min.d    f3, f4, f5");
+    COMPARE(max_d(f3, f4, f5), "462520de       max.d    f3, f4, f5");
     COMPARE(rint_d(f8, f6), "4620321a       rint.d    f8, f6");
     VERIFY_RUN();
   }