forked from len0rd/rockbox
Grayscale lib: Using a 32x32->32 bit multiplication is better on ARM, as 16x16->32 bit isn't a single instruction. Renamed the macro for pointing out that it's not necessarily 16 bit anymore, and to avoid collisions with similar macros in plugins.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11436 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
0b9e266b1e
commit
32c69452d6
4 changed files with 96 additions and 92 deletions
|
@ -113,9 +113,13 @@ void gray_ub_scroll_down(int count);
|
|||
#define _GRAY_RUNNING 0x0001 /* greyscale overlay is running */
|
||||
#define _GRAY_DEFERRED_UPDATE 0x0002 /* lcd_update() requested */
|
||||
|
||||
/* unsigned 16 bit multiplication (a single instruction on the SH) */
|
||||
#define MULU16(a, b) ((unsigned long) \
|
||||
(((unsigned short) (a)) * ((unsigned short) (b))))
|
||||
/* fast unsigned multiplication (16x16bit->32bit or 32x32bit->32bit,
|
||||
* whichever is faster for the architecture) */
|
||||
#ifdef CPU_ARM
|
||||
#define _GRAY_MULUQ(a, b) ((uint32_t) (((uint32_t) (a)) * ((uint32_t) (b))))
|
||||
#else
|
||||
#define _GRAY_MULUQ(a, b) ((uint32_t) (((uint16_t) (a)) * ((uint16_t) (b))))
|
||||
#endif
|
||||
|
||||
/* The grayscale buffer management structure */
|
||||
struct _gray_info
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue