annotate gcc/testsuite/gcc.target/i386/pr92658-avx512bw-trunc.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 /* PR target/92658 */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
2 /* { dg-do compile } */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
3 /* { dg-options "-O2 -ftree-vectorize -mavx512bw -mavx512vl" } */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
4
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
5 typedef unsigned char v8qi __attribute__((vector_size (8)));
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
6 typedef unsigned char v16qi __attribute__((vector_size (16)));
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
7 typedef unsigned char v32qi __attribute__((vector_size (32)));
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
8 typedef unsigned short v8hi __attribute__((vector_size (16)));
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
9 typedef unsigned short v16hi __attribute__((vector_size (32)));
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
10 typedef unsigned short v32hi __attribute__((vector_size (64)));
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
11
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
12
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
13 void
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
14 truncwb_512 (v32qi * dst, v32hi * __restrict src)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
15 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
16 unsigned char tem[8];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
17 tem[0] = (*src)[0];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
18 tem[1] = (*src)[1];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
19 tem[2] = (*src)[2];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
20 tem[3] = (*src)[3];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
21 tem[4] = (*src)[4];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
22 tem[5] = (*src)[5];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
23 tem[6] = (*src)[6];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
24 tem[7] = (*src)[7];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
25 tem[8] = (*src)[8];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
26 tem[9] = (*src)[9];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
27 tem[10] = (*src)[10];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
28 tem[11] = (*src)[11];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
29 tem[12] = (*src)[12];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
30 tem[13] = (*src)[13];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
31 tem[14] = (*src)[14];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
32 tem[15] = (*src)[15];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
33 tem[16] = (*src)[16];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
34 tem[17] = (*src)[17];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
35 tem[18] = (*src)[18];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
36 tem[19] = (*src)[19];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
37 tem[20] = (*src)[20];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
38 tem[21] = (*src)[21];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
39 tem[22] = (*src)[22];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
40 tem[23] = (*src)[23];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
41 tem[24] = (*src)[24];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
42 tem[25] = (*src)[25];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
43 tem[26] = (*src)[26];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
44 tem[27] = (*src)[27];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
45 tem[28] = (*src)[28];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
46 tem[29] = (*src)[29];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
47 tem[30] = (*src)[30];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
48 tem[31] = (*src)[31];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
49 dst[0] = *(v32qi *) tem;
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 truncwb_256 (v16qi * dst, v16hi * __restrict src)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
54 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
55 unsigned char tem[8];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
56 tem[0] = (*src)[0];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
57 tem[1] = (*src)[1];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
58 tem[2] = (*src)[2];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
59 tem[3] = (*src)[3];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
60 tem[4] = (*src)[4];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
61 tem[5] = (*src)[5];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
62 tem[6] = (*src)[6];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
63 tem[7] = (*src)[7];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
64 tem[8] = (*src)[8];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
65 tem[9] = (*src)[9];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
66 tem[10] = (*src)[10];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
67 tem[11] = (*src)[11];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
68 tem[12] = (*src)[12];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
69 tem[13] = (*src)[13];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
70 tem[14] = (*src)[14];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
71 tem[15] = (*src)[15];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
72 dst[0] = *(v16qi *) tem;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
73 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
74
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
75 void
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
76 truncwb_128 (v16qi * dst, v8hi * __restrict src)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
77 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
78 unsigned char tem[8];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
79 tem[0] = (*src)[0];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
80 tem[1] = (*src)[1];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
81 tem[2] = (*src)[2];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
82 tem[3] = (*src)[3];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
83 tem[4] = (*src)[4];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
84 tem[5] = (*src)[5];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
85 tem[6] = (*src)[6];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
86 tem[7] = (*src)[7];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
87 dst[0] = *(v16qi *) tem;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
88 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
89
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
90 /* { dg-final { scan-assembler-times "vpmovwb" 2 } } */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
91 /* { dg-final { scan-assembler-times "vpmovwb" 3 { xfail *-*-* } } } */