@@ -100,7 +100,7 @@ uintptr_t dynarecD8(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int ninst,
100100 } else {
101101 VCMP_F64 (v1 , v2 );
102102 }
103- FCOM (x1 , x2 );
103+ FCOM (x1 , x2 , x3 , x14 , v1 , v2 , ST_IS_F ( 0 ) );
104104 break ;
105105 case 0xD8 :
106106 case 0xD9 :
@@ -118,7 +118,7 @@ uintptr_t dynarecD8(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int ninst,
118118 } else {
119119 VCMP_F64 (v1 , v2 );
120120 }
121- FCOM (x1 , x2 );
121+ FCOM (x1 , x2 , x3 , x14 , v1 , v2 , ST_IS_F ( 0 ) );
122122 X87_POP_OR_FAIL (dyn , ninst , x3 );
123123 break ;
124124 case 0xE0 :
@@ -275,7 +275,7 @@ uintptr_t dynarecD8(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int ninst,
275275 VCVT_F64_F32 (d1 , s0 );
276276 VCMP_F64 (v1 , d1 );
277277 }
278- FCOM (x1 , x2 );
278+ FCOM (x1 , x2 , x3 , x14 , v1 , ST_IS_F ( 0 )? s0 : d1 , ST_IS_F ( 0 ) );
279279 break ;
280280 case 3 :
281281 INST_NAME ("FCOMP ST0, float[ED]" );
@@ -296,7 +296,7 @@ uintptr_t dynarecD8(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int ninst,
296296 VCVT_F64_F32 (d1 , s0 );
297297 VCMP_F64 (v1 , d1 );
298298 }
299- FCOM (x1 , x2 );
299+ FCOM (x1 , x2 , x3 , x14 , v1 , ST_IS_F ( 0 )? s0 : d1 , ST_IS_F ( 0 ) );
300300 X87_POP_OR_FAIL (dyn , ninst , x3 );
301301 break ;
302302 case 4 :
0 commit comments