Commit Graph

321 Commits

Author SHA1 Message Date
Denis Drakhnia 177922ca64 e2k: Split ALC decode/generate stages. 2022-06-10 11:48:18 +03:00
Denis Drakhnia 99280ddade e2k: Fix movxc. 2022-06-10 11:48:18 +03:00
Denis Drakhnia 00a4284abb e2k: Reorg fcomb ops. 2022-06-10 11:48:18 +03:00
Denis Drakhnia 1caf8cf356 e2k: Reorg icomb ops. 2022-06-10 11:48:18 +03:00
Alibek Omarov dd64dfa134 e2k: %pfpfr write stubs 2022-06-10 11:48:18 +03:00
Alibek Omarov 400947bba3 e2k: implement fsqrttd/fxsqrttxx through ignoring what fsqrtid/fxsqrt{i,u}xx does 2022-06-10 11:48:18 +03:00
Denis Drakhnia 65675ac1cf e2k: Check address before MOVA memory read. 2022-06-10 11:48:18 +03:00
Denis Drakhnia cf04412feb e2k: Do not align mova addr. 2022-06-10 11:48:18 +03:00
Denis Drakhnia a37964a9d3 e2k: Fix fcomb operand ordering. 2022-06-10 11:48:18 +03:00
Denis Drakhnia b166b260da e2k: Impl neg src2 in fscale{s,d} and fxscalesx. 2022-06-10 11:48:18 +03:00
Denis Drakhnia 399416a0d7 e2k: Allow to execute frcps, fsqrts, frsqrts. 2022-06-10 11:48:18 +03:00
Denis Drakhnia f018f02a5b e2k: Add movt{,c}{s,d,q} ops. 2022-06-10 11:48:18 +03:00
Denis Drakhnia 6277820c04 e2k: Add fscale{s,d} and fxscalesx ops. 2022-06-10 11:48:18 +03:00
Denis Drakhnia 7c4ff94e5f e2k: Impl basic init thread support. 2022-06-10 11:48:18 +03:00
Alibek Omarov 73b99e75c2 e2k: add fxtoi{s,d}{,tr} and i{s,d}tofx instructions 2022-06-10 11:48:18 +03:00
Alibek Omarov ac964b4826 e2k: add stringified opcodes 2022-06-10 11:48:18 +03:00
Denis Drakhnia 732033c341 e2k: Fix mova{b,h,w} reg tag write. 2022-06-10 11:48:18 +03:00
Denis Drakhnia 9354896d9c e2k: Fix insfd. 2022-06-10 11:48:18 +03:00
Denis Drakhnia 2536956da6 e2k: Fix getf{s,d}. 2022-06-10 11:48:18 +03:00
Denis Drakhnia 7dde6cc100 e2k: ecnt must not decrement if vlc is not set. 2022-06-10 11:48:18 +03:00
Denis Drakhnia 38ef61024d e2k: Fix incorrect epilogue counter decrement. 2022-06-10 11:48:18 +03:00
Denis Drakhnia 9e8c927036 e2k: Add delayed window bounds static/dynamic checks. 2022-06-10 11:48:18 +03:00
Alibek Omarov f56cad7923 e2k: implement detecting ISA version by ELF flags, throw an error for protected mode and x86 recompiled binaries for now 2022-06-10 11:48:18 +03:00
Denis Drakhnia 23a0139ee6 e2k: Remove control.c 2022-06-10 11:48:17 +03:00
Denis Drakhnia 0b7f461be7 e2k: Remove pshtp and window base. 2022-06-10 11:48:17 +03:00
Denis Drakhnia 9e79810b32 e2k: Fix incorrect restore from a breakpoint. 2022-06-10 11:48:17 +03:00
Alibek Omarov 9f39901e0a e2k: implement plog_* instructions 2022-06-10 11:48:17 +03:00
Alibek Omarov 380a6384e0 e2k: add pf{mul,add,sub,div,min,max}d instructions 2022-06-10 11:48:17 +03:00
Denis Drakhnia 3b03e60115 e2k: Disable debug restore checks if not needed.
Do not check illtag if not needed.
2022-06-10 11:48:17 +03:00
Denis Drakhnia 89aa3a80c1 e2k: Remove {GET,SET}_FIELD macros. 2022-06-10 11:48:17 +03:00
Denis Drakhnia 53bb2d49eb e2k: Small performance improvements.
Do not initialize alops_map for every tb.
Reduced alops size.
Delayed window bounds checks.
2022-06-10 11:48:17 +03:00
Denis Drakhnia 5aa3d47668 e2k: Fix decoding of ALES2/5. 2022-06-10 11:48:17 +03:00
Denis Drakhnia 562df00e27 e2k: Aaincr must be executed outside of the staa pred cond. 2022-06-10 11:48:17 +03:00
Denis Drakhnia 28aafb053c e2k: Restore usage of env CRs.
Fixes syscall e2k_longjmp2.
2022-06-10 11:48:17 +03:00
Denis Drakhnia ce88afe251 e2k: Add movx{,a,c} instr. 2022-06-10 11:48:17 +03:00
Denis Drakhnia d37ee639b1 e2k: Add {u,s}{div,mod}x instrs. 2022-06-10 11:48:17 +03:00
Denis Drakhnia acc2f18f97 e2k: Add mpsadbh instr. 2022-06-10 11:48:17 +03:00
Denis Drakhnia d2b6bb3f9c e2k: Add phminposuh instr. 2022-06-10 11:48:17 +03:00
Denis Drakhnia 2e0f2dce66 e2k: Add pmulhrsh instr. 2022-06-10 11:48:17 +03:00
Denis Drakhnia 9440e28b68 e2k: Add psign{b,h,w} instrs. 2022-06-10 11:48:17 +03:00
Denis Drakhnia 780ccf14ab e2k: Add phadd{,s}{h,w} and phsub{,s}{h,w} instrs. 2022-06-10 11:48:17 +03:00
Denis Drakhnia e33a9d258b e2k: Add packuswh instr. 2022-06-10 11:48:17 +03:00
Denis Drakhnia 8c318f6306 e2k: Add pmulubhh instr. 2022-06-10 11:48:17 +03:00
Denis Drakhnia 0b7c8d2650 e2k: Add pshufh instr. 2022-06-10 11:48:17 +03:00
Denis Drakhnia 8606e02150 e2k: Add punpck{l,h}{bh,hw,wd} instrs. 2022-06-10 11:48:17 +03:00
Denis Drakhnia 06471fe869 e2k: Add pshufw instr. 2022-06-10 11:48:17 +03:00
Denis Drakhnia dc9b17e91a e2k: Add packsshb, packushb and packsswh instrs. 2022-06-10 11:48:17 +03:00
Denis Drakhnia b9d7c5874a e2k: Add pmovmskps and pmovmskpd instrs. 2022-06-10 11:48:17 +03:00
Denis Drakhnia c998387f79 e2k: Add pextrh instr. 2022-06-10 11:48:17 +03:00
Denis Drakhnia 7b06c53816 e2k: Add pinsh instr. 2022-06-10 11:48:17 +03:00
Denis Drakhnia 7fa077d557 e2k: Add pmulhh, pmulhuh and pmullh instrs. 2022-06-10 11:48:17 +03:00
Denis Drakhnia e777b64356 e2k: Add pavgus{b,h} instrs. 2022-06-10 11:48:17 +03:00
Denis Drakhnia 0335773d70 e2k: Add pandd, pandnd, pord and pxord instrs. 2022-06-10 11:48:17 +03:00
Denis Drakhnia 83c06a7807 e2k: Add psadbw instr. 2022-06-10 11:48:17 +03:00
Denis Drakhnia 0a7e3625e9 e2k: Add pmadd{h,ubsh} instrs. 2022-06-10 11:48:17 +03:00
Denis Drakhnia 7cb77dbe33 e2k: Add psra{h,w} instrs. 2022-06-10 11:48:16 +03:00
Denis Drakhnia c559bfb032 e2k: Add quad shifts instrs with 8-bit immediate. 2022-06-10 11:48:16 +03:00
Denis Drakhnia a074d1d1ad e2k: Add packed shift inters. 2022-06-10 11:48:16 +03:00
Denis Drakhnia d233d8afa5 e2k: Add packed add and sub using saturation. 2022-06-10 11:48:16 +03:00
Denis Drakhnia 034ceec4e7 e2k: Add padd{b,h,w} and psub{b,h,w} instrs. 2022-06-10 11:48:16 +03:00
Denis Drakhnia 3fb4bcec13 e2k: Add pcmp{eq,gt}{b,h,w,d} instrs. 2022-06-10 11:48:16 +03:00
Denis Drakhnia e4e22e089c e2k: Prepare to remove CRs from env. 2022-06-10 11:48:16 +03:00
Denis Drakhnia 06df1e9168 e2k: Impl e2k_longjmp2 syscall. 2022-06-10 11:48:16 +03:00
Alibek Omarov db26409a33 e2k: fix dumb mistake in fcomb 64 instructions 2022-06-10 11:48:16 +03:00
Alibek Omarov 1a73a97771 e2k: add fstoifs and fdtoifd instrs 2022-06-10 11:48:16 +03:00
Alibek Omarov 3e98a47b0a e2k: add whole class of packed min & max 2022-06-10 11:48:16 +03:00
Alibek Omarov 27defe956a e2k: partially refactor helper header 2022-06-10 11:48:16 +03:00
Denis Drakhnia 142104fd89 e2k: Reorg alc. 2022-06-10 11:48:16 +03:00
Alibek Omarov 6f463100cc e2k: implement f{,x}cmp{op}{s,d,x}f instructions 2022-06-10 11:48:16 +03:00
Alibek Omarov 7f3dbf0c0d e2k: elbrus by default have extended precision, set it 2022-06-10 11:48:16 +03:00
Denis Drakhnia 5f665e70ae e2k: Decode/execute ct cond after alc execution. 2022-06-10 11:48:16 +03:00
Denis Drakhnia dae0735e36 e2k: Fix address generation in mova instrs. 2022-06-10 11:48:16 +03:00
Denis Drakhnia 67413ad340 e2k: Fix fcmp{op}{s,d}b instructions. 2022-06-10 11:48:16 +03:00
Denis Drakhnia b9691deedb e2k: Change pred type to TCGv_i32 in e2k_gen_store_preg. 2022-06-10 11:48:16 +03:00
Denis Drakhnia fb1c8adcc7 e2k: Invalidate mlock after each instruction. 2022-06-10 11:48:16 +03:00
Denis Drakhnia 6633770b16 e2k: Fix operands order in icomb. 2022-06-10 11:48:16 +03:00
Denis Drakhnia 7a667b7ba5 target: e2k: Add short, ext, ext1, ext2 alops table. 2022-06-10 11:48:16 +03:00
Alibek Omarov 3607137905 e2k: add fcmp{op} instructions that write into normal register 2022-06-10 11:48:16 +03:00
Denis Drakhnia 1c16338c6d target: e2k: Correctly save/restore wdbl. 2022-06-10 11:48:16 +03:00
Denis Drakhnia 94f7599a54 target: e2k: Execute load on flush cache MAS. 2022-06-10 11:48:16 +03:00
Alibek Omarov ed20953a35 e2k: fpu: implement float combined instrs 2022-06-10 11:48:16 +03:00
Alibek Omarov 66293fd843 e2k: helper_fpu: fix various compiler warnings 2022-06-10 11:48:16 +03:00
Alibek Omarov cee5be3c9c e2k: add fxcmp{op}{type}b instructions 2022-06-10 11:48:16 +03:00
Denis Drakhnia 797c661d91 target: e2k: Rename alc execute fns. 2022-06-10 11:48:16 +03:00
Denis Drakhnia 60faf17466 target: e2k: HACK: Unlock mem addr forces %MLOCK condition. 2022-06-10 11:48:16 +03:00
Denis Drakhnia 126b8b310c target: e2k: Add basic FX instrs. 2022-06-10 11:48:15 +03:00
Denis Drakhnia 3796f54bad target: e2k: Add movfi/movif instrs. 2022-06-10 11:48:15 +03:00
Denis Drakhnia 5883b53088 target: e2k: Move fpcr/fpsr to state reg helpers. 2022-06-10 11:48:15 +03:00
Denis Drakhnia d5737b0927 target: e2k: Add get_src{1,2}_i80 funcs. 2022-06-10 11:48:15 +03:00
Denis Drakhnia c05dcc12d4 target: e2k: Add xreg read/write functions. 2022-06-10 11:48:15 +03:00
Denis Drakhnia 1a52b6054b target: e2k: Add temps for FX/SIMD ops. 2022-06-10 11:48:15 +03:00
Denis Drakhnia 8881486b62 target: e2k: Remove rptr and tptr from state. 2022-06-10 11:48:15 +03:00
Alibek Omarov c52d9f9af9 target: e2k: set disas isa version 2022-06-10 11:48:15 +03:00
Alibek Omarov 2c4f847a0f target: e2k: fdiv has opc2 == 1, as well as additional fadd, fsub, fmul on e2k-v4. Fix SIGILL not generated when opce2 unrecognized for float conversion instructions 2022-06-10 11:48:15 +03:00
Alibek Omarov b888c75194 target: e2k: add conversion instructions, handle float comparison with predicate result instrs 2022-06-10 11:48:15 +03:00
Alibek Omarov ebb2b2485f target: e2k: add basic fpu instructions 2022-06-10 11:48:15 +03:00
Denis Drakhnia 21b39b8206 target: e2k: Delete hack for saving USD registers on proc call/ret. 2022-06-10 11:48:15 +03:00
Denis Drakhnia 245359c6f6 target: e2k: Add psubd instr. 2022-06-10 11:48:15 +03:00
Denis Drakhnia a2ac544dde target: e2k: Fix address generation in staa. 2022-06-10 11:48:15 +03:00
Denis Drakhnia bcc311b773 target: e2k: Fix udivs exception hack. 2022-06-10 11:48:15 +03:00