(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
nvptx/
abi-scalar-ret.c
       1  /* { dg-do compile } */
       2  /* { dg-additional-options "-Wno-pedantic -Wno-long-long -m64" } */
       3  
       4  /* Scalar return types.  In registers when <= 64 bit.  */
       5  
       6  typedef int __attribute__((mode(TI))) ti;
       7  
       8  /* { dg-final { scan-assembler-times ".extern .func dcl_rv;" 1 } } */
       9  void dcl_rv (void);
      10  
      11  /* { dg-final { scan-assembler-times ".extern .func \\(.param.u32 %\[_a-z\]*\\) dcl_rc;" 1 } } */
      12  char dcl_rc (void);
      13  
      14  /* { dg-final { scan-assembler-times ".extern .func \\(.param.u32 %\[_a-z\]*\\) dcl_rs;" 1 } } */
      15  short dcl_rs (void);
      16  
      17  /* { dg-final { scan-assembler-times ".extern .func \\(.param.u32 %\[_a-z\]*\\) dcl_ri;" 1 } } */
      18  int dcl_ri (void);
      19  
      20  /* { dg-final { scan-assembler-times ".extern .func \\(.param.u64 %\[_a-z\]*\\) dcl_rll;" 1 } } */
      21  long long dcl_rll (void);
      22  
      23  /* { dg-final { scan-assembler-times ".extern .func dcl_rti \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
      24  ti dcl_rti (void);
      25  
      26  /* { dg-final { scan-assembler-times ".extern .func \\(.param.f32 %\[_a-z\]*\\) dcl_rf;" 1 } } */
      27  float dcl_rf (void);
      28  
      29  /* { dg-final { scan-assembler-times ".extern .func \\(.param.f64 %\[_a-z\]*\\) dcl_rd;" 1 } } */
      30  double dcl_rd (void);
      31  
      32  /* { dg-final { scan-assembler-times ".extern .func \\(.param.u64 %\[_a-z\]*\\) dcl_rp;" 1 } } */
      33  void *dcl_rp (void);
      34  
      35  void test_1 (void)
      36  {
      37    dcl_rv ();
      38    dcl_rc ();
      39    dcl_rs ();
      40    dcl_ri ();
      41    dcl_rll ();
      42    dcl_rti ();
      43    dcl_rf ();
      44    dcl_rd ();
      45    dcl_rp ();
      46  }
      47  
      48  /* { dg-final { scan-assembler-times ".visible .func dfn_rv(?:;|\[\r\n\]+\{)" 2 } } */
      49  void dfn_rv (void)
      50  {
      51    return;
      52  }
      53  
      54  /* { dg-final { scan-assembler-times ".visible .func \\(.param.u32 %\[_a-z0-9\]*\\) dfn_rc(?:;|\[\r\n\]+\{)" 2 } } */
      55  char dfn_rc (void)
      56  {
      57    return 1;
      58  }
      59  
      60  /* { dg-final { scan-assembler-times ".visible .func \\(.param.u32 %\[_a-z0-0\]*\\) dfn_rs(?:;|\[\r\n\]+\{)" 2 } } */
      61  short dfn_rs (void)
      62  {
      63    return 2;
      64  }
      65  
      66  /* { dg-final { scan-assembler-times ".visible .func \\(.param.u32 %\[_a-z0-9\]*\\) dfn_ri(?:;|\[\r\n\]+\{)" 2 } } */
      67  int dfn_ri (void)
      68  {
      69    return 3;
      70  }
      71  
      72  /* { dg-final { scan-assembler-times ".visible .func \\(.param.u64 %\[_a-z0-9\]*\\) dfn_rll(?:;|\[\r\n\]+\{)" 2 } } */
      73  long long dfn_rll (void)
      74  {
      75    return 4;
      76  }
      77  
      78  /* { dg-final { scan-assembler-times ".visible .func dfn_rti \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
      79  ti dfn_rti (void)
      80  {
      81    return 5;
      82  }
      83  
      84  /* { dg-final { scan-assembler-times ".visible .func \\(.param.f32 %\[_a-z0-9\]*\\) dfn_rf(?:;|\[\r\n\]+\{)" 2 } } */
      85  float dfn_rf (void)
      86  {
      87    return 6;
      88  }
      89  
      90  /* { dg-final { scan-assembler-times ".visible .func \\(.param.f64 %\[_a-z0-9\]*\\) dfn_rd(?:;|\[\r\n\]+\{)" 2 } } */
      91  double dfn_rd (void)
      92  {
      93    return 7;
      94  }
      95  
      96  /* { dg-final { scan-assembler-times ".visible .func \\(.param.u64 %\[_a-z0-9\]*\\) dfn_rp(?:;|\[\r\n\]+\{)" 2 } } */
      97  void *dfn_rp (void)
      98  {
      99    return 0;
     100  }