65,66c65,66
< NPC = xc->readNextPC() + 4;
< NNPC = NPC + 4;
---
> NNPC = NPC + 8;
> NPC = NPC + 4;
79,80d78
< {
< //warn("Took branch!\n");
82d79
< }
84,85d80
< {
< //warn("Didn't take branch!\n");
87d81
< }
112,113c106,107
< NPC = xc->readNextPC() + 4;
< NNPC = NPC + 4;
---
> NNPC = NPC + 8;
> NPC = NPC + 4;
168,169c162,247
< 0x5: FailUnimpl::fbpfcc();
< 0x6: FailUnimpl::fbfcc();
---
> //fbpfcc
> 0x5: decode COND2 {
> format BranchN {
> //Branch Always
> 0x8: decode A
> {
> 0x0: fbpa(22, {{
> NNPC = xc->readPC() + disp;
> }});
> 0x1: fbpa(22, {{
> NPC = xc->readPC() + disp;
> NNPC = NPC + 4;
> }}, ',a');
> }
> //Branch Never
> 0x0: decode A
> {
> 0x0: fbpn(22, {{
> NNPC = NNPC;//Don't do anything
> }});
> 0x1: fbpn(22, {{
> NNPC = NPC + 8;
> NPC = NPC + 4;
> }}, ',a');
> }
> default: decode BPCC {
> 0x0: fbpcc0(22, {{
> if(passesFpCondition(Fsr<11:10>, COND2))
> NNPC = xc->readPC() + disp;
> else
> handle_annul
> }});
> 0x1: fbpcc1(22, {{
> if(passesFpCondition(Fsr<33:32>, COND2))
> NNPC = xc->readPC() + disp;
> else
> handle_annul
> }});
> 0x2: fbpcc2(22, {{
> if(passesFpCondition(Fsr<35:34>, COND2))
> NNPC = xc->readPC() + disp;
> else
> handle_annul
> }});
> 0x3: fbpcc3(22, {{
> if(passesFpCondition(Fsr<37:36>, COND2))
> NNPC = xc->readPC() + disp;
> else
> handle_annul
> }});
> }
> }
> }
> //fbfcc
> 0x6: decode COND2 {
> format BranchN {
> //Branch Always
> 0x8: decode A
> {
> 0x0: fba(22, {{
> NNPC = xc->readPC() + disp;
> }});
> 0x1: fba(22, {{
> NPC = xc->readPC() + disp;
> NNPC = NPC + 4;
> }}, ',a');
> }
> //Branch Never
> 0x0: decode A
> {
> 0x0: fbn(22, {{
> NNPC = NNPC;//Don't do anything
> }});
> 0x1: fbn(22, {{
> NNPC = NPC + 8;
> NPC = NPC + 4;
> }}, ',a');
> }
> default: fbfcc(22, {{
> if(passesFpCondition(Fsr<11:10>, COND2))
> NNPC = xc->readPC() + disp;
> else
> handle_annul
> }});
> }
> }
770c848
< 0x55: fcmpes({{
---
> 0x54: fcmpes({{
783c861
< 0x56: fcmped({{
---
> 0x55: fcmped({{
796c874
< 0x57: FpUnimpl::fcmpeq();
---
> 0x56: FpUnimpl::fcmpeq();