(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
powerpc/
fold-vec-logical-ands-longlong.c
       1  /* Verify that overloaded built-ins for vec_and,vec_or,vec_xor with long long
       2     inputs produce the right results.  */
       3  
       4  /* { dg-do compile } */
       5  /* { dg-require-effective-target powerpc_vsx_ok } */
       6  /* { dg-options "-mvsx -O2" } */
       7  
       8  #include <altivec.h>
       9  
      10  vector signed long long
      11  test1_and (vector bool long long x, vector signed long long y)
      12  {
      13    vector signed long long *foo;
      14    *foo += vec_and (x, y);
      15    return *foo;
      16  }
      17  
      18  vector signed long long
      19  test1_andc (vector bool long long x, vector signed long long y)
      20  {
      21    vector signed long long *foo;
      22    *foo += vec_andc (x, y);
      23    return *foo;
      24  }
      25  
      26  vector signed long long
      27  test2_and (vector signed long long x, vector bool long long y)
      28  {
      29    vector signed long long *foo;
      30    *foo += vec_and (x, y);
      31    return *foo;
      32  }
      33  
      34  vector signed long long
      35  test2_andc (vector signed long long x, vector bool long long y)
      36  {
      37    vector signed long long *foo;
      38    *foo += vec_andc (x, y);
      39    return *foo;
      40  }
      41  
      42  vector signed long long
      43  test3_and (vector signed long long x, vector signed long long y)
      44  {
      45    vector signed long long *foo;
      46    *foo += vec_and (x, y);
      47    return *foo;
      48  }
      49  
      50  vector signed long long
      51  test3_andc (vector signed long long x, vector signed long long y)
      52  {
      53    vector signed long long *foo;
      54    *foo += vec_andc (x, y);
      55    return *foo;
      56  }
      57  
      58  vector unsigned long long
      59  test4_and (vector bool long long x, vector unsigned long long y)
      60  {
      61    vector unsigned long long *foo;
      62    *foo += vec_and (x, y);
      63    return *foo;
      64  }
      65  
      66  vector unsigned long long
      67  test4_andc (vector bool long long x, vector unsigned long long y)
      68  {
      69    vector unsigned long long *foo;
      70    *foo += vec_andc (x, y);
      71    return *foo;
      72  }
      73  
      74  vector unsigned long long
      75  test5_and (vector unsigned long long x, vector bool long long y)
      76  {
      77    vector unsigned long long *foo;
      78    *foo += vec_and (x, y);
      79    return *foo;
      80  }
      81  
      82  vector unsigned long long
      83  test5_andc (vector unsigned long long x, vector bool long long y)
      84  {
      85    vector unsigned long long *foo;
      86    *foo += vec_andc (x, y);
      87    return *foo;
      88  }
      89  
      90  vector unsigned long long
      91  test6_and (vector unsigned long long x, vector unsigned long long y)
      92  {
      93    vector unsigned long long *foo;
      94    *foo += vec_and (x, y);
      95    return *foo;
      96  }
      97  
      98  vector unsigned long long
      99  test6_andc (vector unsigned long long x, vector unsigned long long y)
     100  {
     101    vector unsigned long long *foo;
     102    *foo += vec_andc (x, y);
     103    return *foo;
     104  }
     105  
     106  /* { dg-final { scan-assembler-times {\mxxland\M} 6 } } */
     107  /* { dg-final { scan-assembler-times {\mxxlandc\M} 6 } } */