This is the mail archive of the crossgcc@sources.redhat.com mailing list for the crossgcc project.
See the CrossGCC FAQ for lots more information.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
[lib_source] static inline UNS_32 fixp_mul_32u_nX( UNS_32 x, UNS_32 y, UNS_8 n ) { UNS_32 res, tmp; __asm__ __volatile__ ( "umull %0, %1, %3, %4 \n\t" "movs %0, %0, lsr %2 \n\t" "rsb %2, %2, #32 \n\t" "adc %1, %0, %1, lsl %2 \n\t" : "=&r" (tmp), "=&r" (res), "+r" (n) : "r" (x), "r" (y) ); return res; } static inline UNS_32 fixp_mul_32u_n16( UNS_32 x, UNS_32 y ) { return fixp_mul_32u_nX( x, y, 16 ); } [/lib_source]
[main_source] int_a = int_rand[0]; int_b = int_rand[1]; result = fixp_mul_32u_n16( int_a, int_b ); int_a = int_rand[2]; int_b = int_rand[3]; result = result + fixp_mul_32u_n16( int_a, int_b );
/* Loop forever */ while(1) { GPIOC->dr ^= 0x08; } [/main_source]
compiles to this (using -O1): [listing] int_a = int_rand[0]; 84ac: e59f204c ldr r2, [pc, #76] ; 8500 <main+0x344> 84b0: e8920003 ldmia r2, {r0, r1} static inline UNS_32 fixp_mul_32u_nX( UNS_32 x, UNS_32 y, UNS_8 n ) { 84b4: e3a03010 mov r3, #16 ; 0x10 UNS_32 res, tmp; __asm__ __volatile__ ( 84b8: e08ec190 umull ip, lr, r0, r1 84bc: e1b0c33c movs ip, ip, lsr r3 84c0: e2633020 rsb r3, r3, #32 ; 0x20 84c4: e0ace31e adc lr, ip, lr, lsl r3 int_b = int_rand[1]; result = fixp_mul_32u_n16( int_a, int_b ); int_a = int_rand[2]; 84c8: e2820008 add r0, r2, #8 ; 0x8 84cc: e8900003 ldmia r0, {r0, r1} static inline UNS_32 fixp_mul_32u_nX( UNS_32 x, UNS_32 y, UNS_8 n ) { 84d0: e3a03010 mov r3, #16 ; 0x10 UNS_32 res, tmp; __asm__ __volatile__ ( 84d4: e0828190 umull r8, r2, r0, r1 84d8: e1b08338 movs r8, r8, lsr r3 84dc: e2633020 rsb r3, r3, #32 ; 0x20 84e0: e0a82312 adc r2, r8, r2, lsl r3 int_b = int_rand[3]; result = result + fixp_mul_32u_n16( int_a, int_b );
/* Loop forever */ while(1) { GPIOC->dr ^= 0x08; } 84e4: e3a0232f mov r2, #-1140850688 ; 0xbc000000 84e8: e1a026c2 mov r2, r2, asr #13 84ec: e5923000 ldr r3, [r2] 84f0: e2233008 eor r3, r3, #8 ; 0x8 84f4: e5823000 str r3, [r2] 84f8: eafffffb b 84ec <main+0x330> [/listing]
-- Bryce Schober Design Engineer Dynon Avionics, Inc. www.dynonavionics.com
--- [This E-mail scanned for viruses by digiposs.com]
------ Want more information? See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/ Want to unsubscribe? Send a note to crossgcc-unsubscribe@sources.redhat.com
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |