(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
arm/
aes_xor_combine.c
       1  /* { dg-do compile } */
       2  /* { dg-require-effective-target arm_crypto_ok } */
       3  /* { dg-add-options arm_crypto } */
       4  /* { dg-additional-options "-O3" } */
       5  
       6  #include <arm_neon.h>
       7  
       8  #define AESE(r, v, key) (r = vaeseq_u8 ((v), (key)));
       9  #define AESD(r, v, key) (r = vaesdq_u8 ((v), (key)));
      10  
      11  const uint8x16_t zero = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
      12  
      13  uint8x16_t foo_key_0 (uint8x16_t dummy, uint8x16_t foo, uint8x16_t bar)
      14  {
      15      dummy = dummy ^ foo;
      16      AESE(dummy, dummy, zero);
      17      dummy = dummy ^ bar;
      18      AESE(dummy, dummy, zero);
      19  
      20      dummy = dummy ^ foo;
      21      AESD(dummy, dummy, zero);
      22      dummy = dummy ^ bar;
      23      AESD(dummy, dummy, zero);
      24  
      25      return dummy;
      26  }
      27  
      28  uint8x16_t foo_data_0 (uint8x16_t dummy, uint8x16_t foo, uint8x16_t bar)
      29  {
      30      dummy = dummy ^ foo;
      31      AESE(dummy, zero, dummy);
      32      dummy = dummy ^ bar;
      33      AESE(dummy, zero, dummy);
      34  
      35      dummy = dummy ^ foo;
      36      AESD(dummy, zero, dummy);
      37      dummy = dummy ^ bar;
      38      AESD(dummy, zero, dummy);
      39  
      40      return dummy;
      41  }
      42  
      43  /* { dg-final { scan-assembler-not "veor" } } */