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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? cache_macros.h

?? 基于TS201 32 bit Floating Point FIR filter
?? H
字號:
/******************************************************************
-PetreM
-rev1.1, 2/12/2004

-PPG
- 01/30/2004 - updated file to include workaround for silicon errata 03-00-0216
- 03-00-0216 : SQSTAT should be read twice sequentially to ensure correct value.

-PM - due to slicon anomalies, CCAIR and CACMD registers are now loaded using j0
*******************************************************************
-this file contains the following macros:

-cache_enable(refresh_rate):
  -it sets a new refresh rate
  -if the cache is enabled, it leaves it enabled.
  -if the cache is not enabled, it enables it in the right way
  -at the end enables the BTB if it was not already enabled
  -this macro should be used as the first line of code in every program

-ini_linear_addressing
  -it writes 0 to all il and kl registers, i.e. sets linear addressing
  -I would use it as the second line of program

-ini_cycle_count and comp_cycle_count:
  -measure the cycles spent between these 2 macros
  -save the result at cycle_count location
  -cycle_count must be declared as a variable in the memory

-comp_program_memory
  -it computes how many 32bit words of code are between
    Benchmark and Benchmark.end labels and saves the result at pm_count
  -pm_count must be declared as a variable

-ini_cycle_count_multiple and comp_cycle_count_multiple
  -measure the cycles spent between these 2 macros, but this time
    saves the results at successive locations in memory
    beginning with cycle_count
  -useful to measure the cycle count of each iteration of
    a loop, for example
-ini_cycle_count_xpr0 and comp_cycle_count_xpr0
  -these macros compute the cycle count as ini_cycle_count and
    comp_cycle_count
  -the difference is the result is saved in xpr0
  -to use these macros, never use xpr0 in your program
  -have the advantage that the cache is not used at all
*******************************************************************/
/*****************************************************
-the execution of the cache commands is finished when
the bit 16 of the corresponding status registers is 0
-the macro wait_cache waits until the cache command
has finished the execution
-the 5 nops introduced at the end of the macro keep
the pipeline clean of eventual cache commands. These
cache commands may stall the processor when executed
before one cache command is ended
*/
#define wait_cache(CASTAT)                          \
.align_code 4;                                      \
_chk_castat?:                                       \
    xr0 = CASTAT;;                                  \
    xbitest r0 by CASTAT_COM_ACTIVE_P;;             \
.align_code 4;                                      \
    if nxseq, jump _chk_castat? (NP);nop;nop;nop;;  \
    nop;;nop;;nop;;nop;;nop;
/*****************************************************
-the macro test_cache_enabled tests the bit14 of the
cache status registers. If this bit is 1, the cache is enabled
and PC jumps to the following tasks. Otherwise,
the cache must be invalidated and then enabled
*/
#define test_cache_enabled(CASTAT, jump_label)\
  xr0 = CASTAT;;                              \
  xbitest r0 by CASTAT_ENBL_P;;               \
  if nxseq, jump jump_label (NP);;             \
	nop;;nop;;nop;;nop;;nop;
/*****************************************************
-the macro invalidate invalidates the cache. To enable
the cache, it must be first invalidated. This operation
basically cleans the cache.
*/
#define invalidate(CCAIR, CACMD, CASTAT)            \
  j0 =  j31 + 0;;								                    \
  CCAIR = j0;;  									                  \
  j0 = j31 + CACMD_INV |                            \
             (127 << CACMD_LEN_P) |                 \
              CACMD_NOSTALL;;                       \
  CACMD = j0;;                                      \
.align_code 4;                                      \
_chk_castat_inv?:                                   \
    xr0 = CASTAT;;                                  \
    xbitest r0 by CASTAT_COM_ACTIVE_P;;             \
.align_code 4;                                      \
    if nxseq, jump _chk_castat_inv? (NP);nop;nop;nop;;\
	nop;;nop;;nop;;nop;;nop;

/*****************************************************
-the macro cache_enable executes the following operations:
  -sets a new refresh rate
      -if CCLK=500MHz, refresh_rate=750
      -if CCLK=400MHz, refresh_rate=600
      -if CCLK=300MHz, refresh_rate=450
      -if CCLK=250MHz, refresh_rate=375
  -tests if each cache is already enabled or not. If it
is disabled, invalidate and then enable it. If it is enabled,
don't touch it and jump to the next step.
  -tests if BTB is already enabled. If not, enable the BTB
-as one may observe, after each cache command 5 nops
(i.e. 5 CCLK cycles) are introduced. This is to keep
the pipeline clean of eventual cache commands. These
cache commands may stall the processor when executed
before one cache command is ended
-it should be executed immediately after reset.
-It has not been designed to be used in the
middle of the code or in a project that uses overlays
*/
#define cache_enable(refresh_rate)        \
.align_code 4;                            \
  j0 = j31 + CACMD_REFRESH | refresh_rate;; \
  CACMDALL= j0;;                            \
    wait_cache(CASTAT0);                    \
    wait_cache(CASTAT2);                    \
    wait_cache(CASTAT4);                    \
    wait_cache(CASTAT6);                    \
    wait_cache(CASTAT8);                    \
    wait_cache(CASTAT10);                          \
  test_cache_enabled(CASTAT0, test_cache2);        \
          invalidate(CCAIR0, CACMD0, CASTAT0);     \
          j0 = j31 + CACMD_EN;;                    \
          CACMD0 = j0;;                            \
          nop;;nop;;nop;;nop;;nop;;                \
          wait_cache(CASTAT0);                     \
test_cache2:                                       \
  test_cache_enabled(CASTAT2, test_cache4);        \
          invalidate(CCAIR2, CACMD2, CASTAT2);     \
          j0 = j31 + CACMD_EN;;                    \
          CACMD2 = j0;;                            \
          nop;;nop;;nop;;nop;;nop;;                \
          wait_cache(CASTAT2);                     \
test_cache4:                                       \
  test_cache_enabled(CASTAT4, test_cache6);        \
          invalidate(CCAIR4, CACMD4, CASTAT4);     \
          j0 = j31 + CACMD_EN;;                    \
          CACMD4 = j0;;                            \
          nop;;nop;;nop;;nop;;nop;;                \
          wait_cache(CASTAT4);                     \
test_cache6:                                       \
  test_cache_enabled(CASTAT6, test_cache8);        \
          invalidate(CCAIR6, CACMD6, CASTAT6);     \
          j0 = j31 + CACMD_EN;;                    \
          CACMD6 = j0;;                            \
          nop;;nop;;nop;;nop;;nop;;                \
          wait_cache(CASTAT6);                     \
test_cache8:                                       \
  test_cache_enabled(CASTAT8, test_cache10);       \
          invalidate(CCAIR8, CACMD8, CASTAT8);     \
          j0 = j31 + CACMD_EN;;                    \
          CACMD8 = j0;;                            \
          nop;;nop;;nop;;nop;;nop;;                \
          wait_cache(CASTAT8);                     \
test_cache10:                                      \
  test_cache_enabled(CASTAT10, test_BTB);          \
          invalidate(CCAIR10,CACMD10,CASTAT10);    \
          j0 = j31 + CACMD_EN;;                    \
          CACMD10 = j0;;                           \
          nop;;nop;;nop;;nop;;nop;;                \
          wait_cache(CASTAT10);                    \
test_BTB:                                          \
.align_code 4;                                     \
	XR0 = SQSTAT;;                                   \
	XR0 = SQSTAT;;                                   \
	XBITEST R0 BY SQSTAT_BTBEN_P;;                   \
	IF NXSEQ, JUMP BTB_already_enabled (NP);;        \
    nop;;nop;;nop;;nop;;nop;;                      \
  BTBEN;;                                          \
.align_code 4;                                     \
BTB_already_enabled:                               \
   nop;


//this macro initializes the cycle counter of the benchmark
#define ini_cycle_count \
  xr0 = CCNT0;; \
  xr1 = 0x5;; \
  xr0 = r0 + r1;; \
  [j31 + cycle_count] = xr0;

//this macro computes the benchmark cycle count
#define comp_cycle_count \
  xr1 = CCNT0;; \
  xr0 =  [j31 + cycle_count];; \
  xr0 = r1 - r0;; \
  [j31 + cycle_count] = xr0;

//this macro computes the program memory occupied by the benchmark
#define comp_program_memory \
  xr1 = Benchmark;; \
  xr0 = Benchmark.end;; \
  xr0 = r0 - r1;; \
  [j31 + pm_count] = xr0;

//this macro writes 0 in all the length registers, so setting all
//address generators in linear addressing mode
#define ini_linear_addressing  \
  jl0=j31+0;;   kl0=k31+0;; \
  jl1=j31+0;;   kl1=k31+0;;  \
  jl2=j31+0;;   kl2=k31+0;; \
  jl3=j31+0;;   kl3=k31+0;

//this macro initializes the cycle counter of the benchmark when
//more counts must be saved into memory
//j30 must be previously initialized at cycle_count
//and cycle_count should be set as a buffer
#define ini_cycle_count_multiple \
  xr0 = CCNT0;; \
  xr1 = 0x5;; \
  xr0 = r0 + r1;; \
  [j30+0] = xr0;

//this macro computes the benchmark cycle count and
//saved the result at j30
#define comp_cycle_count_multiple \
  xr1 = CCNT0;; \
  xr0 =  [j30 + 0];; \
  xr0 = r1 - r0;; \
  [j30+=1] = xr0;

//this macro initializes the cycle counter of the benchmark
#define ini_cycle_count_xpr0 \
  xr1:0 = pr1:0;;            \
  xr0 = CCNT0;;              \
  xr2 = 0x6;;                \
  nop;;                      \
  xr0 = r0 + r2;;            \
  nop;;                      \
  xpr1:0 = r1:0;             \

//this macro computes the benchmark cycle count
#define comp_cycle_count_xpr0 \
  xr2 = CCNT0;;               \
  xr1:0 =  pr1:0;;            \
  xr0 = r2 - r0;;             \
  xpr1:0 = r1:0;              \






?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久www成人免费毛片麻豆 | 欧美婷婷六月丁香综合色| 欧美天堂亚洲电影院在线播放| 日韩欧美视频在线| 一区二区三区精品久久久| 国产原创一区二区| 91 com成人网| 一区二区三区色| 成人av电影免费在线播放| 日韩三区在线观看| 亚洲综合av网| 色综合色综合色综合色综合色综合| 精品日韩在线一区| 三级在线观看一区二区| 91女神在线视频| 中文字幕精品一区二区三区精品| 丝袜美腿亚洲色图| 欧美日韩一区不卡| 一区二区三区av电影| 91香蕉视频mp4| 国产精品美女久久久久aⅴ| 国精产品一区一区三区mba视频 | 亚洲国产综合人成综合网站| 国产suv精品一区二区6| 2021久久国产精品不只是精品| 日本不卡中文字幕| 在线播放亚洲一区| 日本亚洲免费观看| 欧美一区二区三区视频| 日韩一区精品视频| 91精品在线麻豆| 麻豆一区二区在线| 亚洲精品在线观看网站| 国产在线不卡一卡二卡三卡四卡| 日韩亚洲欧美综合| 久久www免费人成看片高清| 日韩欧美一区二区三区在线| 免费成人美女在线观看| 日韩欧美激情一区| 经典三级一区二区| 日本一区二区三区久久久久久久久不| 国产酒店精品激情| 国产精品久久午夜| 91搞黄在线观看| 午夜精品久久久久影视| 777精品伊人久久久久大香线蕉| 日韩高清不卡一区二区| 欧美成人a视频| 国产精品中文字幕日韩精品| 国产精品私人自拍| 91久久奴性调教| 日本伊人精品一区二区三区观看方式| 日韩一区二区免费在线观看| 国产精品自在欧美一区| 亚洲欧美在线视频观看| 欧美精品一级二级三级| 国内精品第一页| 亚洲免费成人av| 91精品国产乱码| 成人一道本在线| 亚洲成人一区二区| 国产视频在线观看一区二区三区| 91亚洲精品久久久蜜桃网站 | 一区二区三区电影在线播| 欧美久久久久久久久中文字幕| 久久福利视频一区二区| 亚洲欧洲一区二区在线播放| 欧美猛男超大videosgay| 国产精品综合二区| 亚洲成人自拍一区| 日本一区二区视频在线| 91精品在线免费| caoporm超碰国产精品| 奇米影视在线99精品| 中文字幕日韩一区| 欧美大白屁股肥臀xxxxxx| 9人人澡人人爽人人精品| 免费看黄色91| 亚洲美腿欧美偷拍| 久久久不卡网国产精品一区| 欧美日韩国产123区| 国产成人在线观看免费网站| 午夜久久久久久久久久一区二区| 国产丝袜在线精品| 欧美刺激午夜性久久久久久久| 色婷婷国产精品| 成人午夜激情在线| 久久激五月天综合精品| 性做久久久久久久免费看| 国产精品福利av| 国产香蕉久久精品综合网| 制服丝袜中文字幕亚洲| 在线观看网站黄不卡| 成人av资源在线观看| 极品瑜伽女神91| 日韩在线一区二区| 亚洲一区二区视频在线观看| 亚洲高清不卡在线| 亚洲精品国产无套在线观| 国产亚洲1区2区3区| 精品久久久久av影院| 777亚洲妇女| 欧美日韩一区二区三区四区| 色婷婷av一区二区三区gif| 成人精品鲁一区一区二区| 韩国成人福利片在线播放| 麻豆国产欧美日韩综合精品二区 | 欧美日免费三级在线| 成人国产一区二区三区精品| 国产九九视频一区二区三区| 韩国女主播一区二区三区| 精品一区二区国语对白| 麻豆成人91精品二区三区| 奇米色777欧美一区二区| 男男成人高潮片免费网站| 天天综合天天做天天综合| 亚洲成av人影院| 日韩影视精彩在线| 美女网站色91| 国产呦萝稀缺另类资源| 国产一区亚洲一区| 国产成人精品一区二| 成人高清视频在线| 99久久er热在这里只有精品15 | 国产精品视频免费看| 国产精品理论在线观看| 国产精品久久久久久亚洲伦 | 久久久久久久久久久电影| 精品成人佐山爱一区二区| 久久久久久久久97黄色工厂| 国产亚洲福利社区一区| 亚洲欧美偷拍卡通变态| 亚洲综合一区在线| 蜜臀av性久久久久蜜臀aⅴ流畅| 久久精品国内一区二区三区| 精品一区二区久久久| 国产成人免费视频| 色婷婷久久99综合精品jk白丝| 欧美日韩国产123区| 久久综合九色综合欧美98| 国产精品无人区| 亚洲第一搞黄网站| 国产精品亚洲成人| 欧美怡红院视频| 精品国产百合女同互慰| 亚洲欧洲综合另类| 蜜桃一区二区三区在线| 成人不卡免费av| 欧美精品欧美精品系列| 久久精品欧美一区二区三区不卡 | 97国产精品videossex| 欧美精品在线观看播放| 国产日韩v精品一区二区| 亚洲狠狠爱一区二区三区| 国产一区二区三区久久久| 色美美综合视频| 久久免费国产精品| 亚洲第一会所有码转帖| eeuss鲁片一区二区三区在线看| 69久久99精品久久久久婷婷 | 亚洲成人av中文| 岛国av在线一区| 欧美国产禁国产网站cc| 亚洲高清中文字幕| 99久久er热在这里只有精品15 | 国产欧美日本一区二区三区| 亚洲五码中文字幕| 国产成人高清视频| 日韩欧美在线1卡| 亚洲一区二区三区爽爽爽爽爽| 国产精品77777| 91精品黄色片免费大全| 伊人开心综合网| 丁香一区二区三区| 精品国精品国产尤物美女| 亚洲午夜精品一区二区三区他趣| 成人午夜视频在线| 精品久久久久久久人人人人传媒| 亚洲v日本v欧美v久久精品| av色综合久久天堂av综合| 久久久久久日产精品| 久久精品999| 日韩美一区二区三区| 天天影视网天天综合色在线播放| 色综合久久综合| 亚洲欧洲另类国产综合| 成人小视频在线| 久久久不卡网国产精品二区| 韩日精品视频一区| 精品免费视频一区二区| 美女mm1313爽爽久久久蜜臀| 91精品国产综合久久香蕉麻豆| 亚洲国产一区在线观看| 在线亚洲免费视频| 亚洲激情网站免费观看| 色婷婷综合在线| 一区二区三区蜜桃| 欧美老人xxxx18| 石原莉奈在线亚洲二区| 欧美一区二区在线看|