| /* { dg-options "(-mips16) -mcode-readable=yes -mgp32 addressing=absolute" } */ |
| /* { dg-skip-if ".half requires -O" { *-*-* } { "-O0" } { "" } } */ |
| |
| volatile int x1; |
| volatile int x2; |
| volatile int x3; |
| volatile int x4; |
| volatile int x5; |
| volatile int x6; |
| volatile int x7; |
| volatile int x8; |
| volatile int x9; |
| volatile int x10; |
| volatile int x11; |
| |
| MIPS16 int |
| foo (int i, volatile int *x) |
| { |
| switch (i) |
| { |
| case 1: return x1 + x[0]; |
| case 2: return x2 + x[1]; |
| case 3: return x3 + x[2]; |
| case 4: return x4 + x[3]; |
| case 5: return x5 + x[4]; |
| case 6: return x6 + x[5]; |
| case 7: return x7 + x[6]; |
| case 8: return x8 + x[7]; |
| case 9: return x9 + x[8]; |
| case 10: return x10 + x[9]; |
| case 11: return x11 + x[10]; |
| default: return 0; |
| } |
| } |
| |
| extern int k[]; |
| |
| MIPS16 int * |
| bar (void) |
| { |
| return k; |
| } |
| |
| /* { dg-final { scan-assembler "\tla\t" } } */ |
| /* { dg-final { scan-assembler "\t\\.half\t" } } */ |
| /* { dg-final { scan-assembler-not "%hi\\(\[^)\]*L" } } */ |
| /* { dg-final { scan-assembler-not "%lo\\(\[^)\]*L" } } */ |
| |
| /* { dg-final { scan-assembler "\t\\.word\tk\n" } } */ |
| /* { dg-final { scan-assembler-not "%hi\\(k\\)" } } */ |
| /* { dg-final { scan-assembler-not "%lo\\(k\\)" } } */ |