1 ! { dg-do run { target vect_simd_clones } }
2 ! { dg-options "-fno-inline" }
3 ! { dg-additional-options "-msse2" { target sse2_runtime } }
4 ! { dg-additional-options "-mavx" { target avx_runtime } }
6 module declare_simd_1_mod
8 real function foo (a
, b
, c
)
9 !$omp declare simd (foo) simdlen (4) uniform (a) linear (b : 5) &
11 double precision, value
:: a
13 !$omp declare simd (foo)
17 end module declare_simd_1_mod
18 use declare_simd_1_mod
20 function bar (a
, b
, c
)
21 !$omp declare simd (bar)
25 !$omp declare simd (bar) simdlen (4) linear (b : 2)
26 !$omp declare simd (bar) simdlen (16) inbranch
27 double precision, value
:: a
31 double precision :: a(128)
32 real :: b(128), d(128)
33 data d
/171., 414., 745., 1164., 1671., 2266., 2949., 3720., 4579., &
34 & 5526., 6561., 7684., 8895., 10194., 11581., 13056., 14619., &
35 & 16270., 18009., 19836., 21751., 23754., 25845., 28024., &
36 & 30291., 32646., 35089., 37620., 40239., 42946., 45741., &
37 & 48624., 51595., 54654., 57801., 61036., 64359., 67770., &
38 & 71269., 74856., 78531., 82294., 86145., 90084., 94111., &
39 & 98226., 102429., 106720., 111099., 115566., 120121., 124764., &
40 & 129495., 134314., 139221., 144216., 149299., 154470., 159729., &
41 & 165076., 170511., 176034., 181645., 187344., 193131., 199006., &
42 & 204969., 211020., 217159., 223386., 229701., 236104., 242595., &
43 & 249174., 255841., 262596., 269439., 276370., 283389., 290496., &
44 & 297691., 304974., 312345., 319804., 327351., 334986., 342709., &
45 & 350520., 358419., 366406., 374481., 382644., 390895., 399234., &
46 & 407661., 416176., 424779., 433470., 442249., 451116., 460071., &
47 & 469114., 478245., 487464., 496771., 506166., 515649., 525220., &
48 & 534879., 544626., 554461., 564384., 574395., 584494., 594681., &
49 & 604956., 615319., 625770., 636309., 646936., 657651., 668454., &
50 & 679345., 690324., 701391., 712546., 723789., 735120./
58 b(i
) = foo (a(i
), 3, b(i
))
62 b(i
) = bar (a(i
), 2 * i
, b(i
))
64 if (any (b
.ne
.d
)) stop 1
71 b(i
) = baz (7.0_8
, 2, b(i
))
74 if (b(i
).ne
.(7.0 + 4.0 * i
)) stop 2
77 function baz (x
, y
, z
)
78 !$omp declare simd (baz) simdlen (8) uniform (x, y)
79 !$omp declare simd (baz)
83 double precision, value
:: x
87 function bar (a
, b
, c
)
91 double precision, value
:: a
92 !$omp declare simd (bar)
93 !$omp declare simd (bar) simdlen (4) linear (b : 2)