annotate gcc/testsuite/gcc.dg/vect/vect-cselim-1.c @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* { dg-require-effective-target vect_int } */
kono
parents:
diff changeset
2
kono
parents:
diff changeset
3 #include <stdarg.h>
kono
parents:
diff changeset
4 #include "tree-vect.h"
kono
parents:
diff changeset
5
kono
parents:
diff changeset
6 #define N 50
kono
parents:
diff changeset
7
kono
parents:
diff changeset
8 typedef struct {
kono
parents:
diff changeset
9 short a;
kono
parents:
diff changeset
10 short b;
kono
parents:
diff changeset
11 } data;
kono
parents:
diff changeset
12
kono
parents:
diff changeset
13 data in1[N], in2[N], out[N];
kono
parents:
diff changeset
14 short result[N*2] = {7,-7,9,-6,11,-5,13,-4,15,-3,17,-2,19,-1,21,0,23,1,25,2,27,3,29,4,31,5,33,6,35,7,37,8,39,9,41,10,43,11,45,12,47,13,49,14,51,15,53,16,55,17,57,18,59,19,61,20,63,21,65,22,67,23,69,24,71,25,73,26,75,27,77,28,79,29,81,30,83,31,85,32,87,33,89,34,91,35,93,36,95,37,97,38,99,39,101,40,103,41,105,42};
kono
parents:
diff changeset
15 short out1[N], out2[N];
kono
parents:
diff changeset
16
kono
parents:
diff changeset
17 __attribute__ ((noinline)) void
kono
parents:
diff changeset
18 foo ()
kono
parents:
diff changeset
19 {
kono
parents:
diff changeset
20 int i;
kono
parents:
diff changeset
21 short c, d;
kono
parents:
diff changeset
22
kono
parents:
diff changeset
23 /* Vectorizable with conditional store sinking. */
kono
parents:
diff changeset
24 for (i = 0; i < N; i++)
kono
parents:
diff changeset
25 {
kono
parents:
diff changeset
26 c = in1[i].b;
kono
parents:
diff changeset
27 d = in2[i].b;
kono
parents:
diff changeset
28
kono
parents:
diff changeset
29 if (c >= d)
kono
parents:
diff changeset
30 {
kono
parents:
diff changeset
31 out[i].b = c;
kono
parents:
diff changeset
32 out[i].a = d + 5;
kono
parents:
diff changeset
33 }
kono
parents:
diff changeset
34 else
kono
parents:
diff changeset
35 {
kono
parents:
diff changeset
36 out[i].b = d - 12;
kono
parents:
diff changeset
37 out[i].a = c + d;
kono
parents:
diff changeset
38 }
kono
parents:
diff changeset
39 }
kono
parents:
diff changeset
40
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
41 /* Only vectorizable with masked stores. */
111
kono
parents:
diff changeset
42 for (i = 0; i < N; i++)
kono
parents:
diff changeset
43 {
kono
parents:
diff changeset
44 c = in1[i].b;
kono
parents:
diff changeset
45 d = in2[i].b;
kono
parents:
diff changeset
46
kono
parents:
diff changeset
47 if (c >= d)
kono
parents:
diff changeset
48 {
kono
parents:
diff changeset
49 out1[i] = c;
kono
parents:
diff changeset
50 }
kono
parents:
diff changeset
51 else
kono
parents:
diff changeset
52 {
kono
parents:
diff changeset
53 out2[i] = c + d;
kono
parents:
diff changeset
54 }
kono
parents:
diff changeset
55 }
kono
parents:
diff changeset
56 }
kono
parents:
diff changeset
57
kono
parents:
diff changeset
58 int
kono
parents:
diff changeset
59 main (void)
kono
parents:
diff changeset
60 {
kono
parents:
diff changeset
61 int i;
kono
parents:
diff changeset
62
kono
parents:
diff changeset
63 check_vect ();
kono
parents:
diff changeset
64
kono
parents:
diff changeset
65 for (i = 0; i < N; i++)
kono
parents:
diff changeset
66 {
kono
parents:
diff changeset
67 in1[i].a = i;
kono
parents:
diff changeset
68 in1[i].b = i + 2;
kono
parents:
diff changeset
69 in2[i].a = 5;
kono
parents:
diff changeset
70 in2[i].b = i + 5;
kono
parents:
diff changeset
71 __asm__ volatile ("");
kono
parents:
diff changeset
72 }
kono
parents:
diff changeset
73
kono
parents:
diff changeset
74 foo ();
kono
parents:
diff changeset
75
kono
parents:
diff changeset
76 for (i = 0; i < N; i++)
kono
parents:
diff changeset
77 {
kono
parents:
diff changeset
78 if (out[i].a != result[2*i] || out[i].b != result[2*i+1])
kono
parents:
diff changeset
79 abort ();
kono
parents:
diff changeset
80 }
kono
parents:
diff changeset
81
kono
parents:
diff changeset
82 return 0;
kono
parents:
diff changeset
83 }
kono
parents:
diff changeset
84
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
85 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { ! vect_masked_store } xfail { { vect_no_align && { ! vect_hw_misalign } } || { ! vect_strided2 } } } } } */
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
86 /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" { target { vect_masked_store } } } } */