1  /* { dg-require-effective-target vect_int } */
       2  /* { dg-require-effective-target vect_condition } */
       3  
       4  #include <stdarg.h>
       5  #include "tree-vect.h"
       6  
       7  #define N 64
       8  
       9  __attribute__ ((noinline)) int
      10  main1 ()
      11  {
      12    int i;
      13    int ia[N];
      14    int ib[N]= 
      15      {1,1,0,0,1,0,1,0,
      16       1,1,0,0,1,0,1,0,
      17       1,1,0,0,1,0,1,0,
      18       1,1,0,0,1,0,1,0,
      19       1,1,0,0,1,0,1,0,
      20       1,1,0,0,1,0,1,0,
      21       1,1,0,0,1,0,1,0,
      22       1,1,0,0,1,0,1,0};
      23    int ic[N] =
      24      {1,1,0,0,1,0,1,0,
      25       1,1,0,0,1,0,1,0,
      26       1,1,0,0,1,0,1,0,
      27       1,1,0,0,1,0,1,0,
      28       1,1,0,0,1,0,1,0,
      29       1,1,0,0,1,0,1,0,
      30       1,1,0,0,1,0,1,0,
      31       1,1,0,0,1,0,1,0};
      32  
      33    char ca[N];
      34    char cb[N] =
      35      {1,1,0,0,1,0,1,0,
      36       1,1,0,0,1,0,1,0,
      37       1,1,0,0,1,0,1,0,
      38       1,1,0,0,1,0,1,0,
      39       1,1,0,0,1,0,1,0,
      40       1,1,0,0,1,0,1,0,
      41       1,1,0,0,1,0,1,0,
      42       1,1,0,0,1,0,1,0};
      43  
      44    char cc[N] =
      45      {1,1,0,0,1,0,1,0,
      46       1,1,0,0,1,0,1,0,
      47       1,1,0,0,1,0,1,0,
      48       1,1,0,0,1,0,1,0,
      49       1,1,0,0,1,0,1,0,
      50       1,1,0,0,1,0,1,0,
      51       1,1,0,0,1,0,1,0,
      52       1,1,0,0,1,0,1,0};
      53  
      54    short sa[N];
      55    short sb[N] =
      56      {1,1,0,0,1,0,1,0,
      57       1,1,0,0,1,0,1,0,
      58       1,1,0,0,1,0,1,0,
      59       1,1,0,0,1,0,1,0,
      60       1,1,0,0,1,0,1,0,
      61       1,1,0,0,1,0,1,0,
      62       1,1,0,0,1,0,1,0,
      63       1,1,0,0,1,0,1,0};
      64  
      65    short sc[N] =
      66      {1,1,0,0,1,0,1,0,
      67       1,1,0,0,1,0,1,0,
      68       1,1,0,0,1,0,1,0,
      69       1,1,0,0,1,0,1,0,
      70       1,1,0,0,1,0,1,0,
      71       1,1,0,0,1,0,1,0,
      72       1,1,0,0,1,0,1,0,
      73       1,1,0,0,1,0,1,0};
      74  
      75    /* Check ints.  */
      76  
      77    for (i = 0; i < N; i++)
      78      {
      79        ia[i] = ib[i] && ic[i];
      80      }
      81  
      82    /* check results:  */
      83    for (i = 0; i <N; i++)
      84      {
      85        if (ia[i] != ib[i] && ic[i])
      86          abort ();
      87      }
      88  
      89    /* Check chars.  */
      90  
      91    for (i = 0; i < N; i++)
      92      {
      93        ca[i] = cb[i] && cc[i];
      94      }
      95  
      96    /* check results:  */
      97    for (i = 0; i <N; i++)
      98      {
      99        if (ca[i] != cb[i] && cc[i])
     100          abort ();
     101      }
     102  
     103    /* Check shorts.  */
     104  
     105    for (i = 0; i < N; i++)
     106      {
     107        sa[i] = sb[i] && sc[i];
     108      }
     109  
     110    /* check results:  */
     111    for (i = 0; i <N; i++)
     112      {
     113        if (sa[i] != sb[i] && sc[i])
     114          abort ();
     115      }
     116  
     117    return 0;
     118  }
     119  
     120  int main (void)
     121  {
     122    check_vect ();
     123  
     124    return main1 ();
     125  }
     126  
     127  /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" } } */
     128  /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" { xfail { ! vect_align_stack_vars } } } } */