blob: 2be261790a943e7886141a6eb27645a713b7e6d0 [file]
/* { dg-do compile } */
/* { dg-options "-O2 -msdata" } */
#include <stdint.h>
__attribute__((section(".sdata"))) int a[300];
#define TEST(optype, threshold) \
void consume##optype (int, int, int, int, optype); \
optype test_r0_fit_##optype (void) { \
return ((optype *)a)[threshold]; \
} \
optype test_r0_no_fit_##optype (void) \
{ \
return ((optype *)a)[threshold + 1]; \
} \
void test_r4_fit_##optype (void) \
{ \
return consume##optype (0, 0, 0, 0, ((optype *)a)[threshold]); \
} \
void test_r4_no_fit_##optype (void) \
{ \
return consume##optype (0, 0, 0, 0, ((optype *)a)[threshold + 1]); \
}
TEST (char, 255)
TEST (short, 255)
TEST (int, 255)
TEST (int64_t, 127)
/* { dg-final { scan-assembler "ldb_s\\s+r0,\\\[gp,@a@sda\\+255\\\]" } } */
/* { dg-final { scan-assembler "ldb\\s+r0,\\\[@a\\+256\\\]" } } */
/* { dg-final { scan-assembler "ldb\\s+r4,\\\[gp,@a@sda\\+255\\\]" } } */
/* { dg-final { scan-assembler "ldb\\s+r4,\\\[@a\\+256\\\]" } } */
/* { dg-final { scan-assembler "ld\[hw\].x.as\\s+r0,\\\[gp,@a@sda\\+510\\\]" } } */
/* { dg-final { scan-assembler "ld\[hw\].x\\s+r0,\\\[@a\\+512\\\]" } } */
/* { dg-final { scan-assembler "ld\[hw\].x.as\\s+r4,\\\[gp,@a@sda\\+510\\\]" } } */
/* { dg-final { scan-assembler "ld\[hw\].x\\s+r4,\\\[@a\\+512\\\]" } } */
/* { dg-final { scan-assembler "ld_s\\s+r0,\\\[gp,@a@sda\\+1020\\\]" } } */
/* { dg-final { scan-assembler "ld\\s+r0,\\\[@a\\+1024\\\]" } } */
/* { dg-final { scan-assembler "ld.as\\s+r4,\\\[gp,@a@sda\\+1020\\\]" } } */
/* { dg-final { scan-assembler "ld\\s+r4,\\\[@a\\+1024\\\]" } } */
/* { dg-final { scan-assembler "ldd.as\\s+r0,\\\[gp,@a@sda\\+1016\\\]" { target ll64} } } */
/* { dg-final { scan-assembler "ldd\\s+r0,\\\[@a\\+1024\\\]" { target ll64} } } */
/* { dg-final { scan-assembler "ldd.as\\s+r4,\\\[gp,@a@sda\\+1016\\\]" { target ll64} } } */
/* { dg-final { scan-assembler "ldd\\s+r4,\\\[@a\\+1024\\\]" { target ll64} } } */