55 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 10 .macro FUNCTION_BEGIN name11 .text12 .p2align 513 .globl \name14 .type \name, @function15\name:16 .endm17 18 .macro FUNCTION_END name19 .size \name, . - \name20 .endm21 22 23FUNCTION_BEGIN __hexagon_umodsi324 {25 r2 = cl0(r0)26 r3 = cl0(r1)27 p0 = cmp.gtu(r1,r0)28 }29 {30 r2 = sub(r3,r2)31 if (p0) jumpr r3132 }33 {34 loop0(1f,r2)35 p1 = cmp.eq(r2,#0)36 r2 = lsl(r1,r2)37 }38 .falign391:40 {41 p0 = cmp.gtu(r2,r0)42 if (!p0.new) r0 = sub(r0,r2)43 r2 = lsr(r2,#1)44 if (p1) r1 = #045 }:endloop046 {47 p0 = cmp.gtu(r2,r0)48 if (!p0.new) r0 = sub(r0,r1)49 jumpr r3150 }51FUNCTION_END __hexagon_umodsi352 53 .globl __qdsp_umodsi354 .set __qdsp_umodsi3, __hexagon_umodsi355