1 //===----------------------Hexagon builtin routine ------------------------===//
3 // The LLVM Compiler Infrastructure
5 // This file is dual licensed under the MIT and the University of Illinois Open
6 // Source Licenses. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 .macro FUNCTION_BEGIN name
14 .type \name, @function
18 .macro FUNCTION_END name
19 .size \name, . - \name
22 #define Q6_ALIAS(TAG) .global __qdsp_##TAG ; .set __qdsp_##TAG, __hexagon_##TAG
23 #define FAST_ALIAS(TAG) .global __hexagon_fast_##TAG ; .set __hexagon_fast_##TAG, __hexagon_##TAG
24 #define FAST2_ALIAS(TAG) .global __hexagon_fast2_##TAG ; .set __hexagon_fast2_##TAG, __hexagon_##TAG
26 FUNCTION_BEGIN __hexagon_divsf3
28 r2,p0 = sfrecipa(r0,r1)
30 r3 = ##0x3f800000 // 1.0
34 r3 -= sfmpy(r4,r2):lib // 1-(den/recip) yields error?
39 r2 += sfmpy(r3,r2):lib
45 r3 -= sfmpy(r4,r2):lib
46 r0 += sfmpy(r5,r2):lib
49 r2 += sfmpy(r3,r2):lib
50 r6 -= sfmpy(r0,r4):lib
53 r0 += sfmpy(r6,r2):lib
56 r5 -= sfmpy(r0,r4):lib
59 r0 += sfmpy(r5,r2,p0):scale
62 FUNCTION_END __hexagon_divsf3