(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
powerpc/
dform-2.c
       1  /* { dg-do compile { target { powerpc*-*-* && lp64 } } } */
       2  /* { dg-require-effective-target powerpc_p9vector_ok } */
       3  /* Now O2 enables vectorization by default, which generates unexpected float
       4     conversion for vector construction, so simply disable it.  */
       5  /* { dg-options "-mpower9-vector -O2 -fno-tree-vectorize" } */
       6  
       7  #ifndef TYPE
       8  #define TYPE float
       9  #endif
      10  
      11  #ifndef TYPE_IN
      12  #define TYPE_IN TYPE
      13  #endif
      14  
      15  #ifndef TYPE_OUT
      16  #define TYPE_OUT TYPE
      17  #endif
      18  
      19  #ifndef ITYPE
      20  #define ITYPE long
      21  #endif
      22  
      23  #ifdef DO_CALL
      24  extern ITYPE get_bits (ITYPE);
      25  
      26  #else
      27  #define get_bits(X) (X)
      28  #endif
      29  
      30  void test (ITYPE *bits, ITYPE n, TYPE one, TYPE_IN *p, TYPE_OUT *q)
      31  {
      32    TYPE x_00 = p[ 0];
      33    TYPE x_01 = p[ 1];
      34    TYPE x_02 = p[ 2];
      35    TYPE x_03 = p[ 3];
      36    TYPE x_04 = p[ 4];
      37    TYPE x_05 = p[ 5];
      38    TYPE x_06 = p[ 6];
      39    TYPE x_07 = p[ 7];
      40    TYPE x_08 = p[ 8];
      41    TYPE x_09 = p[ 9];
      42  
      43    TYPE x_10 = p[10];
      44    TYPE x_11 = p[11];
      45    TYPE x_12 = p[12];
      46    TYPE x_13 = p[13];
      47    TYPE x_14 = p[14];
      48    TYPE x_15 = p[15];
      49    TYPE x_16 = p[16];
      50    TYPE x_17 = p[17];
      51    TYPE x_18 = p[18];
      52    TYPE x_19 = p[19];
      53  
      54    TYPE x_20 = p[20];
      55    TYPE x_21 = p[21];
      56    TYPE x_22 = p[22];
      57    TYPE x_23 = p[23];
      58    TYPE x_24 = p[24];
      59    TYPE x_25 = p[25];
      60    TYPE x_26 = p[26];
      61    TYPE x_27 = p[27];
      62    TYPE x_28 = p[28];
      63    TYPE x_29 = p[29];
      64  
      65    TYPE x_30 = p[30];
      66    TYPE x_31 = p[31];
      67    TYPE x_32 = p[32];
      68    TYPE x_33 = p[33];
      69    TYPE x_34 = p[34];
      70    TYPE x_35 = p[35];
      71    TYPE x_36 = p[36];
      72    TYPE x_37 = p[37];
      73    TYPE x_38 = p[38];
      74    TYPE x_39 = p[39];
      75  
      76    TYPE x_40 = p[40];
      77    TYPE x_41 = p[41];
      78    TYPE x_42 = p[42];
      79    TYPE x_43 = p[43];
      80    TYPE x_44 = p[44];
      81    TYPE x_45 = p[45];
      82    TYPE x_46 = p[46];
      83    TYPE x_47 = p[47];
      84    TYPE x_48 = p[48];
      85    TYPE x_49 = p[49];
      86  
      87    ITYPE i;
      88  
      89    for (i = 0; i < n; i++)
      90      {
      91        ITYPE bit = get_bits (bits[i]);
      92  
      93        if ((bit & ((ITYPE)1) << 	0) != 0) x_00 += one;
      94        if ((bit & ((ITYPE)1) << 	1) != 0) x_01 += one;
      95        if ((bit & ((ITYPE)1) << 	2) != 0) x_02 += one;
      96        if ((bit & ((ITYPE)1) << 	3) != 0) x_03 += one;
      97        if ((bit & ((ITYPE)1) << 	4) != 0) x_04 += one;
      98        if ((bit & ((ITYPE)1) << 	5) != 0) x_05 += one;
      99        if ((bit & ((ITYPE)1) << 	6) != 0) x_06 += one;
     100        if ((bit & ((ITYPE)1) << 	7) != 0) x_07 += one;
     101        if ((bit & ((ITYPE)1) << 	8) != 0) x_08 += one;
     102        if ((bit & ((ITYPE)1) << 	9) != 0) x_09 += one;
     103  
     104        if ((bit & ((ITYPE)1) << 10) != 0) x_10 += one;
     105        if ((bit & ((ITYPE)1) << 11) != 0) x_11 += one;
     106        if ((bit & ((ITYPE)1) << 12) != 0) x_12 += one;
     107        if ((bit & ((ITYPE)1) << 13) != 0) x_13 += one;
     108        if ((bit & ((ITYPE)1) << 14) != 0) x_14 += one;
     109        if ((bit & ((ITYPE)1) << 15) != 0) x_15 += one;
     110        if ((bit & ((ITYPE)1) << 16) != 0) x_16 += one;
     111        if ((bit & ((ITYPE)1) << 17) != 0) x_17 += one;
     112        if ((bit & ((ITYPE)1) << 18) != 0) x_18 += one;
     113        if ((bit & ((ITYPE)1) << 19) != 0) x_19 += one;
     114  
     115        if ((bit & ((ITYPE)1) << 20) != 0) x_20 += one;
     116        if ((bit & ((ITYPE)1) << 21) != 0) x_21 += one;
     117        if ((bit & ((ITYPE)1) << 22) != 0) x_22 += one;
     118        if ((bit & ((ITYPE)1) << 23) != 0) x_23 += one;
     119        if ((bit & ((ITYPE)1) << 24) != 0) x_24 += one;
     120        if ((bit & ((ITYPE)1) << 25) != 0) x_25 += one;
     121        if ((bit & ((ITYPE)1) << 26) != 0) x_26 += one;
     122        if ((bit & ((ITYPE)1) << 27) != 0) x_27 += one;
     123        if ((bit & ((ITYPE)1) << 28) != 0) x_28 += one;
     124        if ((bit & ((ITYPE)1) << 29) != 0) x_29 += one;
     125  
     126        if ((bit & ((ITYPE)1) << 30) != 0) x_30 += one;
     127        if ((bit & ((ITYPE)1) << 31) != 0) x_31 += one;
     128        if ((bit & ((ITYPE)1) << 32) != 0) x_32 += one;
     129        if ((bit & ((ITYPE)1) << 33) != 0) x_33 += one;
     130        if ((bit & ((ITYPE)1) << 34) != 0) x_34 += one;
     131        if ((bit & ((ITYPE)1) << 35) != 0) x_35 += one;
     132        if ((bit & ((ITYPE)1) << 36) != 0) x_36 += one;
     133        if ((bit & ((ITYPE)1) << 37) != 0) x_37 += one;
     134        if ((bit & ((ITYPE)1) << 38) != 0) x_38 += one;
     135        if ((bit & ((ITYPE)1) << 39) != 0) x_39 += one;
     136  
     137        if ((bit & ((ITYPE)1) << 40) != 0) x_40 += one;
     138        if ((bit & ((ITYPE)1) << 41) != 0) x_41 += one;
     139        if ((bit & ((ITYPE)1) << 42) != 0) x_42 += one;
     140        if ((bit & ((ITYPE)1) << 43) != 0) x_43 += one;
     141        if ((bit & ((ITYPE)1) << 44) != 0) x_44 += one;
     142        if ((bit & ((ITYPE)1) << 45) != 0) x_45 += one;
     143        if ((bit & ((ITYPE)1) << 46) != 0) x_46 += one;
     144        if ((bit & ((ITYPE)1) << 47) != 0) x_47 += one;
     145        if ((bit & ((ITYPE)1) << 48) != 0) x_48 += one;
     146        if ((bit & ((ITYPE)1) << 49) != 0) x_49 += one;
     147      }
     148  
     149    q[ 0] = x_00;
     150    q[ 1] = x_01;
     151    q[ 2] = x_02;
     152    q[ 3] = x_03;
     153    q[ 4] = x_04;
     154    q[ 5] = x_05;
     155    q[ 6] = x_06;
     156    q[ 7] = x_07;
     157    q[ 8] = x_08;
     158    q[ 9] = x_09;
     159  
     160    q[10] = x_10;
     161    q[11] = x_11;
     162    q[12] = x_12;
     163    q[13] = x_13;
     164    q[14] = x_14;
     165    q[15] = x_15;
     166    q[16] = x_16;
     167    q[17] = x_17;
     168    q[18] = x_18;
     169    q[19] = x_19;
     170  
     171    q[20] = x_20;
     172    q[21] = x_21;
     173    q[22] = x_22;
     174    q[23] = x_23;
     175    q[24] = x_24;
     176    q[25] = x_25;
     177    q[26] = x_26;
     178    q[27] = x_27;
     179    q[28] = x_28;
     180    q[29] = x_29;
     181  
     182    q[30] = x_30;
     183    q[31] = x_31;
     184    q[32] = x_32;
     185    q[33] = x_33;
     186    q[34] = x_34;
     187    q[35] = x_35;
     188    q[36] = x_36;
     189    q[37] = x_37;
     190    q[38] = x_38;
     191    q[39] = x_39;
     192  
     193    q[40] = x_40;
     194    q[41] = x_41;
     195    q[42] = x_42;
     196    q[43] = x_43;
     197    q[44] = x_44;
     198    q[45] = x_45;
     199    q[46] = x_46;
     200    q[47] = x_47;
     201    q[48] = x_48;
     202    q[49] = x_49;
     203  }
     204  
     205  /* { dg-final { scan-assembler     "lxssp "     } } */
     206  /* { dg-final { scan-assembler     "stxssp "    } } */
     207  /* { dg-final { scan-assembler-not "mfvsrd "    } } */
     208  /* { dg-final { scan-assembler-not "mtvsrd "    } } */
     209  /* { dg-final { scan-assembler-not "xscvdpspn " } } */
     210