cen64/vr4300
Tyler J. Stachecki 335611d617 More optimization patches from izy.
izy noticed that the branch LUT was generating memory moves
and could be replaced with an inlined function that coerces
gcc into generating a lea in its place:

  4005ac:       8d 1c 00                lea    (%rax,%rax,1),%ebx
  4005af:       c1 fb 1f                sar    $0x1f,%ebx
  4005b2:       f7 d3                   not    %ebx
(no memory access)

  4005b9:       c1 e8 1e                shr    $0x1e,%eax
  4005bc:       83 e0 01                and    $0x1,%eax
  4005bf:       44 8b 24 85 90 07 40    mov    0x400790(,%rax,4),%r12d
(original has memory access)

This ends up optimizing branch instructions quite nicely:

"You see that when you use "mask" you execute "~mask". The
compiler understands that ~(~(partial_mask)) = partial_mask
and removes both "NOTs". So in this case my version uses 2
instructions and no memory access/cache pollution."
2016-02-06 13:40:23 -05:00
..
docs Initial commit. 2014-03-08 11:12:15 -05:00
cp0.c See long description 2015-07-03 08:18:16 -04:00
cp0.h See long description 2015-07-03 08:18:16 -04:00
cp1.c See long description 2015-07-03 08:18:16 -04:00
cp1.h See long description 2015-07-03 08:18:16 -04:00
cpu.c See long description 2015-07-03 08:18:16 -04:00
cpu.h Forgot a keyword in an older commit. 2016-01-30 15:16:06 -05:00
dcache.c See long description 2015-07-03 08:18:16 -04:00
dcache.h See long description 2015-07-03 08:18:16 -04:00
decoder.c See long description 2015-07-03 08:18:16 -04:00
decoder.h Implement DCB-type stalls. 2015-07-05 08:15:04 -04:00
fault.c Implement DCB-type stalls. 2015-07-05 08:15:04 -04:00
fault.h Delay when the cache operation requires it. 2015-08-19 00:00:27 -04:00
fault.md See long description 2015-07-03 08:18:16 -04:00
functions.c More optimization patches from izy. 2016-02-06 13:40:23 -05:00
icache.c See long description 2015-07-03 08:18:16 -04:00
icache.h See long description 2015-07-03 08:18:16 -04:00
interface.c Drop in atomics (required for multithreading). 2016-01-24 22:12:30 -05:00
interface.h See long description 2015-07-03 08:18:16 -04:00
opcodes.c See long description 2015-07-03 08:18:16 -04:00
opcodes.h See long description 2015-07-03 08:18:16 -04:00
opcodes.md See long description 2015-07-03 08:18:16 -04:00
opcodes_priv.h Implement DCB-type stalls. 2015-07-05 08:15:04 -04:00
pipeline.c Try to reduce VR4300 cycle overhead as well. 2016-01-30 14:55:37 -05:00
pipeline.h Implement DCB-type stalls. 2015-07-05 08:15:04 -04:00
registers.md See long description 2015-07-03 08:18:16 -04:00
segment.c See long description 2015-07-03 08:18:16 -04:00
segment.h See long description 2015-07-03 08:18:16 -04:00
TODO.txt Add a list of TODO for the VR4300. 2014-12-19 21:16:18 -05:00