]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
vect1.ad[sb]: Add more tests.
authorEric Botcazou <ebotcazou@adacore.com>
Tue, 13 Dec 2011 11:26:14 +0000 (11:26 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Tue, 13 Dec 2011 11:26:14 +0000 (11:26 +0000)
* 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

13 files changed:
gcc/testsuite/ChangeLog
gcc/testsuite/gnat.dg/vect1.adb
gcc/testsuite/gnat.dg/vect1.ads
gcc/testsuite/gnat.dg/vect2.adb
gcc/testsuite/gnat.dg/vect2.ads
gcc/testsuite/gnat.dg/vect3.adb
gcc/testsuite/gnat.dg/vect3.ads
gcc/testsuite/gnat.dg/vect4.adb
gcc/testsuite/gnat.dg/vect4.ads
gcc/testsuite/gnat.dg/vect5.adb
gcc/testsuite/gnat.dg/vect5.ads
gcc/testsuite/gnat.dg/vect6.adb
gcc/testsuite/gnat.dg/vect6.ads

index acf3efc7ada11752a0855e82d3fabb443891ce62..a87d4dc280b419a79de01fd9362a551f13c59b3a 100644 (file)
@@ -1,3 +1,12 @@
+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
index 0bbd9ee86a7bee2c9bf0c47291b07eef7ac9fc2a..3e1cfeeeda81b6f553407cbb7bdb3a5bda1a25d8 100644 (file)
@@ -12,6 +12,13 @@ package body Vect1 is
       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
@@ -29,6 +36,13 @@ package body Vect1 is
       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
@@ -46,6 +60,13 @@ package body Vect1 is
       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
@@ -63,6 +84,13 @@ package body Vect1 is
       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
@@ -80,6 +108,13 @@ package body Vect1 is
       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
@@ -89,5 +124,5 @@ package body Vect1 is
 
 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" } }
index 48343fc0553a08d70dffa61be54f3c9bf2383fce..00e0f2de86cde96107ac6b445d82ac3e00133cdd 100644 (file)
@@ -8,6 +8,7 @@ package Vect1 is
    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);
 
 
@@ -16,6 +17,7 @@ package Vect1 is
    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);
 
 
@@ -23,6 +25,7 @@ package Vect1 is
    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);
 
 
@@ -30,6 +33,7 @@ package Vect1 is
    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);
 
 
@@ -37,6 +41,7 @@ package Vect1 is
    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;
index 54e0403f135a2ae7381dcb3093fc1847bb453849..c6524c8f776977366ce87cfda7385d95797d67a8 100644 (file)
@@ -12,6 +12,13 @@ package body Vect2 is
       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
@@ -29,6 +36,13 @@ package body Vect2 is
       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
@@ -46,6 +60,13 @@ package body Vect2 is
       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
@@ -63,6 +84,13 @@ package body Vect2 is
       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
@@ -80,6 +108,13 @@ package body Vect2 is
       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
@@ -89,5 +124,5 @@ package body Vect2 is
 
 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" } }
index b5111875924781c01f53b2b03b110e7813d85290..bbd22dbc7c2b4b2115d9852fd06964acdcb1b2fc 100644 (file)
@@ -8,6 +8,7 @@ package Vect2 is
    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);
 
 
@@ -16,6 +17,7 @@ package Vect2 is
    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);
 
 
@@ -23,6 +25,7 @@ package Vect2 is
    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);
 
 
@@ -30,6 +33,7 @@ package Vect2 is
    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);
 
 
@@ -37,6 +41,7 @@ package Vect2 is
    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;
index 3baa6388e17a4f0548155f8b910fc671acf29ef1..38d78af4b807980595378e44f9a478088bb5ac2c 100644 (file)
@@ -12,6 +12,13 @@ package body Vect3 is
       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
@@ -29,6 +36,13 @@ package body Vect3 is
       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
@@ -46,6 +60,13 @@ package body Vect3 is
       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
@@ -63,6 +84,13 @@ package body Vect3 is
       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
@@ -80,6 +108,13 @@ package body Vect3 is
       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
@@ -89,5 +124,5 @@ package body Vect3 is
 
 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" } }
index d78e3c44cfff09fbac33c19426e58f3a79dae6a6..871484dfaf769ce481eba056f8ffc2a2acaef31d 100644 (file)
@@ -8,6 +8,7 @@ package Vect3 is
    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);
 
 
@@ -17,6 +18,7 @@ package Vect3 is
    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);
 
 
@@ -24,6 +26,7 @@ package Vect3 is
    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);
 
 
@@ -31,6 +34,7 @@ package Vect3 is
    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);
 
 
@@ -38,6 +42,7 @@ package Vect3 is
    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;
index 032a72893944947bb472ff43823116603571d5f3..d010049a893b4d2359bee221ffd69abb26bff5d9 100644 (file)
@@ -12,6 +12,13 @@ package body Vect4 is
       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
@@ -29,6 +36,13 @@ package body Vect4 is
       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
@@ -46,6 +60,13 @@ package body Vect4 is
       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
@@ -63,6 +84,13 @@ package body Vect4 is
       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
@@ -80,6 +108,13 @@ package body Vect4 is
       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
@@ -89,5 +124,5 @@ package body Vect4 is
 
 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" } }
index 98df7efeebc12978274456f4e11467d49a829ed1..855a33480a6c5564671a82ec7d06d3256b809800 100644 (file)
@@ -8,6 +8,7 @@ package Vect4 is
    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);
 
 
@@ -16,6 +17,7 @@ package Vect4 is
    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);
 
 
@@ -23,6 +25,7 @@ package Vect4 is
    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);
 
 
@@ -30,6 +33,7 @@ package Vect4 is
    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);
 
 
@@ -37,6 +41,7 @@ package Vect4 is
    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;
index 98af2c01d54193ab8ae7d4a59b920df8b86592d8..596cb077a5bf093ebda92ecacc0676021c7c2aba 100644 (file)
@@ -12,6 +12,13 @@ package body Vect5 is
       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
@@ -29,6 +36,13 @@ package body Vect5 is
       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
@@ -46,6 +60,13 @@ package body Vect5 is
       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
@@ -63,6 +84,13 @@ package body Vect5 is
       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
@@ -80,6 +108,13 @@ package body Vect5 is
       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
@@ -89,5 +124,5 @@ package body Vect5 is
 
 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" } }
index 09e798aecb210aa9c4b4bf098ae3dca814d7413c..54edd81c7258a5b080fa7f6b9cc7a7b7ddfc931d 100644 (file)
@@ -8,6 +8,7 @@ package Vect5 is
    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);
 
 
@@ -16,6 +17,7 @@ package Vect5 is
    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);
 
 
@@ -23,6 +25,7 @@ package Vect5 is
    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);
 
 
@@ -30,6 +33,7 @@ package Vect5 is
    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);
 
 
@@ -37,6 +41,7 @@ package Vect5 is
    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;
index 425f2a703623f9d855e70491fb43e6339dce9b9d..95f4c99c0b47668a46ff75de606743cdee2e9c11 100644 (file)
@@ -12,6 +12,13 @@ package body Vect6 is
       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
@@ -29,6 +36,13 @@ package body Vect6 is
       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
@@ -46,6 +60,13 @@ package body Vect6 is
       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
@@ -63,6 +84,13 @@ package body Vect6 is
       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
@@ -80,6 +108,13 @@ package body Vect6 is
       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
@@ -89,5 +124,5 @@ package body Vect6 is
 
 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" } }
index 013fe13652ebc2e38e788f1289e98fb89fed96e6..0046425805f70826787af7e110d632059ac25c21 100644 (file)
@@ -8,6 +8,7 @@ package Vect6 is
    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);
 
 
@@ -17,6 +18,7 @@ package Vect6 is
    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);
 
 
@@ -24,6 +26,7 @@ package Vect6 is
    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);
 
 
@@ -31,6 +34,7 @@ package Vect6 is
    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);
 
 
@@ -38,6 +42,7 @@ package Vect6 is
    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;