#include #include #include #include #include "debug.h" #include "box64context.h" #include "dynarec.h" #include "emu/x64emu_private.h" #include "emu/x64run_private.h" #include "x64run.h" #include "x64emu.h" #include "box64stack.h" #include "callback.h" #include "emu/x64run_private.h" #include "x64trace.h" #include "dynarec_native.h" #include "my_cpuid.h" #include "emu/x87emu_private.h" #include "emu/x64shaext.h" #include "arm64_printer.h" #include "dynarec_arm64_private.h" #include "dynarec_arm64_functions.h" #include "dynarec_arm64_helper.h" uintptr_t dynarec64_AVX_F2_0F3A(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int ninst, vex_t vex, int* ok, int* need_epilog) { (void)ip; (void)need_epilog; uint8_t opcode = F8; uint8_t nextop, u8; uint8_t gd, ed, vd; uint8_t wback, wb1, wb2; uint8_t eb1, eb2, gb1, gb2; int32_t i32, i32_; int cacheupd = 0; int v0, v1, v2; int q0, q1, q2; int d0, d1, d2; int s0; uint64_t tmp64u; int64_t j64; int64_t fixedaddress; int unscaled; MAYUSE(wb1); MAYUSE(wb2); MAYUSE(eb1); MAYUSE(eb2); MAYUSE(gb1); MAYUSE(gb2); MAYUSE(q0); MAYUSE(q1); MAYUSE(d0); MAYUSE(d1); MAYUSE(s0); MAYUSE(j64); MAYUSE(cacheupd); rex_t rex = vex.rex; switch(opcode) { case 0xF0: INST_NAME("RORX Gd, Ed, Ib"); nextop = F8; GETGD; GETED(1); u8 = F8; u8&=rex.w?0x3f:0x1f; RORxw(gd, ed, u8); break; default: DEFAULT; } return addr; }