1! { dg-do compile { target i?86-*-* x86_64-*-* } }
2! { dg-options "-O3 -mavx -mvzeroupper -mtune=generic -dp" }
3
4  SUBROUTINE func(kts, kte, qrz, qiz, rho)
5  IMPLICIT NONE
6  INTEGER, INTENT(IN)               :: kts, kte
7  REAL,    DIMENSION(kts:kte), INTENT(INOUT) :: qrz, qiz, rho
8  INTEGER                              :: k
9  REAL, DIMENSION(kts:kte)    ::  praci, vtiold
10  REAL                          :: fluxout
11  INTEGER                       :: min_q, max_q, var
12  do k=kts,kte
13    praci(k)=1.0
14  enddo
15  min_q=kte
16  max_q=kts-1
17  DO var=1,20
18    do k=max_q,min_q,-1
19       fluxout=rho(k)*qrz(k)
20    enddo
21    qrz(min_q-1)=qrz(min_q-1)+fluxout
22  ENDDO
23  DO var=1,20
24    do k=kts,kte-1
25      vtiold(k)= (rho(k))**0.16
26    enddo
27  ENDDO
28  STOP
29  END SUBROUTINE func
30
31! { dg-final { scan-assembler "avx_vzeroupper" } }
32