Advertisement
lamiastella

finalSAD.c

Aug 5th, 2013
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.39 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include "disparity.h"
  4. //*#include "m5op.h"
  5.  
  6. void finalSAD(F2D* integralImg, int win_sz, F2D* retSAD)
  7. {
  8. int endR, endC;
  9. int i, j, k;
  10. endR = integralImg->height;
  11. endC = integralImg->width;
  12. k = 0;
  13. int sizeM=endC-win_sz;
  14. int sizeN=endR-win_sz;
  15.  
  16. //*asm volatile (
  17. //*              "vmov d0, %[sizeN], %[sizeM]\n\t"
  18. //*                                :
  19. //*              [sizeN] "r" (sizeN), [sizeM] "r" (sizeM)
  20. //*                                :
  21. //*             );
  22. //*m5rh_start(kernel_number,1);
  23. int togo, size;
  24. //togo = sizeM*sizeN - i;
  25. //togo=(endC-win_sz)*(endR-win_sz) -i ;
  26.  
  27. //for(j=0; j<(endC-win_sz)*(endR-win_sz); j=j+8)
  28. int SizeMN=sizeM*sizeN;
  29. for(j=0; j< SizeMN; j=j+8)
  30. //for(i=0; i< sizeM * sizeN; i=i+8)
  31. //for (j=0;j<sizeM;j++)
  32. {    
  33.     togo = SizeMN - j;                                                                                                                                    
  34.     size = (togo > 8) ? 8 : togo;
  35.      
  36. //*     m5_rh_load_data(0, 1, 5 , 0); //Exec time  --subtraction takes only five cycles and they are all done in parallel
  37.     for(i=0; i< size ; i++)
  38. //    for(j=0; j< size ; j++)
  39.     //for (i=0;i<sizeN;i++)
  40.          {
  41. //*              m5_rh_load_data(0, 2, 2, 0); //2 cycles for address generation (???)  //how many cycles for address generation???
  42. //*              m5_rh_load_data(integralImg->data+j, size, 4, 1); //sizeof(int)=4  (should it be i or j ? ) (This line is the most confusing line for me !!!) --loading the data
  43. //*              m5_rh_load_data(0, 1, 5 , 0); //Exec time  --subtraction takes only five cycles and they are all done in parallel
  44.                //subsref(retSAD,i,j) = subsref(integralImg,(win_sz+i),(j+win_sz)) + subsref(integralImg,(i+1) ,(j+1)) - subsref(integralImg,(i+1),(j+win_sz)) - subsref(integralImg,(win_sz+i),(j+1));
  45.              asubsref(retSAD,i+j) = asubsref(integralImg,win_sz+i+j+win_sz*sizeN) + asubsref(integralImg,i+1+j+sizeN) - asubsref(integralImg,i+1+j+win_sz*sizeN) - asubsref(integralImg,win_sz+i+j+sizeN);
  46.             // asubsref(retSAD,i+j) = asubsref(integralImg,win_sz*sizeM+i+j+win_sz) + asubsref(integralImg,i+sizeM+j+1) - asubsref(integralImg,i+sizeM+j+win_sz) - asubsref(integralImg,win_sz*sizeM+i+j+1);
  47.  
  48.  
  49. //*              m5_rh_load_data(0, 0, 0, 0); //done
  50.            
  51.           }
  52.      }  
  53. //*    m5rh_start(kernel_number,0);
  54.       return;
  55.   }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement