1 /* { dg-do run } */
2 /* { dg-require-effective-target arm_v8_2a_fp16_scalar_hw } */
3 /* { dg-add-options arm_v8_2a_fp16_scalar }  */
4 /* { dg-skip-if "" { arm*-*-* } } */
5 
6 #include <arm_fp16.h>
7 
8 /* Input values.  */
9 #define A 12.4
10 #define B -5.8
11 #define C -3.8
12 #define D 10
13 #define E 66.1
14 #define F 16.1
15 #define G -4.8
16 #define H -77
17 
18 #define I 0.7
19 #define J -78
20 #define K 10.23
21 #define L 98
22 #define M 87
23 #define N -87.81
24 #define O -1.1
25 #define P 47.8
26 
27 float16_t input_1[] = { A, B, C, D, I, J, K, L };
28 float16_t input_2[] = { E, F, G, H, M, N, O, P };
29 uint16_t expected[] = { 0xDE62 /* (3.0f + (-A) * E) / 2.0f.  */,
30 			0x5206 /* (3.0f + (-B) * F) / 2.0f.  */,
31 			0xC7A0 /* (3.0f + (-C) * G) / 2.0f.  */,
32 			0x5E0A /* (3.0f + (-D) * H) / 2.0f.  */,
33 			0xCF3D /* (3.0f + (-I) * M) / 2.0f.  */,
34 			0xEAB0 /* (3.0f + (-J) * N) / 2.0f.  */,
35 			0x471F /* (3.0f + (-K) * O) / 2.0f.  */,
36 			0xE893 /* (3.0f + (-L) * P) / 2.0f.  */ };
37 
38 #define TEST_MSG "VRSQRTSH_F16"
39 #define INSN_NAME vrsqrtsh_f16
40 
41 #define INPUT_1 input_1
42 #define INPUT_2 input_2
43 #define EXPECTED expected
44 
45 #define INPUT_TYPE float16_t
46 #define OUTPUT_TYPE float16_t
47 #define OUTPUT_TYPE_SIZE 16
48 
49 /* Include the template for unary scalar operations.  */
50 #include "binary_scalar_op.inc"
51