|
|
1.1 root 1: /* Ksinfcosf.s 1.3 86/01/05 */
2:
3: #include "../tahoe/SYS.h"
4:
5: .text
6: ENTRY(Kcosf, 0)
7: tstl 4(fp) # if (arg < 0)
8: jgeq L23
9: lnd 4(fp)
10: std 4(fp) # arg = -arg;
11: L23: pushl 20(fp) # hfs
12: pushl $1
13: pushl 8(fp)
14: pushl 4(fp)
15: callf $20,_sinus
16: ret # return(sinus(arg,1));
17:
18: ENTRY(Ksinf, 0)
19: pushl 20(fp) # hfs
20: pushl $0
21: pushl 8(fp)
22: pushl 4(fp)
23: callf $20,_sinus
24: ret # return(sinus(arg, 0));
25:
26: ENTRY(sinus, 0)
27: subl3 $112,fp,sp
28: movl 8(fp),-80(fp)
29: movl 4(fp),-84(fp) # x = arg;
30: jgeq L34 # if (x < 0) {
31: lnd -84(fp)
32: std -84(fp) # x = -x;
33: addl2 $2,12(fp) # quad = quad + 2;}
34: L34: pushl 16(fp)
35: ldd _twoopi
36: pushd
37: ldd -84(fp)
38: pushd
39: callf $24,_Kmuld
40: movl r1,-88(fp)
41: movl r0,-84(fp) # std -84(fp) x = x * twoopi;
42: cmpd2 -84(fp),L36 # if (x > 32764) {
43: jleq L35
44: pushl 16(fp) # hfs
45: subl3 $60,fp,-(sp) # &e
46: pushl -80(fp)
47: pushl -84(fp) # x
48: callf $20,_Kmodf
49: clrl -92+4(fp)
50: movl r0,-92(fp) # y = modf(x, &e);
51: pushl 16(fp) # hfs
52: pushl $0
53: pushl 12(fp) # quad
54: pushl $0
55: pushl $0 # dummy acc
56: callf $24,_Kcvtld
57: pushl 16(fp) # hfs
58: pushl r1
59: pushl r0 # pushd (double)quad
60: ldd -60(fp)
61: pushd # &e
62: callf $24,_Kaddd
63: movl r1,-56(fp)
64: movl r0,-60(fp) # std -60(fp) e = e + quad;
65: pushl 16(fp) # hfs
66: subl3 $68,fp,-(sp) # &f
67:
68: pushl 16(fp) # hfs
69: ldd -60(fp)
70: pushd # &e
71: ldd L37
72: pushd # 0.25
73: callf $24,_Kmuld
74:
75: pushl r1
76: pushl r0 # pushd 0.25 * e
77: callf $20,_Kmodf # modf(0.25 * e, &f);
78:
79: pushl 16(fp) # hfs
80: movl r1,-64(fp)
81: movl r0,-68(fp) # ldd -68(fp) &f
82: pushl r1
83: pushl r0 # pushd
84: ldd L38
85: pushd
86: callf $24,_Kmuld # 4*f
87: # std r0
88: pushl 16(fp) # hfs
89: pushl r1
90: pushl r0 # pushd
91: ldd -60(fp)
92: pushd
93: callf $24,_Ksubd # e - 4 * f
94: ldd r0 # load acc with result of Ksubd
95: cvdl 12(fp) # quad = (e - 4 * f); }
96: jbr L39
97: L35: ldd -84(fp) # else {
98: cvdl -96(fp) # k = x;
99: pushl 16(fp) # hfs
100: pushl $0
101: pushl -96(fp)
102: pushl $0
103: pushl $0 # acc
104: callf $24,_Kcvtld
105: # std r0
106: pushl 16(fp) # hfs
107: pushl r1
108: pushl r0 # pushd (double)k
109: ldd -84(fp)
110: pushd # x
111: callf $24,_Ksubd
112: movl r1,-88(fp)
113: movl r0,-92(fp) # std -92(fp) y = x - k;
114: addl3 -96(fp),12(fp),r0
115: andl3 $3,r0,12(fp) # quad = (quad + k) & 03; }
116: L39: bitl $1,12(fp) # if (quad & 01)
117: jeql L40
118: pushl 16(fp) # hfs
119: ldd -92(fp)
120: pushd # y
121: ldd L41
122: pushd # 1.0
123: callf $24,_Ksubd
124: movl r1,-88(fp)
125: movl r0,-92(fp) # std -92(fp) y = 1 - y;
126: L40: cmpl 12(fp),$1 # if (quad > 1)
127: jleq L42
128: lnd -92(fp)
129: std -92(fp) # y = -y;
130: L42: pushl 16(fp) # hfs
131: ldd -92(fp)
132: pushd
133: pushd
134: callf $24,_Kmuld # y*y
135: movl r1,-72(fp)
136: movl r0,-76(fp) # std -76(fp) ysq=y*y;
137:
138: pushl 16(fp) # hfs
139: ldd -76(fp)
140: pushd
141: ldd _p4
142: pushd
143: callf $24,_Kmuld # p4*ysq
144:
145: pushl 16(fp) # hfs
146: pushl _p3+4
147: pushl _p3
148: pushl r1
149: pushl r0 # pushd
150: callf $24,_Kaddd # p4*ysq+p3
151:
152: pushl 16(fp) # hfs
153: pushl -72(fp)
154: pushl -76(fp)
155: pushl r1
156: pushl r0 # pushd
157: callf $24,_Kmuld # (p4*ysq+p3)*ysq
158:
159: pushl 16(fp) # hfs
160: pushl _p2+4
161: pushl _p2
162: pushl r1
163: pushl r0 # pushd
164: callf $24,_Kaddd # (p4*ysq+p3)*ysq+p2
165:
166: pushl 16(fp) # hfs
167: pushl -72(fp)
168: pushl -76(fp)
169: pushl r1
170: pushl r0 # pushd
171: callf $24,_Kmuld # ((p4*ysq+p3)*ysq+p2)*ysq
172:
173: pushl 16(fp) # hfs
174: pushl _p1+4
175: pushl _p1
176: pushl r1
177: pushl r0 # pushd
178: callf $24,_Kaddd # ((p4*ysq+p3)*ysq+p2)*ysq+p1
179:
180: pushl 16(fp) # hfs
181: pushl -72(fp)
182: pushl -76(fp)
183: pushl r1
184: pushl r0 # pushd
185: callf $24,_Kmuld # (((p4*ysq+p3)*ysq+p2)*ysq+p1)*ysq
186:
187: pushl 16(fp) # hfs
188: pushl _p0+4
189: pushl _p0
190: pushl r1
191: pushl r0 # pushd
192: callf $24,_Kaddd # (((p4*ysq+p3)*ysq+p2)*ysq+p1)*ysq+p0
193:
194: pushl 16(fp) # hfs
195: pushl -88(fp)
196: pushl -92(fp)
197: pushl r1
198: pushl r0 # pushd
199: callf $24,_Kmuld # ((((p4*ysq+p3)*ysq+p2)*ysq+p1)*ysq+p0)*y;
200:
201: movl r1,-100(fp)
202: movl r0,-104(fp) # std -104(fp) temp1
203: ldd r0
204: cvdf
205: stf r0
206: ret#1
207:
208: .data
209: .align 2
210: _twoopi:.long 0x4022F983, 0x6E4E4415 # .double .63661977236758134
211: _p0: .long 0x40C90FDA, 0x90304197 # .double 1.57079631844
212: _p1: .long 0xC0255DE0, 0xB36CEE75 # .double -.645963710599
213: _p2: .long 0x3EA33457, 0xA736E807 # .double .079689678945999999
214: _p3: .long 0xBC992665, 0x5E9A6554 # .double -.0046737666099999999
215: _p4: .long 0x3A1ED7FA, 0xCC54924E # .double .000151485129
216: L36: .long 0x47FFF800, 0x00000000 # .double 32764
217: L37: .long 0x3F800000, 0x00000000 # .double .25
218: L38: .long 0x41800000, 0x00000000 # .double 4
219: L41: .long 0x40800000, 0x00000000 # .double 1
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.