1 /* { dg-do compile } */
2 /* { dg-options "-O" } */
3
4 void
5 f (void)
6 {
7 register float s0 asm ("s0");
8 register float s7 asm ("s7");
9 register float s8 asm ("s8");
10 register float s15 asm ("s15");
11 register float s16 asm ("s16");
12 register float s31 asm ("s31");
13 asm volatile ("// s0 out: %s0" : "=w" (s0));
14 asm volatile ("// s0 in: %s0" :: "x" (s0));
15 asm volatile ("// s7 out: %s0" : "=w" (s7));
16 asm volatile ("// s7 in: %s0" :: "x" (s7));
17 asm volatile ("// s8 out: %s0" : "=w" (s8));
18 asm volatile ("// s8 in: %s0" :: "x" (s8));
19 asm volatile ("// s15 out: %s0" : "=w" (s15));
20 asm volatile ("// s15 in: %s0" :: "x" (s15));
21 asm volatile ("// s16 out: %s0" : "=w" (s16));
22 asm volatile ("// s16 in: %s0" :: "x" (s16));
23 asm volatile ("// s31 out: %s0" : "=w" (s31));
24 asm volatile ("// s31 in: %s0" :: "x" (s31));
25 }
26
27 /* { dg-final { scan-assembler {\t// s0 out: s0\n.*[/]/ s0 in: s0\n} } } */
28 /* { dg-final { scan-assembler {\t// s7 out: s7\n.*[/]/ s7 in: s7\n} } } */
29 /* { dg-final { scan-assembler {\t// s8 out: s8\n.*[/]/ s8 in: s8\n} } } */
30 /* { dg-final { scan-assembler {\t// s15 out: s15\n.*[/]/ s15 in: s15\n} } } */
31 /* { dg-final { scan-assembler {\t// s16 out: s16\n.*\tfmov\t(s[0-7]), s16\n.*[/]/ s16 in: \1\n} } } */
32 /* { dg-final { scan-assembler {\t// s31 out: s31\n.*\tfmov\t(s[0-7]), s31\n.*[/]/ s31 in: \1\n} } } */
33 /* { dg-final { scan-assembler-not {\t// s16 in: s16\n} } } */
34 /* { dg-final { scan-assembler-not {\t// s31 in: s31\n} } } */