• DSP指令一览表(转


    附录6  TMS320C54x 指令系统一览表(按指令功能排列)

    原文:http://blog.163.com/byl545@126/blog/static/180522812008102171429535/

    一、算术运算指令

    1. 加法指令

    句    法

    表  达  式

    说    明

    字数

    周期

    ADD  Smem,src

    src=src+Smem

    操作数加至累加器

    1

    1

    ADD  Smem,TS,src

    src=src+Smem<<TS

    操作数移位后加至累加器

    1

    1

    ADD  Smem,16,src[,dst]

    dst=src+Smem<<16

    操作数左移16位加至累加器

    1

    1

    ADD  Smem[,SHIFT],src[,dst]

    dst=src+Smem<<SHIFT

    操作数移位后加到累加器

    2

    2

    ADD  Xmem,SHFT,src

    src=src+Xmem<<SHFT

    操作数移位后加到累加器

    1

    1

    ADD  Xmem,Ymem,dst

    dst=Xmem<<16+Ymem<<16

    两个操作数分别左移16位后加到累加器

    1

    1

    ADD  #lk[,SHFT],src[,dst]

    dst=src+#lk<<SHFT

    长立即数移位后加到累加器

    2

    2

    ADD  #lk,16,src[,dst]

    dst=src+#lk<<16

    长立即数左移16位后加到累加器

    2

    2

    ADD  src,[,SHIFT][,dst]

    dst=dst+src<<SHIFT

    累加器移位后相加

    1

    1

    ADD  src,ASM[,dst]

    dst=dst+src<<ASM

    累加器按ASM移位后相加

    1

    1

    ADDC  Smem,src

    src=src+Smem+C

    操作数带进位加至累加器

    1

    1

    ADDM  #lk,Smem

    Smem=Smem+#lk

    长立即数加至存储器

    2

    2

    ADDS  Smem,src

    src=src+uns(Smem)

    符号位不扩展的加法

    1

    1

    2. 减法指令

    句    法

    表  达  式

    说    明

    字数

    周期

    SUB  Smem,src

    src=src—Smem

    从累加器中减去操作数

    1

    1

    SUB  Smem,TS,src

    src=src—Smem<<TS

    从累加器中减去移位后的操作数

    1

    1

    SUB  Smem,16,src[,dst]

    dst=src—Smem<<16

    从累加器中减去左移16位后的操作数

    1

    1

    SUB  Smem[,SHIFT],src[,dst]

    dst=src—Smem<<SHIFT

    操作数移位后与累加器相减

    2

    2

    SUB  Xmem,SHFT,src

    src=src—Xmem<<SHFT

    操作数移位后与累加器相减

    1

    1

    SUB  Xmem,Ymem,dst

    dst=Xmem<<16—Ymem<<16

    两个操作数分别左移16位后相减

    1

    1

    SUB  #lk[,SHFT],src[,dst]

    dst=src—#1k<<SHFT

    长立即数移位后与累加器相减

    2

    2

    SUB  #lk,16,src[,dst]

    dst=src—#1k<<16

    长立即数左移16位后与累加器相减

    2

    2

    SUB  src[,SHIFT][,dst]

    dst=dst—src<<SHIFT

    源累加器移位后与目的累加器相减

    1

    1

    SUB  src,ASM[,dst]

    dst=dst—src<<ASM

    源累加器按ASM移位后与目的累加器相减

    l

    l

    SUBB  Smem,src

    src=src—Smem—C—

    从累加器中带借位减操作数

    1

    1

    SUBC  Smem,src

    If (src—Smem<<15)≥0

    src=(src—Smem<<15)<<1+1

    Else

    src=src<<l

    有条件减法

    1

    1

    SUBS  Smem,src

    src=src—uns(Smem)

    符号位不扩展的减法

    1

    1

    3. 乘法指令

    句    法

    表  达  式

    说    明

    字数

    周期

    MPY  Smem,dst

    dst=T*Smem

    T寄存器值与操作数相乘

    1

    1

    MPYR  Smem,dst

    dst=rnd(T*Smem)

    T寄存器值与操作数相乘(带舍入)

    1

    1

    MPY  Xmem,Ymem,dst

    dst=Xmem*Ymem,T=Xmem

    两个操作数相乘

    1

    1

    MPY  Smem,#lk,dst

    dst=Smem*#lk,T=Smem

    长立即数与操作数相乘

    2

    2

    MPY  #lk,dst

    dst=T*#lk

    长立即数与T寄存器值相乘

    2

    2

    MPYA  dst

    dst=T*A(32-16)

    T寄存值与累加器A高位相乘

    1

    1

    MPYA  Smem

    B=Smem*A(32-16),T=Smem

    操作数与累加器A高位相乘

    1

    1

    MPYU  Smem,dst

    dst=uns(T)*uns(Smem)

    无符号数乘法

    1

    1

    SQUR  Smem,dst

    dst=Smem*Smem,T=Smem

    操作数的平方

    1

    1

    SQUR  A,dst

    dst=A(32—16)*A(32—16)

    累加器A的高位平方

    1

    1

    4. 乘法累加/减指令

    句    法

    表  达  式

    说    明

    字数

    周期

    MAC  Smem,src

    src=src+T*Smem

    操作数与T寄存器值相乘后加到累加器

    1

    1

    MAC  Xmem,Ymem,src[,dst]

    dst=src+Xmern*Ymem,T=Xmem

    两个操作数相乘后加到累加器

    1

    1

    MAC  #lk,src[,dst]

    dst=src+T*#lk

    长立即数与T寄存器值相乘后加到累加器

    2

    2

    MAC  Smem,#lk,src[,dst]

    dst=src+Smem*#lk,T=Smem

    长立即数与操作数相乘后加到累加器

    2

    2

    MACR  Smem,src

    dst=rnd(src+T*Smem)

    操作数与T寄存器值相乘后加到累加器(带舍入)

    1

    1

    MACR  Xmem,Ymem,src[,dst]

    dst=rnd(src+Xmem*Ymem),T=Xmem

    两个操作数相乘后加到累加器(带舍入)

    1

    1

    MACA  Smem[,B]

    B=B+Smem*A(32—16),T=Smem

    操作数与累加器A高位相乘后加到累加器B

    1

    1

    MACA  T,src[,dst]

    dst=src+T*A(32—16)

    T寄存器值与累加器A高位相乘

    1

    1

    MACAR  Smem[,B]

    B=rnd(B+Smem*A(32—16)),T=Smem

    T寄存器值与累加器A高位相乘后加到累加B(带舍入)

    1

    1

    MACAR  T,src[,dst]

    dst=rnd(src+T*A(32—16))

    累加器A高位与T寄存器值相乘后与源、累加器相加(带舍入)

    1

    1

    MACD  Smem,pmad,src

    src=src+Smem*pmad,

    T=Smem,(Smem+1)=Smem

    操作数与程序存储器值相乘后累加并延迟

    2

    3

    MACP  Smem,pmad,src

    src=src+Smem*pmad,T=Smem

    操作数与程序存储器值相乘后加到累加器

    2

    3

    MACSU  Xmem,Ymem,src

    src=src+uns(Xmem)*Ymem,T=Xmem

    元符号数与有符号数相乘后加到累加器

    1

    1

    MAS  Smem,src

    src=src—T*Smem

    从累加器中减去T寄存器值与操作数的乘积

    1

    1

    MASR  Xmem,Ymem,src[,dst]

    dst=rnd(src—Xmem*Ymem),T=Xmem

    从累加器中减去两操作数的乘积(带舍入)

    1

    1

    MAS  Xmem,Ymem,src[,dst]

    dst=src—Xmem*Ymem,T=Xmem

    从源累加器中减去两操作数的乘积

    1

    1

    MASR  Smem,src

    src=rnd(src—T*Smem)

    从累加器中减去T寄存器值与操作数的乘积(带舍入)

    1

    1

    MASA  Smem[,B]

    B=B—Smem*A(32—16),T=Smem

    从累加器B中减去操作数与累加器A高位的乘积

    1

    1

    MASA  T,src[,dst]

    dst=src—T*A(32—16)

    从源累加器中减去T寄存器值与累加器A高位的乘积

    1

    1

    MASAR  T,src[,dst]

    dst=rnd(src—T*A(32—16))

    从源累加器中减去T寄存器值与累加器A高位的乘积(带舍入)

    1

    1

    SQURA  Smem,src

    src=src+Smem*Smem,T=Smem

    操作数平方并累加

    1

    1

    SQURS  Smem,src

    src=src—Smem*Smem,T=Smem

    从累加器中减去操作数的平方

    1

    1

    5. 双精度(32位操作数)指令

    句    法

    表  达  式

    说    明

    字数

    周期

    DADD  Lmem,src[,dst]

    If  C16=0

    dst=Lmem+src

    If  C16=1

    dst(39—16)=Lmem(31—16)+src(31—16)

    dst(15—0)=Lmem(15—0)+src(15—0)

    双精度/双16位数加到累加器

    1

    1

    DADST  Lmem,dst

    If  C16=0

    dst=Lmem+(T<<16+T)

    If  C16=1

    dst(39—16)=Lmem(31—16)+T

    dst(15—0)=Lmem(15—0)—T

    双精度/双16位数与T寄存器值相加/减

    1

    1

    DRSUB  Lmem,src

    If  C16=0

    src=Lmem—src

    If  C16=1

    src(39—16)=Lmem(31—16)—src(31—16)

    src(15—0)=Lmem(15—0)—src(15—0)

    双精度/双16位数中减去累加器值

    1

    1

    DSADT  Lmem,dst

    If  C16=0

    dst=Lmem—(T<<16+T)

    If  C16=1

    dst(39—16)=Lmem(31—16)—T

    dst(15—0)=Lmem(15—0)+T

    长操作数与T寄存器值相加/减

    1

    1

    DSUB  Lmem,src

    If  C16=0

    src=src—Lmem

    If  C16=1

    src(39—16)=src(31—16)—Lmem(31—16)

    src(15—0)=src(15—0)—Lmem(15—0)

    从累加器中减去双精度/双16位数

    1

    1

    DSUBT  Lmem,dst

    If  C16=0

    dst=Lmem—(T<<16+T)

    If  C16=1

    dst(39—16)=Lmem(31—16)—T

    dst(15—0)=Lmem(15—0)—T

    从长操作数中减去T寄存器值

    1

    1

    6. 专用指令

    句    法

    表  达  式

    说    明

    字数

    周期

    ABDST  Xmem,Ymem

    B=B+|A(32—16)|,A=(Xmem—Ymem)<<16

    绝对距离

    1

    1

    ABS  src[,dst]

    dst=|src|

    累加器取绝对值

    1

    1

    CMPL  src[,dst]

    dst=src———

    累加器取反

    1

    1

    DELAY  Smem

    (Smem+1)=Smem

    存储器单元延迟

    1

    1

    EXP  src

    T=number of sign bits(src)—8

    求累加器的指数

    1

    1

    FIRS  Xmem,Ymem,pmad

    B=B+A*pmad,A=(Xmem+Ymem)<<16

    对称FIR滤波

    2

    3

    LMS  Xmem,Ymem

    B=B+Xmem*Ymem,A=(A+Xmem<<16)+215

    求最小均方值

    1

    1

    MAX  dst

    dst=max(A,B)

    求累加器(A,B)最大值

    1

    1

    MIN  dst

    dst=min(A,B)

    求累加器(A,B)最小值

    1

    1

    NEG  src[,dst]

    dst=-src

    累加器变负

    1

    1

    NORM  src[,dst]

    dst=src<<TS,dst=norm(src,TS)

    归一化

    1

    1

    POLY  Smem

    B=Smem<<16,A=rnd(A*T+B)

    求多项式的值

    1

    1

    RND  src[,dst]

    dst=src+215

    累加器舍入运算

    1

    1

    SAT  src

    saturate(src)

    累加器饱和运算

    1

    1

    SQDST  Xmem,Ymem

    B=B+A(32—16)*A(32—16),A=(Xmem—Ymem)<<16

    求距离的平方

    1

    1

  • 相关阅读:
    NEC 框架规范 css reset
    NEC 工程师规范
    NEC html规范
    【bzoj2839】【集合计数】容斥原理+线性求阶乘逆元小技巧
    【bzoj1562】【[NOI2009]变换序列】匈牙利算法的性质利用
    【bzoj4808】【马】二分图最大点独立集+简单感性证明
    【hdu1150】【Machine Schedule】二分图最小点覆盖+简单感性证明
    【bzoj4950】【 [Wf2017]Mission Improbable】贪心+二分图匹配
    【bzoj4443】【[Scoi2015]小凸玩矩阵】二分+二分图最大匹配
    【bzoj1977】【严格次小生成树】倍增维护链上最大次大值
  • 原文地址:https://www.cnblogs.com/mfryf/p/2349453.html
Copyright © 2020-2023  润新知