[xcc] modified opcodes for better FP decode mapping
authorAndrew Waterman <waterman@s144.Millennium.Berkeley.EDU>
Thu, 7 Oct 2010 07:55:14 +0000 (00:55 -0700)
committerAndrew Waterman <waterman@s144.Millennium.Berkeley.EDU>
Thu, 7 Oct 2010 07:55:14 +0000 (00:55 -0700)
riscv/execute.h

index fe51660d1dc91f20b5a0f7bf55af14cb067e3341..1a6e8ecf5e2706e2cddaa1ffad2101600081b0f4 100644 (file)
@@ -134,11 +134,16 @@ switch((insn.bits >> 0x19) & 0x7f)
           #include "insns/add_s.h"
           break;
         }
-        if((insn.bits & 0xfe0fffe0) == 0xd4000f00)
+        if((insn.bits & 0xfe0fffe0) == 0xd4000b00)
         {
           #include "insns/mff_s.h"
           break;
         }
+        if((insn.bits & 0xfff07fe0) == 0xd4000b80)
+        {
+          #include "insns/mtf_s.h"
+          break;
+        }
         if((insn.bits & 0xfe007fe0) == 0xd40000c0)
         {
           #include "insns/sgninjn_s.h"
@@ -216,18 +221,9 @@ switch((insn.bits >> 0x19) & 0x7f)
         }
         #include "insns/unimp.h"
       }
-      case 0x1:
-      {
-        if((insn.bits & 0xfff07fe0) == 0xd4001720)
-        {
-          #include "insns/mtf_s.h"
-          break;
-        }
-        #include "insns/unimp.h"
-      }
       case 0x6:
       {
-        if((insn.bits & 0xfe0fffe0) == 0xd4006f00)
+        if((insn.bits & 0xfe0fffe0) == 0xd4006b00)
         {
           #include "insns/mff_d.h"
           break;
@@ -262,7 +258,7 @@ switch((insn.bits >> 0x19) & 0x7f)
           #include "insns/cvtu_d_w.h"
           break;
         }
-        if((insn.bits & 0xfe0fffe0) == 0xd4006700)
+        if((insn.bits & 0xfe0fffe0) == 0xd4006b20)
         {
           #include "insns/mffl_d.h"
           break;
@@ -272,7 +268,7 @@ switch((insn.bits >> 0x19) & 0x7f)
           #include "insns/add_d.h"
           break;
         }
-        if((insn.bits & 0xfe0fffe0) == 0xd4006b00)
+        if((insn.bits & 0xfe0fffe0) == 0xd4006b40)
         {
           #include "insns/mffh_d.h"
           break;
@@ -292,6 +288,11 @@ switch((insn.bits >> 0x19) & 0x7f)
           #include "insns/sgninjn_d.h"
           break;
         }
+        if((insn.bits & 0xfe007fe0) == 0xd4006ba0)
+        {
+          #include "insns/mtflh_d.h"
+          break;
+        }
         if((insn.bits & 0xfff07fe0) == 0xd4006600)
         {
           #include "insns/cvt_d_s.h"
@@ -312,6 +313,11 @@ switch((insn.bits >> 0x19) & 0x7f)
           #include "insns/sub_d.h"
           break;
         }
+        if((insn.bits & 0xfff07fe0) == 0xd4006b80)
+        {
+          #include "insns/mtf_d.h"
+          break;
+        }
         if((insn.bits & 0xfff07fe0) == 0xd4006080)
         {
           #include "insns/sqrt_d.h"
@@ -344,20 +350,6 @@ switch((insn.bits >> 0x19) & 0x7f)
         }
         #include "insns/unimp.h"
       }
-      case 0x7:
-      {
-        if((insn.bits & 0xfe007fe0) == 0xd4007320)
-        {
-          #include "insns/mtflh_d.h"
-          break;
-        }
-        if((insn.bits & 0xfff07fe0) == 0xd4007720)
-        {
-          #include "insns/mtf_d.h"
-          break;
-        }
-        #include "insns/unimp.h"
-      }
       default:
       {
         #include "insns/unimp.h"