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

int main()
{
#if defined(__mips_hard_float)
   int i;
   int s1 = sizeof(int);
   int s2 = sizeof(unsigned long long);
   init_reg_val2();
   /**********************************************************************/
   /*-------------------------------LOAD---------------------------------*/
   /**********************************************************************/
   printf("--- LDC1 ---\n");
   for (i = 0; i < N*s1; i = i+8)
      TEST3("ldc1", i, reg_val1);

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

   printf("--- LDXC1 ---\n");
   for (i = 0; i < N*s1; i = i+8)
      TEST5("ldxc1", i, reg_val1);

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

   printf("--- LWC1 ---\n");
   for (i = 0; i < N*s1; i = i+4)
      TEST3w("lwc1", i, reg_val1);

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

   printf("--- LWXC1 ---\n");
   for (i = 0; i < N*s1; i = i+4)
      TEST5w("lwxc1", i, reg_val1);

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

   /**********************************************************************/
   /*-------------------------------STORE--------------------------------*/
   /**********************************************************************/
   init_reg_val_zero();
   printf("--- SDC1 ---\n");
   for (i = 0; i < N*s1; i = i+8) {
      TEST4("sdc1", i);
   }

   init_reg_val_zero();
   printf("--- SWC1 ---\n");
   for (i = 0; i < (N-1)*s1; i = i+4) {
      TEST4("swc1", i);
   }

   init_reg_val_zero();
   printf("--- SDXC1 ---\n");
   for (i = 0; i < N*s1; i = i+8) {
      TEST6("sdxc1", i);
   }

   init_reg_val_zero();
   printf("--- SWXC1 ---\n");
   for (i = 0; i < (N-1)*s1; i = i+4) {
      TEST6("swxc1", i);
   }
#endif

   return 0;
}
