• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #include <stdio.h>
2 
test_block_size1()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 
test_block_size2()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 
main()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