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