about summary refs log tree commit diff stats
path: root/src/emu
diff options
context:
space:
mode:
authorYang Liu <liuyang22@iscas.ac.cn>2023-09-25 04:20:21 +0800
committerGitHub <noreply@github.com>2023-09-24 22:20:21 +0200
commitc00cd1d6271b313ea459d0b782bc392af74e1598 (patch)
tree392f37492bb8aca62ee40e747a59787e0a34a982 /src/emu
parentab65641eae5c6b6440ab7defe4b798953249a1d3 (diff)
downloadbox64-c00cd1d6271b313ea459d0b782bc392af74e1598.tar.gz
box64-c00cd1d6271b313ea459d0b782bc392af74e1598.zip
[RV64_DYNAREC] Added more support for XTheadBb extension (#989)
* Reformat

* Use TH_FF0 for LZCNT

* Reformat

* Reformat

* Added MOVBE tests

* Reformat

* Added a new REVxw macro

* Refined test24

* Refined test24

* Fix bugs

* [INTERPRETER] Fixed MOVBE

* [DYNAREC_ARM64] Fix MOVBE
Diffstat (limited to 'src/emu')
-rw-r--r--src/emu/x64run660f.c48
1 files changed, 24 insertions, 24 deletions
diff --git a/src/emu/x64run660f.c b/src/emu/x64run660f.c
index 902772e5..739c9664 100644
--- a/src/emu/x64run660f.c
+++ b/src/emu/x64run660f.c
@@ -27,19 +27,19 @@ static uint8_t ff_mult(uint8_t a, uint8_t b)
 	int retval = 0;

 

 	for(int i = 0; i < 8; i++) {

-		if((b & 1) == 1) 

+		if((b & 1) == 1)

 			retval ^= a;

-		

+

 		if((a & 0x80)) {

 			a <<= 1;

 			a  ^= 0x1b;

 		} else {

 			a <<= 1;

 		}

-		

+

 		b >>= 1;

 	}

-	

+

 	return retval;

 }

 

@@ -514,7 +514,7 @@ uintptr_t Run660F(x64emu_t *emu, rex_t rex, uintptr_t addr)
                 for(int i=1; i>=0; --i)

                     GX->sq[i] = EX->sd[i];

                 break;

-            

+

             case 0x28:  /* PMULDQ Gx, Ex */

                 nextop = F8;

                 GETEX(0);

@@ -790,15 +790,15 @@ uintptr_t Run660F(x64emu_t *emu, rex_t rex, uintptr_t addr)
                 break;

             case 0xF0: /* MOVBE Gw, Ew */

                 nextop = F8;

-                GETEX(0);

-                GETGX;

-                GX->uw[0] = __builtin_bswap16(EX->uw[0]);

+                GETED(0);

+                GETGD;

+                GD->word[0] = __builtin_bswap16(ED->word[0]);

                 break;

             case 0xF1: /* MOVBE Ew, Gw */

                 nextop = F8;

-                GETEX(0);

-                GETGX;

-                EX->uw[0] = __builtin_bswap16(GX->uw[0]);

+                GETED(0);

+                GETGD;

+                ED->word[0] = __builtin_bswap16(GD->word[0]);

                 break;

             default:

                 return 0;

@@ -1113,7 +1113,7 @@ uintptr_t Run660F(x64emu_t *emu, rex_t rex, uintptr_t addr)
                 return 0;

         }

         break;

-        

+

     GOCOND(0x40

         , nextop = F8;

         CHECK_FLAGS(emu);

@@ -1285,7 +1285,7 @@ uintptr_t Run660F(x64emu_t *emu, rex_t rex, uintptr_t addr)
         if (isnan(GX->d[1]) || isnan(EX->d[1]) || isgreater(EX->d[1], GX->d[1]))

             GX->d[1] = EX->d[1];

         break;

-        

+

     case 0x60:  /* PUNPCKLBW Gx,Ex */

         nextop = F8;

         GETEX(0);

@@ -1295,7 +1295,7 @@ uintptr_t Run660F(x64emu_t *emu, rex_t rex, uintptr_t addr)
         if(GX==EX)

             for(int i=0; i<8; ++i)

                 GX->ub[2 * i + 1] = GX->ub[2 * i];

-        else 

+        else

             for(int i=0; i<8; ++i)

                 GX->ub[2 * i + 1] = EX->ub[i];

         break;

@@ -1538,7 +1538,7 @@ uintptr_t Run660F(x64emu_t *emu, rex_t rex, uintptr_t addr)
                     } else {

                         EX->q[0] = EX->q[1] >> (tmp8u - 64);

                         EX->q[1] = 0;

-                    }                    

+                    }

                 }

                 break;

             case 6:                 /* PSLLQ Ex, Ib */

@@ -1827,7 +1827,7 @@ uintptr_t Run660F(x64emu_t *emu, rex_t rex, uintptr_t addr)
             GW->word[0] = EW->word[0];

         break;

 

-    case 0xBA:                      

+    case 0xBA:

         nextop = F8;

         switch((nextop>>3)&7) {

             case 4:                 /* BT Ew,Ib */

@@ -2096,7 +2096,7 @@ uintptr_t Run660F(x64emu_t *emu, rex_t rex, uintptr_t addr)
         GETGX;

         if(EX->q[0]>15)

             {GX->q[0] = GX->q[1] = 0;}

-        else 

+        else

             {tmp8u=EX->ub[0]; for (int i=0; i<8; ++i) GX->uw[i] >>= tmp8u;}

         break;

     case 0xD2:  /* PSRLD Gx, Ex */

@@ -2105,7 +2105,7 @@ uintptr_t Run660F(x64emu_t *emu, rex_t rex, uintptr_t addr)
         GETGX;

         if(EX->q[0]>31)

             {GX->q[0] = GX->q[1] = 0;}

-        else 

+        else

             {tmp8u=EX->ub[0]; for (int i=0; i<4; ++i) GX->ud[i] >>= tmp8u;}

         break;

     case 0xD3:  /* PSRLQ Gx, Ex */

@@ -2114,7 +2114,7 @@ uintptr_t Run660F(x64emu_t *emu, rex_t rex, uintptr_t addr)
         GETGX;

         if(EX->q[0]>63)

             {GX->q[0] = GX->q[1] = 0;}

-        else 

+        else

             {tmp8u=EX->ub[0]; for (int i=0; i<2; ++i) GX->q[i] >>= tmp8u;}

         break;

     case 0xD4:  /* PADDQ Gx,Ex */

@@ -2229,7 +2229,7 @@ uintptr_t Run660F(x64emu_t *emu, rex_t rex, uintptr_t addr)
         GETEX(0);

         GETGX;

         tmp8u=(EX->q[0]>15)?15:EX->ub[0];

-        for (int i=0; i<8; ++i) 

+        for (int i=0; i<8; ++i)

             GX->sw[i] >>= tmp8u;

         break;

     case 0xE2:  /* PSRAD Gx, Ex */

@@ -2357,7 +2357,7 @@ uintptr_t Run660F(x64emu_t *emu, rex_t rex, uintptr_t addr)
         GETGX;

         if(EX->q[0]>15)

             {GX->q[0] = GX->q[1] = 0;}

-        else 

+        else

             {tmp8u=EX->ub[0]; for (int i=0; i<8; ++i) GX->uw[i] <<= tmp8u;}

         break;

     case 0xF2:  /* PSLLD Gx, Ex */

@@ -2366,7 +2366,7 @@ uintptr_t Run660F(x64emu_t *emu, rex_t rex, uintptr_t addr)
         GETGX;

         if(EX->q[0]>31)

             {GX->q[0] = GX->q[1] = 0;}

-        else 

+        else

             {tmp8u=EX->ub[0]; for (int i=0; i<4; ++i) GX->ud[i] <<= tmp8u;}

         break;

     case 0xF3:  /* PSLLQ Gx, Ex */

@@ -2375,7 +2375,7 @@ uintptr_t Run660F(x64emu_t *emu, rex_t rex, uintptr_t addr)
         GETGX;

         if(EX->q[0]>63)

             {GX->q[0] = GX->q[1] = 0;}

-        else 

+        else

             {tmp8u=EX->ub[0]; for (int i=0; i<2; ++i) GX->q[i] <<= tmp8u;}

         break;

     case 0xF4:  /* PMULUDQ Gx,Ex */

@@ -2468,7 +2468,7 @@ uintptr_t Run660F(x64emu_t *emu, rex_t rex, uintptr_t addr)
         GX->sd[2] += EX->sd[2];

         GX->sd[3] += EX->sd[3];

         break;

-    

+

     default:

         return 0;

     }