Search
lxdream.org :: lxdream/src/sh4/sh4x86.in :: diff
lxdream 0.9.1
released Jun 29
Download Now
filename src/sh4/sh4x86.in
changeset 673:44c579439d73
prev671:a530ea88eebd
next675:b97020f9af1c
author nkeynes
date Sun May 25 21:01:55 2008 +0000 (11 years ago)
permissions -rw-r--r--
last change Count fpscr ops separately from other LDS/STS instructions
file annotate diff log raw
1.1 --- a/src/sh4/sh4x86.in Thu May 15 10:22:39 2008 +0000
1.2 +++ b/src/sh4/sh4x86.in Sun May 25 21:01:55 2008 +0000
1.3 @@ -1798,18 +1798,11 @@
1.4 /* Floating point moves */
1.5 FMOV FRm, FRn {:
1.6 COUNT_INST(I_FMOV1);
1.7 - /* As horrible as this looks, it's actually covering 5 separate cases:
1.8 - * 1. 32-bit fr-to-fr (PR=0)
1.9 - * 2. 64-bit dr-to-dr (PR=1, FRm&1 == 0, FRn&1 == 0 )
1.10 - * 3. 64-bit dr-to-xd (PR=1, FRm&1 == 0, FRn&1 == 1 )
1.11 - * 4. 64-bit xd-to-dr (PR=1, FRm&1 == 1, FRn&1 == 0 )
1.12 - * 5. 64-bit xd-to-xd (PR=1, FRm&1 == 1, FRn&1 == 1 )
1.13 - */
1.14 check_fpuen();
1.15 load_spreg( R_ECX, R_FPSCR );
1.16 TEST_imm32_r32( FPSCR_SZ, R_ECX );
1.17 JNE_rel8(doublesize);
1.18 - load_fr( R_EAX, FRm ); // PR=0 branch
1.19 + load_fr( R_EAX, FRm ); // SZ=0 branch
1.20 store_fr( R_EAX, FRn );
1.21 JMP_rel8(end);
1.22 JMP_TARGET(doublesize);
1.23 @@ -2495,14 +2488,14 @@
1.24 sh4_x86.tstate = TSTATE_NONE;
1.25 :}
1.26 LDS Rm, FPSCR {:
1.27 - COUNT_INST(I_LDS);
1.28 + COUNT_INST(I_LDSFPSCR);
1.29 check_fpuen();
1.30 load_reg( R_EAX, Rm );
1.31 call_func1( sh4_write_fpscr, R_EAX );
1.32 sh4_x86.tstate = TSTATE_NONE;
1.33 :}
1.34 LDS.L @Rm+, FPSCR {:
1.35 - COUNT_INST(I_LDS);
1.36 + COUNT_INST(I_LDSFPSCRM);
1.37 check_fpuen();
1.38 load_reg( R_EAX, Rm );
1.39 check_ralign32( R_EAX );
1.40 @@ -2760,13 +2753,13 @@
1.41 sh4_x86.tstate = TSTATE_NONE;
1.42 :}
1.43 STS FPSCR, Rn {:
1.44 - COUNT_INST(I_STS);
1.45 + COUNT_INST(I_STSFPSCR);
1.46 check_fpuen();
1.47 load_spreg( R_EAX, R_FPSCR );
1.48 store_reg( R_EAX, Rn );
1.49 :}
1.50 STS.L FPSCR, @-Rn {:
1.51 - COUNT_INST(I_STSM);
1.52 + COUNT_INST(I_STSFPSCRM);
1.53 check_fpuen();
1.54 load_reg( R_EAX, Rn );
1.55 check_walign32( R_EAX );
.