@@ -65,7 +65,7 @@ uintptr_t dynarec64_00_0(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
6565 SETFLAGS (X_ALL , SF_SET_PENDING , NAT_FLAGS_FUSION );
6666 nextop = F8 ;
6767 GETGD ;
68- GETED (0 );
68+ GETEDsd (0 );
6969 emit_add32 (dyn , ninst , rex , ed , gd , x3 , x4 , x5 );
7070 WBACK ;
7171 break ;
@@ -83,7 +83,7 @@ uintptr_t dynarec64_00_0(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
8383 INST_NAME ("ADD Gd, Ed" );
8484 SETFLAGS (X_ALL , SF_SET_PENDING , NAT_FLAGS_FUSION );
8585 nextop = F8 ;
86- GETGD ;
86+ GETGDsd ;
8787 GETED (0 );
8888 emit_add32 (dyn , ninst , rex , gd , ed , x3 , x4 , x5 );
8989 break ;
@@ -99,6 +99,7 @@ uintptr_t dynarec64_00_0(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
9999 case 0x05 :
100100 INST_NAME ("ADD EAX, Id" );
101101 SETFLAGS (X_ALL , SF_SET_PENDING , NAT_FLAGS_FUSION );
102+ MARKREGsd (xRAX );
102103 i64 = F32S ;
103104 emit_add32c (dyn , ninst , rex , xRAX , i64 , x3 , x4 , x5 , x6 );
104105 break ;
@@ -155,7 +156,7 @@ uintptr_t dynarec64_00_0(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
155156 SETFLAGS (X_ALL , SF_SET_PENDING , NAT_FLAGS_FUSION );
156157 nextop = F8 ;
157158 GETGD ;
158- GETED (0 );
159+ GETEDsd (0 );
159160 emit_or32 (dyn , ninst , rex , ed , gd , x3 , x4 );
160161 WBACK ;
161162 break ;
@@ -173,7 +174,7 @@ uintptr_t dynarec64_00_0(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
173174 INST_NAME ("OR Gd, Ed" );
174175 SETFLAGS (X_ALL , SF_SET_PENDING , NAT_FLAGS_FUSION );
175176 nextop = F8 ;
176- GETGD ;
177+ GETGDsd ;
177178 GETED (0 );
178179 emit_or32 (dyn , ninst , rex , gd , ed , x3 , x4 );
179180 break ;
@@ -189,6 +190,7 @@ uintptr_t dynarec64_00_0(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
189190 case 0x0D :
190191 INST_NAME ("OR EAX, Id" );
191192 SETFLAGS (X_ALL , SF_SET_PENDING , NAT_FLAGS_FUSION );
193+ MARKREGsd (xRAX );
192194 i64 = F32S ;
193195 emit_or32c (dyn , ninst , rex , xRAX , i64 , x3 , x4 );
194196 break ;
@@ -255,7 +257,7 @@ uintptr_t dynarec64_00_0(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
255257 SETFLAGS (X_ALL , SF_SET_PENDING , NAT_FLAGS_FUSION );
256258 nextop = F8 ;
257259 GETGD ;
258- GETED (0 );
260+ GETEDsd (0 );
259261 emit_adc32 (dyn , ninst , rex , ed , gd , x3 , x4 , x5 , x6 );
260262 WBACK ;
261263 break ;
@@ -280,7 +282,7 @@ uintptr_t dynarec64_00_0(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
280282 READFLAGS (X_CF );
281283 SETFLAGS (X_ALL , SF_SET_PENDING , NAT_FLAGS_FUSION );
282284 nextop = F8 ;
283- GETGD ;
285+ GETGDsd ;
284286 GETED (0 );
285287 emit_adc32 (dyn , ninst , rex , gd , ed , x3 , x4 , x5 , x6 );
286288 break ;
@@ -298,6 +300,7 @@ uintptr_t dynarec64_00_0(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
298300 INST_NAME ("ADC EAX, Id" );
299301 READFLAGS (X_CF );
300302 SETFLAGS (X_ALL , SF_SET_PENDING , NAT_FLAGS_FUSION );
303+ MARKREGsd (xRAX );
301304 i64 = F32S ;
302305 MOV64xw (x1 , i64 );
303306 emit_adc32 (dyn , ninst , rex , xRAX , x1 , x3 , x4 , x5 , x6 );
@@ -364,7 +367,7 @@ uintptr_t dynarec64_00_0(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
364367 SETFLAGS (X_ALL , SF_SET_PENDING , NAT_FLAGS_FUSION );
365368 nextop = F8 ;
366369 GETGD ;
367- GETED (0 );
370+ GETEDsd (0 );
368371 emit_sbb32 (dyn , ninst , rex , ed , gd , x3 , x4 , x5 );
369372 WBACK ;
370373 break ;
@@ -389,7 +392,7 @@ uintptr_t dynarec64_00_0(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
389392 READFLAGS (X_CF );
390393 SETFLAGS (X_ALL , SF_SET_PENDING , NAT_FLAGS_FUSION );
391394 nextop = F8 ;
392- GETGD ;
395+ GETGDsd ;
393396 GETED (0 );
394397 emit_sbb32 (dyn , ninst , rex , gd , ed , x3 , x4 , x5 );
395398 break ;
@@ -407,6 +410,7 @@ uintptr_t dynarec64_00_0(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
407410 INST_NAME ("SBB EAX, Id" );
408411 READFLAGS (X_CF );
409412 SETFLAGS (X_ALL , SF_SET_PENDING , NAT_FLAGS_FUSION );
413+ MARKREGsd (xRAX );
410414 i64 = F32S ;
411415 MOV64xw (x2 , i64 );
412416 emit_sbb32 (dyn , ninst , rex , xRAX , x2 , x3 , x4 , x5 );
@@ -465,7 +469,7 @@ uintptr_t dynarec64_00_0(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
465469 SETFLAGS (X_ALL , SF_SET_PENDING , NAT_FLAGS_FUSION );
466470 nextop = F8 ;
467471 GETGD ;
468- GETED (0 );
472+ GETEDsd (0 );
469473 emit_and32 (dyn , ninst , rex , ed , gd , x3 , x4 );
470474 WBACK ;
471475 break ;
@@ -482,7 +486,7 @@ uintptr_t dynarec64_00_0(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
482486 INST_NAME ("AND Gd, Ed" );
483487 SETFLAGS (X_ALL , SF_SET_PENDING , NAT_FLAGS_FUSION );
484488 nextop = F8 ;
485- GETGD ;
489+ GETGDsd ;
486490 GETED (0 );
487491 emit_and32 (dyn , ninst , rex , gd , ed , x3 , x4 );
488492 break ;
@@ -498,6 +502,7 @@ uintptr_t dynarec64_00_0(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
498502 case 0x25 :
499503 INST_NAME ("AND EAX, Id" );
500504 SETFLAGS (X_ALL , SF_SET_PENDING , NAT_FLAGS_FUSION );
505+ MARKREGsd (xRAX );
501506 i64 = F32S ;
502507 emit_and32c (dyn , ninst , rex , xRAX , i64 , x3 , x4 );
503508 break ;
@@ -516,7 +521,7 @@ uintptr_t dynarec64_00_0(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
516521 SETFLAGS (X_ALL , SF_SET_PENDING , NAT_FLAGS_FUSION );
517522 nextop = F8 ;
518523 GETGD ;
519- GETED (0 );
524+ GETEDsd (0 );
520525 emit_sub32 (dyn , ninst , rex , ed , gd , x3 , x4 , x5 );
521526 WBACK ;
522527 break ;
@@ -534,7 +539,7 @@ uintptr_t dynarec64_00_0(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
534539 INST_NAME ("SUB Gd, Ed" );
535540 SETFLAGS (X_ALL , SF_SET_PENDING , NAT_FLAGS_FUSION );
536541 nextop = F8 ;
537- GETGD ;
542+ GETGDsd ;
538543 GETED (0 );
539544 emit_sub32 (dyn , ninst , rex , gd , ed , x3 , x4 , x5 );
540545 break ;
@@ -550,6 +555,7 @@ uintptr_t dynarec64_00_0(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
550555 case 0x2D :
551556 INST_NAME ("SUB EAX, Id" );
552557 SETFLAGS (X_ALL , SF_SET_PENDING , NAT_FLAGS_FUSION );
558+ MARKREGsd (xRAX );
553559 i64 = F32S ;
554560 emit_sub32c (dyn , ninst , rex , xRAX , i64 , x2 , x3 , x4 , x5 );
555561 break ;
@@ -571,7 +577,7 @@ uintptr_t dynarec64_00_0(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
571577 SETFLAGS (X_ALL , SF_SET_PENDING , NAT_FLAGS_FUSION );
572578 nextop = F8 ;
573579 GETGD ;
574- GETED (0 );
580+ GETEDsd (0 );
575581 emit_xor32 (dyn , ninst , rex , ed , gd , x3 , x4 );
576582 if (ed != gd ) {
577583 WBACK ;
@@ -591,7 +597,7 @@ uintptr_t dynarec64_00_0(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
591597 INST_NAME ("XOR Gd, Ed" );
592598 SETFLAGS (X_ALL , SF_SET_PENDING , NAT_FLAGS_FUSION );
593599 nextop = F8 ;
594- GETGD ;
600+ GETGDsd ;
595601 GETED (0 );
596602 emit_xor32 (dyn , ninst , rex , gd , ed , x3 , x4 );
597603 break ;
@@ -607,6 +613,7 @@ uintptr_t dynarec64_00_0(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
607613 case 0x35 :
608614 INST_NAME ("XOR EAX, Id" );
609615 SETFLAGS (X_ALL , SF_SET_PENDING , NAT_FLAGS_FUSION );
616+ MARKREGsd (xRAX );
610617 i64 = F32S ;
611618 emit_xor32c (dyn , ninst , rex , xRAX , i64 , x3 , x4 );
612619 break ;
@@ -661,6 +668,7 @@ uintptr_t dynarec64_00_0(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
661668 INST_NAME ("CMP EAX, Id" );
662669 SETFLAGS (X_ALL , SF_SET_PENDING , NAT_FLAGS_FUSION );
663670 i64 = F32S ;
671+ MARKREGs (xRAX );
664672 if (i64 ) {
665673 MOV64x (x2 , i64 );
666674 emit_cmp32 (dyn , ninst , rex , xRAX , x2 , x3 , x4 , x5 , x6 );
0 commit comments