1 -- { dg-do compile { target i?86-*-* x86_64-*-* } }
2 -- { dg-options "-O3 -msse2 -fno-vect-cost-model -fdump-tree-vect-details" }
6 function "+" (X
: Varray
; Y
: Long_Float) return Varray
is
15 procedure Add
(X
: Varray
; Y
: Long_Float; R
: out Varray
) is
22 procedure Add
(X
: not null access Varray
; Y
: Long_Float; R
: not null access Varray
) is
30 function "+" (X
: Sarray
; Y
: Long_Float) return Sarray
is
33 for I
in Sarray
'Range loop
39 procedure Add
(X
: Sarray
; Y
: Long_Float; R
: out Sarray
) is
41 for I
in Sarray
'Range loop
46 procedure Add
(X
: not null access Sarray
; Y
: Long_Float; R
: not null access Sarray
) is
48 for I
in Sarray
'Range loop
54 function "+" (X
: Darray1
; Y
: Long_Float) return Darray1
is
57 for I
in Darray1
'Range loop
63 procedure Add
(X
: Darray1
; Y
: Long_Float; R
: out Darray1
) is
65 for I
in Darray1
'Range loop
70 procedure Add
(X
: not null access Darray1
; Y
: Long_Float; R
: not null access Darray1
) is
72 for I
in Darray1
'Range loop
78 function "+" (X
: Darray2
; Y
: Long_Float) return Darray2
is
81 for I
in Darray2
'Range loop
87 procedure Add
(X
: Darray2
; Y
: Long_Float; R
: out Darray2
) is
89 for I
in Darray2
'Range loop
94 procedure Add
(X
: not null access Darray2
; Y
: Long_Float; R
: not null access Darray2
) is
96 for I
in Darray2
'Range loop
102 function "+" (X
: Darray3
; Y
: Long_Float) return Darray3
is
105 for I
in Darray3
'Range loop
111 procedure Add
(X
: Darray3
; Y
: Long_Float; R
: out Darray3
) is
113 for I
in Darray3
'Range loop
118 procedure Add
(X
: not null access Darray3
; Y
: Long_Float; R
: not null access Darray3
) is
120 for I
in Darray3
'Range loop
127 -- { dg-final { scan-tree-dump-times "vectorized 1 loops" 15 "vect" } }