BENCHMARK PROGRAMS

count

set

0

 

dup

points/4

 

dc

@cos(@cvf(count)*freq)

ount

set

count+1

 

endm

 

 

org

x:coef

count

set

0

 

dup

points/4

 

dc

@sin(@cvf(count)*freq)

count

set

count+1

 

endm

 

 

endm

;end of bergsincos macro

bergorder

macro

points,bergtable,offset

 

bergorder

ident

1,3

 

 

;bergorder generates bergland order table

 

 

 

move

#>4,a

 

 

 

move

#points,r4

;points=number of points of bergtable to be

generated

 

 

 

 

 

 

move

#>points/4,b

;nitial pointer

 

 

move

#bergtable,r0

;table resides in

 

 

move

b,n0

;init offset

 

 

move

#>0,x0

 

 

 

move

x0,x:(r0)+n0

;seeds

 

 

move

#>2,x0

 

 

 

move

x0,x:(r0)+n0

 

 

 

move

#>1,x0

 

 

 

move

x0,x:(r0)+n0

 

 

 

move

#>3,x0

 

 

 

move

x0,x:(r0)

 

 

 

move

#bergtable,n0

;location of bergtable

 

 

do

#@cvi(@log(points/4)/@log(2)),_endl

 

 

move

b,x0

;x0=i+i

 

 

lsr

b

;b=i

 

 

move

b,r0

;r0=i

 

 

nop

 

 

 

 

move

a,x:(r0+n0)

;k-> bergtable

 

 

lsl

a

;k=k*2

 

 

move

a,y1

;save A content

_star

 

move

r4,a

;r4=# of points

 

 

cmp

x0,a

;x0=j, if j< points, cont

 

 

jle

_loop

 

 

 

move

x0,r0

;r0=i+i=j,b=i

 

 

move

y1,a

;recover A=k

 

 

move

x:(r0+n0),y0

;y0=bergtabl[j]

MOTOROLA

BENCHMARK PROGRAMS

B - 21

Page 583
Image 583
Motorola 24-Bit Digital Signal Processor, DSP56000 manual Benchmark Programs