On Sat, 31 Jul 1999, Philip Blundell wrote:
> >Any ideas how to trigger a smull from C code?
>
> Something like this:
>
> long long foo(long a, long b)
> {
> return (long long)a*(long long)b;
> }
>
> foo:
> @ args = 0, pretend = 0, frame = 0
> @ frame_needed = 0, current_function_anonymous_args = 0
> smull r2, r3, r0, r1
> mov r1, r3
> mov r0, r2
> mov pc, lr
Unfortunately, I can't get better than this with the code above:
foo:
@ args = 0, pretend = 0, frame = 0
@ frame_needed = 0, current_function_anonymous_args = 0
stmfd sp!, {r4, r5, lr}
mov r2, r1
mov r3, r2, asr #31
mov r4, r0
mov r5, r4, asr #31
mov r1, r5
mov r0, r4
ldmfd sp!, {r4, r5, lr}
b __muldi3
a and b are always promoted to long long before the multiplication takes
place... Any idea?
Nicolas Pitre, B. ing.
[EMAIL PROTECTED]
unsubscribe: body of `unsubscribe linux-arm' to [EMAIL PROTECTED]