Home | History | Annotate | Download | only in mips32
      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 $4, 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 $4, 1"            "\n\t"
     22          "end1:"               "\n\t"
     23          "move %0, $4"         "\n\t"
     24          ".set reorder"        "\n\t"
     25          ".set macro"          "\n\t"
     26          : /*out*/ "=r" (result)
     27          : /*in*/
     28          : /*trash*/ "$4");
     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 $4, 1"            "\n\t"
     45          "j end2"              "\n\t"
     46          "li $4, 0"            "\n\t"
     47          "end2:"               "\n\t"
     48          "move %0, $4"         "\n\t"
     49          ".set reorder"        "\n\t"
     50          ".set macro"          "\n\t"
     51          : /*out*/ "=r" (result)
     52          : /*in*/
     53          : /*trash*/ "$4");
     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