/* { dg-do compile } */ /* { dg-options "-O" } */ void f (void) { register float s0 asm ("s0"); register float s7 asm ("s7"); register float s8 asm ("s8"); register float s15 asm ("s15"); register float s16 asm ("s16"); register float s31 asm ("s31"); asm volatile ("// s0 out: %s0" : "=w" (s0)); asm volatile ("// s0 in: %s0" :: "x" (s0)); asm volatile ("// s7 out: %s0" : "=w" (s7)); asm volatile ("// s7 in: %s0" :: "x" (s7)); asm volatile ("// s8 out: %s0" : "=w" (s8)); asm volatile ("// s8 in: %s0" :: "x" (s8)); asm volatile ("// s15 out: %s0" : "=w" (s15)); asm volatile ("// s15 in: %s0" :: "x" (s15)); asm volatile ("// s16 out: %s0" : "=w" (s16)); asm volatile ("// s16 in: %s0" :: "x" (s16)); asm volatile ("// s31 out: %s0" : "=w" (s31)); asm volatile ("// s31 in: %s0" :: "x" (s31)); } /* { dg-final { scan-assembler {\t// s0 out: s0\n.*[/]/ s0 in: s0\n} } } */ /* { dg-final { scan-assembler {\t// s7 out: s7\n.*[/]/ s7 in: s7\n} } } */ /* { dg-final { scan-assembler {\t// s8 out: s8\n.*[/]/ s8 in: s8\n} } } */ /* { dg-final { scan-assembler {\t// s15 out: s15\n.*[/]/ s15 in: s15\n} } } */ /* { dg-final { scan-assembler {\t// s16 out: s16\n.*\tfmov\t(s[0-7]), s16\n.*[/]/ s16 in: \1\n} } } */ /* { dg-final { scan-assembler {\t// s31 out: s31\n.*\tfmov\t(s[0-7]), s31\n.*[/]/ s31 in: \1\n} } } */ /* { dg-final { scan-assembler-not {\t// s16 in: s16\n} } } */ /* { dg-final { scan-assembler-not {\t// s31 in: s31\n} } } */