[clang] Move warning about memset/memcpy to NonTriviallyCopyable type… (#117387)
[llvm-project.git] / polly / test / ScopInfo / multidim_fortran_2d.ll
blobe5b005f17dcc76ece6117a761fd71f33f2cb27d7
1 ; RUN: opt %loadNPMPolly '-passes=print<polly-function-scops>' \
2 ; RUN: -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s
4 ;   subroutine init_array(ni, nj, pi, pj, a)
5 ;   implicit none
7 ;   double precision, dimension(nj, ni) :: a
8 ;   integer*8 :: ni, nj
9 ;   integer*8 :: pi, pj
10 ;   integer*8 :: i, j
12 ;   do i = 1, ni
13 ;     do j = 1, nj
14 ;       a(j, i) = i + j
15 ;     end do
16 ;   end do
17 ;   end subroutine
19 ;  Verify we correctly delinearize accesses
21 ; CHECK: MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 0]
22 ; CHECK:   [tmp9, tmp14] -> { Stmt_bb17[i0, i1] -> MemRef_arg4[i0, i1] };
24 target datalayout = "e-p:64:64:64-S128-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f16:16:16-f32:32:32-f64:64:64-f128:128:128-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
26 define void @ham(ptr noalias %arg, ptr noalias %arg1, ptr noalias %arg2, ptr noalias %arg3, ptr noalias %arg4) unnamed_addr {
27 bb:
28   br label %bb5
30 bb5:                                              ; preds = %bb
31   %tmp = load i64, ptr %arg1, align 8
32   %tmp6 = icmp slt i64 %tmp, 0
33   %tmp7 = select i1 %tmp6, i64 0, i64 %tmp
34   %tmp8 = xor i64 %tmp7, -1
35   %tmp9 = load i64, ptr %arg, align 8
36   %tmp10 = icmp sgt i64 %tmp9, 0
37   br i1 %tmp10, label %bb11, label %bb32
39 bb11:                                             ; preds = %bb5
40   br label %bb12
42 bb12:                                             ; preds = %bb28, %bb11
43   %tmp13 = phi i64 [ %tmp30, %bb28 ], [ 1, %bb11 ]
44   %tmp14 = load i64, ptr %arg1, align 8
45   %tmp15 = icmp sgt i64 %tmp14, 0
46   br i1 %tmp15, label %bb16, label %bb28
48 bb16:                                             ; preds = %bb12
49   br label %bb17
51 bb17:                                             ; preds = %bb17, %bb16
52   %tmp18 = phi i64 [ %tmp26, %bb17 ], [ 1, %bb16 ]
53   %tmp19 = mul i64 %tmp13, %tmp7
54   %tmp20 = add i64 %tmp19, %tmp8
55   %tmp21 = add i64 %tmp20, %tmp18
56   %tmp22 = add i64 %tmp18, %tmp13
57   %tmp23 = sitofp i64 %tmp22 to double
58   %tmp24 = getelementptr [0 x double], ptr %arg4, i64 0, i64 %tmp21
59   store double %tmp23, ptr %tmp24, align 8
60   %tmp25 = icmp eq i64 %tmp18, %tmp14
61   %tmp26 = add i64 %tmp18, 1
62   br i1 %tmp25, label %bb27, label %bb17
64 bb27:                                             ; preds = %bb17
65   br label %bb28
67 bb28:                                             ; preds = %bb27, %bb12
68   %tmp29 = icmp eq i64 %tmp13, %tmp9
69   %tmp30 = add i64 %tmp13, 1
70   br i1 %tmp29, label %bb31, label %bb12
72 bb31:                                             ; preds = %bb28
73   br label %bb32
75 bb32:                                             ; preds = %bb31, %bb5
76   ret void