brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.4 KiB · 7c9ae14 Raw
66 lines · plain
1//===----------------------Hexagon builtin routine ------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9	.macro FUNCTION_BEGIN name10	.text11	.p2align 512	.globl \name13	.type  \name, @function14\name:15	.endm16 17	.macro FUNCTION_END name18	.size  \name, . - \name19	.endm20 21#define Q6_ALIAS(TAG) .global __qdsp_##TAG ; .set __qdsp_##TAG, __hexagon_##TAG22#define FAST_ALIAS(TAG) .global __hexagon_fast_##TAG ; .set __hexagon_fast_##TAG, __hexagon_##TAG23#define FAST2_ALIAS(TAG) .global __hexagon_fast2_##TAG ; .set __hexagon_fast2_##TAG, __hexagon_##TAG24 25FUNCTION_BEGIN __hexagon_divsf326  {27    r2,p0 = sfrecipa(r0,r1)28    r4 = sffixupd(r0,r1)29    r3 = ##0x3f800000   // 1.030  }31  {32    r5 = sffixupn(r0,r1)33    r3 -= sfmpy(r4,r2):lib  // 1-(den/recip) yields error?34    r6 = ##0x8000000035    r7 = r336  }37  {38    r2 += sfmpy(r3,r2):lib39    r3 = r740    r6 = r541    r0 = and(r6,r5)42  }43  {44    r3 -= sfmpy(r4,r2):lib45    r0 += sfmpy(r5,r2):lib46  }47  {48    r2 += sfmpy(r3,r2):lib49    r6 -= sfmpy(r0,r4):lib50  }51  {52    r0 += sfmpy(r6,r2):lib53  }54  {55    r5 -= sfmpy(r0,r4):lib56  }57  {58    r0 += sfmpy(r5,r2,p0):scale59    jumpr r3160  }61FUNCTION_END __hexagon_divsf362 63Q6_ALIAS(divsf3)64FAST_ALIAS(divsf3)65FAST2_ALIAS(divsf3)66