Commit ba3125d7 by Eric Botcazou Committed by Eric Botcazou

vect1.ad[sb]: Add more tests.

	* 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
parent ddf2e109
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> 2011-12-12 Jakub Jelinek <jakub@redhat.com>
PR rtl-optimization/51495 PR rtl-optimization/51495
......
...@@ -12,6 +12,13 @@ package body Vect1 is ...@@ -12,6 +12,13 @@ package body Vect1 is
return R; return R;
end; 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 procedure Add (X, Y : not null access Varray; R : not null access Varray) is
begin begin
for I in X'Range loop for I in X'Range loop
...@@ -29,6 +36,13 @@ package body Vect1 is ...@@ -29,6 +36,13 @@ package body Vect1 is
return R; return R;
end; 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 procedure Add (X, Y : not null access Sarray; R : not null access Sarray) is
begin begin
for I in Sarray'Range loop for I in Sarray'Range loop
...@@ -46,6 +60,13 @@ package body Vect1 is ...@@ -46,6 +60,13 @@ package body Vect1 is
return R; return R;
end; 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 procedure Add (X, Y : not null access Darray1; R : not null access Darray1) is
begin begin
for I in Darray1'Range loop for I in Darray1'Range loop
...@@ -63,6 +84,13 @@ package body Vect1 is ...@@ -63,6 +84,13 @@ package body Vect1 is
return R; return R;
end; 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 procedure Add (X, Y : not null access Darray2; R : not null access Darray2) is
begin begin
for I in Darray2'Range loop for I in Darray2'Range loop
...@@ -80,6 +108,13 @@ package body Vect1 is ...@@ -80,6 +108,13 @@ package body Vect1 is
return R; return R;
end; 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 procedure Add (X, Y : not null access Darray3; R : not null access Darray3) is
begin begin
for I in Darray3'Range loop for I in Darray3'Range loop
...@@ -89,5 +124,5 @@ package body Vect1 is ...@@ -89,5 +124,5 @@ package body Vect1 is
end Vect1; 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" } } -- { dg-final { cleanup-tree-dump "vect" } }
...@@ -8,6 +8,7 @@ package Vect1 is ...@@ -8,6 +8,7 @@ package Vect1 is
for Varray'Alignment use 16; for Varray'Alignment use 16;
function "+" (X, Y : Varray) return Varray; 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); procedure Add (X, Y : not null access Varray; R : not null access Varray);
...@@ -16,6 +17,7 @@ package Vect1 is ...@@ -16,6 +17,7 @@ package Vect1 is
for Sarray'Alignment use 16; for Sarray'Alignment use 16;
function "+" (X, Y : Sarray) return Sarray; 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); procedure Add (X, Y : not null access Sarray; R : not null access Sarray);
...@@ -23,6 +25,7 @@ package Vect1 is ...@@ -23,6 +25,7 @@ package Vect1 is
for Darray1'Alignment use 16; for Darray1'Alignment use 16;
function "+" (X, Y : Darray1) return Darray1; 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); procedure Add (X, Y : not null access Darray1; R : not null access Darray1);
...@@ -30,6 +33,7 @@ package Vect1 is ...@@ -30,6 +33,7 @@ package Vect1 is
for Darray2'Alignment use 16; for Darray2'Alignment use 16;
function "+" (X, Y : Darray2) return Darray2; 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); procedure Add (X, Y : not null access Darray2; R : not null access Darray2);
...@@ -37,6 +41,7 @@ package Vect1 is ...@@ -37,6 +41,7 @@ package Vect1 is
for Darray3'Alignment use 16; for Darray3'Alignment use 16;
function "+" (X, Y : Darray3) return Darray3; 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); procedure Add (X, Y : not null access Darray3; R : not null access Darray3);
end Vect1; end Vect1;
...@@ -12,6 +12,13 @@ package body Vect2 is ...@@ -12,6 +12,13 @@ package body Vect2 is
return R; return R;
end; 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 procedure Add (X, Y : not null access Varray; R : not null access Varray) is
begin begin
for I in X'Range loop for I in X'Range loop
...@@ -29,6 +36,13 @@ package body Vect2 is ...@@ -29,6 +36,13 @@ package body Vect2 is
return R; return R;
end; 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 procedure Add (X, Y : not null access Sarray; R : not null access Sarray) is
begin begin
for I in Sarray'Range loop for I in Sarray'Range loop
...@@ -46,6 +60,13 @@ package body Vect2 is ...@@ -46,6 +60,13 @@ package body Vect2 is
return R; return R;
end; 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 procedure Add (X, Y : not null access Darray1; R : not null access Darray1) is
begin begin
for I in Darray1'Range loop for I in Darray1'Range loop
...@@ -63,6 +84,13 @@ package body Vect2 is ...@@ -63,6 +84,13 @@ package body Vect2 is
return R; return R;
end; 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 procedure Add (X, Y : not null access Darray2; R : not null access Darray2) is
begin begin
for I in Darray2'Range loop for I in Darray2'Range loop
...@@ -80,6 +108,13 @@ package body Vect2 is ...@@ -80,6 +108,13 @@ package body Vect2 is
return R; return R;
end; 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 procedure Add (X, Y : not null access Darray3; R : not null access Darray3) is
begin begin
for I in Darray3'Range loop for I in Darray3'Range loop
...@@ -89,5 +124,5 @@ package body Vect2 is ...@@ -89,5 +124,5 @@ package body Vect2 is
end Vect2; 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" } } -- { dg-final { cleanup-tree-dump "vect" } }
...@@ -8,6 +8,7 @@ package Vect2 is ...@@ -8,6 +8,7 @@ package Vect2 is
for Varray'Alignment use 16; for Varray'Alignment use 16;
function "+" (X, Y : Varray) return Varray; 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); procedure Add (X, Y : not null access Varray; R : not null access Varray);
...@@ -16,6 +17,7 @@ package Vect2 is ...@@ -16,6 +17,7 @@ package Vect2 is
for Sarray'Alignment use 16; for Sarray'Alignment use 16;
function "+" (X, Y : Sarray) return Sarray; 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); procedure Add (X, Y : not null access Sarray; R : not null access Sarray);
...@@ -23,6 +25,7 @@ package Vect2 is ...@@ -23,6 +25,7 @@ package Vect2 is
for Darray1'Alignment use 16; for Darray1'Alignment use 16;
function "+" (X, Y : Darray1) return Darray1; 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); procedure Add (X, Y : not null access Darray1; R : not null access Darray1);
...@@ -30,6 +33,7 @@ package Vect2 is ...@@ -30,6 +33,7 @@ package Vect2 is
for Darray2'Alignment use 16; for Darray2'Alignment use 16;
function "+" (X, Y : Darray2) return Darray2; 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); procedure Add (X, Y : not null access Darray2; R : not null access Darray2);
...@@ -37,6 +41,7 @@ package Vect2 is ...@@ -37,6 +41,7 @@ package Vect2 is
for Darray3'Alignment use 16; for Darray3'Alignment use 16;
function "+" (X, Y : Darray3) return Darray3; 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); procedure Add (X, Y : not null access Darray3; R : not null access Darray3);
end Vect2; end Vect2;
...@@ -12,6 +12,13 @@ package body Vect3 is ...@@ -12,6 +12,13 @@ package body Vect3 is
return R; return R;
end; 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 procedure Add (X, Y : not null access Varray; R : not null access Varray) is
begin begin
for I in X'Range loop for I in X'Range loop
...@@ -29,6 +36,13 @@ package body Vect3 is ...@@ -29,6 +36,13 @@ package body Vect3 is
return R; return R;
end; 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 procedure Add (X, Y : not null access Sarray; R : not null access Sarray) is
begin begin
for I in Sarray'Range loop for I in Sarray'Range loop
...@@ -46,6 +60,13 @@ package body Vect3 is ...@@ -46,6 +60,13 @@ package body Vect3 is
return R; return R;
end; 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 procedure Add (X, Y : not null access Darray1; R : not null access Darray1) is
begin begin
for I in Darray1'Range loop for I in Darray1'Range loop
...@@ -63,6 +84,13 @@ package body Vect3 is ...@@ -63,6 +84,13 @@ package body Vect3 is
return R; return R;
end; 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 procedure Add (X, Y : not null access Darray2; R : not null access Darray2) is
begin begin
for I in Darray2'Range loop for I in Darray2'Range loop
...@@ -80,6 +108,13 @@ package body Vect3 is ...@@ -80,6 +108,13 @@ package body Vect3 is
return R; return R;
end; 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 procedure Add (X, Y : not null access Darray3; R : not null access Darray3) is
begin begin
for I in Darray3'Range loop for I in Darray3'Range loop
...@@ -89,5 +124,5 @@ package body Vect3 is ...@@ -89,5 +124,5 @@ package body Vect3 is
end Vect3; 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" } } -- { dg-final { cleanup-tree-dump "vect" } }
...@@ -8,6 +8,7 @@ package Vect3 is ...@@ -8,6 +8,7 @@ package Vect3 is
for Varray'Alignment use 16; for Varray'Alignment use 16;
function "+" (X, Y : Varray) return Varray; 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); procedure Add (X, Y : not null access Varray; R : not null access Varray);
...@@ -17,6 +18,7 @@ package Vect3 is ...@@ -17,6 +18,7 @@ package Vect3 is
for Sarray'Alignment use 16; for Sarray'Alignment use 16;
function "+" (X, Y : Sarray) return Sarray; 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); procedure Add (X, Y : not null access Sarray; R : not null access Sarray);
...@@ -24,6 +26,7 @@ package Vect3 is ...@@ -24,6 +26,7 @@ package Vect3 is
for Darray1'Alignment use 16; for Darray1'Alignment use 16;
function "+" (X, Y : Darray1) return Darray1; 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); procedure Add (X, Y : not null access Darray1; R : not null access Darray1);
...@@ -31,6 +34,7 @@ package Vect3 is ...@@ -31,6 +34,7 @@ package Vect3 is
for Darray2'Alignment use 16; for Darray2'Alignment use 16;
function "+" (X, Y : Darray2) return Darray2; 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); procedure Add (X, Y : not null access Darray2; R : not null access Darray2);
...@@ -38,6 +42,7 @@ package Vect3 is ...@@ -38,6 +42,7 @@ package Vect3 is
for Darray3'Alignment use 16; for Darray3'Alignment use 16;
function "+" (X, Y : Darray3) return Darray3; 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); procedure Add (X, Y : not null access Darray3; R : not null access Darray3);
end Vect3; end Vect3;
...@@ -12,6 +12,13 @@ package body Vect4 is ...@@ -12,6 +12,13 @@ package body Vect4 is
return R; return R;
end; 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 procedure Add (X : not null access Varray; Y : Long_Float; R : not null access Varray) is
begin begin
for I in X'Range loop for I in X'Range loop
...@@ -29,6 +36,13 @@ package body Vect4 is ...@@ -29,6 +36,13 @@ package body Vect4 is
return R; return R;
end; 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 procedure Add (X : not null access Sarray; Y : Long_Float; R : not null access Sarray) is
begin begin
for I in Sarray'Range loop for I in Sarray'Range loop
...@@ -46,6 +60,13 @@ package body Vect4 is ...@@ -46,6 +60,13 @@ package body Vect4 is
return R; return R;
end; 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 procedure Add (X : not null access Darray1; Y : Long_Float; R : not null access Darray1) is
begin begin
for I in Darray1'Range loop for I in Darray1'Range loop
...@@ -63,6 +84,13 @@ package body Vect4 is ...@@ -63,6 +84,13 @@ package body Vect4 is
return R; return R;
end; 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 procedure Add (X : not null access Darray2; Y : Long_Float; R : not null access Darray2) is
begin begin
for I in Darray2'Range loop for I in Darray2'Range loop
...@@ -80,6 +108,13 @@ package body Vect4 is ...@@ -80,6 +108,13 @@ package body Vect4 is
return R; return R;
end; 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 procedure Add (X : not null access Darray3; Y : Long_Float; R : not null access Darray3) is
begin begin
for I in Darray3'Range loop for I in Darray3'Range loop
...@@ -89,5 +124,5 @@ package body Vect4 is ...@@ -89,5 +124,5 @@ package body Vect4 is
end Vect4; 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" } } -- { dg-final { cleanup-tree-dump "vect" } }
...@@ -8,6 +8,7 @@ package Vect4 is ...@@ -8,6 +8,7 @@ package Vect4 is
for Varray'Alignment use 16; for Varray'Alignment use 16;
function "+" (X : Varray; Y : Long_Float) return Varray; 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); procedure Add (X : not null access Varray; Y : Long_Float; R : not null access Varray);
...@@ -16,6 +17,7 @@ package Vect4 is ...@@ -16,6 +17,7 @@ package Vect4 is
for Sarray'Alignment use 16; for Sarray'Alignment use 16;
function "+" (X : Sarray; Y : Long_Float) return Sarray; 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); procedure Add (X : not null access Sarray; Y : Long_Float; R : not null access Sarray);
...@@ -23,6 +25,7 @@ package Vect4 is ...@@ -23,6 +25,7 @@ package Vect4 is
for Darray1'Alignment use 16; for Darray1'Alignment use 16;
function "+" (X : Darray1; Y : Long_Float) return Darray1; 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); procedure Add (X : not null access Darray1; Y : Long_Float; R : not null access Darray1);
...@@ -30,6 +33,7 @@ package Vect4 is ...@@ -30,6 +33,7 @@ package Vect4 is
for Darray2'Alignment use 16; for Darray2'Alignment use 16;
function "+" (X : Darray2; Y : Long_Float) return Darray2; 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); procedure Add (X : not null access Darray2; Y : Long_Float; R : not null access Darray2);
...@@ -37,6 +41,7 @@ package Vect4 is ...@@ -37,6 +41,7 @@ package Vect4 is
for Darray3'Alignment use 16; for Darray3'Alignment use 16;
function "+" (X : Darray3; Y : Long_Float) return Darray3; 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); procedure Add (X : not null access Darray3; Y : Long_Float; R : not null access Darray3);
end Vect4; end Vect4;
...@@ -12,6 +12,13 @@ package body Vect5 is ...@@ -12,6 +12,13 @@ package body Vect5 is
return R; return R;
end; 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 procedure Add (X : not null access Varray; Y : Long_Float; R : not null access Varray) is
begin begin
for I in X'Range loop for I in X'Range loop
...@@ -29,6 +36,13 @@ package body Vect5 is ...@@ -29,6 +36,13 @@ package body Vect5 is
return R; return R;
end; 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 procedure Add (X : not null access Sarray; Y : Long_Float; R : not null access Sarray) is
begin begin
for I in Sarray'Range loop for I in Sarray'Range loop
...@@ -46,6 +60,13 @@ package body Vect5 is ...@@ -46,6 +60,13 @@ package body Vect5 is
return R; return R;
end; 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 procedure Add (X : not null access Darray1; Y : Long_Float; R : not null access Darray1) is
begin begin
for I in Darray1'Range loop for I in Darray1'Range loop
...@@ -63,6 +84,13 @@ package body Vect5 is ...@@ -63,6 +84,13 @@ package body Vect5 is
return R; return R;
end; 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 procedure Add (X : not null access Darray2; Y : Long_Float; R : not null access Darray2) is
begin begin
for I in Darray2'Range loop for I in Darray2'Range loop
...@@ -80,6 +108,13 @@ package body Vect5 is ...@@ -80,6 +108,13 @@ package body Vect5 is
return R; return R;
end; 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 procedure Add (X : not null access Darray3; Y : Long_Float; R : not null access Darray3) is
begin begin
for I in Darray3'Range loop for I in Darray3'Range loop
...@@ -89,5 +124,5 @@ package body Vect5 is ...@@ -89,5 +124,5 @@ package body Vect5 is
end Vect5; 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" } } -- { dg-final { cleanup-tree-dump "vect" } }
...@@ -8,6 +8,7 @@ package Vect5 is ...@@ -8,6 +8,7 @@ package Vect5 is
for Varray'Alignment use 16; for Varray'Alignment use 16;
function "+" (X : Varray; Y : Long_Float) return Varray; 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); procedure Add (X : not null access Varray; Y : Long_Float; R : not null access Varray);
...@@ -16,6 +17,7 @@ package Vect5 is ...@@ -16,6 +17,7 @@ package Vect5 is
for Sarray'Alignment use 16; for Sarray'Alignment use 16;
function "+" (X : Sarray; Y : Long_Float) return Sarray; 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); procedure Add (X : not null access Sarray; Y : Long_Float; R : not null access Sarray);
...@@ -23,6 +25,7 @@ package Vect5 is ...@@ -23,6 +25,7 @@ package Vect5 is
for Darray1'Alignment use 16; for Darray1'Alignment use 16;
function "+" (X : Darray1; Y : Long_Float) return Darray1; 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); procedure Add (X : not null access Darray1; Y : Long_Float; R : not null access Darray1);
...@@ -30,6 +33,7 @@ package Vect5 is ...@@ -30,6 +33,7 @@ package Vect5 is
for Darray2'Alignment use 16; for Darray2'Alignment use 16;
function "+" (X : Darray2; Y : Long_Float) return Darray2; 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); procedure Add (X : not null access Darray2; Y : Long_Float; R : not null access Darray2);
...@@ -37,6 +41,7 @@ package Vect5 is ...@@ -37,6 +41,7 @@ package Vect5 is
for Darray3'Alignment use 16; for Darray3'Alignment use 16;
function "+" (X : Darray3; Y : Long_Float) return Darray3; 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); procedure Add (X : not null access Darray3; Y : Long_Float; R : not null access Darray3);
end Vect5; end Vect5;
...@@ -12,6 +12,13 @@ package body Vect6 is ...@@ -12,6 +12,13 @@ package body Vect6 is
return R; return R;
end; 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 procedure Add (X : not null access Varray; Y : Long_Float; R : not null access Varray) is
begin begin
for I in X'Range loop for I in X'Range loop
...@@ -29,6 +36,13 @@ package body Vect6 is ...@@ -29,6 +36,13 @@ package body Vect6 is
return R; return R;
end; 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 procedure Add (X : not null access Sarray; Y : Long_Float; R : not null access Sarray) is
begin begin
for I in Sarray'Range loop for I in Sarray'Range loop
...@@ -46,6 +60,13 @@ package body Vect6 is ...@@ -46,6 +60,13 @@ package body Vect6 is
return R; return R;
end; 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 procedure Add (X : not null access Darray1; Y : Long_Float; R : not null access Darray1) is
begin begin
for I in Darray1'Range loop for I in Darray1'Range loop
...@@ -63,6 +84,13 @@ package body Vect6 is ...@@ -63,6 +84,13 @@ package body Vect6 is
return R; return R;
end; 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 procedure Add (X : not null access Darray2; Y : Long_Float; R : not null access Darray2) is
begin begin
for I in Darray2'Range loop for I in Darray2'Range loop
...@@ -80,6 +108,13 @@ package body Vect6 is ...@@ -80,6 +108,13 @@ package body Vect6 is
return R; return R;
end; 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 procedure Add (X : not null access Darray3; Y : Long_Float; R : not null access Darray3) is
begin begin
for I in Darray3'Range loop for I in Darray3'Range loop
...@@ -89,5 +124,5 @@ package body Vect6 is ...@@ -89,5 +124,5 @@ package body Vect6 is
end Vect6; 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" } } -- { dg-final { cleanup-tree-dump "vect" } }
...@@ -8,6 +8,7 @@ package Vect6 is ...@@ -8,6 +8,7 @@ package Vect6 is
for Varray'Alignment use 16; for Varray'Alignment use 16;
function "+" (X : Varray; Y : Long_Float) return Varray; 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); procedure Add (X : not null access Varray; Y : Long_Float; R : not null access Varray);
...@@ -17,6 +18,7 @@ package Vect6 is ...@@ -17,6 +18,7 @@ package Vect6 is
for Sarray'Alignment use 16; for Sarray'Alignment use 16;
function "+" (X : Sarray; Y : Long_Float) return Sarray; 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); procedure Add (X : not null access Sarray; Y : Long_Float; R : not null access Sarray);
...@@ -24,6 +26,7 @@ package Vect6 is ...@@ -24,6 +26,7 @@ package Vect6 is
for Darray1'Alignment use 16; for Darray1'Alignment use 16;
function "+" (X : Darray1; Y : Long_Float) return Darray1; 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); procedure Add (X : not null access Darray1; Y : Long_Float; R : not null access Darray1);
...@@ -31,6 +34,7 @@ package Vect6 is ...@@ -31,6 +34,7 @@ package Vect6 is
for Darray2'Alignment use 16; for Darray2'Alignment use 16;
function "+" (X : Darray2; Y : Long_Float) return Darray2; 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); procedure Add (X : not null access Darray2; Y : Long_Float; R : not null access Darray2);
...@@ -38,6 +42,7 @@ package Vect6 is ...@@ -38,6 +42,7 @@ package Vect6 is
for Darray3'Alignment use 16; for Darray3'Alignment use 16;
function "+" (X : Darray3; Y : Long_Float) return Darray3; 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); procedure Add (X : not null access Darray3; Y : Long_Float; R : not null access Darray3);
end Vect6; end Vect6;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment