-
Notifications
You must be signed in to change notification settings - Fork 1
/
mult4.asm
89 lines (75 loc) · 1.53 KB
/
mult4.asm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
; Copyright 1995-2009 Mersenne Research, Inc. All rights reserved
; Author: George Woltman
; Email: [email protected]
;
; This routine implements a discrete weighted transform to quickly multiply
; two numbers.
;
; This code handles FFTs that uses a scratch area in pass 1.
;
; You will not stand a chance of understanding any of this code without
; thoroughly familiarizing yourself with fast fourier transforms. This
; code was adapted from an algorithm described in Richard Crandall's article
; on Discrete Weighted Transforms and Large-Integer Arithmetic.
;
TITLE setup
.686
.XMM
.MODEL FLAT
INCLUDE unravel.mac
INCLUDE extrn.mac
INCLUDE lucas.mac
INCLUDE pfa.mac
INCLUDE mult.mac
INCLUDE pass1.mac
INCLUDE fft4.mac
INCLUDE memory.mac
EXTRN gw_finish_fft:PROC
EXTRN gw_carries:PROC
EXTRN gw_finish_mult:PROC
EXTRNP pass2_12_levels
_TEXT SEGMENT
flat_distances
;; All the FFT routines for each FFT length
;; Distance between two pass 2 data blocks. Pass 2 does 12 FFT levels.
;; 2^12 complex values = 2^13 doubles = 64KB.
blkdst = (16*(4096+64)+64)
; fft 80K
; fft 96K
; fft 96Kp
; fft 112K
; fft 128K
; fft 128Kp
; fft 160K
; fft 192K
; fft 192Kp
; fft 224K
; fft 256K
; fft 256Kp
; fft 320K
; fft 384K
; fft 384Kp
; fft 448K
; fft 512K
; fft 512Kp
INCLUDE pass1scr.mac
; fft 640K
; fft 768K
; fft 768Kp
; fft 896K
; fftclm 1024K, 2
; fft 1024Kp
fft 1280K
fft 1536K
fft 1536Kp
fft 1792K
fftclm 2048K, 2
fft 2048Kp
fftclm 2560K, 2
fftclm 3072K, 2
fftclm 3072Kp, 2
fftclm 3584K, 2
fftclm 4096K, 2
fftclm 4096Kp, 2
_TEXT ENDS
END