Use gather loads for strided accesses
[official-gcc.git] / gcc / testsuite / gcc.target / nvptx / abi-complex-arg.c
blobe8f0832795973ad007c93bf7d86f1cf9f7f8c09e
1 /* { dg-do compile } */
2 /* { dg-additional-options "-Wno-pedantic -Wno-long-long -m64" } */
4 /* Comples arg types. All these should be in 2 registers. */
6 /* { dg-final { scan-assembler-times ".extern .func dcl_acc \\(.param.u32 %\[_a-z0-9\]*, .param.u32 %\[_a-z0-9\]*\\);" 1 } } */
7 void dcl_acc (_Complex char);
9 /* { dg-final { scan-assembler-times ".extern .func dcl_acs \\(.param.u32 %\[_a-z0-9\]*, .param.u32 %\[_a-z0-9\]*\\);" 1 } } */
10 void dcl_acs (_Complex short);
12 /* { dg-final { scan-assembler-times ".extern .func dcl_aci \\(.param.u32 %\[_a-z0-9\]*, .param.u32 %\[_a-z0-9\]*\\);" 1 } } */
13 void dcl_aci (_Complex int);
15 /* { dg-final { scan-assembler-times ".extern .func dcl_acll \\(.param.u64 %\[_a-z0-9\]*, .param.u64 %\[_a-z0-9\]*\\);" 1 } } */
16 void dcl_acll (_Complex long);
18 /* { dg-final { scan-assembler-times ".extern .func dcl_acf \\(.param.f32 %\[_a-z0-9\]*, .param.f32 %\[_a-z0-9\]*\\);" 1 } } */
19 void dcl_acf (_Complex float);
21 /* { dg-final { scan-assembler-times ".extern .func dcl_acd \\(.param.f64 %\[_a-z0-9\]*, .param.f64 %\[_a-z0-9\]*\\);" 1 } } */
22 void dcl_acd (_Complex double);
24 #define M(T,r,i) ({_Complex T x; __real__ (x) = (r), __imag__(x) == (i); x; })
26 void test_1 (void)
28 dcl_acc (M (char, 1, 2));
29 dcl_acs (M (short, 3, 4));
30 dcl_aci (M (int, 5, 6));
31 dcl_acll (M (long long, 7, 8));
32 dcl_acf (M (float, 9, 10));
33 dcl_acd (M (double, 11, 12));
36 /* { dg-final { scan-assembler-times ".visible .func dfn_acc \\(.param.u32 %\[_a-z0-9\]*, .param.u32 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
37 void dfn_acc (_Complex char c)
41 /* { dg-final { scan-assembler-times ".visible .func dfn_acs \\(.param.u32 %\[_a-z0-9\]*, .param.u32 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
42 void dfn_acs (_Complex short s)
46 /* { dg-final { scan-assembler-times ".visible .func dfn_aci \\(.param.u32 %\[_a-z0-9\]*, .param.u32 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
47 void dfn_aci (_Complex int i)
51 /* { dg-final { scan-assembler-times ".visible .func dfn_acll \\(.param.u64 %\[_a-z0-9\]*, .param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
52 void dfn_acll (_Complex long long ll)
56 /* { dg-final { scan-assembler-times ".visible .func dfn_acf \\(.param.f32 %\[_a-z0-9\]*, .param.f32 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
57 void dfn_acf (_Complex float f)
61 /* { dg-final { scan-assembler-times ".visible .func dfn_acd \\(.param.f64 %\[_a-z0-9\]*, .param.f64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
62 void dfn_acd (_Complex double d)