swar_test_add.c 516 Bytes
////A: --has-swar
//C: -daiteq-swar-enable

#define NUM_ELMS    2000
#define BITSZ       2
#define PACKING     (32/BITSZ)
#define ARRAY_SIZE  ((NUM_ELMS+PACKING-1)/PACKING)

typedef unsigned int s16x2b __attribute__((subword(BITSZ, PACKING)));

s16x2b data_z[ARRAY_SIZE];
s16x2b data_a[ARRAY_SIZE]; /* data are set somewhere else */
s16x2b data_b[ARRAY_SIZE];

void swar_add(void)
{
  for (unsigned i=0;i<ARRAY_SIZE;++i)
  {
    data_z[i] = data_a[i] + data_b[i];
  }
}

int main(void)
{
  swar_add();
  return 0;
}