Ignore:
Timestamp:
Oct 13, 2010, 8:15:51 PM (14 years ago)
Author:
rosiere
Message:

1) add test with SPECINT2K
2) new config of Selftest
3) modif RAT to support multiple depth_save ... but not finish (need fix Update Prediction Table)
4) add Function_pointer but need fix

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Allocation.h

    r139 r145  
    1414// =====[ ALLOCATION / DELETE of ARRAY ]=================================
    1515// ======================================================================
    16 #define ALLOC0(var,type)                        \
     16#define ALLOC0_COND(var,type,cond)              \
    1717  do                                            \
    1818    {                                           \
    19       var = new type;                           \
    20     } while (0)
    21 
    22 #define ALLOC1(var,type,s1)                     \
     19      if (cond)                                 \
     20        var = new type;                         \
     21    } while (0)
     22
     23
     24#define ALLOC1_COND(var,type,s1,cond)           \
    2325  do                                            \
    2426    {                                           \
    25       var = new type [s1];                      \
    26     } while (0)
    27 
    28 #define ALLOC2(var,type,s1,s2)                   \
     27      if (cond)                                 \
     28        var = new type [s1];                    \
     29    } while (0)
     30
     31
     32#define ALLOC2_COND(var,type,s1,s2,cond)         \
    2933  do                                             \
    3034    {                                            \
     
    3236      for (uint32_t it1=0; it1<s1; ++it1)        \
    3337        {                                        \
    34           var [it1] = new type [s2];             \
     38          if (cond)                              \
     39            var [it1] = new type [s2];           \
    3540        }                                        \
    3641    } while (0)
    3742
    38 #define ALLOC3(var,type,s1,s2,s3)                \
     43#define ALLOC3_COND(var,type,s1,s2,s3,cond)      \
    3944  do                                             \
    4045    {                                            \
     
    4550          for (uint32_t it2=0; it2<s2; ++it2)    \
    4651            {                                    \
    47               var [it1][it2] = new type [s3];    \
     52              if (cond)                          \
     53                var [it1][it2] = new type [s3];  \
    4854            }                                    \
    4955        }                                        \
    5056    } while (0)
    5157
    52 #define ALLOC4(var,type,s1,s2,s3,s4)                    \
    53   do                                                    \
    54     {                                                   \
    55       var = new type *** [s1];                          \
    56       for (uint32_t it1=0; it1<s1; ++it1)               \
    57         {                                               \
    58           var [it1] = new type ** [s2];                 \
    59           for (uint32_t it2=0; it2<s2; ++it2)           \
    60             {                                           \
    61               var [it1][it2] = new type * [s3];         \
    62               for (uint32_t it3=0; it3<s3; ++it3)       \
    63                 {                                       \
    64                   var [it1][it2][it3] = new type [s4];  \
    65                 }                                       \
    66             }                                           \
    67         }                                               \
    68     } while (0)
    69 
    70 #define DELETE0(var)                            \
     58#define ALLOC4_COND(var,type,s1,s2,s3,s4,cond)                  \
     59  do                                                            \
     60    {                                                           \
     61      var = new type *** [s1];                                  \
     62      for (uint32_t it1=0; it1<s1; ++it1)                       \
     63        {                                                       \
     64          var [it1] = new type ** [s2];                         \
     65          for (uint32_t it2=0; it2<s2; ++it2)                   \
     66            {                                                   \
     67              var [it1][it2] = new type * [s3];                 \
     68              for (uint32_t it3=0; it3<s3; ++it3)               \
     69                {                                               \
     70                  if (cond)                                     \
     71                    var [it1][it2][it3] = new type [s4];        \
     72                }                                               \
     73            }                                                   \
     74        }                                                       \
     75    } while (0)
     76
     77#define ALLOC0(var,type)             ALLOC0_COND(var,type,true)
     78#define ALLOC1(var,type,s1)          ALLOC1_COND(var,type,s1,true)
     79#define ALLOC2(var,type,s1,s2)       ALLOC2_COND(var,type,s1,s2,true)
     80#define ALLOC3(var,type,s1,s2,s3)    ALLOC3_COND(var,type,s1,s2,s3,true)
     81#define ALLOC4(var,type,s1,s2,s3,s4) ALLOC4_COND(var,type,s1,s2,s3,s4,true)
     82
     83
     84#define DELETE0_COND(var,cond)                  \
    7185  do                                            \
    7286    {                                           \
    73       delete var;                               \
    74     } while (0)
    75 
    76 #define DELETE1(var,s1)                         \
     87      if (cond)                                 \
     88        delete var;                             \
     89    } while (0)
     90
     91#define DELETE1_COND(var,s1,cond)               \
    7792  do                                            \
    7893    {                                           \
    79       delete [] var;                            \
    80     } while (0)
    81 
    82 #define DELETE2(var,s1,s2)                      \
     94      if (cond)                                 \
     95        delete [] var;                          \
     96    } while (0)
     97
     98#define DELETE2_COND(var,s1,s2,cond)            \
    8399  do                                            \
    84100    {                                            \
    85101      for (uint32_t it1=0; it1<s1; ++it1)        \
    86102        {                                        \
    87           delete [] var [it1];                   \
     103          if (cond)                              \
     104            delete [] var [it1];                 \
    88105        }                                        \
    89106      delete [] var;                             \
    90107    } while (0)
    91108
    92 #define DELETE3(var,s1,s2,s3)                    \
     109#define DELETE3_COND(var,s1,s2,s3,cond)          \
    93110  do                                             \
    94111    {                                            \
     
    97114          for (uint32_t it2=0; it2<s2; ++it2)    \
    98115            {                                    \
    99               delete [] var [it1][it2];          \
     116              if (cond)                          \
     117                delete [] var [it1][it2];        \
    100118            }                                    \
    101119          delete [] var [it1];                   \
     
    104122    } while (0)
    105123
    106 #define DELETE4(var,s1,s2,s3,s4)                        \
     124#define DELETE4_COND(var,s1,s2,s3,s4,cond)              \
    107125  do                                                    \
    108126    {                                                   \
     
    113131              for (uint32_t it3=0; it3<s3; ++it3)       \
    114132                {                                       \
    115                   delete [] var [it1][it2][it3];        \
     133                  if (cond)                             \
     134                    delete [] var [it1][it2][it3];      \
    116135                }                                       \
    117136              delete [] var [it1][it2];                 \
     
    121140      delete [] var;                                    \
    122141    } while (0)
     142
     143#define DELETE0(var)             DELETE1_COND(var,true)
     144#define DELETE1(var,s1)          DELETE1_COND(var,s1,true)
     145#define DELETE2(var,s1,s2)       DELETE2_COND(var,s1,s2,true)
     146#define DELETE3(var,s1,s2,s3)    DELETE3_COND(var,s1,s2,s3,true)
     147#define DELETE4(var,s1,s2,s3,s4) DELETE4_COND(var,s1,s2,s3,s4,true)
    123148
    124149// ======================================================================
Note: See TracChangeset for help on using the changeset viewer.