PR target/84336
[official-gcc.git] / gcc / testsuite / gnat.dg / vect3.adb
blobb3326905e68ac6c2bc0affd1d2dedb50f124a466
1 -- { dg-do compile { target i?86-*-* x86_64-*-* } }
2 -- { dg-options "-O3 -msse2 -fno-vect-cost-model -fdump-tree-vect-details" }
4 package body Vect3 is
6 function "+" (X, Y : Varray) return Varray is
7 R : Varray (X'Range);
8 begin
9 for I in X'Range loop
10 R(I) := X(I) + Y(I);
11 end loop;
12 return R;
13 end;
15 procedure Add (X, Y : Varray; R : out Varray) is
16 begin
17 for I in X'Range loop
18 R(I) := X(I) + Y(I);
19 end loop;
20 end;
22 procedure Add (X, Y : not null access Varray; R : not null access Varray) is
23 begin
24 for I in X'Range loop
25 R(I) := X(I) + Y(I);
26 end loop;
27 end;
30 function "+" (X, Y : Sarray) return Sarray is
31 R : Sarray;
32 begin
33 for I in Sarray'Range loop
34 R(I) := X(I) + Y(I);
35 end loop;
36 return R;
37 end;
39 procedure Add (X, Y : Sarray; R : out Sarray) is
40 begin
41 for I in Sarray'Range loop
42 R(I) := X(I) + Y(I);
43 end loop;
44 end;
46 procedure Add (X, Y : not null access Sarray; R : not null access Sarray) is
47 begin
48 for I in Sarray'Range loop
49 R(I) := X(I) + Y(I);
50 end loop;
51 end;
54 function "+" (X, Y : Darray1) return Darray1 is
55 R : Darray1;
56 begin
57 for I in Darray1'Range loop
58 R(I) := X(I) + Y(I);
59 end loop;
60 return R;
61 end;
63 procedure Add (X, Y : Darray1; R : out Darray1) is
64 begin
65 for I in Darray1'Range loop
66 R(I) := X(I) + Y(I);
67 end loop;
68 end;
70 procedure Add (X, Y : not null access Darray1; R : not null access Darray1) is
71 begin
72 for I in Darray1'Range loop
73 R(I) := X(I) + Y(I);
74 end loop;
75 end;
78 function "+" (X, Y : Darray2) return Darray2 is
79 R : Darray2;
80 begin
81 for I in Darray2'Range loop
82 R(I) := X(I) + Y(I);
83 end loop;
84 return R;
85 end;
87 procedure Add (X, Y : Darray2; R : out Darray2) is
88 begin
89 for I in Darray2'Range loop
90 R(I) := X(I) + Y(I);
91 end loop;
92 end;
94 procedure Add (X, Y : not null access Darray2; R : not null access Darray2) is
95 begin
96 for I in Darray2'Range loop
97 R(I) := X(I) + Y(I);
98 end loop;
99 end;
102 function "+" (X, Y : Darray3) return Darray3 is
103 R : Darray3;
104 begin
105 for I in Darray3'Range loop
106 R(I) := X(I) + Y(I);
107 end loop;
108 return R;
109 end;
111 procedure Add (X, Y : Darray3; R : out Darray3) is
112 begin
113 for I in Darray3'Range loop
114 R(I) := X(I) + Y(I);
115 end loop;
116 end;
118 procedure Add (X, Y : not null access Darray3; R : not null access Darray3) is
119 begin
120 for I in Darray3'Range loop
121 R(I) := X(I) + Y(I);
122 end loop;
123 end;
125 end Vect3;
127 -- { dg-final { scan-tree-dump-times "vectorized 1 loops" 15 "vect" } }