2018-03-08 Richard Biener <rguenther@suse.de>
[official-gcc.git] / gcc / testsuite / gcc.target / i386 / avx512f-aesdec-2.c
bloba343fbba4eba89d732f48ade26f6ae825bd9a942
1 /* { dg-do run } */
2 /* { dg-options "-O2 -mavx512f -mvaes" } */
3 /* { dg-require-effective-target avx512f } */
4 /* { dg-require-effective-target avx512vaes } */
6 #define AVX512F
8 #define VAES
9 #include "avx512f-helper.h"
11 #define SIZE (AVX512F_LEN / 32)
13 #include "avx512f-mask-type.h"
15 static void
16 CALC (unsigned int *r)
18 for (int i = 0; i < SIZE; i+=4)
20 r[i] = 0xba0cda94;
21 r[i + 1] = 0x73676a7;
22 r[i + 2] = 0xd3204422;
23 r[i + 3] = 0x5506edd;
27 void
28 TEST (void)
30 int i;
31 UNION_TYPE (AVX512F_LEN, i_ud) res1, src1, src2;
32 MASK_TYPE mask = MASK_VALUE;
33 unsigned int res_ref[SIZE];
35 for (int i = 0; i < SIZE; i+=4)
37 src1.a[i] = 0x5d53475d;
38 src1.a[i + 1] = 0x63746f72;
39 src1.a[i + 2] = 0x73745665;
40 src1.a[i + 3] = 0x7b5b5465;
41 src2.a[i] = 0x726f6e5d;
42 src2.a[i + 1] = 0x5b477565;
43 src2.a[i + 2] = 0x68617929;
44 src2.a[i + 3] = 0x48692853;
47 CALC (res_ref);
48 res1.x = INTRINSIC (_aesdec_epi128) (src2.x, src1.x);
50 if (UNION_CHECK (AVX512F_LEN, i_ud) (res1, res_ref))
51 abort ();