(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
powerpc/
convert-fp-128.c
       1  /* { dg-options "-O2" } */
       2  /* { dg-require-effective-target longdouble128 } */
       3  /* { dg-require-effective-target dfp } */
       4  
       5  #define conv(M,N) mode_##N conv##M##N(mode_##M x) { return x; }
       6  
       7  #define mode_sf float
       8  #define mode_df double
       9  typedef float __attribute__((mode(IF))) mode_if;
      10  #ifdef __FLOAT128_TYPE__
      11  typedef float __attribute__((mode(KF))) mode_kf;
      12  #endif
      13  #define mode_sd _Decimal32
      14  #define mode_dd _Decimal64
      15  #define mode_td _Decimal128
      16  
      17  #ifdef __FLOAT128_TYPE__
      18  #define conv1(M) \
      19  	conv(M,sf) conv(M,df) conv(M,if) conv(M,kf) \
      20  	conv(M,sd) conv(M,dd) conv(M,td)
      21  #define conv2 \
      22  	conv1(sf) conv1(df) conv1(if) conv1(kf) \
      23  	conv1(sd) conv1(dd) conv1(td)
      24  #else
      25  #define conv1(M) \
      26  	conv(M,sf) conv(M,df) conv(M,if) \
      27  	conv(M,sd) conv(M,dd) conv(M,td)
      28  #define conv2 \
      29  	conv1(sf) conv1(df) conv1(if) \
      30  	conv1(sd) conv1(dd) conv1(td)
      31  #endif
      32  
      33  conv2
      34  
      35  
      36  
      37  /* { dg-final { scan-assembler-times {\mbl\M} 24 { target { ! hard_dfp } } } } */
      38  /* { dg-final { scan-assembler-times {\mbl\M} 19 { target { hard_dfp && { ! ppc_float128 } } } } } */
      39  /* { dg-final { scan-assembler-times {\mbl\M} 30 { target { hard_dfp && { ppc_float128 && { ! ppc_float128_insns } } } } } } */
      40  /* { dg-final { scan-assembler-times {\mbl\M} 26 { target { hard_dfp && { ppc_float128 && { ppc_float128_insns } } } } } } */
      41  
      42  
      43  /* { dg-final { scan-assembler-times {\mbl __extendsfkf2\M} 1 { target { ppc_float128 && { ! ppc_float128_insns } } } } } */
      44  /* { dg-final { scan-assembler-times {\mbl __dpd_extendsfsd\M} 1 } } */
      45  /* { dg-final { scan-assembler-times {\mbl __dpd_extendsfdd\M} 1 } } */
      46  /* { dg-final { scan-assembler-times {\mbl __dpd_extendsftd\M} 1 } } */
      47  /* { dg-final { scan-assembler-times {\mbl __extenddfkf2\M} 1 { target { ppc_float128 && { ! ppc_float128_insns } } } } } */
      48  /* { dg-final { scan-assembler-times {\mbl __dpd_truncdfsd\M} 1 } } */
      49  /* { dg-final { scan-assembler-times {\mbl __dpd_extenddfdd\M} 1 } } */
      50  /* { dg-final { scan-assembler-times {\mbl __dpd_extenddftd\M} 1 } } */
      51  /* { dg-final { scan-assembler-times {\mbl __trunctfkf2\M} 1 { target { ppc_float128 } } } } */
      52  /* { dg-final { scan-assembler-times {\mbl __dpd_trunctfsd\M} 1 } } */
      53  /* { dg-final { scan-assembler-times {\mbl __dpd_trunctfdd\M} 1 } } */
      54  /* { dg-final { scan-assembler-times {\mbl __dpd_extendtftd\M} 1 } } */
      55  /* { dg-final { scan-assembler-times {\mbl __trunckfsf2\M} 1 { target { ppc_float128 && { ! ppc_float128_insns } } } } } */
      56  /* { dg-final { scan-assembler-times {\mbl __trunckfdf2\M} 1 { target { ppc_float128 && { ! ppc_float128_insns } } } } } */
      57  /* { dg-final { scan-assembler-times {\mbl __extendkftf2\M} 1 { target { ppc_float128 } } } } */
      58  /* { dg-final { scan-assembler-times {\mbl __dpd_trunckfsd\M} 1 { target { ppc_float128 } } } } */
      59  /* { dg-final { scan-assembler-times {\mbl __dpd_trunckfdd\M} 1 { target { ppc_float128 } } } } */
      60  /* { dg-final { scan-assembler-times {\mbl __dpd_extendkftd\M} 1 { target { ppc_float128 } } } } */
      61  /* { dg-final { scan-assembler-times {\mbl __dpd_truncsdsf\M} 1 } } */
      62  /* { dg-final { scan-assembler-times {\mbl __dpd_extendsddf\M} 1 } } */
      63  /* { dg-final { scan-assembler-times {\mbl __dpd_extendsdtf\M} 1 } } */
      64  /* { dg-final { scan-assembler-times {\mbl __dpd_extendsdkf\M} 1 { target { ppc_float128 } } } } */
      65  /* { dg-final { scan-assembler-times {\mbl __dpd_extendsddd2\M} 1 { target { ! hard_dfp } } } } */
      66  /* { dg-final { scan-assembler-times {\mbl __dpd_extendsdtd2\M} 1 { target { ! hard_dfp } } } } */
      67  /* { dg-final { scan-assembler-times {\mbl __dpd_truncddsf\M} 1 } } */
      68  /* { dg-final { scan-assembler-times {\mbl __dpd_truncdddf\M} 1 } } */
      69  /* { dg-final { scan-assembler-times {\mbl __dpd_extendddtf\M} 1 } } */
      70  /* { dg-final { scan-assembler-times {\mbl __dpd_extendddkf\M} 1 { target { ppc_float128 } } } } */
      71  /* { dg-final { scan-assembler-times {\mbl __dpd_truncddsd2\M} 1 { target { ! hard_dfp } } } } */
      72  /* { dg-final { scan-assembler-times {\mbl __dpd_extendddtd2\M} 1 { target { ! hard_dfp } } } } */
      73  /* { dg-final { scan-assembler-times {\mbl __dpd_trunctdsf\M} 1 } } */
      74  /* { dg-final { scan-assembler-times {\mbl __dpd_trunctddf\M} 1 } } */
      75  /* { dg-final { scan-assembler-times {\mbl __dpd_trunctdtf\M} 1 } } */
      76  /* { dg-final { scan-assembler-times {\mbl __dpd_trunctdkf\M} 1 { target { ppc_float128 } } } } */
      77  /* { dg-final { scan-assembler-times {\mbl __dpd_trunctdsd2\M} 1 { target { ! hard_dfp } } } } */
      78  /* { dg-final { scan-assembler-times {\mbl __dpd_trunctddd2\M} 1 { target { ! hard_dfp } } } } */
      79  
      80  
      81  /* { dg-final { scan-assembler-times {\mfrsp|xsrsp\M} 2 { target { ! ppc_float128_insns } } } } */
      82  /* { dg-final { scan-assembler-times {\mfrsp|xsrsp\M} 3 { target { ppc_float128_insns } } } } */
      83  
      84  
      85  /* { dg-final { scan-assembler-times {\mfmr\M} 0 { target { ! hard_dfp } } } } */
      86  /* { dg-final { scan-assembler-times {\mfmr\M} 1 { target { hard_dfp } } } } */
      87  
      88  /* { dg-final { scan-assembler-times {\mlfd\M} 2 { target { ! powerpc_vsx } } } } */
      89  /* { dg-final { scan-assembler-times {\mxxlxor\M} 2 { target { powerpc_vsx } } } } */
      90  /* { dg-final { scan-assembler-times {\mxxlor|xscpsgndp\M} 3 { target { ppc_float128_insns } } } } */
      91  
      92  
      93  /* { dg-final { scan-assembler-times {\mdrsp\M} 2 { target { hard_dfp } } } } */
      94  /* { dg-final { scan-assembler-times {\mdrdpq\M} 2 { target { hard_dfp } } } } */
      95  /* { dg-final { scan-assembler-times {\mdctdp\M} 2 { target { hard_dfp } } } } */
      96  /* { dg-final { scan-assembler-times {\mdctqpq\M} 2 { target { hard_dfp } } } } */
      97  
      98  
      99  /* { dg-final { scan-assembler-times {\mxscvdpqp\M} 2 { target { ppc_float128_insns } } } } */
     100  /* { dg-final { scan-assembler-times {\mxscvqpdpo\M} 1 { target { ppc_float128_insns } } } } */
     101  /* { dg-final { scan-assembler-times {\mxscvqpdp\M} 1 { target { ppc_float128_insns } } } } */