notaz.gp2x.de
/
pcsx_rearmed.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
9b9af0d
)
drc: fix some mistake done during arm64 porting
author
notaz
<notasas@gmail.com>
Mon, 29 Nov 2021 00:10:27 +0000
(
02:10
+0200)
committer
notaz
<notasas@gmail.com>
Mon, 29 Nov 2021 00:22:02 +0000
(
02:22
+0200)
libpcsxcore/new_dynarec/assem_arm.c
patch
|
blob
|
blame
|
history
diff --git
a/libpcsxcore/new_dynarec/assem_arm.c
b/libpcsxcore/new_dynarec/assem_arm.c
index
c5c2c66
..
3267cb6
100644
(file)
--- a/
libpcsxcore/new_dynarec/assem_arm.c
+++ b/
libpcsxcore/new_dynarec/assem_arm.c
@@
-949,6
+949,14
@@
static void emit_cmovae_imm(int imm,int rt)
output_w32(0x23a00000|rd_rn_rm(rt,0,0)|armval);
}
output_w32(0x23a00000|rd_rn_rm(rt,0,0)|armval);
}
+static void emit_cmovs_imm(int imm,int rt)
+{
+ assem_debug("movmi %s,#%d\n",regname[rt],imm);
+ u_int armval;
+ genimm_checked(imm,&armval);
+ output_w32(0x43a00000|rd_rn_rm(rt,0,0)|armval);
+}
+
static void emit_cmovne_reg(int rs,int rt)
{
assem_debug("movne %s,%s\n",regname[rt],regname[rs]);
static void emit_cmovne_reg(int rs,int rt)
{
assem_debug("movne %s,%s\n",regname[rt],regname[rs]);
@@
-1521,14
+1529,6
@@
static void emit_orrne_imm(int rs,int imm,int rt)
output_w32(0x13800000|rd_rn_rm(rt,rs,0)|armval);
}
output_w32(0x13800000|rd_rn_rm(rt,rs,0)|armval);
}
-static void emit_andne_imm(int rs,int imm,int rt)
-{
- u_int armval;
- genimm_checked(imm,&armval);
- assem_debug("andne %s,%s,#%d\n",regname[rt],regname[rs],imm);
- output_w32(0x12000000|rd_rn_rm(rt,rs,0)|armval);
-}
-
static unused void emit_addpl_imm(int rs,int imm,int rt)
{
u_int armval;
static unused void emit_addpl_imm(int rs,int imm,int rt)
{
u_int armval;
@@
-2200,11
+2200,11
@@
static void c2op_ctc2_31_assemble(signed char sl, signed char temp)
static void do_mfc2_31_one(u_int copr,signed char temp)
{
emit_readword(®_cop2d[copr],temp);
static void do_mfc2_31_one(u_int copr,signed char temp)
{
emit_readword(®_cop2d[copr],temp);
- emit_
testimm(temp,0x8000); // do we need this?
- emit_
andne_imm(temp,
0,temp);
- emit_cmpimm(temp,0xf80);
- emit_andimm(temp,0xf80,temp);
- emit_cmovae_imm(0xf80,temp);
+ emit_
lsls_imm(temp,16,temp);
+ emit_
cmovs_imm(
0,temp);
+ emit_cmpimm(temp,0xf80
<<16
);
+ emit_andimm(temp,0xf80
<<16
,temp);
+ emit_cmovae_imm(0xf80
<<16
,temp);
}
static void c2op_mfc2_29_assemble(signed char tl, signed char temp)
}
static void c2op_mfc2_29_assemble(signed char tl, signed char temp)
@@
-2214,11
+2214,11
@@
static void c2op_mfc2_29_assemble(signed char tl, signed char temp)
temp = HOST_TEMPREG;
}
do_mfc2_31_one(9,temp);
temp = HOST_TEMPREG;
}
do_mfc2_31_one(9,temp);
- emit_shrimm(temp,7,tl);
+ emit_shrimm(temp,7
+16
,tl);
do_mfc2_31_one(10,temp);
do_mfc2_31_one(10,temp);
- emit_orrshr_imm(temp,2,tl);
+ emit_orrshr_imm(temp,2
+16
,tl);
do_mfc2_31_one(11,temp);
do_mfc2_31_one(11,temp);
- emit_orrsh
l_imm(temp,3
,tl);
+ emit_orrsh
r_imm(temp,-3+16
,tl);
emit_writeword(tl,®_cop2d[29]);
if (temp == HOST_TEMPREG)
host_tempreg_release();
emit_writeword(tl,®_cop2d[29]);
if (temp == HOST_TEMPREG)
host_tempreg_release();