@@ -942,12 +942,7 @@ void x87_purgecache(dynarec_rv64_t* dyn, int ninst, int next, int s1, int s2, in
942942#endif
943943 ADDI (s3 , s2 , dyn -> e .x87cache [i ]); // unadjusted count, as it's relative to real top
944944 ANDI (s3 , s3 , 7 ); // (emu->top + st)&7
945- if (cpuext .zba )
946- SH3ADD (s1 , s3 , xEmu );
947- else {
948- SLLI (s1 , s3 , 3 );
949- ADD (s1 , xEmu , s1 );
950- }
945+ ADDSL (s1 , xEmu , s3 , 3 , s1 );
951946 switch (extcache_get_current_st (dyn , ninst , st )) {
952947 case EXT_CACHE_ST_D :
953948 FSD (dyn -> e .x87reg [i ], s1 , offsetof(x64emu_t , x87 )); // save the value
@@ -1054,12 +1049,7 @@ static void x87_reflectcache(dynarec_rv64_t* dyn, int ninst, int s1, int s2, int
10541049 if (dyn -> e .x87cache [i ] != -1 ) {
10551050 ADDI (s3 , s2 , dyn -> e .x87cache [i ]);
10561051 ANDI (s3 , s3 , 7 ); // (emu->top + i)&7
1057- if (cpuext .zba )
1058- SH3ADD (s1 , s3 , xEmu );
1059- else {
1060- SLLI (s1 , s3 , 3 );
1061- ADD (s1 , xEmu , s1 );
1062- }
1052+ ADDSL (s1 , xEmu , s3 , 3 , s1 );
10631053 if (extcache_get_current_st_f (dyn , dyn -> e .x87cache [i ]) >= 0 ) {
10641054 FCVTDS (SCRATCH0 , dyn -> e .x87reg [i ]);
10651055 FSD (SCRATCH0 , s1 , offsetof(x64emu_t , x87 ));
@@ -1136,12 +1126,7 @@ int x87_get_cache(dynarec_rv64_t* dyn, int ninst, int populate, int s1, int s2,
11361126 ADDI (s2 , s2 , a );
11371127 ANDI (s2 , s2 , 7 );
11381128 }
1139- if (cpuext .zba )
1140- SH3ADD (s1 , s2 , xEmu );
1141- else {
1142- SLLI (s2 , s2 , 3 );
1143- ADD (s1 , xEmu , s2 );
1144- }
1129+ ADDSL (s1 , xEmu , s2 , 3 , s2 );
11451130 FLD (dyn -> e .x87reg [ret ], s1 , offsetof(x64emu_t , x87 ));
11461131 }
11471132 MESSAGE (LOG_DUMP , "\t-------x87 Cache for ST%d\n" , st );
@@ -1188,12 +1173,7 @@ void x87_refresh(dynarec_rv64_t* dyn, int ninst, int s1, int s2, int st)
11881173 ADDI (s2 , s2 , a );
11891174 ANDI (s2 , s2 , 7 ); // (emu->top + i)&7
11901175 }
1191- if (cpuext .zba )
1192- SH3ADD (s1 , s2 , xEmu );
1193- else {
1194- SLLI (s2 , s2 , 3 );
1195- ADD (s1 , xEmu , s2 );
1196- }
1176+ ADDSL (s1 , xEmu , s2 , 3 , s2 );
11971177 if (dyn -> e .extcache [EXTIDX (reg )].t == EXT_CACHE_ST_F ) {
11981178 FCVTDS (SCRATCH0 , reg );
11991179 FSD (SCRATCH0 , s1 , offsetof(x64emu_t , x87 ));
@@ -1231,12 +1211,7 @@ void x87_forget(dynarec_rv64_t* dyn, int ninst, int s1, int s2, int st)
12311211 ADDI (s2 , s2 , a );
12321212 ANDI (s2 , s2 , 7 ); // (emu->top + i)&7
12331213 }
1234- if (cpuext .zba )
1235- SH3ADD (s1 , s2 , xEmu );
1236- else {
1237- SLLI (s2 , s2 , 3 );
1238- ADD (s1 , xEmu , s2 );
1239- }
1214+ ADDSL (s1 , xEmu , s2 , 3 , s2 );
12401215 if (dyn -> e .extcache [EXTIDX (reg )].t == EXT_CACHE_ST_F ) {
12411216 FCVTDS (SCRATCH0 , reg );
12421217 FSD (SCRATCH0 , s1 , offsetof(x64emu_t , x87 ));
@@ -1275,12 +1250,7 @@ void x87_reget_st(dynarec_rv64_t* dyn, int ninst, int s1, int s2, int st)
12751250 ADDI (s2 , s2 , a );
12761251 AND (s2 , s2 , 7 );
12771252 }
1278- if (cpuext .zba )
1279- SH3ADD (s1 , s2 , xEmu );
1280- else {
1281- SLLI (s2 , s2 , 3 );
1282- ADD (s1 , xEmu , s2 );
1283- }
1253+ ADDSL (s1 , xEmu , s2 , 3 , s2 );
12841254 FLD (dyn -> e .x87reg [i ], s1 , offsetof(x64emu_t , x87 ));
12851255 MESSAGE (LOG_DUMP , "\t-------x87 Cache for ST%d\n" , st );
12861256 // ok
@@ -1300,12 +1270,7 @@ void x87_reget_st(dynarec_rv64_t* dyn, int ninst, int s1, int s2, int st)
13001270 int a = st - dyn -> e .x87stack ;
13011271 ADDI (s2 , s2 , a );
13021272 ANDI (s2 , s2 , 7 ); // (emu->top + i)&7
1303- if (cpuext .zba )
1304- SH3ADD (s1 , s2 , xEmu );
1305- else {
1306- SLLI (s2 , s2 , 3 );
1307- ADD (s1 , xEmu , s2 );
1308- }
1273+ ADDSL (s1 , xEmu , s2 , 3 , s2 );
13091274 FLD (dyn -> e .x87reg [ret ], s1 , offsetof(x64emu_t , x87 ));
13101275 MESSAGE (LOG_DUMP , "\t-------x87 Cache for ST%d\n" , st );
13111276}
@@ -1335,12 +1300,7 @@ void x87_free(dynarec_rv64_t* dyn, int ninst, int s1, int s2, int s3, int st)
13351300 }
13361301 ANDI (s2 , s2 , 7 ); // (emu->top + i)&7
13371302 }
1338- if (cpuext .zba )
1339- SH3ADD (s1 , s2 , xEmu );
1340- else {
1341- SLLI (s2 , s2 , 3 );
1342- ADD (s1 , xEmu , s2 );
1343- }
1303+ ADDSL (s1 , xEmu , s2 , 3 , s2 );
13441304 if (dyn -> e .extcache [EXTIDX (reg )].t == EXT_CACHE_ST_F ) {
13451305 FCVTDS (SCRATCH0 , reg );
13461306 FSD (SCRATCH0 , s1 , offsetof(x64emu_t , x87 ));
@@ -2356,12 +2316,7 @@ static void loadCache(dynarec_rv64_t* dyn, int ninst, int stack_cnt, int s1, int
23562316 }
23572317 * s3_top += a ;
23582318 * s2_val = 0 ;
2359- if (cpuext .zba )
2360- SH3ADD (s2 , s3 , xEmu );
2361- else {
2362- SLLI (s2 , s3 , 3 );
2363- ADD (s2 , xEmu , s2 );
2364- }
2319+ ADDSL (s2 , xEmu , s3 , 3 , s2 );
23652320 FLD (reg , s2 , offsetof(x64emu_t , x87 ));
23662321 if (t == EXT_CACHE_ST_F ) {
23672322 FCVTSD (reg , reg );
@@ -2433,12 +2388,7 @@ static void unloadCache(dynarec_rv64_t* dyn, int ninst, int stack_cnt, int s1, i
24332388 ANDI (s3 , s3 , 7 );
24342389 }
24352390 * s3_top += a ;
2436- if (cpuext .zba )
2437- SH3ADD (s2 , s3 , xEmu );
2438- else {
2439- SLLI (s2 , s3 , 3 );
2440- ADD (s2 , xEmu , s2 );
2441- }
2391+ ADDSL (s2 , xEmu , s3 , 3 , s2 );
24422392 * s2_val = 0 ;
24432393 if (t == EXT_CACHE_ST_F ) {
24442394 FCVTDS (reg , reg );
0 commit comments