| |
| /* { dg-do compile } */ |
| /* { dg-options "-O3 -march=armv8-a+crypto" } */ |
| |
| #include "arm_neon.h" |
| |
| uint8x16_t |
| test0 (uint8x16_t a, uint8x16_t b) |
| { |
| uint8x16_t result; |
| result = vaeseq_u8 (a, b); |
| result = vaeseq_u8 (result, a); |
| return result; |
| } |
| |
| uint8x16_t |
| test1 (uint8x16_t a, uint8x16_t b) |
| { |
| uint8x16_t result; |
| result = vaeseq_u8 (a, b); |
| result = vaeseq_u8 (a, result); |
| return result; |
| } |
| |
| uint8x16_t |
| test2 (uint8x16_t a, uint8x16_t b) |
| { |
| uint8x16_t result; |
| result = vaeseq_u8 (b, a); |
| result = vaeseq_u8 (result, b); |
| return result; |
| } |
| |
| uint8x16_t |
| test3 (uint8x16_t a, uint8x16_t b) |
| { |
| uint8x16_t result; |
| result = vaeseq_u8 (b, a); |
| result = vaeseq_u8 (b, result); |
| return result; |
| } |
| |
| uint8x16_t |
| test4 (uint8x16_t a, uint8x16_t b) |
| { |
| uint8x16_t result; |
| result = vaesdq_u8 (a, b); |
| result = vaesdq_u8 (result, a); |
| return result; |
| } |
| |
| uint8x16_t |
| test5 (uint8x16_t a, uint8x16_t b) |
| { |
| uint8x16_t result; |
| result = vaesdq_u8 (a, b); |
| result = vaesdq_u8 (a, result); |
| return result; |
| } |
| |
| uint8x16_t |
| test6 (uint8x16_t a, uint8x16_t b) |
| { |
| uint8x16_t result; |
| result = vaesdq_u8 (b, a); |
| result = vaesdq_u8 (result, b); |
| return result; |
| } |
| |
| uint8x16_t |
| test7 (uint8x16_t a, uint8x16_t b) |
| { |
| uint8x16_t result; |
| result = vaesdq_u8 (b, a); |
| result = vaesdq_u8 (b, result); |
| return result; |
| } |
| /* { dg-final { scan-assembler-not "mov" } } */ |
| |