1/*\ constants and macros for x86 assembly files. \*/ 2 3 4/*\ Constants for asm_blend.S and asm_blend_cmod.S \*/ 5/* m0X000000: .byte 0, 0, 0, 0, 0, 0, 255, 0 */ 6#define m0X000000_H 0x00FF0000 7#define m0X000000_L 0x00000000 8/* m10000000: .byte 0, 0, 0, 0, 0, 0, 0, 1 */ 9#define m10000000_H 0x01000000 10#define m10000000_L 0x00000000 11/* m00XXXXXX: .byte 255, 255, 255, 255, 255, 255, 0, 0 */ 12#define m00XXXXXX_H 0x0000FFFF 13#define m00XXXXXX_L 0xFFFFFFFF 14/* mVX000000: .byte 0, 0, 0, 0, 0, 0, 255, 127 */ 15#define mVX000000_H 0x7FFF0000 16#define mVX000000_L 0x00000000 17/* mV0000000: .byte 0, 0, 0, 0, 0, 0, 0, 128 */ 18#define mV0000000_H 0x80000000 19#define mV0000000_L 0x00000000 20/* m0XXX0XXX: .byte 255, 255, 255, 0, 255, 255, 255, 0 */ 21#define m0XXX0XXX_H 0x00FFFFFF 22#define m0XXX0XXX_L 0x00FFFFFF 23/* mX000X000: .byte 0, 0, 0, 255, 0, 0, 0, 255 */ 24#define mX000X000_H 0xFF000000 25#define mX000X000_L 0xFF000000 26/* m10001000: .byte 0, 0, 0, 1, 0, 0, 0, 1 */ 27#define m10001000_H 0x01000000 28#define m10001000_L 0x01000000 29/* m000V0V0V: .byte 127, 0, 127, 0, 127, 0, 0, 0 */ 30#define m000V0V0V_H 0x0000007F 31#define m000V0V0V_L 0x007F007F 32/* mI0000000: .byte 0, 0, 0, 0, 0, 0, 0, 64 */ 33#define mI0000000_H 0x40000000 34#define mI0000000_L 0x00000000 35/* m0VVV0VVV: .byte 127, 127, 127, 0, 127, 127, 127, 0 */ 36#define m0VVV0VVV_H 0x007F7F7F 37#define m0VVV0VVV_L 0x007F7F7F 38/* c1: .word 0x1, 0x1, 0x1, 0x1 */ 39#define c1_H 0x00010001 40#define c1_L 0x00010001 41 42 43/*\ Constants for asm_rgba.S \*/ 44/* m_rb: .long 0x00f800f8, 0x00f800f8 */ 45#define m_rb_H 0x00f800f8 46#define m_rb_L 0x00f800f8 47/* m_r: .long 0xf800f800, 0xf800f800 */ 48#define m_r_H 0xf800f800 49#define m_r_L 0xf800f800 50/* m_g6: .long 0x0000fc00, 0x0000fc00 */ 51#define m_g6_H 0x0000fc00 52#define m_g6_L 0x0000fc00 53/* m_g5: .long 0x0000f800, 0x0000f800 */ 54#define m_g5_H 0x0000f800 55#define m_g5_L 0x0000f800 56/*\ Multiply constants to fake two shifts at once \*/ 57/* mul_rgb565: .long 0x20000004, 0x20000004 */ 58#define mul_rgb565_H 0x20000004 59#define mul_rgb565_L 0x20000004 60/* mul_bgr565: .long 0x00042000, 0x00042000 */ 61#define mul_bgr565_H 0x00042000 62#define mul_bgr565_L 0x00042000 63/* mul_rgb555: .long 0x20000008, 0x20000008 */ 64#define mul_rgb555_H 0x20000008 65#define mul_rgb555_L 0x20000008 66/* mul_bgr555: .long 0x00082000, 0x00082000 */ 67#define mul_bgr555_H 0x00082000 68#define mul_bgr555_L 0x00082000 69 70 71/*\ Load an 8-byte constant to an mmx register \*/ 72#define LOAD_IMMQ(mask, reg) \ 73 pushl $mask##_H ;\ 74 pushl $mask##_L ;\ 75 movq (%esp), reg 76#define CLEANUP_IMMQ_LOADS(num_loaded) \ 77 addl $ num_loaded * 8, %esp 78