| /* PR target/85730 */ |
| /* { dg-do compile } */ |
| /* { dg-options "-O2 -mno-sse4" } */ |
| |
| typedef char V __attribute__((vector_size(4))); |
| |
| V |
| test_and (V v, char c) |
| { |
| v[0] &= c; |
| |
| return v; |
| } |
| |
| /* { dg-final { scan-assembler "\[ \t\]andb" } } */ |
| |
| V |
| test_or (V v, char c) |
| { |
| v[0] |= c; |
| |
| return v; |
| } |
| |
| /* { dg-final { scan-assembler "\[ \t\]orb" } } */ |
| |
| V |
| test_xor (V v, char c) |
| { |
| v[0] ^= c; |
| |
| return v; |
| } |
| |
| /* { dg-final { scan-assembler "\[ \t\]xorb" } } */ |
| |
| V |
| test_not (V v) |
| { |
| v[0] = ~v[0]; |
| |
| return v; |
| } |
| |
| /* { dg-final { scan-assembler "\[ \t\]notb" } } */ |
| |
| V |
| test_sal (V v) |
| { |
| v[0] <<= 3; |
| |
| return v; |
| } |
| |
| /* { dg-final { scan-assembler "\[ \t\]salb" } } */ |
| |
| V |
| test_sar (V v) |
| { |
| v[0] >>= 3; |
| |
| return v; |
| } |
| |
| /* { dg-final { scan-assembler "\[ \t\]sarb" } } */ |
| |
| V |
| test_add (V v, char c) |
| { |
| v[0] += c; |
| |
| return v; |
| } |
| |
| /* { dg-final { scan-assembler "\[ \t\]addb" } } */ |
| |
| V |
| test_sub (V v, char c) |
| { |
| v[0] -= c; |
| |
| return v; |
| } |
| |
| /* { dg-final { scan-assembler "\[ \t\]subb" } } */ |
| |
| V |
| test_neg (V v) |
| { |
| v[0] = -v[0]; |
| |
| return v; |
| } |
| |
| /* { dg-final { scan-assembler "\[ \t\]negb" } } */ |