aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target/arm/crypto-vsha1h_u32.c
blob: 33af705c59e390843e7c2dfca7d332938a8bab60 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/* { dg-do compile } */
/* { dg-require-effective-target arm_crypto_ok } */
/* { dg-add-options arm_crypto } */
/* { dg-additional-options "-O3" } */

#include "arm_neon.h"

uint32_t foo (void)

{
  uint32_t val = 0xdeadbeef;
  return vsha1h_u32 (val);
}

#define GET_LANE(lane)						\
	uint32_t foo_lane##lane (uint32x4_t val)		\
	{							\
	    return vsha1h_u32 (vgetq_lane_u32 (val, lane));	\
	}

#define TEST_SHA1H_VEC_SELECT(FUNC)				\
	FUNC (0)						\
	FUNC (1)						\
	FUNC (2)						\
	FUNC (3)						\

TEST_SHA1H_VEC_SELECT (GET_LANE)

/* { dg-final { scan-assembler-times {sha1h.32\tq[0-9]+, q[0-9]+} 5 } } */
/* { dg-final { scan-assembler-times {vdup.32\tq[0-9]+, r[0-9]+} 4 } } */
/* { dg-final { scan-assembler-times {vmov.32\tr[0-9]+, d[0-9]+\[[0-9]+\]+} 3 } } */