Enlightenment CVS committal Author : vapier Project : e17 Module : libs/imlib2
Dir : e17/libs/imlib2/src/lib Modified Files: asm_blend.S asm_blend_cmod.S asm_rgba.S Added Files: asm_loadimmq.S Log Message: merge PIC-happy code by PaX/Kevin Quinn/me =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/imlib2/src/lib/asm_blend.S,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- asm_blend.S 6 Aug 2005 20:30:27 -0000 1.3 +++ asm_blend.S 10 Aug 2005 05:10:19 -0000 1.4 @@ -85,21 +85,10 @@ .type PT_(imlib_mmx_reshade_copy_rgba_to_rgba,@function) .globl PR_(imlib_mmx_reshade_copy_rgb_to_rgba) .type PT_(imlib_mmx_reshade_copy_rgb_to_rgba,@function) - -/*\ Some useful masks \*/ -m0X000000: .byte 0, 0, 0, 0, 0, 0, 255, 0 -m10000000: .byte 0, 0, 0, 0, 0, 0, 0, 1 -m00XXXXXX: .byte 255, 255, 255, 255, 255, 255, 0, 0 -mVX000000: .byte 0, 0, 0, 0, 0, 0, 255, 127 -mV0000000: .byte 0, 0, 0, 0, 0, 0, 0, 128 -m0XXX0XXX: .byte 255, 255, 255, 0, 255, 255, 255, 0 -mX000X000: .byte 0, 0, 0, 255, 0, 0, 0, 255 -m10001000: .byte 0, 0, 0, 1, 0, 0, 0, 1 -m000V0V0V: .byte 127, 0, 127, 0, 127, 0, 0, 0 -mI0000000: .byte 0, 0, 0, 0, 0, 0, 0, 64 -m0VVV0VVV: .byte 127, 127, 127, 0, 127, 127, 127, 0 -c1: .word 0x1, 0x1, 0x1, 0x1 +#include "asm_loadimmq.S" + + /*\ MMX register use: |*| %mm1 = Source value |*| %mm2 = Destination value @@ -162,7 +151,8 @@ ENTER pxor %mm4, %mm4 - movq c1, %mm5 + LOAD_IMMQ(c1, %mm5) + CLEANUP_IMMQ_LOADS(1) LOOP_START 1: @@ -218,9 +208,10 @@ ENTER pxor %mm4, %mm4 - movq m0X000000, %mm5 - movq m00XXXXXX, %mm6 - movq c1, %mm7 + LOAD_IMMQ(m0X000000, %mm5) + LOAD_IMMQ(m00XXXXXX, %mm6) + LOAD_IMMQ(c1, %mm7) + CLEANUP_IMMQ_LOADS(3) LOOP_START 1: @@ -272,8 +263,9 @@ PR_(imlib_mmx_copy_rgba_to_rgb): ENTER - movq m0XXX0XXX, %mm5 - movq mX000X000, %mm6 + LOAD_IMMQ(m0XXX0XXX, %mm5) + LOAD_IMMQ(mX000X000, %mm6) + CLEANUP_IMMQ_LOADS(2) /*\ Two at a time: last item is at %ecx = 0 \*/ subl $4, %esi @@ -342,7 +334,8 @@ PR_(imlib_mmx_copy_rgb_to_rgba): ENTER - movq mX000X000, %mm5 + LOAD_IMMQ(mX000X000, %mm5) + CLEANUP_IMMQ_LOADS(1) subl $4, %esi subl $4, %edi @@ -415,8 +408,9 @@ ENTER pxor %mm4, %mm4 - movq mVX000000, %mm5 - movq m00XXXXXX, %mm6 + LOAD_IMMQ(mVX000000, %mm5) + LOAD_IMMQ(m00XXXXXX, %mm6) + CLEANUP_IMMQ_LOADS(2) LOOP_START 1: @@ -463,7 +457,8 @@ PR_(imlib_mmx_add_copy_rgba_to_rgb): ENTER - movq m0XXX0XXX, %mm5 + LOAD_IMMQ(m0XXX0XXX, %mm5) + CLEANUP_IMMQ_LOADS(1) subl $4, %esi subl $4, %edi @@ -533,7 +528,8 @@ PR_(imlib_mmx_add_copy_rgb_to_rgba): ENTER - movq mX000X000, %mm5 + LOAD_IMMQ(mX000X000, %mm5) + CLEANUP_IMMQ_LOADS(1) subl $4, %esi subl $4, %edi @@ -613,8 +609,9 @@ ENTER pxor %mm4, %mm4 - movq mV0000000, %mm5 - movq m00XXXXXX, %mm6 + LOAD_IMMQ(mV0000000, %mm5) + LOAD_IMMQ(m00XXXXXX, %mm6) + CLEANUP_IMMQ_LOADS(2) LOOP_START 1: @@ -661,7 +658,8 @@ PR_(imlib_mmx_subtract_copy_rgba_to_rgb): ENTER - movq m0XXX0XXX, %mm5 + LOAD_IMMQ(m0XXX0XXX, %mm5) + CLEANUP_IMMQ_LOADS(1) subl $4, %esi subl $4, %edi @@ -699,7 +697,8 @@ PR_(imlib_mmx_subtract_copy_rgba_to_rgba): ENTER - movq mX000X000, %mm5 + LOAD_IMMQ(mX000X000, %mm5) + CLEANUP_IMMQ_LOADS(1) subl $4, %esi subl $4, %edi @@ -741,7 +740,8 @@ PR_(imlib_mmx_subtract_copy_rgb_to_rgba): ENTER - movq mX000X000, %mm5 + LOAD_IMMQ(mX000X000, %mm5) + CLEANUP_IMMQ_LOADS(1) subl $4, %esi subl $4, %edi @@ -780,7 +780,8 @@ ENTER pxor %mm4, %mm4 - movq m000V0V0V, %mm6 + LOAD_IMMQ(m000V0V0V, %mm6) + CLEANUP_IMMQ_LOADS(1) LOOP_START 1: @@ -823,9 +824,10 @@ ENTER pxor %mm4, %mm4 - movq mI0000000, %mm5 - movq m000V0V0V, %mm6 - movq m00XXXXXX, %mm7 + LOAD_IMMQ(mI0000000, %mm5) + LOAD_IMMQ(m000V0V0V, %mm6) + LOAD_IMMQ(m00XXXXXX, %mm7) + CLEANUP_IMMQ_LOADS(3) LOOP_START 1: @@ -875,8 +877,9 @@ ENTER pxor %mm4, %mm4 - movq m0XXX0XXX, %mm5 - movq m0VVV0VVV, %mm6 + LOAD_IMMQ(m0XXX0XXX, %mm5) + LOAD_IMMQ(m0VVV0VVV, %mm6) + CLEANUP_IMMQ_LOADS(2) subl $4, %esi subl $4, %edi @@ -939,8 +942,9 @@ ENTER pxor %mm4, %mm4 - movq m0XXX0XXX, %mm5 - movq m0VVV0VVV, %mm6 + LOAD_IMMQ(m0XXX0XXX, %mm5) + LOAD_IMMQ(m0VVV0VVV, %mm6) + CLEANUP_IMMQ_LOADS(2) subl $4, %esi subl $4, %edi @@ -1004,9 +1008,10 @@ ENTER pxor %mm4, %mm4 - movq m0XXX0XXX, %mm5 - movq m0VVV0VVV, %mm6 - movq mX000X000, %mm7 + LOAD_IMMQ(m0XXX0XXX, %mm5) + LOAD_IMMQ(m0VVV0VVV, %mm6) + LOAD_IMMQ(mX000X000, %mm7) + CLEANUP_IMMQ_LOADS(3) subl $4, %esi subl $4, %edi =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/imlib2/src/lib/asm_blend_cmod.S,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- asm_blend_cmod.S 6 Aug 2005 20:30:27 -0000 1.3 +++ asm_blend_cmod.S 10 Aug 2005 05:10:19 -0000 1.4 @@ -112,21 +112,9 @@ .type PT_(imlib_mmx_reshade_copy_rgba_to_rgba_cmod,@function) .globl PR_(imlib_mmx_reshade_copy_rgb_to_rgba_cmod) .type PT_(imlib_mmx_reshade_copy_rgb_to_rgba_cmod,@function) - -/*\ Some useful masks \*/ -m0X000000: .byte 0, 0, 0, 0, 0, 0, 255, 0 -m10000000: .byte 0, 0, 0, 0, 0, 0, 0, 1 -m00XXXXXX: .byte 255, 255, 255, 255, 255, 255, 0, 0 -mVX000000: .byte 0, 0, 0, 0, 0, 0, 255, 127 -mV0000000: .byte 0, 0, 0, 0, 0, 0, 0, 128 -m0XXX0XXX: .byte 255, 255, 255, 0, 255, 255, 255, 0 -mX000X000: .byte 0, 0, 0, 255, 0, 0, 0, 255 -m10001000: .byte 0, 0, 0, 1, 0, 0, 0, 1 -m000V0V0V: .byte 127, 0, 127, 0, 127, 0, 0, 0 -mI0000000: .byte 0, 0, 0, 0, 0, 0, 0, 64 -m0VVV0VVV: .byte 127, 127, 127, 0, 127, 127, 127, 0 -c1: .word 0x1, 0x1, 0x1, 0x1 +#include "asm_loadimmq.S" + /*\ MMX register use: |*| %mm1 = Source value |*| %mm2 = Destination value @@ -364,7 +352,8 @@ ENTER pxor %mm4, %mm4 - movq c1, %mm5 + LOAD_IMMQ(c1, %mm5) + CLEANUP_IMMQ_LOADS(1) LOOP_START 1: @@ -420,9 +409,10 @@ ENTER pxor %mm4, %mm4 - movq m0X000000, %mm5 - movq m00XXXXXX, %mm6 - movq c1, %mm7 + LOAD_IMMQ(m0X000000, %mm5) + LOAD_IMMQ(m00XXXXXX, %mm6) + LOAD_IMMQ(c1, %mm7) + CLEANUP_IMMQ_LOADS(3) LOOP_START 1: @@ -475,7 +465,8 @@ ENTER pxor %mm4, %mm4 - movq c1, %mm5 + LOAD_IMMQ(c1, %mm5) + CLEANUP_IMMQ_LOADS(1) /*\ Load alpha beforehand, as it's always amap(0xff) \*/ movzbl amap_ff, %eax @@ -519,9 +510,10 @@ ENTER pxor %mm4, %mm4 - movq m0X000000, %mm5 - movq m00XXXXXX, %mm6 - movq c1, %mm7 + LOAD_IMMQ(m0X000000, %mm5) + LOAD_IMMQ(m00XXXXXX, %mm6) + LOAD_IMMQ(c1, %mm7) + CLEANUP_IMMQ_LOADS(3) LOOP_START 1: @@ -688,8 +680,9 @@ ENTER pxor %mm4, %mm4 - movq mVX000000, %mm5 - movq m00XXXXXX, %mm6 + LOAD_IMMQ(mVX000000, %mm5) + LOAD_IMMQ(m00XXXXXX, %mm6) + CLEANUP_IMMQ_LOADS(2) LOOP_START 1: @@ -778,8 +771,9 @@ ENTER pxor %mm4, %mm4 - movq mVX000000, %mm5 - movq m00XXXXXX, %mm6 + LOAD_IMMQ(mVX000000, %mm5) + LOAD_IMMQ(m00XXXXXX, %mm6) + CLEANUP_IMMQ_LOADS(2) LOOP_START 1: @@ -826,7 +820,8 @@ PR_(imlib_mmx_add_copy_rgba_to_rgb_cmod): ENTER - movq m0XXX0XXX, %mm5 + LOAD_IMMQ(m0XXX0XXX, %mm5) + CLEANUP_IMMQ_LOADS(1) subl $4, %esi subl $4, %edi @@ -970,8 +965,9 @@ ENTER pxor %mm4, %mm4 - movq mV0000000, %mm5 - movq m00XXXXXX, %mm6 + LOAD_IMMQ(mV0000000, %mm5) + LOAD_IMMQ(m00XXXXXX, %mm6) + CLEANUP_IMMQ_LOADS(2) LOOP_START 1: @@ -1060,8 +1056,9 @@ ENTER pxor %mm4, %mm4 - movq mV0000000, %mm5 - movq m00XXXXXX, %mm6 + LOAD_IMMQ(mV0000000, %mm5) + LOAD_IMMQ(m00XXXXXX, %mm6) + CLEANUP_IMMQ_LOADS(2) LOOP_START 1: @@ -1108,7 +1105,8 @@ PR_(imlib_mmx_subtract_copy_rgba_to_rgb_cmod): ENTER - movq m0XXX0XXX, %mm5 + LOAD_IMMQ(m0XXX0XXX, %mm5) + CLEANUP_IMMQ_LOADS(1) subl $4, %esi subl $4, %edi @@ -1146,7 +1144,8 @@ PR_(imlib_mmx_subtract_copy_rgba_to_rgba_cmod): ENTER - movq mX000X000, %mm5 + LOAD_IMMQ(mX000X000, %mm5) + CLEANUP_IMMQ_LOADS(1) subl $4, %esi subl $4, %edi @@ -1188,7 +1187,8 @@ PR_(imlib_mmx_subtract_copy_rgb_to_rgba_cmod): ENTER - movq mX000X000, %mm5 + LOAD_IMMQ(mX000X000, %mm5) + CLEANUP_IMMQ_LOADS(1) subl $4, %esi subl $4, %edi @@ -1227,7 +1227,8 @@ ENTER pxor %mm4, %mm4 - movq m000V0V0V, %mm6 + LOAD_IMMQ(m000V0V0V, %mm6) + CLEANUP_IMMQ_LOADS(1) LOOP_START 1: @@ -1270,9 +1271,10 @@ ENTER pxor %mm4, %mm4 - movq mI0000000, %mm5 - movq m000V0V0V, %mm6 - movq m00XXXXXX, %mm7 + LOAD_IMMQ(mI0000000, %mm5) + LOAD_IMMQ(m000V0V0V, %mm6) + LOAD_IMMQ(m00XXXXXX, %mm7) + CLEANUP_IMMQ_LOADS(3) LOOP_START 1: @@ -1322,7 +1324,8 @@ ENTER pxor %mm4, %mm4 - movq m000V0V0V, %mm6 + LOAD_IMMQ(m000V0V0V, %mm6) + CLEANUP_IMMQ_LOADS(1) /*\ Load alpha beforehand, as it's always amap(0xff) \*/ movzbl amap_ff, %eax @@ -1365,9 +1368,10 @@ ENTER pxor %mm4, %mm4 - movq mI0000000, %mm5 - movq m000V0V0V, %mm6 - movq m00XXXXXX, %mm7 + LOAD_IMMQ(mI0000000, %mm5) + LOAD_IMMQ(m000V0V0V, %mm6) + LOAD_IMMQ(m00XXXXXX, %mm7) + CLEANUP_IMMQ_LOADS(3) LOOP_START 1: @@ -1417,8 +1421,9 @@ ENTER pxor %mm4, %mm4 - movq m0XXX0XXX, %mm5 - movq m0VVV0VVV, %mm6 + LOAD_IMMQ(m0XXX0XXX, %mm5) + LOAD_IMMQ(m0VVV0VVV, %mm6) + CLEANUP_IMMQ_LOADS(2) subl $4, %esi subl $4, %edi @@ -1481,8 +1486,9 @@ ENTER pxor %mm4, %mm4 - movq m0XXX0XXX, %mm5 - movq m0VVV0VVV, %mm6 + LOAD_IMMQ(m0XXX0XXX, %mm5) + LOAD_IMMQ(m0VVV0VVV, %mm6) + CLEANUP_IMMQ_LOADS(2) subl $4, %esi subl $4, %edi @@ -1546,8 +1552,9 @@ ENTER pxor %mm4, %mm4 - movq m0XXX0XXX, %mm5 - movq m0VVV0VVV, %mm6 + LOAD_IMMQ(m0XXX0XXX, %mm5) + LOAD_IMMQ(m0VVV0VVV, %mm6) + CLEANUP_IMMQ_LOADS(2) subl $4, %esi subl $4, %edi =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/imlib2/src/lib/asm_rgba.S,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- asm_rgba.S 6 Aug 2005 20:30:27 -0000 1.3 +++ asm_rgba.S 10 Aug 2005 05:10:19 -0000 1.4 @@ -55,16 +55,7 @@ .globl PR_(imlib_get_cpuid) .type PT_(imlib_get_cpuid,@function) -/*\ Some useful masks \*/ -m_rb: .long 0x00f800f8, 0x00f800f8 -m_r: .long 0xf800f800, 0xf800f800 -m_g6: .long 0x0000fc00, 0x0000fc00 -m_g5: .long 0x0000f800, 0x0000f800 -/*\ Multiply constants to fake two shifts at once \*/ -mul_rgb565: .long 0x20000004, 0x20000004 -mul_bgr565: .long 0x00042000, 0x00042000 -mul_rgb555: .long 0x20000008, 0x20000008 -mul_bgr555: .long 0x00082000, 0x00082000 +#include "asm_loadimmq.S" /*\ Common code \*/ /*\ Save registers, load common parameters \*/ @@ -114,18 +105,21 @@ PR_(imlib_mmx_bgr565_fast): - movq mul_bgr565, %mm7 /*\ This constant is the only difference \*/ + LOAD_IMMQ(mul_bgr565, %mm7) /*\ This constant is the only difference \*/ + CLEANUP_IMMQ_LOADS(1) jmp .rgb565_fast_entry SIZE(imlib_mmx_bgr565_fast) PR_(imlib_mmx_rgb565_fast): - movq mul_rgb565, %mm7 + LOAD_IMMQ(mul_rgb565, %mm7) + CLEANUP_IMMQ_LOADS(1) .rgb565_fast_entry: ENTER - movq m_rb, %mm5 - movq m_g6, %mm6 + LOAD_IMMQ(m_rb, %mm5) + LOAD_IMMQ(m_g6, %mm6) + CLEANUP_IMMQ_LOADS(1) LOOP_START @@ -193,18 +187,21 @@ PR_(imlib_mmx_bgr555_fast): - movq mul_bgr555, %mm7 /*\ This constant is the only difference \*/ + LOAD_IMMQ(mul_bgr555, %mm7) /*\ This constant is the only difference \*/ + CLEANUP_IMMQ_LOADS(1) jmp .rgb555_fast_entry SIZE(imlib_mmx_bgr555_fast) PR_(imlib_mmx_rgb555_fast): - movq mul_rgb555, %mm7 + LOAD_IMMQ(mul_rgb555, %mm7) + CLEANUP_IMMQ_LOADS(1) .rgb555_fast_entry: ENTER - movq m_rb, %mm5 - movq m_g5, %mm6 + LOAD_IMMQ(m_rb, %mm5) + LOAD_IMMQ(m_g5, %mm6) + CLEANUP_IMMQ_LOADS(2) LOOP_START ------------------------------------------------------- SF.Net email is Sponsored by the Better Software Conference & EXPO September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs