亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? conv2d5x5_gen.asm

?? ADI BF DSP的YUV到RGB轉(zhuǎn)化匯編優(yōu)化后的代碼
?? ASM
字號(hào):
/*******************************************************************************
Copyright(c) 2000 - 2002 Analog Devices. All Rights Reserved.
Developed by Joint Development Software Application Team, IPDC, Bangalore, India
for Blackfin DSPs  ( Micro Signal Architecture 1.0 specification).

By using this module you agree to the terms of the Analog Devices License
Agreement for DSP Software. 
********************************************************************************
Module Name     : conv2d5x5_gen.asm
Label name      : __conv2d5x5_gen
Version         : 1.3
Change History  :
                Version   Date            Author        Comments
                1.3       11/18/2002      Swarnalatha   Tested with VDSP++ 3.0
                                                        compiler 6.2.2 on 
                                                        ADSP-21535 Rev.0.2
                1.2       11/13/2002      Swarnalatha   Tested with VDSP++ 3.0
                                                        on ADSP-21535 Rev. 0.2
                1.1       02/12/2002      Nishanth      Modified to match 
                                                        silicon cycle count
                1.0       05/08/2001      Nishanth      Original

Description     : This function does two dimensional circular convolution of a 
                  given sequence with 5 x 5 matrix.

                  In this implementation circular convolution of two matrices 
                  `a` and `b` is calculated. The dimension of 'a' is row x col 
                  and that of 'b' is 5 x 5. 
                  The dimension of the output matrix c will row x col.

                  The first two columns of outputs are calculated separately as 
                  these ones require circular buffering of each row.

                  The whole implementation is for fract16 input and output. 
                  The format of representation is 1.15 format.
 
Assumptions     : 1. The minimum input matrix size is 5 x 5.
                  2. in[], mask[] and out[] should be aligned to a 2 byte 
                     boundary.
                  3. in[] and stack[] should be in different minibanks.
                  4. mask[] and stack should be in different minibanks.

Prototype       : void _conv2d5x5_gen(
                        fract16 in[],
                            // (i) :  Pointer to the input matrix. 
                        short   row,
                            // (i) :  Number of rows of input matrix. 
                        short   col,
                            // (i) :  Number of columns of input matrix. 
                        fract16 mask[],
                            // (i) :  Pointer to 5x5 mask. 
                        fract16 out[])
                            // (o) :  Pointer to the output matrix. 

Registers used  : A0, R0-R7, I0-I3, B0-B3, M0-M3, L0-L3, P0-P2, LC0,LC1

Performance     :
                Code Size   : 332 Bytes.
                Cycle Count : 28 * row * col   +   90 * row   +   77
                          (28 cycles/pixel in core for all outputs except those 
                           in first four columns.)
                          (46 cycles/pixel for outputs in first four columns 
                          of output.)
                     1227 cycles for an input matrix size of  5 x 5.
                     5177 cycles for an input matrix size of 10 x 15.
                     8685 cycles for an input matrix size of 16 x 16.
******************************************************************************/
.section L1_code;
.global __conv2d5x5_gen;
.align 8;
    
__conv2d5x5_gen:
    
    [--SP] = (R7:4);        // Save R7:4
    
    P2 = R2;                // P2 = Number of columns
    
    B0 = R0;                // B0 stores start address of input matrix.
    I0 = R0;
    R7 = R1.L * R2.L (ISS2) || P0 = [SP+28];
                            // Address of Mask
    L0 = R7;                // Circular buffer of length 2 * row * col
    L3 = R7;
    
    R2 = R2 << 1 || R6 = [SP+32];
                            // 2 * col , Address of output matrix
    L1 = R2;                // Length register is initialized to 2 * col
    
    SP += -60;              // 60 bytes are allocated in stack for storing 
                            // flipped mask
    B2 = SP;                // Address of new(flipped) mask
    I2 = B2;
    L2 = 60;                // Length of mask = 60 (25 + 5 dummy ones to avoid 
                            // exception)
    P0 += 48;               // P0 is made to point to end of original mask
    
    P1 = 5;                 // Loop counter = 5(no: of elements in each row of 
                            // mask)
    R0 = W[P0--](Z);        // Last element is fetched

    LSETUP (REVERSE_ST,REVERSE_END) LC0 = P1;
REVERSE_ST:
        W[I2++] = R0.L || R0 = W[P0--](Z);
                            // Mask is reversed and stored in new array
        W[I2++] = R0.L || R0 = W[P0--](Z);
                            // Mask is reversed and stored in new array
        W[I2++] = R0.L || R0 = W[P0--](Z);
                            // Mask is reversed and stored in new array
        W[I2++] = R0.L || R0 = W[P0--](Z);
                            // Mask is reversed and stored in new array
REVERSE_END:
        [I2++] = R0    || R0 = W[P0--](Z);
                            // Mask is reversed and stored in new array
                            // One dummy space is left at end of each row to 
                            // avoid exception
    
    B3 = R6;
    I3 = R6;                // Address of output buffer.
    M3 = R2;                // M3 = 2 * col
    
    R0 = R2 << 2;              
    R6 = R0 + R2;
    M2 = R6;                // M2 = 10 * col
    
    R0 = R2;
    R0 += -8;
    M0 = R0;                // 2*COL - 8
    
    P0 = 5;                 // Loop counter since there are 5 rows in mask
    P1 = 4;                 // Loop for first four columns of output
    P2 += -4;               // Col - 4
    R5 = 2(Z);
    
    R0 = R0 - R0(S) || I0 += M3;
    
    A0 = 0 || I0 -= M2 || R3 = [I2++];
                            // Accumulator reset, Fetch first two elements
                            // (h0,h1) from mask
                            // Modify I0 so that it points to last but second 
                            // row of input
LOOP_FS_ROW:
    R4 = 8;
    M1 = R4;
    LSETUP (COL_FS_ST, COL_FS_END) LC0 = P1; 
                            // Loop to find all output elements in one row
                            // (counter = col)
COL_FS_ST:
        B1 = I0;            // B1 stores the modified address on rows.
        I1 = B1;            // Address is copied to I1
        LSETUP (CONV_FS_ST, CONV_FS_END) LC1 = P0;
                            // Loop for finding one output(convoluting)
        R4 = R4 - R5(S) || I1 -= M1;
                            // Column offset is added 
CONV_FS_ST: R1.L = W[I1++] || I0 += M3;
                            // Fetch x0 
            A0 += R1.L * R3.L || R1.H = W[I1++]; 
                            // A0 += x0*h0,  x1
            A0 += R1.H * R3.H || R1.L = W[I1++] ||  R3 = [I2++]; 
                            // A0 += x1*h1, x2  ,  h2,h3
            A0 += R1.L * R3.L || R1.H = W[I1++]; 
                            // A0 += x2*h2  x3
            A0 += R1.H * R3.H || R1.L = W[I1++] ||  R3 = [I2++]; 
                            // A0 += x3*h3,  x4 , h4,dummy
            B1 = I0;        // B1 stores the modified address on rows.
            I1 = B1;        // Address is copied to I1
CONV_FS_END:R1.L=(A0+=R1.L * R3.L) || I1 -= M1 || R3 = [I2++]; 
                            // A0 += x4*h4,  Add column offset , h5,h6
        M1 = R4;            // Column offset is updated
COL_FS_END:
        A0 = 0 || I0 -= M2 || W[I3++] = R1.L;
                            // Modify I0, Store the output
    
    R0 = R0 + R2(S) || I3 += M0;
    I0 += M3;               // The counter for LOOP_ROW is modified, I0 and I3 
                            // are modified
    
    CC = R0 < R7;
    If CC JUMP LOOP_FS_ROW (BP);
                            // Jump if all input rows are not over 
    
    M1 = 8;
    MNOP || I3 += M1;       // Modify I3 as the first 4 columns are already 
                            // stored
    
LOOP_ROW:
    LSETUP (COL_ST, COL_END) LC0 = P2; 
                            // Loop to find all output elements in one 
                            // row(counter = col)
COL_ST: MNOP || R1.L = W[I0++];
                            // Fetch x0 
        LSETUP (CONV_ST, CONV_END) LC1 = P0;
                            // Loop for finding one output(convoluting)
CONV_ST:    A0 += R1.L * R3.L || R1.H = W[I0++]; 
                            // A0 += x0*h0,  x1
            A0 += R1.H * R3.H || R1.L = W[I0++] ||  R3 = [I2++]; 
                            // A0 += x1*h1, x2  ,  h2,h3
            A0 += R1.L * R3.L || R1.H = W[I0++] ||  R5 = [I2++]; 
                            // A0 += x2*h2,  x3
            A0 += R1.H * R3.H || R1.L = W[I0] || I0 += M0; 
                            // A0 += x3*h3,  x4 , h4,dummy
CONV_END:   R6.L=(A0+=R1.L * R5.L) || R1.L = W[I0++] || R3 = [I2++]; 
                            // A0 += x4*h4, x10  , h5,h6
COL_END:
        A0 = 0 || I0 -= M2 || W[I3++] = R6.L;
                            // Modify I0, Store the output
    R0 = R0 - R2(S) || I0 += M1;
    I3 += M1;               // The counter for LOOP_ROW is modified, I0 and I3 
                            // are modified
    
    CC = R0 == 0;
    IF !CC JUMP LOOP_ROW (BP);
                            // Jump if all input rows are not over 
    
    SP += 60;               // Restore SP
    (R7:4) = [SP++];        // Restore R7:4
    RTS;                 
                            // Program ends here
    NOP;                    //to avoid one stall if LINK or UNLINK happens to be
                            //the next instruction after RTS in the memory.

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩一区二区三区在线| 欧美丝袜自拍制服另类| 一区二区三区精品在线观看| 日韩一区二区电影| 99精品国产91久久久久久| 奇米影视一区二区三区| 亚洲欧美韩国综合色| 久久综合九色综合97婷婷| 欧美在线视频你懂得| 成人免费视频一区| 极品少妇xxxx偷拍精品少妇| 亚洲自拍偷拍图区| 国产精品久久久久久亚洲毛片| 日韩欧美在线1卡| 欧美日韩一区在线| av在线一区二区三区| 国产伦精品一区二区三区免费| 午夜免费欧美电影| 亚洲欧美色一区| 国产欧美综合在线观看第十页| 欧美一区二视频| 欧美日韩电影在线播放| 91久久久免费一区二区| 波多野结衣在线aⅴ中文字幕不卡| 国产一区啦啦啦在线观看| 日韩专区在线视频| 亚洲在线一区二区三区| 伊人夜夜躁av伊人久久| 亚洲欧洲国产专区| 亚洲欧洲精品一区二区精品久久久| 久久综合狠狠综合| 久久亚洲综合av| 精品福利在线导航| 精品va天堂亚洲国产| 精品精品国产高清一毛片一天堂| 日韩一区二区三免费高清| 91超碰这里只有精品国产| 欧美欧美欧美欧美首页| 欧美欧美欧美欧美| 欧美一区二区三区思思人| 欧美一区二区福利在线| 欧美一级日韩一级| 欧美变态tickling挠脚心| 精品少妇一区二区三区免费观看| 日韩欧美中文字幕制服| 精品成人一区二区三区| 国产亚洲视频系列| 国产精品激情偷乱一区二区∴| 国产精品麻豆欧美日韩ww| 亚洲欧美中日韩| 亚洲综合在线五月| 婷婷成人综合网| 久久精品国产久精国产爱| 国产综合成人久久大片91| 国产精品99久久久久久久vr| 成人精品国产一区二区4080| 99久久精品免费观看| 欧美性一二三区| 欧美一区二区三区在线观看| 欧美成人国产一区二区| 国产亚洲欧美激情| 亚洲视频1区2区| 亚洲高清免费一级二级三级| 免费看欧美女人艹b| 国产精品99久| 在线亚洲免费视频| 欧美一级黄色片| 国产精品视频观看| 亚洲国产一区二区视频| 久久99久久精品欧美| jlzzjlzz亚洲日本少妇| 欧美日韩免费不卡视频一区二区三区| 日韩一卡二卡三卡四卡| 欧美激情一区三区| 亚洲国产精品精华液网站| 精品一区二区免费视频| 99精品热视频| 日韩欧美色综合网站| 中文字幕高清不卡| 婷婷中文字幕一区三区| 国产成人精品亚洲午夜麻豆| 欧美亚洲国产一区在线观看网站| 日韩欧美一级二级| 亚洲三级电影网站| 蜜桃视频一区二区三区| 97se亚洲国产综合自在线观| 欧美一级日韩一级| 自拍偷拍欧美激情| 九九在线精品视频| 欧美性受极品xxxx喷水| 国产色产综合色产在线视频| 亚洲一区二区三区中文字幕在线| 国产美女av一区二区三区| 欧亚一区二区三区| 国产欧美日韩视频一区二区| 日韩影院免费视频| 91在线观看免费视频| 精品日韩欧美一区二区| 亚洲宅男天堂在线观看无病毒| 国产精品自在在线| 欧美一区二区久久久| 亚洲视频在线观看一区| 国产精品1区二区.| 91麻豆精品国产| 一区二区三区日韩欧美| 国产成人在线视频免费播放| 欧美日韩亚洲丝袜制服| 国产精品短视频| 国产专区综合网| 欧美日韩美少妇| 怡红院av一区二区三区| 成人午夜视频网站| 欧美精品一区二区三区蜜臀| 午夜a成v人精品| 色播五月激情综合网| 国产精品人成在线观看免费| 久久丁香综合五月国产三级网站| 欧美日韩午夜影院| 亚洲精品国产精华液| 成人黄色电影在线| 国产欧美精品一区二区三区四区| 麻豆一区二区三区| 3atv在线一区二区三区| 亚洲国产欧美另类丝袜| 99久久久久免费精品国产| 国产精品免费看片| 国产精品综合二区| 久久蜜桃av一区二区天堂| 老司机精品视频线观看86| 884aa四虎影成人精品一区| 亚洲成人动漫一区| 欧美男人的天堂一二区| 亚洲福利一区二区三区| 欧美视频一区二区三区在线观看| 亚洲精选一二三| 色婷婷av一区二区| 亚洲免费观看高清完整版在线观看熊| 波多野结衣在线一区| 国产精品卡一卡二| 99精品热视频| 一区二区三区在线视频观看58| 一本久久a久久精品亚洲| 亚洲日本电影在线| 在线观看一区二区视频| 亚洲一区免费观看| 欧美日韩不卡视频| 日本不卡高清视频| 日韩视频在线一区二区| 久久不见久久见免费视频7| 久久综合一区二区| 国产91精品免费| 亚洲同性gay激情无套| 色综合久久六月婷婷中文字幕| 亚洲精品菠萝久久久久久久| 欧洲另类一二三四区| 日韩精品一级二级| 精品乱人伦小说| 欧美日韩日日摸| 激情综合一区二区三区| 国产清纯白嫩初高生在线观看91| 波多野结衣91| 亚洲永久免费av| 欧美一级专区免费大片| 国产成人免费在线观看不卡| 国产精品美女一区二区三区| 在线观看网站黄不卡| 日本不卡中文字幕| 国产日韩欧美激情| 色综合亚洲欧洲| 日韩电影一区二区三区四区| www国产精品av| 91玉足脚交白嫩脚丫在线播放| 亚洲不卡在线观看| 久久久久久影视| 91麻豆免费视频| 美国十次综合导航| 国产精品免费看片| 欧美妇女性影城| 国产大陆亚洲精品国产| 亚洲午夜在线视频| 久久久久久久电影| 在线观看视频一区二区| 国产一区二区伦理| 一区二区三区不卡视频在线观看 | 久久久亚洲欧洲日产国码αv| 丰满亚洲少妇av| 婷婷久久综合九色综合绿巨人| 久久精品视频免费| 欧美日韩在线一区二区| 国产剧情一区二区三区| 亚洲午夜激情av| 亚洲国产成人在线| 欧美一区二区精品在线| 色婷婷综合久色| 国产乱子轮精品视频| 午夜久久久久久| 最新国产の精品合集bt伙计| 欧美大片日本大片免费观看| 91色.com| 成人激情小说乱人伦|