Use conditional internal functions in if-conversion
[official-gcc.git] / gcc / testsuite / gcc.target / aarch64 / crypto-fuse-1.c
blobd8adc89466c3273164446523be5e48a7b7740636
1 /* { dg-do compile } */
2 /* { dg-options "-O3 -mcpu=cortex-a72+crypto -dp" } */
4 #include <arm_neon.h>
6 #define AESE(r, v, key) (r = vaeseq_u8 ((v), (key)));
7 #define AESMC(r, i) (r = vaesmcq_u8 (i))
9 uint8x16_t dummy;
10 uint8x16_t a;
11 uint8x16_t b;
12 uint8x16_t c;
13 uint8x16_t d;
14 uint8x16_t e;
16 void
17 foo (void)
19 AESE (a, a, e);
20 dummy = vaddq_u8 (dummy, dummy);
21 dummy = vaddq_u8 (dummy, dummy);
22 AESE (b, b, e);
23 dummy = vaddq_u8 (dummy, dummy);
24 dummy = vaddq_u8 (dummy, dummy);
25 AESE (c, c, e);
26 dummy = vaddq_u8 (dummy, dummy);
27 dummy = vaddq_u8 (dummy, dummy);
28 AESE (d, d, e);
29 dummy = vaddq_u8 (dummy, dummy);
30 dummy = vaddq_u8 (dummy, dummy);
32 AESMC (a, a);
33 dummy = vaddq_u8 (dummy, dummy);
34 dummy = vaddq_u8 (dummy, dummy);
35 AESMC (b, b);
36 dummy = vaddq_u8 (dummy, dummy);
37 dummy = vaddq_u8 (dummy, dummy);
38 AESMC (c, c);
39 dummy = vaddq_u8 (dummy, dummy);
40 dummy = vaddq_u8 (dummy, dummy);
41 AESMC (d, d);
44 /* { dg-final { scan-assembler-times "crypto_aese_fused" 4 } } */