#include <stdio.h>
#include "macro_load_store.h"

int main()
{
   int i;
   int s1 = sizeof(int);
   int s2 = sizeof(unsigned long long);
   init_reg_val2();
   /**********************************************************************/
   /*-------------------------------LOAD---------------------------------*/
   /**********************************************************************/
   /* lb */
   for (i = 0; i < N*s1; i++)
      TEST1("lb", i, reg_val1);

   for (i = 0; i < N*s2; i++)
      TEST1("lb", i, reg_val2);

   /* lbu */
   for (i = 0; i < N*s1; i++)
      TEST1("lbu", i, reg_val1);

   for (i = 0; i < N*s2; i++)
      TEST1("lbu", i, reg_val2);

   /* ld */
   for (i = 0; i < N*s1; i = i+8)
      TEST1("ld", i, reg_val1);

   for (i = 0; i < N*s2; i = i+8)
      TEST1("ld", i, reg_val2);

   /* ldl */
   for (i = 0; i < N*s1; i++)
      TEST1("ldl", i, reg_val1);

   for (i = 0; i < N*s2; i++)
      TEST1("ldl", i, reg_val2);

   /* ldr */
   for (i = 0; i < N*s1; i++)
      TEST1("ldr", i, reg_val1);

   for (i = 0; i < N*s2; i++)
      TEST1("ldr", i, reg_val2);

   /* lh */
   for (i = 0; i < N*s1; i = i+2)
      TEST1("lh", i, reg_val1);

   for (i = 0; i < N*s2; i = i+2)
      TEST1("lh", i, reg_val2);

   /* lhu */
   for (i = 0; i < N*s1; i = i+2)
      TEST1("lhu", i, reg_val1);

   for (i = 0; i < N*s2; i = i+2)
      TEST1("lhu", i, reg_val2);

   /* lw */
   for (i = 0; i < N*s1; i = i+4)
      TEST1("lw", i, reg_val1);

   for (i = 0; i < N*s2; i = i+4)
      TEST1("lw", i, reg_val2);

   /* lwl */
   for (i = 0; i < N*s1; i++)
      TEST1("lwl", i, reg_val1);

   for (i = 0; i < N*s2; i++)
      TEST1("lwl", i, reg_val2);

   /* lwr */
   for (i = 0; i < N*s1; i++)
      TEST1("lwr", i, reg_val1);

   for (i = 0; i < N*s2; i++)
      TEST1("lwr", i, reg_val2);

   /* lwu */
   for (i = 0; i < N*s1; i = i+4)
      TEST1("lwu", i, reg_val1);

   for (i = 0; i < N*s2; i = i+4)
      TEST1("lwu", i, reg_val2);

   /**********************************************************************/
   /*-------------------------------STORE--------------------------------*/
   /**********************************************************************/
   init_reg_val_zero();
   /* sb */
   for (i = 0; i < (N-1)*s2; i++)
      TEST2("sb", i);

   init_reg_val_zero();
   /* sd */
   for (i = 0; i < (N-1)*s2; i = i+8)
      TEST2("sd", i);

   init_reg_val_zero();
   /* sdl */
   for (i = 0; i < (N-1)*s2; i++)
      TEST2("sdl", i);

   init_reg_val_zero();
   /* sdr */
   for (i = 8; i < (N-1)*s2; i++)
      TEST2("sdr", i);

   init_reg_val_zero();
   /* sh */
   for (i = 0; i < (N-1)*s2; i = i+2)
      TEST2("sh", i);

   init_reg_val_zero();
   /* sw */
   for (i = 0; i < (N-1)*s2; i = i+4)
      TEST2("sw", i);

   init_reg_val_zero();
   /* swl */
   for (i = 4; i < (N-1)*s2; i++)
      TEST2("swl", i);

   init_reg_val_zero();
   /* swr */
   for (i = 4; i < (N-1)*s2; i++)
      TEST2("swr", i);

   return 0;
}