bde 4172610070 Further unobfuscate the method of drawing the mouse cursor in vga planar
mode.

Don't manually unroll the 2 inner loops.  On Haswell, doing so gave a
speedup of about 0.5% (about 4 cycles per iteration out of 1400), but
hard-coded a limit of width 9 and made better better optimizations
harder to see.  gcc-4.2.1 -O does the unrolling anyway, unless tricked
with a volatile hack.  gcc's unrolling is not very good and gives a
a speedup of about half as much (about 2 cycles per iteration).  (All
timing on i386.)

Manual unrolling was only feasible because the inner loop only iterates
once or twice.  Usually twice, but a dynamic check is needed to decide,
and was not moved from the second-innermost loop manually or by gcc.
This commit basically adds another dynamic check in the inner loop.

Cursor widths of 10-17 require 3 iterations in the inner loop and this
is not so easy to unroll -- even gcc stops at 2.
2017-04-14 12:03:34 +00:00
..
2017-04-14 02:24:02 +00:00
2017-04-14 08:27:42 +00:00
2017-01-28 02:22:15 +00:00
2017-01-16 03:03:47 +00:00
2016-05-03 03:41:25 +00:00
2016-08-09 19:32:06 +00:00
2016-10-25 16:28:30 +00:00
2017-02-23 16:18:57 +00:00
2017-04-07 16:15:50 +00:00
2017-04-06 17:08:59 +00:00
2016-05-03 03:41:25 +00:00
2017-02-23 15:30:21 +00:00
2016-05-03 03:41:25 +00:00
2016-05-03 03:41:25 +00:00
2017-03-14 20:57:54 +00:00
2016-11-17 14:43:13 +00:00
2016-05-03 03:41:25 +00:00
2017-01-28 02:22:15 +00:00
2017-02-28 23:42:47 +00:00
2016-07-21 15:48:41 +00:00
2017-04-14 02:33:26 +00:00
2017-02-06 11:37:20 +00:00
2016-05-03 03:41:25 +00:00
2016-05-03 03:41:25 +00:00
2017-02-28 23:42:47 +00:00
2017-03-01 05:18:43 +00:00
2016-05-03 03:41:25 +00:00
2016-03-22 06:24:52 +00:00
2016-05-03 03:41:25 +00:00
2017-03-27 07:02:27 +00:00
2017-02-10 01:04:11 +00:00
2017-04-14 08:11:50 +00:00
2017-01-28 02:22:15 +00:00
2016-05-03 03:41:25 +00:00
2017-02-28 23:42:47 +00:00
2016-05-03 03:41:25 +00:00
2016-05-03 03:41:25 +00:00
2017-01-23 21:09:27 +00:00
2017-01-28 02:22:15 +00:00
2017-04-14 07:27:23 +00:00
2016-05-03 03:41:25 +00:00
2017-02-28 23:42:47 +00:00
2016-05-03 03:41:25 +00:00
2016-09-22 22:51:11 +00:00
2017-02-28 23:42:47 +00:00
2017-01-28 02:22:15 +00:00
2016-05-03 03:41:25 +00:00
2016-10-17 10:20:38 +00:00
2016-05-03 03:41:25 +00:00
2017-03-30 22:43:32 +00:00
2016-05-03 03:41:25 +00:00
2017-02-23 18:15:04 +00:00
2016-05-03 03:41:25 +00:00
2017-02-28 23:42:47 +00:00
2016-05-03 03:41:25 +00:00
2016-03-01 17:47:32 +00:00
2016-05-03 03:41:25 +00:00
2016-05-03 03:41:25 +00:00
2017-04-06 22:21:49 +00:00
2016-05-03 03:41:25 +00:00
2016-05-03 03:41:25 +00:00
2016-03-01 17:47:32 +00:00
2016-02-18 01:24:10 +00:00
2016-05-02 16:47:28 +00:00
2016-05-02 16:47:28 +00:00
2016-12-30 16:26:54 +00:00
2016-05-03 03:41:25 +00:00
2016-05-03 03:41:25 +00:00