Software 42746 Published by

The FEX-EMU, which enables the execution of x86 and x86-64 binaries on an AArch64 host, has been updated.



FEX-2301

- ARM64
- Moves RA functions to header (048daa457)

- Arm64
- Rename GetSrcPair, GetDst, and GetSrc (bf7d0f7ed)
- Enables debug option for disassembling the JIT code (03a061339)
- Inline Syscall spill optimization (0ebb15c73)
- Optimize SVE register spilling and filling (1ab4471ef)
- Optimizing spilling and filling (9a8852f9b)
- Reduce dispatcher to 1 page (65e8bf9d7)

- VectorOps
- Simplify FADDP result merging (344ec33ba)

- Config
- Fixes global application configs (dc9737a39)

- Crypto
- Explicitly clear upper lane with VPCLMULQDQ (4c013c867)

- Dispatcher
- Calculate REG_ERR correctly using ARM ESR_EL1 (4f313f5d4)

- Frontend
- Handle 256-bit destination sizes directly (e8aa79bea)

- IR
- Handle 128-bit VInsElement with SVE (94ae2e3a9)

- LookupCache
- Use a PMR map for our Blocklinks with monotonic allocator (b7358b492)
- Optimize cache clearing and allocation (2b6a020c4)

- OpCodeDispatcher
- Optimize a case of GOT calculation (b42b4e03a)

- OpcodeDispatcher
- Handle immediate variants of VPERMILPD/VPERMILPS (3904a5264)
- Handle VMASKMOVDQU (c6297edac)
- Handle VPHSUBD/VPHSUBW (4786ddc44)
- Zip elements instead of for loop insertion in PHSUB (58ec2b2d7)
- Handle VDPPD/VDPPS (9b8c92e27)
- Handle VINSERTPS (6caf764b7)
- Handle VMOVMSKPD/VMOVMSKPS (faa81f241)
- Handle VPUNPCKHBW/VPUNPCKHWD/VPUNPCKHDQ/VPUNPCKHQDQ (64cd377e3)
- Handle VUNPCKHPD/VUNPCKHPS (138f1fc84)
- Handle VPUNPCKLBW/VPUNPCKLWD/VPUNPCKLDQ/VPUNPCKLQDQ (6bc1c3fc3)
- Handle VUNPCKLPD/VUNPCKLPS (4560c5b73)
- Handle VCVTSS2SI/VCVTTSS2SI/VCVTSD2SI/VCVTTSD2SI (4a884802f)
- Handle VCVTPD2DQ/VCVTTPD2DQ/VCVTPS2DQ/VCVTTPS2DQ (f37938576)
- Handle VPMULHRSW (82adc2f93)
- Handle VPMULHW/VPMULHUW (4a3af8d7f)
- Handle VPHMINPOSUW (9d58514f5)
- Handle VPMULDQ/VPMULUDQ (33e8f21ac)
- Handle VCMPSD/VCMPSS (cecda7bbb)
- Remove lingering debug log from VPFCMPOp (ce351282f)
- Convert runtime assert to static_assert in SHUFOps (345e9b97b)
- Handle VCMPPD/VCMPPS (0c651dd5f)
- Handle VPSRLDQ (1668db046)
- Remove unnecessary usage of VMov in VPSLLDQOp (515b3e485)
- Handle VCVTDQ2PD/VCVTDQ2PS (4aed60ee3)
- Handle VPSLLDQ (60a2fb163)
- Simplify SHA1MSG1 implementation (d0cb32960)
- Handle immediate variants of VPSRLD/VPSRLQ/VPSRLW (72a3b1827)
- Handle 128-bit AVX AES instructions (180045125)
- Handle immediate variants of VPSRAD/VPSRAW (1d9218224)
- Handle VPACKUSDW/VPACKUSWB (6e733bfc2)
- Handle VPACKSSDW/VPACKSSWB (01d22849c)
- Handle vector versions of VPSRA{D, W} (78b53bfa4)
- Handle remaining PEXTRW opcode (fabf45304)
- Handle VPMULL{D, B} (b26e4109f)
- Handle vector variants of VPSRL{D, Q, W} (ad3bf189c)
- Handle VPEXTR{B, D, Q, W}/VEXTRACTPS (c86ba7646)
- Handle immediate variants of VPSLL{D, Q, W} (c1e301a5e)
- Handle vector variants of VPSLL{D, Q, W} (58fab721b)
- Handle VPHADDW/VPHADDD (8ce6c0815)
- Handle VPMOVSXB{D, W, Q}/VPMOVSXW{D, Q}/VPMOVSXDQ/VPMOVZXB{D, W, Q}/VPMOVZXW{D, Q}/VPMOVZXDQ (dc2eaf651)
- Narrow memory access with scalar rounding operations (0e233a96f)
- Move template impl to regular function where applicable (4b891d614)
- Handle VROUNDS{D, S}/VROUNDP{D, S} (1ca356371)
- Handle VINSERTF128/VINSERTI128 (4b2164768)
- Handle VPERM2F128/VPERM2I128 (f3d0fa6f6)
- Handle VPERMQ/VPERMPD (60a45615d)
- Handle VHADDP{D, S} (ded257c92)
- Handle VPMAXS{B, D, W}/VPMAXU{B, D, W} (9de5840f7)
- Handle VPMINS{B, D, W}/VPMINU{B, D, W} (40bab6b58)
- Handle VPADDS{B, W}/VPSUBS{B, W} (98a454169)
- Handle VPADDUS{B, W}/VPSUBUS{B, W} (757602bb1)
- Handle VPSUB{B, D, Q, W} (a90067fb1)
- Handle VPSIGN{B, D, W} (1bc013d5f)
- Handle VDIVP{D, S}/VDIVS{D, S} (a07a53364)
- Handle VMULP{D, S}/VMULS{D, S} (eefcea49f)
- Handle VMAXP{D, S}/VMAXS{D, S}/VMINP{D, S}/VMINS{D, S} (d6b137e6b)
- Handle VSUBP{D, S}/ VSUBS{D, S} (db9039017)
- Handle VRCPPS/VRCPSS (293734408)
- Handle VLDDQU (03fbb923b)
- Handle VPABS{B, D, W} (a57f3a626)
- Handle VPCMPEQ{B, D, Q, W}/VPCMPGT{B, D, Q, W} (573896d0b)
- Handle VRSQRTSS/VRSQRTPS (ab14375a0)
- Handle VPBROADCAST{B, D, Q, W}/VBROADCASTI128 (ace90aac9)
- Handle VBROADCASTSD/VBROADCASTSD/VBROADCASTF128 (2123868a4)
- Handle VLDMXCSR/VSTMXCSR (b73aeb890)
- Handle VSQRTPD/VSQRTPS/VSQRTSD/VSQRTSS (d965ae03c)
- Handle VCOMISD/VCOMISS/VUCOMISD/VUCOMISS (7ac21e794)
- Handle VPAVGB/VPAVGW (a98920d4e)
- Explicitly zero upper lanes (e9aa368a6)
- Handle VADDSD/VADDSS (5ac44baa2)
- Merge HADDP/PHADD into VectorALUOp (bf86df7a6)
- Merge PAVGOp with VectorALUOp (3322f8b89)
- Merge PADDQOp, PSUBQOp, PADDSOp, PSUBSOp with VectorALUOp (9eaa45f92)
- Merge ANDNOp with VectorALUROp (4b1671860)
- Simplify VANDN (2bf7e0986)

- OpcodeHandler
- Handle VADDSUBP{D, S} (905eb015c)

- ThunkDB
- Clean up database loading (12b866c27)

- Thunks
- Fix IDE integration (16969fcda)

- ThunksDB
- Fix misspelt guest library names (e486833d7)

- X86Tables
- Restrict CVTDQ2PD and CVTTSD2SI to 64-bit memory accesses (91c00d2cb)

- Misc
- Create a new ARM64 Emitter and move JIT over to it. (ec55ecdb3)
- Initial 32-bit host thunk feature support (d5f3a091d)



Release FEX Release FEX-2301 · FEX-Emu/FEX