Home | History | Annotate | Download | only in mips64
      1 #include <stdio.h>
      2 
      3 __attribute__((noinline)) int test_block_size1 ()
      4 {
      5    int result = 1;
      6    __asm__ __volatile__(
      7          ".set  noreorder"  "\n\t"
      8          ".set  nomacro"    "\n\t"
      9          "b     begin1"     "\n\t"
     10          "nop"              "\n\t"
     11          "begin1:"          "\n\t"
     12          ".rept 56"         "\n\t"
     13          ".word 0"          "\n\t"
     14          ".endr"            "\n\t"
     15          "li    $a0, 0"     "\n\t"
     16          "j     end1"       "\n\t"
     17          "nop"              "\n\t"
     18          "b     label1"     "\n\t"
     19          "nop"              "\n\t"
     20          "label1:"          "\n\t"
     21          "li    $a0, 1"     "\n\t"
     22          "end1:"            "\n\t"
     23          "move  %0, $a0"    "\n\t"
     24          ".set  reorder"    "\n\t"
     25          ".set  macro"      "\n\t"
     26          : /* out */ "=r" (result)
     27          : /* in */
     28          : /* trash */ "a0");
     29    return result;
     30 }
     31 
     32 __attribute__((noinline)) int test_block_size2 ()
     33 {
     34    int result = 1;
     35    __asm__ __volatile__(
     36          ".set  noreorder"  "\n\t"
     37          ".set  nomacro"    "\n\t"
     38          "b     begin2"     "\n\t"
     39          "nop"              "\n\t"
     40          "begin2:"          "\n\t"
     41          ".rept 58"         "\n\t"
     42          ".word 0"          "\n\t"
     43          ".endr"            "\n\t"
     44          "li    $a0, 1"     "\n\t"
     45          "j     end2"       "\n\t"
     46          "li    $a0, 0"     "\n\t"
     47          "end2:"            "\n\t"
     48          "move  %0, $a0"    "\n\t"
     49          ".set  reorder"    "\n\t"
     50          ".set  macro"      "\n\t"
     51          : /* out */ "=r" (result)
     52          : /* in */
     53          : /* trash */ "a0");
     54    return result;
     55 }
     56 
     57 int main ()
     58 {
     59    /*******************TEST1*******************/
     60    if (test_block_size1() == 0)
     61       printf("test1 - PASS\n");
     62    else
     63       printf("test1 - FAIL\n");
     64 
     65    /*******************TEST2*******************/
     66    if (test_block_size2() == 0)
     67       printf("test2 - PASS\n");
     68    else
     69       printf("test2 - FAIL\n");
     70    return 0;
     71 }
     72