⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 discrete cosine transform.txt

📁 c6000的标准函数库
💻 TXT
📖 第 1 页 / 共 5 页
字号:
        CLR     .S2     B_k1c0,     0,15,       B_c ; Prolog collapse: 0x10000
||      MV      .L1X    B_c3c5,     A_c3c5          ; Twin constant register
||      STH     .D2T1   Av_F5t,     *+B_o_ptr  [16]             ;[29,4] (v)

        MV      .L1X    B15,        A15             ; Twin stack pointer
||      MVC     .S2X    A2,         IRP             ; Restore IRP
||      STH     .D2T1   Av_F2t,     *-B_o_ptr  [ 8]             ;[27,4] (v)
;-

        ADD     .L1     A_f3,       A_f4,       A_h0            ;[ 8,1]
||      ADD     .S2     B_f2,       B_f5,       B_h1            ;[ 8,1]
||      SUB     .L2     B_f2,       B_f5,       B_g3            ;[ 9,1]
||      LDW     .D2T1   *B15[3],    A_o

        SUB     .L1     A_f3,       A_f4,       A_q1            ;[ 9,1] q1=g2
||      ADD     .L2     B_f1,       B_f6t,      B_g1            ;[ 9,1]
||      SUB     .S2     B_f1,       B_f6t,      B_h3            ;[ 9,1]
||      SHR     .S1     A_f7,       16,         A_f7
;-
; =========================== PIPE LOOP KERNEL ============================ ;
h_loop:
  [!B_c]STH     .D1T2   B_F0t,      *+A_io_ptr[ 9]              ;[20,1]
||      MPY     .M1     A_Q0,       A_c3c5,     A_c5Q0          ;[20,1]
||      MPYLH   .M2     B_S0,       B_c3c5,     B_c3S0          ;[20,1]
||      ADD     .S1X    A_c7Q1,     B_c1S1,     A_F1            ;[20,1]
||      SUB     .S2X    B_c7S1,     A_c1Q1,     B_F7            ;[20,1]
||      ADD     .L1     A_f0,       A_f7,       A_g0            ;[10,2]
||      ADD     .D2     B_h3,       B_g3,       B_s0a           ;[10,2]
||      SUB     .L2     B_h3,       B_g3,       B_q0a           ;[10,2]
;-
h_loop_1:
        ADD     .L2     B_F7,       B_k_rnd,    B_F7r           ;[21,1]
||[!B_c]STH     .D2T1   A_F6t,      *+B_io_ptr[22]              ;[21,1]
||      SUB     .S2     B_g1,       B_h1,       B_r1            ;[11,2]
||      MPYSU   .M2     B_s0a,      B_k1c0,     B_s0b           ;[11,2]
||      MPYSU   .M1X    B_q0a,      A_k1c0,     A_q0b           ;[11,2]
||      ADD     .S1     A_g0,       A_h0,       A_p0            ;[11,2]
||      SUB     .L1     A_g0,       A_h0,       A_r0            ;[11,2]
||      LDH     .D1T2   *-A_io_ptr  [ 2],       B_f5            ;[ 1,3]
;-
h_loop_2:
        SUB     .S2X    B_c3S0,     A_c5Q0,     B_F3            ;[22,1]
||      ADD     .S1X    A_c3Q0,     B_c5S0,     A_F5            ;[22,1]
||      ADD     .L1     A_F1,       A_k_rnd,    A_F1r           ;[22,1]
||      MPYH    .M2     B_F7r,      B_k1c0,     B_F7t           ;[22,1]
||      ADD     .L2     B_g1,       B_h1,       B_p1            ;[12,2]
||      MPY     .M1     A_r0,       A_c2c6,     A_c6r0          ;[12,2]
||      LDH     .D1T1   *-A_io_ptr  [ 4],       A_f3            ;[ 2,3]
||      LDH     .D2T2   *+B_io_ptr  [ 2],       B_f2            ;[ 2,3]
;-
h_loop_3:
        ADD     .S2     B_F3,       B_k_rnd,    B_F3r           ;[23,1]
||      SUB     .S1X    A_p0,       B_p1,       A_F4            ;[13,2]
||      ADD     .L1     A_q0b,      A_k_rnd,    A_q0c           ;[13,2]
||      ADD     .L2     B_s0b,      B_k_rnd,    B_s0c           ;[13,2]
||      MPYLH   .M2X    B_r1,       A_c2c6,     B_c2r1          ;[13,2]
||      MPYLH   .M1     A_r0,       A_c2c6,     A_c2r0          ;[13,2]
||      LDH     .D2T1   *+B_io_ptr  [ 4],       A_f4            ;[ 3,3]
||      LDH     .D1T2   *-A_io_ptr  [ 1],       B_f6            ;[ 3,3]
;-
h_loop_4:
        ADD     .L1     A_F5,       A_k_rnd,    A_F5r           ;[24,1]
||      SHR     .S2     B_F3r,      16,         B_F3t           ;[24,1]
||[ A_o]B       .S1     h_loop                                  ;[24,1]
||      ADD     .L2X    A_p0,       B_p1,       B_F0            ;[14,2]
||      MPYH    .M2     B_s0c,      B_k1c0,     B_s0            ;[14,2]
||      MPYH    .M1     A_q0c,      A_k1c0,     A_q0            ;[14,2]
||      LDH     .D1T1   * A_io_ptr--[ 8],       A_f7            ;[ 4,3]
||      LDH     .D2T2   *+B_io_ptr  [ 1],       B_f1            ;[ 4,3]
;-
h_loop_5:
        ADD     .S2     B_F2,       B_k_rnd,    B_F2r           ;[25,1]
||      MPYH    .M1     A_F1r,      A_k1c0,     A_F1t           ;[25,1]
||      ADD     .D1     A_F4,       4,          A_F4r           ;[15,2]
||      SUB     .S1X    A_c6r0,     B_c2r1,     A_F6            ;[15,2]
||      SUB     .L1     A_f0,       A_f7,       A_s1            ;[15,2] s1=h2
||      ADD     .L2     B_F0,       6,          B_F0r           ;[15,2]
||      MPY     .M2X    B_r1,       A_c2c6,     B_c6r1          ;[15,2]
||      LDH     .D2T1   * B_io_ptr--[ 8],       A_f0            ;[ 5,3]
;-
h_loop_6:
        SHR     .S1     A_F5r,      16,         A_F5t           ;[26,1]
||      SHR     .S2     B_F2r,      16,         B_F2t           ;[26,1]
||[!B_c]STH     .D2T2   B_F3t,      *+B_io_ptr[27]              ;[26,1]
||      SUB     .L1     A_q1,       A_q0,       A_Q0            ;[16,2]
||      ADD     .L2X    A_s1,       B_s0,       B_S1            ;[16,2]
||      ADD     .D1     A_q1,       A_q0,       A_Q1            ;[16,2]
||      MPYUS   .M2     B_c,        2,          B_c             ;pro. collapse
||      MPYHL   .M1X    B_c,        A_c2c6,     A_c             ;pro. collapse
;-
h_loop_7:
  [!B_c]STH     .D1T1   A_F5t,      *+A_io_ptr[22]              ;[27,1]
||[!B_c]STH     .D2T2   B_F2t,      *+B_io_ptr[26]              ;[27,1]
||      ADD     .L1     A_F6,       A_k_rnd,    A_F6r           ;[17,2]
||      SHR     .S2     B_F0r,      3,          B_F0t           ;[17,2]
||      SHR     .S1     A_F4r,      3,          A_F4t           ;[17,2]
||      SUB     .L2X    A_s1,       B_s0,       B_S0            ;[17,2]
||      MPY     .M2     B_S1,       B_c1c7,     B_c7S1          ;[17,2]
||      MPY     .M1X    A_Q1,       B_c1c7,     A_c7Q1          ;[17,2]
;-
h_loop_8:
  [!A_c]STH     .D1T1   A_F1t,      *+A_io_ptr[18]              ;[28,1]
||[!A_c]STH     .D2T2   B_F7t,      *+B_io_ptr[31]              ;[28,1]
||      SHR     .S1     A_F6r,      16,         A_F6t           ;[18,2]
||      ADD     .L2X    B_c6r1,     A_c2r0,     B_F2            ;[18,2]
||      MPYLH   .M2     B_S1,       B_c1c7,     B_c1S1          ;[18,2]
||      MPYLH   .M1X    A_Q1,       B_c1c7,     A_c1Q1          ;[18,2]
||      ADD     .L1     A_f3,       A_f4,       A_h0            ;[ 8,3]
||      ADD     .S2     B_f2,       B_f5,       B_h1            ;[ 8,3]
;-
h_loop_9:
  [ A_o]SUB     .S1     A_o,        1,          A_o             ;[19,2]
||[!B_c]STH     .D1T1   A_F4t,      *+A_io_ptr[13]              ;[19,2]
||      MPYLH   .M1     A_Q0,       A_c3c5,     A_c3Q0          ;[19,2]
||      MPY     .M2     B_S0,       B_c3c5,     B_c5S0          ;[19,2]
||      SUB     .L1     A_f3,       A_f4,       A_q1            ;[ 9,3] q1=g2
||      ADD     .L2     B_f1,       B_f6,       B_g1            ;[ 9,3]
||      SUB     .D2     B_f1,       B_f6,       B_h3            ;[ 9,3]
||      SUB     .S2     B_f2,       B_f5,       B_g3            ;[ 9,3]
; =========================== PIPE LOOP EPILOG ============================ ;
; EPILOG:
;-
* ========================================================================= *
*   Epilog / Final Cleanup Code.                                            *
*                                                                           *
*   This code performs the final stores from the epilog while retoring      *
*   Save-On-Entry values from the stack.  The two processes are heavily     *
*   interwoven in the interest of speed.  For instance, the return addr.    *
*   is loaded immediately and branched to as soon as it lands in the        *
*   register file.  Meanwhile, the final epilog stores complete as the      *
*   return-branch is taken.                                                 *
*                                                                           *
*   Note that a handful of symbolic names have been reassigned in the       *
*   epilog to avoid interfering with the values being loaded from the       *
*   stack.                                                                  *
* ========================================================================= *
        .asg            B5,         B_F7t
        .asg            B9,         B_F2r
        .asg            B8,         B_F3
        .asg            B8,         B_F3r
        .asg            A9,         A_F5t

        MPY     .M1     A_Q0,       A_c3c5,     A_c5Q0
||      MPYLH   .M2     B_S0,       B_c3c5,     B_c3S0
||      ADD     .S1X    A_c7Q1,     B_c1S1,     A_F1
||      SUB     .S2X    B_c7S1,     A_c1Q1,     B_F7
||      ADD     .L2     B_F2,       B_k_rnd,    B_F2r
||      LDW     .D2T1   *+ B15[ 2], A0              ; Load CSR's value
||      LDW     .D1T2   *+ A15[ 5], B3              ; Load return address
;-
        ADD     .L2     B_F7,       B_k_rnd,    B_F7r
||      ADD     .L1     A_F1,       A_k_rnd,    A_F1r
||      LDW     .D2T2   *+ B15[ 8], B11             ; Restore B11
||      LDW     .D1T1   *+ A15[13], A13             ; Restore A13

        MPYH    .M2     B_F7r,      B_k1c0,     B_F7t
||      MPYH    .M1     A_F1r,      A_k1c0,     A_F1t
||      LDW     .D1T2   *+ A15[ 6], B10             ; Restore B10
||      LDW     .D2T1   *+ B15[ 7], A10             ; Restore A10
;-
        ADD     .S1X    A_c3Q0,     B_c5S0,     A_F5
||      SUB     .S2X    B_c3S0,     A_c5Q0,     B_F3
||      LDW     .D1T2   *+ A15[14], B14             ; Restore B14
||      LDW     .D2T1   *+ B15[15], A14             ; Restore A14

        ADD     .L2     B_F3,       B_k_rnd,    B_F3r
||      ADD     .L1     A_F5,       A_k_rnd,    A_F5r
||      LDW     .D1T2   *+ A15[10], B12             ; Restore B12
||      LDW     .D2T1   *+ B15[11], A12             ; Restore A12
;-
        B       .S2     B3                          ; Return to caller
||      LDW     .D2T1   *+ B15[12], A11             ; Restore A11

        SHR     .S2     B_F3r,      16,         B_F3t
||      LDW     .D2T1   *++B15[16], A15             ; Rst. A15, release stack
||      LDW     .D1T2   *+ A15[ 9], B13             ; Restore B13

        STH     .D1T1   A_F1t,      *+A_io_ptr[10]
||      STH     .D2T2   B_F7t,      *+B_io_ptr[23]
||      SHR     .S1     A_F5r,      16,         A_F5t
;-
        STH     .D2T1   A_F6t,      *+B_io_ptr[22]
||      STH     .D1T2   B_F0t,      *+A_io_ptr[ 9]

        SHR     .S2     B_F2r,      16,         B_F2t
||      STH     .D2T2   B_F3t,      *+B_io_ptr[19]

        STH     .D1T1   A_F5t,      *+A_io_ptr[14]
||      STH     .D2T2   B_F2t,      *+B_io_ptr[18]
||      MVC     .S2X    A0,         CSR             ; Restore CSR
;-
; ===== Interruptibility state restored here =====
; ===== Branch Occurs =====

* ===================================

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -