math: Remove bogus math implementations
[glibc.git] / sysdeps / alpha / div.S
blobef67bcf2a0ecb25dc559ef60a3f4a06f245bfa8b
1 /* Copyright (C) 1996-2024 Free Software Foundation, Inc.
2    This file is part of the GNU C Library.
4    The GNU C Library is free software; you can redistribute it and/or
5    modify it under the terms of the GNU Lesser General Public
6    License as published by the Free Software Foundation; either
7    version 2.1 of the License, or (at your option) any later version.
9    The GNU C Library is distributed in the hope that it will be useful,
10    but WITHOUT ANY WARRANTY; without even the implied warranty of
11    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12    Lesser General Public License for more details.
14    You should have received a copy of the GNU Lesser General Public
15    License along with the GNU C Library.  If not, see
16    <https://www.gnu.org/licenses/>.  */
18 #include "div_libc.h"
20 #undef FRAME
21 #ifdef __alpha_fix__
22 #define FRAME 0
23 #else
24 #define FRAME 16
25 #endif
27         .set noat
29         .align 4
30         .globl div
31         .ent div
32 div:
33         .frame sp, FRAME, ra
34 #if FRAME > 0
35         lda     sp, -FRAME(sp)
36 #endif
37 #ifdef PROF
38         .set    macro
39         ldgp    gp, 0(pv)
40         lda     AT, _mcount
41         jsr     AT, (AT), _mcount
42         .set    nomacro
43         .prologue 1
44 #else
45         .prologue 0
46 #endif
48         beq     $18, $divbyzero
49         excb
50         mf_fpcr $f10
52         _ITOFT2 $17, $f0, 0, $18, $f1, 8
54         cvtqt   $f0, $f0
55         cvtqt   $f1, $f1
56         divt/c  $f0, $f1, $f0
57         cvttq/c $f0, $f0
58         excb
59         mt_fpcr $f10
60         _FTOIT  $f0, $0, 0
62         mull    $0, $18, $1
63         subl    $17, $1, $1
65         stl     $0, 0(a0)
66         stl     $1, 4(a0)
67         mov     a0, v0
69 #if FRAME > 0
70         lda     sp, FRAME(sp)
71 #endif
72         ret
74 $divbyzero:
75         mov     a0, v0
76         lda     a0, GEN_INTDIV
77         call_pal PAL_gentrap
78         stl     zero, 0(v0)
79         stl     zero, 4(v0)
81 #if FRAME > 0
82         lda     sp, FRAME(sp)
83 #endif
84         ret
86         .end div