Hi, This patch implements support for the following directives : - `!DIR$ NOUNROLL_AND_JAM` to disable unrolling and jamming on a DO LOOP. - `!DIR$ NOUNROLL` to disable unrolling on a DO LOOP. - `!DIR$ NOVECTOR` to disable vectorization on a DO LOOP.
27 lines
812 B
Fortran
27 lines
812 B
Fortran
! RUN: %flang_fc1 -emit-llvm -o - %s | FileCheck %s
|
|
|
|
! CHECK-LABEL: vector_always
|
|
subroutine vector_always
|
|
integer :: a(10)
|
|
!dir$ vector always
|
|
! CHECK: br i1 {{.*}}, label {{.*}}, label {{.*}}, !llvm.loop ![[ANNOTATION:.*]]
|
|
do i=1,10
|
|
a(i)=i
|
|
end do
|
|
end subroutine vector_always
|
|
|
|
! CHECK-LABEL: no_vector
|
|
subroutine no_vector
|
|
integer :: a(10)
|
|
!dir$ novector
|
|
! CHECK: br i1 {{.*}}, label {{.*}}, label {{.*}}, !llvm.loop ![[ANNOTATION2:.*]]
|
|
do i=1,10
|
|
a(i)=i
|
|
end do
|
|
end subroutine no_vector
|
|
|
|
! CHECK: ![[ANNOTATION]] = distinct !{![[ANNOTATION]], ![[VECTORIZE:.*]]}
|
|
! CHECK: ![[VECTORIZE]] = !{!"llvm.loop.vectorize.enable", i1 true}
|
|
! CHECK: ![[ANNOTATION2]] = distinct !{![[ANNOTATION2]], ![[VECTORIZE2:.*]]}
|
|
! CHECK: ![[VECTORIZE2]] = !{!"llvm.loop.vectorize.enable", i1 false}
|