(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
nvptx/
abi-complex-arg.c
       1  /* { dg-do compile } */
       2  /* { dg-additional-options "-Wno-pedantic -Wno-long-long -m64" } */
       3  
       4  /* Comples arg types.  All these should be in 2 registers.  */
       5  
       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);
       8  
       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);
      11  
      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);
      14  
      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);
      17  
      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);
      20  
      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);
      23  
      24  #define M(T,r,i) ({_Complex T x; __real__ (x) = (r), __imag__(x) == (i); x; })
      25  
      26  void test_1 (void)
      27  {
      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));
      34  }
      35  
      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)
      38  {
      39  }
      40  
      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)
      43  {
      44  }
      45  
      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)
      48  {
      49  }
      50  
      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)
      53  {
      54  }
      55  
      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)
      58  {
      59  }
      60  
      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)
      63  {
      64  }