diff options
Diffstat (limited to 'gcc/testsuite/gcc.target/nvptx/abi-scalar-arg.c')
-rw-r--r-- | gcc/testsuite/gcc.target/nvptx/abi-scalar-arg.c | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.target/nvptx/abi-scalar-arg.c b/gcc/testsuite/gcc.target/nvptx/abi-scalar-arg.c new file mode 100644 index 00000000000..0fe1e671d59 --- /dev/null +++ b/gcc/testsuite/gcc.target/nvptx/abi-scalar-arg.c @@ -0,0 +1,91 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-Wno-pedantic -Wno-long-long -m64" } */ + +/* Scalar return types. In registers when <= 64 bit. */ + +typedef int __attribute__((mode(TI))) ti; + +/* { dg-final { scan-assembler-times ".extern .func dcl_av;" 1 } } */ +void dcl_av (void); + +/* { dg-final { scan-assembler-times ".extern .func dcl_ac \\(.param.u32 %\[_a-z0-9\]*\\);" 1 } } */ +void dcl_ac (char); + +/* { dg-final { scan-assembler-times ".extern .func dcl_as \\(.param.u32 %\[_a-z0-9\]*\\);" 1 } } */ +void dcl_as (short); + +/* { dg-final { scan-assembler-times ".extern .func dcl_ai \\(.param.u32 %\[_a-z0-9\]*\\);" 1 } } */ +void dcl_ai (int); + +/* { dg-final { scan-assembler-times ".extern .func dcl_all \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */ +void dcl_all (long long); + +/* { dg-final { scan-assembler-times ".extern .func dcl_ati \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */ +void dcl_ati (ti); + +/* { dg-final { scan-assembler-times ".extern .func dcl_af \\(.param.f32 %\[_a-z0-9\]*\\);" 1 } } */ +void dcl_af (float); + +/* { dg-final { scan-assembler-times ".extern .func dcl_ad \\(.param.f64 %\[_a-z0-9\]*\\);" 1 } } */ +void dcl_ad (double); + +/* { dg-final { scan-assembler-times ".extern .func dcl_ap \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */ +void dcl_ap (void *); + +void test_1 (void) +{ + dcl_av (); + dcl_ac (1); + dcl_as (2); + dcl_ai (3); + dcl_all (4); + dcl_ati (5); + dcl_af (6); + dcl_ad (7); + dcl_ap (0); +} + +/* { dg-final { scan-assembler-times ".visible .func dfn_av(?:;|\[\r\n\]+\{)" 2 } } */ +void dfn_av (void) +{ +} + +/* { dg-final { scan-assembler-times ".visible .func dfn_ac \\(.param.u32 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */ +void dfn_ac (char c) +{ +} + +/* { dg-final { scan-assembler-times ".visible .func dfn_as \\(.param.u32 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */ +void dfn_as (short s) +{ +} + +/* { dg-final { scan-assembler-times ".visible .func dfn_ai \\(.param.u32 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */ +void dfn_ai (int i) +{ +} + +/* { dg-final { scan-assembler-times ".visible .func dfn_all \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */ +void dfn_all (long long ll) +{ +} + +/* { dg-final { scan-assembler-times ".visible .func dfn_ati \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */ +void dfn_ati (ti t) +{ +} + +/* { dg-final { scan-assembler-times ".visible .func dfn_af \\(.param.f32 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */ +void dfn_af (float f) +{ +} + +/* { dg-final { scan-assembler-times ".visible .func dfn_ad \\(.param.f64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */ +void dfn_ad (double d) +{ +} + +/* { dg-final { scan-assembler-times ".visible .func dfn_ap \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */ +void dfn_ap (void *p) +{ +} |