| /* { dg-options "-O1" } */ |
| /* { dg-do compile } */ |
| |
| #define RegRdSI(v,a) ((v) = *(volatile __attribute__((uncached)) int *)(a)) |
| #define RegRdQI(v,a) ((v) = *(volatile __attribute__((uncached)) char *)(a)) |
| #define RegRdHI(v,a) ((v) = *(volatile __attribute__((uncached)) short *)(a)) |
| #define RegRdDI(v,a) \ |
| ((v) = *(volatile __attribute__((uncached)) long long *)(a)) |
| |
| char a0; |
| short a1; |
| int a2; |
| long long a3; |
| |
| void foox (void *p) |
| { |
| RegRdQI (a0, p++); |
| RegRdHI (a1, p++); |
| RegRdSI (a2, p++); |
| RegRdDI (a3, p ); |
| } |
| |
| void barx (int arg) |
| { |
| RegRdQI (a0, 0x40000); |
| RegRdHI (a1, 0x40010); |
| RegRdSI (a2, 0x40020); |
| RegRdDI (a3, 0x40040); |
| } |
| |
| /* { dg-final { scan-assembler-times "ldb\.di" 2 } } */ |
| /* { dg-final { scan-assembler-times "ld\[hw\]\.di" 2 } } */ |
| /* { dg-final { scan-assembler-times "ldd\.di" 2 { target { ll64 } } } } */ |
| /* { dg-final { scan-assembler-times "ld\.di" 2 { target { ll64 } } } } */ |
| /* { dg-final { scan-assembler-times "ld\.di" 6 { target { ! { ll64 } } } } } */ |