blob: c318eb260f417404dc4a5442b2669590fb473904 [file] [log] [blame]
/* { dg-do run } */
/* { dg-options "-O2 -mavx512f -mvaes" } */
/* { dg-require-effective-target avx512f } */
/* { dg-require-effective-target avx512vaes } */
#define AVX512F
#define VAES
#include "avx512f-helper.h"
#define SIZE (AVX512F_LEN / 32)
#include "avx512f-mask-type.h"
static void
CALC (unsigned int *r)
{
for (int i = 0; i < SIZE; i+=4)
{
r[i] = 0xa8ba9d0;
r[i + 1] = 0x94902ace;
r[i + 2] = 0xa7726929;
r[i + 3] = 0x654dfb35;
}
}
void
TEST (void)
{
int i;
UNION_TYPE (AVX512F_LEN, i_ud) res1, src1, src2;
MASK_TYPE mask = MASK_VALUE;
unsigned int res_ref[SIZE];
for (int i = 0; i < SIZE; i+=4)
{
src1.a[i] = 0x5d53475d;
src1.a[i + 1] = 0x63746f72;
src1.a[i + 2] = 0x73745665;
src1.a[i + 3] = 0x7b5b5465;
src2.a[i] = 0x726f6e5d;
src2.a[i + 1] = 0x5b477565;
src2.a[i + 2] = 0x68617929;
src2.a[i + 3] = 0x48692853;
}
CALC (res_ref);
res1.x = INTRINSIC (_aesdeclast_epi128) (src2.x, src1.x);
if (UNION_CHECK (AVX512F_LEN, i_ud) (res1, res_ref))
abort ();
}