linux/arch/hexagon/lib/udivsi3.S
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0-only */
   2/*
   3 * Copyright (c) 2021, The Linux Foundation. All rights reserved.
   4 */
   5
   6#include <linux/linkage.h>
   7
   8SYM_FUNC_START(__hexagon_udivsi3)
   9        {
  10                r2 = cl0(r0)
  11                r3 = cl0(r1)
  12                r5:4 = combine(#1,#0)
  13                p0 = cmp.gtu(r1,r0)
  14        }
  15        {
  16                r6 = sub(r3,r2)
  17                r4 = r1
  18                r1:0 = combine(r0,r4)
  19                if (p0) jumpr r31
  20        }
  21        {
  22                r3:2 = vlslw(r5:4,r6)
  23                loop0(1f,r6)
  24        }
  25        .falign
  261:
  27        {
  28                p0 = cmp.gtu(r2,r1)
  29                if (!p0.new) r1 = sub(r1,r2)
  30                if (!p0.new) r0 = add(r0,r3)
  31                r3:2 = vlsrw(r3:2,#1)
  32        }:endloop0
  33        {
  34                p0 = cmp.gtu(r2,r1)
  35                if (!p0.new) r0 = add(r0,r3)
  36                jumpr r31
  37        }
  38SYM_FUNC_END(__hexagon_udivsi3)
  39