brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.9 KiB · b122f58 Raw
117 lines · plain
1! RUN: %flang_fc1 -emit-llvm -o - %s | FileCheck %s2 3! CHECK-LABEL: ivdep_test14subroutine ivdep_test1 5  integer :: a(10)6  !dir$ ivdep 7  ! CHECK:   br i1 {{.*}}, label {{.*}}, label {{.*}}8  do i=1,109     a(i)=i10     !CHECK: store i32 {{.*}}, ptr {{.*}}, align 4, !llvm.access.group [[DISTRINCT:.*]]11     !CHECK: %[[VAL_8:.*]] = load i32, ptr {{.*}}, align 4, !llvm.access.group [[DISTRINCT]]12     !CHECK: %[[VAL_9:.*]] = sext i32 %[[VAL_8]] to i6413     !CHECK: %[[VAL_10:.*]] = sub nsw i64 %[[VAL_9]], 114     !CHECK: %[[VAL_11:.*]] = mul nsw i64 %[[VAL_10]], 115     !CHECK: %[[VAL_12:.*]] = mul nsw i64 %[[VAL_11]], 116     !CHECK: %[[VAL_13:.*]] = add nsw i64 %[[VAL_12]], 017     !CHECK: %[[VAL_14:.*]] = getelementptr i32, ptr {{.*}}, i64 %[[VAL_13]]18     !CHECK: store i32 %[[VAL_8]], ptr %[[VAL_14]], align 4, !llvm.access.group [[DISTRINCT]]19     !CHECK: %[[VAL_15:.*]] = load i32, ptr {{.*}}, align 4, !llvm.access.group [[DISTRINCT]]20     !CHECK: %[[VAL_16:.*]] = add nsw i32 %[[VAL_15]], 121     !CHECK: %[[VAL_17:.*]] = sub i64 {{.*}}, 122     !CHECK: br label {{.*}}, !llvm.loop ![[ANNOTATION:.*]]23  end do24end subroutine ivdep_test125 26 27! CHECK-LABEL: ivdep_test228subroutine ivdep_test229  integer :: a(10), b(10), c(10)30  !dir$ ivdep 31  !dir$ unknown32  ! CHECK:   br i1 {{.*}}, label {{.*}}, label {{.*}}33  do i=1,1034     a(i)=b(i)+c(i)35     !CHECK: store i32 {{.*}}, ptr {{.*}}, align 4, !llvm.access.group [[DISTRINCT1:.*]] 36     !CHECK: %[[VAL_10:.*]] = load i32, ptr {{.*}}, align 4, !llvm.access.group [[DISTRINCT1]]37     !CHECK: %[[VAL_11:.*]] = sext i32 %[[VAL_10]] to i6438     !CHECK: %[[VAL_12:.*]] = sub nsw i64 %[[VAL_11]], 139     !CHECK: %[[VAL_13:.*]] = mul nsw i64 %[[VAL_12]], 140     !CHECK: %[[VAL_14:.*]] = mul nsw i64 %[[VAL_13]], 141     !CHECK: %[[VAL_15:.*]] = add nsw i64 %[[VAL_14]], 042     !CHECK: %[[VAL_16:.*]] = getelementptr i32, ptr {{.*}}, i64 %[[VAL_15]]43     !CHECK: %[[VAL_17:.*]] = load i32, ptr {{.*}}, align 4, !llvm.access.group [[DISTRINCT1]] 44     !CHECK: %[[VAL_18:.*]] = sub nsw i64 %[[VAL_11]], 145     !CHECK: %[[VAL_19:.*]] = mul nsw i64 %[[VAL_18]], 146     !CHECK: %[[VAL_20:.*]] = mul nsw i64 %[[VAL_19]], 147     !CHECK: %[[VAL_21:.*]] = add nsw i64 %[[VAL_20]], 048     !CHECK: %[[VAL_22:.*]] = getelementptr i32, ptr {{.*}}, i64 %[[VAL_21]]49     !CHECK: %[[VAL_23:.*]] = load i32, ptr {{.*}}, align 4, !llvm.access.group [[DISTRINCT1]] 50     !CHECK: %[[VAL_24:.*]] = add i32 %[[VAL_17]], %[[VAL_23]]51     !CHECK: %[[VAL_25:.*]] = sub nsw i64 %[[VAL_11]], 152     !CHECK: %[[VAL_26:.*]] = mul nsw i64 %[[VAL_25]], 153     !CHECK: %[[VAL_27:.*]] = mul nsw i64 %[[VAL_26]], 154     !CHECK: %[[VAL_28:.*]] = add nsw i64 %[[VAL_27]], 055     !CHECK: %[[VAL_29:.*]] = getelementptr i32, ptr {{.*}}, i64 %[[VAL_28]]56     !CHECK: store i32 %[[VAL_24]], ptr %[[VAL_29]], align 4, !llvm.access.group [[DISTRINCT1]]57     !CHECK: %[[VAL_30:.*]] = load i32, ptr {{.*}}, align 4, !llvm.access.group [[DISTRINCT1]] 58     !CHECK: %[[VAL_31:.*]] = add nsw i32 %[[VAL_30]], 159     !CHECK: %[[VAL_32:.*]] = sub i64 {{.*}}, 160     !CHECK: br label {{.*}}, !llvm.loop ![[ANNOTATION1:.*]]61  end do62end subroutine ivdep_test263 64 65! CHECK-LABEL: ivdep_test366subroutine ivdep_test367  integer :: a(10), b(10), c(10)68  !dir$ ivdep 69  ! CHECK:   br i1 {{.*}}, label {{.*}}, label {{.*}}70  do i=1,1071     a(i)=b(i)+c(i)72     call foo() 73     !CHECK: store i32 {{.*}}, ptr {{.*}}, align 4, !llvm.access.group [[DISTRINCT2:.*]] 74     !CHECK: %[[VAL_10:.*]] = load i32, ptr {{.*}}, align 4, !llvm.access.group [[DISTRINCT2]]75     !CHECK: %[[VAL_11:.*]] = sext i32 %[[VAL_10]] to i6476     !CHECK: %[[VAL_12:.*]] = sub nsw i64 %[[VAL_11]], 177     !CHECK: %[[VAL_13:.*]] = mul nsw i64 %[[VAL_12]], 178     !CHECK: %[[VAL_14:.*]] = mul nsw i64 %[[VAL_13]], 179     !CHECK: %[[VAL_15:.*]] = add nsw i64 %[[VAL_14]], 080     !CHECK: %[[VAL_16:.*]] = getelementptr i32, ptr {{.*}}, i64 %[[VAL_15]]81     !CHECK: %[[VAL_17:.*]] = load i32, ptr {{.*}}, align 4, !llvm.access.group [[DISTRINCT2]] 82     !CHECK: %[[VAL_18:.*]] = sub nsw i64 %[[VAL_11]], 183     !CHECK: %[[VAL_19:.*]] = mul nsw i64 %[[VAL_18]], 184     !CHECK: %[[VAL_20:.*]] = mul nsw i64 %[[VAL_19]], 185     !CHECK: %[[VAL_21:.*]] = add nsw i64 %[[VAL_20]], 086     !CHECK: %[[VAL_22:.*]] = getelementptr i32, ptr {{.*}}, i64 %[[VAL_21]]87     !CHECK: %[[VAL_23:.*]] = load i32, ptr {{.*}}, align 4, !llvm.access.group [[DISTRINCT2]] 88     !CHECK: %[[VAL_24:.*]] = add i32 %[[VAL_17]], %[[VAL_23]]89     !CHECK: %[[VAL_25:.*]] = sub nsw i64 %[[VAL_11]], 190     !CHECK: %[[VAL_26:.*]] = mul nsw i64 %[[VAL_25]], 191     !CHECK: %[[VAL_27:.*]] = mul nsw i64 %[[VAL_26]], 192     !CHECK: %[[VAL_28:.*]] = add nsw i64 %[[VAL_27]], 093     !CHECK: %[[VAL_29:.*]] = getelementptr i32, ptr {{.*}}, i64 %[[VAL_28]]94     !CHECK: store i32 %[[VAL_24]], ptr %[[VAL_29]], align 4, !llvm.access.group [[DISTRINCT2]]95     !CHECK: call void @_QFivdep_test3Pfoo(), !llvm.access.group [[DISTRINCT2]]96     !CHECK: %[[VAL_30:.*]] = load i32, ptr {{.*}}, align 4, !llvm.access.group [[DISTRINCT2]] 97     !CHECK: %[[VAL_31:.*]] = add nsw i32 %[[VAL_30]], 198     !CHECK: %[[VAL_32:.*]] = sub i64 {{.*}}, 199     !CHECK: br label {{.*}}, !llvm.loop ![[ANNOTATION2:.*]]100  end do101  contains102    subroutine foo()103    end subroutine104end subroutine ivdep_test3105 106! CHECK: [[DISTRINCT]] = distinct !{}107! CHECK: ![[ANNOTATION]] = distinct !{![[ANNOTATION]], ![[VECTORIZE:.*]], ![[PARALLEL_ACCESSES:.*]]}108! CHECK: ![[VECTORIZE]] = !{!"llvm.loop.vectorize.enable", i1 true}109! CHECK: ![[PARALLEL_ACCESSES]] = !{!"llvm.loop.parallel_accesses", [[DISTRINCT]]}110! CHECK: [[DISTRINCT1]] = distinct !{}111! CHECK: ![[ANNOTATION1]] = distinct !{![[ANNOTATION1]], ![[VECTORIZE:.*]], ![[PARALLEL_ACCESSES1:.*]]}112! CHECK: ![[PARALLEL_ACCESSES1]] = !{!"llvm.loop.parallel_accesses", [[DISTRINCT1]]}113! CHECK: [[DISTRINCT2]] = distinct !{}114! CHECK: ![[ANNOTATION2]] = distinct !{![[ANNOTATION2]], ![[VECTORIZE:.*]], ![[PARALLEL_ACCESSES2:.*]]}115! CHECK: ![[PARALLEL_ACCESSES2]] = !{!"llvm.loop.parallel_accesses", [[DISTRINCT2]]}116 117