testdata64.inc 9.98 KB

#define ITYPE_RAW uint64_t
#define STYPE_RAW int64_t

// SWAR operations for data packed in 64bits
typedef struct test_64b_item {
  unsigned swop; /* swar operation code */
  unsigned dt;
  ITYPE_RAW opa;
  ITYPE_RAW opb;
  ITYPE_RAW reference;
} test_64b_item_t;


const ITYPE_RAW corr[] = {
0x0000000000000007, 0x000000000C000000, 0x00000000FFFFFFFD,
0x000000000000FFFF, 0x0000000030000000, 0x0000000000000003,
0x000000000000FFFF, 0x0000000000F00000, 0x0000000000000006,
0x000000000000FFFC, 0x00000000CCC00000, 0x0000000000000009,
0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
0x0000000000000000, 0x000000000333CFF0, 0x00000000FFFFFFE8,
0x0000000000000003, 0x0000000000000000, 0x0000000000000000,
0x000000000000FFFF, 0x0000000030000000, 0x0000000000000003,
0x000000000000FE00, 0x000000000300C000, 0x0000000000000000,
0x0000000000000001, 0x00000000000000CC, 0x00000000FFFFFFFA,
0x000000000000FFFF, 0x000000003000C00C, 0x0000000000000009,
0x000000000000FF00, 0x000000000CC0CCF0, 0x00000000FFFFFFFA,
0x0000000000000000, 0x00000000033C0300, 0x00000000FFFFFFF4,
0x000000000000FFFF, 0x00000000C0000030, 0x0000000000000006,
0x000000000000FFFF, 0x00000000F0000033, 0x000000000000000C,
0x000000000000FFFF, 0x000000000003C000, 0x0000000000000006,
0x0000000000008000, 0x0000000000C03003, 0x00000000FFFFFFF7,
0x000000000000003F, 0x0000000000003000, 0x00000000FFFFFFFD,
0x000000000000FFFF, 0x0000000000000000, 0x0000000000000000,
0x000000000000C000, 0x00000000300C0F3C, 0x00000000FFFFFFF4,
0x000000000000003F, 0x000000000000C000, 0x00000000FFFFFFFD,
0x000000000000FFFF, 0x00000000003F03C3, 0x0000000000000012,
0x000000000000FFFF, 0x0000000003030000, 0x0000000000000006,
0x000000000000FFFF, 0x00000000030C0FF0, 0x0000000000000012,
0x000000000000FFFF, 0x0000000033CC30CC, 0x0000000000000015,
0x000000000000FFFF, 0x0000000000033C00, 0x0000000000000009,
0x000000000000FFF0, 0x000000003030F000, 0x000000000000000C,
0x0000000000000000, 0x000000000030030F, 0x00000000FFFFFFF4,
0x00000000000007FF, 0x000000000C000C00, 0x0000000000000000,
0x000000000000FFFF, 0x000000000303000C, 0x0000000000000009,
0x000000000000FFFF, 0x00000000003C0000, 0x0000000000000006,
0x000000000000F800, 0x000000000300C30C, 0x00000000FFFFFFFA,
0x0000000000000000, 0x00000000F00F0000, 0x00000000FFFFFFF4,
0x0000000000000000, 0x0000000000033003, 0x00000000FFFFFFF7,
0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
0x0000000000000001, 0x0000000000000000, 0x0000000000000000,
0x000000000000FFFF, 0x000000003CCC0000, 0x000000000000000C,
0x000000000000FE00, 0x0000000003C00C00, 0x0000000000000003,
0x0000000000000000, 0x000000000000C000, 0x00000000FFFFFFFD,
0x0000000000000000, 0x0000000003CC0F00, 0x00000000FFFFFFF1,
0x0000000000000000, 0x00000000C0000000, 0x00000000FFFFFFFD,
0x0000000000000000, 0x000000000FCCC000, 0x00000000FFFFFFF1,
0x0000000000007FFF, 0x00000000C0C00000, 0x0000000000000000,
0x000000000000FFFF, 0x0000000003000000, 0x0000000000000003,
0x000000000000FFFF, 0x000000000C000003, 0x0000000000000006,
0x000000000000FFFF, 0x000000000C00F300, 0x000000000000000C,
0x000000000000FFC0, 0x00000000000000F0, 0x00000000FFFFFFFA,
0x0000000000000000, 0x000000000C00C00C, 0x00000000FFFFFFF7,
0x0000000000003FFF, 0x00000000030CFC00, 0x000000000000000F,
0x000000000000FFE0, 0x00000000000000CC, 0x00000000FFFFFFFA,
0x0000000000000000, 0x00000000C3000C00, 0x00000000FFFFFFF7,
0x0000000000001FFF, 0x00000000000C0CC0, 0x0000000000000009,
0x000000000000FFF0, 0x0000000000000030, 0x00000000FFFFFFFD,
0x0000000000000000, 0x000000000C3300C0, 0x00000000FFFFFFF4,
0x0000000000000FFF, 0x000000000000000C, 0x0000000000000003,
0x000000000000FFF0, 0x00000000C300300C, 0x0000000000000006,
0x0000000000000000, 0x00000000000000FF, 0x00000000FFFFFFF4,
0x0000000000000000, 0x00000000FC00003C, 0x00000000FFFFFFF1
};

const ITYPE_RAW demod[] = {
0x00000000EF7208DF, 0x00000000AEE6AAAA, 0x000000000C000000,
0x000000007208DEB3, 0x00000000AAAEEAEA, 0x0000000000000000,
0x0000000014CEB314, 0x000000009BAAABAA, 0x0000000030003030,
0x00000000CEF7208D, 0x00000000AAAABA6A, 0x00000000000000C0,
0x00000000F7208DFB, 0x00000000EBAABBAA, 0x0000000000F03000,
0x00000000314CEB31, 0x00000000AAAAAA6A, 0x0000000000000000,
0x000000004CEF7208, 0x00000000B96AFA6A, 0x00000000CCC0F0C0,
0x00000000DF7208DF, 0x00000000EAAB9ADA, 0x0000000000000300,
0x00000000B314CEB3, 0x00000000AAA6AEEB, 0x0000000000000003,
0x0000000014CEB720, 0x0000000066AEAAAA, 0x0000000000000000,
0x000000008DF7208D, 0x0000000069A9ABA6, 0x0000000003333030,
0x00000000F7314CEB, 0x000000009ADBBBAA, 0x00000000CFF0C3C0,
0x00000000314CEB72, 0x00000000AAA9AA6A, 0x0000000000000300,
0x0000000008DF7208, 0x00000000AAAAAA6A, 0x0000000000000000,
0x00000000DF7314CE, 0x00000000A9A6AAEA, 0x0000000030003000,
0x00000000B314CEB3, 0x00000000BB6AAAAB, 0x0000000000003003,
0x00000000208DF720, 0x00000000BAABEAA6, 0x000000000300C000,
0x000000008DF7314C, 0x00000000BAAAAAAE, 0x00000000C0000000,
0x00000000EB314CEB, 0x00000000BBA9AAFA, 0x0000000000000000,
0x000000003208DF72, 0x000000006AAA7BD6, 0x0000000000CC0000,
0x0000000008DF7214, 0x00000000ABAA65AA, 0x0000000030000000,
0x00000000CEB314CE, 0x00000000BFAAAABA, 0x00000000C00C0000,
0x00000000B3108DF7, 0x00000000AAEABAAA, 0x000000000CC00000,
0x00000000208DF721, 0x00000000EABA99AA, 0x00000000CCF000C0,
0x000000004CEB314C, 0x00000000AAE96EEA, 0x00000000033C0000,
0x00000000EB3108DF, 0x00000000A6AEA9AA, 0x0000000003000000,
0x000000007208DF72, 0x000000005A9EAAAA, 0x00000000C0000000,
0x0000000004CEB314, 0x0000000069EBB9AA, 0x0000000000300000,
0x00000000CEB3108D, 0x00000000F6AAAAAA, 0x00000000F0000000,
0x00000000F7208DF7, 0x00000000AA6696AF, 0x0000000000330003,
0x00000000204CEB31, 0x00000000A69AAAAE, 0x0000000000030000,
0x000000004CEB3148, 0x00000000BEAAAAAA, 0x00000000C000C000,
0x00000000DF7208DF, 0x00000000AAA6EAAE, 0x0000000000C00000,
0x000000007208CEB3, 0x00000000AE9AAEA9, 0x0000000030030000,
0x0000000014CEB314, 0x00000000A9A9AA6A, 0x0000000000000300,
0x000000008DF7208D, 0x00000000EBAA5AAE, 0x0000000030000000,
0x00000000F7208CEB, 0x00000000AAAAA9AA, 0x0000000000000030,
0x00000000314CEB31, 0x00000000AA5AAEA6, 0x0000000000000000,
0x000000004CDF7208, 0x00000000A5AEA776, 0x00000000300C303C,
0x00000000DF7208CE, 0x00000000AAEEABBA, 0x000000000F3C0000,
0x00000000B314CEB3, 0x00000000AA9AAAAA, 0x0000000000000000,
0x0000000014CDF720, 0x00000000E6E9AAB6, 0x00000000C000030C,
0x000000008DF7208D, 0x00000000AAAABEB7, 0x00000000003F00C0,
0x00000000EB314CEB, 0x00000000AAAEBAA9, 0x0000000003C300C0,
0x00000000314CEF72, 0x00000000AAA6AAAE, 0x0000000003030000,
0x0000000008DF7208, 0x00000000A6AEA9AE, 0x0000000000000000,
0x00000000DEB314CE, 0x00000000AAAE9AFA, 0x00000000030C0000,
0x00000000B314CEF7, 0x000000006AEFF6AA, 0x000000000FF00000,
0x00000000208DF720, 0x00000000AEAB66DA, 0x0000000033CC0000,
0x000000008DFB314C, 0x00000000ABBAEAB9, 0x0000000030CC000F,
0x00000000EB314CEF, 0x00000000AABAAEA9, 0x0000000000030C03,
0x000000007208DF72, 0x00000000AEEAEAAA, 0x000000003C000000,
0x0000000008DFB314, 0x00000000ABAB6EAA, 0x0000000030300000,
0x00000000CEB314CE, 0x00000000B6EAAAAA, 0x00000000F0000000,
0x00000000B7208DF7, 0x00000000ABBAA7A6, 0x0000000000303C00,
0x00000000208DF731, 0x00000000AAE5BA9E, 0x00000000030F0300,
0x000000004CEB314C, 0x00000000AA6AA99A, 0x000000000C000000,
0x00000000EB7208DF, 0x00000000AEEAAAAA, 0x000000000C000000,
0x000000007208DF73, 0x00000000AAABEEA9, 0x0000000003030000
};

const struct {
  const ITYPE_RAW *pdata;
  unsigned  num;
} indirdata[] = {
  {corr, sizeof(corr)/(sizeof(ITYPE_RAW)*3)},
  {demod, sizeof(demod)/(sizeof(ITYPE_RAW)*3)},
};

enum indirdata_indices {
  INDIR_CORR  = 0,
  INDIR_DEMOD = 1,
};

const test_64b_item_t testdata[] = {
/* -------------------------------------------------------------------------- */
/* 1p32 */
//  {OP | CTRL,    DT, A, B, REF},

//  {SW_OP_ADD | SW_CTRL_ALU,   DT_1P32,      0x11111111, 0x00000000, 0x11111111},
//  {SW_OP_ADD | SW_CTRL_ALU,   DT_1P32,      0x10101010, 0x01010101, 0x11111111},
//  {SW_OP_MUL | SW_CTRL_ALU | SW_CTRL_SATURATE,   DT_1P32,  0x10101010, 0x01010101, 0x00000000},

#ifdef SWAR_CORR
  {SW_OP_COR2b | SW_CTRL_SIGNED,  DT_2P64 | DT_ARRAY,             INDIR_CORR, 0, 0}, /* the 1st argument contains an index to indirdata (0=corr, 1=demod) */
  {SW_OP_COR1b,                   DT_1P64 | DT_ARRAY | DT_SWREF,  INDIR_CORR, 0, 0},
  {SW_OP_COR3b | SW_CTRL_REDUCE,  DT_3P64 | DT_ARRAY | DT_SWREF,  INDIR_CORR, 0, 0},
  {SW_OP_COR4b | SW_CTRL_SIGNED | SW_CTRL_REDUCE, DT_4P64 | DT_ARRAY | DT_SWREF, INDIR_CORR, 0, 0},

  {SW_OP_DEMC2bG,                 DT_2P64 | DT_ARRAY, INDIR_DEMOD, 0, 0},
  {SW_OP_DEMC2b,                  DT_2P64 | DT_ARRAY | DT_SWREF, INDIR_DEMOD, 0, 0},
  {SW_OP_DEMC4b,                  DT_4P64 | DT_ARRAY | DT_SWREF, INDIR_DEMOD, 0, 0},
  {SW_OP_DEMR3b,                  DT_3P64 | DT_ARRAY | DT_SWREF, INDIR_DEMOD, 0, 0},
#endif /* SWAR_CORR */

#ifdef SWAR_SINCOS
  {SW_OP_SC4b,                    DT_4P64 | DT_ARRAY | DT_SWREF, INDIR_DEMOD, 0, 0},
  {SW_OP_SC3b,                    DT_3P64 | DT_ARRAY | DT_SWREF, INDIR_DEMOD, 0, 0},
  {SW_OP_SC2b,                    DT_2P64 | DT_ARRAY | DT_SWREF, INDIR_DEMOD, 0, 0},
  {SW_OP_SC1b,                    DT_1P64 | DT_ARRAY | DT_SWREF, INDIR_DEMOD, 0, 0},
#endif /* SWAR_SINCOS */

#ifdef SWAR_ALU
  {SW_OP_ADD | SW_CTRL_VIDEO,     DT_8P64 | DT_ARRAY | DT_SWREF, INDIR_CORR, 0, 0},
  {SW_OP_SUB | SW_CTRL_VIDEO,     DT_8P64 | DT_ARRAY | DT_SWREF, INDIR_CORR, 0, 0},
  {SW_OP_MUL | SW_CTRL_VIDEO,     DT_8P64 | DT_ARRAY | DT_SWREF, INDIR_CORR, 0, 0},

  {SW_OP_ADD | SW_CTRL_AUDIO,     DT_16P64 | DT_ARRAY | DT_SWREF, INDIR_CORR, 0, 0},
  {SW_OP_SUB | SW_CTRL_AUDIO,     DT_16P64 | DT_ARRAY | DT_SWREF, INDIR_CORR, 0, 0},
  {SW_OP_MUL | SW_CTRL_AUDIO,     DT_16P64 | DT_ARRAY | DT_SWREF, INDIR_CORR, 0, 0},
/*
  {SW_OP_ADD | SW_CTRL_ALU,       DT_2P64 | DT_ARRAY | DT_SWREF, INDIR_CORR, 0, 0},
  {SW_OP_SUB | SW_CTRL_ALU,       DT_2P64 | DT_ARRAY | DT_SWREF, INDIR_CORR, 0, 0},
  {SW_OP_MUL | SW_CTRL_ALU,       DT_2P64 | DT_ARRAY | DT_SWREF, INDIR_CORR, 0, 0},
*/
#endif /* SWAR_ALU */

  // get value from accumulator, 1st argument contains an index of accumulator register
  {ACCGET,        0,        1,           0,          0},
  
};

#define SIZETESTDATA  (sizeof(testdata)/sizeof(test_64b_item_t))