diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/dynarec/la64/dynarec_la64_f20f.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/dynarec/la64/dynarec_la64_f20f.c b/src/dynarec/la64/dynarec_la64_f20f.c index fcb32bdb..513cc492 100644 --- a/src/dynarec/la64/dynarec_la64_f20f.c +++ b/src/dynarec/la64/dynarec_la64_f20f.c @@ -304,6 +304,17 @@ uintptr_t dynarec64_F20F(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int VEXTRINS_D(v0, q0, 0x0); // v0[63:0] = q0[63:0] } break; + case 0x7C: + INST_NAME("HADDPS Gx, Ex"); + nextop = F8; + GETGX(q0, 1); + GETEX(q1, 0, 1); + v0 = fpu_get_scratch(dyn); + v1 = fpu_get_scratch(dyn); + VPICKEV_W(v0, q1, q0); + VPICKOD_W(v1, q1, q0); + VFADD_S(q0, v0, v1); + break; case 0xC2: INST_NAME("CMPSD Gx, Ex, Ib"); nextop = F8; |