* gnat.dg/vect1.ad[sb]: Add more tests.
* gnat.dg/vect2.ad[sb]: Likewise.
* gnat.dg/vect3.ad[sb]: Likewise.
* gnat.dg/vect4.ad[sb]: Likewise.
* gnat.dg/vect5.ad[sb]: Likewise.
* gnat.dg/vect6.ad[sb]: Likewise.
From-SVN: r182276
+2011-12-13 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/vect1.ad[sb]: Add more tests.
+ * gnat.dg/vect2.ad[sb]: Likewise.
+ * gnat.dg/vect3.ad[sb]: Likewise.
+ * gnat.dg/vect4.ad[sb]: Likewise.
+ * gnat.dg/vect5.ad[sb]: Likewise.
+ * gnat.dg/vect6.ad[sb]: Likewise.
+
2011-12-12 Jakub Jelinek <jakub@redhat.com>
PR rtl-optimization/51495
return R;
end;
+ procedure Add (X, Y : Varray; R : out Varray) is
+ begin
+ for I in X'Range loop
+ R(I) := X(I) + Y(I);
+ end loop;
+ end;
+
procedure Add (X, Y : not null access Varray; R : not null access Varray) is
begin
for I in X'Range loop
return R;
end;
+ procedure Add (X, Y : Sarray; R : out Sarray) is
+ begin
+ for I in Sarray'Range loop
+ R(I) := X(I) + Y(I);
+ end loop;
+ end;
+
procedure Add (X, Y : not null access Sarray; R : not null access Sarray) is
begin
for I in Sarray'Range loop
return R;
end;
+ procedure Add (X, Y : Darray1; R : out Darray1) is
+ begin
+ for I in Darray1'Range loop
+ R(I) := X(I) + Y(I);
+ end loop;
+ end;
+
procedure Add (X, Y : not null access Darray1; R : not null access Darray1) is
begin
for I in Darray1'Range loop
return R;
end;
+ procedure Add (X, Y : Darray2; R : out Darray2) is
+ begin
+ for I in Darray2'Range loop
+ R(I) := X(I) + Y(I);
+ end loop;
+ end;
+
procedure Add (X, Y : not null access Darray2; R : not null access Darray2) is
begin
for I in Darray2'Range loop
return R;
end;
+ procedure Add (X, Y : Darray3; R : out Darray3) is
+ begin
+ for I in Darray3'Range loop
+ R(I) := X(I) + Y(I);
+ end loop;
+ end;
+
procedure Add (X, Y : not null access Darray3; R : not null access Darray3) is
begin
for I in Darray3'Range loop
end Vect1;
--- { dg-final { scan-tree-dump-times "vectorized 1 loops" 10 "vect" } }
+-- { dg-final { scan-tree-dump-times "vectorized 1 loops" 15 "vect" } }
-- { dg-final { cleanup-tree-dump "vect" } }
for Varray'Alignment use 16;
function "+" (X, Y : Varray) return Varray;
+ procedure Add (X, Y : Varray; R : out Varray);
procedure Add (X, Y : not null access Varray; R : not null access Varray);
for Sarray'Alignment use 16;
function "+" (X, Y : Sarray) return Sarray;
+ procedure Add (X, Y : Sarray; R : out Sarray);
procedure Add (X, Y : not null access Sarray; R : not null access Sarray);
for Darray1'Alignment use 16;
function "+" (X, Y : Darray1) return Darray1;
+ procedure Add (X, Y : Darray1; R : out Darray1);
procedure Add (X, Y : not null access Darray1; R : not null access Darray1);
for Darray2'Alignment use 16;
function "+" (X, Y : Darray2) return Darray2;
+ procedure Add (X, Y : Darray2; R : out Darray2);
procedure Add (X, Y : not null access Darray2; R : not null access Darray2);
for Darray3'Alignment use 16;
function "+" (X, Y : Darray3) return Darray3;
+ procedure Add (X, Y : Darray3; R : out Darray3);
procedure Add (X, Y : not null access Darray3; R : not null access Darray3);
end Vect1;
return R;
end;
+ procedure Add (X, Y : Varray; R : out Varray) is
+ begin
+ for I in X'Range loop
+ R(I) := X(I) + Y(I);
+ end loop;
+ end;
+
procedure Add (X, Y : not null access Varray; R : not null access Varray) is
begin
for I in X'Range loop
return R;
end;
+ procedure Add (X, Y : Sarray; R : out Sarray) is
+ begin
+ for I in Sarray'Range loop
+ R(I) := X(I) + Y(I);
+ end loop;
+ end;
+
procedure Add (X, Y : not null access Sarray; R : not null access Sarray) is
begin
for I in Sarray'Range loop
return R;
end;
+ procedure Add (X, Y : Darray1; R : out Darray1) is
+ begin
+ for I in Darray1'Range loop
+ R(I) := X(I) + Y(I);
+ end loop;
+ end;
+
procedure Add (X, Y : not null access Darray1; R : not null access Darray1) is
begin
for I in Darray1'Range loop
return R;
end;
+ procedure Add (X, Y : Darray2; R : out Darray2) is
+ begin
+ for I in Darray2'Range loop
+ R(I) := X(I) + Y(I);
+ end loop;
+ end;
+
procedure Add (X, Y : not null access Darray2; R : not null access Darray2) is
begin
for I in Darray2'Range loop
return R;
end;
+ procedure Add (X, Y : Darray3; R : out Darray3) is
+ begin
+ for I in Darray3'Range loop
+ R(I) := X(I) + Y(I);
+ end loop;
+ end;
+
procedure Add (X, Y : not null access Darray3; R : not null access Darray3) is
begin
for I in Darray3'Range loop
end Vect2;
--- { dg-final { scan-tree-dump-times "vectorized 1 loops" 10 "vect" } }
+-- { dg-final { scan-tree-dump-times "vectorized 1 loops" 15 "vect" } }
-- { dg-final { cleanup-tree-dump "vect" } }
for Varray'Alignment use 16;
function "+" (X, Y : Varray) return Varray;
+ procedure Add (X, Y : Varray; R : out Varray);
procedure Add (X, Y : not null access Varray; R : not null access Varray);
for Sarray'Alignment use 16;
function "+" (X, Y : Sarray) return Sarray;
+ procedure Add (X, Y : Sarray; R : out Sarray);
procedure Add (X, Y : not null access Sarray; R : not null access Sarray);
for Darray1'Alignment use 16;
function "+" (X, Y : Darray1) return Darray1;
+ procedure Add (X, Y : Darray1; R : out Darray1);
procedure Add (X, Y : not null access Darray1; R : not null access Darray1);
for Darray2'Alignment use 16;
function "+" (X, Y : Darray2) return Darray2;
+ procedure Add (X, Y : Darray2; R : out Darray2);
procedure Add (X, Y : not null access Darray2; R : not null access Darray2);
for Darray3'Alignment use 16;
function "+" (X, Y : Darray3) return Darray3;
+ procedure Add (X, Y : Darray3; R : out Darray3);
procedure Add (X, Y : not null access Darray3; R : not null access Darray3);
end Vect2;
return R;
end;
+ procedure Add (X, Y : Varray; R : out Varray) is
+ begin
+ for I in X'Range loop
+ R(I) := X(I) + Y(I);
+ end loop;
+ end;
+
procedure Add (X, Y : not null access Varray; R : not null access Varray) is
begin
for I in X'Range loop
return R;
end;
+ procedure Add (X, Y : Sarray; R : out Sarray) is
+ begin
+ for I in Sarray'Range loop
+ R(I) := X(I) + Y(I);
+ end loop;
+ end;
+
procedure Add (X, Y : not null access Sarray; R : not null access Sarray) is
begin
for I in Sarray'Range loop
return R;
end;
+ procedure Add (X, Y : Darray1; R : out Darray1) is
+ begin
+ for I in Darray1'Range loop
+ R(I) := X(I) + Y(I);
+ end loop;
+ end;
+
procedure Add (X, Y : not null access Darray1; R : not null access Darray1) is
begin
for I in Darray1'Range loop
return R;
end;
+ procedure Add (X, Y : Darray2; R : out Darray2) is
+ begin
+ for I in Darray2'Range loop
+ R(I) := X(I) + Y(I);
+ end loop;
+ end;
+
procedure Add (X, Y : not null access Darray2; R : not null access Darray2) is
begin
for I in Darray2'Range loop
return R;
end;
+ procedure Add (X, Y : Darray3; R : out Darray3) is
+ begin
+ for I in Darray3'Range loop
+ R(I) := X(I) + Y(I);
+ end loop;
+ end;
+
procedure Add (X, Y : not null access Darray3; R : not null access Darray3) is
begin
for I in Darray3'Range loop
end Vect3;
--- { dg-final { scan-tree-dump-times "vectorized 1 loops" 10 "vect" } }
+-- { dg-final { scan-tree-dump-times "vectorized 1 loops" 15 "vect" } }
-- { dg-final { cleanup-tree-dump "vect" } }
for Varray'Alignment use 16;
function "+" (X, Y : Varray) return Varray;
+ procedure Add (X, Y : Varray; R : out Varray);
procedure Add (X, Y : not null access Varray; R : not null access Varray);
for Sarray'Alignment use 16;
function "+" (X, Y : Sarray) return Sarray;
+ procedure Add (X, Y : Sarray; R : out Sarray);
procedure Add (X, Y : not null access Sarray; R : not null access Sarray);
for Darray1'Alignment use 16;
function "+" (X, Y : Darray1) return Darray1;
+ procedure Add (X, Y : Darray1; R : out Darray1);
procedure Add (X, Y : not null access Darray1; R : not null access Darray1);
for Darray2'Alignment use 16;
function "+" (X, Y : Darray2) return Darray2;
+ procedure Add (X, Y : Darray2; R : out Darray2);
procedure Add (X, Y : not null access Darray2; R : not null access Darray2);
for Darray3'Alignment use 16;
function "+" (X, Y : Darray3) return Darray3;
+ procedure Add (X, Y : Darray3; R : out Darray3);
procedure Add (X, Y : not null access Darray3; R : not null access Darray3);
end Vect3;
return R;
end;
+ procedure Add (X : Varray; Y : Long_Float; R : out Varray) is
+ begin
+ for I in X'Range loop
+ R(I) := X(I) + Y;
+ end loop;
+ end;
+
procedure Add (X : not null access Varray; Y : Long_Float; R : not null access Varray) is
begin
for I in X'Range loop
return R;
end;
+ procedure Add (X : Sarray; Y : Long_Float; R : out Sarray) is
+ begin
+ for I in Sarray'Range loop
+ R(I) := X(I) + Y;
+ end loop;
+ end;
+
procedure Add (X : not null access Sarray; Y : Long_Float; R : not null access Sarray) is
begin
for I in Sarray'Range loop
return R;
end;
+ procedure Add (X : Darray1; Y : Long_Float; R : out Darray1) is
+ begin
+ for I in Darray1'Range loop
+ R(I) := X(I) + Y;
+ end loop;
+ end;
+
procedure Add (X : not null access Darray1; Y : Long_Float; R : not null access Darray1) is
begin
for I in Darray1'Range loop
return R;
end;
+ procedure Add (X : Darray2; Y : Long_Float; R : out Darray2) is
+ begin
+ for I in Darray2'Range loop
+ R(I) := X(I) + Y;
+ end loop;
+ end;
+
procedure Add (X : not null access Darray2; Y : Long_Float; R : not null access Darray2) is
begin
for I in Darray2'Range loop
return R;
end;
+ procedure Add (X : Darray3; Y : Long_Float; R : out Darray3) is
+ begin
+ for I in Darray3'Range loop
+ R(I) := X(I) + Y;
+ end loop;
+ end;
+
procedure Add (X : not null access Darray3; Y : Long_Float; R : not null access Darray3) is
begin
for I in Darray3'Range loop
end Vect4;
--- { dg-final { scan-tree-dump-times "vectorized 1 loops" 10 "vect" } }
+-- { dg-final { scan-tree-dump-times "vectorized 1 loops" 15 "vect" } }
-- { dg-final { cleanup-tree-dump "vect" } }
for Varray'Alignment use 16;
function "+" (X : Varray; Y : Long_Float) return Varray;
+ procedure Add (X : Varray; Y : Long_Float; R : out Varray);
procedure Add (X : not null access Varray; Y : Long_Float; R : not null access Varray);
for Sarray'Alignment use 16;
function "+" (X : Sarray; Y : Long_Float) return Sarray;
+ procedure Add (X : Sarray; Y : Long_Float; R : out Sarray);
procedure Add (X : not null access Sarray; Y : Long_Float; R : not null access Sarray);
for Darray1'Alignment use 16;
function "+" (X : Darray1; Y : Long_Float) return Darray1;
+ procedure Add (X : Darray1; Y : Long_Float; R : out Darray1);
procedure Add (X : not null access Darray1; Y : Long_Float; R : not null access Darray1);
for Darray2'Alignment use 16;
function "+" (X : Darray2; Y : Long_Float) return Darray2;
+ procedure Add (X : Darray2; Y : Long_Float; R : out Darray2);
procedure Add (X : not null access Darray2; Y : Long_Float; R : not null access Darray2);
for Darray3'Alignment use 16;
function "+" (X : Darray3; Y : Long_Float) return Darray3;
+ procedure Add (X : Darray3; Y : Long_Float; R : out Darray3);
procedure Add (X : not null access Darray3; Y : Long_Float; R : not null access Darray3);
end Vect4;
return R;
end;
+ procedure Add (X : Varray; Y : Long_Float; R : out Varray) is
+ begin
+ for I in X'Range loop
+ R(I) := X(I) + Y;
+ end loop;
+ end;
+
procedure Add (X : not null access Varray; Y : Long_Float; R : not null access Varray) is
begin
for I in X'Range loop
return R;
end;
+ procedure Add (X : Sarray; Y : Long_Float; R : out Sarray) is
+ begin
+ for I in Sarray'Range loop
+ R(I) := X(I) + Y;
+ end loop;
+ end;
+
procedure Add (X : not null access Sarray; Y : Long_Float; R : not null access Sarray) is
begin
for I in Sarray'Range loop
return R;
end;
+ procedure Add (X : Darray1; Y : Long_Float; R : out Darray1) is
+ begin
+ for I in Darray1'Range loop
+ R(I) := X(I) + Y;
+ end loop;
+ end;
+
procedure Add (X : not null access Darray1; Y : Long_Float; R : not null access Darray1) is
begin
for I in Darray1'Range loop
return R;
end;
+ procedure Add (X : Darray2; Y : Long_Float; R : out Darray2) is
+ begin
+ for I in Darray2'Range loop
+ R(I) := X(I) + Y;
+ end loop;
+ end;
+
procedure Add (X : not null access Darray2; Y : Long_Float; R : not null access Darray2) is
begin
for I in Darray2'Range loop
return R;
end;
+ procedure Add (X : Darray3; Y : Long_Float; R : out Darray3) is
+ begin
+ for I in Darray3'Range loop
+ R(I) := X(I) + Y;
+ end loop;
+ end;
+
procedure Add (X : not null access Darray3; Y : Long_Float; R : not null access Darray3) is
begin
for I in Darray3'Range loop
end Vect5;
--- { dg-final { scan-tree-dump-times "vectorized 1 loops" 10 "vect" } }
+-- { dg-final { scan-tree-dump-times "vectorized 1 loops" 15 "vect" } }
-- { dg-final { cleanup-tree-dump "vect" } }
for Varray'Alignment use 16;
function "+" (X : Varray; Y : Long_Float) return Varray;
+ procedure Add (X : Varray; Y : Long_Float; R : out Varray);
procedure Add (X : not null access Varray; Y : Long_Float; R : not null access Varray);
for Sarray'Alignment use 16;
function "+" (X : Sarray; Y : Long_Float) return Sarray;
+ procedure Add (X : Sarray; Y : Long_Float; R : out Sarray);
procedure Add (X : not null access Sarray; Y : Long_Float; R : not null access Sarray);
for Darray1'Alignment use 16;
function "+" (X : Darray1; Y : Long_Float) return Darray1;
+ procedure Add (X : Darray1; Y : Long_Float; R : out Darray1);
procedure Add (X : not null access Darray1; Y : Long_Float; R : not null access Darray1);
for Darray2'Alignment use 16;
function "+" (X : Darray2; Y : Long_Float) return Darray2;
+ procedure Add (X : Darray2; Y : Long_Float; R : out Darray2);
procedure Add (X : not null access Darray2; Y : Long_Float; R : not null access Darray2);
for Darray3'Alignment use 16;
function "+" (X : Darray3; Y : Long_Float) return Darray3;
+ procedure Add (X : Darray3; Y : Long_Float; R : out Darray3);
procedure Add (X : not null access Darray3; Y : Long_Float; R : not null access Darray3);
end Vect5;
return R;
end;
+ procedure Add (X : Varray; Y : Long_Float; R : out Varray) is
+ begin
+ for I in X'Range loop
+ R(I) := X(I) + Y;
+ end loop;
+ end;
+
procedure Add (X : not null access Varray; Y : Long_Float; R : not null access Varray) is
begin
for I in X'Range loop
return R;
end;
+ procedure Add (X : Sarray; Y : Long_Float; R : out Sarray) is
+ begin
+ for I in Sarray'Range loop
+ R(I) := X(I) + Y;
+ end loop;
+ end;
+
procedure Add (X : not null access Sarray; Y : Long_Float; R : not null access Sarray) is
begin
for I in Sarray'Range loop
return R;
end;
+ procedure Add (X : Darray1; Y : Long_Float; R : out Darray1) is
+ begin
+ for I in Darray1'Range loop
+ R(I) := X(I) + Y;
+ end loop;
+ end;
+
procedure Add (X : not null access Darray1; Y : Long_Float; R : not null access Darray1) is
begin
for I in Darray1'Range loop
return R;
end;
+ procedure Add (X : Darray2; Y : Long_Float; R : out Darray2) is
+ begin
+ for I in Darray2'Range loop
+ R(I) := X(I) + Y;
+ end loop;
+ end;
+
procedure Add (X : not null access Darray2; Y : Long_Float; R : not null access Darray2) is
begin
for I in Darray2'Range loop
return R;
end;
+ procedure Add (X : Darray3; Y : Long_Float; R : out Darray3) is
+ begin
+ for I in Darray3'Range loop
+ R(I) := X(I) + Y;
+ end loop;
+ end;
+
procedure Add (X : not null access Darray3; Y : Long_Float; R : not null access Darray3) is
begin
for I in Darray3'Range loop
end Vect6;
--- { dg-final { scan-tree-dump-times "vectorized 1 loops" 10 "vect" } }
+-- { dg-final { scan-tree-dump-times "vectorized 1 loops" 15 "vect" } }
-- { dg-final { cleanup-tree-dump "vect" } }
for Varray'Alignment use 16;
function "+" (X : Varray; Y : Long_Float) return Varray;
+ procedure Add (X : Varray; Y : Long_Float; R : out Varray);
procedure Add (X : not null access Varray; Y : Long_Float; R : not null access Varray);
for Sarray'Alignment use 16;
function "+" (X : Sarray; Y : Long_Float) return Sarray;
+ procedure Add (X : Sarray; Y : Long_Float; R : out Sarray);
procedure Add (X : not null access Sarray; Y : Long_Float; R : not null access Sarray);
for Darray1'Alignment use 16;
function "+" (X : Darray1; Y : Long_Float) return Darray1;
+ procedure Add (X : Darray1; Y : Long_Float; R : out Darray1);
procedure Add (X : not null access Darray1; Y : Long_Float; R : not null access Darray1);
for Darray2'Alignment use 16;
function "+" (X : Darray2; Y : Long_Float) return Darray2;
+ procedure Add (X : Darray2; Y : Long_Float; R : out Darray2);
procedure Add (X : not null access Darray2; Y : Long_Float; R : not null access Darray2);
for Darray3'Alignment use 16;
function "+" (X : Darray3; Y : Long_Float) return Darray3;
+ procedure Add (X : Darray3; Y : Long_Float; R : out Darray3);
procedure Add (X : not null access Darray3; Y : Long_Float; R : not null access Darray3);
end Vect6;