1  /* PR target/85730 */
       2  /* { dg-do compile } */
       3  /* { dg-options "-O2 -mno-sse4" } */
       4  
       5  typedef char V __attribute__((vector_size(4)));
       6  
       7  V
       8  test_and (V v, char c)
       9  {
      10    v[0] &= c;
      11  
      12    return v;
      13  }
      14  
      15  /* { dg-final { scan-assembler "\[ \t\]andb" } } */
      16  
      17  V
      18  test_or (V v, char c)
      19  {
      20    v[0] |= c;
      21  
      22    return v;
      23  }
      24  
      25  /* { dg-final { scan-assembler "\[ \t\]orb" } } */
      26  
      27  V
      28  test_xor (V v, char c)
      29  {
      30    v[0] ^= c;
      31  
      32    return v;
      33  }
      34  
      35  /* { dg-final { scan-assembler "\[ \t\]xorb" } } */
      36  
      37  V
      38  test_not (V v)
      39  {
      40    v[0] = ~v[0];
      41  
      42    return v;
      43  }
      44  
      45  /* { dg-final { scan-assembler "\[ \t\]notb" } } */
      46  
      47  V
      48  test_sal (V v)
      49  {
      50    v[0] <<= 3;
      51  
      52    return v;
      53  }
      54  
      55  /* { dg-final { scan-assembler "\[ \t\]salb" } } */
      56  
      57  V
      58  test_sar (V v)
      59  {
      60    v[0] >>= 3;
      61  
      62    return v;
      63  }
      64  
      65  /* { dg-final { scan-assembler "\[ \t\]sarb" } } */
      66  
      67  V
      68  test_add (V v, char c)
      69  {
      70    v[0] += c;
      71  
      72    return v;
      73  }
      74  
      75  /* { dg-final { scan-assembler "\[ \t\]addb" } } */
      76  
      77  V
      78  test_sub (V v, char c)
      79  {
      80    v[0] -= c;
      81  
      82    return v;
      83  }
      84  
      85  /* { dg-final { scan-assembler "\[ \t\]subb" } } */
      86  
      87  V
      88  test_neg (V v)
      89  {
      90    v[0] = -v[0];
      91  
      92    return v;
      93  }
      94  
      95  /* { dg-final { scan-assembler "\[ \t\]negb" } } */