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

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

?? cache_macros.h

?? 本源程序是用于數字信號處理中32位的傅立葉變換的程序
?? H
字號:
/******************************************************************
-PetreM
-rev1.2, 4/20/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
-PM - added macros to compute cycle counts in all pr1:0 registers
*******************************************************************
-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;              \

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

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


//this macro initializes the cycle counter of the benchmark
#define ini_cycle_count_ypr0 \
  yr1:0 = pr1:0;;            \
  yr0 = CCNT0;;              \
  yr2 = 0x6;;                \
  nop;;                      \
  yr0 = r0 + r2;;            \
  nop;;                      \
  ypr1:0 = r1:0;             \

//this macro computes the benchmark cycle count
#define comp_cycle_count_ypr0 \
  yr2 = CCNT0;;               \
  yr1:0 =  pr1:0;;            \
  yr0 = r2 - r0;;             \
  ypr1:0 = r1:0;              \

//this macro initializes the cycle counter of the benchmark
#define ini_cycle_count_ypr1 \
  yr1:0 = pr1:0;;            \
  yr1 = CCNT0;;              \
  yr2 = 0x6;;                \
  nop;;                      \
  yr1 = r1 + r2;;            \
  nop;;                      \
  ypr1:0 = r1:0;             \

//this macro computes the benchmark cycle count
#define comp_cycle_count_ypr1 \
  yr2 = CCNT0;;               \
  yr1:0 =  pr1:0;;            \
  yr1 = r2 - r1;;             \
  ypr1:0 = r1:0;              \





?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91搞黄在线观看| 国内精品久久久久影院色| 国产欧美精品区一区二区三区| 欧美日韩一级片网站| 在线免费观看视频一区| 一本在线高清不卡dvd| 色婷婷av一区| 欧美视频一区二| 欧美高清激情brazzers| 欧美二区三区91| 91精品国产91久久久久久最新毛片 | 欧美另类一区二区三区| 欧美日韩国产系列| 日韩欧美一区电影| 久久精品视频在线看| 欧美国产激情二区三区| 亚洲色图在线播放| 日韩精品视频网站| 国产精品一二一区| av在线播放成人| 欧美日韩在线播放三区四区| 欧美一区日韩一区| 国产免费成人在线视频| 亚洲蜜臀av乱码久久精品蜜桃| 亚洲一级二级三级| 久久不见久久见免费视频1| 国产在线精品不卡| 成人福利视频在线看| 欧美日韩精品免费观看视频| 26uuu色噜噜精品一区| 亚洲欧美一区二区久久| 日韩av不卡一区二区| 国产很黄免费观看久久| 欧美综合亚洲图片综合区| 精品国产一区二区三区不卡 | 亚洲免费色视频| 日本一不卡视频| 丁香啪啪综合成人亚洲小说| 精品视频999| 国产精品热久久久久夜色精品三区 | 成人黄页在线观看| 欧美日韩在线观看一区二区| 国产欧美日韩在线| 日韩精品一区第一页| www.在线欧美| 精品国产青草久久久久福利| 亚洲黄色性网站| 国产精品一级片| 日韩一区二区电影在线| 亚洲女人小视频在线观看| 久久er99热精品一区二区| 91久久国产综合久久| 久久免费电影网| 首页国产欧美久久| 色婷婷综合激情| 国产精品看片你懂得| 精品亚洲成a人| 日韩美女一区二区三区| 亚洲第一电影网| 色综合久久中文字幕综合网| 国产精品久久三区| 高清不卡在线观看| 精品99久久久久久| 久久激情五月婷婷| 日韩三级视频在线看| 亚洲国产视频直播| 在线这里只有精品| 亚洲已满18点击进入久久| 99r国产精品| 中文字幕综合网| 成人听书哪个软件好| 欧美韩日一区二区三区| 国产一区二区三区| 久久人人爽人人爽| 国产传媒一区在线| 中文字幕国产一区二区| 国产成人福利片| 国产精品视频麻豆| 白白色 亚洲乱淫| 日韩理论片中文av| 色综合咪咪久久| 亚洲福利视频三区| 制服丝袜中文字幕亚洲| 人人精品人人爱| 精品久久久久久综合日本欧美| 人人狠狠综合久久亚洲| 精品国产亚洲一区二区三区在线观看| 日本欧美一区二区在线观看| 日韩一级在线观看| 国产最新精品精品你懂的| 久久久三级国产网站| 成人综合婷婷国产精品久久蜜臀| 中文字幕一区二| 欧美在线观看视频在线| 日韩电影一区二区三区四区| 日韩精品一区在线| 成人免费黄色大片| 亚洲一区自拍偷拍| 欧美电影免费观看完整版| 国产精品一区二区无线| 国产精品久久久久久久久搜平片| 欧美中文字幕一区| 国内精品嫩模私拍在线| 国产精品美女久久久久久| 精品视频在线免费| 久久99国产乱子伦精品免费| 国产精品污www在线观看| 色综合咪咪久久| 激情综合色播五月| 中文字幕亚洲区| 日韩一级黄色大片| 95精品视频在线| 奇米一区二区三区| 亚洲日本在线a| 精品国产乱码久久久久久蜜臀| 91亚洲国产成人精品一区二区三| 婷婷综合另类小说色区| 国产精品网站在线播放| 91精品国产综合久久久蜜臀粉嫩 | 一区二区三区视频在线观看| 欧美一区二区三区四区在线观看| 成人听书哪个软件好| 蜜臀a∨国产成人精品| 中文字幕一区二区三区视频| 日韩午夜三级在线| 91福利视频在线| 国产精品自拍三区| 日韩av一区二区在线影视| 亚洲欧洲制服丝袜| 欧美国产成人在线| 精品日韩一区二区| 884aa四虎影成人精品一区| thepron国产精品| 国产精一品亚洲二区在线视频| 亚洲18女电影在线观看| 亚洲人午夜精品天堂一二香蕉| 精品欧美一区二区在线观看| 欧美日韩中文另类| 色综合久久久久久久久| 成人91在线观看| 国产白丝精品91爽爽久久| 久久99蜜桃精品| 另类人妖一区二区av| 日韩高清不卡在线| 亚洲国产美女搞黄色| 亚洲精品欧美专区| 亚洲欧美日韩国产综合| 亚洲日本在线a| 一区二区三区四区在线播放| 成人欧美一区二区三区视频网页| 国产欧美va欧美不卡在线| 久久久久久黄色| 国产免费久久精品| 国产精品嫩草影院av蜜臀| 欧美国产视频在线| 欧美激情一区在线观看| 国产精品久久一卡二卡| 1000部国产精品成人观看| 亚洲欧洲国产专区| 日韩1区2区日韩1区2区| 日韩和欧美一区二区三区| 日韩和欧美一区二区三区| 日韩高清国产一区在线| 美女免费视频一区| 国产高清精品在线| 成人av一区二区三区| 色婷婷av一区二区三区软件| 欧美日韩专区在线| 日韩三级视频在线看| 久久久久久久综合日本| 中文字幕一区二区三区在线观看 | 美洲天堂一区二卡三卡四卡视频| 久久99精品久久久久久久久久久久| 黄色资源网久久资源365| 丁香婷婷综合网| 色88888久久久久久影院野外| 欧美另类一区二区三区| wwwwww.欧美系列| 亚洲欧洲成人精品av97| 午夜a成v人精品| 国产精品白丝jk黑袜喷水| 99re视频精品| 日韩一区二区三区三四区视频在线观看 | 一区二区三国产精华液| 免费看日韩精品| 播五月开心婷婷综合| 欧美疯狂做受xxxx富婆| 久久久久综合网| 亚洲自拍偷拍图区| 国产一区二区三区日韩| 欧美综合在线视频| 久久婷婷成人综合色| 亚洲国产cao| 粉嫩欧美一区二区三区高清影视| 欧美自拍丝袜亚洲| 亚洲一区在线观看免费| 国产成人超碰人人澡人人澡| 欧美日韩色一区| 中文字幕一区二区三区色视频| 奇米在线7777在线精品|