Linux Audio

Check our new training course

Loading...
 1/*
 2 * Copyright 2007 Analog Devices Inc.
 3 *
 4 * Licensed under the ADI BSD license or the GPL-2 (or later)
 5 */
 6
 7.align 2
 8.global ___umulsi3_highpart;
 9.type ___umulsi3_highpart, STT_FUNC;
10
11#ifdef CONFIG_ARITHMETIC_OPS_L1
12.section .l1.text
13#else
14.text
15#endif
16
17___umulsi3_highpart:
18	R2 = R1.H * R0.H, R3 = R1.L * R0.H (FU);
19	R0 = R1.L * R0.L, R1 = R1.H * R0.L (FU);
20	R0 >>= 16;
21	/* Unsigned multiplication has the nice property that we can
22	   ignore carry on this first addition.  */
23	R0 = R0 + R3;
24	R0 = R0 + R1;
25	cc = ac0;
26	R1 = cc;
27	R1 = PACK(R1.l,R0.h);
28	R0 = R1 + R2;
29	RTS;
30
31.size ___umulsi3_highpart, .-___umulsi3_highpart