annotate gcc/testsuite/gcc.target/arm/simd/bf16_dot_1.c @ 152:2b5abeee2509

update gcc11
author anatofuz
date Mon, 25 May 2020 07:50:57 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
152
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1 /* { dg-do assemble } */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
2 /* { dg-require-effective-target arm_v8_2a_bf16_neon_ok } */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
3 /* { dg-options "-save-temps -O2" } */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
4 /* { dg-add-options arm_v8_2a_bf16_neon } */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
5
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
6 #include "arm_neon.h"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
7
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
8 /* BF16 DOT without lane. */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
9 float32x2_t
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
10 test_vbfdot_f32 (float32x2_t r, bfloat16x4_t a, bfloat16x4_t b)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
11 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
12 /* vdot.bf16 d, d, d */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
13 return vbfdot_f32 (r, a, b);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
14 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
15
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
16 float32x4_t
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
17 test_vbfdotq_f32 (float32x4_t r, bfloat16x8_t a, bfloat16x8_t b)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
18 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
19 /* vdot.bf16 q, q, q */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
20 return vbfdotq_f32 (r, a, b);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
21 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
22
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
23 /* 64-bit BF16 DOT with lane. */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
24 float32x2_t
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
25 test_vbfdot_lane_f32_0 (float32x2_t r, bfloat16x4_t a, bfloat16x4_t b)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
26 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
27 /* vdot.bf16 d, d, d[0] */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
28 return vbfdot_lane_f32 (r, a, b, 0);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
29 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
30
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
31 float32x2_t
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
32 test_vbfdot_lane_f32_1 (float32x2_t r, bfloat16x4_t a, bfloat16x4_t b)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
33 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
34 /* vdot.bf16 d, d, d[1] */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
35 return vbfdot_lane_f32 (r, a, b, 1);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
36 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
37
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
38 float32x2_t
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
39 test_vbfdot_laneq_f32_0 (float32x2_t r, bfloat16x4_t a, bfloat16x8_t b)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
40 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
41 /* vdot.bf16 d, d, d[0] */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
42 return vbfdot_laneq_f32 (r, a, b, 0);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
43 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
44
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
45 float32x2_t
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
46 test_vbfdot_laneq_f32_1 (float32x2_t r, bfloat16x4_t a, bfloat16x8_t b)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
47 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
48 /* vdot.bf16 d, d, d[1] */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
49 return vbfdot_laneq_f32 (r, a, b, 1);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
50 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
51
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
52 float32x2_t
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
53 test_vbfdot_laneq_f32_2 (float32x2_t r, bfloat16x4_t a, bfloat16x8_t b)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
54 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
55 /* vdot.bf16 d, d, d[0] */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
56 return vbfdot_laneq_f32 (r, a, b, 2);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
57 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
58
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
59 float32x2_t
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
60 test_vbfdot_laneq_f32_3 (float32x2_t r, bfloat16x4_t a, bfloat16x8_t b)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
61 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
62 /* vdot.bf16 d, d, d[1] */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
63 return vbfdot_laneq_f32 (r, a, b, 3);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
64 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
65
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
66 /* 128-bit BF16 DOT with lane. */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
67 float32x4_t
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
68 test_vbfdotq_lane_f32_0 (float32x4_t r, bfloat16x8_t a, bfloat16x4_t b)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
69 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
70 /* vdot.bf16 q, q, d[0] */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
71 return vbfdotq_lane_f32 (r, a, b, 0);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
72 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
73
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
74 float32x4_t
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
75 test_vbfdotq_lane_f32_1 (float32x4_t r, bfloat16x8_t a, bfloat16x4_t b)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
76 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
77 /* vdot.bf16 q, q, d[1] */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
78 return vbfdotq_lane_f32 (r, a, b, 1);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
79 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
80
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
81 float32x4_t
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
82 test_vbfdotq_laneq_f32_0 (float32x4_t r, bfloat16x8_t a, bfloat16x8_t b)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
83 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
84 /* vdot.bf16 q, q, d[0] */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
85 return vbfdotq_laneq_f32 (r, a, b, 0);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
86 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
87
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
88 float32x4_t
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
89 test_vbfdotq_laneq_f32_3 (float32x4_t r, bfloat16x8_t a, bfloat16x8_t b)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
90 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
91 /* vdot.bf16 q, q, d[1] */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
92 return vbfdotq_laneq_f32 (r, a, b, 3);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
93 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
94
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
95 /* { dg-final { scan-assembler-times {\tvdot.bf16\td[0-9]+, d[0-9]+, d[0-9]+\n} 1 } } */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
96 /* { dg-final { scan-assembler-times {\tvdot.bf16\tq[0-9]+, q[0-9]+, q[0-9]+\n} 1 } } */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
97 /* { dg-final { scan-assembler-times {\tvdot.bf16\td[0-9]+, d[0-9]+, d[0-9]+\[0\]\n} 3 } } */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
98 /* { dg-final { scan-assembler-times {\tvdot.bf16\td[0-9]+, d[0-9]+, d[0-9]+\[1\]\n} 3 } } */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
99 /* { dg-final { scan-assembler-times {\tvdot.bf16\tq[0-9]+, q[0-9]+, d[0-9]+\[0\]\n} 2 } } */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
100 /* { dg-final { scan-assembler-times {\tvdot.bf16\tq[0-9]+, q[0-9]+, d[0-9]+\[1\]\n} 2 } } */