annotate gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vldr_z.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-require-effective-target arm_v8_1m_mve_ok } */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
2 /* { dg-add-options arm_v8_1m_mve } */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
3 /* { dg-additional-options "-O2" } */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
4
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
5 #include "arm_mve.h"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
6 void
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
7 foo (uint16_t row_len, const int32_t *bias, int8_t *out)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
8 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
9 int i_out_ch;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
10 for (;;)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
11 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
12 int8_t *ip_c3;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
13 int32_t acc_3;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
14 int32_t row_loop_cnt = row_len;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
15 int32x4_t res = {acc_3};
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
16 uint32x4_t scatter_offset;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
17 int i_row_loop;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
18 for (; i_row_loop < row_loop_cnt; i_row_loop++)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
19 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
20 mve_pred16_t p;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
21 int16x8_t r0;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
22 int16x8_t c3 = vldrbq_z_s16(ip_c3, p);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
23 acc_3 = vmladavaq_p_s16(acc_3, r0, c3, p);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
24 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
25 vstrbq_scatter_offset_s32(&out[i_out_ch], scatter_offset, res);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
26 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
27 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
28
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
29 void
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
30 foo1 (uint16_t row_len, const int32_t *bias, int8_t *out)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
31 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
32 int i_out_ch;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
33 for (;;)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
34 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
35 int8_t *ip_c3;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
36 int32_t acc_3;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
37 int32_t row_loop_cnt = row_len;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
38 int i_row_loop;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
39 int32x4_t res = {acc_3};
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
40 uint32x4_t scatter_offset;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
41 for (; i_row_loop < row_loop_cnt; i_row_loop++)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
42 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
43 mve_pred16_t p;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
44 int32x4_t r0;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
45 int32x4_t c3 = vldrbq_z_s32(ip_c3, p);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
46 acc_3 = vmladavaq_p_s32(acc_3, r0, c3, p);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
47 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
48 vstrbq_scatter_offset_s32(&out[i_out_ch], scatter_offset, res);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
49 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
50 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
51
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
52 void
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
53 foo2 (uint16_t row_len, const int32_t *bias, int8_t *out)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
54 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
55 int i_out_ch;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
56 for (;;)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
57 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
58 int16_t *ip_c3;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
59 int32_t acc_3;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
60 int32_t row_loop_cnt = row_len;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
61 int i_row_loop;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
62 int32x4_t res = {acc_3};
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
63 uint32x4_t scatter_offset;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
64 for (; i_row_loop < row_loop_cnt; i_row_loop++)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
65 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
66 mve_pred16_t p;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
67 int32x4_t r0;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
68 int32x4_t c3 = vldrhq_z_s32(ip_c3, p);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
69 acc_3 = vmladavaq_p_s32(acc_3, r0, c3, p);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
70 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
71 vstrbq_scatter_offset_s32(&out[i_out_ch], scatter_offset, res);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
72 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
73 }