@@ -609,7 +609,7 @@ bool PPCRecompilerX64Gen_imlInstruction_r_r(PPCRecFunction_t* PPCRecFunction, pp
609
609
}
610
610
else
611
611
{
612
- debug_printf ( " PPCRecompilerX64Gen_imlInstruction_r_r(): Unsupported operation 0x%x\n " , imlInstruction->operation );
612
+ cemuLog_logDebug (LogType::Force, " PPCRecompilerX64Gen_imlInstruction_r_r(): Unsupported operation 0x%x\n " , imlInstruction->operation );
613
613
return false ;
614
614
}
615
615
return true ;
@@ -635,7 +635,7 @@ bool PPCRecompilerX64Gen_imlInstruction_r_s32(PPCRecFunction_t* PPCRecFunction,
635
635
}
636
636
else
637
637
{
638
- debug_printf ( " PPCRecompilerX64Gen_imlInstruction_r_s32(): Unsupported operation 0x%x\n " , imlInstruction->operation );
638
+ cemuLog_logDebug (LogType::Force, " PPCRecompilerX64Gen_imlInstruction_r_s32(): Unsupported operation 0x%x\n " , imlInstruction->operation );
639
639
return false ;
640
640
}
641
641
return true ;
@@ -894,7 +894,7 @@ bool PPCRecompilerX64Gen_imlInstruction_r_r_r(PPCRecFunction_t* PPCRecFunction,
894
894
}
895
895
else
896
896
{
897
- debug_printf ( " PPCRecompilerX64Gen_imlInstruction_r_r_r(): Unsupported operation 0x%x\n " , imlInstruction->operation );
897
+ cemuLog_logDebug (LogType::Force, " PPCRecompilerX64Gen_imlInstruction_r_r_r(): Unsupported operation 0x%x\n " , imlInstruction->operation );
898
898
return false ;
899
899
}
900
900
return true ;
@@ -1204,9 +1204,11 @@ void PPCRecompilerX64Gen_imlInstruction_r_name(PPCRecFunction_t* PPCRecFunction,
1204
1204
else if (imlInstruction->op_r_name .regR .GetBaseFormat () == IMLRegFormat::F64)
1205
1205
{
1206
1206
auto regR = _regF64 (imlInstruction->op_r_name .regR );
1207
- if (name >= PPCREC_NAME_FPR0 && name < (PPCREC_NAME_FPR0 + 32 ))
1207
+ if (name >= PPCREC_NAME_FPR_HALF && name < (PPCREC_NAME_FPR_HALF + 64 ))
1208
1208
{
1209
- x64Gen_movupd_xmmReg_memReg128 (x64GenContext, regR, REG_RESV_HCPU, offsetof (PPCInterpreter_t, fpr) + sizeof (FPR_t) * (name - PPCREC_NAME_FPR0));
1209
+ sint32 regIndex = (name - PPCREC_NAME_FPR_HALF) / 2 ;
1210
+ sint32 pairIndex = (name - PPCREC_NAME_FPR_HALF) % 2 ;
1211
+ x64Gen_movsd_xmmReg_memReg64 (x64GenContext, regR, REG_RESV_HCPU, offsetof (PPCInterpreter_t, fpr) + sizeof (FPR_t) * regIndex + pairIndex * sizeof (double ));
1210
1212
}
1211
1213
else if (name >= PPCREC_NAME_TEMPORARY_FPR0 || name < (PPCREC_NAME_TEMPORARY_FPR0 + 8 ))
1212
1214
{
@@ -1281,9 +1283,11 @@ void PPCRecompilerX64Gen_imlInstruction_name_r(PPCRecFunction_t* PPCRecFunction,
1281
1283
{
1282
1284
auto regR = _regF64 (imlInstruction->op_r_name .regR );
1283
1285
uint32 name = imlInstruction->op_r_name .name ;
1284
- if (name >= PPCREC_NAME_FPR0 && name < (PPCREC_NAME_FPR0 + 32 ))
1286
+ if (name >= PPCREC_NAME_FPR_HALF && name < (PPCREC_NAME_FPR_HALF + 64 ))
1285
1287
{
1286
- x64Gen_movupd_memReg128_xmmReg (x64GenContext, regR, REG_RESV_HCPU, offsetof (PPCInterpreter_t, fpr) + sizeof (FPR_t) * (name - PPCREC_NAME_FPR0));
1288
+ sint32 regIndex = (name - PPCREC_NAME_FPR_HALF) / 2 ;
1289
+ sint32 pairIndex = (name - PPCREC_NAME_FPR_HALF) % 2 ;
1290
+ x64Gen_movsd_memReg64_xmmReg (x64GenContext, regR, REG_RESV_HCPU, offsetof (PPCInterpreter_t, fpr) + sizeof (FPR_t) * regIndex + (pairIndex ? sizeof (double ) : 0 ));
1287
1291
}
1288
1292
else if (name >= PPCREC_NAME_TEMPORARY_FPR0 && name < (PPCREC_NAME_TEMPORARY_FPR0 + 8 ))
1289
1293
{
0 commit comments