; RUN: opt %loadPolly -basicaa -polly-independent < %s -S | FileCheck %s
; RUN: opt %loadPolly -basicaa -polly-independent -polly-codegen-scev < %s -S | FileCheck %s
; RUN: opt %loadPolly -basicaa -polly-independent -disable-polly-intra-scop-scalar-to-array -S < %s | FileCheck %s -check-prefix=SCALARACCESS
; RUN: opt %loadPolly -basicaa -polly-independent -disable-polly-intra-scop-scalar-to-array -polly-codegen-scev < %s -S | FileCheck %s -check-prefix=SCALARACCESS

target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
target triple = "x86_64-unknown-linux-gnu"

@A = common global [1024 x float] zeroinitializer, align 8

define i32 @empty() nounwind {
entry:
  fence seq_cst
  br label %for.cond

for.cond:
  %indvar = phi i64 [ %indvar.next, %for.inc ], [ 0, %entry ]
  %exitcond = icmp ne i64 %indvar, 1024
  br i1 %exitcond, label %for.body, label %return

for.body:
  br label %for.inc

for.inc:
  %indvar.next = add i64 %indvar, 1
  br label %for.cond

return:
  fence seq_cst
  ret i32 0
}


; CHECK: @array_access()
define i32 @array_access() nounwind {
entry:
  fence seq_cst
  br label %for.cond
; CHECK: entry:
; CHECK-NOT: alloca
; SCALARACCESS: entry:
; SCALARACCESS-NOT: alloca

for.cond:
  %indvar = phi i64 [ %indvar.next, %for.inc ], [ 0, %entry ]
  %exitcond = icmp ne i64 %indvar, 1024
  br i1 %exitcond, label %for.body, label %return

for.body:
  %arrayidx = getelementptr [1024 x float]* @A, i64 0, i64 %indvar
  %float = uitofp i64 %indvar to float
  store float %float, float* %arrayidx
  br label %for.inc

; CHECK: for.body:
; CHECK: %float = uitofp i64 %indvar to float
; CHECK: store float %float, float* %arrayidx
; SCALARACCESS: for.body:
; SCALARACCESS: %float = uitofp i64 %indvar to float
; SCALARACCESS: store float %float, float* %arrayidx

for.inc:
  %indvar.next = add i64 %indvar, 1
  br label %for.cond

return:
  fence seq_cst
  ret i32 0
}

; CHECK: @intra_scop_dep()
define i32 @intra_scop_dep() nounwind {
entry:
  fence seq_cst
  br label %for.cond

; CHECK: entry:
; CHECK: %scalar.s2a = alloca float
; CHECK: fence
; SCALARACCESS: entry:
; SCALARACCESS-NOT: alloca
; SCALARACCESS: fence

for.cond:
  %indvar = phi i64 [ %indvar.next, %for.inc ], [ 0, %entry ]
  %exitcond = icmp ne i64 %indvar, 1024
  br i1 %exitcond, label %for.body.a, label %return

for.body.a:
  %arrayidx = getelementptr [1024 x float]* @A, i64 0, i64 %indvar
  %scalar = load float* %arrayidx
  br label %for.body.b

; CHECK: for.body.a:
; CHECK: %arrayidx = getelementptr [1024 x float]* @A, i64 0, i64 %indvar
; CHECK: %scalar = load float* %arrayidx
; CHECK: store float %scalar, float* %scalar.s2a
; CHECK: br label %for.body.b

; SCALARACCESS: for.body.a:
; SCALARACCESS: %arrayidx = getelementptr [1024 x float]* @A, i64 0, i64 %indvar
; SCALARACCESS: %scalar = load float* %arrayidx
; SCALARACCESS-NOT: store
; SCALARACCESS: br label %for.body.b

for.body.b:
  %arrayidx2 = getelementptr [1024 x float]* @A, i64 0, i64 %indvar
  %float = uitofp i64 %indvar to float
  %sum = fadd float %scalar, %float
  store float %sum, float* %arrayidx2
  br label %for.inc

; CHECK: for.body.b:
; CHECK: %arrayidx2 = getelementptr [1024 x float]* @A, i64 0, i64 %indvar
; CHECK: %float = uitofp i64 %indvar to float
; CHECK: %scalar.loadarray = load float* %scalar.s2a
; CHECK: %sum = fadd float %scalar.loadarray, %float
; CHECK: store float %sum, float* %arrayidx2
; CHECK: br label %for.inc

; SCALARACCESS: for.body.b:
; SCALARACCESS: %arrayidx2 = getelementptr [1024 x float]* @A, i64 0, i64 %indvar
; SCALARACCESS: %float = uitofp i64 %indvar to float
; SCALARACCESS-NOT: load
; SCALARACCESS: %sum = fadd float %scalar, %float
; SCALARACCESS: store float %sum, float* %arrayidx2
; SCALARACCESS: br label %for.inc

for.inc:
  %indvar.next = add i64 %indvar, 1
  br label %for.cond

return:
  fence seq_cst
  ret i32 0
}

; It is not possible to have a scop which accesses a scalar element that is
; a global variable. All global variables are pointers containing possibly
; a single element. Hence they do not need to be handled anyways.
; Please note that this is still required when scalar to array rewritting is
; disabled.

; CHECK: @use_after_scop()
define i32 @use_after_scop() nounwind {
entry:
  fence seq_cst
  br label %for.head
; CHECK: entry:
; CHECK: %scalar.s2a = alloca float
; CHECK: fence

; SCALARACCESS: entry:
; SCALARACCESS: %scalar.s2a = alloca float
; SCALARACCESS: fence

for.head:
  %indvar = phi i64 [ %indvar.next, %for.inc ], [ 0, %entry ]
  br label %for.body

for.body:
  %arrayidx = getelementptr [1024 x float]* @A, i64 0, i64 %indvar
  %scalar = load float* %arrayidx
  br label %for.inc

; CHECK: for.body:
; CHECK: %scalar = load float* %arrayidx
; CHECK: store float %scalar, float* %scalar.s2a

; SCALARACCESS: for.body:
; SCALARACCESS: %scalar = load float* %arrayidx
; SCALARACCESS: store float %scalar, float* %scalar.s2a

for.inc:
  %indvar.next = add i64 %indvar, 1
  %exitcond = icmp ne i64 %indvar, 1024
  br i1 %exitcond, label %for.head, label %for.after

for.after:
  fence seq_cst
  %return_value = fptosi float %scalar to i32
  br label %return

; CHECK: for.after:
; CHECK: %scalar.loadoutside = load float* %scalar.s2a
; CHECK: fence seq_cst
; CHECK: %return_value = fptosi float %scalar.loadoutside to i32

; SCALARACCESS: for.after:
; SCALARACCESS: %scalar.loadoutside = load float* %scalar.s2a
; SCALARACCESS: fence seq_cst
; SCALARACCESS: %return_value = fptosi float %scalar.loadoutside to i32

return:
  ret i32 %return_value
}

; We currently do not transform scalar references, that have only read accesses
; in the scop. There are two reasons for this:
;
;  o We don't introduce additional memory references which may yield to compile
;    time overhead.
;  o For integer values, such a translation may block the use of scalar
;    evolution on those values.
;
; CHECK: @before_scop()
define i32 @before_scop() nounwind {
entry:
  br label %preheader

preheader:
  %scalar = fadd float 4.0, 5.0
  fence seq_cst
  br label %for.cond

for.cond:
  %indvar = phi i64 [ %indvar.next, %for.inc ], [ 0, %preheader ]
  %exitcond = icmp ne i64 %indvar, 1024
  br i1 %exitcond, label %for.body, label %return

for.body:
  %arrayidx = getelementptr [1024 x float]* @A, i64 0, i64 %indvar
  store float %scalar, float* %arrayidx
  br label %for.inc

; CHECK: for.body:
; CHECK: store float %scalar, float* %arrayidx

; SCALARACCESS: for.body:
; SCALARACCESS: store float %scalar, float* %arrayidx

for.inc:
  %indvar.next = add i64 %indvar, 1
  br label %for.cond

return:
  fence seq_cst
  ret i32 0
}

; Currently not working
; CHECK: @param_before_scop(
define i32 @param_before_scop(float %scalar) nounwind {
entry:
  fence seq_cst
  br label %for.cond
; CHECK: entry:
; CHECK: fence

for.cond:
  %indvar = phi i64 [ %indvar.next, %for.inc ], [ 0, %entry ]
  %exitcond = icmp ne i64 %indvar, 1024
  br i1 %exitcond, label %for.body, label %return

for.body:
  %arrayidx = getelementptr [1024 x float]* @A, i64 0, i64 %indvar
  store float %scalar, float* %arrayidx
  br label %for.inc

; CHECK: for.body:
; CHECK: store float %scalar, float* %arrayidx

for.inc:
  %indvar.next = add i64 %indvar, 1
  br label %for.cond

return:
  fence seq_cst
  ret i32 0
}
