Skip to content

Instantly share code, notes, and snippets.

@vedranmiletic
Created March 27, 2016 12:55
Show Gist options
  • Save vedranmiletic/3a836854abdf13c60db4 to your computer and use it in GitHub Desktop.
Save vedranmiletic/3a836854abdf13c60db4 to your computer and use it in GitHub Desktop.
GROMACS OpenCL kernel for AMD in LLVM IR
This file has been truncated, but you can view the full file.
; ModuleID = 'input.cl'
target datalayout = "e-p:32:32-p1:64:64-p2:64:64-p3:32:32-p4:64:64-p5:32:32-p24:64:64-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-v2048:2048-n32:64"
target triple = "amdgcn--"
%struct.nbnxn_sci_t = type { i32, i32, i32, i32 }
%struct.nbnxn_cj4_t = type { [4 x i32], [2 x %struct.nbnxn_im_ei_t] }
%struct.nbnxn_im_ei_t = type { i32, i32 }
%struct.nbnxn_excl_t = type { [32 x i32] }
; Function Attrs: nounwind
define void @memset_f3(<3 x float> addrspace(1)* nocapture %buf, float %value, i32 %Nbuf) #0 {
entry:
%x.i.i = tail call i32 @llvm.amdgcn.workgroup.id.x() #5
%x.i12.i = tail call i32 @llvm.r600.read.local.size.x() #2
%mul26.i = mul i32 %x.i12.i, %x.i.i
%x.i4.i = tail call i32 @llvm.amdgcn.workitem.id.x() #5, !range !35
%add.i = add i32 %x.i4.i, %mul26.i
%cmp = icmp ult i32 %add.i, %Nbuf
br i1 %cmp, label %if.then, label %if.end
if.then: ; preds = %entry
%splat.splatinsert = insertelement <3 x float> undef, float %value, i32 0
%0 = sext i32 %add.i to i64
%arrayidx = getelementptr inbounds <3 x float>, <3 x float> addrspace(1)* %buf, i64 %0
%extractVec = shufflevector <3 x float> %splat.splatinsert, <3 x float> undef, <4 x i32> <i32 0, i32 0, i32 0, i32 undef>
%storetmp = bitcast <3 x float> addrspace(1)* %arrayidx to <4 x float> addrspace(1)*
store <4 x float> %extractVec, <4 x float> addrspace(1)* %storetmp, align 16, !tbaa !36
br label %if.end
if.end: ; preds = %if.then, %entry
ret void
}
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start(i64, i8* nocapture) #1
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.end(i64, i8* nocapture) #1
; Function Attrs: nounwind
define void @memset_f2(<2 x float> addrspace(1)* nocapture %buf, float %value, i32 %Nbuf) #0 {
entry:
%x.i.i = tail call i32 @llvm.amdgcn.workgroup.id.x() #5
%x.i12.i = tail call i32 @llvm.r600.read.local.size.x() #2
%mul26.i = mul i32 %x.i12.i, %x.i.i
%x.i4.i = tail call i32 @llvm.amdgcn.workitem.id.x() #5, !range !35
%add.i = add i32 %x.i4.i, %mul26.i
%cmp = icmp ult i32 %add.i, %Nbuf
br i1 %cmp, label %if.then, label %if.end
if.then: ; preds = %entry
%splat.splatinsert = insertelement <2 x float> undef, float %value, i32 0
%splat.splat = shufflevector <2 x float> %splat.splatinsert, <2 x float> undef, <2 x i32> zeroinitializer
%0 = sext i32 %add.i to i64
%arrayidx = getelementptr inbounds <2 x float>, <2 x float> addrspace(1)* %buf, i64 %0
store <2 x float> %splat.splat, <2 x float> addrspace(1)* %arrayidx, align 8, !tbaa !36
br label %if.end
if.end: ; preds = %if.then, %entry
ret void
}
; Function Attrs: nounwind
define void @memset_f(float addrspace(1)* nocapture %buf, float %value, i32 %Nbuf) #0 {
entry:
%x.i.i = tail call i32 @llvm.amdgcn.workgroup.id.x() #5
%x.i12.i = tail call i32 @llvm.r600.read.local.size.x() #2
%mul26.i = mul i32 %x.i12.i, %x.i.i
%x.i4.i = tail call i32 @llvm.amdgcn.workitem.id.x() #5, !range !35
%add.i = add i32 %x.i4.i, %mul26.i
%cmp = icmp ult i32 %add.i, %Nbuf
br i1 %cmp, label %if.then, label %if.end
if.then: ; preds = %entry
%0 = sext i32 %add.i to i64
%arrayidx = getelementptr inbounds float, float addrspace(1)* %buf, i64 %0
store float %value, float addrspace(1)* %arrayidx, align 4, !tbaa !39
br label %if.end
if.end: ; preds = %if.then, %entry
ret void
}
; Function Attrs: nounwind
define void @zero_e_fshift(float addrspace(1)* nocapture %fshift, float addrspace(1)* nocapture %e_lj, float addrspace(1)* nocapture %e_el, i32 %Nbuf) #0 {
entry:
%x.i.i = tail call i32 @llvm.amdgcn.workgroup.id.x() #5
%x.i12.i = tail call i32 @llvm.r600.read.local.size.x() #2
%mul26.i = mul i32 %x.i12.i, %x.i.i
%x.i4.i = tail call i32 @llvm.amdgcn.workitem.id.x() #5, !range !35
%add.i = add i32 %x.i4.i, %mul26.i
%cmp = icmp ult i32 %add.i, %Nbuf
br i1 %cmp, label %if.then, label %if.end
if.then: ; preds = %entry
%0 = sext i32 %add.i to i64
%arrayidx = getelementptr inbounds float, float addrspace(1)* %fshift, i64 %0
store float 0.000000e+00, float addrspace(1)* %arrayidx, align 4, !tbaa !39
br label %if.end
if.end: ; preds = %if.then, %entry
%cmp1 = icmp eq i32 %add.i, 0
br i1 %cmp1, label %if.then2, label %if.end3
if.then2: ; preds = %if.end
store float 0.000000e+00, float addrspace(1)* %e_lj, align 4, !tbaa !39
store float 0.000000e+00, float addrspace(1)* %e_el, align 4, !tbaa !39
br label %if.end3
if.end3: ; preds = %if.then2, %if.end
ret void
}
; Function Attrs: nounwind readnone
declare float @llvm.fmuladd.f32(float, float, float) #2
; Function Attrs: norecurse nounwind
define internal fastcc void @reduce_force_j_generic(float addrspace(3)* nocapture readonly %f_buf, float addrspace(1)* nocapture %fout, i32 %tidxi, i32 %tidxj, i32 %aidx) unnamed_addr #3 {
entry:
%cmp = icmp slt i32 %tidxi, 3
br i1 %cmp, label %if.then, label %if.end
if.then: ; preds = %entry
%mul = shl i32 %tidxj, 3
%cmp217 = icmp eq i32 %mul, 2147483640
br i1 %cmp217, label %for.cond.cleanup, label %for.body.lr.ph
for.body.lr.ph: ; preds = %if.then
%mul3 = shl i32 %tidxi, 6
%add4 = add nsw i32 %mul, %mul3
%arrayidx = getelementptr inbounds float, float addrspace(3)* %f_buf, i32 %add4
%0 = load float, float addrspace(3)* %arrayidx, align 4, !tbaa !39
%add5 = fadd float %0, 0.000000e+00
%inc = or i32 %mul, 1
%add4.1 = add nsw i32 %inc, %mul3
%arrayidx.1 = getelementptr inbounds float, float addrspace(3)* %f_buf, i32 %add4.1
%1 = load float, float addrspace(3)* %arrayidx.1, align 4, !tbaa !39
%add5.1 = fadd float %add5, %1
%inc.1 = or i32 %mul3, 1
%add4.2 = add i32 %inc.1, %inc
%arrayidx.2 = getelementptr inbounds float, float addrspace(3)* %f_buf, i32 %add4.2
%2 = load float, float addrspace(3)* %arrayidx.2, align 4, !tbaa !39
%add5.2 = fadd float %add5.1, %2
%inc.2 = or i32 %mul, 3
%add4.3 = add nsw i32 %inc.2, %mul3
%arrayidx.3 = getelementptr inbounds float, float addrspace(3)* %f_buf, i32 %add4.3
%3 = load float, float addrspace(3)* %arrayidx.3, align 4, !tbaa !39
%add5.3 = fadd float %add5.2, %3
%add4.4 = add i32 %inc.1, %inc.2
%arrayidx.4 = getelementptr inbounds float, float addrspace(3)* %f_buf, i32 %add4.4
%4 = load float, float addrspace(3)* %arrayidx.4, align 4, !tbaa !39
%add5.4 = fadd float %add5.3, %4
%inc.4 = or i32 %mul3, 2
%add4.5 = add i32 %inc.4, %inc.2
%arrayidx.5 = getelementptr inbounds float, float addrspace(3)* %f_buf, i32 %add4.5
%5 = load float, float addrspace(3)* %arrayidx.5, align 4, !tbaa !39
%add5.5 = fadd float %add5.4, %5
%inc.5 = or i32 %mul3, 3
%add4.6 = add i32 %inc.5, %inc.2
%arrayidx.6 = getelementptr inbounds float, float addrspace(3)* %f_buf, i32 %add4.6
%6 = load float, float addrspace(3)* %arrayidx.6, align 4, !tbaa !39
%add5.6 = fadd float %add5.5, %6
%inc.6 = or i32 %mul, 7
%add4.7 = add nsw i32 %inc.6, %mul3
%arrayidx.7 = getelementptr inbounds float, float addrspace(3)* %f_buf, i32 %add4.7
%7 = load float, float addrspace(3)* %arrayidx.7, align 4, !tbaa !39
%add5.7 = fadd float %add5.6, %7
br label %for.cond.cleanup
for.cond.cleanup: ; preds = %if.then, %for.body.lr.ph
%f.0.lcssa = phi float [ 0.000000e+00, %if.then ], [ %add5.7, %for.body.lr.ph ]
%mul6 = mul nsw i32 %aidx, 3
%add7 = add nsw i32 %mul6, %tidxi
%8 = sext i32 %add7 to i64
%arrayidx8 = getelementptr inbounds float, float addrspace(1)* %fout, i64 %8
%9 = load volatile float, float addrspace(1)* %arrayidx8, align 4, !tbaa !39
%10 = bitcast float %9 to i32
%11 = bitcast float addrspace(1)* %arrayidx8 to i32 addrspace(1)*
br label %do.body.i
do.body.i: ; preds = %do.body.i, %for.cond.cleanup
%current.sroa.0.0.i = phi i32 [ %10, %for.cond.cleanup ], [ %15, %do.body.i ]
%12 = bitcast i32 %current.sroa.0.0.i to float
%add.i = fadd float %f.0.lcssa, %12
%13 = bitcast float %add.i to i32
%14 = cmpxchg volatile i32 addrspace(1)* %11, i32 %current.sroa.0.0.i, i32 %13 seq_cst seq_cst
%15 = extractvalue { i32, i1 } %14, 0
%cmp.i = extractvalue { i32, i1 } %14, 1
br i1 %cmp.i, label %if.end.loopexit, label %do.body.i
if.end.loopexit: ; preds = %do.body.i
br label %if.end
if.end: ; preds = %if.end.loopexit, %entry
ret void
}
; Function Attrs: norecurse nounwind
define internal fastcc void @reduce_force_i_pow2(float addrspace(3)* nocapture %f_buf, float addrspace(1)* nocapture %fout, float* nocapture %fshift_buf, i1 zeroext %bCalcFshift, i32 %tidxi, i32 %tidxj, i32 %aidx) unnamed_addr #3 {
entry:
%mul3 = shl i32 %tidxj, 3
%add4 = add nsw i32 %mul3, %tidxi
%arrayidx5 = getelementptr inbounds float, float addrspace(3)* %f_buf, i32 %add4
%add9 = add i32 %tidxi, 64
%add14 = add i32 %mul3, %add9
%arrayidx15 = getelementptr inbounds float, float addrspace(3)* %f_buf, i32 %add14
%add19 = add i32 %tidxi, 128
%add24 = add i32 %mul3, %add19
%arrayidx25 = getelementptr inbounds float, float addrspace(3)* %f_buf, i32 %add24
%cmp1 = icmp slt i32 %tidxj, 4
br i1 %cmp1, label %if.end, label %if.end44
if.end: ; preds = %entry
%mul = add i32 %mul3, 32
%add2 = add nsw i32 %mul, %tidxi
%arrayidx = getelementptr inbounds float, float addrspace(3)* %f_buf, i32 %add2
%0 = load volatile float, float addrspace(3)* %arrayidx, align 4, !tbaa !39
%1 = load volatile float, float addrspace(3)* %arrayidx5, align 4, !tbaa !39
%add6 = fadd float %0, %1
store volatile float %add6, float addrspace(3)* %arrayidx5, align 4, !tbaa !39
%add10 = add i32 %mul, %add9
%arrayidx11 = getelementptr inbounds float, float addrspace(3)* %f_buf, i32 %add10
%2 = load volatile float, float addrspace(3)* %arrayidx11, align 4, !tbaa !39
%3 = load volatile float, float addrspace(3)* %arrayidx15, align 4, !tbaa !39
%add16 = fadd float %2, %3
store volatile float %add16, float addrspace(3)* %arrayidx15, align 4, !tbaa !39
%add20 = add i32 %mul, %add19
%arrayidx21 = getelementptr inbounds float, float addrspace(3)* %f_buf, i32 %add20
%4 = load volatile float, float addrspace(3)* %arrayidx21, align 4, !tbaa !39
%5 = load volatile float, float addrspace(3)* %arrayidx25, align 4, !tbaa !39
%add26 = fadd float %4, %5
store volatile float %add26, float addrspace(3)* %arrayidx25, align 4, !tbaa !39
%cmp1.1 = icmp slt i32 %tidxj, 2
br i1 %cmp1.1, label %if.end.1.thread, label %if.end.1
if.then28: ; preds = %if.end.1.thread, %if.end.1
%mul29 = shl nsw i32 %tidxj, 6
%add30 = add i32 %mul29, %tidxi
%arrayidx31 = getelementptr inbounds float, float addrspace(3)* %f_buf, i32 %add30
%6 = load volatile float, float addrspace(3)* %arrayidx31, align 4, !tbaa !39
%add35 = add i32 %add30, 8
%arrayidx36 = getelementptr inbounds float, float addrspace(3)* %f_buf, i32 %add35
%7 = load volatile float, float addrspace(3)* %arrayidx36, align 4, !tbaa !39
%add37 = fadd float %6, %7
%mul38 = mul nsw i32 %aidx, 3
%add39 = add nsw i32 %mul38, %tidxj
%8 = sext i32 %add39 to i64
%arrayidx40 = getelementptr inbounds float, float addrspace(1)* %fout, i64 %8
%9 = load volatile float, float addrspace(1)* %arrayidx40, align 4, !tbaa !39
%10 = bitcast float %9 to i32
%11 = bitcast float addrspace(1)* %arrayidx40 to i32 addrspace(1)*
br label %do.body.i
do.body.i: ; preds = %do.body.i, %if.then28
%current.sroa.0.0.i = phi i32 [ %10, %if.then28 ], [ %15, %do.body.i ]
%12 = bitcast i32 %current.sroa.0.0.i to float
%add.i = fadd float %add37, %12
%13 = bitcast float %add.i to i32
%14 = cmpxchg volatile i32 addrspace(1)* %11, i32 %current.sroa.0.0.i, i32 %13 seq_cst seq_cst
%15 = extractvalue { i32, i1 } %14, 0
%cmp.i = extractvalue { i32, i1 } %14, 1
br i1 %cmp.i, label %atomicAdd_g_f.exit, label %do.body.i
atomicAdd_g_f.exit: ; preds = %do.body.i
br i1 %bCalcFshift, label %if.then41, label %if.end44
if.then41: ; preds = %atomicAdd_g_f.exit
%16 = load float, float* %fshift_buf, align 4, !tbaa !39
%add42 = fadd float %add37, %16
store float %add42, float* %fshift_buf, align 4, !tbaa !39
br label %if.end44
if.end44: ; preds = %entry, %atomicAdd_g_f.exit, %if.then41, %if.end.1
ret void
if.end.1.thread: ; preds = %if.end
%mul.1 = add i32 %mul3, 16
%add2.1 = add nsw i32 %mul.1, %tidxi
%arrayidx.1 = getelementptr inbounds float, float addrspace(3)* %f_buf, i32 %add2.1
%17 = load volatile float, float addrspace(3)* %arrayidx.1, align 4, !tbaa !39
%18 = load volatile float, float addrspace(3)* %arrayidx5, align 4, !tbaa !39
%add6.1 = fadd float %17, %18
store volatile float %add6.1, float addrspace(3)* %arrayidx5, align 4, !tbaa !39
%add10.1 = add i32 %mul.1, %add9
%arrayidx11.1 = getelementptr inbounds float, float addrspace(3)* %f_buf, i32 %add10.1
%19 = load volatile float, float addrspace(3)* %arrayidx11.1, align 4, !tbaa !39
%20 = load volatile float, float addrspace(3)* %arrayidx15, align 4, !tbaa !39
%add16.1 = fadd float %19, %20
store volatile float %add16.1, float addrspace(3)* %arrayidx15, align 4, !tbaa !39
%add20.1 = add i32 %mul.1, %add19
%arrayidx21.1 = getelementptr inbounds float, float addrspace(3)* %f_buf, i32 %add20.1
%21 = load volatile float, float addrspace(3)* %arrayidx21.1, align 4, !tbaa !39
%22 = load volatile float, float addrspace(3)* %arrayidx25, align 4, !tbaa !39
%add26.1 = fadd float %21, %22
store volatile float %add26.1, float addrspace(3)* %arrayidx25, align 4, !tbaa !39
br label %if.then28
if.end.1: ; preds = %if.end
%cmp27 = icmp slt i32 %tidxj, 3
br i1 %cmp27, label %if.then28, label %if.end44
}
; Function Attrs: norecurse nounwind
define internal fastcc void @reduce_energy_pow2(float addrspace(3)* nocapture %buf, float addrspace(1)* nocapture %e_lj, float addrspace(1)* nocapture %e_el, i32 %tidx) unnamed_addr #3 {
entry:
%arrayidx2 = getelementptr inbounds float, float addrspace(3)* %buf, i32 %tidx
%add4 = add i32 %tidx, 64
%arrayidx8 = getelementptr inbounds float, float addrspace(3)* %buf, i32 %add4
%cmp1 = icmp ult i32 %tidx, 16
br i1 %cmp1, label %if.end, label %if.end22
if.end: ; preds = %entry
%add = add i32 %tidx, 16
%arrayidx = getelementptr inbounds float, float addrspace(3)* %buf, i32 %add
%0 = load volatile float, float addrspace(3)* %arrayidx, align 4, !tbaa !39
%1 = load volatile float, float addrspace(3)* %arrayidx2, align 4, !tbaa !39
%add3 = fadd float %0, %1
store volatile float %add3, float addrspace(3)* %arrayidx2, align 4, !tbaa !39
%add5 = add i32 %tidx, 80
%arrayidx6 = getelementptr inbounds float, float addrspace(3)* %buf, i32 %add5
%2 = load volatile float, float addrspace(3)* %arrayidx6, align 4, !tbaa !39
%3 = load volatile float, float addrspace(3)* %arrayidx8, align 4, !tbaa !39
%add9 = fadd float %2, %3
store volatile float %add9, float addrspace(3)* %arrayidx8, align 4, !tbaa !39
%cmp1.1 = icmp ult i32 %tidx, 8
br i1 %cmp1.1, label %if.end.1, label %if.end22
if.then11: ; preds = %if.end.3
%4 = load volatile float, float addrspace(3)* %buf, align 4, !tbaa !39
%arrayidx14 = getelementptr inbounds float, float addrspace(3)* %buf, i32 1
%5 = load volatile float, float addrspace(3)* %arrayidx14, align 4, !tbaa !39
%add15 = fadd float %4, %5
%arrayidx17 = getelementptr inbounds float, float addrspace(3)* %buf, i32 64
%6 = load volatile float, float addrspace(3)* %arrayidx17, align 4, !tbaa !39
%arrayidx20 = getelementptr inbounds float, float addrspace(3)* %buf, i32 65
%7 = load volatile float, float addrspace(3)* %arrayidx20, align 4, !tbaa !39
%8 = load volatile float, float addrspace(1)* %e_lj, align 4, !tbaa !39
%9 = bitcast float %8 to i32
%10 = bitcast float addrspace(1)* %e_lj to i32 addrspace(1)*
br label %do.body.i
do.body.i: ; preds = %do.body.i, %if.then11
%current.sroa.0.0.i = phi i32 [ %9, %if.then11 ], [ %14, %do.body.i ]
%11 = bitcast i32 %current.sroa.0.0.i to float
%add.i = fadd float %add15, %11
%12 = bitcast float %add.i to i32
%13 = cmpxchg volatile i32 addrspace(1)* %10, i32 %current.sroa.0.0.i, i32 %12 seq_cst seq_cst
%14 = extractvalue { i32, i1 } %13, 0
%cmp.i = extractvalue { i32, i1 } %13, 1
br i1 %cmp.i, label %atomicAdd_g_f.exit, label %do.body.i
atomicAdd_g_f.exit: ; preds = %do.body.i
%add21 = fadd float %6, %7
%15 = load volatile float, float addrspace(1)* %e_el, align 4, !tbaa !39
%16 = bitcast float %15 to i32
%17 = bitcast float addrspace(1)* %e_el to i32 addrspace(1)*
br label %do.body.i51
do.body.i51: ; preds = %do.body.i51, %atomicAdd_g_f.exit
%current.sroa.0.0.i48 = phi i32 [ %16, %atomicAdd_g_f.exit ], [ %21, %do.body.i51 ]
%18 = bitcast i32 %current.sroa.0.0.i48 to float
%add.i49 = fadd float %add21, %18
%19 = bitcast float %add.i49 to i32
%20 = cmpxchg volatile i32 addrspace(1)* %17, i32 %current.sroa.0.0.i48, i32 %19 seq_cst seq_cst
%21 = extractvalue { i32, i1 } %20, 0
%cmp.i50 = extractvalue { i32, i1 } %20, 1
br i1 %cmp.i50, label %if.end22.loopexit, label %do.body.i51
if.end22.loopexit: ; preds = %do.body.i51
br label %if.end22
if.end22: ; preds = %if.end22.loopexit, %entry, %if.end, %if.end.1, %if.end.2, %if.end.3
ret void
if.end.1: ; preds = %if.end
%add.1 = add i32 %tidx, 8
%arrayidx.1 = getelementptr inbounds float, float addrspace(3)* %buf, i32 %add.1
%22 = load volatile float, float addrspace(3)* %arrayidx.1, align 4, !tbaa !39
%23 = load volatile float, float addrspace(3)* %arrayidx2, align 4, !tbaa !39
%add3.1 = fadd float %22, %23
store volatile float %add3.1, float addrspace(3)* %arrayidx2, align 4, !tbaa !39
%add5.1 = add i32 %tidx, 72
%arrayidx6.1 = getelementptr inbounds float, float addrspace(3)* %buf, i32 %add5.1
%24 = load volatile float, float addrspace(3)* %arrayidx6.1, align 4, !tbaa !39
%25 = load volatile float, float addrspace(3)* %arrayidx8, align 4, !tbaa !39
%add9.1 = fadd float %24, %25
store volatile float %add9.1, float addrspace(3)* %arrayidx8, align 4, !tbaa !39
%cmp1.2 = icmp ult i32 %tidx, 4
br i1 %cmp1.2, label %if.end.2, label %if.end22
if.end.2: ; preds = %if.end.1
%add.2 = add i32 %tidx, 4
%arrayidx.2 = getelementptr inbounds float, float addrspace(3)* %buf, i32 %add.2
%26 = load volatile float, float addrspace(3)* %arrayidx.2, align 4, !tbaa !39
%27 = load volatile float, float addrspace(3)* %arrayidx2, align 4, !tbaa !39
%add3.2 = fadd float %26, %27
store volatile float %add3.2, float addrspace(3)* %arrayidx2, align 4, !tbaa !39
%add5.2 = add i32 %tidx, 68
%arrayidx6.2 = getelementptr inbounds float, float addrspace(3)* %buf, i32 %add5.2
%28 = load volatile float, float addrspace(3)* %arrayidx6.2, align 4, !tbaa !39
%29 = load volatile float, float addrspace(3)* %arrayidx8, align 4, !tbaa !39
%add9.2 = fadd float %28, %29
store volatile float %add9.2, float addrspace(3)* %arrayidx8, align 4, !tbaa !39
%cmp1.3 = icmp ult i32 %tidx, 2
br i1 %cmp1.3, label %if.end.3, label %if.end22
if.end.3: ; preds = %if.end.2
%add.3 = add i32 %tidx, 2
%arrayidx.3 = getelementptr inbounds float, float addrspace(3)* %buf, i32 %add.3
%30 = load volatile float, float addrspace(3)* %arrayidx.3, align 4, !tbaa !39
%31 = load volatile float, float addrspace(3)* %arrayidx2, align 4, !tbaa !39
%add3.3 = fadd float %30, %31
store volatile float %add3.3, float addrspace(3)* %arrayidx2, align 4, !tbaa !39
%add5.3 = add i32 %tidx, 66
%arrayidx6.3 = getelementptr inbounds float, float addrspace(3)* %buf, i32 %add5.3
%32 = load volatile float, float addrspace(3)* %arrayidx6.3, align 4, !tbaa !39
%33 = load volatile float, float addrspace(3)* %arrayidx8, align 4, !tbaa !39
%add9.3 = fadd float %32, %33
store volatile float %add9.3, float addrspace(3)* %arrayidx8, align 4, !tbaa !39
%cmp10 = icmp eq i32 %tidx, 0
br i1 %cmp10, label %if.then11, label %if.end22
}
; Function Attrs: nounwind
define void @nbnxn_kernel_ElecEw_VdwLJ_F_opencl(i32 %ntypes, i32 %nbparam_params_eeltype, i32 %nbparam_params_vdwtype, float %nbparam_params_epsfac, float %nbparam_params_c_rf, float %nbparam_params_two_k_rf, float %nbparam_params_ewald_beta, float %nbparam_params_sh_ewald, float %nbparam_params_sh_lj_ewald, float %nbparam_params_ewaldcoeff_lj, float %nbparam_params_rcoulomb_sq, float %nbparam_params_rvdw_sq, float %nbparam_params_rvdw_switch, float %nbparam_params_rlist_sq, float %nbparam_params_dispersion_shift_c2, float %nbparam_params_dispersion_shift_c3, float %nbparam_params_dispersion_shift_cpot, float %nbparam_params_repulsion_shift_c2, float %nbparam_params_repulsion_shift_c3, float %nbparam_params_repulsion_shift_cpot, float %nbparam_params_vdw_switch_c3, float %nbparam_params_vdw_switch_c4, float %nbparam_params_vdw_switch_c5, float %nbparam_params_coulomb_tab_size, float %nbparam_params_coulomb_tab_scale, <4 x float> addrspace(1)* noalias nocapture readonly %xq, float addrspace(1)* noalias nocapture %f, float addrspace(1)* noalias nocapture readnone %e_lj, float addrspace(1)* noalias nocapture readnone %e_el, float addrspace(1)* noalias nocapture %fshift, i32 addrspace(1)* noalias nocapture readonly %atom_types, float addrspace(1)* noalias nocapture readonly %shift_vec, float addrspace(2)* nocapture readonly %nbfp_climg2d, float addrspace(2)* nocapture readnone %nbfp_comb_climg2d, float addrspace(2)* nocapture readnone %coulomb_tab_climg2d, %struct.nbnxn_sci_t addrspace(1)* nocapture readonly %pl_sci, %struct.nbnxn_cj4_t addrspace(1)* nocapture readonly %pl_cj4, %struct.nbnxn_excl_t addrspace(1)* nocapture readonly %excl, i32 %bCalcFshift, <4 x float> addrspace(3)* nocapture %xqib, float addrspace(1)* nocapture readnone %debug_buffer) #0 {
entry:
%fshift_buf = alloca float, align 4
%mul = fmul float %nbparam_params_ewald_beta, %nbparam_params_ewald_beta
%mul19 = fmul float %mul, %nbparam_params_ewald_beta
%x.i = tail call i32 @llvm.amdgcn.workitem.id.x() #5, !range !35
%y.i = tail call i32 @llvm.amdgcn.workitem.id.y() #5, !range !35
%x.i475 = tail call i32 @llvm.r600.read.local.size.x() #2
%mul23 = mul i32 %x.i475, %y.i
%add = add i32 %mul23, %x.i
%x.i476 = tail call i32 @llvm.amdgcn.workgroup.id.x() #5
%div = lshr i32 %add, 5
%0 = bitcast float* %fshift_buf to i8*
call void @llvm.lifetime.start(i64 4, i8* %0) #5
%add.ptr = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 64
%1 = bitcast <4 x float> addrspace(3)* %add.ptr to i32 addrspace(3)*
%2 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 66, i32 0
%3 = sext i32 %x.i476 to i64
%nb_sci.sroa.0.0..sroa_idx = getelementptr inbounds %struct.nbnxn_sci_t, %struct.nbnxn_sci_t addrspace(1)* %pl_sci, i64 %3, i32 0
%nb_sci.sroa.0.0.copyload = load i32, i32 addrspace(1)* %nb_sci.sroa.0.0..sroa_idx, align 4
%nb_sci.sroa.4.0..sroa_idx278 = getelementptr inbounds %struct.nbnxn_sci_t, %struct.nbnxn_sci_t addrspace(1)* %pl_sci, i64 %3, i32 1
%nb_sci.sroa.4.0.copyload = load i32, i32 addrspace(1)* %nb_sci.sroa.4.0..sroa_idx278, align 4
%nb_sci.sroa.10.0..sroa_idx285 = getelementptr inbounds %struct.nbnxn_sci_t, %struct.nbnxn_sci_t addrspace(1)* %pl_sci, i64 %3, i32 2
%nb_sci.sroa.10.0.copyload = load i32, i32 addrspace(1)* %nb_sci.sroa.10.0..sroa_idx285, align 4
%nb_sci.sroa.11.0..sroa_idx287 = getelementptr inbounds %struct.nbnxn_sci_t, %struct.nbnxn_sci_t addrspace(1)* %pl_sci, i64 %3, i32 3
%nb_sci.sroa.11.0.copyload = load i32, i32 addrspace(1)* %nb_sci.sroa.11.0..sroa_idx287, align 4
%mul29 = shl nsw i32 %nb_sci.sroa.0.0.copyload, 3
%add30 = add i32 %mul29, %y.i
%mul31 = shl i32 %add30, 3
%add32 = add i32 %mul31, %x.i
%4 = sext i32 %add32 to i64
%arrayidx33 = getelementptr inbounds <4 x float>, <4 x float> addrspace(1)* %xq, i64 %4
%5 = load <4 x float>, <4 x float> addrspace(1)* %arrayidx33, align 16, !tbaa !36
%mul34 = mul nsw i32 %nb_sci.sroa.4.0.copyload, 3
%6 = sext i32 %mul34 to i64
%arrayidx35 = getelementptr inbounds float, float addrspace(1)* %shift_vec, i64 %6
%7 = load float, float addrspace(1)* %arrayidx35, align 4, !tbaa !39
%vecinit = insertelement <4 x float> undef, float %7, i32 0
%add38 = add nsw i32 %mul34, 1
%8 = sext i32 %add38 to i64
%arrayidx39 = getelementptr inbounds float, float addrspace(1)* %shift_vec, i64 %8
%9 = load float, float addrspace(1)* %arrayidx39, align 4, !tbaa !39
%vecinit40 = insertelement <4 x float> %vecinit, float %9, i32 1
%add43 = add nsw i32 %mul34, 2
%10 = sext i32 %add43 to i64
%arrayidx44 = getelementptr inbounds float, float addrspace(1)* %shift_vec, i64 %10
%11 = load float, float addrspace(1)* %arrayidx44, align 4, !tbaa !39
%vecinit45 = insertelement <4 x float> %vecinit40, float %11, i32 2
%vecinit46 = insertelement <4 x float> %vecinit45, float 0.000000e+00, i32 3
%add47 = fadd <4 x float> %5, %vecinit46
%12 = extractelement <4 x float> %add47, i32 3
%mul49 = fmul float %12, %nbparam_params_epsfac
%13 = insertelement <4 x float> %add47, float %mul49, i32 3
%mul50 = shl nuw nsw i32 %y.i, 3
%add51 = add nuw nsw i32 %mul50, %x.i
%arrayidx52 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 %add51
store <4 x float> %13, <4 x float> addrspace(3)* %arrayidx52, align 16, !tbaa !36
%14 = or i32 %add, 32
%15 = icmp eq i32 %14, 32
br i1 %15, label %if.then, label %if.end
if.then: ; preds = %entry
%add.ptr27 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 66, i32 192
%arrayidx56474 = getelementptr inbounds float, float addrspace(3)* %add.ptr27, i32 %div
%arrayidx56 = bitcast float addrspace(3)* %arrayidx56474 to i32 addrspace(3)*
store volatile i32 0, i32 addrspace(3)* %arrayidx56, align 4, !tbaa !41
br label %if.end
if.end: ; preds = %entry, %if.then
tail call void @llvm.amdgcn.s.barrier() #5
%cmp61482 = icmp slt i32 %nb_sci.sroa.10.0.copyload, %nb_sci.sroa.11.0.copyload
br i1 %cmp61482, label %for.body63.lr.ph, label %if.end.for.end223_crit_edge
if.end.for.end223_crit_edge: ; preds = %if.end
%.pre = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 66, i32 %add
%.pre744 = add i32 %add, 64
%.pre745 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 66, i32 %.pre744
%.pre746 = add i32 %add, 128
%.pre747 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 66, i32 %.pre746
%.pre793 = shl i32 %nb_sci.sroa.0.0.copyload, 6
%.pre794 = add i32 %.pre793, %x.i
%.pre795 = or i32 %.pre793, 8
%.pre796 = add i32 %.pre795, %x.i
%.pre797 = or i32 %.pre793, 16
%.pre798 = add i32 %.pre797, %x.i
%.pre799 = or i32 %.pre793, 24
%.pre800 = add i32 %.pre799, %x.i
%.pre801 = or i32 %.pre793, 32
%.pre802 = add i32 %.pre801, %x.i
%.pre803 = or i32 %.pre793, 40
%.pre804 = add i32 %.pre803, %x.i
%.pre805 = or i32 %.pre793, 48
%.pre806 = add i32 %.pre805, %x.i
%.pre807 = or i32 %.pre793, 56
%.pre808 = add i32 %.pre807, %x.i
br label %for.end223
for.body63.lr.ph: ; preds = %if.end
%16 = zext i32 %div to i64
%and = and i32 %add, 31
%17 = zext i32 %and to i64
%18 = or i32 %y.i, 4
%19 = icmp eq i32 %18, 4
%cmp78 = icmp ult i32 %x.i, 4
%or.cond261 = and i1 %cmp78, %19
%20 = zext i32 %x.i to i64
%add86 = add nuw nsw i32 %y.i, %x.i
%arrayidx87 = getelementptr inbounds i32, i32 addrspace(3)* %1, i32 %add86
%mul101 = and i32 %y.i, 4
%cmp145 = icmp ugt i32 %y.i, %x.i
%notlhs = icmp ne i32 %nb_sci.sroa.4.0.copyload, 22
%arrayidx211 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 66, i32 %add
%add212 = add i32 %add, 64
%arrayidx213 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 66, i32 %add212
%add214 = add i32 %add, 128
%arrayidx215 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 66, i32 %add214
%21 = sext i32 %nb_sci.sroa.10.0.copyload to i64
%add103.3 = or i32 %mul101, 3
%arrayidx104.3 = getelementptr inbounds i32, i32 addrspace(3)* %1, i32 %add103.3
%22 = or i32 %mul29, 7
%add123.7.3 = add nuw nsw i32 %x.i, 56
%arrayidx124.7.3 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 %add123.7.3
%add119.7.3 = shl i32 %nb_sci.sroa.0.0.copyload, 6
%mul120.7.3 = or i32 %add119.7.3, 56
%add121.7.3 = add i32 %mul120.7.3, %x.i
%23 = sext i32 %add121.7.3 to i64
%arrayidx152.7.3 = getelementptr inbounds i32, i32 addrspace(1)* %atom_types, i64 %23
%24 = or i32 %mul29, 6
%add123.6.3 = add nuw nsw i32 %x.i, 48
%arrayidx124.6.3 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 %add123.6.3
%mul120.6.3 = or i32 %add119.7.3, 48
%add121.6.3 = add i32 %mul120.6.3, %x.i
%25 = sext i32 %add121.6.3 to i64
%arrayidx152.6.3 = getelementptr inbounds i32, i32 addrspace(1)* %atom_types, i64 %25
%26 = or i32 %mul29, 5
%add123.5.3 = add nuw nsw i32 %x.i, 40
%arrayidx124.5.3 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 %add123.5.3
%mul120.5.3 = or i32 %add119.7.3, 40
%add121.5.3 = add i32 %mul120.5.3, %x.i
%27 = sext i32 %add121.5.3 to i64
%arrayidx152.5.3 = getelementptr inbounds i32, i32 addrspace(1)* %atom_types, i64 %27
%28 = or i32 %mul29, 4
%add123.4.3 = add nuw nsw i32 %x.i, 32
%arrayidx124.4.3 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 %add123.4.3
%mul120.4.3 = or i32 %add119.7.3, 32
%add121.4.3 = add i32 %mul120.4.3, %x.i
%29 = sext i32 %add121.4.3 to i64
%arrayidx152.4.3 = getelementptr inbounds i32, i32 addrspace(1)* %atom_types, i64 %29
%30 = or i32 %mul29, 3
%add123.3.3 = add nuw nsw i32 %x.i, 24
%arrayidx124.3.3 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 %add123.3.3
%mul120.3.3 = or i32 %add119.7.3, 24
%add121.3.3 = add i32 %mul120.3.3, %x.i
%31 = sext i32 %add121.3.3 to i64
%arrayidx152.3.3 = getelementptr inbounds i32, i32 addrspace(1)* %atom_types, i64 %31
%32 = or i32 %mul29, 2
%add123.2.3 = add nuw nsw i32 %x.i, 16
%arrayidx124.2.3 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 %add123.2.3
%mul120.2.3 = or i32 %add119.7.3, 16
%add121.2.3 = add i32 %mul120.2.3, %x.i
%33 = sext i32 %add121.2.3 to i64
%arrayidx152.2.3 = getelementptr inbounds i32, i32 addrspace(1)* %atom_types, i64 %33
%34 = or i32 %mul29, 1
%add123.1.3 = add nuw nsw i32 %x.i, 8
%arrayidx124.1.3 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 %add123.1.3
%mul120.1.3 = or i32 %add119.7.3, 8
%add121.1.3 = add i32 %mul120.1.3, %x.i
%35 = sext i32 %add121.1.3 to i64
%arrayidx152.1.3 = getelementptr inbounds i32, i32 addrspace(1)* %atom_types, i64 %35
%arrayidx124.3607 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 %x.i
%add121.3621 = add i32 %add119.7.3, %x.i
%36 = sext i32 %add121.3621 to i64
%arrayidx152.3622 = getelementptr inbounds i32, i32 addrspace(1)* %atom_types, i64 %36
%add103.2 = or i32 %mul101, 2
%arrayidx104.2 = getelementptr inbounds i32, i32 addrspace(3)* %1, i32 %add103.2
%add103.1 = or i32 %mul101, 1
%arrayidx104.1 = getelementptr inbounds i32, i32 addrspace(3)* %1, i32 %add103.1
%arrayidx104 = getelementptr inbounds i32, i32 addrspace(3)* %1, i32 %mul101
br label %for.body63
for.body63: ; preds = %for.inc221, %for.body63.lr.ph
%fci_buf.sroa.37.0 = phi <4 x float> [ <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float undef>, %for.body63.lr.ph ], [ %fci_buf.sroa.37.2, %for.inc221 ]
%37 = phi <3 x float> [ bitcast (i96 trunc (i128 bitcast (<4 x i32> <i32 0, i32 0, i32 0, i32 undef> to i128) to i96) to <3 x float>), %for.body63.lr.ph ], [ %89, %for.inc221 ]
%38 = phi <3 x float> [ bitcast (i96 trunc (i128 bitcast (<4 x i32> <i32 0, i32 0, i32 0, i32 undef> to i128) to i96) to <3 x float>), %for.body63.lr.ph ], [ %90, %for.inc221 ]
%39 = phi <3 x float> [ bitcast (i96 trunc (i128 bitcast (<4 x i32> <i32 0, i32 0, i32 0, i32 undef> to i128) to i96) to <3 x float>), %for.body63.lr.ph ], [ %91, %for.inc221 ]
%40 = phi <3 x float> [ bitcast (i96 trunc (i128 bitcast (<4 x i32> <i32 0, i32 0, i32 0, i32 undef> to i128) to i96) to <3 x float>), %for.body63.lr.ph ], [ %92, %for.inc221 ]
%41 = phi <3 x float> [ bitcast (i96 trunc (i128 bitcast (<4 x i32> <i32 0, i32 0, i32 0, i32 undef> to i128) to i96) to <3 x float>), %for.body63.lr.ph ], [ %93, %for.inc221 ]
%42 = phi <3 x float> [ bitcast (i96 trunc (i128 bitcast (<4 x i32> <i32 0, i32 0, i32 0, i32 undef> to i128) to i96) to <3 x float>), %for.body63.lr.ph ], [ %94, %for.inc221 ]
%43 = phi <3 x float> [ bitcast (i96 trunc (i128 bitcast (<4 x i32> <i32 0, i32 0, i32 0, i32 undef> to i128) to i96) to <3 x float>), %for.body63.lr.ph ], [ %95, %for.inc221 ]
%loadVec4200.7 = phi <4 x float> [ <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float undef>, %for.body63.lr.ph ], [ %loadVec4200.7738, %for.inc221 ]
%loadVec4200.6 = phi <4 x float> [ <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float undef>, %for.body63.lr.ph ], [ %loadVec4200.6728, %for.inc221 ]
%loadVec4200.5 = phi <4 x float> [ <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float undef>, %for.body63.lr.ph ], [ %loadVec4200.5718, %for.inc221 ]
%loadVec4200.4 = phi <4 x float> [ <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float undef>, %for.body63.lr.ph ], [ %loadVec4200.4708, %for.inc221 ]
%loadVec4200.3 = phi <4 x float> [ <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float undef>, %for.body63.lr.ph ], [ %loadVec4200.3698, %for.inc221 ]
%loadVec4200.2 = phi <4 x float> [ <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float undef>, %for.body63.lr.ph ], [ %loadVec4200.2688, %for.inc221 ]
%loadVec4200.1 = phi <4 x float> [ <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float undef>, %for.body63.lr.ph ], [ %loadVec4200.1678, %for.inc221 ]
%loadVec4200 = phi <4 x float> [ <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float undef>, %for.body63.lr.ph ], [ %loadVec4200668, %for.inc221 ]
%indvars.iv = phi i64 [ %21, %for.body63.lr.ph ], [ %indvars.iv.next, %for.inc221 ]
%excl_ind = getelementptr inbounds %struct.nbnxn_cj4_t, %struct.nbnxn_cj4_t addrspace(1)* %pl_cj4, i64 %indvars.iv, i32 1, i64 %16, i32 1
%44 = load i32, i32 addrspace(1)* %excl_ind, align 4, !tbaa !43
%imask69 = getelementptr inbounds %struct.nbnxn_cj4_t, %struct.nbnxn_cj4_t addrspace(1)* %pl_cj4, i64 %indvars.iv, i32 1, i64 %16, i32 0
%45 = load i32, i32 addrspace(1)* %imask69, align 4, !tbaa !45
%46 = sext i32 %44 to i64
%arrayidx71 = getelementptr inbounds %struct.nbnxn_excl_t, %struct.nbnxn_excl_t addrspace(1)* %excl, i64 %46, i32 0, i64 %17
%47 = load i32, i32 addrspace(1)* %arrayidx71, align 4, !tbaa !41
%tobool = icmp eq i32 %45, 0
br i1 %tobool, label %for.inc221, label %if.then72
if.then72: ; preds = %for.body63
br i1 %or.cond261, label %if.then80, label %for.body92.preheader
if.then80: ; preds = %if.then72
%arrayidx83 = getelementptr inbounds %struct.nbnxn_cj4_t, %struct.nbnxn_cj4_t addrspace(1)* %pl_cj4, i64 %indvars.iv, i32 0, i64 %20
%48 = load i32, i32 addrspace(1)* %arrayidx83, align 4, !tbaa !41
store i32 %48, i32 addrspace(3)* %arrayidx87, align 4, !tbaa !41
br label %for.body92.preheader
for.body92.preheader: ; preds = %if.then72, %if.then80
%and94 = and i32 %45, 255
%tobool95 = icmp eq i32 %and94, 0
br i1 %tobool95, label %for.inc217, label %if.then96
if.then96: ; preds = %for.body92.preheader
%49 = load i32, i32 addrspace(3)* %arrayidx104, align 4, !tbaa !41
%mul105 = shl nsw i32 %49, 3
%add106 = add i32 %mul105, %y.i
%50 = sext i32 %add106 to i64
%arrayidx107 = getelementptr inbounds <4 x float>, <4 x float> addrspace(1)* %xq, i64 %50
%51 = load <4 x float>, <4 x float> addrspace(1)* %arrayidx107, align 16, !tbaa !36
%52 = extractelement <4 x float> %51, i32 3
%arrayidx109 = getelementptr inbounds i32, i32 addrspace(1)* %atom_types, i64 %50
%53 = load i32, i32 addrspace(1)* %arrayidx109, align 4, !tbaa !41
%and115 = and i32 %45, 1
%tobool116 = icmp eq i32 %and115, 0
br i1 %tobool116, label %if.end206, label %if.then117
if.then117: ; preds = %if.then96
%54 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx124.3607, align 16, !tbaa !36
%55 = fsub <4 x float> %54, %51
%56 = extractelement <4 x float> %55, i32 0
%57 = extractelement <4 x float> %55, i32 1
%mul3.i.i = fmul float %57, %57
%58 = tail call float @llvm.fmuladd.f32(float %56, float %56, float %mul3.i.i) #5
%59 = extractelement <4 x float> %55, i32 2
%60 = tail call float @llvm.fmuladd.f32(float %59, float %59, float %58) #5
%and137 = and i32 %47, 1
%tobool138 = icmp ne i32 %and137, 0
%cond = select i1 %tobool138, float 1.000000e+00, float 0.000000e+00
%notrhs = icmp ne i32 %mul29, %49
%not.or.cond = or i1 %notlhs, %notrhs
%cmp145. = or i1 %cmp145, %not.or.cond
%conv147 = uitofp i1 %cmp145. to float
%mul148 = fmul float %conv147, %nbparam_params_rcoulomb_sq
%cmp149 = fcmp olt float %60, %mul148
br i1 %cmp149, label %if.then151, label %if.end206
if.then151: ; preds = %if.then117
%extractVec135 = shufflevector <4 x float> %55, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%61 = extractelement <4 x float> %54, i32 3
%62 = load i32, i32 addrspace(1)* %arrayidx152.3622, align 4, !tbaa !41
%mul153 = mul nsw i32 %62, %ntypes
%add154 = add nsw i32 %mul153, %53
%mul155 = shl nsw i32 %add154, 1
%63 = sext i32 %mul155 to i64
%arrayidx156 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %63
%64 = load float, float addrspace(2)* %arrayidx156, align 4, !tbaa !39
%add160 = or i32 %mul155, 1
%65 = sext i32 %add160 to i64
%arrayidx161 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %65
%66 = load float, float addrspace(2)* %arrayidx161, align 4, !tbaa !39
%sub162 = fsub float 1.000000e+00, %cond
%67 = tail call float @llvm.fmuladd.f32(float %sub162, float 0x3D71979980000000, float %60)
%cmp.i.i = fcmp olt float %67, 0.000000e+00
%call.i.i = tail call float @llvm.sqrt.f32(float %67) #6
%call.i.i.op = fdiv float 1.000000e+00, %call.i.i
%div165 = select i1 %cmp.i.i, float 0x7FF8000000000000, float %call.i.i.op
%mul166 = fmul float %div165, %div165
%mul167 = fmul float %mul166, %mul166
%mul168 = fmul float %mul166, %mul167
%mul169 = fmul float %cond, %mul168
%neg = fsub float -0.000000e+00, %64
%68 = tail call float @llvm.fmuladd.f32(float %66, float %mul169, float %neg)
%mul171 = fmul float %mul169, %68
%mul172 = fmul float %mul166, %mul171
%mul173 = fmul float %52, %61
%mul174 = fmul float %cond, %mul166
%mul176 = fmul float %mul, %67
%mul.i = fmul float %mul176, %mul176
%69 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i, float 0x3FBDA79640000000) #5
%70 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i, float 0x3FE03C5780000000) #5
%71 = tail call float @llvm.fmuladd.f32(float %69, float %mul.i, float 1.000000e+00) #5
%72 = tail call float @llvm.fmuladd.f32(float %70, float %mul176, float %71) #5
%div.i = fdiv float 1.000000e+00, %72, !fpmath !46
%73 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i, float 0xBF0BFF7260000000) #5
%74 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i, float 0x3F50794180000000) #5
%75 = tail call float @llvm.fmuladd.f32(float %73, float %mul.i, float 0xBF93BDB200000000) #5
%76 = tail call float @llvm.fmuladd.f32(float %74, float %mul.i, float 0x3FB1D5E760000000) #5
%77 = tail call float @llvm.fmuladd.f32(float %75, float %mul.i, float 0xBFE81272E0000000) #5
%78 = tail call float @llvm.fmuladd.f32(float %76, float %mul176, float %77) #5
%mul11.i = fmul float %78, %div.i
%mul178 = fmul float %mul19, %mul11.i
%79 = tail call float @llvm.fmuladd.f32(float %mul174, float %div165, float %mul178)
%80 = tail call float @llvm.fmuladd.f32(float %mul173, float %79, float %mul172)
%splat.splatinsert = insertelement <3 x float> undef, float %80, i32 0
%splat.splat = shufflevector <3 x float> %splat.splatinsert, <3 x float> undef, <3 x i32> zeroinitializer
%mul183 = fmul <3 x float> %extractVec135, %splat.splat
%sub192 = fsub <3 x float> zeroinitializer, %mul183
%extractVec193 = shufflevector <3 x float> %sub192, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec201 = shufflevector <4 x float> %loadVec4200, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add202 = fadd <3 x float> %extractVec201, %mul183
%extractVec203 = shufflevector <3 x float> %add202, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end206
if.end206: ; preds = %if.then96, %if.then117, %if.then151
%81 = phi <3 x float> [ %add202, %if.then151 ], [ %43, %if.then117 ], [ %43, %if.then96 ]
%loadVec4200673 = phi <4 x float> [ %extractVec203, %if.then151 ], [ %loadVec4200, %if.then117 ], [ %loadVec4200, %if.then96 ]
%fcj_buf.sroa.0.1 = phi <4 x float> [ %extractVec193, %if.then151 ], [ <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float undef>, %if.then117 ], [ <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float undef>, %if.then96 ]
%and115.1 = and i32 %45, 2
%tobool116.1 = icmp eq i32 %and115.1, 0
br i1 %tobool116.1, label %if.end206.1, label %if.then117.1
for.inc217: ; preds = %for.body92.preheader, %if.end206.7
%fci_buf.sroa.37.1 = phi <4 x float> [ %fci_buf.sroa.37.0, %for.body92.preheader ], [ %fci_buf.sroa.37.4, %if.end206.7 ]
%82 = phi <3 x float> [ %37, %for.body92.preheader ], [ %303, %if.end206.7 ]
%83 = phi <3 x float> [ %38, %for.body92.preheader ], [ %275, %if.end206.7 ]
%84 = phi <3 x float> [ %39, %for.body92.preheader ], [ %247, %if.end206.7 ]
%85 = phi <3 x float> [ %40, %for.body92.preheader ], [ %219, %if.end206.7 ]
%86 = phi <3 x float> [ %41, %for.body92.preheader ], [ %191, %if.end206.7 ]
%87 = phi <3 x float> [ %42, %for.body92.preheader ], [ %163, %if.end206.7 ]
%88 = phi <3 x float> [ %43, %for.body92.preheader ], [ %81, %if.end206.7 ]
%loadVec4200.7.1 = phi <4 x float> [ %loadVec4200.7, %for.body92.preheader ], [ %loadVec4200.7743, %if.end206.7 ]
%loadVec4200.6.1 = phi <4 x float> [ %loadVec4200.6, %for.body92.preheader ], [ %loadVec4200.6733, %if.end206.7 ]
%loadVec4200.5.1 = phi <4 x float> [ %loadVec4200.5, %for.body92.preheader ], [ %loadVec4200.5723, %if.end206.7 ]
%loadVec4200.4.1 = phi <4 x float> [ %loadVec4200.4, %for.body92.preheader ], [ %loadVec4200.4713, %if.end206.7 ]
%loadVec4200.3.1 = phi <4 x float> [ %loadVec4200.3, %for.body92.preheader ], [ %loadVec4200.3703, %if.end206.7 ]
%loadVec4200.2.1 = phi <4 x float> [ %loadVec4200.2, %for.body92.preheader ], [ %loadVec4200.2693, %if.end206.7 ]
%loadVec4200.1.1 = phi <4 x float> [ %loadVec4200.1, %for.body92.preheader ], [ %loadVec4200.1683, %if.end206.7 ]
%loadVec4200.1539 = phi <4 x float> [ %loadVec4200, %for.body92.preheader ], [ %loadVec4200673, %if.end206.7 ]
%and94.1 = and i32 %45, 65280
%tobool95.1 = icmp eq i32 %and94.1, 0
br i1 %tobool95.1, label %for.inc217.1, label %if.then96.1
for.inc221: ; preds = %for.inc217.2, %if.end206.7.3, %for.body63
%fci_buf.sroa.37.2 = phi <4 x float> [ %fci_buf.sroa.37.0, %for.body63 ], [ %fci_buf.sroa.37.8, %for.inc217.2 ], [ %fci_buf.sroa.37.9, %if.end206.7.3 ]
%89 = phi <3 x float> [ %37, %for.body63 ], [ %803, %for.inc217.2 ], [ %1010, %if.end206.7.3 ]
%90 = phi <3 x float> [ %38, %for.body63 ], [ %804, %for.inc217.2 ], [ %982, %if.end206.7.3 ]
%91 = phi <3 x float> [ %39, %for.body63 ], [ %805, %for.inc217.2 ], [ %954, %if.end206.7.3 ]
%92 = phi <3 x float> [ %40, %for.body63 ], [ %806, %for.inc217.2 ], [ %926, %if.end206.7.3 ]
%93 = phi <3 x float> [ %41, %for.body63 ], [ %807, %for.inc217.2 ], [ %898, %if.end206.7.3 ]
%94 = phi <3 x float> [ %42, %for.body63 ], [ %808, %for.inc217.2 ], [ %870, %if.end206.7.3 ]
%95 = phi <3 x float> [ %43, %for.body63 ], [ %809, %for.inc217.2 ], [ %842, %if.end206.7.3 ]
%loadVec4200.7738 = phi <4 x float> [ %loadVec4200.7, %for.body63 ], [ %loadVec4200.7.3, %for.inc217.2 ], [ %loadVec4200.7736, %if.end206.7.3 ]
%loadVec4200.6728 = phi <4 x float> [ %loadVec4200.6, %for.body63 ], [ %loadVec4200.6.3, %for.inc217.2 ], [ %loadVec4200.6726, %if.end206.7.3 ]
%loadVec4200.5718 = phi <4 x float> [ %loadVec4200.5, %for.body63 ], [ %loadVec4200.5.3, %for.inc217.2 ], [ %loadVec4200.5716, %if.end206.7.3 ]
%loadVec4200.4708 = phi <4 x float> [ %loadVec4200.4, %for.body63 ], [ %loadVec4200.4.3, %for.inc217.2 ], [ %loadVec4200.4706, %if.end206.7.3 ]
%loadVec4200.3698 = phi <4 x float> [ %loadVec4200.3, %for.body63 ], [ %loadVec4200.3.3, %for.inc217.2 ], [ %loadVec4200.3696, %if.end206.7.3 ]
%loadVec4200.2688 = phi <4 x float> [ %loadVec4200.2, %for.body63 ], [ %loadVec4200.2.3, %for.inc217.2 ], [ %loadVec4200.2686, %if.end206.7.3 ]
%loadVec4200.1678 = phi <4 x float> [ %loadVec4200.1, %for.body63 ], [ %loadVec4200.1.3, %for.inc217.2 ], [ %loadVec4200.1676, %if.end206.7.3 ]
%loadVec4200668 = phi <4 x float> [ %loadVec4200, %for.body63 ], [ %loadVec4200.3655, %for.inc217.2 ], [ %loadVec4200666, %if.end206.7.3 ]
%indvars.iv.next = add nsw i64 %indvars.iv, 1
%lftr.wideiv = trunc i64 %indvars.iv.next to i32
%exitcond = icmp eq i32 %lftr.wideiv, %nb_sci.sroa.11.0.copyload
br i1 %exitcond, label %for.end223.loopexit, label %for.body63
for.end223.loopexit: ; preds = %for.inc221
%.lcssa832 = phi <3 x float> [ %95, %for.inc221 ]
%.lcssa831 = phi <3 x float> [ %94, %for.inc221 ]
%.lcssa830 = phi <3 x float> [ %93, %for.inc221 ]
%.lcssa829 = phi <3 x float> [ %92, %for.inc221 ]
%.lcssa828 = phi <3 x float> [ %91, %for.inc221 ]
%.lcssa827 = phi <3 x float> [ %90, %for.inc221 ]
%.lcssa = phi <3 x float> [ %89, %for.inc221 ]
%fci_buf.sroa.37.2.lcssa = phi <4 x float> [ %fci_buf.sroa.37.2, %for.inc221 ]
br label %for.end223
for.end223: ; preds = %for.end223.loopexit, %if.end.for.end223_crit_edge
%add236.7.pre-phi = phi i32 [ %.pre808, %if.end.for.end223_crit_edge ], [ %add121.7.3, %for.end223.loopexit ]
%add236.6.pre-phi = phi i32 [ %.pre806, %if.end.for.end223_crit_edge ], [ %add121.6.3, %for.end223.loopexit ]
%add236.5.pre-phi = phi i32 [ %.pre804, %if.end.for.end223_crit_edge ], [ %add121.5.3, %for.end223.loopexit ]
%add236.4.pre-phi = phi i32 [ %.pre802, %if.end.for.end223_crit_edge ], [ %add121.4.3, %for.end223.loopexit ]
%add236.3.pre-phi = phi i32 [ %.pre800, %if.end.for.end223_crit_edge ], [ %add121.3.3, %for.end223.loopexit ]
%add236.2.pre-phi = phi i32 [ %.pre798, %if.end.for.end223_crit_edge ], [ %add121.2.3, %for.end223.loopexit ]
%add236.1.pre-phi = phi i32 [ %.pre796, %if.end.for.end223_crit_edge ], [ %add121.1.3, %for.end223.loopexit ]
%add236.pre-phi = phi i32 [ %.pre794, %if.end.for.end223_crit_edge ], [ %add121.3621, %for.end223.loopexit ]
%fci_buf.sroa.37.3 = phi <4 x float> [ <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float undef>, %if.end.for.end223_crit_edge ], [ %fci_buf.sroa.37.2.lcssa, %for.end223.loopexit ]
%arrayidx244.pre-phi = phi float addrspace(3)* [ %.pre747, %if.end.for.end223_crit_edge ], [ %arrayidx215, %for.end223.loopexit ]
%arrayidx241.pre-phi = phi float addrspace(3)* [ %.pre745, %if.end.for.end223_crit_edge ], [ %arrayidx213, %for.end223.loopexit ]
%arrayidx238.pre-phi = phi float addrspace(3)* [ %.pre, %if.end.for.end223_crit_edge ], [ %arrayidx211, %for.end223.loopexit ]
%96 = phi <3 x float> [ bitcast (i96 trunc (i128 bitcast (<4 x i32> <i32 0, i32 0, i32 0, i32 undef> to i128) to i96) to <3 x float>), %if.end.for.end223_crit_edge ], [ %.lcssa, %for.end223.loopexit ]
%97 = phi <3 x float> [ bitcast (i96 trunc (i128 bitcast (<4 x i32> <i32 0, i32 0, i32 0, i32 undef> to i128) to i96) to <3 x float>), %if.end.for.end223_crit_edge ], [ %.lcssa827, %for.end223.loopexit ]
%98 = phi <3 x float> [ bitcast (i96 trunc (i128 bitcast (<4 x i32> <i32 0, i32 0, i32 0, i32 undef> to i128) to i96) to <3 x float>), %if.end.for.end223_crit_edge ], [ %.lcssa828, %for.end223.loopexit ]
%99 = phi <3 x float> [ bitcast (i96 trunc (i128 bitcast (<4 x i32> <i32 0, i32 0, i32 0, i32 undef> to i128) to i96) to <3 x float>), %if.end.for.end223_crit_edge ], [ %.lcssa829, %for.end223.loopexit ]
%100 = phi <3 x float> [ bitcast (i96 trunc (i128 bitcast (<4 x i32> <i32 0, i32 0, i32 0, i32 undef> to i128) to i96) to <3 x float>), %if.end.for.end223_crit_edge ], [ %.lcssa830, %for.end223.loopexit ]
%101 = phi <3 x float> [ bitcast (i96 trunc (i128 bitcast (<4 x i32> <i32 0, i32 0, i32 0, i32 undef> to i128) to i96) to <3 x float>), %if.end.for.end223_crit_edge ], [ %.lcssa831, %for.end223.loopexit ]
%102 = phi <3 x float> [ bitcast (i96 trunc (i128 bitcast (<4 x i32> <i32 0, i32 0, i32 0, i32 undef> to i128) to i96) to <3 x float>), %if.end.for.end223_crit_edge ], [ %.lcssa832, %for.end223.loopexit ]
store float 0.000000e+00, float* %fshift_buf, align 4, !tbaa !39
%tobool245748 = icmp ne i32 %bCalcFshift, 0
%not.cmp225 = icmp ne i32 %nb_sci.sroa.4.0.copyload, 22
%tobool245 = and i1 %tobool245748, %not.cmp225
%103 = extractelement <3 x float> %102, i32 0
store float %103, float addrspace(3)* %arrayidx238.pre-phi, align 4, !tbaa !39
%104 = extractelement <3 x float> %102, i32 1
store float %104, float addrspace(3)* %arrayidx241.pre-phi, align 4, !tbaa !39
%105 = extractelement <3 x float> %102, i32 2
store float %105, float addrspace(3)* %arrayidx244.pre-phi, align 4, !tbaa !39
tail call void @llvm.amdgcn.s.barrier() #5
call fastcc void @reduce_force_i_pow2(float addrspace(3)* %2, float addrspace(1)* %f, float* nonnull %fshift_buf, i1 zeroext %tobool245, i32 %x.i, i32 %y.i, i32 %add236.pre-phi) #5
tail call void @llvm.amdgcn.s.barrier() #5
%106 = extractelement <3 x float> %101, i32 0
store float %106, float addrspace(3)* %arrayidx238.pre-phi, align 4, !tbaa !39
%107 = extractelement <3 x float> %101, i32 1
store float %107, float addrspace(3)* %arrayidx241.pre-phi, align 4, !tbaa !39
%108 = extractelement <3 x float> %101, i32 2
store float %108, float addrspace(3)* %arrayidx244.pre-phi, align 4, !tbaa !39
tail call void @llvm.amdgcn.s.barrier() #5
call fastcc void @reduce_force_i_pow2(float addrspace(3)* %2, float addrspace(1)* %f, float* nonnull %fshift_buf, i1 zeroext %tobool245, i32 %x.i, i32 %y.i, i32 %add236.1.pre-phi) #5
tail call void @llvm.amdgcn.s.barrier() #5
%109 = extractelement <3 x float> %100, i32 0
store float %109, float addrspace(3)* %arrayidx238.pre-phi, align 4, !tbaa !39
%110 = extractelement <3 x float> %100, i32 1
store float %110, float addrspace(3)* %arrayidx241.pre-phi, align 4, !tbaa !39
%111 = extractelement <3 x float> %100, i32 2
store float %111, float addrspace(3)* %arrayidx244.pre-phi, align 4, !tbaa !39
tail call void @llvm.amdgcn.s.barrier() #5
call fastcc void @reduce_force_i_pow2(float addrspace(3)* %2, float addrspace(1)* %f, float* nonnull %fshift_buf, i1 zeroext %tobool245, i32 %x.i, i32 %y.i, i32 %add236.2.pre-phi) #5
tail call void @llvm.amdgcn.s.barrier() #5
%112 = extractelement <3 x float> %99, i32 0
store float %112, float addrspace(3)* %arrayidx238.pre-phi, align 4, !tbaa !39
%113 = extractelement <3 x float> %99, i32 1
store float %113, float addrspace(3)* %arrayidx241.pre-phi, align 4, !tbaa !39
%114 = extractelement <3 x float> %99, i32 2
store float %114, float addrspace(3)* %arrayidx244.pre-phi, align 4, !tbaa !39
tail call void @llvm.amdgcn.s.barrier() #5
call fastcc void @reduce_force_i_pow2(float addrspace(3)* %2, float addrspace(1)* %f, float* nonnull %fshift_buf, i1 zeroext %tobool245, i32 %x.i, i32 %y.i, i32 %add236.3.pre-phi) #5
tail call void @llvm.amdgcn.s.barrier() #5
%115 = extractelement <3 x float> %98, i32 0
store float %115, float addrspace(3)* %arrayidx238.pre-phi, align 4, !tbaa !39
%116 = extractelement <3 x float> %98, i32 1
store float %116, float addrspace(3)* %arrayidx241.pre-phi, align 4, !tbaa !39
%117 = extractelement <3 x float> %98, i32 2
store float %117, float addrspace(3)* %arrayidx244.pre-phi, align 4, !tbaa !39
tail call void @llvm.amdgcn.s.barrier() #5
call fastcc void @reduce_force_i_pow2(float addrspace(3)* %2, float addrspace(1)* %f, float* nonnull %fshift_buf, i1 zeroext %tobool245, i32 %x.i, i32 %y.i, i32 %add236.4.pre-phi) #5
tail call void @llvm.amdgcn.s.barrier() #5
%118 = extractelement <3 x float> %97, i32 0
store float %118, float addrspace(3)* %arrayidx238.pre-phi, align 4, !tbaa !39
%119 = extractelement <3 x float> %97, i32 1
store float %119, float addrspace(3)* %arrayidx241.pre-phi, align 4, !tbaa !39
%120 = extractelement <3 x float> %97, i32 2
store float %120, float addrspace(3)* %arrayidx244.pre-phi, align 4, !tbaa !39
tail call void @llvm.amdgcn.s.barrier() #5
call fastcc void @reduce_force_i_pow2(float addrspace(3)* %2, float addrspace(1)* %f, float* nonnull %fshift_buf, i1 zeroext %tobool245, i32 %x.i, i32 %y.i, i32 %add236.5.pre-phi) #5
tail call void @llvm.amdgcn.s.barrier() #5
%121 = extractelement <3 x float> %96, i32 0
store float %121, float addrspace(3)* %arrayidx238.pre-phi, align 4, !tbaa !39
%122 = extractelement <3 x float> %96, i32 1
store float %122, float addrspace(3)* %arrayidx241.pre-phi, align 4, !tbaa !39
%123 = extractelement <3 x float> %96, i32 2
store float %123, float addrspace(3)* %arrayidx244.pre-phi, align 4, !tbaa !39
tail call void @llvm.amdgcn.s.barrier() #5
call fastcc void @reduce_force_i_pow2(float addrspace(3)* %2, float addrspace(1)* %f, float* nonnull %fshift_buf, i1 zeroext %tobool245, i32 %x.i, i32 %y.i, i32 %add236.6.pre-phi) #5
tail call void @llvm.amdgcn.s.barrier() #5
%124 = extractelement <4 x float> %fci_buf.sroa.37.3, i32 0
store float %124, float addrspace(3)* %arrayidx238.pre-phi, align 4, !tbaa !39
%125 = extractelement <4 x float> %fci_buf.sroa.37.3, i32 1
store float %125, float addrspace(3)* %arrayidx241.pre-phi, align 4, !tbaa !39
%126 = extractelement <4 x float> %fci_buf.sroa.37.3, i32 2
store float %126, float addrspace(3)* %arrayidx244.pre-phi, align 4, !tbaa !39
tail call void @llvm.amdgcn.s.barrier() #5
call fastcc void @reduce_force_i_pow2(float addrspace(3)* %2, float addrspace(1)* %f, float* nonnull %fshift_buf, i1 zeroext %tobool245, i32 %x.i, i32 %y.i, i32 %add236.7.pre-phi) #5
tail call void @llvm.amdgcn.s.barrier() #5
%cmp251 = icmp ult i32 %y.i, 3
%or.cond262 = and i1 %cmp251, %tobool245
br i1 %or.cond262, label %if.then253, label %if.end259
if.then253: ; preds = %for.end223
%add256 = add i32 %mul34, %y.i
%127 = sext i32 %add256 to i64
%arrayidx257 = getelementptr inbounds float, float addrspace(1)* %fshift, i64 %127
%128 = load float, float* %fshift_buf, align 4, !tbaa !39
%129 = load volatile float, float addrspace(1)* %arrayidx257, align 4, !tbaa !39
%130 = bitcast float %129 to i32
%131 = bitcast float addrspace(1)* %arrayidx257 to i32 addrspace(1)*
br label %do.body.i
do.body.i: ; preds = %do.body.i, %if.then253
%current.sroa.0.0.i = phi i32 [ %130, %if.then253 ], [ %135, %do.body.i ]
%132 = bitcast i32 %current.sroa.0.0.i to float
%add.i = fadd float %128, %132
%133 = bitcast float %add.i to i32
%134 = cmpxchg volatile i32 addrspace(1)* %131, i32 %current.sroa.0.0.i, i32 %133 seq_cst seq_cst
%135 = extractvalue { i32, i1 } %134, 0
%cmp.i = extractvalue { i32, i1 } %134, 1
br i1 %cmp.i, label %if.end259.loopexit, label %do.body.i
if.end259.loopexit: ; preds = %do.body.i
br label %if.end259
if.end259: ; preds = %if.end259.loopexit, %for.end223
call void @llvm.lifetime.end(i64 4, i8* %0) #5
ret void
if.then117.1: ; preds = %if.end206
%136 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx124.1.3, align 16, !tbaa !36
%137 = fsub <4 x float> %136, %51
%138 = extractelement <4 x float> %137, i32 0
%139 = extractelement <4 x float> %137, i32 1
%mul3.i.i.1 = fmul float %139, %139
%140 = tail call float @llvm.fmuladd.f32(float %138, float %138, float %mul3.i.i.1) #5
%141 = extractelement <4 x float> %137, i32 2
%142 = tail call float @llvm.fmuladd.f32(float %141, float %141, float %140) #5
%and137.1 = and i32 %47, 2
%tobool138.1 = icmp ne i32 %and137.1, 0
%cond.1 = select i1 %tobool138.1, float 1.000000e+00, float 0.000000e+00
%notrhs.1 = icmp ne i32 %34, %49
%not.or.cond.1 = or i1 %notlhs, %notrhs.1
%cmp145..1 = or i1 %cmp145, %not.or.cond.1
%conv147.1 = uitofp i1 %cmp145..1 to float
%mul148.1 = fmul float %conv147.1, %nbparam_params_rcoulomb_sq
%cmp149.1 = fcmp olt float %142, %mul148.1
br i1 %cmp149.1, label %if.then151.1, label %if.end206.1
if.then151.1: ; preds = %if.then117.1
%extractVec135.1 = shufflevector <4 x float> %137, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%143 = extractelement <4 x float> %136, i32 3
%144 = load i32, i32 addrspace(1)* %arrayidx152.1.3, align 4, !tbaa !41
%mul153.1 = mul nsw i32 %144, %ntypes
%add154.1 = add nsw i32 %mul153.1, %53
%mul155.1 = shl nsw i32 %add154.1, 1
%145 = sext i32 %mul155.1 to i64
%arrayidx156.1 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %145
%146 = load float, float addrspace(2)* %arrayidx156.1, align 4, !tbaa !39
%add160.1 = or i32 %mul155.1, 1
%147 = sext i32 %add160.1 to i64
%arrayidx161.1 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %147
%148 = load float, float addrspace(2)* %arrayidx161.1, align 4, !tbaa !39
%sub162.1 = fsub float 1.000000e+00, %cond.1
%149 = tail call float @llvm.fmuladd.f32(float %sub162.1, float 0x3D71979980000000, float %142)
%cmp.i.i.1 = fcmp olt float %149, 0.000000e+00
%call.i.i.1 = tail call float @llvm.sqrt.f32(float %149) #6
%call.i.i.op.1 = fdiv float 1.000000e+00, %call.i.i.1
%div165.1 = select i1 %cmp.i.i.1, float 0x7FF8000000000000, float %call.i.i.op.1
%mul166.1 = fmul float %div165.1, %div165.1
%mul167.1 = fmul float %mul166.1, %mul166.1
%mul168.1 = fmul float %mul166.1, %mul167.1
%mul169.1 = fmul float %cond.1, %mul168.1
%neg.1 = fsub float -0.000000e+00, %146
%150 = tail call float @llvm.fmuladd.f32(float %148, float %mul169.1, float %neg.1)
%mul171.1 = fmul float %mul169.1, %150
%mul172.1 = fmul float %mul166.1, %mul171.1
%mul173.1 = fmul float %52, %143
%mul174.1 = fmul float %cond.1, %mul166.1
%mul176.1 = fmul float %mul, %149
%mul.i.1 = fmul float %mul176.1, %mul176.1
%151 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.1, float 0x3FBDA79640000000) #5
%152 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.1, float 0x3FE03C5780000000) #5
%153 = tail call float @llvm.fmuladd.f32(float %151, float %mul.i.1, float 1.000000e+00) #5
%154 = tail call float @llvm.fmuladd.f32(float %152, float %mul176.1, float %153) #5
%div.i.1 = fdiv float 1.000000e+00, %154, !fpmath !46
%155 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.1, float 0xBF0BFF7260000000) #5
%156 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.1, float 0x3F50794180000000) #5
%157 = tail call float @llvm.fmuladd.f32(float %155, float %mul.i.1, float 0xBF93BDB200000000) #5
%158 = tail call float @llvm.fmuladd.f32(float %156, float %mul.i.1, float 0x3FB1D5E760000000) #5
%159 = tail call float @llvm.fmuladd.f32(float %157, float %mul.i.1, float 0xBFE81272E0000000) #5
%160 = tail call float @llvm.fmuladd.f32(float %158, float %mul176.1, float %159) #5
%mul11.i.1 = fmul float %160, %div.i.1
%mul178.1 = fmul float %mul19, %mul11.i.1
%161 = tail call float @llvm.fmuladd.f32(float %mul174.1, float %div165.1, float %mul178.1)
%162 = tail call float @llvm.fmuladd.f32(float %mul173.1, float %161, float %mul172.1)
%splat.splatinsert.1 = insertelement <3 x float> undef, float %162, i32 0
%splat.splat.1 = shufflevector <3 x float> %splat.splatinsert.1, <3 x float> undef, <3 x i32> zeroinitializer
%mul183.1 = fmul <3 x float> %extractVec135.1, %splat.splat.1
%extractVec191.1 = shufflevector <4 x float> %fcj_buf.sroa.0.1, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub192.1 = fsub <3 x float> %extractVec191.1, %mul183.1
%extractVec193.1 = shufflevector <3 x float> %sub192.1, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec201.1 = shufflevector <4 x float> %loadVec4200.1, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add202.1 = fadd <3 x float> %extractVec201.1, %mul183.1
%extractVec203.1 = shufflevector <3 x float> %add202.1, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end206.1
if.end206.1: ; preds = %if.then151.1, %if.then117.1, %if.end206
%163 = phi <3 x float> [ %add202.1, %if.then151.1 ], [ %42, %if.then117.1 ], [ %42, %if.end206 ]
%loadVec4200.1683 = phi <4 x float> [ %extractVec203.1, %if.then151.1 ], [ %loadVec4200.1, %if.then117.1 ], [ %loadVec4200.1, %if.end206 ]
%fcj_buf.sroa.0.1.1 = phi <4 x float> [ %extractVec193.1, %if.then151.1 ], [ %fcj_buf.sroa.0.1, %if.then117.1 ], [ %fcj_buf.sroa.0.1, %if.end206 ]
%and115.2 = and i32 %45, 4
%tobool116.2 = icmp eq i32 %and115.2, 0
br i1 %tobool116.2, label %if.end206.2, label %if.then117.2
if.then117.2: ; preds = %if.end206.1
%164 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx124.2.3, align 16, !tbaa !36
%165 = fsub <4 x float> %164, %51
%166 = extractelement <4 x float> %165, i32 0
%167 = extractelement <4 x float> %165, i32 1
%mul3.i.i.2 = fmul float %167, %167
%168 = tail call float @llvm.fmuladd.f32(float %166, float %166, float %mul3.i.i.2) #5
%169 = extractelement <4 x float> %165, i32 2
%170 = tail call float @llvm.fmuladd.f32(float %169, float %169, float %168) #5
%and137.2 = and i32 %47, 4
%tobool138.2 = icmp ne i32 %and137.2, 0
%cond.2 = select i1 %tobool138.2, float 1.000000e+00, float 0.000000e+00
%notrhs.2 = icmp ne i32 %32, %49
%not.or.cond.2 = or i1 %notlhs, %notrhs.2
%cmp145..2 = or i1 %cmp145, %not.or.cond.2
%conv147.2 = uitofp i1 %cmp145..2 to float
%mul148.2 = fmul float %conv147.2, %nbparam_params_rcoulomb_sq
%cmp149.2 = fcmp olt float %170, %mul148.2
br i1 %cmp149.2, label %if.then151.2, label %if.end206.2
if.then151.2: ; preds = %if.then117.2
%extractVec135.2 = shufflevector <4 x float> %165, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%171 = extractelement <4 x float> %164, i32 3
%172 = load i32, i32 addrspace(1)* %arrayidx152.2.3, align 4, !tbaa !41
%mul153.2 = mul nsw i32 %172, %ntypes
%add154.2 = add nsw i32 %mul153.2, %53
%mul155.2 = shl nsw i32 %add154.2, 1
%173 = sext i32 %mul155.2 to i64
%arrayidx156.2 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %173
%174 = load float, float addrspace(2)* %arrayidx156.2, align 4, !tbaa !39
%add160.2 = or i32 %mul155.2, 1
%175 = sext i32 %add160.2 to i64
%arrayidx161.2 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %175
%176 = load float, float addrspace(2)* %arrayidx161.2, align 4, !tbaa !39
%sub162.2 = fsub float 1.000000e+00, %cond.2
%177 = tail call float @llvm.fmuladd.f32(float %sub162.2, float 0x3D71979980000000, float %170)
%cmp.i.i.2 = fcmp olt float %177, 0.000000e+00
%call.i.i.2 = tail call float @llvm.sqrt.f32(float %177) #6
%call.i.i.op.2 = fdiv float 1.000000e+00, %call.i.i.2
%div165.2 = select i1 %cmp.i.i.2, float 0x7FF8000000000000, float %call.i.i.op.2
%mul166.2 = fmul float %div165.2, %div165.2
%mul167.2 = fmul float %mul166.2, %mul166.2
%mul168.2 = fmul float %mul166.2, %mul167.2
%mul169.2 = fmul float %cond.2, %mul168.2
%neg.2 = fsub float -0.000000e+00, %174
%178 = tail call float @llvm.fmuladd.f32(float %176, float %mul169.2, float %neg.2)
%mul171.2 = fmul float %mul169.2, %178
%mul172.2 = fmul float %mul166.2, %mul171.2
%mul173.2 = fmul float %52, %171
%mul174.2 = fmul float %cond.2, %mul166.2
%mul176.2 = fmul float %mul, %177
%mul.i.2 = fmul float %mul176.2, %mul176.2
%179 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.2, float 0x3FBDA79640000000) #5
%180 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.2, float 0x3FE03C5780000000) #5
%181 = tail call float @llvm.fmuladd.f32(float %179, float %mul.i.2, float 1.000000e+00) #5
%182 = tail call float @llvm.fmuladd.f32(float %180, float %mul176.2, float %181) #5
%div.i.2 = fdiv float 1.000000e+00, %182, !fpmath !46
%183 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.2, float 0xBF0BFF7260000000) #5
%184 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.2, float 0x3F50794180000000) #5
%185 = tail call float @llvm.fmuladd.f32(float %183, float %mul.i.2, float 0xBF93BDB200000000) #5
%186 = tail call float @llvm.fmuladd.f32(float %184, float %mul.i.2, float 0x3FB1D5E760000000) #5
%187 = tail call float @llvm.fmuladd.f32(float %185, float %mul.i.2, float 0xBFE81272E0000000) #5
%188 = tail call float @llvm.fmuladd.f32(float %186, float %mul176.2, float %187) #5
%mul11.i.2 = fmul float %188, %div.i.2
%mul178.2 = fmul float %mul19, %mul11.i.2
%189 = tail call float @llvm.fmuladd.f32(float %mul174.2, float %div165.2, float %mul178.2)
%190 = tail call float @llvm.fmuladd.f32(float %mul173.2, float %189, float %mul172.2)
%splat.splatinsert.2 = insertelement <3 x float> undef, float %190, i32 0
%splat.splat.2 = shufflevector <3 x float> %splat.splatinsert.2, <3 x float> undef, <3 x i32> zeroinitializer
%mul183.2 = fmul <3 x float> %extractVec135.2, %splat.splat.2
%extractVec191.2 = shufflevector <4 x float> %fcj_buf.sroa.0.1.1, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub192.2 = fsub <3 x float> %extractVec191.2, %mul183.2
%extractVec193.2 = shufflevector <3 x float> %sub192.2, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec201.2 = shufflevector <4 x float> %loadVec4200.2, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add202.2 = fadd <3 x float> %extractVec201.2, %mul183.2
%extractVec203.2 = shufflevector <3 x float> %add202.2, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end206.2
if.end206.2: ; preds = %if.then151.2, %if.then117.2, %if.end206.1
%191 = phi <3 x float> [ %add202.2, %if.then151.2 ], [ %41, %if.then117.2 ], [ %41, %if.end206.1 ]
%loadVec4200.2693 = phi <4 x float> [ %extractVec203.2, %if.then151.2 ], [ %loadVec4200.2, %if.then117.2 ], [ %loadVec4200.2, %if.end206.1 ]
%fcj_buf.sroa.0.1.2 = phi <4 x float> [ %extractVec193.2, %if.then151.2 ], [ %fcj_buf.sroa.0.1.1, %if.then117.2 ], [ %fcj_buf.sroa.0.1.1, %if.end206.1 ]
%and115.3 = and i32 %45, 8
%tobool116.3 = icmp eq i32 %and115.3, 0
br i1 %tobool116.3, label %if.end206.3, label %if.then117.3
if.then117.3: ; preds = %if.end206.2
%192 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx124.3.3, align 16, !tbaa !36
%193 = fsub <4 x float> %192, %51
%194 = extractelement <4 x float> %193, i32 0
%195 = extractelement <4 x float> %193, i32 1
%mul3.i.i.3 = fmul float %195, %195
%196 = tail call float @llvm.fmuladd.f32(float %194, float %194, float %mul3.i.i.3) #5
%197 = extractelement <4 x float> %193, i32 2
%198 = tail call float @llvm.fmuladd.f32(float %197, float %197, float %196) #5
%and137.3 = and i32 %47, 8
%tobool138.3 = icmp ne i32 %and137.3, 0
%cond.3 = select i1 %tobool138.3, float 1.000000e+00, float 0.000000e+00
%notrhs.3 = icmp ne i32 %30, %49
%not.or.cond.3 = or i1 %notlhs, %notrhs.3
%cmp145..3 = or i1 %cmp145, %not.or.cond.3
%conv147.3 = uitofp i1 %cmp145..3 to float
%mul148.3 = fmul float %conv147.3, %nbparam_params_rcoulomb_sq
%cmp149.3 = fcmp olt float %198, %mul148.3
br i1 %cmp149.3, label %if.then151.3, label %if.end206.3
if.then151.3: ; preds = %if.then117.3
%extractVec135.3 = shufflevector <4 x float> %193, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%199 = extractelement <4 x float> %192, i32 3
%200 = load i32, i32 addrspace(1)* %arrayidx152.3.3, align 4, !tbaa !41
%mul153.3 = mul nsw i32 %200, %ntypes
%add154.3 = add nsw i32 %mul153.3, %53
%mul155.3 = shl nsw i32 %add154.3, 1
%201 = sext i32 %mul155.3 to i64
%arrayidx156.3 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %201
%202 = load float, float addrspace(2)* %arrayidx156.3, align 4, !tbaa !39
%add160.3 = or i32 %mul155.3, 1
%203 = sext i32 %add160.3 to i64
%arrayidx161.3 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %203
%204 = load float, float addrspace(2)* %arrayidx161.3, align 4, !tbaa !39
%sub162.3 = fsub float 1.000000e+00, %cond.3
%205 = tail call float @llvm.fmuladd.f32(float %sub162.3, float 0x3D71979980000000, float %198)
%cmp.i.i.3 = fcmp olt float %205, 0.000000e+00
%call.i.i.3 = tail call float @llvm.sqrt.f32(float %205) #6
%call.i.i.op.3 = fdiv float 1.000000e+00, %call.i.i.3
%div165.3 = select i1 %cmp.i.i.3, float 0x7FF8000000000000, float %call.i.i.op.3
%mul166.3 = fmul float %div165.3, %div165.3
%mul167.3 = fmul float %mul166.3, %mul166.3
%mul168.3 = fmul float %mul166.3, %mul167.3
%mul169.3 = fmul float %cond.3, %mul168.3
%neg.3 = fsub float -0.000000e+00, %202
%206 = tail call float @llvm.fmuladd.f32(float %204, float %mul169.3, float %neg.3)
%mul171.3 = fmul float %mul169.3, %206
%mul172.3 = fmul float %mul166.3, %mul171.3
%mul173.3 = fmul float %52, %199
%mul174.3 = fmul float %cond.3, %mul166.3
%mul176.3 = fmul float %mul, %205
%mul.i.3 = fmul float %mul176.3, %mul176.3
%207 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.3, float 0x3FBDA79640000000) #5
%208 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.3, float 0x3FE03C5780000000) #5
%209 = tail call float @llvm.fmuladd.f32(float %207, float %mul.i.3, float 1.000000e+00) #5
%210 = tail call float @llvm.fmuladd.f32(float %208, float %mul176.3, float %209) #5
%div.i.3 = fdiv float 1.000000e+00, %210, !fpmath !46
%211 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.3, float 0xBF0BFF7260000000) #5
%212 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.3, float 0x3F50794180000000) #5
%213 = tail call float @llvm.fmuladd.f32(float %211, float %mul.i.3, float 0xBF93BDB200000000) #5
%214 = tail call float @llvm.fmuladd.f32(float %212, float %mul.i.3, float 0x3FB1D5E760000000) #5
%215 = tail call float @llvm.fmuladd.f32(float %213, float %mul.i.3, float 0xBFE81272E0000000) #5
%216 = tail call float @llvm.fmuladd.f32(float %214, float %mul176.3, float %215) #5
%mul11.i.3 = fmul float %216, %div.i.3
%mul178.3 = fmul float %mul19, %mul11.i.3
%217 = tail call float @llvm.fmuladd.f32(float %mul174.3, float %div165.3, float %mul178.3)
%218 = tail call float @llvm.fmuladd.f32(float %mul173.3, float %217, float %mul172.3)
%splat.splatinsert.3 = insertelement <3 x float> undef, float %218, i32 0
%splat.splat.3 = shufflevector <3 x float> %splat.splatinsert.3, <3 x float> undef, <3 x i32> zeroinitializer
%mul183.3 = fmul <3 x float> %extractVec135.3, %splat.splat.3
%extractVec191.3 = shufflevector <4 x float> %fcj_buf.sroa.0.1.2, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub192.3 = fsub <3 x float> %extractVec191.3, %mul183.3
%extractVec193.3 = shufflevector <3 x float> %sub192.3, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec201.3 = shufflevector <4 x float> %loadVec4200.3, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add202.3 = fadd <3 x float> %extractVec201.3, %mul183.3
%extractVec203.3 = shufflevector <3 x float> %add202.3, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end206.3
if.end206.3: ; preds = %if.then151.3, %if.then117.3, %if.end206.2
%219 = phi <3 x float> [ %add202.3, %if.then151.3 ], [ %40, %if.then117.3 ], [ %40, %if.end206.2 ]
%loadVec4200.3703 = phi <4 x float> [ %extractVec203.3, %if.then151.3 ], [ %loadVec4200.3, %if.then117.3 ], [ %loadVec4200.3, %if.end206.2 ]
%fcj_buf.sroa.0.1.3 = phi <4 x float> [ %extractVec193.3, %if.then151.3 ], [ %fcj_buf.sroa.0.1.2, %if.then117.3 ], [ %fcj_buf.sroa.0.1.2, %if.end206.2 ]
%and115.4 = and i32 %45, 16
%tobool116.4 = icmp eq i32 %and115.4, 0
br i1 %tobool116.4, label %if.end206.4, label %if.then117.4
if.then117.4: ; preds = %if.end206.3
%220 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx124.4.3, align 16, !tbaa !36
%221 = fsub <4 x float> %220, %51
%222 = extractelement <4 x float> %221, i32 0
%223 = extractelement <4 x float> %221, i32 1
%mul3.i.i.4 = fmul float %223, %223
%224 = tail call float @llvm.fmuladd.f32(float %222, float %222, float %mul3.i.i.4) #5
%225 = extractelement <4 x float> %221, i32 2
%226 = tail call float @llvm.fmuladd.f32(float %225, float %225, float %224) #5
%and137.4 = and i32 %47, 16
%tobool138.4 = icmp ne i32 %and137.4, 0
%cond.4 = select i1 %tobool138.4, float 1.000000e+00, float 0.000000e+00
%notrhs.4 = icmp ne i32 %28, %49
%not.or.cond.4 = or i1 %notlhs, %notrhs.4
%cmp145..4 = or i1 %cmp145, %not.or.cond.4
%conv147.4 = uitofp i1 %cmp145..4 to float
%mul148.4 = fmul float %conv147.4, %nbparam_params_rcoulomb_sq
%cmp149.4 = fcmp olt float %226, %mul148.4
br i1 %cmp149.4, label %if.then151.4, label %if.end206.4
if.then151.4: ; preds = %if.then117.4
%extractVec135.4 = shufflevector <4 x float> %221, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%227 = extractelement <4 x float> %220, i32 3
%228 = load i32, i32 addrspace(1)* %arrayidx152.4.3, align 4, !tbaa !41
%mul153.4 = mul nsw i32 %228, %ntypes
%add154.4 = add nsw i32 %mul153.4, %53
%mul155.4 = shl nsw i32 %add154.4, 1
%229 = sext i32 %mul155.4 to i64
%arrayidx156.4 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %229
%230 = load float, float addrspace(2)* %arrayidx156.4, align 4, !tbaa !39
%add160.4 = or i32 %mul155.4, 1
%231 = sext i32 %add160.4 to i64
%arrayidx161.4 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %231
%232 = load float, float addrspace(2)* %arrayidx161.4, align 4, !tbaa !39
%sub162.4 = fsub float 1.000000e+00, %cond.4
%233 = tail call float @llvm.fmuladd.f32(float %sub162.4, float 0x3D71979980000000, float %226)
%cmp.i.i.4 = fcmp olt float %233, 0.000000e+00
%call.i.i.4 = tail call float @llvm.sqrt.f32(float %233) #6
%call.i.i.op.4 = fdiv float 1.000000e+00, %call.i.i.4
%div165.4 = select i1 %cmp.i.i.4, float 0x7FF8000000000000, float %call.i.i.op.4
%mul166.4 = fmul float %div165.4, %div165.4
%mul167.4 = fmul float %mul166.4, %mul166.4
%mul168.4 = fmul float %mul166.4, %mul167.4
%mul169.4 = fmul float %cond.4, %mul168.4
%neg.4 = fsub float -0.000000e+00, %230
%234 = tail call float @llvm.fmuladd.f32(float %232, float %mul169.4, float %neg.4)
%mul171.4 = fmul float %mul169.4, %234
%mul172.4 = fmul float %mul166.4, %mul171.4
%mul173.4 = fmul float %52, %227
%mul174.4 = fmul float %cond.4, %mul166.4
%mul176.4 = fmul float %mul, %233
%mul.i.4 = fmul float %mul176.4, %mul176.4
%235 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.4, float 0x3FBDA79640000000) #5
%236 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.4, float 0x3FE03C5780000000) #5
%237 = tail call float @llvm.fmuladd.f32(float %235, float %mul.i.4, float 1.000000e+00) #5
%238 = tail call float @llvm.fmuladd.f32(float %236, float %mul176.4, float %237) #5
%div.i.4 = fdiv float 1.000000e+00, %238, !fpmath !46
%239 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.4, float 0xBF0BFF7260000000) #5
%240 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.4, float 0x3F50794180000000) #5
%241 = tail call float @llvm.fmuladd.f32(float %239, float %mul.i.4, float 0xBF93BDB200000000) #5
%242 = tail call float @llvm.fmuladd.f32(float %240, float %mul.i.4, float 0x3FB1D5E760000000) #5
%243 = tail call float @llvm.fmuladd.f32(float %241, float %mul.i.4, float 0xBFE81272E0000000) #5
%244 = tail call float @llvm.fmuladd.f32(float %242, float %mul176.4, float %243) #5
%mul11.i.4 = fmul float %244, %div.i.4
%mul178.4 = fmul float %mul19, %mul11.i.4
%245 = tail call float @llvm.fmuladd.f32(float %mul174.4, float %div165.4, float %mul178.4)
%246 = tail call float @llvm.fmuladd.f32(float %mul173.4, float %245, float %mul172.4)
%splat.splatinsert.4 = insertelement <3 x float> undef, float %246, i32 0
%splat.splat.4 = shufflevector <3 x float> %splat.splatinsert.4, <3 x float> undef, <3 x i32> zeroinitializer
%mul183.4 = fmul <3 x float> %extractVec135.4, %splat.splat.4
%extractVec191.4 = shufflevector <4 x float> %fcj_buf.sroa.0.1.3, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub192.4 = fsub <3 x float> %extractVec191.4, %mul183.4
%extractVec193.4 = shufflevector <3 x float> %sub192.4, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec201.4 = shufflevector <4 x float> %loadVec4200.4, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add202.4 = fadd <3 x float> %extractVec201.4, %mul183.4
%extractVec203.4 = shufflevector <3 x float> %add202.4, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end206.4
if.end206.4: ; preds = %if.then151.4, %if.then117.4, %if.end206.3
%247 = phi <3 x float> [ %add202.4, %if.then151.4 ], [ %39, %if.then117.4 ], [ %39, %if.end206.3 ]
%loadVec4200.4713 = phi <4 x float> [ %extractVec203.4, %if.then151.4 ], [ %loadVec4200.4, %if.then117.4 ], [ %loadVec4200.4, %if.end206.3 ]
%fcj_buf.sroa.0.1.4 = phi <4 x float> [ %extractVec193.4, %if.then151.4 ], [ %fcj_buf.sroa.0.1.3, %if.then117.4 ], [ %fcj_buf.sroa.0.1.3, %if.end206.3 ]
%and115.5 = and i32 %45, 32
%tobool116.5 = icmp eq i32 %and115.5, 0
br i1 %tobool116.5, label %if.end206.5, label %if.then117.5
if.then117.5: ; preds = %if.end206.4
%248 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx124.5.3, align 16, !tbaa !36
%249 = fsub <4 x float> %248, %51
%250 = extractelement <4 x float> %249, i32 0
%251 = extractelement <4 x float> %249, i32 1
%mul3.i.i.5 = fmul float %251, %251
%252 = tail call float @llvm.fmuladd.f32(float %250, float %250, float %mul3.i.i.5) #5
%253 = extractelement <4 x float> %249, i32 2
%254 = tail call float @llvm.fmuladd.f32(float %253, float %253, float %252) #5
%and137.5 = and i32 %47, 32
%tobool138.5 = icmp ne i32 %and137.5, 0
%cond.5 = select i1 %tobool138.5, float 1.000000e+00, float 0.000000e+00
%notrhs.5 = icmp ne i32 %26, %49
%not.or.cond.5 = or i1 %notlhs, %notrhs.5
%cmp145..5 = or i1 %cmp145, %not.or.cond.5
%conv147.5 = uitofp i1 %cmp145..5 to float
%mul148.5 = fmul float %conv147.5, %nbparam_params_rcoulomb_sq
%cmp149.5 = fcmp olt float %254, %mul148.5
br i1 %cmp149.5, label %if.then151.5, label %if.end206.5
if.then151.5: ; preds = %if.then117.5
%extractVec135.5 = shufflevector <4 x float> %249, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%255 = extractelement <4 x float> %248, i32 3
%256 = load i32, i32 addrspace(1)* %arrayidx152.5.3, align 4, !tbaa !41
%mul153.5 = mul nsw i32 %256, %ntypes
%add154.5 = add nsw i32 %mul153.5, %53
%mul155.5 = shl nsw i32 %add154.5, 1
%257 = sext i32 %mul155.5 to i64
%arrayidx156.5 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %257
%258 = load float, float addrspace(2)* %arrayidx156.5, align 4, !tbaa !39
%add160.5 = or i32 %mul155.5, 1
%259 = sext i32 %add160.5 to i64
%arrayidx161.5 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %259
%260 = load float, float addrspace(2)* %arrayidx161.5, align 4, !tbaa !39
%sub162.5 = fsub float 1.000000e+00, %cond.5
%261 = tail call float @llvm.fmuladd.f32(float %sub162.5, float 0x3D71979980000000, float %254)
%cmp.i.i.5 = fcmp olt float %261, 0.000000e+00
%call.i.i.5 = tail call float @llvm.sqrt.f32(float %261) #6
%call.i.i.op.5 = fdiv float 1.000000e+00, %call.i.i.5
%div165.5 = select i1 %cmp.i.i.5, float 0x7FF8000000000000, float %call.i.i.op.5
%mul166.5 = fmul float %div165.5, %div165.5
%mul167.5 = fmul float %mul166.5, %mul166.5
%mul168.5 = fmul float %mul166.5, %mul167.5
%mul169.5 = fmul float %cond.5, %mul168.5
%neg.5 = fsub float -0.000000e+00, %258
%262 = tail call float @llvm.fmuladd.f32(float %260, float %mul169.5, float %neg.5)
%mul171.5 = fmul float %mul169.5, %262
%mul172.5 = fmul float %mul166.5, %mul171.5
%mul173.5 = fmul float %52, %255
%mul174.5 = fmul float %cond.5, %mul166.5
%mul176.5 = fmul float %mul, %261
%mul.i.5 = fmul float %mul176.5, %mul176.5
%263 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.5, float 0x3FBDA79640000000) #5
%264 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.5, float 0x3FE03C5780000000) #5
%265 = tail call float @llvm.fmuladd.f32(float %263, float %mul.i.5, float 1.000000e+00) #5
%266 = tail call float @llvm.fmuladd.f32(float %264, float %mul176.5, float %265) #5
%div.i.5 = fdiv float 1.000000e+00, %266, !fpmath !46
%267 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.5, float 0xBF0BFF7260000000) #5
%268 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.5, float 0x3F50794180000000) #5
%269 = tail call float @llvm.fmuladd.f32(float %267, float %mul.i.5, float 0xBF93BDB200000000) #5
%270 = tail call float @llvm.fmuladd.f32(float %268, float %mul.i.5, float 0x3FB1D5E760000000) #5
%271 = tail call float @llvm.fmuladd.f32(float %269, float %mul.i.5, float 0xBFE81272E0000000) #5
%272 = tail call float @llvm.fmuladd.f32(float %270, float %mul176.5, float %271) #5
%mul11.i.5 = fmul float %272, %div.i.5
%mul178.5 = fmul float %mul19, %mul11.i.5
%273 = tail call float @llvm.fmuladd.f32(float %mul174.5, float %div165.5, float %mul178.5)
%274 = tail call float @llvm.fmuladd.f32(float %mul173.5, float %273, float %mul172.5)
%splat.splatinsert.5 = insertelement <3 x float> undef, float %274, i32 0
%splat.splat.5 = shufflevector <3 x float> %splat.splatinsert.5, <3 x float> undef, <3 x i32> zeroinitializer
%mul183.5 = fmul <3 x float> %extractVec135.5, %splat.splat.5
%extractVec191.5 = shufflevector <4 x float> %fcj_buf.sroa.0.1.4, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub192.5 = fsub <3 x float> %extractVec191.5, %mul183.5
%extractVec193.5 = shufflevector <3 x float> %sub192.5, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec201.5 = shufflevector <4 x float> %loadVec4200.5, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add202.5 = fadd <3 x float> %extractVec201.5, %mul183.5
%extractVec203.5 = shufflevector <3 x float> %add202.5, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end206.5
if.end206.5: ; preds = %if.then151.5, %if.then117.5, %if.end206.4
%275 = phi <3 x float> [ %add202.5, %if.then151.5 ], [ %38, %if.then117.5 ], [ %38, %if.end206.4 ]
%loadVec4200.5723 = phi <4 x float> [ %extractVec203.5, %if.then151.5 ], [ %loadVec4200.5, %if.then117.5 ], [ %loadVec4200.5, %if.end206.4 ]
%fcj_buf.sroa.0.1.5 = phi <4 x float> [ %extractVec193.5, %if.then151.5 ], [ %fcj_buf.sroa.0.1.4, %if.then117.5 ], [ %fcj_buf.sroa.0.1.4, %if.end206.4 ]
%and115.6 = and i32 %45, 64
%tobool116.6 = icmp eq i32 %and115.6, 0
br i1 %tobool116.6, label %if.end206.6, label %if.then117.6
if.then117.6: ; preds = %if.end206.5
%276 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx124.6.3, align 16, !tbaa !36
%277 = fsub <4 x float> %276, %51
%278 = extractelement <4 x float> %277, i32 0
%279 = extractelement <4 x float> %277, i32 1
%mul3.i.i.6 = fmul float %279, %279
%280 = tail call float @llvm.fmuladd.f32(float %278, float %278, float %mul3.i.i.6) #5
%281 = extractelement <4 x float> %277, i32 2
%282 = tail call float @llvm.fmuladd.f32(float %281, float %281, float %280) #5
%and137.6 = and i32 %47, 64
%tobool138.6 = icmp ne i32 %and137.6, 0
%cond.6 = select i1 %tobool138.6, float 1.000000e+00, float 0.000000e+00
%notrhs.6 = icmp ne i32 %24, %49
%not.or.cond.6 = or i1 %notlhs, %notrhs.6
%cmp145..6 = or i1 %cmp145, %not.or.cond.6
%conv147.6 = uitofp i1 %cmp145..6 to float
%mul148.6 = fmul float %conv147.6, %nbparam_params_rcoulomb_sq
%cmp149.6 = fcmp olt float %282, %mul148.6
br i1 %cmp149.6, label %if.then151.6, label %if.end206.6
if.then151.6: ; preds = %if.then117.6
%extractVec135.6 = shufflevector <4 x float> %277, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%283 = extractelement <4 x float> %276, i32 3
%284 = load i32, i32 addrspace(1)* %arrayidx152.6.3, align 4, !tbaa !41
%mul153.6 = mul nsw i32 %284, %ntypes
%add154.6 = add nsw i32 %mul153.6, %53
%mul155.6 = shl nsw i32 %add154.6, 1
%285 = sext i32 %mul155.6 to i64
%arrayidx156.6 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %285
%286 = load float, float addrspace(2)* %arrayidx156.6, align 4, !tbaa !39
%add160.6 = or i32 %mul155.6, 1
%287 = sext i32 %add160.6 to i64
%arrayidx161.6 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %287
%288 = load float, float addrspace(2)* %arrayidx161.6, align 4, !tbaa !39
%sub162.6 = fsub float 1.000000e+00, %cond.6
%289 = tail call float @llvm.fmuladd.f32(float %sub162.6, float 0x3D71979980000000, float %282)
%cmp.i.i.6 = fcmp olt float %289, 0.000000e+00
%call.i.i.6 = tail call float @llvm.sqrt.f32(float %289) #6
%call.i.i.op.6 = fdiv float 1.000000e+00, %call.i.i.6
%div165.6 = select i1 %cmp.i.i.6, float 0x7FF8000000000000, float %call.i.i.op.6
%mul166.6 = fmul float %div165.6, %div165.6
%mul167.6 = fmul float %mul166.6, %mul166.6
%mul168.6 = fmul float %mul166.6, %mul167.6
%mul169.6 = fmul float %cond.6, %mul168.6
%neg.6 = fsub float -0.000000e+00, %286
%290 = tail call float @llvm.fmuladd.f32(float %288, float %mul169.6, float %neg.6)
%mul171.6 = fmul float %mul169.6, %290
%mul172.6 = fmul float %mul166.6, %mul171.6
%mul173.6 = fmul float %52, %283
%mul174.6 = fmul float %cond.6, %mul166.6
%mul176.6 = fmul float %mul, %289
%mul.i.6 = fmul float %mul176.6, %mul176.6
%291 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.6, float 0x3FBDA79640000000) #5
%292 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.6, float 0x3FE03C5780000000) #5
%293 = tail call float @llvm.fmuladd.f32(float %291, float %mul.i.6, float 1.000000e+00) #5
%294 = tail call float @llvm.fmuladd.f32(float %292, float %mul176.6, float %293) #5
%div.i.6 = fdiv float 1.000000e+00, %294, !fpmath !46
%295 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.6, float 0xBF0BFF7260000000) #5
%296 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.6, float 0x3F50794180000000) #5
%297 = tail call float @llvm.fmuladd.f32(float %295, float %mul.i.6, float 0xBF93BDB200000000) #5
%298 = tail call float @llvm.fmuladd.f32(float %296, float %mul.i.6, float 0x3FB1D5E760000000) #5
%299 = tail call float @llvm.fmuladd.f32(float %297, float %mul.i.6, float 0xBFE81272E0000000) #5
%300 = tail call float @llvm.fmuladd.f32(float %298, float %mul176.6, float %299) #5
%mul11.i.6 = fmul float %300, %div.i.6
%mul178.6 = fmul float %mul19, %mul11.i.6
%301 = tail call float @llvm.fmuladd.f32(float %mul174.6, float %div165.6, float %mul178.6)
%302 = tail call float @llvm.fmuladd.f32(float %mul173.6, float %301, float %mul172.6)
%splat.splatinsert.6 = insertelement <3 x float> undef, float %302, i32 0
%splat.splat.6 = shufflevector <3 x float> %splat.splatinsert.6, <3 x float> undef, <3 x i32> zeroinitializer
%mul183.6 = fmul <3 x float> %extractVec135.6, %splat.splat.6
%extractVec191.6 = shufflevector <4 x float> %fcj_buf.sroa.0.1.5, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub192.6 = fsub <3 x float> %extractVec191.6, %mul183.6
%extractVec193.6 = shufflevector <3 x float> %sub192.6, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec201.6 = shufflevector <4 x float> %loadVec4200.6, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add202.6 = fadd <3 x float> %extractVec201.6, %mul183.6
%extractVec203.6 = shufflevector <3 x float> %add202.6, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end206.6
if.end206.6: ; preds = %if.then151.6, %if.then117.6, %if.end206.5
%303 = phi <3 x float> [ %add202.6, %if.then151.6 ], [ %37, %if.then117.6 ], [ %37, %if.end206.5 ]
%loadVec4200.6733 = phi <4 x float> [ %extractVec203.6, %if.then151.6 ], [ %loadVec4200.6, %if.then117.6 ], [ %loadVec4200.6, %if.end206.5 ]
%fcj_buf.sroa.0.1.6 = phi <4 x float> [ %extractVec193.6, %if.then151.6 ], [ %fcj_buf.sroa.0.1.5, %if.then117.6 ], [ %fcj_buf.sroa.0.1.5, %if.end206.5 ]
%and115.7 = and i32 %45, 128
%tobool116.7 = icmp eq i32 %and115.7, 0
br i1 %tobool116.7, label %if.end206.7, label %if.then117.7
if.then117.7: ; preds = %if.end206.6
%304 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx124.7.3, align 16, !tbaa !36
%305 = fsub <4 x float> %304, %51
%306 = extractelement <4 x float> %305, i32 0
%307 = extractelement <4 x float> %305, i32 1
%mul3.i.i.7 = fmul float %307, %307
%308 = tail call float @llvm.fmuladd.f32(float %306, float %306, float %mul3.i.i.7) #5
%309 = extractelement <4 x float> %305, i32 2
%310 = tail call float @llvm.fmuladd.f32(float %309, float %309, float %308) #5
%and137.7 = and i32 %47, 128
%tobool138.7 = icmp ne i32 %and137.7, 0
%cond.7 = select i1 %tobool138.7, float 1.000000e+00, float 0.000000e+00
%notrhs.7 = icmp ne i32 %22, %49
%not.or.cond.7 = or i1 %notlhs, %notrhs.7
%cmp145..7 = or i1 %cmp145, %not.or.cond.7
%conv147.7 = uitofp i1 %cmp145..7 to float
%mul148.7 = fmul float %conv147.7, %nbparam_params_rcoulomb_sq
%cmp149.7 = fcmp olt float %310, %mul148.7
br i1 %cmp149.7, label %if.then151.7, label %if.end206.7
if.then151.7: ; preds = %if.then117.7
%extractVec135.7 = shufflevector <4 x float> %305, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%311 = extractelement <4 x float> %304, i32 3
%312 = load i32, i32 addrspace(1)* %arrayidx152.7.3, align 4, !tbaa !41
%mul153.7 = mul nsw i32 %312, %ntypes
%add154.7 = add nsw i32 %mul153.7, %53
%mul155.7 = shl nsw i32 %add154.7, 1
%313 = sext i32 %mul155.7 to i64
%arrayidx156.7 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %313
%314 = load float, float addrspace(2)* %arrayidx156.7, align 4, !tbaa !39
%add160.7 = or i32 %mul155.7, 1
%315 = sext i32 %add160.7 to i64
%arrayidx161.7 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %315
%316 = load float, float addrspace(2)* %arrayidx161.7, align 4, !tbaa !39
%sub162.7 = fsub float 1.000000e+00, %cond.7
%317 = tail call float @llvm.fmuladd.f32(float %sub162.7, float 0x3D71979980000000, float %310)
%cmp.i.i.7 = fcmp olt float %317, 0.000000e+00
%call.i.i.7 = tail call float @llvm.sqrt.f32(float %317) #6
%call.i.i.op.7 = fdiv float 1.000000e+00, %call.i.i.7
%div165.7 = select i1 %cmp.i.i.7, float 0x7FF8000000000000, float %call.i.i.op.7
%mul166.7 = fmul float %div165.7, %div165.7
%mul167.7 = fmul float %mul166.7, %mul166.7
%mul168.7 = fmul float %mul166.7, %mul167.7
%mul169.7 = fmul float %cond.7, %mul168.7
%neg.7 = fsub float -0.000000e+00, %314
%318 = tail call float @llvm.fmuladd.f32(float %316, float %mul169.7, float %neg.7)
%mul171.7 = fmul float %mul169.7, %318
%mul172.7 = fmul float %mul166.7, %mul171.7
%mul173.7 = fmul float %52, %311
%mul174.7 = fmul float %cond.7, %mul166.7
%mul176.7 = fmul float %mul, %317
%mul.i.7 = fmul float %mul176.7, %mul176.7
%319 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.7, float 0x3FBDA79640000000) #5
%320 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.7, float 0x3FE03C5780000000) #5
%321 = tail call float @llvm.fmuladd.f32(float %319, float %mul.i.7, float 1.000000e+00) #5
%322 = tail call float @llvm.fmuladd.f32(float %320, float %mul176.7, float %321) #5
%div.i.7 = fdiv float 1.000000e+00, %322, !fpmath !46
%323 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.7, float 0xBF0BFF7260000000) #5
%324 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.7, float 0x3F50794180000000) #5
%325 = tail call float @llvm.fmuladd.f32(float %323, float %mul.i.7, float 0xBF93BDB200000000) #5
%326 = tail call float @llvm.fmuladd.f32(float %324, float %mul.i.7, float 0x3FB1D5E760000000) #5
%327 = tail call float @llvm.fmuladd.f32(float %325, float %mul.i.7, float 0xBFE81272E0000000) #5
%328 = tail call float @llvm.fmuladd.f32(float %326, float %mul176.7, float %327) #5
%mul11.i.7 = fmul float %328, %div.i.7
%mul178.7 = fmul float %mul19, %mul11.i.7
%329 = tail call float @llvm.fmuladd.f32(float %mul174.7, float %div165.7, float %mul178.7)
%330 = tail call float @llvm.fmuladd.f32(float %mul173.7, float %329, float %mul172.7)
%splat.splatinsert.7 = insertelement <3 x float> undef, float %330, i32 0
%splat.splat.7 = shufflevector <3 x float> %splat.splatinsert.7, <3 x float> undef, <3 x i32> zeroinitializer
%mul183.7 = fmul <3 x float> %extractVec135.7, %splat.splat.7
%extractVec191.7 = shufflevector <4 x float> %fcj_buf.sroa.0.1.6, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub192.7 = fsub <3 x float> %extractVec191.7, %mul183.7
%extractVec193.7 = shufflevector <3 x float> %sub192.7, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec201.7 = shufflevector <4 x float> %loadVec4200.7, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add202.7 = fadd <3 x float> %extractVec201.7, %mul183.7
%extractVec203.7 = shufflevector <3 x float> %add202.7, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end206.7
if.end206.7: ; preds = %if.then151.7, %if.then117.7, %if.end206.6
%fci_buf.sroa.37.4 = phi <4 x float> [ %fci_buf.sroa.37.0, %if.end206.6 ], [ %extractVec203.7, %if.then151.7 ], [ %fci_buf.sroa.37.0, %if.then117.7 ]
%loadVec4200.7743 = phi <4 x float> [ %loadVec4200.7, %if.end206.6 ], [ %extractVec203.7, %if.then151.7 ], [ %loadVec4200.7, %if.then117.7 ]
%fcj_buf.sroa.0.1.7 = phi <4 x float> [ %fcj_buf.sroa.0.1.6, %if.end206.6 ], [ %extractVec193.7, %if.then151.7 ], [ %fcj_buf.sroa.0.1.6, %if.then117.7 ]
%331 = extractelement <4 x float> %fcj_buf.sroa.0.1.7, i32 0
store float %331, float addrspace(3)* %arrayidx211, align 4, !tbaa !39
%332 = extractelement <4 x float> %fcj_buf.sroa.0.1.7, i32 1
store float %332, float addrspace(3)* %arrayidx213, align 4, !tbaa !39
%333 = extractelement <4 x float> %fcj_buf.sroa.0.1.7, i32 2
store float %333, float addrspace(3)* %arrayidx215, align 4, !tbaa !39
tail call fastcc void @reduce_force_j_generic(float addrspace(3)* %2, float addrspace(1)* %f, i32 %x.i, i32 %y.i, i32 %add106)
br label %for.inc217
if.then96.1: ; preds = %for.inc217
%334 = load i32, i32 addrspace(3)* %arrayidx104.1, align 4, !tbaa !41
%mul105.1 = shl nsw i32 %334, 3
%add106.1 = add i32 %mul105.1, %y.i
%335 = sext i32 %add106.1 to i64
%arrayidx107.1 = getelementptr inbounds <4 x float>, <4 x float> addrspace(1)* %xq, i64 %335
%336 = load <4 x float>, <4 x float> addrspace(1)* %arrayidx107.1, align 16, !tbaa !36
%337 = extractelement <4 x float> %336, i32 3
%arrayidx109.1 = getelementptr inbounds i32, i32 addrspace(1)* %atom_types, i64 %335
%338 = load i32, i32 addrspace(1)* %arrayidx109.1, align 4, !tbaa !41
%and115.1489 = and i32 %45, 256
%tobool116.1490 = icmp eq i32 %and115.1489, 0
br i1 %tobool116.1490, label %if.end206.1546, label %if.then117.1502
if.then117.1502: ; preds = %if.then96.1
%339 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx124.3607, align 16, !tbaa !36
%340 = fsub <4 x float> %339, %336
%341 = extractelement <4 x float> %340, i32 0
%342 = extractelement <4 x float> %340, i32 1
%mul3.i.i.1492 = fmul float %342, %342
%343 = tail call float @llvm.fmuladd.f32(float %341, float %341, float %mul3.i.i.1492) #5
%344 = extractelement <4 x float> %340, i32 2
%345 = tail call float @llvm.fmuladd.f32(float %344, float %344, float %343) #5
%and137.1493 = and i32 %47, 256
%tobool138.1494 = icmp ne i32 %and137.1493, 0
%cond.1495 = select i1 %tobool138.1494, float 1.000000e+00, float 0.000000e+00
%notrhs.1496 = icmp ne i32 %mul29, %334
%not.or.cond.1497 = or i1 %notlhs, %notrhs.1496
%cmp145..1498 = or i1 %cmp145, %not.or.cond.1497
%conv147.1499 = uitofp i1 %cmp145..1498 to float
%mul148.1500 = fmul float %conv147.1499, %nbparam_params_rcoulomb_sq
%cmp149.1501 = fcmp olt float %345, %mul148.1500
br i1 %cmp149.1501, label %if.then151.1543, label %if.end206.1546
if.then151.1543: ; preds = %if.then117.1502
%extractVec135.1503 = shufflevector <4 x float> %340, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%346 = extractelement <4 x float> %339, i32 3
%347 = load i32, i32 addrspace(1)* %arrayidx152.3622, align 4, !tbaa !41
%mul153.1507 = mul nsw i32 %347, %ntypes
%add154.1508 = add nsw i32 %mul153.1507, %338
%mul155.1509 = shl nsw i32 %add154.1508, 1
%348 = sext i32 %mul155.1509 to i64
%arrayidx156.1510 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %348
%349 = load float, float addrspace(2)* %arrayidx156.1510, align 4, !tbaa !39
%add160.1511 = or i32 %mul155.1509, 1
%350 = sext i32 %add160.1511 to i64
%arrayidx161.1512 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %350
%351 = load float, float addrspace(2)* %arrayidx161.1512, align 4, !tbaa !39
%sub162.1513 = fsub float 1.000000e+00, %cond.1495
%352 = tail call float @llvm.fmuladd.f32(float %sub162.1513, float 0x3D71979980000000, float %345)
%cmp.i.i.1514 = fcmp olt float %352, 0.000000e+00
%call.i.i.1515 = tail call float @llvm.sqrt.f32(float %352) #6
%call.i.i.op.1516 = fdiv float 1.000000e+00, %call.i.i.1515
%div165.1517 = select i1 %cmp.i.i.1514, float 0x7FF8000000000000, float %call.i.i.op.1516
%mul166.1518 = fmul float %div165.1517, %div165.1517
%mul167.1519 = fmul float %mul166.1518, %mul166.1518
%mul168.1520 = fmul float %mul166.1518, %mul167.1519
%mul169.1521 = fmul float %cond.1495, %mul168.1520
%neg.1522 = fsub float -0.000000e+00, %349
%353 = tail call float @llvm.fmuladd.f32(float %351, float %mul169.1521, float %neg.1522)
%mul171.1523 = fmul float %mul169.1521, %353
%mul172.1524 = fmul float %mul166.1518, %mul171.1523
%mul173.1525 = fmul float %337, %346
%mul174.1526 = fmul float %cond.1495, %mul166.1518
%mul176.1527 = fmul float %mul, %352
%mul.i.1528 = fmul float %mul176.1527, %mul176.1527
%354 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.1528, float 0x3FBDA79640000000) #5
%355 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.1528, float 0x3FE03C5780000000) #5
%356 = tail call float @llvm.fmuladd.f32(float %354, float %mul.i.1528, float 1.000000e+00) #5
%357 = tail call float @llvm.fmuladd.f32(float %355, float %mul176.1527, float %356) #5
%div.i.1529 = fdiv float 1.000000e+00, %357, !fpmath !46
%358 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.1528, float 0xBF0BFF7260000000) #5
%359 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.1528, float 0x3F50794180000000) #5
%360 = tail call float @llvm.fmuladd.f32(float %358, float %mul.i.1528, float 0xBF93BDB200000000) #5
%361 = tail call float @llvm.fmuladd.f32(float %359, float %mul.i.1528, float 0x3FB1D5E760000000) #5
%362 = tail call float @llvm.fmuladd.f32(float %360, float %mul.i.1528, float 0xBFE81272E0000000) #5
%363 = tail call float @llvm.fmuladd.f32(float %361, float %mul176.1527, float %362) #5
%mul11.i.1530 = fmul float %363, %div.i.1529
%mul178.1531 = fmul float %mul19, %mul11.i.1530
%364 = tail call float @llvm.fmuladd.f32(float %mul174.1526, float %div165.1517, float %mul178.1531)
%365 = tail call float @llvm.fmuladd.f32(float %mul173.1525, float %364, float %mul172.1524)
%splat.splatinsert.1532 = insertelement <3 x float> undef, float %365, i32 0
%splat.splat.1533 = shufflevector <3 x float> %splat.splatinsert.1532, <3 x float> undef, <3 x i32> zeroinitializer
%mul183.1534 = fmul <3 x float> %extractVec135.1503, %splat.splat.1533
%sub192.1535 = fsub <3 x float> zeroinitializer, %mul183.1534
%extractVec193.1536 = shufflevector <3 x float> %sub192.1535, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec201.1540 = shufflevector <4 x float> %loadVec4200.1539, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add202.1541 = fadd <3 x float> %extractVec201.1540, %mul183.1534
%extractVec203.1542 = shufflevector <3 x float> %add202.1541, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end206.1546
if.end206.1546: ; preds = %if.then151.1543, %if.then117.1502, %if.then96.1
%366 = phi <3 x float> [ %add202.1541, %if.then151.1543 ], [ %88, %if.then117.1502 ], [ %88, %if.then96.1 ]
%loadVec4200664 = phi <4 x float> [ %extractVec203.1542, %if.then151.1543 ], [ %loadVec4200.1539, %if.then117.1502 ], [ %loadVec4200.1539, %if.then96.1 ]
%fcj_buf.sroa.0.1.1544 = phi <4 x float> [ %extractVec193.1536, %if.then151.1543 ], [ <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float undef>, %if.then117.1502 ], [ <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float undef>, %if.then96.1 ]
%and115.1.1 = and i32 %45, 512
%tobool116.1.1 = icmp eq i32 %and115.1.1, 0
br i1 %tobool116.1.1, label %if.end206.1.1, label %if.then117.1.1
if.then117.1.1: ; preds = %if.end206.1546
%367 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx124.1.3, align 16, !tbaa !36
%368 = fsub <4 x float> %367, %336
%369 = extractelement <4 x float> %368, i32 0
%370 = extractelement <4 x float> %368, i32 1
%mul3.i.i.1.1 = fmul float %370, %370
%371 = tail call float @llvm.fmuladd.f32(float %369, float %369, float %mul3.i.i.1.1) #5
%372 = extractelement <4 x float> %368, i32 2
%373 = tail call float @llvm.fmuladd.f32(float %372, float %372, float %371) #5
%and137.1.1 = and i32 %47, 512
%tobool138.1.1 = icmp ne i32 %and137.1.1, 0
%cond.1.1 = select i1 %tobool138.1.1, float 1.000000e+00, float 0.000000e+00
%notrhs.1.1 = icmp ne i32 %34, %334
%not.or.cond.1.1 = or i1 %notlhs, %notrhs.1.1
%cmp145..1.1 = or i1 %cmp145, %not.or.cond.1.1
%conv147.1.1 = uitofp i1 %cmp145..1.1 to float
%mul148.1.1 = fmul float %conv147.1.1, %nbparam_params_rcoulomb_sq
%cmp149.1.1 = fcmp olt float %373, %mul148.1.1
br i1 %cmp149.1.1, label %if.then151.1.1, label %if.end206.1.1
if.then151.1.1: ; preds = %if.then117.1.1
%extractVec135.1.1 = shufflevector <4 x float> %368, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%374 = extractelement <4 x float> %367, i32 3
%375 = load i32, i32 addrspace(1)* %arrayidx152.1.3, align 4, !tbaa !41
%mul153.1.1 = mul nsw i32 %375, %ntypes
%add154.1.1 = add nsw i32 %mul153.1.1, %338
%mul155.1.1 = shl nsw i32 %add154.1.1, 1
%376 = sext i32 %mul155.1.1 to i64
%arrayidx156.1.1 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %376
%377 = load float, float addrspace(2)* %arrayidx156.1.1, align 4, !tbaa !39
%add160.1.1 = or i32 %mul155.1.1, 1
%378 = sext i32 %add160.1.1 to i64
%arrayidx161.1.1 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %378
%379 = load float, float addrspace(2)* %arrayidx161.1.1, align 4, !tbaa !39
%sub162.1.1 = fsub float 1.000000e+00, %cond.1.1
%380 = tail call float @llvm.fmuladd.f32(float %sub162.1.1, float 0x3D71979980000000, float %373)
%cmp.i.i.1.1 = fcmp olt float %380, 0.000000e+00
%call.i.i.1.1 = tail call float @llvm.sqrt.f32(float %380) #6
%call.i.i.op.1.1 = fdiv float 1.000000e+00, %call.i.i.1.1
%div165.1.1 = select i1 %cmp.i.i.1.1, float 0x7FF8000000000000, float %call.i.i.op.1.1
%mul166.1.1 = fmul float %div165.1.1, %div165.1.1
%mul167.1.1 = fmul float %mul166.1.1, %mul166.1.1
%mul168.1.1 = fmul float %mul166.1.1, %mul167.1.1
%mul169.1.1 = fmul float %cond.1.1, %mul168.1.1
%neg.1.1 = fsub float -0.000000e+00, %377
%381 = tail call float @llvm.fmuladd.f32(float %379, float %mul169.1.1, float %neg.1.1)
%mul171.1.1 = fmul float %mul169.1.1, %381
%mul172.1.1 = fmul float %mul166.1.1, %mul171.1.1
%mul173.1.1 = fmul float %337, %374
%mul174.1.1 = fmul float %cond.1.1, %mul166.1.1
%mul176.1.1 = fmul float %mul, %380
%mul.i.1.1 = fmul float %mul176.1.1, %mul176.1.1
%382 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.1.1, float 0x3FBDA79640000000) #5
%383 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.1.1, float 0x3FE03C5780000000) #5
%384 = tail call float @llvm.fmuladd.f32(float %382, float %mul.i.1.1, float 1.000000e+00) #5
%385 = tail call float @llvm.fmuladd.f32(float %383, float %mul176.1.1, float %384) #5
%div.i.1.1 = fdiv float 1.000000e+00, %385, !fpmath !46
%386 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.1.1, float 0xBF0BFF7260000000) #5
%387 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.1.1, float 0x3F50794180000000) #5
%388 = tail call float @llvm.fmuladd.f32(float %386, float %mul.i.1.1, float 0xBF93BDB200000000) #5
%389 = tail call float @llvm.fmuladd.f32(float %387, float %mul.i.1.1, float 0x3FB1D5E760000000) #5
%390 = tail call float @llvm.fmuladd.f32(float %388, float %mul.i.1.1, float 0xBFE81272E0000000) #5
%391 = tail call float @llvm.fmuladd.f32(float %389, float %mul176.1.1, float %390) #5
%mul11.i.1.1 = fmul float %391, %div.i.1.1
%mul178.1.1 = fmul float %mul19, %mul11.i.1.1
%392 = tail call float @llvm.fmuladd.f32(float %mul174.1.1, float %div165.1.1, float %mul178.1.1)
%393 = tail call float @llvm.fmuladd.f32(float %mul173.1.1, float %392, float %mul172.1.1)
%splat.splatinsert.1.1 = insertelement <3 x float> undef, float %393, i32 0
%splat.splat.1.1 = shufflevector <3 x float> %splat.splatinsert.1.1, <3 x float> undef, <3 x i32> zeroinitializer
%mul183.1.1 = fmul <3 x float> %extractVec135.1.1, %splat.splat.1.1
%extractVec191.1.1 = shufflevector <4 x float> %fcj_buf.sroa.0.1.1544, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub192.1.1 = fsub <3 x float> %extractVec191.1.1, %mul183.1.1
%extractVec193.1.1 = shufflevector <3 x float> %sub192.1.1, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec201.1.1 = shufflevector <4 x float> %loadVec4200.1.1, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add202.1.1 = fadd <3 x float> %extractVec201.1.1, %mul183.1.1
%extractVec203.1.1 = shufflevector <3 x float> %add202.1.1, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end206.1.1
if.end206.1.1: ; preds = %if.then151.1.1, %if.then117.1.1, %if.end206.1546
%394 = phi <3 x float> [ %add202.1.1, %if.then151.1.1 ], [ %87, %if.then117.1.1 ], [ %87, %if.end206.1546 ]
%loadVec4200.1674 = phi <4 x float> [ %extractVec203.1.1, %if.then151.1.1 ], [ %loadVec4200.1.1, %if.then117.1.1 ], [ %loadVec4200.1.1, %if.end206.1546 ]
%fcj_buf.sroa.0.1.1.1 = phi <4 x float> [ %extractVec193.1.1, %if.then151.1.1 ], [ %fcj_buf.sroa.0.1.1544, %if.then117.1.1 ], [ %fcj_buf.sroa.0.1.1544, %if.end206.1546 ]
%and115.2.1 = and i32 %45, 1024
%tobool116.2.1 = icmp eq i32 %and115.2.1, 0
br i1 %tobool116.2.1, label %if.end206.2.1, label %if.then117.2.1
if.then117.2.1: ; preds = %if.end206.1.1
%395 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx124.2.3, align 16, !tbaa !36
%396 = fsub <4 x float> %395, %336
%397 = extractelement <4 x float> %396, i32 0
%398 = extractelement <4 x float> %396, i32 1
%mul3.i.i.2.1 = fmul float %398, %398
%399 = tail call float @llvm.fmuladd.f32(float %397, float %397, float %mul3.i.i.2.1) #5
%400 = extractelement <4 x float> %396, i32 2
%401 = tail call float @llvm.fmuladd.f32(float %400, float %400, float %399) #5
%and137.2.1 = and i32 %47, 1024
%tobool138.2.1 = icmp ne i32 %and137.2.1, 0
%cond.2.1 = select i1 %tobool138.2.1, float 1.000000e+00, float 0.000000e+00
%notrhs.2.1 = icmp ne i32 %32, %334
%not.or.cond.2.1 = or i1 %notlhs, %notrhs.2.1
%cmp145..2.1 = or i1 %cmp145, %not.or.cond.2.1
%conv147.2.1 = uitofp i1 %cmp145..2.1 to float
%mul148.2.1 = fmul float %conv147.2.1, %nbparam_params_rcoulomb_sq
%cmp149.2.1 = fcmp olt float %401, %mul148.2.1
br i1 %cmp149.2.1, label %if.then151.2.1, label %if.end206.2.1
if.then151.2.1: ; preds = %if.then117.2.1
%extractVec135.2.1 = shufflevector <4 x float> %396, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%402 = extractelement <4 x float> %395, i32 3
%403 = load i32, i32 addrspace(1)* %arrayidx152.2.3, align 4, !tbaa !41
%mul153.2.1 = mul nsw i32 %403, %ntypes
%add154.2.1 = add nsw i32 %mul153.2.1, %338
%mul155.2.1 = shl nsw i32 %add154.2.1, 1
%404 = sext i32 %mul155.2.1 to i64
%arrayidx156.2.1 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %404
%405 = load float, float addrspace(2)* %arrayidx156.2.1, align 4, !tbaa !39
%add160.2.1 = or i32 %mul155.2.1, 1
%406 = sext i32 %add160.2.1 to i64
%arrayidx161.2.1 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %406
%407 = load float, float addrspace(2)* %arrayidx161.2.1, align 4, !tbaa !39
%sub162.2.1 = fsub float 1.000000e+00, %cond.2.1
%408 = tail call float @llvm.fmuladd.f32(float %sub162.2.1, float 0x3D71979980000000, float %401)
%cmp.i.i.2.1 = fcmp olt float %408, 0.000000e+00
%call.i.i.2.1 = tail call float @llvm.sqrt.f32(float %408) #6
%call.i.i.op.2.1 = fdiv float 1.000000e+00, %call.i.i.2.1
%div165.2.1 = select i1 %cmp.i.i.2.1, float 0x7FF8000000000000, float %call.i.i.op.2.1
%mul166.2.1 = fmul float %div165.2.1, %div165.2.1
%mul167.2.1 = fmul float %mul166.2.1, %mul166.2.1
%mul168.2.1 = fmul float %mul166.2.1, %mul167.2.1
%mul169.2.1 = fmul float %cond.2.1, %mul168.2.1
%neg.2.1 = fsub float -0.000000e+00, %405
%409 = tail call float @llvm.fmuladd.f32(float %407, float %mul169.2.1, float %neg.2.1)
%mul171.2.1 = fmul float %mul169.2.1, %409
%mul172.2.1 = fmul float %mul166.2.1, %mul171.2.1
%mul173.2.1 = fmul float %337, %402
%mul174.2.1 = fmul float %cond.2.1, %mul166.2.1
%mul176.2.1 = fmul float %mul, %408
%mul.i.2.1 = fmul float %mul176.2.1, %mul176.2.1
%410 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.2.1, float 0x3FBDA79640000000) #5
%411 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.2.1, float 0x3FE03C5780000000) #5
%412 = tail call float @llvm.fmuladd.f32(float %410, float %mul.i.2.1, float 1.000000e+00) #5
%413 = tail call float @llvm.fmuladd.f32(float %411, float %mul176.2.1, float %412) #5
%div.i.2.1 = fdiv float 1.000000e+00, %413, !fpmath !46
%414 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.2.1, float 0xBF0BFF7260000000) #5
%415 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.2.1, float 0x3F50794180000000) #5
%416 = tail call float @llvm.fmuladd.f32(float %414, float %mul.i.2.1, float 0xBF93BDB200000000) #5
%417 = tail call float @llvm.fmuladd.f32(float %415, float %mul.i.2.1, float 0x3FB1D5E760000000) #5
%418 = tail call float @llvm.fmuladd.f32(float %416, float %mul.i.2.1, float 0xBFE81272E0000000) #5
%419 = tail call float @llvm.fmuladd.f32(float %417, float %mul176.2.1, float %418) #5
%mul11.i.2.1 = fmul float %419, %div.i.2.1
%mul178.2.1 = fmul float %mul19, %mul11.i.2.1
%420 = tail call float @llvm.fmuladd.f32(float %mul174.2.1, float %div165.2.1, float %mul178.2.1)
%421 = tail call float @llvm.fmuladd.f32(float %mul173.2.1, float %420, float %mul172.2.1)
%splat.splatinsert.2.1 = insertelement <3 x float> undef, float %421, i32 0
%splat.splat.2.1 = shufflevector <3 x float> %splat.splatinsert.2.1, <3 x float> undef, <3 x i32> zeroinitializer
%mul183.2.1 = fmul <3 x float> %extractVec135.2.1, %splat.splat.2.1
%extractVec191.2.1 = shufflevector <4 x float> %fcj_buf.sroa.0.1.1.1, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub192.2.1 = fsub <3 x float> %extractVec191.2.1, %mul183.2.1
%extractVec193.2.1 = shufflevector <3 x float> %sub192.2.1, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec201.2.1 = shufflevector <4 x float> %loadVec4200.2.1, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add202.2.1 = fadd <3 x float> %extractVec201.2.1, %mul183.2.1
%extractVec203.2.1 = shufflevector <3 x float> %add202.2.1, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end206.2.1
if.end206.2.1: ; preds = %if.then151.2.1, %if.then117.2.1, %if.end206.1.1
%422 = phi <3 x float> [ %add202.2.1, %if.then151.2.1 ], [ %86, %if.then117.2.1 ], [ %86, %if.end206.1.1 ]
%loadVec4200.2684 = phi <4 x float> [ %extractVec203.2.1, %if.then151.2.1 ], [ %loadVec4200.2.1, %if.then117.2.1 ], [ %loadVec4200.2.1, %if.end206.1.1 ]
%fcj_buf.sroa.0.1.2.1 = phi <4 x float> [ %extractVec193.2.1, %if.then151.2.1 ], [ %fcj_buf.sroa.0.1.1.1, %if.then117.2.1 ], [ %fcj_buf.sroa.0.1.1.1, %if.end206.1.1 ]
%and115.3.1 = and i32 %45, 2048
%tobool116.3.1 = icmp eq i32 %and115.3.1, 0
br i1 %tobool116.3.1, label %if.end206.3.1, label %if.then117.3.1
if.then117.3.1: ; preds = %if.end206.2.1
%423 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx124.3.3, align 16, !tbaa !36
%424 = fsub <4 x float> %423, %336
%425 = extractelement <4 x float> %424, i32 0
%426 = extractelement <4 x float> %424, i32 1
%mul3.i.i.3.1 = fmul float %426, %426
%427 = tail call float @llvm.fmuladd.f32(float %425, float %425, float %mul3.i.i.3.1) #5
%428 = extractelement <4 x float> %424, i32 2
%429 = tail call float @llvm.fmuladd.f32(float %428, float %428, float %427) #5
%and137.3.1 = and i32 %47, 2048
%tobool138.3.1 = icmp ne i32 %and137.3.1, 0
%cond.3.1 = select i1 %tobool138.3.1, float 1.000000e+00, float 0.000000e+00
%notrhs.3.1 = icmp ne i32 %30, %334
%not.or.cond.3.1 = or i1 %notlhs, %notrhs.3.1
%cmp145..3.1 = or i1 %cmp145, %not.or.cond.3.1
%conv147.3.1 = uitofp i1 %cmp145..3.1 to float
%mul148.3.1 = fmul float %conv147.3.1, %nbparam_params_rcoulomb_sq
%cmp149.3.1 = fcmp olt float %429, %mul148.3.1
br i1 %cmp149.3.1, label %if.then151.3.1, label %if.end206.3.1
if.then151.3.1: ; preds = %if.then117.3.1
%extractVec135.3.1 = shufflevector <4 x float> %424, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%430 = extractelement <4 x float> %423, i32 3
%431 = load i32, i32 addrspace(1)* %arrayidx152.3.3, align 4, !tbaa !41
%mul153.3.1 = mul nsw i32 %431, %ntypes
%add154.3.1 = add nsw i32 %mul153.3.1, %338
%mul155.3.1 = shl nsw i32 %add154.3.1, 1
%432 = sext i32 %mul155.3.1 to i64
%arrayidx156.3.1 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %432
%433 = load float, float addrspace(2)* %arrayidx156.3.1, align 4, !tbaa !39
%add160.3.1 = or i32 %mul155.3.1, 1
%434 = sext i32 %add160.3.1 to i64
%arrayidx161.3.1 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %434
%435 = load float, float addrspace(2)* %arrayidx161.3.1, align 4, !tbaa !39
%sub162.3.1 = fsub float 1.000000e+00, %cond.3.1
%436 = tail call float @llvm.fmuladd.f32(float %sub162.3.1, float 0x3D71979980000000, float %429)
%cmp.i.i.3.1 = fcmp olt float %436, 0.000000e+00
%call.i.i.3.1 = tail call float @llvm.sqrt.f32(float %436) #6
%call.i.i.op.3.1 = fdiv float 1.000000e+00, %call.i.i.3.1
%div165.3.1 = select i1 %cmp.i.i.3.1, float 0x7FF8000000000000, float %call.i.i.op.3.1
%mul166.3.1 = fmul float %div165.3.1, %div165.3.1
%mul167.3.1 = fmul float %mul166.3.1, %mul166.3.1
%mul168.3.1 = fmul float %mul166.3.1, %mul167.3.1
%mul169.3.1 = fmul float %cond.3.1, %mul168.3.1
%neg.3.1 = fsub float -0.000000e+00, %433
%437 = tail call float @llvm.fmuladd.f32(float %435, float %mul169.3.1, float %neg.3.1)
%mul171.3.1 = fmul float %mul169.3.1, %437
%mul172.3.1 = fmul float %mul166.3.1, %mul171.3.1
%mul173.3.1 = fmul float %337, %430
%mul174.3.1 = fmul float %cond.3.1, %mul166.3.1
%mul176.3.1 = fmul float %mul, %436
%mul.i.3.1 = fmul float %mul176.3.1, %mul176.3.1
%438 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.3.1, float 0x3FBDA79640000000) #5
%439 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.3.1, float 0x3FE03C5780000000) #5
%440 = tail call float @llvm.fmuladd.f32(float %438, float %mul.i.3.1, float 1.000000e+00) #5
%441 = tail call float @llvm.fmuladd.f32(float %439, float %mul176.3.1, float %440) #5
%div.i.3.1 = fdiv float 1.000000e+00, %441, !fpmath !46
%442 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.3.1, float 0xBF0BFF7260000000) #5
%443 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.3.1, float 0x3F50794180000000) #5
%444 = tail call float @llvm.fmuladd.f32(float %442, float %mul.i.3.1, float 0xBF93BDB200000000) #5
%445 = tail call float @llvm.fmuladd.f32(float %443, float %mul.i.3.1, float 0x3FB1D5E760000000) #5
%446 = tail call float @llvm.fmuladd.f32(float %444, float %mul.i.3.1, float 0xBFE81272E0000000) #5
%447 = tail call float @llvm.fmuladd.f32(float %445, float %mul176.3.1, float %446) #5
%mul11.i.3.1 = fmul float %447, %div.i.3.1
%mul178.3.1 = fmul float %mul19, %mul11.i.3.1
%448 = tail call float @llvm.fmuladd.f32(float %mul174.3.1, float %div165.3.1, float %mul178.3.1)
%449 = tail call float @llvm.fmuladd.f32(float %mul173.3.1, float %448, float %mul172.3.1)
%splat.splatinsert.3.1 = insertelement <3 x float> undef, float %449, i32 0
%splat.splat.3.1 = shufflevector <3 x float> %splat.splatinsert.3.1, <3 x float> undef, <3 x i32> zeroinitializer
%mul183.3.1 = fmul <3 x float> %extractVec135.3.1, %splat.splat.3.1
%extractVec191.3.1 = shufflevector <4 x float> %fcj_buf.sroa.0.1.2.1, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub192.3.1 = fsub <3 x float> %extractVec191.3.1, %mul183.3.1
%extractVec193.3.1 = shufflevector <3 x float> %sub192.3.1, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec201.3.1 = shufflevector <4 x float> %loadVec4200.3.1, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add202.3.1 = fadd <3 x float> %extractVec201.3.1, %mul183.3.1
%extractVec203.3.1 = shufflevector <3 x float> %add202.3.1, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end206.3.1
if.end206.3.1: ; preds = %if.then151.3.1, %if.then117.3.1, %if.end206.2.1
%450 = phi <3 x float> [ %add202.3.1, %if.then151.3.1 ], [ %85, %if.then117.3.1 ], [ %85, %if.end206.2.1 ]
%loadVec4200.3694 = phi <4 x float> [ %extractVec203.3.1, %if.then151.3.1 ], [ %loadVec4200.3.1, %if.then117.3.1 ], [ %loadVec4200.3.1, %if.end206.2.1 ]
%fcj_buf.sroa.0.1.3.1 = phi <4 x float> [ %extractVec193.3.1, %if.then151.3.1 ], [ %fcj_buf.sroa.0.1.2.1, %if.then117.3.1 ], [ %fcj_buf.sroa.0.1.2.1, %if.end206.2.1 ]
%and115.4.1 = and i32 %45, 4096
%tobool116.4.1 = icmp eq i32 %and115.4.1, 0
br i1 %tobool116.4.1, label %if.end206.4.1, label %if.then117.4.1
if.then117.4.1: ; preds = %if.end206.3.1
%451 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx124.4.3, align 16, !tbaa !36
%452 = fsub <4 x float> %451, %336
%453 = extractelement <4 x float> %452, i32 0
%454 = extractelement <4 x float> %452, i32 1
%mul3.i.i.4.1 = fmul float %454, %454
%455 = tail call float @llvm.fmuladd.f32(float %453, float %453, float %mul3.i.i.4.1) #5
%456 = extractelement <4 x float> %452, i32 2
%457 = tail call float @llvm.fmuladd.f32(float %456, float %456, float %455) #5
%and137.4.1 = and i32 %47, 4096
%tobool138.4.1 = icmp ne i32 %and137.4.1, 0
%cond.4.1 = select i1 %tobool138.4.1, float 1.000000e+00, float 0.000000e+00
%notrhs.4.1 = icmp ne i32 %28, %334
%not.or.cond.4.1 = or i1 %notlhs, %notrhs.4.1
%cmp145..4.1 = or i1 %cmp145, %not.or.cond.4.1
%conv147.4.1 = uitofp i1 %cmp145..4.1 to float
%mul148.4.1 = fmul float %conv147.4.1, %nbparam_params_rcoulomb_sq
%cmp149.4.1 = fcmp olt float %457, %mul148.4.1
br i1 %cmp149.4.1, label %if.then151.4.1, label %if.end206.4.1
if.then151.4.1: ; preds = %if.then117.4.1
%extractVec135.4.1 = shufflevector <4 x float> %452, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%458 = extractelement <4 x float> %451, i32 3
%459 = load i32, i32 addrspace(1)* %arrayidx152.4.3, align 4, !tbaa !41
%mul153.4.1 = mul nsw i32 %459, %ntypes
%add154.4.1 = add nsw i32 %mul153.4.1, %338
%mul155.4.1 = shl nsw i32 %add154.4.1, 1
%460 = sext i32 %mul155.4.1 to i64
%arrayidx156.4.1 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %460
%461 = load float, float addrspace(2)* %arrayidx156.4.1, align 4, !tbaa !39
%add160.4.1 = or i32 %mul155.4.1, 1
%462 = sext i32 %add160.4.1 to i64
%arrayidx161.4.1 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %462
%463 = load float, float addrspace(2)* %arrayidx161.4.1, align 4, !tbaa !39
%sub162.4.1 = fsub float 1.000000e+00, %cond.4.1
%464 = tail call float @llvm.fmuladd.f32(float %sub162.4.1, float 0x3D71979980000000, float %457)
%cmp.i.i.4.1 = fcmp olt float %464, 0.000000e+00
%call.i.i.4.1 = tail call float @llvm.sqrt.f32(float %464) #6
%call.i.i.op.4.1 = fdiv float 1.000000e+00, %call.i.i.4.1
%div165.4.1 = select i1 %cmp.i.i.4.1, float 0x7FF8000000000000, float %call.i.i.op.4.1
%mul166.4.1 = fmul float %div165.4.1, %div165.4.1
%mul167.4.1 = fmul float %mul166.4.1, %mul166.4.1
%mul168.4.1 = fmul float %mul166.4.1, %mul167.4.1
%mul169.4.1 = fmul float %cond.4.1, %mul168.4.1
%neg.4.1 = fsub float -0.000000e+00, %461
%465 = tail call float @llvm.fmuladd.f32(float %463, float %mul169.4.1, float %neg.4.1)
%mul171.4.1 = fmul float %mul169.4.1, %465
%mul172.4.1 = fmul float %mul166.4.1, %mul171.4.1
%mul173.4.1 = fmul float %337, %458
%mul174.4.1 = fmul float %cond.4.1, %mul166.4.1
%mul176.4.1 = fmul float %mul, %464
%mul.i.4.1 = fmul float %mul176.4.1, %mul176.4.1
%466 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.4.1, float 0x3FBDA79640000000) #5
%467 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.4.1, float 0x3FE03C5780000000) #5
%468 = tail call float @llvm.fmuladd.f32(float %466, float %mul.i.4.1, float 1.000000e+00) #5
%469 = tail call float @llvm.fmuladd.f32(float %467, float %mul176.4.1, float %468) #5
%div.i.4.1 = fdiv float 1.000000e+00, %469, !fpmath !46
%470 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.4.1, float 0xBF0BFF7260000000) #5
%471 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.4.1, float 0x3F50794180000000) #5
%472 = tail call float @llvm.fmuladd.f32(float %470, float %mul.i.4.1, float 0xBF93BDB200000000) #5
%473 = tail call float @llvm.fmuladd.f32(float %471, float %mul.i.4.1, float 0x3FB1D5E760000000) #5
%474 = tail call float @llvm.fmuladd.f32(float %472, float %mul.i.4.1, float 0xBFE81272E0000000) #5
%475 = tail call float @llvm.fmuladd.f32(float %473, float %mul176.4.1, float %474) #5
%mul11.i.4.1 = fmul float %475, %div.i.4.1
%mul178.4.1 = fmul float %mul19, %mul11.i.4.1
%476 = tail call float @llvm.fmuladd.f32(float %mul174.4.1, float %div165.4.1, float %mul178.4.1)
%477 = tail call float @llvm.fmuladd.f32(float %mul173.4.1, float %476, float %mul172.4.1)
%splat.splatinsert.4.1 = insertelement <3 x float> undef, float %477, i32 0
%splat.splat.4.1 = shufflevector <3 x float> %splat.splatinsert.4.1, <3 x float> undef, <3 x i32> zeroinitializer
%mul183.4.1 = fmul <3 x float> %extractVec135.4.1, %splat.splat.4.1
%extractVec191.4.1 = shufflevector <4 x float> %fcj_buf.sroa.0.1.3.1, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub192.4.1 = fsub <3 x float> %extractVec191.4.1, %mul183.4.1
%extractVec193.4.1 = shufflevector <3 x float> %sub192.4.1, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec201.4.1 = shufflevector <4 x float> %loadVec4200.4.1, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add202.4.1 = fadd <3 x float> %extractVec201.4.1, %mul183.4.1
%extractVec203.4.1 = shufflevector <3 x float> %add202.4.1, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end206.4.1
if.end206.4.1: ; preds = %if.then151.4.1, %if.then117.4.1, %if.end206.3.1
%478 = phi <3 x float> [ %add202.4.1, %if.then151.4.1 ], [ %84, %if.then117.4.1 ], [ %84, %if.end206.3.1 ]
%loadVec4200.4704 = phi <4 x float> [ %extractVec203.4.1, %if.then151.4.1 ], [ %loadVec4200.4.1, %if.then117.4.1 ], [ %loadVec4200.4.1, %if.end206.3.1 ]
%fcj_buf.sroa.0.1.4.1 = phi <4 x float> [ %extractVec193.4.1, %if.then151.4.1 ], [ %fcj_buf.sroa.0.1.3.1, %if.then117.4.1 ], [ %fcj_buf.sroa.0.1.3.1, %if.end206.3.1 ]
%and115.5.1 = and i32 %45, 8192
%tobool116.5.1 = icmp eq i32 %and115.5.1, 0
br i1 %tobool116.5.1, label %if.end206.5.1, label %if.then117.5.1
if.then117.5.1: ; preds = %if.end206.4.1
%479 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx124.5.3, align 16, !tbaa !36
%480 = fsub <4 x float> %479, %336
%481 = extractelement <4 x float> %480, i32 0
%482 = extractelement <4 x float> %480, i32 1
%mul3.i.i.5.1 = fmul float %482, %482
%483 = tail call float @llvm.fmuladd.f32(float %481, float %481, float %mul3.i.i.5.1) #5
%484 = extractelement <4 x float> %480, i32 2
%485 = tail call float @llvm.fmuladd.f32(float %484, float %484, float %483) #5
%and137.5.1 = and i32 %47, 8192
%tobool138.5.1 = icmp ne i32 %and137.5.1, 0
%cond.5.1 = select i1 %tobool138.5.1, float 1.000000e+00, float 0.000000e+00
%notrhs.5.1 = icmp ne i32 %26, %334
%not.or.cond.5.1 = or i1 %notlhs, %notrhs.5.1
%cmp145..5.1 = or i1 %cmp145, %not.or.cond.5.1
%conv147.5.1 = uitofp i1 %cmp145..5.1 to float
%mul148.5.1 = fmul float %conv147.5.1, %nbparam_params_rcoulomb_sq
%cmp149.5.1 = fcmp olt float %485, %mul148.5.1
br i1 %cmp149.5.1, label %if.then151.5.1, label %if.end206.5.1
if.then151.5.1: ; preds = %if.then117.5.1
%extractVec135.5.1 = shufflevector <4 x float> %480, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%486 = extractelement <4 x float> %479, i32 3
%487 = load i32, i32 addrspace(1)* %arrayidx152.5.3, align 4, !tbaa !41
%mul153.5.1 = mul nsw i32 %487, %ntypes
%add154.5.1 = add nsw i32 %mul153.5.1, %338
%mul155.5.1 = shl nsw i32 %add154.5.1, 1
%488 = sext i32 %mul155.5.1 to i64
%arrayidx156.5.1 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %488
%489 = load float, float addrspace(2)* %arrayidx156.5.1, align 4, !tbaa !39
%add160.5.1 = or i32 %mul155.5.1, 1
%490 = sext i32 %add160.5.1 to i64
%arrayidx161.5.1 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %490
%491 = load float, float addrspace(2)* %arrayidx161.5.1, align 4, !tbaa !39
%sub162.5.1 = fsub float 1.000000e+00, %cond.5.1
%492 = tail call float @llvm.fmuladd.f32(float %sub162.5.1, float 0x3D71979980000000, float %485)
%cmp.i.i.5.1 = fcmp olt float %492, 0.000000e+00
%call.i.i.5.1 = tail call float @llvm.sqrt.f32(float %492) #6
%call.i.i.op.5.1 = fdiv float 1.000000e+00, %call.i.i.5.1
%div165.5.1 = select i1 %cmp.i.i.5.1, float 0x7FF8000000000000, float %call.i.i.op.5.1
%mul166.5.1 = fmul float %div165.5.1, %div165.5.1
%mul167.5.1 = fmul float %mul166.5.1, %mul166.5.1
%mul168.5.1 = fmul float %mul166.5.1, %mul167.5.1
%mul169.5.1 = fmul float %cond.5.1, %mul168.5.1
%neg.5.1 = fsub float -0.000000e+00, %489
%493 = tail call float @llvm.fmuladd.f32(float %491, float %mul169.5.1, float %neg.5.1)
%mul171.5.1 = fmul float %mul169.5.1, %493
%mul172.5.1 = fmul float %mul166.5.1, %mul171.5.1
%mul173.5.1 = fmul float %337, %486
%mul174.5.1 = fmul float %cond.5.1, %mul166.5.1
%mul176.5.1 = fmul float %mul, %492
%mul.i.5.1 = fmul float %mul176.5.1, %mul176.5.1
%494 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.5.1, float 0x3FBDA79640000000) #5
%495 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.5.1, float 0x3FE03C5780000000) #5
%496 = tail call float @llvm.fmuladd.f32(float %494, float %mul.i.5.1, float 1.000000e+00) #5
%497 = tail call float @llvm.fmuladd.f32(float %495, float %mul176.5.1, float %496) #5
%div.i.5.1 = fdiv float 1.000000e+00, %497, !fpmath !46
%498 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.5.1, float 0xBF0BFF7260000000) #5
%499 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.5.1, float 0x3F50794180000000) #5
%500 = tail call float @llvm.fmuladd.f32(float %498, float %mul.i.5.1, float 0xBF93BDB200000000) #5
%501 = tail call float @llvm.fmuladd.f32(float %499, float %mul.i.5.1, float 0x3FB1D5E760000000) #5
%502 = tail call float @llvm.fmuladd.f32(float %500, float %mul.i.5.1, float 0xBFE81272E0000000) #5
%503 = tail call float @llvm.fmuladd.f32(float %501, float %mul176.5.1, float %502) #5
%mul11.i.5.1 = fmul float %503, %div.i.5.1
%mul178.5.1 = fmul float %mul19, %mul11.i.5.1
%504 = tail call float @llvm.fmuladd.f32(float %mul174.5.1, float %div165.5.1, float %mul178.5.1)
%505 = tail call float @llvm.fmuladd.f32(float %mul173.5.1, float %504, float %mul172.5.1)
%splat.splatinsert.5.1 = insertelement <3 x float> undef, float %505, i32 0
%splat.splat.5.1 = shufflevector <3 x float> %splat.splatinsert.5.1, <3 x float> undef, <3 x i32> zeroinitializer
%mul183.5.1 = fmul <3 x float> %extractVec135.5.1, %splat.splat.5.1
%extractVec191.5.1 = shufflevector <4 x float> %fcj_buf.sroa.0.1.4.1, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub192.5.1 = fsub <3 x float> %extractVec191.5.1, %mul183.5.1
%extractVec193.5.1 = shufflevector <3 x float> %sub192.5.1, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec201.5.1 = shufflevector <4 x float> %loadVec4200.5.1, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add202.5.1 = fadd <3 x float> %extractVec201.5.1, %mul183.5.1
%extractVec203.5.1 = shufflevector <3 x float> %add202.5.1, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end206.5.1
if.end206.5.1: ; preds = %if.then151.5.1, %if.then117.5.1, %if.end206.4.1
%506 = phi <3 x float> [ %add202.5.1, %if.then151.5.1 ], [ %83, %if.then117.5.1 ], [ %83, %if.end206.4.1 ]
%loadVec4200.5714 = phi <4 x float> [ %extractVec203.5.1, %if.then151.5.1 ], [ %loadVec4200.5.1, %if.then117.5.1 ], [ %loadVec4200.5.1, %if.end206.4.1 ]
%fcj_buf.sroa.0.1.5.1 = phi <4 x float> [ %extractVec193.5.1, %if.then151.5.1 ], [ %fcj_buf.sroa.0.1.4.1, %if.then117.5.1 ], [ %fcj_buf.sroa.0.1.4.1, %if.end206.4.1 ]
%and115.6.1 = and i32 %45, 16384
%tobool116.6.1 = icmp eq i32 %and115.6.1, 0
br i1 %tobool116.6.1, label %if.end206.6.1, label %if.then117.6.1
if.then117.6.1: ; preds = %if.end206.5.1
%507 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx124.6.3, align 16, !tbaa !36
%508 = fsub <4 x float> %507, %336
%509 = extractelement <4 x float> %508, i32 0
%510 = extractelement <4 x float> %508, i32 1
%mul3.i.i.6.1 = fmul float %510, %510
%511 = tail call float @llvm.fmuladd.f32(float %509, float %509, float %mul3.i.i.6.1) #5
%512 = extractelement <4 x float> %508, i32 2
%513 = tail call float @llvm.fmuladd.f32(float %512, float %512, float %511) #5
%and137.6.1 = and i32 %47, 16384
%tobool138.6.1 = icmp ne i32 %and137.6.1, 0
%cond.6.1 = select i1 %tobool138.6.1, float 1.000000e+00, float 0.000000e+00
%notrhs.6.1 = icmp ne i32 %24, %334
%not.or.cond.6.1 = or i1 %notlhs, %notrhs.6.1
%cmp145..6.1 = or i1 %cmp145, %not.or.cond.6.1
%conv147.6.1 = uitofp i1 %cmp145..6.1 to float
%mul148.6.1 = fmul float %conv147.6.1, %nbparam_params_rcoulomb_sq
%cmp149.6.1 = fcmp olt float %513, %mul148.6.1
br i1 %cmp149.6.1, label %if.then151.6.1, label %if.end206.6.1
if.then151.6.1: ; preds = %if.then117.6.1
%extractVec135.6.1 = shufflevector <4 x float> %508, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%514 = extractelement <4 x float> %507, i32 3
%515 = load i32, i32 addrspace(1)* %arrayidx152.6.3, align 4, !tbaa !41
%mul153.6.1 = mul nsw i32 %515, %ntypes
%add154.6.1 = add nsw i32 %mul153.6.1, %338
%mul155.6.1 = shl nsw i32 %add154.6.1, 1
%516 = sext i32 %mul155.6.1 to i64
%arrayidx156.6.1 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %516
%517 = load float, float addrspace(2)* %arrayidx156.6.1, align 4, !tbaa !39
%add160.6.1 = or i32 %mul155.6.1, 1
%518 = sext i32 %add160.6.1 to i64
%arrayidx161.6.1 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %518
%519 = load float, float addrspace(2)* %arrayidx161.6.1, align 4, !tbaa !39
%sub162.6.1 = fsub float 1.000000e+00, %cond.6.1
%520 = tail call float @llvm.fmuladd.f32(float %sub162.6.1, float 0x3D71979980000000, float %513)
%cmp.i.i.6.1 = fcmp olt float %520, 0.000000e+00
%call.i.i.6.1 = tail call float @llvm.sqrt.f32(float %520) #6
%call.i.i.op.6.1 = fdiv float 1.000000e+00, %call.i.i.6.1
%div165.6.1 = select i1 %cmp.i.i.6.1, float 0x7FF8000000000000, float %call.i.i.op.6.1
%mul166.6.1 = fmul float %div165.6.1, %div165.6.1
%mul167.6.1 = fmul float %mul166.6.1, %mul166.6.1
%mul168.6.1 = fmul float %mul166.6.1, %mul167.6.1
%mul169.6.1 = fmul float %cond.6.1, %mul168.6.1
%neg.6.1 = fsub float -0.000000e+00, %517
%521 = tail call float @llvm.fmuladd.f32(float %519, float %mul169.6.1, float %neg.6.1)
%mul171.6.1 = fmul float %mul169.6.1, %521
%mul172.6.1 = fmul float %mul166.6.1, %mul171.6.1
%mul173.6.1 = fmul float %337, %514
%mul174.6.1 = fmul float %cond.6.1, %mul166.6.1
%mul176.6.1 = fmul float %mul, %520
%mul.i.6.1 = fmul float %mul176.6.1, %mul176.6.1
%522 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.6.1, float 0x3FBDA79640000000) #5
%523 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.6.1, float 0x3FE03C5780000000) #5
%524 = tail call float @llvm.fmuladd.f32(float %522, float %mul.i.6.1, float 1.000000e+00) #5
%525 = tail call float @llvm.fmuladd.f32(float %523, float %mul176.6.1, float %524) #5
%div.i.6.1 = fdiv float 1.000000e+00, %525, !fpmath !46
%526 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.6.1, float 0xBF0BFF7260000000) #5
%527 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.6.1, float 0x3F50794180000000) #5
%528 = tail call float @llvm.fmuladd.f32(float %526, float %mul.i.6.1, float 0xBF93BDB200000000) #5
%529 = tail call float @llvm.fmuladd.f32(float %527, float %mul.i.6.1, float 0x3FB1D5E760000000) #5
%530 = tail call float @llvm.fmuladd.f32(float %528, float %mul.i.6.1, float 0xBFE81272E0000000) #5
%531 = tail call float @llvm.fmuladd.f32(float %529, float %mul176.6.1, float %530) #5
%mul11.i.6.1 = fmul float %531, %div.i.6.1
%mul178.6.1 = fmul float %mul19, %mul11.i.6.1
%532 = tail call float @llvm.fmuladd.f32(float %mul174.6.1, float %div165.6.1, float %mul178.6.1)
%533 = tail call float @llvm.fmuladd.f32(float %mul173.6.1, float %532, float %mul172.6.1)
%splat.splatinsert.6.1 = insertelement <3 x float> undef, float %533, i32 0
%splat.splat.6.1 = shufflevector <3 x float> %splat.splatinsert.6.1, <3 x float> undef, <3 x i32> zeroinitializer
%mul183.6.1 = fmul <3 x float> %extractVec135.6.1, %splat.splat.6.1
%extractVec191.6.1 = shufflevector <4 x float> %fcj_buf.sroa.0.1.5.1, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub192.6.1 = fsub <3 x float> %extractVec191.6.1, %mul183.6.1
%extractVec193.6.1 = shufflevector <3 x float> %sub192.6.1, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec201.6.1 = shufflevector <4 x float> %loadVec4200.6.1, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add202.6.1 = fadd <3 x float> %extractVec201.6.1, %mul183.6.1
%extractVec203.6.1 = shufflevector <3 x float> %add202.6.1, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end206.6.1
if.end206.6.1: ; preds = %if.then151.6.1, %if.then117.6.1, %if.end206.5.1
%534 = phi <3 x float> [ %add202.6.1, %if.then151.6.1 ], [ %82, %if.then117.6.1 ], [ %82, %if.end206.5.1 ]
%loadVec4200.6724 = phi <4 x float> [ %extractVec203.6.1, %if.then151.6.1 ], [ %loadVec4200.6.1, %if.then117.6.1 ], [ %loadVec4200.6.1, %if.end206.5.1 ]
%fcj_buf.sroa.0.1.6.1 = phi <4 x float> [ %extractVec193.6.1, %if.then151.6.1 ], [ %fcj_buf.sroa.0.1.5.1, %if.then117.6.1 ], [ %fcj_buf.sroa.0.1.5.1, %if.end206.5.1 ]
%and115.7.1 = and i32 %45, 32768
%tobool116.7.1 = icmp eq i32 %and115.7.1, 0
br i1 %tobool116.7.1, label %if.end206.7.1, label %if.then117.7.1
if.then117.7.1: ; preds = %if.end206.6.1
%535 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx124.7.3, align 16, !tbaa !36
%536 = fsub <4 x float> %535, %336
%537 = extractelement <4 x float> %536, i32 0
%538 = extractelement <4 x float> %536, i32 1
%mul3.i.i.7.1 = fmul float %538, %538
%539 = tail call float @llvm.fmuladd.f32(float %537, float %537, float %mul3.i.i.7.1) #5
%540 = extractelement <4 x float> %536, i32 2
%541 = tail call float @llvm.fmuladd.f32(float %540, float %540, float %539) #5
%and137.7.1 = and i32 %47, 32768
%tobool138.7.1 = icmp ne i32 %and137.7.1, 0
%cond.7.1 = select i1 %tobool138.7.1, float 1.000000e+00, float 0.000000e+00
%notrhs.7.1 = icmp ne i32 %22, %334
%not.or.cond.7.1 = or i1 %notlhs, %notrhs.7.1
%cmp145..7.1 = or i1 %cmp145, %not.or.cond.7.1
%conv147.7.1 = uitofp i1 %cmp145..7.1 to float
%mul148.7.1 = fmul float %conv147.7.1, %nbparam_params_rcoulomb_sq
%cmp149.7.1 = fcmp olt float %541, %mul148.7.1
br i1 %cmp149.7.1, label %if.then151.7.1, label %if.end206.7.1
if.then151.7.1: ; preds = %if.then117.7.1
%extractVec135.7.1 = shufflevector <4 x float> %536, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%542 = extractelement <4 x float> %535, i32 3
%543 = load i32, i32 addrspace(1)* %arrayidx152.7.3, align 4, !tbaa !41
%mul153.7.1 = mul nsw i32 %543, %ntypes
%add154.7.1 = add nsw i32 %mul153.7.1, %338
%mul155.7.1 = shl nsw i32 %add154.7.1, 1
%544 = sext i32 %mul155.7.1 to i64
%arrayidx156.7.1 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %544
%545 = load float, float addrspace(2)* %arrayidx156.7.1, align 4, !tbaa !39
%add160.7.1 = or i32 %mul155.7.1, 1
%546 = sext i32 %add160.7.1 to i64
%arrayidx161.7.1 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %546
%547 = load float, float addrspace(2)* %arrayidx161.7.1, align 4, !tbaa !39
%sub162.7.1 = fsub float 1.000000e+00, %cond.7.1
%548 = tail call float @llvm.fmuladd.f32(float %sub162.7.1, float 0x3D71979980000000, float %541)
%cmp.i.i.7.1 = fcmp olt float %548, 0.000000e+00
%call.i.i.7.1 = tail call float @llvm.sqrt.f32(float %548) #6
%call.i.i.op.7.1 = fdiv float 1.000000e+00, %call.i.i.7.1
%div165.7.1 = select i1 %cmp.i.i.7.1, float 0x7FF8000000000000, float %call.i.i.op.7.1
%mul166.7.1 = fmul float %div165.7.1, %div165.7.1
%mul167.7.1 = fmul float %mul166.7.1, %mul166.7.1
%mul168.7.1 = fmul float %mul166.7.1, %mul167.7.1
%mul169.7.1 = fmul float %cond.7.1, %mul168.7.1
%neg.7.1 = fsub float -0.000000e+00, %545
%549 = tail call float @llvm.fmuladd.f32(float %547, float %mul169.7.1, float %neg.7.1)
%mul171.7.1 = fmul float %mul169.7.1, %549
%mul172.7.1 = fmul float %mul166.7.1, %mul171.7.1
%mul173.7.1 = fmul float %337, %542
%mul174.7.1 = fmul float %cond.7.1, %mul166.7.1
%mul176.7.1 = fmul float %mul, %548
%mul.i.7.1 = fmul float %mul176.7.1, %mul176.7.1
%550 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.7.1, float 0x3FBDA79640000000) #5
%551 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.7.1, float 0x3FE03C5780000000) #5
%552 = tail call float @llvm.fmuladd.f32(float %550, float %mul.i.7.1, float 1.000000e+00) #5
%553 = tail call float @llvm.fmuladd.f32(float %551, float %mul176.7.1, float %552) #5
%div.i.7.1 = fdiv float 1.000000e+00, %553, !fpmath !46
%554 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.7.1, float 0xBF0BFF7260000000) #5
%555 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.7.1, float 0x3F50794180000000) #5
%556 = tail call float @llvm.fmuladd.f32(float %554, float %mul.i.7.1, float 0xBF93BDB200000000) #5
%557 = tail call float @llvm.fmuladd.f32(float %555, float %mul.i.7.1, float 0x3FB1D5E760000000) #5
%558 = tail call float @llvm.fmuladd.f32(float %556, float %mul.i.7.1, float 0xBFE81272E0000000) #5
%559 = tail call float @llvm.fmuladd.f32(float %557, float %mul176.7.1, float %558) #5
%mul11.i.7.1 = fmul float %559, %div.i.7.1
%mul178.7.1 = fmul float %mul19, %mul11.i.7.1
%560 = tail call float @llvm.fmuladd.f32(float %mul174.7.1, float %div165.7.1, float %mul178.7.1)
%561 = tail call float @llvm.fmuladd.f32(float %mul173.7.1, float %560, float %mul172.7.1)
%splat.splatinsert.7.1 = insertelement <3 x float> undef, float %561, i32 0
%splat.splat.7.1 = shufflevector <3 x float> %splat.splatinsert.7.1, <3 x float> undef, <3 x i32> zeroinitializer
%mul183.7.1 = fmul <3 x float> %extractVec135.7.1, %splat.splat.7.1
%extractVec191.7.1 = shufflevector <4 x float> %fcj_buf.sroa.0.1.6.1, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub192.7.1 = fsub <3 x float> %extractVec191.7.1, %mul183.7.1
%extractVec193.7.1 = shufflevector <3 x float> %sub192.7.1, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec201.7.1 = shufflevector <4 x float> %loadVec4200.7.1, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add202.7.1 = fadd <3 x float> %extractVec201.7.1, %mul183.7.1
%extractVec203.7.1 = shufflevector <3 x float> %add202.7.1, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end206.7.1
if.end206.7.1: ; preds = %if.then151.7.1, %if.then117.7.1, %if.end206.6.1
%fci_buf.sroa.37.5 = phi <4 x float> [ %fci_buf.sroa.37.1, %if.end206.6.1 ], [ %extractVec203.7.1, %if.then151.7.1 ], [ %fci_buf.sroa.37.1, %if.then117.7.1 ]
%loadVec4200.7734 = phi <4 x float> [ %loadVec4200.7.1, %if.end206.6.1 ], [ %extractVec203.7.1, %if.then151.7.1 ], [ %loadVec4200.7.1, %if.then117.7.1 ]
%fcj_buf.sroa.0.1.7.1 = phi <4 x float> [ %fcj_buf.sroa.0.1.6.1, %if.end206.6.1 ], [ %extractVec193.7.1, %if.then151.7.1 ], [ %fcj_buf.sroa.0.1.6.1, %if.then117.7.1 ]
%562 = extractelement <4 x float> %fcj_buf.sroa.0.1.7.1, i32 0
store float %562, float addrspace(3)* %arrayidx211, align 4, !tbaa !39
%563 = extractelement <4 x float> %fcj_buf.sroa.0.1.7.1, i32 1
store float %563, float addrspace(3)* %arrayidx213, align 4, !tbaa !39
%564 = extractelement <4 x float> %fcj_buf.sroa.0.1.7.1, i32 2
store float %564, float addrspace(3)* %arrayidx215, align 4, !tbaa !39
tail call fastcc void @reduce_force_j_generic(float addrspace(3)* %2, float addrspace(1)* %f, i32 %x.i, i32 %y.i, i32 %add106.1)
br label %for.inc217.1
for.inc217.1: ; preds = %if.end206.7.1, %for.inc217
%fci_buf.sroa.37.6 = phi <4 x float> [ %fci_buf.sroa.37.1, %for.inc217 ], [ %fci_buf.sroa.37.5, %if.end206.7.1 ]
%565 = phi <3 x float> [ %82, %for.inc217 ], [ %534, %if.end206.7.1 ]
%566 = phi <3 x float> [ %83, %for.inc217 ], [ %506, %if.end206.7.1 ]
%567 = phi <3 x float> [ %84, %for.inc217 ], [ %478, %if.end206.7.1 ]
%568 = phi <3 x float> [ %85, %for.inc217 ], [ %450, %if.end206.7.1 ]
%569 = phi <3 x float> [ %86, %for.inc217 ], [ %422, %if.end206.7.1 ]
%570 = phi <3 x float> [ %87, %for.inc217 ], [ %394, %if.end206.7.1 ]
%571 = phi <3 x float> [ %88, %for.inc217 ], [ %366, %if.end206.7.1 ]
%loadVec4200.7.2 = phi <4 x float> [ %loadVec4200.7.1, %for.inc217 ], [ %loadVec4200.7734, %if.end206.7.1 ]
%loadVec4200.6.2 = phi <4 x float> [ %loadVec4200.6.1, %for.inc217 ], [ %loadVec4200.6724, %if.end206.7.1 ]
%loadVec4200.5.2 = phi <4 x float> [ %loadVec4200.5.1, %for.inc217 ], [ %loadVec4200.5714, %if.end206.7.1 ]
%loadVec4200.4.2 = phi <4 x float> [ %loadVec4200.4.1, %for.inc217 ], [ %loadVec4200.4704, %if.end206.7.1 ]
%loadVec4200.3.2 = phi <4 x float> [ %loadVec4200.3.1, %for.inc217 ], [ %loadVec4200.3694, %if.end206.7.1 ]
%loadVec4200.2.2 = phi <4 x float> [ %loadVec4200.2.1, %for.inc217 ], [ %loadVec4200.2684, %if.end206.7.1 ]
%loadVec4200.1.2 = phi <4 x float> [ %loadVec4200.1.1, %for.inc217 ], [ %loadVec4200.1674, %if.end206.7.1 ]
%loadVec4200.2597 = phi <4 x float> [ %loadVec4200.1539, %for.inc217 ], [ %loadVec4200664, %if.end206.7.1 ]
%and94.2 = and i32 %45, 16711680
%tobool95.2 = icmp eq i32 %and94.2, 0
br i1 %tobool95.2, label %for.inc217.2, label %if.then96.2
if.then96.2: ; preds = %for.inc217.1
%572 = load i32, i32 addrspace(3)* %arrayidx104.2, align 4, !tbaa !41
%mul105.2 = shl nsw i32 %572, 3
%add106.2 = add i32 %mul105.2, %y.i
%573 = sext i32 %add106.2 to i64
%arrayidx107.2 = getelementptr inbounds <4 x float>, <4 x float> addrspace(1)* %xq, i64 %573
%574 = load <4 x float>, <4 x float> addrspace(1)* %arrayidx107.2, align 16, !tbaa !36
%575 = extractelement <4 x float> %574, i32 3
%arrayidx109.2 = getelementptr inbounds i32, i32 addrspace(1)* %atom_types, i64 %573
%576 = load i32, i32 addrspace(1)* %arrayidx109.2, align 4, !tbaa !41
%and115.2547 = and i32 %45, 65536
%tobool116.2548 = icmp eq i32 %and115.2547, 0
br i1 %tobool116.2548, label %if.end206.2604, label %if.then117.2560
if.then117.2560: ; preds = %if.then96.2
%577 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx124.3607, align 16, !tbaa !36
%578 = fsub <4 x float> %577, %574
%579 = extractelement <4 x float> %578, i32 0
%580 = extractelement <4 x float> %578, i32 1
%mul3.i.i.2550 = fmul float %580, %580
%581 = tail call float @llvm.fmuladd.f32(float %579, float %579, float %mul3.i.i.2550) #5
%582 = extractelement <4 x float> %578, i32 2
%583 = tail call float @llvm.fmuladd.f32(float %582, float %582, float %581) #5
%and137.2551 = and i32 %47, 65536
%tobool138.2552 = icmp ne i32 %and137.2551, 0
%cond.2553 = select i1 %tobool138.2552, float 1.000000e+00, float 0.000000e+00
%notrhs.2554 = icmp ne i32 %mul29, %572
%not.or.cond.2555 = or i1 %notlhs, %notrhs.2554
%cmp145..2556 = or i1 %cmp145, %not.or.cond.2555
%conv147.2557 = uitofp i1 %cmp145..2556 to float
%mul148.2558 = fmul float %conv147.2557, %nbparam_params_rcoulomb_sq
%cmp149.2559 = fcmp olt float %583, %mul148.2558
br i1 %cmp149.2559, label %if.then151.2601, label %if.end206.2604
if.then151.2601: ; preds = %if.then117.2560
%extractVec135.2561 = shufflevector <4 x float> %578, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%584 = extractelement <4 x float> %577, i32 3
%585 = load i32, i32 addrspace(1)* %arrayidx152.3622, align 4, !tbaa !41
%mul153.2565 = mul nsw i32 %585, %ntypes
%add154.2566 = add nsw i32 %mul153.2565, %576
%mul155.2567 = shl nsw i32 %add154.2566, 1
%586 = sext i32 %mul155.2567 to i64
%arrayidx156.2568 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %586
%587 = load float, float addrspace(2)* %arrayidx156.2568, align 4, !tbaa !39
%add160.2569 = or i32 %mul155.2567, 1
%588 = sext i32 %add160.2569 to i64
%arrayidx161.2570 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %588
%589 = load float, float addrspace(2)* %arrayidx161.2570, align 4, !tbaa !39
%sub162.2571 = fsub float 1.000000e+00, %cond.2553
%590 = tail call float @llvm.fmuladd.f32(float %sub162.2571, float 0x3D71979980000000, float %583)
%cmp.i.i.2572 = fcmp olt float %590, 0.000000e+00
%call.i.i.2573 = tail call float @llvm.sqrt.f32(float %590) #6
%call.i.i.op.2574 = fdiv float 1.000000e+00, %call.i.i.2573
%div165.2575 = select i1 %cmp.i.i.2572, float 0x7FF8000000000000, float %call.i.i.op.2574
%mul166.2576 = fmul float %div165.2575, %div165.2575
%mul167.2577 = fmul float %mul166.2576, %mul166.2576
%mul168.2578 = fmul float %mul166.2576, %mul167.2577
%mul169.2579 = fmul float %cond.2553, %mul168.2578
%neg.2580 = fsub float -0.000000e+00, %587
%591 = tail call float @llvm.fmuladd.f32(float %589, float %mul169.2579, float %neg.2580)
%mul171.2581 = fmul float %mul169.2579, %591
%mul172.2582 = fmul float %mul166.2576, %mul171.2581
%mul173.2583 = fmul float %575, %584
%mul174.2584 = fmul float %cond.2553, %mul166.2576
%mul176.2585 = fmul float %mul, %590
%mul.i.2586 = fmul float %mul176.2585, %mul176.2585
%592 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.2586, float 0x3FBDA79640000000) #5
%593 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.2586, float 0x3FE03C5780000000) #5
%594 = tail call float @llvm.fmuladd.f32(float %592, float %mul.i.2586, float 1.000000e+00) #5
%595 = tail call float @llvm.fmuladd.f32(float %593, float %mul176.2585, float %594) #5
%div.i.2587 = fdiv float 1.000000e+00, %595, !fpmath !46
%596 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.2586, float 0xBF0BFF7260000000) #5
%597 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.2586, float 0x3F50794180000000) #5
%598 = tail call float @llvm.fmuladd.f32(float %596, float %mul.i.2586, float 0xBF93BDB200000000) #5
%599 = tail call float @llvm.fmuladd.f32(float %597, float %mul.i.2586, float 0x3FB1D5E760000000) #5
%600 = tail call float @llvm.fmuladd.f32(float %598, float %mul.i.2586, float 0xBFE81272E0000000) #5
%601 = tail call float @llvm.fmuladd.f32(float %599, float %mul176.2585, float %600) #5
%mul11.i.2588 = fmul float %601, %div.i.2587
%mul178.2589 = fmul float %mul19, %mul11.i.2588
%602 = tail call float @llvm.fmuladd.f32(float %mul174.2584, float %div165.2575, float %mul178.2589)
%603 = tail call float @llvm.fmuladd.f32(float %mul173.2583, float %602, float %mul172.2582)
%splat.splatinsert.2590 = insertelement <3 x float> undef, float %603, i32 0
%splat.splat.2591 = shufflevector <3 x float> %splat.splatinsert.2590, <3 x float> undef, <3 x i32> zeroinitializer
%mul183.2592 = fmul <3 x float> %extractVec135.2561, %splat.splat.2591
%sub192.2593 = fsub <3 x float> zeroinitializer, %mul183.2592
%extractVec193.2594 = shufflevector <3 x float> %sub192.2593, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec201.2598 = shufflevector <4 x float> %loadVec4200.2597, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add202.2599 = fadd <3 x float> %extractVec201.2598, %mul183.2592
%extractVec203.2600 = shufflevector <3 x float> %add202.2599, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end206.2604
if.end206.2604: ; preds = %if.then151.2601, %if.then117.2560, %if.then96.2
%604 = phi <3 x float> [ %add202.2599, %if.then151.2601 ], [ %571, %if.then117.2560 ], [ %571, %if.then96.2 ]
%loadVec4200665 = phi <4 x float> [ %extractVec203.2600, %if.then151.2601 ], [ %loadVec4200.2597, %if.then117.2560 ], [ %loadVec4200.2597, %if.then96.2 ]
%fcj_buf.sroa.0.1.2602 = phi <4 x float> [ %extractVec193.2594, %if.then151.2601 ], [ <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float undef>, %if.then117.2560 ], [ <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float undef>, %if.then96.2 ]
%and115.1.2 = and i32 %45, 131072
%tobool116.1.2 = icmp eq i32 %and115.1.2, 0
br i1 %tobool116.1.2, label %if.end206.1.2, label %if.then117.1.2
if.then117.1.2: ; preds = %if.end206.2604
%605 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx124.1.3, align 16, !tbaa !36
%606 = fsub <4 x float> %605, %574
%607 = extractelement <4 x float> %606, i32 0
%608 = extractelement <4 x float> %606, i32 1
%mul3.i.i.1.2 = fmul float %608, %608
%609 = tail call float @llvm.fmuladd.f32(float %607, float %607, float %mul3.i.i.1.2) #5
%610 = extractelement <4 x float> %606, i32 2
%611 = tail call float @llvm.fmuladd.f32(float %610, float %610, float %609) #5
%and137.1.2 = and i32 %47, 131072
%tobool138.1.2 = icmp ne i32 %and137.1.2, 0
%cond.1.2 = select i1 %tobool138.1.2, float 1.000000e+00, float 0.000000e+00
%notrhs.1.2 = icmp ne i32 %34, %572
%not.or.cond.1.2 = or i1 %notlhs, %notrhs.1.2
%cmp145..1.2 = or i1 %cmp145, %not.or.cond.1.2
%conv147.1.2 = uitofp i1 %cmp145..1.2 to float
%mul148.1.2 = fmul float %conv147.1.2, %nbparam_params_rcoulomb_sq
%cmp149.1.2 = fcmp olt float %611, %mul148.1.2
br i1 %cmp149.1.2, label %if.then151.1.2, label %if.end206.1.2
if.then151.1.2: ; preds = %if.then117.1.2
%extractVec135.1.2 = shufflevector <4 x float> %606, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%612 = extractelement <4 x float> %605, i32 3
%613 = load i32, i32 addrspace(1)* %arrayidx152.1.3, align 4, !tbaa !41
%mul153.1.2 = mul nsw i32 %613, %ntypes
%add154.1.2 = add nsw i32 %mul153.1.2, %576
%mul155.1.2 = shl nsw i32 %add154.1.2, 1
%614 = sext i32 %mul155.1.2 to i64
%arrayidx156.1.2 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %614
%615 = load float, float addrspace(2)* %arrayidx156.1.2, align 4, !tbaa !39
%add160.1.2 = or i32 %mul155.1.2, 1
%616 = sext i32 %add160.1.2 to i64
%arrayidx161.1.2 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %616
%617 = load float, float addrspace(2)* %arrayidx161.1.2, align 4, !tbaa !39
%sub162.1.2 = fsub float 1.000000e+00, %cond.1.2
%618 = tail call float @llvm.fmuladd.f32(float %sub162.1.2, float 0x3D71979980000000, float %611)
%cmp.i.i.1.2 = fcmp olt float %618, 0.000000e+00
%call.i.i.1.2 = tail call float @llvm.sqrt.f32(float %618) #6
%call.i.i.op.1.2 = fdiv float 1.000000e+00, %call.i.i.1.2
%div165.1.2 = select i1 %cmp.i.i.1.2, float 0x7FF8000000000000, float %call.i.i.op.1.2
%mul166.1.2 = fmul float %div165.1.2, %div165.1.2
%mul167.1.2 = fmul float %mul166.1.2, %mul166.1.2
%mul168.1.2 = fmul float %mul166.1.2, %mul167.1.2
%mul169.1.2 = fmul float %cond.1.2, %mul168.1.2
%neg.1.2 = fsub float -0.000000e+00, %615
%619 = tail call float @llvm.fmuladd.f32(float %617, float %mul169.1.2, float %neg.1.2)
%mul171.1.2 = fmul float %mul169.1.2, %619
%mul172.1.2 = fmul float %mul166.1.2, %mul171.1.2
%mul173.1.2 = fmul float %575, %612
%mul174.1.2 = fmul float %cond.1.2, %mul166.1.2
%mul176.1.2 = fmul float %mul, %618
%mul.i.1.2 = fmul float %mul176.1.2, %mul176.1.2
%620 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.1.2, float 0x3FBDA79640000000) #5
%621 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.1.2, float 0x3FE03C5780000000) #5
%622 = tail call float @llvm.fmuladd.f32(float %620, float %mul.i.1.2, float 1.000000e+00) #5
%623 = tail call float @llvm.fmuladd.f32(float %621, float %mul176.1.2, float %622) #5
%div.i.1.2 = fdiv float 1.000000e+00, %623, !fpmath !46
%624 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.1.2, float 0xBF0BFF7260000000) #5
%625 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.1.2, float 0x3F50794180000000) #5
%626 = tail call float @llvm.fmuladd.f32(float %624, float %mul.i.1.2, float 0xBF93BDB200000000) #5
%627 = tail call float @llvm.fmuladd.f32(float %625, float %mul.i.1.2, float 0x3FB1D5E760000000) #5
%628 = tail call float @llvm.fmuladd.f32(float %626, float %mul.i.1.2, float 0xBFE81272E0000000) #5
%629 = tail call float @llvm.fmuladd.f32(float %627, float %mul176.1.2, float %628) #5
%mul11.i.1.2 = fmul float %629, %div.i.1.2
%mul178.1.2 = fmul float %mul19, %mul11.i.1.2
%630 = tail call float @llvm.fmuladd.f32(float %mul174.1.2, float %div165.1.2, float %mul178.1.2)
%631 = tail call float @llvm.fmuladd.f32(float %mul173.1.2, float %630, float %mul172.1.2)
%splat.splatinsert.1.2 = insertelement <3 x float> undef, float %631, i32 0
%splat.splat.1.2 = shufflevector <3 x float> %splat.splatinsert.1.2, <3 x float> undef, <3 x i32> zeroinitializer
%mul183.1.2 = fmul <3 x float> %extractVec135.1.2, %splat.splat.1.2
%extractVec191.1.2 = shufflevector <4 x float> %fcj_buf.sroa.0.1.2602, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub192.1.2 = fsub <3 x float> %extractVec191.1.2, %mul183.1.2
%extractVec193.1.2 = shufflevector <3 x float> %sub192.1.2, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec201.1.2 = shufflevector <4 x float> %loadVec4200.1.2, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add202.1.2 = fadd <3 x float> %extractVec201.1.2, %mul183.1.2
%extractVec203.1.2 = shufflevector <3 x float> %add202.1.2, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end206.1.2
if.end206.1.2: ; preds = %if.then151.1.2, %if.then117.1.2, %if.end206.2604
%632 = phi <3 x float> [ %add202.1.2, %if.then151.1.2 ], [ %570, %if.then117.1.2 ], [ %570, %if.end206.2604 ]
%loadVec4200.1675 = phi <4 x float> [ %extractVec203.1.2, %if.then151.1.2 ], [ %loadVec4200.1.2, %if.then117.1.2 ], [ %loadVec4200.1.2, %if.end206.2604 ]
%fcj_buf.sroa.0.1.1.2 = phi <4 x float> [ %extractVec193.1.2, %if.then151.1.2 ], [ %fcj_buf.sroa.0.1.2602, %if.then117.1.2 ], [ %fcj_buf.sroa.0.1.2602, %if.end206.2604 ]
%and115.2.2 = and i32 %45, 262144
%tobool116.2.2 = icmp eq i32 %and115.2.2, 0
br i1 %tobool116.2.2, label %if.end206.2.2, label %if.then117.2.2
if.then117.2.2: ; preds = %if.end206.1.2
%633 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx124.2.3, align 16, !tbaa !36
%634 = fsub <4 x float> %633, %574
%635 = extractelement <4 x float> %634, i32 0
%636 = extractelement <4 x float> %634, i32 1
%mul3.i.i.2.2 = fmul float %636, %636
%637 = tail call float @llvm.fmuladd.f32(float %635, float %635, float %mul3.i.i.2.2) #5
%638 = extractelement <4 x float> %634, i32 2
%639 = tail call float @llvm.fmuladd.f32(float %638, float %638, float %637) #5
%and137.2.2 = and i32 %47, 262144
%tobool138.2.2 = icmp ne i32 %and137.2.2, 0
%cond.2.2 = select i1 %tobool138.2.2, float 1.000000e+00, float 0.000000e+00
%notrhs.2.2 = icmp ne i32 %32, %572
%not.or.cond.2.2 = or i1 %notlhs, %notrhs.2.2
%cmp145..2.2 = or i1 %cmp145, %not.or.cond.2.2
%conv147.2.2 = uitofp i1 %cmp145..2.2 to float
%mul148.2.2 = fmul float %conv147.2.2, %nbparam_params_rcoulomb_sq
%cmp149.2.2 = fcmp olt float %639, %mul148.2.2
br i1 %cmp149.2.2, label %if.then151.2.2, label %if.end206.2.2
if.then151.2.2: ; preds = %if.then117.2.2
%extractVec135.2.2 = shufflevector <4 x float> %634, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%640 = extractelement <4 x float> %633, i32 3
%641 = load i32, i32 addrspace(1)* %arrayidx152.2.3, align 4, !tbaa !41
%mul153.2.2 = mul nsw i32 %641, %ntypes
%add154.2.2 = add nsw i32 %mul153.2.2, %576
%mul155.2.2 = shl nsw i32 %add154.2.2, 1
%642 = sext i32 %mul155.2.2 to i64
%arrayidx156.2.2 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %642
%643 = load float, float addrspace(2)* %arrayidx156.2.2, align 4, !tbaa !39
%add160.2.2 = or i32 %mul155.2.2, 1
%644 = sext i32 %add160.2.2 to i64
%arrayidx161.2.2 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %644
%645 = load float, float addrspace(2)* %arrayidx161.2.2, align 4, !tbaa !39
%sub162.2.2 = fsub float 1.000000e+00, %cond.2.2
%646 = tail call float @llvm.fmuladd.f32(float %sub162.2.2, float 0x3D71979980000000, float %639)
%cmp.i.i.2.2 = fcmp olt float %646, 0.000000e+00
%call.i.i.2.2 = tail call float @llvm.sqrt.f32(float %646) #6
%call.i.i.op.2.2 = fdiv float 1.000000e+00, %call.i.i.2.2
%div165.2.2 = select i1 %cmp.i.i.2.2, float 0x7FF8000000000000, float %call.i.i.op.2.2
%mul166.2.2 = fmul float %div165.2.2, %div165.2.2
%mul167.2.2 = fmul float %mul166.2.2, %mul166.2.2
%mul168.2.2 = fmul float %mul166.2.2, %mul167.2.2
%mul169.2.2 = fmul float %cond.2.2, %mul168.2.2
%neg.2.2 = fsub float -0.000000e+00, %643
%647 = tail call float @llvm.fmuladd.f32(float %645, float %mul169.2.2, float %neg.2.2)
%mul171.2.2 = fmul float %mul169.2.2, %647
%mul172.2.2 = fmul float %mul166.2.2, %mul171.2.2
%mul173.2.2 = fmul float %575, %640
%mul174.2.2 = fmul float %cond.2.2, %mul166.2.2
%mul176.2.2 = fmul float %mul, %646
%mul.i.2.2 = fmul float %mul176.2.2, %mul176.2.2
%648 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.2.2, float 0x3FBDA79640000000) #5
%649 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.2.2, float 0x3FE03C5780000000) #5
%650 = tail call float @llvm.fmuladd.f32(float %648, float %mul.i.2.2, float 1.000000e+00) #5
%651 = tail call float @llvm.fmuladd.f32(float %649, float %mul176.2.2, float %650) #5
%div.i.2.2 = fdiv float 1.000000e+00, %651, !fpmath !46
%652 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.2.2, float 0xBF0BFF7260000000) #5
%653 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.2.2, float 0x3F50794180000000) #5
%654 = tail call float @llvm.fmuladd.f32(float %652, float %mul.i.2.2, float 0xBF93BDB200000000) #5
%655 = tail call float @llvm.fmuladd.f32(float %653, float %mul.i.2.2, float 0x3FB1D5E760000000) #5
%656 = tail call float @llvm.fmuladd.f32(float %654, float %mul.i.2.2, float 0xBFE81272E0000000) #5
%657 = tail call float @llvm.fmuladd.f32(float %655, float %mul176.2.2, float %656) #5
%mul11.i.2.2 = fmul float %657, %div.i.2.2
%mul178.2.2 = fmul float %mul19, %mul11.i.2.2
%658 = tail call float @llvm.fmuladd.f32(float %mul174.2.2, float %div165.2.2, float %mul178.2.2)
%659 = tail call float @llvm.fmuladd.f32(float %mul173.2.2, float %658, float %mul172.2.2)
%splat.splatinsert.2.2 = insertelement <3 x float> undef, float %659, i32 0
%splat.splat.2.2 = shufflevector <3 x float> %splat.splatinsert.2.2, <3 x float> undef, <3 x i32> zeroinitializer
%mul183.2.2 = fmul <3 x float> %extractVec135.2.2, %splat.splat.2.2
%extractVec191.2.2 = shufflevector <4 x float> %fcj_buf.sroa.0.1.1.2, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub192.2.2 = fsub <3 x float> %extractVec191.2.2, %mul183.2.2
%extractVec193.2.2 = shufflevector <3 x float> %sub192.2.2, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec201.2.2 = shufflevector <4 x float> %loadVec4200.2.2, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add202.2.2 = fadd <3 x float> %extractVec201.2.2, %mul183.2.2
%extractVec203.2.2 = shufflevector <3 x float> %add202.2.2, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end206.2.2
if.end206.2.2: ; preds = %if.then151.2.2, %if.then117.2.2, %if.end206.1.2
%660 = phi <3 x float> [ %add202.2.2, %if.then151.2.2 ], [ %569, %if.then117.2.2 ], [ %569, %if.end206.1.2 ]
%loadVec4200.2685 = phi <4 x float> [ %extractVec203.2.2, %if.then151.2.2 ], [ %loadVec4200.2.2, %if.then117.2.2 ], [ %loadVec4200.2.2, %if.end206.1.2 ]
%fcj_buf.sroa.0.1.2.2 = phi <4 x float> [ %extractVec193.2.2, %if.then151.2.2 ], [ %fcj_buf.sroa.0.1.1.2, %if.then117.2.2 ], [ %fcj_buf.sroa.0.1.1.2, %if.end206.1.2 ]
%and115.3.2 = and i32 %45, 524288
%tobool116.3.2 = icmp eq i32 %and115.3.2, 0
br i1 %tobool116.3.2, label %if.end206.3.2, label %if.then117.3.2
if.then117.3.2: ; preds = %if.end206.2.2
%661 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx124.3.3, align 16, !tbaa !36
%662 = fsub <4 x float> %661, %574
%663 = extractelement <4 x float> %662, i32 0
%664 = extractelement <4 x float> %662, i32 1
%mul3.i.i.3.2 = fmul float %664, %664
%665 = tail call float @llvm.fmuladd.f32(float %663, float %663, float %mul3.i.i.3.2) #5
%666 = extractelement <4 x float> %662, i32 2
%667 = tail call float @llvm.fmuladd.f32(float %666, float %666, float %665) #5
%and137.3.2 = and i32 %47, 524288
%tobool138.3.2 = icmp ne i32 %and137.3.2, 0
%cond.3.2 = select i1 %tobool138.3.2, float 1.000000e+00, float 0.000000e+00
%notrhs.3.2 = icmp ne i32 %30, %572
%not.or.cond.3.2 = or i1 %notlhs, %notrhs.3.2
%cmp145..3.2 = or i1 %cmp145, %not.or.cond.3.2
%conv147.3.2 = uitofp i1 %cmp145..3.2 to float
%mul148.3.2 = fmul float %conv147.3.2, %nbparam_params_rcoulomb_sq
%cmp149.3.2 = fcmp olt float %667, %mul148.3.2
br i1 %cmp149.3.2, label %if.then151.3.2, label %if.end206.3.2
if.then151.3.2: ; preds = %if.then117.3.2
%extractVec135.3.2 = shufflevector <4 x float> %662, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%668 = extractelement <4 x float> %661, i32 3
%669 = load i32, i32 addrspace(1)* %arrayidx152.3.3, align 4, !tbaa !41
%mul153.3.2 = mul nsw i32 %669, %ntypes
%add154.3.2 = add nsw i32 %mul153.3.2, %576
%mul155.3.2 = shl nsw i32 %add154.3.2, 1
%670 = sext i32 %mul155.3.2 to i64
%arrayidx156.3.2 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %670
%671 = load float, float addrspace(2)* %arrayidx156.3.2, align 4, !tbaa !39
%add160.3.2 = or i32 %mul155.3.2, 1
%672 = sext i32 %add160.3.2 to i64
%arrayidx161.3.2 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %672
%673 = load float, float addrspace(2)* %arrayidx161.3.2, align 4, !tbaa !39
%sub162.3.2 = fsub float 1.000000e+00, %cond.3.2
%674 = tail call float @llvm.fmuladd.f32(float %sub162.3.2, float 0x3D71979980000000, float %667)
%cmp.i.i.3.2 = fcmp olt float %674, 0.000000e+00
%call.i.i.3.2 = tail call float @llvm.sqrt.f32(float %674) #6
%call.i.i.op.3.2 = fdiv float 1.000000e+00, %call.i.i.3.2
%div165.3.2 = select i1 %cmp.i.i.3.2, float 0x7FF8000000000000, float %call.i.i.op.3.2
%mul166.3.2 = fmul float %div165.3.2, %div165.3.2
%mul167.3.2 = fmul float %mul166.3.2, %mul166.3.2
%mul168.3.2 = fmul float %mul166.3.2, %mul167.3.2
%mul169.3.2 = fmul float %cond.3.2, %mul168.3.2
%neg.3.2 = fsub float -0.000000e+00, %671
%675 = tail call float @llvm.fmuladd.f32(float %673, float %mul169.3.2, float %neg.3.2)
%mul171.3.2 = fmul float %mul169.3.2, %675
%mul172.3.2 = fmul float %mul166.3.2, %mul171.3.2
%mul173.3.2 = fmul float %575, %668
%mul174.3.2 = fmul float %cond.3.2, %mul166.3.2
%mul176.3.2 = fmul float %mul, %674
%mul.i.3.2 = fmul float %mul176.3.2, %mul176.3.2
%676 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.3.2, float 0x3FBDA79640000000) #5
%677 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.3.2, float 0x3FE03C5780000000) #5
%678 = tail call float @llvm.fmuladd.f32(float %676, float %mul.i.3.2, float 1.000000e+00) #5
%679 = tail call float @llvm.fmuladd.f32(float %677, float %mul176.3.2, float %678) #5
%div.i.3.2 = fdiv float 1.000000e+00, %679, !fpmath !46
%680 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.3.2, float 0xBF0BFF7260000000) #5
%681 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.3.2, float 0x3F50794180000000) #5
%682 = tail call float @llvm.fmuladd.f32(float %680, float %mul.i.3.2, float 0xBF93BDB200000000) #5
%683 = tail call float @llvm.fmuladd.f32(float %681, float %mul.i.3.2, float 0x3FB1D5E760000000) #5
%684 = tail call float @llvm.fmuladd.f32(float %682, float %mul.i.3.2, float 0xBFE81272E0000000) #5
%685 = tail call float @llvm.fmuladd.f32(float %683, float %mul176.3.2, float %684) #5
%mul11.i.3.2 = fmul float %685, %div.i.3.2
%mul178.3.2 = fmul float %mul19, %mul11.i.3.2
%686 = tail call float @llvm.fmuladd.f32(float %mul174.3.2, float %div165.3.2, float %mul178.3.2)
%687 = tail call float @llvm.fmuladd.f32(float %mul173.3.2, float %686, float %mul172.3.2)
%splat.splatinsert.3.2 = insertelement <3 x float> undef, float %687, i32 0
%splat.splat.3.2 = shufflevector <3 x float> %splat.splatinsert.3.2, <3 x float> undef, <3 x i32> zeroinitializer
%mul183.3.2 = fmul <3 x float> %extractVec135.3.2, %splat.splat.3.2
%extractVec191.3.2 = shufflevector <4 x float> %fcj_buf.sroa.0.1.2.2, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub192.3.2 = fsub <3 x float> %extractVec191.3.2, %mul183.3.2
%extractVec193.3.2 = shufflevector <3 x float> %sub192.3.2, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec201.3.2 = shufflevector <4 x float> %loadVec4200.3.2, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add202.3.2 = fadd <3 x float> %extractVec201.3.2, %mul183.3.2
%extractVec203.3.2 = shufflevector <3 x float> %add202.3.2, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end206.3.2
if.end206.3.2: ; preds = %if.then151.3.2, %if.then117.3.2, %if.end206.2.2
%688 = phi <3 x float> [ %add202.3.2, %if.then151.3.2 ], [ %568, %if.then117.3.2 ], [ %568, %if.end206.2.2 ]
%loadVec4200.3695 = phi <4 x float> [ %extractVec203.3.2, %if.then151.3.2 ], [ %loadVec4200.3.2, %if.then117.3.2 ], [ %loadVec4200.3.2, %if.end206.2.2 ]
%fcj_buf.sroa.0.1.3.2 = phi <4 x float> [ %extractVec193.3.2, %if.then151.3.2 ], [ %fcj_buf.sroa.0.1.2.2, %if.then117.3.2 ], [ %fcj_buf.sroa.0.1.2.2, %if.end206.2.2 ]
%and115.4.2 = and i32 %45, 1048576
%tobool116.4.2 = icmp eq i32 %and115.4.2, 0
br i1 %tobool116.4.2, label %if.end206.4.2, label %if.then117.4.2
if.then117.4.2: ; preds = %if.end206.3.2
%689 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx124.4.3, align 16, !tbaa !36
%690 = fsub <4 x float> %689, %574
%691 = extractelement <4 x float> %690, i32 0
%692 = extractelement <4 x float> %690, i32 1
%mul3.i.i.4.2 = fmul float %692, %692
%693 = tail call float @llvm.fmuladd.f32(float %691, float %691, float %mul3.i.i.4.2) #5
%694 = extractelement <4 x float> %690, i32 2
%695 = tail call float @llvm.fmuladd.f32(float %694, float %694, float %693) #5
%and137.4.2 = and i32 %47, 1048576
%tobool138.4.2 = icmp ne i32 %and137.4.2, 0
%cond.4.2 = select i1 %tobool138.4.2, float 1.000000e+00, float 0.000000e+00
%notrhs.4.2 = icmp ne i32 %28, %572
%not.or.cond.4.2 = or i1 %notlhs, %notrhs.4.2
%cmp145..4.2 = or i1 %cmp145, %not.or.cond.4.2
%conv147.4.2 = uitofp i1 %cmp145..4.2 to float
%mul148.4.2 = fmul float %conv147.4.2, %nbparam_params_rcoulomb_sq
%cmp149.4.2 = fcmp olt float %695, %mul148.4.2
br i1 %cmp149.4.2, label %if.then151.4.2, label %if.end206.4.2
if.then151.4.2: ; preds = %if.then117.4.2
%extractVec135.4.2 = shufflevector <4 x float> %690, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%696 = extractelement <4 x float> %689, i32 3
%697 = load i32, i32 addrspace(1)* %arrayidx152.4.3, align 4, !tbaa !41
%mul153.4.2 = mul nsw i32 %697, %ntypes
%add154.4.2 = add nsw i32 %mul153.4.2, %576
%mul155.4.2 = shl nsw i32 %add154.4.2, 1
%698 = sext i32 %mul155.4.2 to i64
%arrayidx156.4.2 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %698
%699 = load float, float addrspace(2)* %arrayidx156.4.2, align 4, !tbaa !39
%add160.4.2 = or i32 %mul155.4.2, 1
%700 = sext i32 %add160.4.2 to i64
%arrayidx161.4.2 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %700
%701 = load float, float addrspace(2)* %arrayidx161.4.2, align 4, !tbaa !39
%sub162.4.2 = fsub float 1.000000e+00, %cond.4.2
%702 = tail call float @llvm.fmuladd.f32(float %sub162.4.2, float 0x3D71979980000000, float %695)
%cmp.i.i.4.2 = fcmp olt float %702, 0.000000e+00
%call.i.i.4.2 = tail call float @llvm.sqrt.f32(float %702) #6
%call.i.i.op.4.2 = fdiv float 1.000000e+00, %call.i.i.4.2
%div165.4.2 = select i1 %cmp.i.i.4.2, float 0x7FF8000000000000, float %call.i.i.op.4.2
%mul166.4.2 = fmul float %div165.4.2, %div165.4.2
%mul167.4.2 = fmul float %mul166.4.2, %mul166.4.2
%mul168.4.2 = fmul float %mul166.4.2, %mul167.4.2
%mul169.4.2 = fmul float %cond.4.2, %mul168.4.2
%neg.4.2 = fsub float -0.000000e+00, %699
%703 = tail call float @llvm.fmuladd.f32(float %701, float %mul169.4.2, float %neg.4.2)
%mul171.4.2 = fmul float %mul169.4.2, %703
%mul172.4.2 = fmul float %mul166.4.2, %mul171.4.2
%mul173.4.2 = fmul float %575, %696
%mul174.4.2 = fmul float %cond.4.2, %mul166.4.2
%mul176.4.2 = fmul float %mul, %702
%mul.i.4.2 = fmul float %mul176.4.2, %mul176.4.2
%704 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.4.2, float 0x3FBDA79640000000) #5
%705 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.4.2, float 0x3FE03C5780000000) #5
%706 = tail call float @llvm.fmuladd.f32(float %704, float %mul.i.4.2, float 1.000000e+00) #5
%707 = tail call float @llvm.fmuladd.f32(float %705, float %mul176.4.2, float %706) #5
%div.i.4.2 = fdiv float 1.000000e+00, %707, !fpmath !46
%708 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.4.2, float 0xBF0BFF7260000000) #5
%709 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.4.2, float 0x3F50794180000000) #5
%710 = tail call float @llvm.fmuladd.f32(float %708, float %mul.i.4.2, float 0xBF93BDB200000000) #5
%711 = tail call float @llvm.fmuladd.f32(float %709, float %mul.i.4.2, float 0x3FB1D5E760000000) #5
%712 = tail call float @llvm.fmuladd.f32(float %710, float %mul.i.4.2, float 0xBFE81272E0000000) #5
%713 = tail call float @llvm.fmuladd.f32(float %711, float %mul176.4.2, float %712) #5
%mul11.i.4.2 = fmul float %713, %div.i.4.2
%mul178.4.2 = fmul float %mul19, %mul11.i.4.2
%714 = tail call float @llvm.fmuladd.f32(float %mul174.4.2, float %div165.4.2, float %mul178.4.2)
%715 = tail call float @llvm.fmuladd.f32(float %mul173.4.2, float %714, float %mul172.4.2)
%splat.splatinsert.4.2 = insertelement <3 x float> undef, float %715, i32 0
%splat.splat.4.2 = shufflevector <3 x float> %splat.splatinsert.4.2, <3 x float> undef, <3 x i32> zeroinitializer
%mul183.4.2 = fmul <3 x float> %extractVec135.4.2, %splat.splat.4.2
%extractVec191.4.2 = shufflevector <4 x float> %fcj_buf.sroa.0.1.3.2, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub192.4.2 = fsub <3 x float> %extractVec191.4.2, %mul183.4.2
%extractVec193.4.2 = shufflevector <3 x float> %sub192.4.2, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec201.4.2 = shufflevector <4 x float> %loadVec4200.4.2, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add202.4.2 = fadd <3 x float> %extractVec201.4.2, %mul183.4.2
%extractVec203.4.2 = shufflevector <3 x float> %add202.4.2, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end206.4.2
if.end206.4.2: ; preds = %if.then151.4.2, %if.then117.4.2, %if.end206.3.2
%716 = phi <3 x float> [ %add202.4.2, %if.then151.4.2 ], [ %567, %if.then117.4.2 ], [ %567, %if.end206.3.2 ]
%loadVec4200.4705 = phi <4 x float> [ %extractVec203.4.2, %if.then151.4.2 ], [ %loadVec4200.4.2, %if.then117.4.2 ], [ %loadVec4200.4.2, %if.end206.3.2 ]
%fcj_buf.sroa.0.1.4.2 = phi <4 x float> [ %extractVec193.4.2, %if.then151.4.2 ], [ %fcj_buf.sroa.0.1.3.2, %if.then117.4.2 ], [ %fcj_buf.sroa.0.1.3.2, %if.end206.3.2 ]
%and115.5.2 = and i32 %45, 2097152
%tobool116.5.2 = icmp eq i32 %and115.5.2, 0
br i1 %tobool116.5.2, label %if.end206.5.2, label %if.then117.5.2
if.then117.5.2: ; preds = %if.end206.4.2
%717 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx124.5.3, align 16, !tbaa !36
%718 = fsub <4 x float> %717, %574
%719 = extractelement <4 x float> %718, i32 0
%720 = extractelement <4 x float> %718, i32 1
%mul3.i.i.5.2 = fmul float %720, %720
%721 = tail call float @llvm.fmuladd.f32(float %719, float %719, float %mul3.i.i.5.2) #5
%722 = extractelement <4 x float> %718, i32 2
%723 = tail call float @llvm.fmuladd.f32(float %722, float %722, float %721) #5
%and137.5.2 = and i32 %47, 2097152
%tobool138.5.2 = icmp ne i32 %and137.5.2, 0
%cond.5.2 = select i1 %tobool138.5.2, float 1.000000e+00, float 0.000000e+00
%notrhs.5.2 = icmp ne i32 %26, %572
%not.or.cond.5.2 = or i1 %notlhs, %notrhs.5.2
%cmp145..5.2 = or i1 %cmp145, %not.or.cond.5.2
%conv147.5.2 = uitofp i1 %cmp145..5.2 to float
%mul148.5.2 = fmul float %conv147.5.2, %nbparam_params_rcoulomb_sq
%cmp149.5.2 = fcmp olt float %723, %mul148.5.2
br i1 %cmp149.5.2, label %if.then151.5.2, label %if.end206.5.2
if.then151.5.2: ; preds = %if.then117.5.2
%extractVec135.5.2 = shufflevector <4 x float> %718, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%724 = extractelement <4 x float> %717, i32 3
%725 = load i32, i32 addrspace(1)* %arrayidx152.5.3, align 4, !tbaa !41
%mul153.5.2 = mul nsw i32 %725, %ntypes
%add154.5.2 = add nsw i32 %mul153.5.2, %576
%mul155.5.2 = shl nsw i32 %add154.5.2, 1
%726 = sext i32 %mul155.5.2 to i64
%arrayidx156.5.2 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %726
%727 = load float, float addrspace(2)* %arrayidx156.5.2, align 4, !tbaa !39
%add160.5.2 = or i32 %mul155.5.2, 1
%728 = sext i32 %add160.5.2 to i64
%arrayidx161.5.2 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %728
%729 = load float, float addrspace(2)* %arrayidx161.5.2, align 4, !tbaa !39
%sub162.5.2 = fsub float 1.000000e+00, %cond.5.2
%730 = tail call float @llvm.fmuladd.f32(float %sub162.5.2, float 0x3D71979980000000, float %723)
%cmp.i.i.5.2 = fcmp olt float %730, 0.000000e+00
%call.i.i.5.2 = tail call float @llvm.sqrt.f32(float %730) #6
%call.i.i.op.5.2 = fdiv float 1.000000e+00, %call.i.i.5.2
%div165.5.2 = select i1 %cmp.i.i.5.2, float 0x7FF8000000000000, float %call.i.i.op.5.2
%mul166.5.2 = fmul float %div165.5.2, %div165.5.2
%mul167.5.2 = fmul float %mul166.5.2, %mul166.5.2
%mul168.5.2 = fmul float %mul166.5.2, %mul167.5.2
%mul169.5.2 = fmul float %cond.5.2, %mul168.5.2
%neg.5.2 = fsub float -0.000000e+00, %727
%731 = tail call float @llvm.fmuladd.f32(float %729, float %mul169.5.2, float %neg.5.2)
%mul171.5.2 = fmul float %mul169.5.2, %731
%mul172.5.2 = fmul float %mul166.5.2, %mul171.5.2
%mul173.5.2 = fmul float %575, %724
%mul174.5.2 = fmul float %cond.5.2, %mul166.5.2
%mul176.5.2 = fmul float %mul, %730
%mul.i.5.2 = fmul float %mul176.5.2, %mul176.5.2
%732 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.5.2, float 0x3FBDA79640000000) #5
%733 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.5.2, float 0x3FE03C5780000000) #5
%734 = tail call float @llvm.fmuladd.f32(float %732, float %mul.i.5.2, float 1.000000e+00) #5
%735 = tail call float @llvm.fmuladd.f32(float %733, float %mul176.5.2, float %734) #5
%div.i.5.2 = fdiv float 1.000000e+00, %735, !fpmath !46
%736 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.5.2, float 0xBF0BFF7260000000) #5
%737 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.5.2, float 0x3F50794180000000) #5
%738 = tail call float @llvm.fmuladd.f32(float %736, float %mul.i.5.2, float 0xBF93BDB200000000) #5
%739 = tail call float @llvm.fmuladd.f32(float %737, float %mul.i.5.2, float 0x3FB1D5E760000000) #5
%740 = tail call float @llvm.fmuladd.f32(float %738, float %mul.i.5.2, float 0xBFE81272E0000000) #5
%741 = tail call float @llvm.fmuladd.f32(float %739, float %mul176.5.2, float %740) #5
%mul11.i.5.2 = fmul float %741, %div.i.5.2
%mul178.5.2 = fmul float %mul19, %mul11.i.5.2
%742 = tail call float @llvm.fmuladd.f32(float %mul174.5.2, float %div165.5.2, float %mul178.5.2)
%743 = tail call float @llvm.fmuladd.f32(float %mul173.5.2, float %742, float %mul172.5.2)
%splat.splatinsert.5.2 = insertelement <3 x float> undef, float %743, i32 0
%splat.splat.5.2 = shufflevector <3 x float> %splat.splatinsert.5.2, <3 x float> undef, <3 x i32> zeroinitializer
%mul183.5.2 = fmul <3 x float> %extractVec135.5.2, %splat.splat.5.2
%extractVec191.5.2 = shufflevector <4 x float> %fcj_buf.sroa.0.1.4.2, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub192.5.2 = fsub <3 x float> %extractVec191.5.2, %mul183.5.2
%extractVec193.5.2 = shufflevector <3 x float> %sub192.5.2, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec201.5.2 = shufflevector <4 x float> %loadVec4200.5.2, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add202.5.2 = fadd <3 x float> %extractVec201.5.2, %mul183.5.2
%extractVec203.5.2 = shufflevector <3 x float> %add202.5.2, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end206.5.2
if.end206.5.2: ; preds = %if.then151.5.2, %if.then117.5.2, %if.end206.4.2
%744 = phi <3 x float> [ %add202.5.2, %if.then151.5.2 ], [ %566, %if.then117.5.2 ], [ %566, %if.end206.4.2 ]
%loadVec4200.5715 = phi <4 x float> [ %extractVec203.5.2, %if.then151.5.2 ], [ %loadVec4200.5.2, %if.then117.5.2 ], [ %loadVec4200.5.2, %if.end206.4.2 ]
%fcj_buf.sroa.0.1.5.2 = phi <4 x float> [ %extractVec193.5.2, %if.then151.5.2 ], [ %fcj_buf.sroa.0.1.4.2, %if.then117.5.2 ], [ %fcj_buf.sroa.0.1.4.2, %if.end206.4.2 ]
%and115.6.2 = and i32 %45, 4194304
%tobool116.6.2 = icmp eq i32 %and115.6.2, 0
br i1 %tobool116.6.2, label %if.end206.6.2, label %if.then117.6.2
if.then117.6.2: ; preds = %if.end206.5.2
%745 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx124.6.3, align 16, !tbaa !36
%746 = fsub <4 x float> %745, %574
%747 = extractelement <4 x float> %746, i32 0
%748 = extractelement <4 x float> %746, i32 1
%mul3.i.i.6.2 = fmul float %748, %748
%749 = tail call float @llvm.fmuladd.f32(float %747, float %747, float %mul3.i.i.6.2) #5
%750 = extractelement <4 x float> %746, i32 2
%751 = tail call float @llvm.fmuladd.f32(float %750, float %750, float %749) #5
%and137.6.2 = and i32 %47, 4194304
%tobool138.6.2 = icmp ne i32 %and137.6.2, 0
%cond.6.2 = select i1 %tobool138.6.2, float 1.000000e+00, float 0.000000e+00
%notrhs.6.2 = icmp ne i32 %24, %572
%not.or.cond.6.2 = or i1 %notlhs, %notrhs.6.2
%cmp145..6.2 = or i1 %cmp145, %not.or.cond.6.2
%conv147.6.2 = uitofp i1 %cmp145..6.2 to float
%mul148.6.2 = fmul float %conv147.6.2, %nbparam_params_rcoulomb_sq
%cmp149.6.2 = fcmp olt float %751, %mul148.6.2
br i1 %cmp149.6.2, label %if.then151.6.2, label %if.end206.6.2
if.then151.6.2: ; preds = %if.then117.6.2
%extractVec135.6.2 = shufflevector <4 x float> %746, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%752 = extractelement <4 x float> %745, i32 3
%753 = load i32, i32 addrspace(1)* %arrayidx152.6.3, align 4, !tbaa !41
%mul153.6.2 = mul nsw i32 %753, %ntypes
%add154.6.2 = add nsw i32 %mul153.6.2, %576
%mul155.6.2 = shl nsw i32 %add154.6.2, 1
%754 = sext i32 %mul155.6.2 to i64
%arrayidx156.6.2 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %754
%755 = load float, float addrspace(2)* %arrayidx156.6.2, align 4, !tbaa !39
%add160.6.2 = or i32 %mul155.6.2, 1
%756 = sext i32 %add160.6.2 to i64
%arrayidx161.6.2 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %756
%757 = load float, float addrspace(2)* %arrayidx161.6.2, align 4, !tbaa !39
%sub162.6.2 = fsub float 1.000000e+00, %cond.6.2
%758 = tail call float @llvm.fmuladd.f32(float %sub162.6.2, float 0x3D71979980000000, float %751)
%cmp.i.i.6.2 = fcmp olt float %758, 0.000000e+00
%call.i.i.6.2 = tail call float @llvm.sqrt.f32(float %758) #6
%call.i.i.op.6.2 = fdiv float 1.000000e+00, %call.i.i.6.2
%div165.6.2 = select i1 %cmp.i.i.6.2, float 0x7FF8000000000000, float %call.i.i.op.6.2
%mul166.6.2 = fmul float %div165.6.2, %div165.6.2
%mul167.6.2 = fmul float %mul166.6.2, %mul166.6.2
%mul168.6.2 = fmul float %mul166.6.2, %mul167.6.2
%mul169.6.2 = fmul float %cond.6.2, %mul168.6.2
%neg.6.2 = fsub float -0.000000e+00, %755
%759 = tail call float @llvm.fmuladd.f32(float %757, float %mul169.6.2, float %neg.6.2)
%mul171.6.2 = fmul float %mul169.6.2, %759
%mul172.6.2 = fmul float %mul166.6.2, %mul171.6.2
%mul173.6.2 = fmul float %575, %752
%mul174.6.2 = fmul float %cond.6.2, %mul166.6.2
%mul176.6.2 = fmul float %mul, %758
%mul.i.6.2 = fmul float %mul176.6.2, %mul176.6.2
%760 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.6.2, float 0x3FBDA79640000000) #5
%761 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.6.2, float 0x3FE03C5780000000) #5
%762 = tail call float @llvm.fmuladd.f32(float %760, float %mul.i.6.2, float 1.000000e+00) #5
%763 = tail call float @llvm.fmuladd.f32(float %761, float %mul176.6.2, float %762) #5
%div.i.6.2 = fdiv float 1.000000e+00, %763, !fpmath !46
%764 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.6.2, float 0xBF0BFF7260000000) #5
%765 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.6.2, float 0x3F50794180000000) #5
%766 = tail call float @llvm.fmuladd.f32(float %764, float %mul.i.6.2, float 0xBF93BDB200000000) #5
%767 = tail call float @llvm.fmuladd.f32(float %765, float %mul.i.6.2, float 0x3FB1D5E760000000) #5
%768 = tail call float @llvm.fmuladd.f32(float %766, float %mul.i.6.2, float 0xBFE81272E0000000) #5
%769 = tail call float @llvm.fmuladd.f32(float %767, float %mul176.6.2, float %768) #5
%mul11.i.6.2 = fmul float %769, %div.i.6.2
%mul178.6.2 = fmul float %mul19, %mul11.i.6.2
%770 = tail call float @llvm.fmuladd.f32(float %mul174.6.2, float %div165.6.2, float %mul178.6.2)
%771 = tail call float @llvm.fmuladd.f32(float %mul173.6.2, float %770, float %mul172.6.2)
%splat.splatinsert.6.2 = insertelement <3 x float> undef, float %771, i32 0
%splat.splat.6.2 = shufflevector <3 x float> %splat.splatinsert.6.2, <3 x float> undef, <3 x i32> zeroinitializer
%mul183.6.2 = fmul <3 x float> %extractVec135.6.2, %splat.splat.6.2
%extractVec191.6.2 = shufflevector <4 x float> %fcj_buf.sroa.0.1.5.2, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub192.6.2 = fsub <3 x float> %extractVec191.6.2, %mul183.6.2
%extractVec193.6.2 = shufflevector <3 x float> %sub192.6.2, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec201.6.2 = shufflevector <4 x float> %loadVec4200.6.2, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add202.6.2 = fadd <3 x float> %extractVec201.6.2, %mul183.6.2
%extractVec203.6.2 = shufflevector <3 x float> %add202.6.2, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end206.6.2
if.end206.6.2: ; preds = %if.then151.6.2, %if.then117.6.2, %if.end206.5.2
%772 = phi <3 x float> [ %add202.6.2, %if.then151.6.2 ], [ %565, %if.then117.6.2 ], [ %565, %if.end206.5.2 ]
%loadVec4200.6725 = phi <4 x float> [ %extractVec203.6.2, %if.then151.6.2 ], [ %loadVec4200.6.2, %if.then117.6.2 ], [ %loadVec4200.6.2, %if.end206.5.2 ]
%fcj_buf.sroa.0.1.6.2 = phi <4 x float> [ %extractVec193.6.2, %if.then151.6.2 ], [ %fcj_buf.sroa.0.1.5.2, %if.then117.6.2 ], [ %fcj_buf.sroa.0.1.5.2, %if.end206.5.2 ]
%and115.7.2 = and i32 %45, 8388608
%tobool116.7.2 = icmp eq i32 %and115.7.2, 0
br i1 %tobool116.7.2, label %if.end206.7.2, label %if.then117.7.2
if.then117.7.2: ; preds = %if.end206.6.2
%773 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx124.7.3, align 16, !tbaa !36
%774 = fsub <4 x float> %773, %574
%775 = extractelement <4 x float> %774, i32 0
%776 = extractelement <4 x float> %774, i32 1
%mul3.i.i.7.2 = fmul float %776, %776
%777 = tail call float @llvm.fmuladd.f32(float %775, float %775, float %mul3.i.i.7.2) #5
%778 = extractelement <4 x float> %774, i32 2
%779 = tail call float @llvm.fmuladd.f32(float %778, float %778, float %777) #5
%and137.7.2 = and i32 %47, 8388608
%tobool138.7.2 = icmp ne i32 %and137.7.2, 0
%cond.7.2 = select i1 %tobool138.7.2, float 1.000000e+00, float 0.000000e+00
%notrhs.7.2 = icmp ne i32 %22, %572
%not.or.cond.7.2 = or i1 %notlhs, %notrhs.7.2
%cmp145..7.2 = or i1 %cmp145, %not.or.cond.7.2
%conv147.7.2 = uitofp i1 %cmp145..7.2 to float
%mul148.7.2 = fmul float %conv147.7.2, %nbparam_params_rcoulomb_sq
%cmp149.7.2 = fcmp olt float %779, %mul148.7.2
br i1 %cmp149.7.2, label %if.then151.7.2, label %if.end206.7.2
if.then151.7.2: ; preds = %if.then117.7.2
%extractVec135.7.2 = shufflevector <4 x float> %774, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%780 = extractelement <4 x float> %773, i32 3
%781 = load i32, i32 addrspace(1)* %arrayidx152.7.3, align 4, !tbaa !41
%mul153.7.2 = mul nsw i32 %781, %ntypes
%add154.7.2 = add nsw i32 %mul153.7.2, %576
%mul155.7.2 = shl nsw i32 %add154.7.2, 1
%782 = sext i32 %mul155.7.2 to i64
%arrayidx156.7.2 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %782
%783 = load float, float addrspace(2)* %arrayidx156.7.2, align 4, !tbaa !39
%add160.7.2 = or i32 %mul155.7.2, 1
%784 = sext i32 %add160.7.2 to i64
%arrayidx161.7.2 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %784
%785 = load float, float addrspace(2)* %arrayidx161.7.2, align 4, !tbaa !39
%sub162.7.2 = fsub float 1.000000e+00, %cond.7.2
%786 = tail call float @llvm.fmuladd.f32(float %sub162.7.2, float 0x3D71979980000000, float %779)
%cmp.i.i.7.2 = fcmp olt float %786, 0.000000e+00
%call.i.i.7.2 = tail call float @llvm.sqrt.f32(float %786) #6
%call.i.i.op.7.2 = fdiv float 1.000000e+00, %call.i.i.7.2
%div165.7.2 = select i1 %cmp.i.i.7.2, float 0x7FF8000000000000, float %call.i.i.op.7.2
%mul166.7.2 = fmul float %div165.7.2, %div165.7.2
%mul167.7.2 = fmul float %mul166.7.2, %mul166.7.2
%mul168.7.2 = fmul float %mul166.7.2, %mul167.7.2
%mul169.7.2 = fmul float %cond.7.2, %mul168.7.2
%neg.7.2 = fsub float -0.000000e+00, %783
%787 = tail call float @llvm.fmuladd.f32(float %785, float %mul169.7.2, float %neg.7.2)
%mul171.7.2 = fmul float %mul169.7.2, %787
%mul172.7.2 = fmul float %mul166.7.2, %mul171.7.2
%mul173.7.2 = fmul float %575, %780
%mul174.7.2 = fmul float %cond.7.2, %mul166.7.2
%mul176.7.2 = fmul float %mul, %786
%mul.i.7.2 = fmul float %mul176.7.2, %mul176.7.2
%788 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.7.2, float 0x3FBDA79640000000) #5
%789 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.7.2, float 0x3FE03C5780000000) #5
%790 = tail call float @llvm.fmuladd.f32(float %788, float %mul.i.7.2, float 1.000000e+00) #5
%791 = tail call float @llvm.fmuladd.f32(float %789, float %mul176.7.2, float %790) #5
%div.i.7.2 = fdiv float 1.000000e+00, %791, !fpmath !46
%792 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.7.2, float 0xBF0BFF7260000000) #5
%793 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.7.2, float 0x3F50794180000000) #5
%794 = tail call float @llvm.fmuladd.f32(float %792, float %mul.i.7.2, float 0xBF93BDB200000000) #5
%795 = tail call float @llvm.fmuladd.f32(float %793, float %mul.i.7.2, float 0x3FB1D5E760000000) #5
%796 = tail call float @llvm.fmuladd.f32(float %794, float %mul.i.7.2, float 0xBFE81272E0000000) #5
%797 = tail call float @llvm.fmuladd.f32(float %795, float %mul176.7.2, float %796) #5
%mul11.i.7.2 = fmul float %797, %div.i.7.2
%mul178.7.2 = fmul float %mul19, %mul11.i.7.2
%798 = tail call float @llvm.fmuladd.f32(float %mul174.7.2, float %div165.7.2, float %mul178.7.2)
%799 = tail call float @llvm.fmuladd.f32(float %mul173.7.2, float %798, float %mul172.7.2)
%splat.splatinsert.7.2 = insertelement <3 x float> undef, float %799, i32 0
%splat.splat.7.2 = shufflevector <3 x float> %splat.splatinsert.7.2, <3 x float> undef, <3 x i32> zeroinitializer
%mul183.7.2 = fmul <3 x float> %extractVec135.7.2, %splat.splat.7.2
%extractVec191.7.2 = shufflevector <4 x float> %fcj_buf.sroa.0.1.6.2, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub192.7.2 = fsub <3 x float> %extractVec191.7.2, %mul183.7.2
%extractVec193.7.2 = shufflevector <3 x float> %sub192.7.2, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec201.7.2 = shufflevector <4 x float> %loadVec4200.7.2, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add202.7.2 = fadd <3 x float> %extractVec201.7.2, %mul183.7.2
%extractVec203.7.2 = shufflevector <3 x float> %add202.7.2, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end206.7.2
if.end206.7.2: ; preds = %if.then151.7.2, %if.then117.7.2, %if.end206.6.2
%fci_buf.sroa.37.7 = phi <4 x float> [ %fci_buf.sroa.37.6, %if.end206.6.2 ], [ %extractVec203.7.2, %if.then151.7.2 ], [ %fci_buf.sroa.37.6, %if.then117.7.2 ]
%loadVec4200.7735 = phi <4 x float> [ %loadVec4200.7.2, %if.end206.6.2 ], [ %extractVec203.7.2, %if.then151.7.2 ], [ %loadVec4200.7.2, %if.then117.7.2 ]
%fcj_buf.sroa.0.1.7.2 = phi <4 x float> [ %fcj_buf.sroa.0.1.6.2, %if.end206.6.2 ], [ %extractVec193.7.2, %if.then151.7.2 ], [ %fcj_buf.sroa.0.1.6.2, %if.then117.7.2 ]
%800 = extractelement <4 x float> %fcj_buf.sroa.0.1.7.2, i32 0
store float %800, float addrspace(3)* %arrayidx211, align 4, !tbaa !39
%801 = extractelement <4 x float> %fcj_buf.sroa.0.1.7.2, i32 1
store float %801, float addrspace(3)* %arrayidx213, align 4, !tbaa !39
%802 = extractelement <4 x float> %fcj_buf.sroa.0.1.7.2, i32 2
store float %802, float addrspace(3)* %arrayidx215, align 4, !tbaa !39
tail call fastcc void @reduce_force_j_generic(float addrspace(3)* %2, float addrspace(1)* %f, i32 %x.i, i32 %y.i, i32 %add106.2)
br label %for.inc217.2
for.inc217.2: ; preds = %if.end206.7.2, %for.inc217.1
%fci_buf.sroa.37.8 = phi <4 x float> [ %fci_buf.sroa.37.6, %for.inc217.1 ], [ %fci_buf.sroa.37.7, %if.end206.7.2 ]
%803 = phi <3 x float> [ %565, %for.inc217.1 ], [ %772, %if.end206.7.2 ]
%804 = phi <3 x float> [ %566, %for.inc217.1 ], [ %744, %if.end206.7.2 ]
%805 = phi <3 x float> [ %567, %for.inc217.1 ], [ %716, %if.end206.7.2 ]
%806 = phi <3 x float> [ %568, %for.inc217.1 ], [ %688, %if.end206.7.2 ]
%807 = phi <3 x float> [ %569, %for.inc217.1 ], [ %660, %if.end206.7.2 ]
%808 = phi <3 x float> [ %570, %for.inc217.1 ], [ %632, %if.end206.7.2 ]
%809 = phi <3 x float> [ %571, %for.inc217.1 ], [ %604, %if.end206.7.2 ]
%loadVec4200.7.3 = phi <4 x float> [ %loadVec4200.7.2, %for.inc217.1 ], [ %loadVec4200.7735, %if.end206.7.2 ]
%loadVec4200.6.3 = phi <4 x float> [ %loadVec4200.6.2, %for.inc217.1 ], [ %loadVec4200.6725, %if.end206.7.2 ]
%loadVec4200.5.3 = phi <4 x float> [ %loadVec4200.5.2, %for.inc217.1 ], [ %loadVec4200.5715, %if.end206.7.2 ]
%loadVec4200.4.3 = phi <4 x float> [ %loadVec4200.4.2, %for.inc217.1 ], [ %loadVec4200.4705, %if.end206.7.2 ]
%loadVec4200.3.3 = phi <4 x float> [ %loadVec4200.3.2, %for.inc217.1 ], [ %loadVec4200.3695, %if.end206.7.2 ]
%loadVec4200.2.3 = phi <4 x float> [ %loadVec4200.2.2, %for.inc217.1 ], [ %loadVec4200.2685, %if.end206.7.2 ]
%loadVec4200.1.3 = phi <4 x float> [ %loadVec4200.1.2, %for.inc217.1 ], [ %loadVec4200.1675, %if.end206.7.2 ]
%loadVec4200.3655 = phi <4 x float> [ %loadVec4200.2597, %for.inc217.1 ], [ %loadVec4200665, %if.end206.7.2 ]
%tobool95.3 = icmp ult i32 %45, 16777216
br i1 %tobool95.3, label %for.inc221, label %if.then96.3
if.then96.3: ; preds = %for.inc217.2
%810 = load i32, i32 addrspace(3)* %arrayidx104.3, align 4, !tbaa !41
%mul105.3 = shl nsw i32 %810, 3
%add106.3 = add i32 %mul105.3, %y.i
%811 = sext i32 %add106.3 to i64
%arrayidx107.3 = getelementptr inbounds <4 x float>, <4 x float> addrspace(1)* %xq, i64 %811
%812 = load <4 x float>, <4 x float> addrspace(1)* %arrayidx107.3, align 16, !tbaa !36
%813 = extractelement <4 x float> %812, i32 3
%arrayidx109.3 = getelementptr inbounds i32, i32 addrspace(1)* %atom_types, i64 %811
%814 = load i32, i32 addrspace(1)* %arrayidx109.3, align 4, !tbaa !41
%and115.3605 = and i32 %45, 16777216
%tobool116.3606 = icmp eq i32 %and115.3605, 0
br i1 %tobool116.3606, label %if.end206.3662, label %if.then117.3618
if.then117.3618: ; preds = %if.then96.3
%815 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx124.3607, align 16, !tbaa !36
%816 = fsub <4 x float> %815, %812
%817 = extractelement <4 x float> %816, i32 0
%818 = extractelement <4 x float> %816, i32 1
%mul3.i.i.3608 = fmul float %818, %818
%819 = tail call float @llvm.fmuladd.f32(float %817, float %817, float %mul3.i.i.3608) #5
%820 = extractelement <4 x float> %816, i32 2
%821 = tail call float @llvm.fmuladd.f32(float %820, float %820, float %819) #5
%and137.3609 = and i32 %47, 16777216
%tobool138.3610 = icmp ne i32 %and137.3609, 0
%cond.3611 = select i1 %tobool138.3610, float 1.000000e+00, float 0.000000e+00
%notrhs.3612 = icmp ne i32 %mul29, %810
%not.or.cond.3613 = or i1 %notlhs, %notrhs.3612
%cmp145..3614 = or i1 %cmp145, %not.or.cond.3613
%conv147.3615 = uitofp i1 %cmp145..3614 to float
%mul148.3616 = fmul float %conv147.3615, %nbparam_params_rcoulomb_sq
%cmp149.3617 = fcmp olt float %821, %mul148.3616
br i1 %cmp149.3617, label %if.then151.3659, label %if.end206.3662
if.then151.3659: ; preds = %if.then117.3618
%extractVec135.3619 = shufflevector <4 x float> %816, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%822 = extractelement <4 x float> %815, i32 3
%823 = load i32, i32 addrspace(1)* %arrayidx152.3622, align 4, !tbaa !41
%mul153.3623 = mul nsw i32 %823, %ntypes
%add154.3624 = add nsw i32 %mul153.3623, %814
%mul155.3625 = shl nsw i32 %add154.3624, 1
%824 = sext i32 %mul155.3625 to i64
%arrayidx156.3626 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %824
%825 = load float, float addrspace(2)* %arrayidx156.3626, align 4, !tbaa !39
%add160.3627 = or i32 %mul155.3625, 1
%826 = sext i32 %add160.3627 to i64
%arrayidx161.3628 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %826
%827 = load float, float addrspace(2)* %arrayidx161.3628, align 4, !tbaa !39
%sub162.3629 = fsub float 1.000000e+00, %cond.3611
%828 = tail call float @llvm.fmuladd.f32(float %sub162.3629, float 0x3D71979980000000, float %821)
%cmp.i.i.3630 = fcmp olt float %828, 0.000000e+00
%call.i.i.3631 = tail call float @llvm.sqrt.f32(float %828) #6
%call.i.i.op.3632 = fdiv float 1.000000e+00, %call.i.i.3631
%div165.3633 = select i1 %cmp.i.i.3630, float 0x7FF8000000000000, float %call.i.i.op.3632
%mul166.3634 = fmul float %div165.3633, %div165.3633
%mul167.3635 = fmul float %mul166.3634, %mul166.3634
%mul168.3636 = fmul float %mul166.3634, %mul167.3635
%mul169.3637 = fmul float %cond.3611, %mul168.3636
%neg.3638 = fsub float -0.000000e+00, %825
%829 = tail call float @llvm.fmuladd.f32(float %827, float %mul169.3637, float %neg.3638)
%mul171.3639 = fmul float %mul169.3637, %829
%mul172.3640 = fmul float %mul166.3634, %mul171.3639
%mul173.3641 = fmul float %813, %822
%mul174.3642 = fmul float %cond.3611, %mul166.3634
%mul176.3643 = fmul float %mul, %828
%mul.i.3644 = fmul float %mul176.3643, %mul176.3643
%830 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.3644, float 0x3FBDA79640000000) #5
%831 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.3644, float 0x3FE03C5780000000) #5
%832 = tail call float @llvm.fmuladd.f32(float %830, float %mul.i.3644, float 1.000000e+00) #5
%833 = tail call float @llvm.fmuladd.f32(float %831, float %mul176.3643, float %832) #5
%div.i.3645 = fdiv float 1.000000e+00, %833, !fpmath !46
%834 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.3644, float 0xBF0BFF7260000000) #5
%835 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.3644, float 0x3F50794180000000) #5
%836 = tail call float @llvm.fmuladd.f32(float %834, float %mul.i.3644, float 0xBF93BDB200000000) #5
%837 = tail call float @llvm.fmuladd.f32(float %835, float %mul.i.3644, float 0x3FB1D5E760000000) #5
%838 = tail call float @llvm.fmuladd.f32(float %836, float %mul.i.3644, float 0xBFE81272E0000000) #5
%839 = tail call float @llvm.fmuladd.f32(float %837, float %mul176.3643, float %838) #5
%mul11.i.3646 = fmul float %839, %div.i.3645
%mul178.3647 = fmul float %mul19, %mul11.i.3646
%840 = tail call float @llvm.fmuladd.f32(float %mul174.3642, float %div165.3633, float %mul178.3647)
%841 = tail call float @llvm.fmuladd.f32(float %mul173.3641, float %840, float %mul172.3640)
%splat.splatinsert.3648 = insertelement <3 x float> undef, float %841, i32 0
%splat.splat.3649 = shufflevector <3 x float> %splat.splatinsert.3648, <3 x float> undef, <3 x i32> zeroinitializer
%mul183.3650 = fmul <3 x float> %extractVec135.3619, %splat.splat.3649
%sub192.3651 = fsub <3 x float> zeroinitializer, %mul183.3650
%extractVec193.3652 = shufflevector <3 x float> %sub192.3651, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec201.3656 = shufflevector <4 x float> %loadVec4200.3655, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add202.3657 = fadd <3 x float> %extractVec201.3656, %mul183.3650
%extractVec203.3658 = shufflevector <3 x float> %add202.3657, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end206.3662
if.end206.3662: ; preds = %if.then151.3659, %if.then117.3618, %if.then96.3
%842 = phi <3 x float> [ %add202.3657, %if.then151.3659 ], [ %809, %if.then117.3618 ], [ %809, %if.then96.3 ]
%loadVec4200666 = phi <4 x float> [ %extractVec203.3658, %if.then151.3659 ], [ %loadVec4200.3655, %if.then117.3618 ], [ %loadVec4200.3655, %if.then96.3 ]
%fcj_buf.sroa.0.1.3660 = phi <4 x float> [ %extractVec193.3652, %if.then151.3659 ], [ <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float undef>, %if.then117.3618 ], [ <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float undef>, %if.then96.3 ]
%and115.1.3 = and i32 %45, 33554432
%tobool116.1.3 = icmp eq i32 %and115.1.3, 0
br i1 %tobool116.1.3, label %if.end206.1.3, label %if.then117.1.3
if.then117.1.3: ; preds = %if.end206.3662
%843 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx124.1.3, align 16, !tbaa !36
%844 = fsub <4 x float> %843, %812
%845 = extractelement <4 x float> %844, i32 0
%846 = extractelement <4 x float> %844, i32 1
%mul3.i.i.1.3 = fmul float %846, %846
%847 = tail call float @llvm.fmuladd.f32(float %845, float %845, float %mul3.i.i.1.3) #5
%848 = extractelement <4 x float> %844, i32 2
%849 = tail call float @llvm.fmuladd.f32(float %848, float %848, float %847) #5
%and137.1.3 = and i32 %47, 33554432
%tobool138.1.3 = icmp ne i32 %and137.1.3, 0
%cond.1.3 = select i1 %tobool138.1.3, float 1.000000e+00, float 0.000000e+00
%notrhs.1.3 = icmp ne i32 %34, %810
%not.or.cond.1.3 = or i1 %notlhs, %notrhs.1.3
%cmp145..1.3 = or i1 %cmp145, %not.or.cond.1.3
%conv147.1.3 = uitofp i1 %cmp145..1.3 to float
%mul148.1.3 = fmul float %conv147.1.3, %nbparam_params_rcoulomb_sq
%cmp149.1.3 = fcmp olt float %849, %mul148.1.3
br i1 %cmp149.1.3, label %if.then151.1.3, label %if.end206.1.3
if.then151.1.3: ; preds = %if.then117.1.3
%extractVec135.1.3 = shufflevector <4 x float> %844, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%850 = extractelement <4 x float> %843, i32 3
%851 = load i32, i32 addrspace(1)* %arrayidx152.1.3, align 4, !tbaa !41
%mul153.1.3 = mul nsw i32 %851, %ntypes
%add154.1.3 = add nsw i32 %mul153.1.3, %814
%mul155.1.3 = shl nsw i32 %add154.1.3, 1
%852 = sext i32 %mul155.1.3 to i64
%arrayidx156.1.3 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %852
%853 = load float, float addrspace(2)* %arrayidx156.1.3, align 4, !tbaa !39
%add160.1.3 = or i32 %mul155.1.3, 1
%854 = sext i32 %add160.1.3 to i64
%arrayidx161.1.3 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %854
%855 = load float, float addrspace(2)* %arrayidx161.1.3, align 4, !tbaa !39
%sub162.1.3 = fsub float 1.000000e+00, %cond.1.3
%856 = tail call float @llvm.fmuladd.f32(float %sub162.1.3, float 0x3D71979980000000, float %849)
%cmp.i.i.1.3 = fcmp olt float %856, 0.000000e+00
%call.i.i.1.3 = tail call float @llvm.sqrt.f32(float %856) #6
%call.i.i.op.1.3 = fdiv float 1.000000e+00, %call.i.i.1.3
%div165.1.3 = select i1 %cmp.i.i.1.3, float 0x7FF8000000000000, float %call.i.i.op.1.3
%mul166.1.3 = fmul float %div165.1.3, %div165.1.3
%mul167.1.3 = fmul float %mul166.1.3, %mul166.1.3
%mul168.1.3 = fmul float %mul166.1.3, %mul167.1.3
%mul169.1.3 = fmul float %cond.1.3, %mul168.1.3
%neg.1.3 = fsub float -0.000000e+00, %853
%857 = tail call float @llvm.fmuladd.f32(float %855, float %mul169.1.3, float %neg.1.3)
%mul171.1.3 = fmul float %mul169.1.3, %857
%mul172.1.3 = fmul float %mul166.1.3, %mul171.1.3
%mul173.1.3 = fmul float %813, %850
%mul174.1.3 = fmul float %cond.1.3, %mul166.1.3
%mul176.1.3 = fmul float %mul, %856
%mul.i.1.3 = fmul float %mul176.1.3, %mul176.1.3
%858 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.1.3, float 0x3FBDA79640000000) #5
%859 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.1.3, float 0x3FE03C5780000000) #5
%860 = tail call float @llvm.fmuladd.f32(float %858, float %mul.i.1.3, float 1.000000e+00) #5
%861 = tail call float @llvm.fmuladd.f32(float %859, float %mul176.1.3, float %860) #5
%div.i.1.3 = fdiv float 1.000000e+00, %861, !fpmath !46
%862 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.1.3, float 0xBF0BFF7260000000) #5
%863 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.1.3, float 0x3F50794180000000) #5
%864 = tail call float @llvm.fmuladd.f32(float %862, float %mul.i.1.3, float 0xBF93BDB200000000) #5
%865 = tail call float @llvm.fmuladd.f32(float %863, float %mul.i.1.3, float 0x3FB1D5E760000000) #5
%866 = tail call float @llvm.fmuladd.f32(float %864, float %mul.i.1.3, float 0xBFE81272E0000000) #5
%867 = tail call float @llvm.fmuladd.f32(float %865, float %mul176.1.3, float %866) #5
%mul11.i.1.3 = fmul float %867, %div.i.1.3
%mul178.1.3 = fmul float %mul19, %mul11.i.1.3
%868 = tail call float @llvm.fmuladd.f32(float %mul174.1.3, float %div165.1.3, float %mul178.1.3)
%869 = tail call float @llvm.fmuladd.f32(float %mul173.1.3, float %868, float %mul172.1.3)
%splat.splatinsert.1.3 = insertelement <3 x float> undef, float %869, i32 0
%splat.splat.1.3 = shufflevector <3 x float> %splat.splatinsert.1.3, <3 x float> undef, <3 x i32> zeroinitializer
%mul183.1.3 = fmul <3 x float> %extractVec135.1.3, %splat.splat.1.3
%extractVec191.1.3 = shufflevector <4 x float> %fcj_buf.sroa.0.1.3660, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub192.1.3 = fsub <3 x float> %extractVec191.1.3, %mul183.1.3
%extractVec193.1.3 = shufflevector <3 x float> %sub192.1.3, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec201.1.3 = shufflevector <4 x float> %loadVec4200.1.3, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add202.1.3 = fadd <3 x float> %extractVec201.1.3, %mul183.1.3
%extractVec203.1.3 = shufflevector <3 x float> %add202.1.3, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end206.1.3
if.end206.1.3: ; preds = %if.then151.1.3, %if.then117.1.3, %if.end206.3662
%870 = phi <3 x float> [ %add202.1.3, %if.then151.1.3 ], [ %808, %if.then117.1.3 ], [ %808, %if.end206.3662 ]
%loadVec4200.1676 = phi <4 x float> [ %extractVec203.1.3, %if.then151.1.3 ], [ %loadVec4200.1.3, %if.then117.1.3 ], [ %loadVec4200.1.3, %if.end206.3662 ]
%fcj_buf.sroa.0.1.1.3 = phi <4 x float> [ %extractVec193.1.3, %if.then151.1.3 ], [ %fcj_buf.sroa.0.1.3660, %if.then117.1.3 ], [ %fcj_buf.sroa.0.1.3660, %if.end206.3662 ]
%and115.2.3 = and i32 %45, 67108864
%tobool116.2.3 = icmp eq i32 %and115.2.3, 0
br i1 %tobool116.2.3, label %if.end206.2.3, label %if.then117.2.3
if.then117.2.3: ; preds = %if.end206.1.3
%871 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx124.2.3, align 16, !tbaa !36
%872 = fsub <4 x float> %871, %812
%873 = extractelement <4 x float> %872, i32 0
%874 = extractelement <4 x float> %872, i32 1
%mul3.i.i.2.3 = fmul float %874, %874
%875 = tail call float @llvm.fmuladd.f32(float %873, float %873, float %mul3.i.i.2.3) #5
%876 = extractelement <4 x float> %872, i32 2
%877 = tail call float @llvm.fmuladd.f32(float %876, float %876, float %875) #5
%and137.2.3 = and i32 %47, 67108864
%tobool138.2.3 = icmp ne i32 %and137.2.3, 0
%cond.2.3 = select i1 %tobool138.2.3, float 1.000000e+00, float 0.000000e+00
%notrhs.2.3 = icmp ne i32 %32, %810
%not.or.cond.2.3 = or i1 %notlhs, %notrhs.2.3
%cmp145..2.3 = or i1 %cmp145, %not.or.cond.2.3
%conv147.2.3 = uitofp i1 %cmp145..2.3 to float
%mul148.2.3 = fmul float %conv147.2.3, %nbparam_params_rcoulomb_sq
%cmp149.2.3 = fcmp olt float %877, %mul148.2.3
br i1 %cmp149.2.3, label %if.then151.2.3, label %if.end206.2.3
if.then151.2.3: ; preds = %if.then117.2.3
%extractVec135.2.3 = shufflevector <4 x float> %872, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%878 = extractelement <4 x float> %871, i32 3
%879 = load i32, i32 addrspace(1)* %arrayidx152.2.3, align 4, !tbaa !41
%mul153.2.3 = mul nsw i32 %879, %ntypes
%add154.2.3 = add nsw i32 %mul153.2.3, %814
%mul155.2.3 = shl nsw i32 %add154.2.3, 1
%880 = sext i32 %mul155.2.3 to i64
%arrayidx156.2.3 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %880
%881 = load float, float addrspace(2)* %arrayidx156.2.3, align 4, !tbaa !39
%add160.2.3 = or i32 %mul155.2.3, 1
%882 = sext i32 %add160.2.3 to i64
%arrayidx161.2.3 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %882
%883 = load float, float addrspace(2)* %arrayidx161.2.3, align 4, !tbaa !39
%sub162.2.3 = fsub float 1.000000e+00, %cond.2.3
%884 = tail call float @llvm.fmuladd.f32(float %sub162.2.3, float 0x3D71979980000000, float %877)
%cmp.i.i.2.3 = fcmp olt float %884, 0.000000e+00
%call.i.i.2.3 = tail call float @llvm.sqrt.f32(float %884) #6
%call.i.i.op.2.3 = fdiv float 1.000000e+00, %call.i.i.2.3
%div165.2.3 = select i1 %cmp.i.i.2.3, float 0x7FF8000000000000, float %call.i.i.op.2.3
%mul166.2.3 = fmul float %div165.2.3, %div165.2.3
%mul167.2.3 = fmul float %mul166.2.3, %mul166.2.3
%mul168.2.3 = fmul float %mul166.2.3, %mul167.2.3
%mul169.2.3 = fmul float %cond.2.3, %mul168.2.3
%neg.2.3 = fsub float -0.000000e+00, %881
%885 = tail call float @llvm.fmuladd.f32(float %883, float %mul169.2.3, float %neg.2.3)
%mul171.2.3 = fmul float %mul169.2.3, %885
%mul172.2.3 = fmul float %mul166.2.3, %mul171.2.3
%mul173.2.3 = fmul float %813, %878
%mul174.2.3 = fmul float %cond.2.3, %mul166.2.3
%mul176.2.3 = fmul float %mul, %884
%mul.i.2.3 = fmul float %mul176.2.3, %mul176.2.3
%886 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.2.3, float 0x3FBDA79640000000) #5
%887 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.2.3, float 0x3FE03C5780000000) #5
%888 = tail call float @llvm.fmuladd.f32(float %886, float %mul.i.2.3, float 1.000000e+00) #5
%889 = tail call float @llvm.fmuladd.f32(float %887, float %mul176.2.3, float %888) #5
%div.i.2.3 = fdiv float 1.000000e+00, %889, !fpmath !46
%890 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.2.3, float 0xBF0BFF7260000000) #5
%891 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.2.3, float 0x3F50794180000000) #5
%892 = tail call float @llvm.fmuladd.f32(float %890, float %mul.i.2.3, float 0xBF93BDB200000000) #5
%893 = tail call float @llvm.fmuladd.f32(float %891, float %mul.i.2.3, float 0x3FB1D5E760000000) #5
%894 = tail call float @llvm.fmuladd.f32(float %892, float %mul.i.2.3, float 0xBFE81272E0000000) #5
%895 = tail call float @llvm.fmuladd.f32(float %893, float %mul176.2.3, float %894) #5
%mul11.i.2.3 = fmul float %895, %div.i.2.3
%mul178.2.3 = fmul float %mul19, %mul11.i.2.3
%896 = tail call float @llvm.fmuladd.f32(float %mul174.2.3, float %div165.2.3, float %mul178.2.3)
%897 = tail call float @llvm.fmuladd.f32(float %mul173.2.3, float %896, float %mul172.2.3)
%splat.splatinsert.2.3 = insertelement <3 x float> undef, float %897, i32 0
%splat.splat.2.3 = shufflevector <3 x float> %splat.splatinsert.2.3, <3 x float> undef, <3 x i32> zeroinitializer
%mul183.2.3 = fmul <3 x float> %extractVec135.2.3, %splat.splat.2.3
%extractVec191.2.3 = shufflevector <4 x float> %fcj_buf.sroa.0.1.1.3, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub192.2.3 = fsub <3 x float> %extractVec191.2.3, %mul183.2.3
%extractVec193.2.3 = shufflevector <3 x float> %sub192.2.3, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec201.2.3 = shufflevector <4 x float> %loadVec4200.2.3, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add202.2.3 = fadd <3 x float> %extractVec201.2.3, %mul183.2.3
%extractVec203.2.3 = shufflevector <3 x float> %add202.2.3, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end206.2.3
if.end206.2.3: ; preds = %if.then151.2.3, %if.then117.2.3, %if.end206.1.3
%898 = phi <3 x float> [ %add202.2.3, %if.then151.2.3 ], [ %807, %if.then117.2.3 ], [ %807, %if.end206.1.3 ]
%loadVec4200.2686 = phi <4 x float> [ %extractVec203.2.3, %if.then151.2.3 ], [ %loadVec4200.2.3, %if.then117.2.3 ], [ %loadVec4200.2.3, %if.end206.1.3 ]
%fcj_buf.sroa.0.1.2.3 = phi <4 x float> [ %extractVec193.2.3, %if.then151.2.3 ], [ %fcj_buf.sroa.0.1.1.3, %if.then117.2.3 ], [ %fcj_buf.sroa.0.1.1.3, %if.end206.1.3 ]
%and115.3.3 = and i32 %45, 134217728
%tobool116.3.3 = icmp eq i32 %and115.3.3, 0
br i1 %tobool116.3.3, label %if.end206.3.3, label %if.then117.3.3
if.then117.3.3: ; preds = %if.end206.2.3
%899 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx124.3.3, align 16, !tbaa !36
%900 = fsub <4 x float> %899, %812
%901 = extractelement <4 x float> %900, i32 0
%902 = extractelement <4 x float> %900, i32 1
%mul3.i.i.3.3 = fmul float %902, %902
%903 = tail call float @llvm.fmuladd.f32(float %901, float %901, float %mul3.i.i.3.3) #5
%904 = extractelement <4 x float> %900, i32 2
%905 = tail call float @llvm.fmuladd.f32(float %904, float %904, float %903) #5
%and137.3.3 = and i32 %47, 134217728
%tobool138.3.3 = icmp ne i32 %and137.3.3, 0
%cond.3.3 = select i1 %tobool138.3.3, float 1.000000e+00, float 0.000000e+00
%notrhs.3.3 = icmp ne i32 %30, %810
%not.or.cond.3.3 = or i1 %notlhs, %notrhs.3.3
%cmp145..3.3 = or i1 %cmp145, %not.or.cond.3.3
%conv147.3.3 = uitofp i1 %cmp145..3.3 to float
%mul148.3.3 = fmul float %conv147.3.3, %nbparam_params_rcoulomb_sq
%cmp149.3.3 = fcmp olt float %905, %mul148.3.3
br i1 %cmp149.3.3, label %if.then151.3.3, label %if.end206.3.3
if.then151.3.3: ; preds = %if.then117.3.3
%extractVec135.3.3 = shufflevector <4 x float> %900, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%906 = extractelement <4 x float> %899, i32 3
%907 = load i32, i32 addrspace(1)* %arrayidx152.3.3, align 4, !tbaa !41
%mul153.3.3 = mul nsw i32 %907, %ntypes
%add154.3.3 = add nsw i32 %mul153.3.3, %814
%mul155.3.3 = shl nsw i32 %add154.3.3, 1
%908 = sext i32 %mul155.3.3 to i64
%arrayidx156.3.3 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %908
%909 = load float, float addrspace(2)* %arrayidx156.3.3, align 4, !tbaa !39
%add160.3.3 = or i32 %mul155.3.3, 1
%910 = sext i32 %add160.3.3 to i64
%arrayidx161.3.3 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %910
%911 = load float, float addrspace(2)* %arrayidx161.3.3, align 4, !tbaa !39
%sub162.3.3 = fsub float 1.000000e+00, %cond.3.3
%912 = tail call float @llvm.fmuladd.f32(float %sub162.3.3, float 0x3D71979980000000, float %905)
%cmp.i.i.3.3 = fcmp olt float %912, 0.000000e+00
%call.i.i.3.3 = tail call float @llvm.sqrt.f32(float %912) #6
%call.i.i.op.3.3 = fdiv float 1.000000e+00, %call.i.i.3.3
%div165.3.3 = select i1 %cmp.i.i.3.3, float 0x7FF8000000000000, float %call.i.i.op.3.3
%mul166.3.3 = fmul float %div165.3.3, %div165.3.3
%mul167.3.3 = fmul float %mul166.3.3, %mul166.3.3
%mul168.3.3 = fmul float %mul166.3.3, %mul167.3.3
%mul169.3.3 = fmul float %cond.3.3, %mul168.3.3
%neg.3.3 = fsub float -0.000000e+00, %909
%913 = tail call float @llvm.fmuladd.f32(float %911, float %mul169.3.3, float %neg.3.3)
%mul171.3.3 = fmul float %mul169.3.3, %913
%mul172.3.3 = fmul float %mul166.3.3, %mul171.3.3
%mul173.3.3 = fmul float %813, %906
%mul174.3.3 = fmul float %cond.3.3, %mul166.3.3
%mul176.3.3 = fmul float %mul, %912
%mul.i.3.3 = fmul float %mul176.3.3, %mul176.3.3
%914 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.3.3, float 0x3FBDA79640000000) #5
%915 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.3.3, float 0x3FE03C5780000000) #5
%916 = tail call float @llvm.fmuladd.f32(float %914, float %mul.i.3.3, float 1.000000e+00) #5
%917 = tail call float @llvm.fmuladd.f32(float %915, float %mul176.3.3, float %916) #5
%div.i.3.3 = fdiv float 1.000000e+00, %917, !fpmath !46
%918 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.3.3, float 0xBF0BFF7260000000) #5
%919 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.3.3, float 0x3F50794180000000) #5
%920 = tail call float @llvm.fmuladd.f32(float %918, float %mul.i.3.3, float 0xBF93BDB200000000) #5
%921 = tail call float @llvm.fmuladd.f32(float %919, float %mul.i.3.3, float 0x3FB1D5E760000000) #5
%922 = tail call float @llvm.fmuladd.f32(float %920, float %mul.i.3.3, float 0xBFE81272E0000000) #5
%923 = tail call float @llvm.fmuladd.f32(float %921, float %mul176.3.3, float %922) #5
%mul11.i.3.3 = fmul float %923, %div.i.3.3
%mul178.3.3 = fmul float %mul19, %mul11.i.3.3
%924 = tail call float @llvm.fmuladd.f32(float %mul174.3.3, float %div165.3.3, float %mul178.3.3)
%925 = tail call float @llvm.fmuladd.f32(float %mul173.3.3, float %924, float %mul172.3.3)
%splat.splatinsert.3.3 = insertelement <3 x float> undef, float %925, i32 0
%splat.splat.3.3 = shufflevector <3 x float> %splat.splatinsert.3.3, <3 x float> undef, <3 x i32> zeroinitializer
%mul183.3.3 = fmul <3 x float> %extractVec135.3.3, %splat.splat.3.3
%extractVec191.3.3 = shufflevector <4 x float> %fcj_buf.sroa.0.1.2.3, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub192.3.3 = fsub <3 x float> %extractVec191.3.3, %mul183.3.3
%extractVec193.3.3 = shufflevector <3 x float> %sub192.3.3, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec201.3.3 = shufflevector <4 x float> %loadVec4200.3.3, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add202.3.3 = fadd <3 x float> %extractVec201.3.3, %mul183.3.3
%extractVec203.3.3 = shufflevector <3 x float> %add202.3.3, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end206.3.3
if.end206.3.3: ; preds = %if.then151.3.3, %if.then117.3.3, %if.end206.2.3
%926 = phi <3 x float> [ %add202.3.3, %if.then151.3.3 ], [ %806, %if.then117.3.3 ], [ %806, %if.end206.2.3 ]
%loadVec4200.3696 = phi <4 x float> [ %extractVec203.3.3, %if.then151.3.3 ], [ %loadVec4200.3.3, %if.then117.3.3 ], [ %loadVec4200.3.3, %if.end206.2.3 ]
%fcj_buf.sroa.0.1.3.3 = phi <4 x float> [ %extractVec193.3.3, %if.then151.3.3 ], [ %fcj_buf.sroa.0.1.2.3, %if.then117.3.3 ], [ %fcj_buf.sroa.0.1.2.3, %if.end206.2.3 ]
%and115.4.3 = and i32 %45, 268435456
%tobool116.4.3 = icmp eq i32 %and115.4.3, 0
br i1 %tobool116.4.3, label %if.end206.4.3, label %if.then117.4.3
if.then117.4.3: ; preds = %if.end206.3.3
%927 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx124.4.3, align 16, !tbaa !36
%928 = fsub <4 x float> %927, %812
%929 = extractelement <4 x float> %928, i32 0
%930 = extractelement <4 x float> %928, i32 1
%mul3.i.i.4.3 = fmul float %930, %930
%931 = tail call float @llvm.fmuladd.f32(float %929, float %929, float %mul3.i.i.4.3) #5
%932 = extractelement <4 x float> %928, i32 2
%933 = tail call float @llvm.fmuladd.f32(float %932, float %932, float %931) #5
%and137.4.3 = and i32 %47, 268435456
%tobool138.4.3 = icmp ne i32 %and137.4.3, 0
%cond.4.3 = select i1 %tobool138.4.3, float 1.000000e+00, float 0.000000e+00
%notrhs.4.3 = icmp ne i32 %28, %810
%not.or.cond.4.3 = or i1 %notlhs, %notrhs.4.3
%cmp145..4.3 = or i1 %cmp145, %not.or.cond.4.3
%conv147.4.3 = uitofp i1 %cmp145..4.3 to float
%mul148.4.3 = fmul float %conv147.4.3, %nbparam_params_rcoulomb_sq
%cmp149.4.3 = fcmp olt float %933, %mul148.4.3
br i1 %cmp149.4.3, label %if.then151.4.3, label %if.end206.4.3
if.then151.4.3: ; preds = %if.then117.4.3
%extractVec135.4.3 = shufflevector <4 x float> %928, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%934 = extractelement <4 x float> %927, i32 3
%935 = load i32, i32 addrspace(1)* %arrayidx152.4.3, align 4, !tbaa !41
%mul153.4.3 = mul nsw i32 %935, %ntypes
%add154.4.3 = add nsw i32 %mul153.4.3, %814
%mul155.4.3 = shl nsw i32 %add154.4.3, 1
%936 = sext i32 %mul155.4.3 to i64
%arrayidx156.4.3 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %936
%937 = load float, float addrspace(2)* %arrayidx156.4.3, align 4, !tbaa !39
%add160.4.3 = or i32 %mul155.4.3, 1
%938 = sext i32 %add160.4.3 to i64
%arrayidx161.4.3 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %938
%939 = load float, float addrspace(2)* %arrayidx161.4.3, align 4, !tbaa !39
%sub162.4.3 = fsub float 1.000000e+00, %cond.4.3
%940 = tail call float @llvm.fmuladd.f32(float %sub162.4.3, float 0x3D71979980000000, float %933)
%cmp.i.i.4.3 = fcmp olt float %940, 0.000000e+00
%call.i.i.4.3 = tail call float @llvm.sqrt.f32(float %940) #6
%call.i.i.op.4.3 = fdiv float 1.000000e+00, %call.i.i.4.3
%div165.4.3 = select i1 %cmp.i.i.4.3, float 0x7FF8000000000000, float %call.i.i.op.4.3
%mul166.4.3 = fmul float %div165.4.3, %div165.4.3
%mul167.4.3 = fmul float %mul166.4.3, %mul166.4.3
%mul168.4.3 = fmul float %mul166.4.3, %mul167.4.3
%mul169.4.3 = fmul float %cond.4.3, %mul168.4.3
%neg.4.3 = fsub float -0.000000e+00, %937
%941 = tail call float @llvm.fmuladd.f32(float %939, float %mul169.4.3, float %neg.4.3)
%mul171.4.3 = fmul float %mul169.4.3, %941
%mul172.4.3 = fmul float %mul166.4.3, %mul171.4.3
%mul173.4.3 = fmul float %813, %934
%mul174.4.3 = fmul float %cond.4.3, %mul166.4.3
%mul176.4.3 = fmul float %mul, %940
%mul.i.4.3 = fmul float %mul176.4.3, %mul176.4.3
%942 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.4.3, float 0x3FBDA79640000000) #5
%943 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.4.3, float 0x3FE03C5780000000) #5
%944 = tail call float @llvm.fmuladd.f32(float %942, float %mul.i.4.3, float 1.000000e+00) #5
%945 = tail call float @llvm.fmuladd.f32(float %943, float %mul176.4.3, float %944) #5
%div.i.4.3 = fdiv float 1.000000e+00, %945, !fpmath !46
%946 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.4.3, float 0xBF0BFF7260000000) #5
%947 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.4.3, float 0x3F50794180000000) #5
%948 = tail call float @llvm.fmuladd.f32(float %946, float %mul.i.4.3, float 0xBF93BDB200000000) #5
%949 = tail call float @llvm.fmuladd.f32(float %947, float %mul.i.4.3, float 0x3FB1D5E760000000) #5
%950 = tail call float @llvm.fmuladd.f32(float %948, float %mul.i.4.3, float 0xBFE81272E0000000) #5
%951 = tail call float @llvm.fmuladd.f32(float %949, float %mul176.4.3, float %950) #5
%mul11.i.4.3 = fmul float %951, %div.i.4.3
%mul178.4.3 = fmul float %mul19, %mul11.i.4.3
%952 = tail call float @llvm.fmuladd.f32(float %mul174.4.3, float %div165.4.3, float %mul178.4.3)
%953 = tail call float @llvm.fmuladd.f32(float %mul173.4.3, float %952, float %mul172.4.3)
%splat.splatinsert.4.3 = insertelement <3 x float> undef, float %953, i32 0
%splat.splat.4.3 = shufflevector <3 x float> %splat.splatinsert.4.3, <3 x float> undef, <3 x i32> zeroinitializer
%mul183.4.3 = fmul <3 x float> %extractVec135.4.3, %splat.splat.4.3
%extractVec191.4.3 = shufflevector <4 x float> %fcj_buf.sroa.0.1.3.3, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub192.4.3 = fsub <3 x float> %extractVec191.4.3, %mul183.4.3
%extractVec193.4.3 = shufflevector <3 x float> %sub192.4.3, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec201.4.3 = shufflevector <4 x float> %loadVec4200.4.3, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add202.4.3 = fadd <3 x float> %extractVec201.4.3, %mul183.4.3
%extractVec203.4.3 = shufflevector <3 x float> %add202.4.3, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end206.4.3
if.end206.4.3: ; preds = %if.then151.4.3, %if.then117.4.3, %if.end206.3.3
%954 = phi <3 x float> [ %add202.4.3, %if.then151.4.3 ], [ %805, %if.then117.4.3 ], [ %805, %if.end206.3.3 ]
%loadVec4200.4706 = phi <4 x float> [ %extractVec203.4.3, %if.then151.4.3 ], [ %loadVec4200.4.3, %if.then117.4.3 ], [ %loadVec4200.4.3, %if.end206.3.3 ]
%fcj_buf.sroa.0.1.4.3 = phi <4 x float> [ %extractVec193.4.3, %if.then151.4.3 ], [ %fcj_buf.sroa.0.1.3.3, %if.then117.4.3 ], [ %fcj_buf.sroa.0.1.3.3, %if.end206.3.3 ]
%and115.5.3 = and i32 %45, 536870912
%tobool116.5.3 = icmp eq i32 %and115.5.3, 0
br i1 %tobool116.5.3, label %if.end206.5.3, label %if.then117.5.3
if.then117.5.3: ; preds = %if.end206.4.3
%955 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx124.5.3, align 16, !tbaa !36
%956 = fsub <4 x float> %955, %812
%957 = extractelement <4 x float> %956, i32 0
%958 = extractelement <4 x float> %956, i32 1
%mul3.i.i.5.3 = fmul float %958, %958
%959 = tail call float @llvm.fmuladd.f32(float %957, float %957, float %mul3.i.i.5.3) #5
%960 = extractelement <4 x float> %956, i32 2
%961 = tail call float @llvm.fmuladd.f32(float %960, float %960, float %959) #5
%and137.5.3 = and i32 %47, 536870912
%tobool138.5.3 = icmp ne i32 %and137.5.3, 0
%cond.5.3 = select i1 %tobool138.5.3, float 1.000000e+00, float 0.000000e+00
%notrhs.5.3 = icmp ne i32 %26, %810
%not.or.cond.5.3 = or i1 %notlhs, %notrhs.5.3
%cmp145..5.3 = or i1 %cmp145, %not.or.cond.5.3
%conv147.5.3 = uitofp i1 %cmp145..5.3 to float
%mul148.5.3 = fmul float %conv147.5.3, %nbparam_params_rcoulomb_sq
%cmp149.5.3 = fcmp olt float %961, %mul148.5.3
br i1 %cmp149.5.3, label %if.then151.5.3, label %if.end206.5.3
if.then151.5.3: ; preds = %if.then117.5.3
%extractVec135.5.3 = shufflevector <4 x float> %956, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%962 = extractelement <4 x float> %955, i32 3
%963 = load i32, i32 addrspace(1)* %arrayidx152.5.3, align 4, !tbaa !41
%mul153.5.3 = mul nsw i32 %963, %ntypes
%add154.5.3 = add nsw i32 %mul153.5.3, %814
%mul155.5.3 = shl nsw i32 %add154.5.3, 1
%964 = sext i32 %mul155.5.3 to i64
%arrayidx156.5.3 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %964
%965 = load float, float addrspace(2)* %arrayidx156.5.3, align 4, !tbaa !39
%add160.5.3 = or i32 %mul155.5.3, 1
%966 = sext i32 %add160.5.3 to i64
%arrayidx161.5.3 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %966
%967 = load float, float addrspace(2)* %arrayidx161.5.3, align 4, !tbaa !39
%sub162.5.3 = fsub float 1.000000e+00, %cond.5.3
%968 = tail call float @llvm.fmuladd.f32(float %sub162.5.3, float 0x3D71979980000000, float %961)
%cmp.i.i.5.3 = fcmp olt float %968, 0.000000e+00
%call.i.i.5.3 = tail call float @llvm.sqrt.f32(float %968) #6
%call.i.i.op.5.3 = fdiv float 1.000000e+00, %call.i.i.5.3
%div165.5.3 = select i1 %cmp.i.i.5.3, float 0x7FF8000000000000, float %call.i.i.op.5.3
%mul166.5.3 = fmul float %div165.5.3, %div165.5.3
%mul167.5.3 = fmul float %mul166.5.3, %mul166.5.3
%mul168.5.3 = fmul float %mul166.5.3, %mul167.5.3
%mul169.5.3 = fmul float %cond.5.3, %mul168.5.3
%neg.5.3 = fsub float -0.000000e+00, %965
%969 = tail call float @llvm.fmuladd.f32(float %967, float %mul169.5.3, float %neg.5.3)
%mul171.5.3 = fmul float %mul169.5.3, %969
%mul172.5.3 = fmul float %mul166.5.3, %mul171.5.3
%mul173.5.3 = fmul float %813, %962
%mul174.5.3 = fmul float %cond.5.3, %mul166.5.3
%mul176.5.3 = fmul float %mul, %968
%mul.i.5.3 = fmul float %mul176.5.3, %mul176.5.3
%970 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.5.3, float 0x3FBDA79640000000) #5
%971 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.5.3, float 0x3FE03C5780000000) #5
%972 = tail call float @llvm.fmuladd.f32(float %970, float %mul.i.5.3, float 1.000000e+00) #5
%973 = tail call float @llvm.fmuladd.f32(float %971, float %mul176.5.3, float %972) #5
%div.i.5.3 = fdiv float 1.000000e+00, %973, !fpmath !46
%974 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.5.3, float 0xBF0BFF7260000000) #5
%975 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.5.3, float 0x3F50794180000000) #5
%976 = tail call float @llvm.fmuladd.f32(float %974, float %mul.i.5.3, float 0xBF93BDB200000000) #5
%977 = tail call float @llvm.fmuladd.f32(float %975, float %mul.i.5.3, float 0x3FB1D5E760000000) #5
%978 = tail call float @llvm.fmuladd.f32(float %976, float %mul.i.5.3, float 0xBFE81272E0000000) #5
%979 = tail call float @llvm.fmuladd.f32(float %977, float %mul176.5.3, float %978) #5
%mul11.i.5.3 = fmul float %979, %div.i.5.3
%mul178.5.3 = fmul float %mul19, %mul11.i.5.3
%980 = tail call float @llvm.fmuladd.f32(float %mul174.5.3, float %div165.5.3, float %mul178.5.3)
%981 = tail call float @llvm.fmuladd.f32(float %mul173.5.3, float %980, float %mul172.5.3)
%splat.splatinsert.5.3 = insertelement <3 x float> undef, float %981, i32 0
%splat.splat.5.3 = shufflevector <3 x float> %splat.splatinsert.5.3, <3 x float> undef, <3 x i32> zeroinitializer
%mul183.5.3 = fmul <3 x float> %extractVec135.5.3, %splat.splat.5.3
%extractVec191.5.3 = shufflevector <4 x float> %fcj_buf.sroa.0.1.4.3, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub192.5.3 = fsub <3 x float> %extractVec191.5.3, %mul183.5.3
%extractVec193.5.3 = shufflevector <3 x float> %sub192.5.3, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec201.5.3 = shufflevector <4 x float> %loadVec4200.5.3, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add202.5.3 = fadd <3 x float> %extractVec201.5.3, %mul183.5.3
%extractVec203.5.3 = shufflevector <3 x float> %add202.5.3, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end206.5.3
if.end206.5.3: ; preds = %if.then151.5.3, %if.then117.5.3, %if.end206.4.3
%982 = phi <3 x float> [ %add202.5.3, %if.then151.5.3 ], [ %804, %if.then117.5.3 ], [ %804, %if.end206.4.3 ]
%loadVec4200.5716 = phi <4 x float> [ %extractVec203.5.3, %if.then151.5.3 ], [ %loadVec4200.5.3, %if.then117.5.3 ], [ %loadVec4200.5.3, %if.end206.4.3 ]
%fcj_buf.sroa.0.1.5.3 = phi <4 x float> [ %extractVec193.5.3, %if.then151.5.3 ], [ %fcj_buf.sroa.0.1.4.3, %if.then117.5.3 ], [ %fcj_buf.sroa.0.1.4.3, %if.end206.4.3 ]
%and115.6.3 = and i32 %45, 1073741824
%tobool116.6.3 = icmp eq i32 %and115.6.3, 0
br i1 %tobool116.6.3, label %if.end206.6.3, label %if.then117.6.3
if.then117.6.3: ; preds = %if.end206.5.3
%983 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx124.6.3, align 16, !tbaa !36
%984 = fsub <4 x float> %983, %812
%985 = extractelement <4 x float> %984, i32 0
%986 = extractelement <4 x float> %984, i32 1
%mul3.i.i.6.3 = fmul float %986, %986
%987 = tail call float @llvm.fmuladd.f32(float %985, float %985, float %mul3.i.i.6.3) #5
%988 = extractelement <4 x float> %984, i32 2
%989 = tail call float @llvm.fmuladd.f32(float %988, float %988, float %987) #5
%and137.6.3 = and i32 %47, 1073741824
%tobool138.6.3 = icmp ne i32 %and137.6.3, 0
%cond.6.3 = select i1 %tobool138.6.3, float 1.000000e+00, float 0.000000e+00
%notrhs.6.3 = icmp ne i32 %24, %810
%not.or.cond.6.3 = or i1 %notlhs, %notrhs.6.3
%cmp145..6.3 = or i1 %cmp145, %not.or.cond.6.3
%conv147.6.3 = uitofp i1 %cmp145..6.3 to float
%mul148.6.3 = fmul float %conv147.6.3, %nbparam_params_rcoulomb_sq
%cmp149.6.3 = fcmp olt float %989, %mul148.6.3
br i1 %cmp149.6.3, label %if.then151.6.3, label %if.end206.6.3
if.then151.6.3: ; preds = %if.then117.6.3
%extractVec135.6.3 = shufflevector <4 x float> %984, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%990 = extractelement <4 x float> %983, i32 3
%991 = load i32, i32 addrspace(1)* %arrayidx152.6.3, align 4, !tbaa !41
%mul153.6.3 = mul nsw i32 %991, %ntypes
%add154.6.3 = add nsw i32 %mul153.6.3, %814
%mul155.6.3 = shl nsw i32 %add154.6.3, 1
%992 = sext i32 %mul155.6.3 to i64
%arrayidx156.6.3 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %992
%993 = load float, float addrspace(2)* %arrayidx156.6.3, align 4, !tbaa !39
%add160.6.3 = or i32 %mul155.6.3, 1
%994 = sext i32 %add160.6.3 to i64
%arrayidx161.6.3 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %994
%995 = load float, float addrspace(2)* %arrayidx161.6.3, align 4, !tbaa !39
%sub162.6.3 = fsub float 1.000000e+00, %cond.6.3
%996 = tail call float @llvm.fmuladd.f32(float %sub162.6.3, float 0x3D71979980000000, float %989)
%cmp.i.i.6.3 = fcmp olt float %996, 0.000000e+00
%call.i.i.6.3 = tail call float @llvm.sqrt.f32(float %996) #6
%call.i.i.op.6.3 = fdiv float 1.000000e+00, %call.i.i.6.3
%div165.6.3 = select i1 %cmp.i.i.6.3, float 0x7FF8000000000000, float %call.i.i.op.6.3
%mul166.6.3 = fmul float %div165.6.3, %div165.6.3
%mul167.6.3 = fmul float %mul166.6.3, %mul166.6.3
%mul168.6.3 = fmul float %mul166.6.3, %mul167.6.3
%mul169.6.3 = fmul float %cond.6.3, %mul168.6.3
%neg.6.3 = fsub float -0.000000e+00, %993
%997 = tail call float @llvm.fmuladd.f32(float %995, float %mul169.6.3, float %neg.6.3)
%mul171.6.3 = fmul float %mul169.6.3, %997
%mul172.6.3 = fmul float %mul166.6.3, %mul171.6.3
%mul173.6.3 = fmul float %813, %990
%mul174.6.3 = fmul float %cond.6.3, %mul166.6.3
%mul176.6.3 = fmul float %mul, %996
%mul.i.6.3 = fmul float %mul176.6.3, %mul176.6.3
%998 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.6.3, float 0x3FBDA79640000000) #5
%999 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.6.3, float 0x3FE03C5780000000) #5
%1000 = tail call float @llvm.fmuladd.f32(float %998, float %mul.i.6.3, float 1.000000e+00) #5
%1001 = tail call float @llvm.fmuladd.f32(float %999, float %mul176.6.3, float %1000) #5
%div.i.6.3 = fdiv float 1.000000e+00, %1001, !fpmath !46
%1002 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.6.3, float 0xBF0BFF7260000000) #5
%1003 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.6.3, float 0x3F50794180000000) #5
%1004 = tail call float @llvm.fmuladd.f32(float %1002, float %mul.i.6.3, float 0xBF93BDB200000000) #5
%1005 = tail call float @llvm.fmuladd.f32(float %1003, float %mul.i.6.3, float 0x3FB1D5E760000000) #5
%1006 = tail call float @llvm.fmuladd.f32(float %1004, float %mul.i.6.3, float 0xBFE81272E0000000) #5
%1007 = tail call float @llvm.fmuladd.f32(float %1005, float %mul176.6.3, float %1006) #5
%mul11.i.6.3 = fmul float %1007, %div.i.6.3
%mul178.6.3 = fmul float %mul19, %mul11.i.6.3
%1008 = tail call float @llvm.fmuladd.f32(float %mul174.6.3, float %div165.6.3, float %mul178.6.3)
%1009 = tail call float @llvm.fmuladd.f32(float %mul173.6.3, float %1008, float %mul172.6.3)
%splat.splatinsert.6.3 = insertelement <3 x float> undef, float %1009, i32 0
%splat.splat.6.3 = shufflevector <3 x float> %splat.splatinsert.6.3, <3 x float> undef, <3 x i32> zeroinitializer
%mul183.6.3 = fmul <3 x float> %extractVec135.6.3, %splat.splat.6.3
%extractVec191.6.3 = shufflevector <4 x float> %fcj_buf.sroa.0.1.5.3, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub192.6.3 = fsub <3 x float> %extractVec191.6.3, %mul183.6.3
%extractVec193.6.3 = shufflevector <3 x float> %sub192.6.3, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec201.6.3 = shufflevector <4 x float> %loadVec4200.6.3, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add202.6.3 = fadd <3 x float> %extractVec201.6.3, %mul183.6.3
%extractVec203.6.3 = shufflevector <3 x float> %add202.6.3, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end206.6.3
if.end206.6.3: ; preds = %if.then151.6.3, %if.then117.6.3, %if.end206.5.3
%1010 = phi <3 x float> [ %add202.6.3, %if.then151.6.3 ], [ %803, %if.then117.6.3 ], [ %803, %if.end206.5.3 ]
%loadVec4200.6726 = phi <4 x float> [ %extractVec203.6.3, %if.then151.6.3 ], [ %loadVec4200.6.3, %if.then117.6.3 ], [ %loadVec4200.6.3, %if.end206.5.3 ]
%fcj_buf.sroa.0.1.6.3 = phi <4 x float> [ %extractVec193.6.3, %if.then151.6.3 ], [ %fcj_buf.sroa.0.1.5.3, %if.then117.6.3 ], [ %fcj_buf.sroa.0.1.5.3, %if.end206.5.3 ]
%tobool116.7.3 = icmp sgt i32 %45, -1
br i1 %tobool116.7.3, label %if.end206.7.3, label %if.then117.7.3
if.then117.7.3: ; preds = %if.end206.6.3
%1011 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx124.7.3, align 16, !tbaa !36
%1012 = fsub <4 x float> %1011, %812
%1013 = extractelement <4 x float> %1012, i32 0
%1014 = extractelement <4 x float> %1012, i32 1
%mul3.i.i.7.3 = fmul float %1014, %1014
%1015 = tail call float @llvm.fmuladd.f32(float %1013, float %1013, float %mul3.i.i.7.3) #5
%1016 = extractelement <4 x float> %1012, i32 2
%1017 = tail call float @llvm.fmuladd.f32(float %1016, float %1016, float %1015) #5
%tobool138.7.3 = icmp slt i32 %47, 0
%cond.7.3 = select i1 %tobool138.7.3, float 1.000000e+00, float 0.000000e+00
%notrhs.7.3 = icmp ne i32 %22, %810
%not.or.cond.7.3 = or i1 %notlhs, %notrhs.7.3
%cmp145..7.3 = or i1 %cmp145, %not.or.cond.7.3
%conv147.7.3 = uitofp i1 %cmp145..7.3 to float
%mul148.7.3 = fmul float %conv147.7.3, %nbparam_params_rcoulomb_sq
%cmp149.7.3 = fcmp olt float %1017, %mul148.7.3
br i1 %cmp149.7.3, label %if.then151.7.3, label %if.end206.7.3
if.then151.7.3: ; preds = %if.then117.7.3
%extractVec135.7.3 = shufflevector <4 x float> %1012, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%1018 = extractelement <4 x float> %1011, i32 3
%1019 = load i32, i32 addrspace(1)* %arrayidx152.7.3, align 4, !tbaa !41
%mul153.7.3 = mul nsw i32 %1019, %ntypes
%add154.7.3 = add nsw i32 %mul153.7.3, %814
%mul155.7.3 = shl nsw i32 %add154.7.3, 1
%1020 = sext i32 %mul155.7.3 to i64
%arrayidx156.7.3 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %1020
%1021 = load float, float addrspace(2)* %arrayidx156.7.3, align 4, !tbaa !39
%add160.7.3 = or i32 %mul155.7.3, 1
%1022 = sext i32 %add160.7.3 to i64
%arrayidx161.7.3 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %1022
%1023 = load float, float addrspace(2)* %arrayidx161.7.3, align 4, !tbaa !39
%sub162.7.3 = fsub float 1.000000e+00, %cond.7.3
%1024 = tail call float @llvm.fmuladd.f32(float %sub162.7.3, float 0x3D71979980000000, float %1017)
%cmp.i.i.7.3 = fcmp olt float %1024, 0.000000e+00
%call.i.i.7.3 = tail call float @llvm.sqrt.f32(float %1024) #6
%call.i.i.op.7.3 = fdiv float 1.000000e+00, %call.i.i.7.3
%div165.7.3 = select i1 %cmp.i.i.7.3, float 0x7FF8000000000000, float %call.i.i.op.7.3
%mul166.7.3 = fmul float %div165.7.3, %div165.7.3
%mul167.7.3 = fmul float %mul166.7.3, %mul166.7.3
%mul168.7.3 = fmul float %mul166.7.3, %mul167.7.3
%mul169.7.3 = fmul float %cond.7.3, %mul168.7.3
%neg.7.3 = fsub float -0.000000e+00, %1021
%1025 = tail call float @llvm.fmuladd.f32(float %1023, float %mul169.7.3, float %neg.7.3)
%mul171.7.3 = fmul float %mul169.7.3, %1025
%mul172.7.3 = fmul float %mul166.7.3, %mul171.7.3
%mul173.7.3 = fmul float %813, %1018
%mul174.7.3 = fmul float %cond.7.3, %mul166.7.3
%mul176.7.3 = fmul float %mul, %1024
%mul.i.7.3 = fmul float %mul176.7.3, %mul176.7.3
%1026 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.7.3, float 0x3FBDA79640000000) #5
%1027 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.7.3, float 0x3FE03C5780000000) #5
%1028 = tail call float @llvm.fmuladd.f32(float %1026, float %mul.i.7.3, float 1.000000e+00) #5
%1029 = tail call float @llvm.fmuladd.f32(float %1027, float %mul176.7.3, float %1028) #5
%div.i.7.3 = fdiv float 1.000000e+00, %1029, !fpmath !46
%1030 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.7.3, float 0xBF0BFF7260000000) #5
%1031 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.7.3, float 0x3F50794180000000) #5
%1032 = tail call float @llvm.fmuladd.f32(float %1030, float %mul.i.7.3, float 0xBF93BDB200000000) #5
%1033 = tail call float @llvm.fmuladd.f32(float %1031, float %mul.i.7.3, float 0x3FB1D5E760000000) #5
%1034 = tail call float @llvm.fmuladd.f32(float %1032, float %mul.i.7.3, float 0xBFE81272E0000000) #5
%1035 = tail call float @llvm.fmuladd.f32(float %1033, float %mul176.7.3, float %1034) #5
%mul11.i.7.3 = fmul float %1035, %div.i.7.3
%mul178.7.3 = fmul float %mul19, %mul11.i.7.3
%1036 = tail call float @llvm.fmuladd.f32(float %mul174.7.3, float %div165.7.3, float %mul178.7.3)
%1037 = tail call float @llvm.fmuladd.f32(float %mul173.7.3, float %1036, float %mul172.7.3)
%splat.splatinsert.7.3 = insertelement <3 x float> undef, float %1037, i32 0
%splat.splat.7.3 = shufflevector <3 x float> %splat.splatinsert.7.3, <3 x float> undef, <3 x i32> zeroinitializer
%mul183.7.3 = fmul <3 x float> %extractVec135.7.3, %splat.splat.7.3
%extractVec191.7.3 = shufflevector <4 x float> %fcj_buf.sroa.0.1.6.3, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub192.7.3 = fsub <3 x float> %extractVec191.7.3, %mul183.7.3
%extractVec193.7.3 = shufflevector <3 x float> %sub192.7.3, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec201.7.3 = shufflevector <4 x float> %loadVec4200.7.3, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add202.7.3 = fadd <3 x float> %extractVec201.7.3, %mul183.7.3
%extractVec203.7.3 = shufflevector <3 x float> %add202.7.3, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end206.7.3
if.end206.7.3: ; preds = %if.then151.7.3, %if.then117.7.3, %if.end206.6.3
%fci_buf.sroa.37.9 = phi <4 x float> [ %fci_buf.sroa.37.8, %if.end206.6.3 ], [ %extractVec203.7.3, %if.then151.7.3 ], [ %fci_buf.sroa.37.8, %if.then117.7.3 ]
%loadVec4200.7736 = phi <4 x float> [ %loadVec4200.7.3, %if.end206.6.3 ], [ %extractVec203.7.3, %if.then151.7.3 ], [ %loadVec4200.7.3, %if.then117.7.3 ]
%fcj_buf.sroa.0.1.7.3 = phi <4 x float> [ %fcj_buf.sroa.0.1.6.3, %if.end206.6.3 ], [ %extractVec193.7.3, %if.then151.7.3 ], [ %fcj_buf.sroa.0.1.6.3, %if.then117.7.3 ]
%1038 = extractelement <4 x float> %fcj_buf.sroa.0.1.7.3, i32 0
store float %1038, float addrspace(3)* %arrayidx211, align 4, !tbaa !39
%1039 = extractelement <4 x float> %fcj_buf.sroa.0.1.7.3, i32 1
store float %1039, float addrspace(3)* %arrayidx213, align 4, !tbaa !39
%1040 = extractelement <4 x float> %fcj_buf.sroa.0.1.7.3, i32 2
store float %1040, float addrspace(3)* %arrayidx215, align 4, !tbaa !39
tail call fastcc void @reduce_force_j_generic(float addrspace(3)* %2, float addrspace(1)* %f, i32 %x.i, i32 %y.i, i32 %add106.3)
br label %for.inc221
}
; Function Attrs: nounwind
define void @nbnxn_kernel_ElecEwTwinCut_VdwLJ_F_opencl(i32 %ntypes, i32 %nbparam_params_eeltype, i32 %nbparam_params_vdwtype, float %nbparam_params_epsfac, float %nbparam_params_c_rf, float %nbparam_params_two_k_rf, float %nbparam_params_ewald_beta, float %nbparam_params_sh_ewald, float %nbparam_params_sh_lj_ewald, float %nbparam_params_ewaldcoeff_lj, float %nbparam_params_rcoulomb_sq, float %nbparam_params_rvdw_sq, float %nbparam_params_rvdw_switch, float %nbparam_params_rlist_sq, float %nbparam_params_dispersion_shift_c2, float %nbparam_params_dispersion_shift_c3, float %nbparam_params_dispersion_shift_cpot, float %nbparam_params_repulsion_shift_c2, float %nbparam_params_repulsion_shift_c3, float %nbparam_params_repulsion_shift_cpot, float %nbparam_params_vdw_switch_c3, float %nbparam_params_vdw_switch_c4, float %nbparam_params_vdw_switch_c5, float %nbparam_params_coulomb_tab_size, float %nbparam_params_coulomb_tab_scale, <4 x float> addrspace(1)* noalias nocapture readonly %xq, float addrspace(1)* noalias nocapture %f, float addrspace(1)* noalias nocapture readnone %e_lj, float addrspace(1)* noalias nocapture readnone %e_el, float addrspace(1)* noalias nocapture %fshift, i32 addrspace(1)* noalias nocapture readonly %atom_types, float addrspace(1)* noalias nocapture readonly %shift_vec, float addrspace(2)* nocapture readonly %nbfp_climg2d, float addrspace(2)* nocapture readnone %nbfp_comb_climg2d, float addrspace(2)* nocapture readnone %coulomb_tab_climg2d, %struct.nbnxn_sci_t addrspace(1)* nocapture readonly %pl_sci, %struct.nbnxn_cj4_t addrspace(1)* nocapture readonly %pl_cj4, %struct.nbnxn_excl_t addrspace(1)* nocapture readonly %excl, i32 %bCalcFshift, <4 x float> addrspace(3)* nocapture %xqib, float addrspace(1)* nocapture readnone %debug_buffer) #0 {
entry:
%fshift_buf = alloca float, align 4
%mul = fmul float %nbparam_params_ewald_beta, %nbparam_params_ewald_beta
%mul21 = fmul float %mul, %nbparam_params_ewald_beta
%x.i = tail call i32 @llvm.amdgcn.workitem.id.x() #5, !range !35
%y.i = tail call i32 @llvm.amdgcn.workitem.id.y() #5, !range !35
%x.i485 = tail call i32 @llvm.r600.read.local.size.x() #2
%mul25 = mul i32 %x.i485, %y.i
%add = add i32 %mul25, %x.i
%x.i486 = tail call i32 @llvm.amdgcn.workgroup.id.x() #5
%div = lshr i32 %add, 5
%0 = bitcast float* %fshift_buf to i8*
call void @llvm.lifetime.start(i64 4, i8* %0) #5
%add.ptr = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 64
%1 = bitcast <4 x float> addrspace(3)* %add.ptr to i32 addrspace(3)*
%2 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 66, i32 0
%3 = sext i32 %x.i486 to i64
%nb_sci.sroa.0.0..sroa_idx = getelementptr inbounds %struct.nbnxn_sci_t, %struct.nbnxn_sci_t addrspace(1)* %pl_sci, i64 %3, i32 0
%nb_sci.sroa.0.0.copyload = load i32, i32 addrspace(1)* %nb_sci.sroa.0.0..sroa_idx, align 4
%nb_sci.sroa.4.0..sroa_idx284 = getelementptr inbounds %struct.nbnxn_sci_t, %struct.nbnxn_sci_t addrspace(1)* %pl_sci, i64 %3, i32 1
%nb_sci.sroa.4.0.copyload = load i32, i32 addrspace(1)* %nb_sci.sroa.4.0..sroa_idx284, align 4
%nb_sci.sroa.10.0..sroa_idx291 = getelementptr inbounds %struct.nbnxn_sci_t, %struct.nbnxn_sci_t addrspace(1)* %pl_sci, i64 %3, i32 2
%nb_sci.sroa.10.0.copyload = load i32, i32 addrspace(1)* %nb_sci.sroa.10.0..sroa_idx291, align 4
%nb_sci.sroa.11.0..sroa_idx293 = getelementptr inbounds %struct.nbnxn_sci_t, %struct.nbnxn_sci_t addrspace(1)* %pl_sci, i64 %3, i32 3
%nb_sci.sroa.11.0.copyload = load i32, i32 addrspace(1)* %nb_sci.sroa.11.0..sroa_idx293, align 4
%mul31 = shl nsw i32 %nb_sci.sroa.0.0.copyload, 3
%add32 = add i32 %mul31, %y.i
%mul33 = shl i32 %add32, 3
%add34 = add i32 %mul33, %x.i
%4 = sext i32 %add34 to i64
%arrayidx35 = getelementptr inbounds <4 x float>, <4 x float> addrspace(1)* %xq, i64 %4
%5 = load <4 x float>, <4 x float> addrspace(1)* %arrayidx35, align 16, !tbaa !36
%mul36 = mul nsw i32 %nb_sci.sroa.4.0.copyload, 3
%6 = sext i32 %mul36 to i64
%arrayidx37 = getelementptr inbounds float, float addrspace(1)* %shift_vec, i64 %6
%7 = load float, float addrspace(1)* %arrayidx37, align 4, !tbaa !39
%vecinit = insertelement <4 x float> undef, float %7, i32 0
%add40 = add nsw i32 %mul36, 1
%8 = sext i32 %add40 to i64
%arrayidx41 = getelementptr inbounds float, float addrspace(1)* %shift_vec, i64 %8
%9 = load float, float addrspace(1)* %arrayidx41, align 4, !tbaa !39
%vecinit42 = insertelement <4 x float> %vecinit, float %9, i32 1
%add45 = add nsw i32 %mul36, 2
%10 = sext i32 %add45 to i64
%arrayidx46 = getelementptr inbounds float, float addrspace(1)* %shift_vec, i64 %10
%11 = load float, float addrspace(1)* %arrayidx46, align 4, !tbaa !39
%vecinit47 = insertelement <4 x float> %vecinit42, float %11, i32 2
%vecinit48 = insertelement <4 x float> %vecinit47, float 0.000000e+00, i32 3
%add49 = fadd <4 x float> %5, %vecinit48
%12 = extractelement <4 x float> %add49, i32 3
%mul51 = fmul float %12, %nbparam_params_epsfac
%13 = insertelement <4 x float> %add49, float %mul51, i32 3
%mul52 = shl nuw nsw i32 %y.i, 3
%add53 = add nuw nsw i32 %mul52, %x.i
%arrayidx54 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 %add53
store <4 x float> %13, <4 x float> addrspace(3)* %arrayidx54, align 16, !tbaa !36
%14 = or i32 %add, 32
%15 = icmp eq i32 %14, 32
br i1 %15, label %if.then, label %if.end
if.then: ; preds = %entry
%add.ptr29 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 66, i32 192
%arrayidx58484 = getelementptr inbounds float, float addrspace(3)* %add.ptr29, i32 %div
%arrayidx58 = bitcast float addrspace(3)* %arrayidx58484 to i32 addrspace(3)*
store volatile i32 0, i32 addrspace(3)* %arrayidx58, align 4, !tbaa !41
br label %if.end
if.end: ; preds = %entry, %if.then
tail call void @llvm.amdgcn.s.barrier() #5
%cmp63492 = icmp slt i32 %nb_sci.sroa.10.0.copyload, %nb_sci.sroa.11.0.copyload
br i1 %cmp63492, label %for.body65.lr.ph, label %if.end.for.end229_crit_edge
if.end.for.end229_crit_edge: ; preds = %if.end
%.pre = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 66, i32 %add
%.pre763 = add i32 %add, 64
%.pre764 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 66, i32 %.pre763
%.pre765 = add i32 %add, 128
%.pre766 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 66, i32 %.pre765
%.pre812 = shl i32 %nb_sci.sroa.0.0.copyload, 6
%.pre813 = add i32 %.pre812, %x.i
%.pre814 = or i32 %.pre812, 8
%.pre815 = add i32 %.pre814, %x.i
%.pre816 = or i32 %.pre812, 16
%.pre817 = add i32 %.pre816, %x.i
%.pre818 = or i32 %.pre812, 24
%.pre819 = add i32 %.pre818, %x.i
%.pre820 = or i32 %.pre812, 32
%.pre821 = add i32 %.pre820, %x.i
%.pre822 = or i32 %.pre812, 40
%.pre823 = add i32 %.pre822, %x.i
%.pre824 = or i32 %.pre812, 48
%.pre825 = add i32 %.pre824, %x.i
%.pre826 = or i32 %.pre812, 56
%.pre827 = add i32 %.pre826, %x.i
br label %for.end229
for.body65.lr.ph: ; preds = %if.end
%16 = zext i32 %div to i64
%and = and i32 %add, 31
%17 = zext i32 %and to i64
%18 = or i32 %y.i, 4
%19 = icmp eq i32 %18, 4
%cmp80 = icmp ult i32 %x.i, 4
%or.cond267 = and i1 %cmp80, %19
%20 = zext i32 %x.i to i64
%add88 = add nuw nsw i32 %y.i, %x.i
%arrayidx89 = getelementptr inbounds i32, i32 addrspace(3)* %1, i32 %add88
%mul103 = and i32 %y.i, 4
%cmp147 = icmp ugt i32 %y.i, %x.i
%notlhs = icmp ne i32 %nb_sci.sroa.4.0.copyload, 22
%arrayidx217 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 66, i32 %add
%add218 = add i32 %add, 64
%arrayidx219 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 66, i32 %add218
%add220 = add i32 %add, 128
%arrayidx221 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 66, i32 %add220
%21 = sext i32 %nb_sci.sroa.10.0.copyload to i64
%add105.3 = or i32 %mul103, 3
%arrayidx106.3 = getelementptr inbounds i32, i32 addrspace(3)* %1, i32 %add105.3
%22 = or i32 %mul31, 7
%add125.7.3 = add nuw nsw i32 %x.i, 56
%arrayidx126.7.3 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 %add125.7.3
%add121.7.3 = shl i32 %nb_sci.sroa.0.0.copyload, 6
%mul122.7.3 = or i32 %add121.7.3, 56
%add123.7.3 = add i32 %mul122.7.3, %x.i
%23 = sext i32 %add123.7.3 to i64
%arrayidx154.7.3 = getelementptr inbounds i32, i32 addrspace(1)* %atom_types, i64 %23
%24 = or i32 %mul31, 6
%add125.6.3 = add nuw nsw i32 %x.i, 48
%arrayidx126.6.3 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 %add125.6.3
%mul122.6.3 = or i32 %add121.7.3, 48
%add123.6.3 = add i32 %mul122.6.3, %x.i
%25 = sext i32 %add123.6.3 to i64
%arrayidx154.6.3 = getelementptr inbounds i32, i32 addrspace(1)* %atom_types, i64 %25
%26 = or i32 %mul31, 5
%add125.5.3 = add nuw nsw i32 %x.i, 40
%arrayidx126.5.3 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 %add125.5.3
%mul122.5.3 = or i32 %add121.7.3, 40
%add123.5.3 = add i32 %mul122.5.3, %x.i
%27 = sext i32 %add123.5.3 to i64
%arrayidx154.5.3 = getelementptr inbounds i32, i32 addrspace(1)* %atom_types, i64 %27
%28 = or i32 %mul31, 4
%add125.4.3 = add nuw nsw i32 %x.i, 32
%arrayidx126.4.3 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 %add125.4.3
%mul122.4.3 = or i32 %add121.7.3, 32
%add123.4.3 = add i32 %mul122.4.3, %x.i
%29 = sext i32 %add123.4.3 to i64
%arrayidx154.4.3 = getelementptr inbounds i32, i32 addrspace(1)* %atom_types, i64 %29
%30 = or i32 %mul31, 3
%add125.3.3 = add nuw nsw i32 %x.i, 24
%arrayidx126.3.3 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 %add125.3.3
%mul122.3.3 = or i32 %add121.7.3, 24
%add123.3.3 = add i32 %mul122.3.3, %x.i
%31 = sext i32 %add123.3.3 to i64
%arrayidx154.3.3 = getelementptr inbounds i32, i32 addrspace(1)* %atom_types, i64 %31
%32 = or i32 %mul31, 2
%add125.2.3 = add nuw nsw i32 %x.i, 16
%arrayidx126.2.3 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 %add125.2.3
%mul122.2.3 = or i32 %add121.7.3, 16
%add123.2.3 = add i32 %mul122.2.3, %x.i
%33 = sext i32 %add123.2.3 to i64
%arrayidx154.2.3 = getelementptr inbounds i32, i32 addrspace(1)* %atom_types, i64 %33
%34 = or i32 %mul31, 1
%add125.1.3 = add nuw nsw i32 %x.i, 8
%arrayidx126.1.3 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 %add125.1.3
%mul122.1.3 = or i32 %add121.7.3, 8
%add123.1.3 = add i32 %mul122.1.3, %x.i
%35 = sext i32 %add123.1.3 to i64
%arrayidx154.1.3 = getelementptr inbounds i32, i32 addrspace(1)* %atom_types, i64 %35
%arrayidx126.3623 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 %x.i
%add123.3637 = add i32 %add121.7.3, %x.i
%36 = sext i32 %add123.3637 to i64
%arrayidx154.3638 = getelementptr inbounds i32, i32 addrspace(1)* %atom_types, i64 %36
%add105.2 = or i32 %mul103, 2
%arrayidx106.2 = getelementptr inbounds i32, i32 addrspace(3)* %1, i32 %add105.2
%add105.1 = or i32 %mul103, 1
%arrayidx106.1 = getelementptr inbounds i32, i32 addrspace(3)* %1, i32 %add105.1
%arrayidx106 = getelementptr inbounds i32, i32 addrspace(3)* %1, i32 %mul103
br label %for.body65
for.body65: ; preds = %for.inc227, %for.body65.lr.ph
%fci_buf.sroa.37.0 = phi <4 x float> [ <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float undef>, %for.body65.lr.ph ], [ %fci_buf.sroa.37.2, %for.inc227 ]
%37 = phi <3 x float> [ bitcast (i96 trunc (i128 bitcast (<4 x i32> <i32 0, i32 0, i32 0, i32 undef> to i128) to i96) to <3 x float>), %for.body65.lr.ph ], [ %89, %for.inc227 ]
%38 = phi <3 x float> [ bitcast (i96 trunc (i128 bitcast (<4 x i32> <i32 0, i32 0, i32 0, i32 undef> to i128) to i96) to <3 x float>), %for.body65.lr.ph ], [ %90, %for.inc227 ]
%39 = phi <3 x float> [ bitcast (i96 trunc (i128 bitcast (<4 x i32> <i32 0, i32 0, i32 0, i32 undef> to i128) to i96) to <3 x float>), %for.body65.lr.ph ], [ %91, %for.inc227 ]
%40 = phi <3 x float> [ bitcast (i96 trunc (i128 bitcast (<4 x i32> <i32 0, i32 0, i32 0, i32 undef> to i128) to i96) to <3 x float>), %for.body65.lr.ph ], [ %92, %for.inc227 ]
%41 = phi <3 x float> [ bitcast (i96 trunc (i128 bitcast (<4 x i32> <i32 0, i32 0, i32 0, i32 undef> to i128) to i96) to <3 x float>), %for.body65.lr.ph ], [ %93, %for.inc227 ]
%42 = phi <3 x float> [ bitcast (i96 trunc (i128 bitcast (<4 x i32> <i32 0, i32 0, i32 0, i32 undef> to i128) to i96) to <3 x float>), %for.body65.lr.ph ], [ %94, %for.inc227 ]
%43 = phi <3 x float> [ bitcast (i96 trunc (i128 bitcast (<4 x i32> <i32 0, i32 0, i32 0, i32 undef> to i128) to i96) to <3 x float>), %for.body65.lr.ph ], [ %95, %for.inc227 ]
%loadVec4206.7 = phi <4 x float> [ <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float undef>, %for.body65.lr.ph ], [ %loadVec4206.7757, %for.inc227 ]
%loadVec4206.6 = phi <4 x float> [ <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float undef>, %for.body65.lr.ph ], [ %loadVec4206.6747, %for.inc227 ]
%loadVec4206.5 = phi <4 x float> [ <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float undef>, %for.body65.lr.ph ], [ %loadVec4206.5737, %for.inc227 ]
%loadVec4206.4 = phi <4 x float> [ <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float undef>, %for.body65.lr.ph ], [ %loadVec4206.4727, %for.inc227 ]
%loadVec4206.3 = phi <4 x float> [ <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float undef>, %for.body65.lr.ph ], [ %loadVec4206.3717, %for.inc227 ]
%loadVec4206.2 = phi <4 x float> [ <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float undef>, %for.body65.lr.ph ], [ %loadVec4206.2707, %for.inc227 ]
%loadVec4206.1 = phi <4 x float> [ <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float undef>, %for.body65.lr.ph ], [ %loadVec4206.1697, %for.inc227 ]
%loadVec4206 = phi <4 x float> [ <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float undef>, %for.body65.lr.ph ], [ %loadVec4206687, %for.inc227 ]
%indvars.iv = phi i64 [ %21, %for.body65.lr.ph ], [ %indvars.iv.next, %for.inc227 ]
%excl_ind = getelementptr inbounds %struct.nbnxn_cj4_t, %struct.nbnxn_cj4_t addrspace(1)* %pl_cj4, i64 %indvars.iv, i32 1, i64 %16, i32 1
%44 = load i32, i32 addrspace(1)* %excl_ind, align 4, !tbaa !43
%imask71 = getelementptr inbounds %struct.nbnxn_cj4_t, %struct.nbnxn_cj4_t addrspace(1)* %pl_cj4, i64 %indvars.iv, i32 1, i64 %16, i32 0
%45 = load i32, i32 addrspace(1)* %imask71, align 4, !tbaa !45
%46 = sext i32 %44 to i64
%arrayidx73 = getelementptr inbounds %struct.nbnxn_excl_t, %struct.nbnxn_excl_t addrspace(1)* %excl, i64 %46, i32 0, i64 %17
%47 = load i32, i32 addrspace(1)* %arrayidx73, align 4, !tbaa !41
%tobool = icmp eq i32 %45, 0
br i1 %tobool, label %for.inc227, label %if.then74
if.then74: ; preds = %for.body65
br i1 %or.cond267, label %if.then82, label %for.body94.preheader
if.then82: ; preds = %if.then74
%arrayidx85 = getelementptr inbounds %struct.nbnxn_cj4_t, %struct.nbnxn_cj4_t addrspace(1)* %pl_cj4, i64 %indvars.iv, i32 0, i64 %20
%48 = load i32, i32 addrspace(1)* %arrayidx85, align 4, !tbaa !41
store i32 %48, i32 addrspace(3)* %arrayidx89, align 4, !tbaa !41
br label %for.body94.preheader
for.body94.preheader: ; preds = %if.then74, %if.then82
%and96 = and i32 %45, 255
%tobool97 = icmp eq i32 %and96, 0
br i1 %tobool97, label %for.inc223, label %if.then98
if.then98: ; preds = %for.body94.preheader
%49 = load i32, i32 addrspace(3)* %arrayidx106, align 4, !tbaa !41
%mul107 = shl nsw i32 %49, 3
%add108 = add i32 %mul107, %y.i
%50 = sext i32 %add108 to i64
%arrayidx109 = getelementptr inbounds <4 x float>, <4 x float> addrspace(1)* %xq, i64 %50
%51 = load <4 x float>, <4 x float> addrspace(1)* %arrayidx109, align 16, !tbaa !36
%52 = extractelement <4 x float> %51, i32 3
%arrayidx111 = getelementptr inbounds i32, i32 addrspace(1)* %atom_types, i64 %50
%53 = load i32, i32 addrspace(1)* %arrayidx111, align 4, !tbaa !41
%and117 = and i32 %45, 1
%tobool118 = icmp eq i32 %and117, 0
br i1 %tobool118, label %if.end212, label %if.then119
if.then119: ; preds = %if.then98
%54 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx126.3623, align 16, !tbaa !36
%55 = fsub <4 x float> %54, %51
%56 = extractelement <4 x float> %55, i32 0
%57 = extractelement <4 x float> %55, i32 1
%mul3.i.i = fmul float %57, %57
%58 = tail call float @llvm.fmuladd.f32(float %56, float %56, float %mul3.i.i) #5
%59 = extractelement <4 x float> %55, i32 2
%60 = tail call float @llvm.fmuladd.f32(float %59, float %59, float %58) #5
%and139 = and i32 %47, 1
%tobool140 = icmp ne i32 %and139, 0
%cond = select i1 %tobool140, float 1.000000e+00, float 0.000000e+00
%notrhs = icmp ne i32 %mul31, %49
%not.or.cond = or i1 %notlhs, %notrhs
%cmp147. = or i1 %cmp147, %not.or.cond
%conv149 = uitofp i1 %cmp147. to float
%mul150 = fmul float %conv149, %nbparam_params_rcoulomb_sq
%cmp151 = fcmp olt float %60, %mul150
br i1 %cmp151, label %if.then153, label %if.end212
if.then153: ; preds = %if.then119
%extractVec137 = shufflevector <4 x float> %55, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%61 = extractelement <4 x float> %54, i32 3
%62 = load i32, i32 addrspace(1)* %arrayidx154.3638, align 4, !tbaa !41
%mul155 = mul nsw i32 %62, %ntypes
%add156 = add nsw i32 %mul155, %53
%mul157 = shl nsw i32 %add156, 1
%63 = sext i32 %mul157 to i64
%arrayidx158 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %63
%64 = load float, float addrspace(2)* %arrayidx158, align 4, !tbaa !39
%add162 = or i32 %mul157, 1
%65 = sext i32 %add162 to i64
%arrayidx163 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %65
%66 = load float, float addrspace(2)* %arrayidx163, align 4, !tbaa !39
%sub164 = fsub float 1.000000e+00, %cond
%67 = tail call float @llvm.fmuladd.f32(float %sub164, float 0x3D71979980000000, float %60)
%cmp.i.i = fcmp olt float %67, 0.000000e+00
%call.i.i = tail call float @llvm.sqrt.f32(float %67) #6
%call.i.i.op = fdiv float 1.000000e+00, %call.i.i
%div167 = select i1 %cmp.i.i, float 0x7FF8000000000000, float %call.i.i.op
%mul168 = fmul float %div167, %div167
%mul169 = fmul float %mul168, %mul168
%mul170 = fmul float %mul168, %mul169
%mul171 = fmul float %cond, %mul170
%neg = fsub float -0.000000e+00, %64
%68 = tail call float @llvm.fmuladd.f32(float %66, float %mul171, float %neg)
%mul173 = fmul float %mul171, %68
%mul174 = fmul float %mul168, %mul173
%cmp175 = fcmp olt float %67, %nbparam_params_rvdw_sq
%cond177 = select i1 %cmp175, float 1.000000e+00, float 0.000000e+00
%mul178 = fmul float %cond177, %mul174
%mul179 = fmul float %52, %61
%mul180 = fmul float %cond, %mul168
%mul182 = fmul float %mul, %67
%mul.i = fmul float %mul182, %mul182
%69 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i, float 0x3FBDA79640000000) #5
%70 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i, float 0x3FE03C5780000000) #5
%71 = tail call float @llvm.fmuladd.f32(float %69, float %mul.i, float 1.000000e+00) #5
%72 = tail call float @llvm.fmuladd.f32(float %70, float %mul182, float %71) #5
%div.i = fdiv float 1.000000e+00, %72, !fpmath !46
%73 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i, float 0xBF0BFF7260000000) #5
%74 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i, float 0x3F50794180000000) #5
%75 = tail call float @llvm.fmuladd.f32(float %73, float %mul.i, float 0xBF93BDB200000000) #5
%76 = tail call float @llvm.fmuladd.f32(float %74, float %mul.i, float 0x3FB1D5E760000000) #5
%77 = tail call float @llvm.fmuladd.f32(float %75, float %mul.i, float 0xBFE81272E0000000) #5
%78 = tail call float @llvm.fmuladd.f32(float %76, float %mul182, float %77) #5
%mul11.i = fmul float %78, %div.i
%mul184 = fmul float %mul21, %mul11.i
%79 = tail call float @llvm.fmuladd.f32(float %mul180, float %div167, float %mul184)
%80 = tail call float @llvm.fmuladd.f32(float %mul179, float %79, float %mul178)
%splat.splatinsert = insertelement <3 x float> undef, float %80, i32 0
%splat.splat = shufflevector <3 x float> %splat.splatinsert, <3 x float> undef, <3 x i32> zeroinitializer
%mul189 = fmul <3 x float> %extractVec137, %splat.splat
%sub198 = fsub <3 x float> zeroinitializer, %mul189
%extractVec199 = shufflevector <3 x float> %sub198, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec207 = shufflevector <4 x float> %loadVec4206, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add208 = fadd <3 x float> %extractVec207, %mul189
%extractVec209 = shufflevector <3 x float> %add208, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end212
if.end212: ; preds = %if.then98, %if.then119, %if.then153
%81 = phi <3 x float> [ %add208, %if.then153 ], [ %43, %if.then119 ], [ %43, %if.then98 ]
%loadVec4206692 = phi <4 x float> [ %extractVec209, %if.then153 ], [ %loadVec4206, %if.then119 ], [ %loadVec4206, %if.then98 ]
%fcj_buf.sroa.0.1 = phi <4 x float> [ %extractVec199, %if.then153 ], [ <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float undef>, %if.then119 ], [ <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float undef>, %if.then98 ]
%and117.1 = and i32 %45, 2
%tobool118.1 = icmp eq i32 %and117.1, 0
br i1 %tobool118.1, label %if.end212.1, label %if.then119.1
for.inc223: ; preds = %for.body94.preheader, %if.end212.7
%fci_buf.sroa.37.1 = phi <4 x float> [ %fci_buf.sroa.37.0, %for.body94.preheader ], [ %fci_buf.sroa.37.4, %if.end212.7 ]
%82 = phi <3 x float> [ %37, %for.body94.preheader ], [ %303, %if.end212.7 ]
%83 = phi <3 x float> [ %38, %for.body94.preheader ], [ %275, %if.end212.7 ]
%84 = phi <3 x float> [ %39, %for.body94.preheader ], [ %247, %if.end212.7 ]
%85 = phi <3 x float> [ %40, %for.body94.preheader ], [ %219, %if.end212.7 ]
%86 = phi <3 x float> [ %41, %for.body94.preheader ], [ %191, %if.end212.7 ]
%87 = phi <3 x float> [ %42, %for.body94.preheader ], [ %163, %if.end212.7 ]
%88 = phi <3 x float> [ %43, %for.body94.preheader ], [ %81, %if.end212.7 ]
%loadVec4206.7.1 = phi <4 x float> [ %loadVec4206.7, %for.body94.preheader ], [ %loadVec4206.7762, %if.end212.7 ]
%loadVec4206.6.1 = phi <4 x float> [ %loadVec4206.6, %for.body94.preheader ], [ %loadVec4206.6752, %if.end212.7 ]
%loadVec4206.5.1 = phi <4 x float> [ %loadVec4206.5, %for.body94.preheader ], [ %loadVec4206.5742, %if.end212.7 ]
%loadVec4206.4.1 = phi <4 x float> [ %loadVec4206.4, %for.body94.preheader ], [ %loadVec4206.4732, %if.end212.7 ]
%loadVec4206.3.1 = phi <4 x float> [ %loadVec4206.3, %for.body94.preheader ], [ %loadVec4206.3722, %if.end212.7 ]
%loadVec4206.2.1 = phi <4 x float> [ %loadVec4206.2, %for.body94.preheader ], [ %loadVec4206.2712, %if.end212.7 ]
%loadVec4206.1.1 = phi <4 x float> [ %loadVec4206.1, %for.body94.preheader ], [ %loadVec4206.1702, %if.end212.7 ]
%loadVec4206.1552 = phi <4 x float> [ %loadVec4206, %for.body94.preheader ], [ %loadVec4206692, %if.end212.7 ]
%and96.1 = and i32 %45, 65280
%tobool97.1 = icmp eq i32 %and96.1, 0
br i1 %tobool97.1, label %for.inc223.1, label %if.then98.1
for.inc227: ; preds = %for.inc223.2, %if.end212.7.3, %for.body65
%fci_buf.sroa.37.2 = phi <4 x float> [ %fci_buf.sroa.37.0, %for.body65 ], [ %fci_buf.sroa.37.8, %for.inc223.2 ], [ %fci_buf.sroa.37.9, %if.end212.7.3 ]
%89 = phi <3 x float> [ %37, %for.body65 ], [ %803, %for.inc223.2 ], [ %1010, %if.end212.7.3 ]
%90 = phi <3 x float> [ %38, %for.body65 ], [ %804, %for.inc223.2 ], [ %982, %if.end212.7.3 ]
%91 = phi <3 x float> [ %39, %for.body65 ], [ %805, %for.inc223.2 ], [ %954, %if.end212.7.3 ]
%92 = phi <3 x float> [ %40, %for.body65 ], [ %806, %for.inc223.2 ], [ %926, %if.end212.7.3 ]
%93 = phi <3 x float> [ %41, %for.body65 ], [ %807, %for.inc223.2 ], [ %898, %if.end212.7.3 ]
%94 = phi <3 x float> [ %42, %for.body65 ], [ %808, %for.inc223.2 ], [ %870, %if.end212.7.3 ]
%95 = phi <3 x float> [ %43, %for.body65 ], [ %809, %for.inc223.2 ], [ %842, %if.end212.7.3 ]
%loadVec4206.7757 = phi <4 x float> [ %loadVec4206.7, %for.body65 ], [ %loadVec4206.7.3, %for.inc223.2 ], [ %loadVec4206.7755, %if.end212.7.3 ]
%loadVec4206.6747 = phi <4 x float> [ %loadVec4206.6, %for.body65 ], [ %loadVec4206.6.3, %for.inc223.2 ], [ %loadVec4206.6745, %if.end212.7.3 ]
%loadVec4206.5737 = phi <4 x float> [ %loadVec4206.5, %for.body65 ], [ %loadVec4206.5.3, %for.inc223.2 ], [ %loadVec4206.5735, %if.end212.7.3 ]
%loadVec4206.4727 = phi <4 x float> [ %loadVec4206.4, %for.body65 ], [ %loadVec4206.4.3, %for.inc223.2 ], [ %loadVec4206.4725, %if.end212.7.3 ]
%loadVec4206.3717 = phi <4 x float> [ %loadVec4206.3, %for.body65 ], [ %loadVec4206.3.3, %for.inc223.2 ], [ %loadVec4206.3715, %if.end212.7.3 ]
%loadVec4206.2707 = phi <4 x float> [ %loadVec4206.2, %for.body65 ], [ %loadVec4206.2.3, %for.inc223.2 ], [ %loadVec4206.2705, %if.end212.7.3 ]
%loadVec4206.1697 = phi <4 x float> [ %loadVec4206.1, %for.body65 ], [ %loadVec4206.1.3, %for.inc223.2 ], [ %loadVec4206.1695, %if.end212.7.3 ]
%loadVec4206687 = phi <4 x float> [ %loadVec4206, %for.body65 ], [ %loadVec4206.3674, %for.inc223.2 ], [ %loadVec4206685, %if.end212.7.3 ]
%indvars.iv.next = add nsw i64 %indvars.iv, 1
%lftr.wideiv = trunc i64 %indvars.iv.next to i32
%exitcond = icmp eq i32 %lftr.wideiv, %nb_sci.sroa.11.0.copyload
br i1 %exitcond, label %for.end229.loopexit, label %for.body65
for.end229.loopexit: ; preds = %for.inc227
%.lcssa851 = phi <3 x float> [ %95, %for.inc227 ]
%.lcssa850 = phi <3 x float> [ %94, %for.inc227 ]
%.lcssa849 = phi <3 x float> [ %93, %for.inc227 ]
%.lcssa848 = phi <3 x float> [ %92, %for.inc227 ]
%.lcssa847 = phi <3 x float> [ %91, %for.inc227 ]
%.lcssa846 = phi <3 x float> [ %90, %for.inc227 ]
%.lcssa = phi <3 x float> [ %89, %for.inc227 ]
%fci_buf.sroa.37.2.lcssa = phi <4 x float> [ %fci_buf.sroa.37.2, %for.inc227 ]
br label %for.end229
for.end229: ; preds = %for.end229.loopexit, %if.end.for.end229_crit_edge
%add242.7.pre-phi = phi i32 [ %.pre827, %if.end.for.end229_crit_edge ], [ %add123.7.3, %for.end229.loopexit ]
%add242.6.pre-phi = phi i32 [ %.pre825, %if.end.for.end229_crit_edge ], [ %add123.6.3, %for.end229.loopexit ]
%add242.5.pre-phi = phi i32 [ %.pre823, %if.end.for.end229_crit_edge ], [ %add123.5.3, %for.end229.loopexit ]
%add242.4.pre-phi = phi i32 [ %.pre821, %if.end.for.end229_crit_edge ], [ %add123.4.3, %for.end229.loopexit ]
%add242.3.pre-phi = phi i32 [ %.pre819, %if.end.for.end229_crit_edge ], [ %add123.3.3, %for.end229.loopexit ]
%add242.2.pre-phi = phi i32 [ %.pre817, %if.end.for.end229_crit_edge ], [ %add123.2.3, %for.end229.loopexit ]
%add242.1.pre-phi = phi i32 [ %.pre815, %if.end.for.end229_crit_edge ], [ %add123.1.3, %for.end229.loopexit ]
%add242.pre-phi = phi i32 [ %.pre813, %if.end.for.end229_crit_edge ], [ %add123.3637, %for.end229.loopexit ]
%fci_buf.sroa.37.3 = phi <4 x float> [ <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float undef>, %if.end.for.end229_crit_edge ], [ %fci_buf.sroa.37.2.lcssa, %for.end229.loopexit ]
%arrayidx250.pre-phi = phi float addrspace(3)* [ %.pre766, %if.end.for.end229_crit_edge ], [ %arrayidx221, %for.end229.loopexit ]
%arrayidx247.pre-phi = phi float addrspace(3)* [ %.pre764, %if.end.for.end229_crit_edge ], [ %arrayidx219, %for.end229.loopexit ]
%arrayidx244.pre-phi = phi float addrspace(3)* [ %.pre, %if.end.for.end229_crit_edge ], [ %arrayidx217, %for.end229.loopexit ]
%96 = phi <3 x float> [ bitcast (i96 trunc (i128 bitcast (<4 x i32> <i32 0, i32 0, i32 0, i32 undef> to i128) to i96) to <3 x float>), %if.end.for.end229_crit_edge ], [ %.lcssa, %for.end229.loopexit ]
%97 = phi <3 x float> [ bitcast (i96 trunc (i128 bitcast (<4 x i32> <i32 0, i32 0, i32 0, i32 undef> to i128) to i96) to <3 x float>), %if.end.for.end229_crit_edge ], [ %.lcssa846, %for.end229.loopexit ]
%98 = phi <3 x float> [ bitcast (i96 trunc (i128 bitcast (<4 x i32> <i32 0, i32 0, i32 0, i32 undef> to i128) to i96) to <3 x float>), %if.end.for.end229_crit_edge ], [ %.lcssa847, %for.end229.loopexit ]
%99 = phi <3 x float> [ bitcast (i96 trunc (i128 bitcast (<4 x i32> <i32 0, i32 0, i32 0, i32 undef> to i128) to i96) to <3 x float>), %if.end.for.end229_crit_edge ], [ %.lcssa848, %for.end229.loopexit ]
%100 = phi <3 x float> [ bitcast (i96 trunc (i128 bitcast (<4 x i32> <i32 0, i32 0, i32 0, i32 undef> to i128) to i96) to <3 x float>), %if.end.for.end229_crit_edge ], [ %.lcssa849, %for.end229.loopexit ]
%101 = phi <3 x float> [ bitcast (i96 trunc (i128 bitcast (<4 x i32> <i32 0, i32 0, i32 0, i32 undef> to i128) to i96) to <3 x float>), %if.end.for.end229_crit_edge ], [ %.lcssa850, %for.end229.loopexit ]
%102 = phi <3 x float> [ bitcast (i96 trunc (i128 bitcast (<4 x i32> <i32 0, i32 0, i32 0, i32 undef> to i128) to i96) to <3 x float>), %if.end.for.end229_crit_edge ], [ %.lcssa851, %for.end229.loopexit ]
store float 0.000000e+00, float* %fshift_buf, align 4, !tbaa !39
%tobool251767 = icmp ne i32 %bCalcFshift, 0
%not.cmp231 = icmp ne i32 %nb_sci.sroa.4.0.copyload, 22
%tobool251 = and i1 %tobool251767, %not.cmp231
%103 = extractelement <3 x float> %102, i32 0
store float %103, float addrspace(3)* %arrayidx244.pre-phi, align 4, !tbaa !39
%104 = extractelement <3 x float> %102, i32 1
store float %104, float addrspace(3)* %arrayidx247.pre-phi, align 4, !tbaa !39
%105 = extractelement <3 x float> %102, i32 2
store float %105, float addrspace(3)* %arrayidx250.pre-phi, align 4, !tbaa !39
tail call void @llvm.amdgcn.s.barrier() #5
call fastcc void @reduce_force_i_pow2(float addrspace(3)* %2, float addrspace(1)* %f, float* nonnull %fshift_buf, i1 zeroext %tobool251, i32 %x.i, i32 %y.i, i32 %add242.pre-phi) #5
tail call void @llvm.amdgcn.s.barrier() #5
%106 = extractelement <3 x float> %101, i32 0
store float %106, float addrspace(3)* %arrayidx244.pre-phi, align 4, !tbaa !39
%107 = extractelement <3 x float> %101, i32 1
store float %107, float addrspace(3)* %arrayidx247.pre-phi, align 4, !tbaa !39
%108 = extractelement <3 x float> %101, i32 2
store float %108, float addrspace(3)* %arrayidx250.pre-phi, align 4, !tbaa !39
tail call void @llvm.amdgcn.s.barrier() #5
call fastcc void @reduce_force_i_pow2(float addrspace(3)* %2, float addrspace(1)* %f, float* nonnull %fshift_buf, i1 zeroext %tobool251, i32 %x.i, i32 %y.i, i32 %add242.1.pre-phi) #5
tail call void @llvm.amdgcn.s.barrier() #5
%109 = extractelement <3 x float> %100, i32 0
store float %109, float addrspace(3)* %arrayidx244.pre-phi, align 4, !tbaa !39
%110 = extractelement <3 x float> %100, i32 1
store float %110, float addrspace(3)* %arrayidx247.pre-phi, align 4, !tbaa !39
%111 = extractelement <3 x float> %100, i32 2
store float %111, float addrspace(3)* %arrayidx250.pre-phi, align 4, !tbaa !39
tail call void @llvm.amdgcn.s.barrier() #5
call fastcc void @reduce_force_i_pow2(float addrspace(3)* %2, float addrspace(1)* %f, float* nonnull %fshift_buf, i1 zeroext %tobool251, i32 %x.i, i32 %y.i, i32 %add242.2.pre-phi) #5
tail call void @llvm.amdgcn.s.barrier() #5
%112 = extractelement <3 x float> %99, i32 0
store float %112, float addrspace(3)* %arrayidx244.pre-phi, align 4, !tbaa !39
%113 = extractelement <3 x float> %99, i32 1
store float %113, float addrspace(3)* %arrayidx247.pre-phi, align 4, !tbaa !39
%114 = extractelement <3 x float> %99, i32 2
store float %114, float addrspace(3)* %arrayidx250.pre-phi, align 4, !tbaa !39
tail call void @llvm.amdgcn.s.barrier() #5
call fastcc void @reduce_force_i_pow2(float addrspace(3)* %2, float addrspace(1)* %f, float* nonnull %fshift_buf, i1 zeroext %tobool251, i32 %x.i, i32 %y.i, i32 %add242.3.pre-phi) #5
tail call void @llvm.amdgcn.s.barrier() #5
%115 = extractelement <3 x float> %98, i32 0
store float %115, float addrspace(3)* %arrayidx244.pre-phi, align 4, !tbaa !39
%116 = extractelement <3 x float> %98, i32 1
store float %116, float addrspace(3)* %arrayidx247.pre-phi, align 4, !tbaa !39
%117 = extractelement <3 x float> %98, i32 2
store float %117, float addrspace(3)* %arrayidx250.pre-phi, align 4, !tbaa !39
tail call void @llvm.amdgcn.s.barrier() #5
call fastcc void @reduce_force_i_pow2(float addrspace(3)* %2, float addrspace(1)* %f, float* nonnull %fshift_buf, i1 zeroext %tobool251, i32 %x.i, i32 %y.i, i32 %add242.4.pre-phi) #5
tail call void @llvm.amdgcn.s.barrier() #5
%118 = extractelement <3 x float> %97, i32 0
store float %118, float addrspace(3)* %arrayidx244.pre-phi, align 4, !tbaa !39
%119 = extractelement <3 x float> %97, i32 1
store float %119, float addrspace(3)* %arrayidx247.pre-phi, align 4, !tbaa !39
%120 = extractelement <3 x float> %97, i32 2
store float %120, float addrspace(3)* %arrayidx250.pre-phi, align 4, !tbaa !39
tail call void @llvm.amdgcn.s.barrier() #5
call fastcc void @reduce_force_i_pow2(float addrspace(3)* %2, float addrspace(1)* %f, float* nonnull %fshift_buf, i1 zeroext %tobool251, i32 %x.i, i32 %y.i, i32 %add242.5.pre-phi) #5
tail call void @llvm.amdgcn.s.barrier() #5
%121 = extractelement <3 x float> %96, i32 0
store float %121, float addrspace(3)* %arrayidx244.pre-phi, align 4, !tbaa !39
%122 = extractelement <3 x float> %96, i32 1
store float %122, float addrspace(3)* %arrayidx247.pre-phi, align 4, !tbaa !39
%123 = extractelement <3 x float> %96, i32 2
store float %123, float addrspace(3)* %arrayidx250.pre-phi, align 4, !tbaa !39
tail call void @llvm.amdgcn.s.barrier() #5
call fastcc void @reduce_force_i_pow2(float addrspace(3)* %2, float addrspace(1)* %f, float* nonnull %fshift_buf, i1 zeroext %tobool251, i32 %x.i, i32 %y.i, i32 %add242.6.pre-phi) #5
tail call void @llvm.amdgcn.s.barrier() #5
%124 = extractelement <4 x float> %fci_buf.sroa.37.3, i32 0
store float %124, float addrspace(3)* %arrayidx244.pre-phi, align 4, !tbaa !39
%125 = extractelement <4 x float> %fci_buf.sroa.37.3, i32 1
store float %125, float addrspace(3)* %arrayidx247.pre-phi, align 4, !tbaa !39
%126 = extractelement <4 x float> %fci_buf.sroa.37.3, i32 2
store float %126, float addrspace(3)* %arrayidx250.pre-phi, align 4, !tbaa !39
tail call void @llvm.amdgcn.s.barrier() #5
call fastcc void @reduce_force_i_pow2(float addrspace(3)* %2, float addrspace(1)* %f, float* nonnull %fshift_buf, i1 zeroext %tobool251, i32 %x.i, i32 %y.i, i32 %add242.7.pre-phi) #5
tail call void @llvm.amdgcn.s.barrier() #5
%cmp257 = icmp ult i32 %y.i, 3
%or.cond268 = and i1 %cmp257, %tobool251
br i1 %or.cond268, label %if.then259, label %if.end265
if.then259: ; preds = %for.end229
%add262 = add i32 %mul36, %y.i
%127 = sext i32 %add262 to i64
%arrayidx263 = getelementptr inbounds float, float addrspace(1)* %fshift, i64 %127
%128 = load float, float* %fshift_buf, align 4, !tbaa !39
%129 = load volatile float, float addrspace(1)* %arrayidx263, align 4, !tbaa !39
%130 = bitcast float %129 to i32
%131 = bitcast float addrspace(1)* %arrayidx263 to i32 addrspace(1)*
br label %do.body.i
do.body.i: ; preds = %do.body.i, %if.then259
%current.sroa.0.0.i = phi i32 [ %130, %if.then259 ], [ %135, %do.body.i ]
%132 = bitcast i32 %current.sroa.0.0.i to float
%add.i = fadd float %128, %132
%133 = bitcast float %add.i to i32
%134 = cmpxchg volatile i32 addrspace(1)* %131, i32 %current.sroa.0.0.i, i32 %133 seq_cst seq_cst
%135 = extractvalue { i32, i1 } %134, 0
%cmp.i = extractvalue { i32, i1 } %134, 1
br i1 %cmp.i, label %if.end265.loopexit, label %do.body.i
if.end265.loopexit: ; preds = %do.body.i
br label %if.end265
if.end265: ; preds = %if.end265.loopexit, %for.end229
call void @llvm.lifetime.end(i64 4, i8* %0) #5
ret void
if.then119.1: ; preds = %if.end212
%136 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx126.1.3, align 16, !tbaa !36
%137 = fsub <4 x float> %136, %51
%138 = extractelement <4 x float> %137, i32 0
%139 = extractelement <4 x float> %137, i32 1
%mul3.i.i.1 = fmul float %139, %139
%140 = tail call float @llvm.fmuladd.f32(float %138, float %138, float %mul3.i.i.1) #5
%141 = extractelement <4 x float> %137, i32 2
%142 = tail call float @llvm.fmuladd.f32(float %141, float %141, float %140) #5
%and139.1 = and i32 %47, 2
%tobool140.1 = icmp ne i32 %and139.1, 0
%cond.1 = select i1 %tobool140.1, float 1.000000e+00, float 0.000000e+00
%notrhs.1 = icmp ne i32 %34, %49
%not.or.cond.1 = or i1 %notlhs, %notrhs.1
%cmp147..1 = or i1 %cmp147, %not.or.cond.1
%conv149.1 = uitofp i1 %cmp147..1 to float
%mul150.1 = fmul float %conv149.1, %nbparam_params_rcoulomb_sq
%cmp151.1 = fcmp olt float %142, %mul150.1
br i1 %cmp151.1, label %if.then153.1, label %if.end212.1
if.then153.1: ; preds = %if.then119.1
%extractVec137.1 = shufflevector <4 x float> %137, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%143 = extractelement <4 x float> %136, i32 3
%144 = load i32, i32 addrspace(1)* %arrayidx154.1.3, align 4, !tbaa !41
%mul155.1 = mul nsw i32 %144, %ntypes
%add156.1 = add nsw i32 %mul155.1, %53
%mul157.1 = shl nsw i32 %add156.1, 1
%145 = sext i32 %mul157.1 to i64
%arrayidx158.1 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %145
%146 = load float, float addrspace(2)* %arrayidx158.1, align 4, !tbaa !39
%add162.1 = or i32 %mul157.1, 1
%147 = sext i32 %add162.1 to i64
%arrayidx163.1 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %147
%148 = load float, float addrspace(2)* %arrayidx163.1, align 4, !tbaa !39
%sub164.1 = fsub float 1.000000e+00, %cond.1
%149 = tail call float @llvm.fmuladd.f32(float %sub164.1, float 0x3D71979980000000, float %142)
%cmp.i.i.1 = fcmp olt float %149, 0.000000e+00
%call.i.i.1 = tail call float @llvm.sqrt.f32(float %149) #6
%call.i.i.op.1 = fdiv float 1.000000e+00, %call.i.i.1
%div167.1 = select i1 %cmp.i.i.1, float 0x7FF8000000000000, float %call.i.i.op.1
%mul168.1 = fmul float %div167.1, %div167.1
%mul169.1 = fmul float %mul168.1, %mul168.1
%mul170.1 = fmul float %mul168.1, %mul169.1
%mul171.1 = fmul float %cond.1, %mul170.1
%neg.1 = fsub float -0.000000e+00, %146
%150 = tail call float @llvm.fmuladd.f32(float %148, float %mul171.1, float %neg.1)
%mul173.1 = fmul float %mul171.1, %150
%mul174.1 = fmul float %mul168.1, %mul173.1
%cmp175.1 = fcmp olt float %149, %nbparam_params_rvdw_sq
%cond177.1 = select i1 %cmp175.1, float 1.000000e+00, float 0.000000e+00
%mul178.1 = fmul float %cond177.1, %mul174.1
%mul179.1 = fmul float %52, %143
%mul180.1 = fmul float %cond.1, %mul168.1
%mul182.1 = fmul float %mul, %149
%mul.i.1 = fmul float %mul182.1, %mul182.1
%151 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.1, float 0x3FBDA79640000000) #5
%152 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.1, float 0x3FE03C5780000000) #5
%153 = tail call float @llvm.fmuladd.f32(float %151, float %mul.i.1, float 1.000000e+00) #5
%154 = tail call float @llvm.fmuladd.f32(float %152, float %mul182.1, float %153) #5
%div.i.1 = fdiv float 1.000000e+00, %154, !fpmath !46
%155 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.1, float 0xBF0BFF7260000000) #5
%156 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.1, float 0x3F50794180000000) #5
%157 = tail call float @llvm.fmuladd.f32(float %155, float %mul.i.1, float 0xBF93BDB200000000) #5
%158 = tail call float @llvm.fmuladd.f32(float %156, float %mul.i.1, float 0x3FB1D5E760000000) #5
%159 = tail call float @llvm.fmuladd.f32(float %157, float %mul.i.1, float 0xBFE81272E0000000) #5
%160 = tail call float @llvm.fmuladd.f32(float %158, float %mul182.1, float %159) #5
%mul11.i.1 = fmul float %160, %div.i.1
%mul184.1 = fmul float %mul21, %mul11.i.1
%161 = tail call float @llvm.fmuladd.f32(float %mul180.1, float %div167.1, float %mul184.1)
%162 = tail call float @llvm.fmuladd.f32(float %mul179.1, float %161, float %mul178.1)
%splat.splatinsert.1 = insertelement <3 x float> undef, float %162, i32 0
%splat.splat.1 = shufflevector <3 x float> %splat.splatinsert.1, <3 x float> undef, <3 x i32> zeroinitializer
%mul189.1 = fmul <3 x float> %extractVec137.1, %splat.splat.1
%extractVec197.1 = shufflevector <4 x float> %fcj_buf.sroa.0.1, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub198.1 = fsub <3 x float> %extractVec197.1, %mul189.1
%extractVec199.1 = shufflevector <3 x float> %sub198.1, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec207.1 = shufflevector <4 x float> %loadVec4206.1, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add208.1 = fadd <3 x float> %extractVec207.1, %mul189.1
%extractVec209.1 = shufflevector <3 x float> %add208.1, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end212.1
if.end212.1: ; preds = %if.then153.1, %if.then119.1, %if.end212
%163 = phi <3 x float> [ %add208.1, %if.then153.1 ], [ %42, %if.then119.1 ], [ %42, %if.end212 ]
%loadVec4206.1702 = phi <4 x float> [ %extractVec209.1, %if.then153.1 ], [ %loadVec4206.1, %if.then119.1 ], [ %loadVec4206.1, %if.end212 ]
%fcj_buf.sroa.0.1.1 = phi <4 x float> [ %extractVec199.1, %if.then153.1 ], [ %fcj_buf.sroa.0.1, %if.then119.1 ], [ %fcj_buf.sroa.0.1, %if.end212 ]
%and117.2 = and i32 %45, 4
%tobool118.2 = icmp eq i32 %and117.2, 0
br i1 %tobool118.2, label %if.end212.2, label %if.then119.2
if.then119.2: ; preds = %if.end212.1
%164 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx126.2.3, align 16, !tbaa !36
%165 = fsub <4 x float> %164, %51
%166 = extractelement <4 x float> %165, i32 0
%167 = extractelement <4 x float> %165, i32 1
%mul3.i.i.2 = fmul float %167, %167
%168 = tail call float @llvm.fmuladd.f32(float %166, float %166, float %mul3.i.i.2) #5
%169 = extractelement <4 x float> %165, i32 2
%170 = tail call float @llvm.fmuladd.f32(float %169, float %169, float %168) #5
%and139.2 = and i32 %47, 4
%tobool140.2 = icmp ne i32 %and139.2, 0
%cond.2 = select i1 %tobool140.2, float 1.000000e+00, float 0.000000e+00
%notrhs.2 = icmp ne i32 %32, %49
%not.or.cond.2 = or i1 %notlhs, %notrhs.2
%cmp147..2 = or i1 %cmp147, %not.or.cond.2
%conv149.2 = uitofp i1 %cmp147..2 to float
%mul150.2 = fmul float %conv149.2, %nbparam_params_rcoulomb_sq
%cmp151.2 = fcmp olt float %170, %mul150.2
br i1 %cmp151.2, label %if.then153.2, label %if.end212.2
if.then153.2: ; preds = %if.then119.2
%extractVec137.2 = shufflevector <4 x float> %165, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%171 = extractelement <4 x float> %164, i32 3
%172 = load i32, i32 addrspace(1)* %arrayidx154.2.3, align 4, !tbaa !41
%mul155.2 = mul nsw i32 %172, %ntypes
%add156.2 = add nsw i32 %mul155.2, %53
%mul157.2 = shl nsw i32 %add156.2, 1
%173 = sext i32 %mul157.2 to i64
%arrayidx158.2 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %173
%174 = load float, float addrspace(2)* %arrayidx158.2, align 4, !tbaa !39
%add162.2 = or i32 %mul157.2, 1
%175 = sext i32 %add162.2 to i64
%arrayidx163.2 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %175
%176 = load float, float addrspace(2)* %arrayidx163.2, align 4, !tbaa !39
%sub164.2 = fsub float 1.000000e+00, %cond.2
%177 = tail call float @llvm.fmuladd.f32(float %sub164.2, float 0x3D71979980000000, float %170)
%cmp.i.i.2 = fcmp olt float %177, 0.000000e+00
%call.i.i.2 = tail call float @llvm.sqrt.f32(float %177) #6
%call.i.i.op.2 = fdiv float 1.000000e+00, %call.i.i.2
%div167.2 = select i1 %cmp.i.i.2, float 0x7FF8000000000000, float %call.i.i.op.2
%mul168.2 = fmul float %div167.2, %div167.2
%mul169.2 = fmul float %mul168.2, %mul168.2
%mul170.2 = fmul float %mul168.2, %mul169.2
%mul171.2 = fmul float %cond.2, %mul170.2
%neg.2 = fsub float -0.000000e+00, %174
%178 = tail call float @llvm.fmuladd.f32(float %176, float %mul171.2, float %neg.2)
%mul173.2 = fmul float %mul171.2, %178
%mul174.2 = fmul float %mul168.2, %mul173.2
%cmp175.2 = fcmp olt float %177, %nbparam_params_rvdw_sq
%cond177.2 = select i1 %cmp175.2, float 1.000000e+00, float 0.000000e+00
%mul178.2 = fmul float %cond177.2, %mul174.2
%mul179.2 = fmul float %52, %171
%mul180.2 = fmul float %cond.2, %mul168.2
%mul182.2 = fmul float %mul, %177
%mul.i.2 = fmul float %mul182.2, %mul182.2
%179 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.2, float 0x3FBDA79640000000) #5
%180 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.2, float 0x3FE03C5780000000) #5
%181 = tail call float @llvm.fmuladd.f32(float %179, float %mul.i.2, float 1.000000e+00) #5
%182 = tail call float @llvm.fmuladd.f32(float %180, float %mul182.2, float %181) #5
%div.i.2 = fdiv float 1.000000e+00, %182, !fpmath !46
%183 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.2, float 0xBF0BFF7260000000) #5
%184 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.2, float 0x3F50794180000000) #5
%185 = tail call float @llvm.fmuladd.f32(float %183, float %mul.i.2, float 0xBF93BDB200000000) #5
%186 = tail call float @llvm.fmuladd.f32(float %184, float %mul.i.2, float 0x3FB1D5E760000000) #5
%187 = tail call float @llvm.fmuladd.f32(float %185, float %mul.i.2, float 0xBFE81272E0000000) #5
%188 = tail call float @llvm.fmuladd.f32(float %186, float %mul182.2, float %187) #5
%mul11.i.2 = fmul float %188, %div.i.2
%mul184.2 = fmul float %mul21, %mul11.i.2
%189 = tail call float @llvm.fmuladd.f32(float %mul180.2, float %div167.2, float %mul184.2)
%190 = tail call float @llvm.fmuladd.f32(float %mul179.2, float %189, float %mul178.2)
%splat.splatinsert.2 = insertelement <3 x float> undef, float %190, i32 0
%splat.splat.2 = shufflevector <3 x float> %splat.splatinsert.2, <3 x float> undef, <3 x i32> zeroinitializer
%mul189.2 = fmul <3 x float> %extractVec137.2, %splat.splat.2
%extractVec197.2 = shufflevector <4 x float> %fcj_buf.sroa.0.1.1, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub198.2 = fsub <3 x float> %extractVec197.2, %mul189.2
%extractVec199.2 = shufflevector <3 x float> %sub198.2, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec207.2 = shufflevector <4 x float> %loadVec4206.2, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add208.2 = fadd <3 x float> %extractVec207.2, %mul189.2
%extractVec209.2 = shufflevector <3 x float> %add208.2, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end212.2
if.end212.2: ; preds = %if.then153.2, %if.then119.2, %if.end212.1
%191 = phi <3 x float> [ %add208.2, %if.then153.2 ], [ %41, %if.then119.2 ], [ %41, %if.end212.1 ]
%loadVec4206.2712 = phi <4 x float> [ %extractVec209.2, %if.then153.2 ], [ %loadVec4206.2, %if.then119.2 ], [ %loadVec4206.2, %if.end212.1 ]
%fcj_buf.sroa.0.1.2 = phi <4 x float> [ %extractVec199.2, %if.then153.2 ], [ %fcj_buf.sroa.0.1.1, %if.then119.2 ], [ %fcj_buf.sroa.0.1.1, %if.end212.1 ]
%and117.3 = and i32 %45, 8
%tobool118.3 = icmp eq i32 %and117.3, 0
br i1 %tobool118.3, label %if.end212.3, label %if.then119.3
if.then119.3: ; preds = %if.end212.2
%192 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx126.3.3, align 16, !tbaa !36
%193 = fsub <4 x float> %192, %51
%194 = extractelement <4 x float> %193, i32 0
%195 = extractelement <4 x float> %193, i32 1
%mul3.i.i.3 = fmul float %195, %195
%196 = tail call float @llvm.fmuladd.f32(float %194, float %194, float %mul3.i.i.3) #5
%197 = extractelement <4 x float> %193, i32 2
%198 = tail call float @llvm.fmuladd.f32(float %197, float %197, float %196) #5
%and139.3 = and i32 %47, 8
%tobool140.3 = icmp ne i32 %and139.3, 0
%cond.3 = select i1 %tobool140.3, float 1.000000e+00, float 0.000000e+00
%notrhs.3 = icmp ne i32 %30, %49
%not.or.cond.3 = or i1 %notlhs, %notrhs.3
%cmp147..3 = or i1 %cmp147, %not.or.cond.3
%conv149.3 = uitofp i1 %cmp147..3 to float
%mul150.3 = fmul float %conv149.3, %nbparam_params_rcoulomb_sq
%cmp151.3 = fcmp olt float %198, %mul150.3
br i1 %cmp151.3, label %if.then153.3, label %if.end212.3
if.then153.3: ; preds = %if.then119.3
%extractVec137.3 = shufflevector <4 x float> %193, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%199 = extractelement <4 x float> %192, i32 3
%200 = load i32, i32 addrspace(1)* %arrayidx154.3.3, align 4, !tbaa !41
%mul155.3 = mul nsw i32 %200, %ntypes
%add156.3 = add nsw i32 %mul155.3, %53
%mul157.3 = shl nsw i32 %add156.3, 1
%201 = sext i32 %mul157.3 to i64
%arrayidx158.3 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %201
%202 = load float, float addrspace(2)* %arrayidx158.3, align 4, !tbaa !39
%add162.3 = or i32 %mul157.3, 1
%203 = sext i32 %add162.3 to i64
%arrayidx163.3 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %203
%204 = load float, float addrspace(2)* %arrayidx163.3, align 4, !tbaa !39
%sub164.3 = fsub float 1.000000e+00, %cond.3
%205 = tail call float @llvm.fmuladd.f32(float %sub164.3, float 0x3D71979980000000, float %198)
%cmp.i.i.3 = fcmp olt float %205, 0.000000e+00
%call.i.i.3 = tail call float @llvm.sqrt.f32(float %205) #6
%call.i.i.op.3 = fdiv float 1.000000e+00, %call.i.i.3
%div167.3 = select i1 %cmp.i.i.3, float 0x7FF8000000000000, float %call.i.i.op.3
%mul168.3 = fmul float %div167.3, %div167.3
%mul169.3 = fmul float %mul168.3, %mul168.3
%mul170.3 = fmul float %mul168.3, %mul169.3
%mul171.3 = fmul float %cond.3, %mul170.3
%neg.3 = fsub float -0.000000e+00, %202
%206 = tail call float @llvm.fmuladd.f32(float %204, float %mul171.3, float %neg.3)
%mul173.3 = fmul float %mul171.3, %206
%mul174.3 = fmul float %mul168.3, %mul173.3
%cmp175.3 = fcmp olt float %205, %nbparam_params_rvdw_sq
%cond177.3 = select i1 %cmp175.3, float 1.000000e+00, float 0.000000e+00
%mul178.3 = fmul float %cond177.3, %mul174.3
%mul179.3 = fmul float %52, %199
%mul180.3 = fmul float %cond.3, %mul168.3
%mul182.3 = fmul float %mul, %205
%mul.i.3 = fmul float %mul182.3, %mul182.3
%207 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.3, float 0x3FBDA79640000000) #5
%208 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.3, float 0x3FE03C5780000000) #5
%209 = tail call float @llvm.fmuladd.f32(float %207, float %mul.i.3, float 1.000000e+00) #5
%210 = tail call float @llvm.fmuladd.f32(float %208, float %mul182.3, float %209) #5
%div.i.3 = fdiv float 1.000000e+00, %210, !fpmath !46
%211 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.3, float 0xBF0BFF7260000000) #5
%212 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.3, float 0x3F50794180000000) #5
%213 = tail call float @llvm.fmuladd.f32(float %211, float %mul.i.3, float 0xBF93BDB200000000) #5
%214 = tail call float @llvm.fmuladd.f32(float %212, float %mul.i.3, float 0x3FB1D5E760000000) #5
%215 = tail call float @llvm.fmuladd.f32(float %213, float %mul.i.3, float 0xBFE81272E0000000) #5
%216 = tail call float @llvm.fmuladd.f32(float %214, float %mul182.3, float %215) #5
%mul11.i.3 = fmul float %216, %div.i.3
%mul184.3 = fmul float %mul21, %mul11.i.3
%217 = tail call float @llvm.fmuladd.f32(float %mul180.3, float %div167.3, float %mul184.3)
%218 = tail call float @llvm.fmuladd.f32(float %mul179.3, float %217, float %mul178.3)
%splat.splatinsert.3 = insertelement <3 x float> undef, float %218, i32 0
%splat.splat.3 = shufflevector <3 x float> %splat.splatinsert.3, <3 x float> undef, <3 x i32> zeroinitializer
%mul189.3 = fmul <3 x float> %extractVec137.3, %splat.splat.3
%extractVec197.3 = shufflevector <4 x float> %fcj_buf.sroa.0.1.2, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub198.3 = fsub <3 x float> %extractVec197.3, %mul189.3
%extractVec199.3 = shufflevector <3 x float> %sub198.3, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec207.3 = shufflevector <4 x float> %loadVec4206.3, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add208.3 = fadd <3 x float> %extractVec207.3, %mul189.3
%extractVec209.3 = shufflevector <3 x float> %add208.3, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end212.3
if.end212.3: ; preds = %if.then153.3, %if.then119.3, %if.end212.2
%219 = phi <3 x float> [ %add208.3, %if.then153.3 ], [ %40, %if.then119.3 ], [ %40, %if.end212.2 ]
%loadVec4206.3722 = phi <4 x float> [ %extractVec209.3, %if.then153.3 ], [ %loadVec4206.3, %if.then119.3 ], [ %loadVec4206.3, %if.end212.2 ]
%fcj_buf.sroa.0.1.3 = phi <4 x float> [ %extractVec199.3, %if.then153.3 ], [ %fcj_buf.sroa.0.1.2, %if.then119.3 ], [ %fcj_buf.sroa.0.1.2, %if.end212.2 ]
%and117.4 = and i32 %45, 16
%tobool118.4 = icmp eq i32 %and117.4, 0
br i1 %tobool118.4, label %if.end212.4, label %if.then119.4
if.then119.4: ; preds = %if.end212.3
%220 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx126.4.3, align 16, !tbaa !36
%221 = fsub <4 x float> %220, %51
%222 = extractelement <4 x float> %221, i32 0
%223 = extractelement <4 x float> %221, i32 1
%mul3.i.i.4 = fmul float %223, %223
%224 = tail call float @llvm.fmuladd.f32(float %222, float %222, float %mul3.i.i.4) #5
%225 = extractelement <4 x float> %221, i32 2
%226 = tail call float @llvm.fmuladd.f32(float %225, float %225, float %224) #5
%and139.4 = and i32 %47, 16
%tobool140.4 = icmp ne i32 %and139.4, 0
%cond.4 = select i1 %tobool140.4, float 1.000000e+00, float 0.000000e+00
%notrhs.4 = icmp ne i32 %28, %49
%not.or.cond.4 = or i1 %notlhs, %notrhs.4
%cmp147..4 = or i1 %cmp147, %not.or.cond.4
%conv149.4 = uitofp i1 %cmp147..4 to float
%mul150.4 = fmul float %conv149.4, %nbparam_params_rcoulomb_sq
%cmp151.4 = fcmp olt float %226, %mul150.4
br i1 %cmp151.4, label %if.then153.4, label %if.end212.4
if.then153.4: ; preds = %if.then119.4
%extractVec137.4 = shufflevector <4 x float> %221, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%227 = extractelement <4 x float> %220, i32 3
%228 = load i32, i32 addrspace(1)* %arrayidx154.4.3, align 4, !tbaa !41
%mul155.4 = mul nsw i32 %228, %ntypes
%add156.4 = add nsw i32 %mul155.4, %53
%mul157.4 = shl nsw i32 %add156.4, 1
%229 = sext i32 %mul157.4 to i64
%arrayidx158.4 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %229
%230 = load float, float addrspace(2)* %arrayidx158.4, align 4, !tbaa !39
%add162.4 = or i32 %mul157.4, 1
%231 = sext i32 %add162.4 to i64
%arrayidx163.4 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %231
%232 = load float, float addrspace(2)* %arrayidx163.4, align 4, !tbaa !39
%sub164.4 = fsub float 1.000000e+00, %cond.4
%233 = tail call float @llvm.fmuladd.f32(float %sub164.4, float 0x3D71979980000000, float %226)
%cmp.i.i.4 = fcmp olt float %233, 0.000000e+00
%call.i.i.4 = tail call float @llvm.sqrt.f32(float %233) #6
%call.i.i.op.4 = fdiv float 1.000000e+00, %call.i.i.4
%div167.4 = select i1 %cmp.i.i.4, float 0x7FF8000000000000, float %call.i.i.op.4
%mul168.4 = fmul float %div167.4, %div167.4
%mul169.4 = fmul float %mul168.4, %mul168.4
%mul170.4 = fmul float %mul168.4, %mul169.4
%mul171.4 = fmul float %cond.4, %mul170.4
%neg.4 = fsub float -0.000000e+00, %230
%234 = tail call float @llvm.fmuladd.f32(float %232, float %mul171.4, float %neg.4)
%mul173.4 = fmul float %mul171.4, %234
%mul174.4 = fmul float %mul168.4, %mul173.4
%cmp175.4 = fcmp olt float %233, %nbparam_params_rvdw_sq
%cond177.4 = select i1 %cmp175.4, float 1.000000e+00, float 0.000000e+00
%mul178.4 = fmul float %cond177.4, %mul174.4
%mul179.4 = fmul float %52, %227
%mul180.4 = fmul float %cond.4, %mul168.4
%mul182.4 = fmul float %mul, %233
%mul.i.4 = fmul float %mul182.4, %mul182.4
%235 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.4, float 0x3FBDA79640000000) #5
%236 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.4, float 0x3FE03C5780000000) #5
%237 = tail call float @llvm.fmuladd.f32(float %235, float %mul.i.4, float 1.000000e+00) #5
%238 = tail call float @llvm.fmuladd.f32(float %236, float %mul182.4, float %237) #5
%div.i.4 = fdiv float 1.000000e+00, %238, !fpmath !46
%239 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.4, float 0xBF0BFF7260000000) #5
%240 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.4, float 0x3F50794180000000) #5
%241 = tail call float @llvm.fmuladd.f32(float %239, float %mul.i.4, float 0xBF93BDB200000000) #5
%242 = tail call float @llvm.fmuladd.f32(float %240, float %mul.i.4, float 0x3FB1D5E760000000) #5
%243 = tail call float @llvm.fmuladd.f32(float %241, float %mul.i.4, float 0xBFE81272E0000000) #5
%244 = tail call float @llvm.fmuladd.f32(float %242, float %mul182.4, float %243) #5
%mul11.i.4 = fmul float %244, %div.i.4
%mul184.4 = fmul float %mul21, %mul11.i.4
%245 = tail call float @llvm.fmuladd.f32(float %mul180.4, float %div167.4, float %mul184.4)
%246 = tail call float @llvm.fmuladd.f32(float %mul179.4, float %245, float %mul178.4)
%splat.splatinsert.4 = insertelement <3 x float> undef, float %246, i32 0
%splat.splat.4 = shufflevector <3 x float> %splat.splatinsert.4, <3 x float> undef, <3 x i32> zeroinitializer
%mul189.4 = fmul <3 x float> %extractVec137.4, %splat.splat.4
%extractVec197.4 = shufflevector <4 x float> %fcj_buf.sroa.0.1.3, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub198.4 = fsub <3 x float> %extractVec197.4, %mul189.4
%extractVec199.4 = shufflevector <3 x float> %sub198.4, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec207.4 = shufflevector <4 x float> %loadVec4206.4, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add208.4 = fadd <3 x float> %extractVec207.4, %mul189.4
%extractVec209.4 = shufflevector <3 x float> %add208.4, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end212.4
if.end212.4: ; preds = %if.then153.4, %if.then119.4, %if.end212.3
%247 = phi <3 x float> [ %add208.4, %if.then153.4 ], [ %39, %if.then119.4 ], [ %39, %if.end212.3 ]
%loadVec4206.4732 = phi <4 x float> [ %extractVec209.4, %if.then153.4 ], [ %loadVec4206.4, %if.then119.4 ], [ %loadVec4206.4, %if.end212.3 ]
%fcj_buf.sroa.0.1.4 = phi <4 x float> [ %extractVec199.4, %if.then153.4 ], [ %fcj_buf.sroa.0.1.3, %if.then119.4 ], [ %fcj_buf.sroa.0.1.3, %if.end212.3 ]
%and117.5 = and i32 %45, 32
%tobool118.5 = icmp eq i32 %and117.5, 0
br i1 %tobool118.5, label %if.end212.5, label %if.then119.5
if.then119.5: ; preds = %if.end212.4
%248 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx126.5.3, align 16, !tbaa !36
%249 = fsub <4 x float> %248, %51
%250 = extractelement <4 x float> %249, i32 0
%251 = extractelement <4 x float> %249, i32 1
%mul3.i.i.5 = fmul float %251, %251
%252 = tail call float @llvm.fmuladd.f32(float %250, float %250, float %mul3.i.i.5) #5
%253 = extractelement <4 x float> %249, i32 2
%254 = tail call float @llvm.fmuladd.f32(float %253, float %253, float %252) #5
%and139.5 = and i32 %47, 32
%tobool140.5 = icmp ne i32 %and139.5, 0
%cond.5 = select i1 %tobool140.5, float 1.000000e+00, float 0.000000e+00
%notrhs.5 = icmp ne i32 %26, %49
%not.or.cond.5 = or i1 %notlhs, %notrhs.5
%cmp147..5 = or i1 %cmp147, %not.or.cond.5
%conv149.5 = uitofp i1 %cmp147..5 to float
%mul150.5 = fmul float %conv149.5, %nbparam_params_rcoulomb_sq
%cmp151.5 = fcmp olt float %254, %mul150.5
br i1 %cmp151.5, label %if.then153.5, label %if.end212.5
if.then153.5: ; preds = %if.then119.5
%extractVec137.5 = shufflevector <4 x float> %249, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%255 = extractelement <4 x float> %248, i32 3
%256 = load i32, i32 addrspace(1)* %arrayidx154.5.3, align 4, !tbaa !41
%mul155.5 = mul nsw i32 %256, %ntypes
%add156.5 = add nsw i32 %mul155.5, %53
%mul157.5 = shl nsw i32 %add156.5, 1
%257 = sext i32 %mul157.5 to i64
%arrayidx158.5 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %257
%258 = load float, float addrspace(2)* %arrayidx158.5, align 4, !tbaa !39
%add162.5 = or i32 %mul157.5, 1
%259 = sext i32 %add162.5 to i64
%arrayidx163.5 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %259
%260 = load float, float addrspace(2)* %arrayidx163.5, align 4, !tbaa !39
%sub164.5 = fsub float 1.000000e+00, %cond.5
%261 = tail call float @llvm.fmuladd.f32(float %sub164.5, float 0x3D71979980000000, float %254)
%cmp.i.i.5 = fcmp olt float %261, 0.000000e+00
%call.i.i.5 = tail call float @llvm.sqrt.f32(float %261) #6
%call.i.i.op.5 = fdiv float 1.000000e+00, %call.i.i.5
%div167.5 = select i1 %cmp.i.i.5, float 0x7FF8000000000000, float %call.i.i.op.5
%mul168.5 = fmul float %div167.5, %div167.5
%mul169.5 = fmul float %mul168.5, %mul168.5
%mul170.5 = fmul float %mul168.5, %mul169.5
%mul171.5 = fmul float %cond.5, %mul170.5
%neg.5 = fsub float -0.000000e+00, %258
%262 = tail call float @llvm.fmuladd.f32(float %260, float %mul171.5, float %neg.5)
%mul173.5 = fmul float %mul171.5, %262
%mul174.5 = fmul float %mul168.5, %mul173.5
%cmp175.5 = fcmp olt float %261, %nbparam_params_rvdw_sq
%cond177.5 = select i1 %cmp175.5, float 1.000000e+00, float 0.000000e+00
%mul178.5 = fmul float %cond177.5, %mul174.5
%mul179.5 = fmul float %52, %255
%mul180.5 = fmul float %cond.5, %mul168.5
%mul182.5 = fmul float %mul, %261
%mul.i.5 = fmul float %mul182.5, %mul182.5
%263 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.5, float 0x3FBDA79640000000) #5
%264 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.5, float 0x3FE03C5780000000) #5
%265 = tail call float @llvm.fmuladd.f32(float %263, float %mul.i.5, float 1.000000e+00) #5
%266 = tail call float @llvm.fmuladd.f32(float %264, float %mul182.5, float %265) #5
%div.i.5 = fdiv float 1.000000e+00, %266, !fpmath !46
%267 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.5, float 0xBF0BFF7260000000) #5
%268 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.5, float 0x3F50794180000000) #5
%269 = tail call float @llvm.fmuladd.f32(float %267, float %mul.i.5, float 0xBF93BDB200000000) #5
%270 = tail call float @llvm.fmuladd.f32(float %268, float %mul.i.5, float 0x3FB1D5E760000000) #5
%271 = tail call float @llvm.fmuladd.f32(float %269, float %mul.i.5, float 0xBFE81272E0000000) #5
%272 = tail call float @llvm.fmuladd.f32(float %270, float %mul182.5, float %271) #5
%mul11.i.5 = fmul float %272, %div.i.5
%mul184.5 = fmul float %mul21, %mul11.i.5
%273 = tail call float @llvm.fmuladd.f32(float %mul180.5, float %div167.5, float %mul184.5)
%274 = tail call float @llvm.fmuladd.f32(float %mul179.5, float %273, float %mul178.5)
%splat.splatinsert.5 = insertelement <3 x float> undef, float %274, i32 0
%splat.splat.5 = shufflevector <3 x float> %splat.splatinsert.5, <3 x float> undef, <3 x i32> zeroinitializer
%mul189.5 = fmul <3 x float> %extractVec137.5, %splat.splat.5
%extractVec197.5 = shufflevector <4 x float> %fcj_buf.sroa.0.1.4, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub198.5 = fsub <3 x float> %extractVec197.5, %mul189.5
%extractVec199.5 = shufflevector <3 x float> %sub198.5, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec207.5 = shufflevector <4 x float> %loadVec4206.5, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add208.5 = fadd <3 x float> %extractVec207.5, %mul189.5
%extractVec209.5 = shufflevector <3 x float> %add208.5, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end212.5
if.end212.5: ; preds = %if.then153.5, %if.then119.5, %if.end212.4
%275 = phi <3 x float> [ %add208.5, %if.then153.5 ], [ %38, %if.then119.5 ], [ %38, %if.end212.4 ]
%loadVec4206.5742 = phi <4 x float> [ %extractVec209.5, %if.then153.5 ], [ %loadVec4206.5, %if.then119.5 ], [ %loadVec4206.5, %if.end212.4 ]
%fcj_buf.sroa.0.1.5 = phi <4 x float> [ %extractVec199.5, %if.then153.5 ], [ %fcj_buf.sroa.0.1.4, %if.then119.5 ], [ %fcj_buf.sroa.0.1.4, %if.end212.4 ]
%and117.6 = and i32 %45, 64
%tobool118.6 = icmp eq i32 %and117.6, 0
br i1 %tobool118.6, label %if.end212.6, label %if.then119.6
if.then119.6: ; preds = %if.end212.5
%276 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx126.6.3, align 16, !tbaa !36
%277 = fsub <4 x float> %276, %51
%278 = extractelement <4 x float> %277, i32 0
%279 = extractelement <4 x float> %277, i32 1
%mul3.i.i.6 = fmul float %279, %279
%280 = tail call float @llvm.fmuladd.f32(float %278, float %278, float %mul3.i.i.6) #5
%281 = extractelement <4 x float> %277, i32 2
%282 = tail call float @llvm.fmuladd.f32(float %281, float %281, float %280) #5
%and139.6 = and i32 %47, 64
%tobool140.6 = icmp ne i32 %and139.6, 0
%cond.6 = select i1 %tobool140.6, float 1.000000e+00, float 0.000000e+00
%notrhs.6 = icmp ne i32 %24, %49
%not.or.cond.6 = or i1 %notlhs, %notrhs.6
%cmp147..6 = or i1 %cmp147, %not.or.cond.6
%conv149.6 = uitofp i1 %cmp147..6 to float
%mul150.6 = fmul float %conv149.6, %nbparam_params_rcoulomb_sq
%cmp151.6 = fcmp olt float %282, %mul150.6
br i1 %cmp151.6, label %if.then153.6, label %if.end212.6
if.then153.6: ; preds = %if.then119.6
%extractVec137.6 = shufflevector <4 x float> %277, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%283 = extractelement <4 x float> %276, i32 3
%284 = load i32, i32 addrspace(1)* %arrayidx154.6.3, align 4, !tbaa !41
%mul155.6 = mul nsw i32 %284, %ntypes
%add156.6 = add nsw i32 %mul155.6, %53
%mul157.6 = shl nsw i32 %add156.6, 1
%285 = sext i32 %mul157.6 to i64
%arrayidx158.6 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %285
%286 = load float, float addrspace(2)* %arrayidx158.6, align 4, !tbaa !39
%add162.6 = or i32 %mul157.6, 1
%287 = sext i32 %add162.6 to i64
%arrayidx163.6 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %287
%288 = load float, float addrspace(2)* %arrayidx163.6, align 4, !tbaa !39
%sub164.6 = fsub float 1.000000e+00, %cond.6
%289 = tail call float @llvm.fmuladd.f32(float %sub164.6, float 0x3D71979980000000, float %282)
%cmp.i.i.6 = fcmp olt float %289, 0.000000e+00
%call.i.i.6 = tail call float @llvm.sqrt.f32(float %289) #6
%call.i.i.op.6 = fdiv float 1.000000e+00, %call.i.i.6
%div167.6 = select i1 %cmp.i.i.6, float 0x7FF8000000000000, float %call.i.i.op.6
%mul168.6 = fmul float %div167.6, %div167.6
%mul169.6 = fmul float %mul168.6, %mul168.6
%mul170.6 = fmul float %mul168.6, %mul169.6
%mul171.6 = fmul float %cond.6, %mul170.6
%neg.6 = fsub float -0.000000e+00, %286
%290 = tail call float @llvm.fmuladd.f32(float %288, float %mul171.6, float %neg.6)
%mul173.6 = fmul float %mul171.6, %290
%mul174.6 = fmul float %mul168.6, %mul173.6
%cmp175.6 = fcmp olt float %289, %nbparam_params_rvdw_sq
%cond177.6 = select i1 %cmp175.6, float 1.000000e+00, float 0.000000e+00
%mul178.6 = fmul float %cond177.6, %mul174.6
%mul179.6 = fmul float %52, %283
%mul180.6 = fmul float %cond.6, %mul168.6
%mul182.6 = fmul float %mul, %289
%mul.i.6 = fmul float %mul182.6, %mul182.6
%291 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.6, float 0x3FBDA79640000000) #5
%292 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.6, float 0x3FE03C5780000000) #5
%293 = tail call float @llvm.fmuladd.f32(float %291, float %mul.i.6, float 1.000000e+00) #5
%294 = tail call float @llvm.fmuladd.f32(float %292, float %mul182.6, float %293) #5
%div.i.6 = fdiv float 1.000000e+00, %294, !fpmath !46
%295 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.6, float 0xBF0BFF7260000000) #5
%296 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.6, float 0x3F50794180000000) #5
%297 = tail call float @llvm.fmuladd.f32(float %295, float %mul.i.6, float 0xBF93BDB200000000) #5
%298 = tail call float @llvm.fmuladd.f32(float %296, float %mul.i.6, float 0x3FB1D5E760000000) #5
%299 = tail call float @llvm.fmuladd.f32(float %297, float %mul.i.6, float 0xBFE81272E0000000) #5
%300 = tail call float @llvm.fmuladd.f32(float %298, float %mul182.6, float %299) #5
%mul11.i.6 = fmul float %300, %div.i.6
%mul184.6 = fmul float %mul21, %mul11.i.6
%301 = tail call float @llvm.fmuladd.f32(float %mul180.6, float %div167.6, float %mul184.6)
%302 = tail call float @llvm.fmuladd.f32(float %mul179.6, float %301, float %mul178.6)
%splat.splatinsert.6 = insertelement <3 x float> undef, float %302, i32 0
%splat.splat.6 = shufflevector <3 x float> %splat.splatinsert.6, <3 x float> undef, <3 x i32> zeroinitializer
%mul189.6 = fmul <3 x float> %extractVec137.6, %splat.splat.6
%extractVec197.6 = shufflevector <4 x float> %fcj_buf.sroa.0.1.5, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub198.6 = fsub <3 x float> %extractVec197.6, %mul189.6
%extractVec199.6 = shufflevector <3 x float> %sub198.6, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec207.6 = shufflevector <4 x float> %loadVec4206.6, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add208.6 = fadd <3 x float> %extractVec207.6, %mul189.6
%extractVec209.6 = shufflevector <3 x float> %add208.6, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end212.6
if.end212.6: ; preds = %if.then153.6, %if.then119.6, %if.end212.5
%303 = phi <3 x float> [ %add208.6, %if.then153.6 ], [ %37, %if.then119.6 ], [ %37, %if.end212.5 ]
%loadVec4206.6752 = phi <4 x float> [ %extractVec209.6, %if.then153.6 ], [ %loadVec4206.6, %if.then119.6 ], [ %loadVec4206.6, %if.end212.5 ]
%fcj_buf.sroa.0.1.6 = phi <4 x float> [ %extractVec199.6, %if.then153.6 ], [ %fcj_buf.sroa.0.1.5, %if.then119.6 ], [ %fcj_buf.sroa.0.1.5, %if.end212.5 ]
%and117.7 = and i32 %45, 128
%tobool118.7 = icmp eq i32 %and117.7, 0
br i1 %tobool118.7, label %if.end212.7, label %if.then119.7
if.then119.7: ; preds = %if.end212.6
%304 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx126.7.3, align 16, !tbaa !36
%305 = fsub <4 x float> %304, %51
%306 = extractelement <4 x float> %305, i32 0
%307 = extractelement <4 x float> %305, i32 1
%mul3.i.i.7 = fmul float %307, %307
%308 = tail call float @llvm.fmuladd.f32(float %306, float %306, float %mul3.i.i.7) #5
%309 = extractelement <4 x float> %305, i32 2
%310 = tail call float @llvm.fmuladd.f32(float %309, float %309, float %308) #5
%and139.7 = and i32 %47, 128
%tobool140.7 = icmp ne i32 %and139.7, 0
%cond.7 = select i1 %tobool140.7, float 1.000000e+00, float 0.000000e+00
%notrhs.7 = icmp ne i32 %22, %49
%not.or.cond.7 = or i1 %notlhs, %notrhs.7
%cmp147..7 = or i1 %cmp147, %not.or.cond.7
%conv149.7 = uitofp i1 %cmp147..7 to float
%mul150.7 = fmul float %conv149.7, %nbparam_params_rcoulomb_sq
%cmp151.7 = fcmp olt float %310, %mul150.7
br i1 %cmp151.7, label %if.then153.7, label %if.end212.7
if.then153.7: ; preds = %if.then119.7
%extractVec137.7 = shufflevector <4 x float> %305, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%311 = extractelement <4 x float> %304, i32 3
%312 = load i32, i32 addrspace(1)* %arrayidx154.7.3, align 4, !tbaa !41
%mul155.7 = mul nsw i32 %312, %ntypes
%add156.7 = add nsw i32 %mul155.7, %53
%mul157.7 = shl nsw i32 %add156.7, 1
%313 = sext i32 %mul157.7 to i64
%arrayidx158.7 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %313
%314 = load float, float addrspace(2)* %arrayidx158.7, align 4, !tbaa !39
%add162.7 = or i32 %mul157.7, 1
%315 = sext i32 %add162.7 to i64
%arrayidx163.7 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %315
%316 = load float, float addrspace(2)* %arrayidx163.7, align 4, !tbaa !39
%sub164.7 = fsub float 1.000000e+00, %cond.7
%317 = tail call float @llvm.fmuladd.f32(float %sub164.7, float 0x3D71979980000000, float %310)
%cmp.i.i.7 = fcmp olt float %317, 0.000000e+00
%call.i.i.7 = tail call float @llvm.sqrt.f32(float %317) #6
%call.i.i.op.7 = fdiv float 1.000000e+00, %call.i.i.7
%div167.7 = select i1 %cmp.i.i.7, float 0x7FF8000000000000, float %call.i.i.op.7
%mul168.7 = fmul float %div167.7, %div167.7
%mul169.7 = fmul float %mul168.7, %mul168.7
%mul170.7 = fmul float %mul168.7, %mul169.7
%mul171.7 = fmul float %cond.7, %mul170.7
%neg.7 = fsub float -0.000000e+00, %314
%318 = tail call float @llvm.fmuladd.f32(float %316, float %mul171.7, float %neg.7)
%mul173.7 = fmul float %mul171.7, %318
%mul174.7 = fmul float %mul168.7, %mul173.7
%cmp175.7 = fcmp olt float %317, %nbparam_params_rvdw_sq
%cond177.7 = select i1 %cmp175.7, float 1.000000e+00, float 0.000000e+00
%mul178.7 = fmul float %cond177.7, %mul174.7
%mul179.7 = fmul float %52, %311
%mul180.7 = fmul float %cond.7, %mul168.7
%mul182.7 = fmul float %mul, %317
%mul.i.7 = fmul float %mul182.7, %mul182.7
%319 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.7, float 0x3FBDA79640000000) #5
%320 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.7, float 0x3FE03C5780000000) #5
%321 = tail call float @llvm.fmuladd.f32(float %319, float %mul.i.7, float 1.000000e+00) #5
%322 = tail call float @llvm.fmuladd.f32(float %320, float %mul182.7, float %321) #5
%div.i.7 = fdiv float 1.000000e+00, %322, !fpmath !46
%323 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.7, float 0xBF0BFF7260000000) #5
%324 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.7, float 0x3F50794180000000) #5
%325 = tail call float @llvm.fmuladd.f32(float %323, float %mul.i.7, float 0xBF93BDB200000000) #5
%326 = tail call float @llvm.fmuladd.f32(float %324, float %mul.i.7, float 0x3FB1D5E760000000) #5
%327 = tail call float @llvm.fmuladd.f32(float %325, float %mul.i.7, float 0xBFE81272E0000000) #5
%328 = tail call float @llvm.fmuladd.f32(float %326, float %mul182.7, float %327) #5
%mul11.i.7 = fmul float %328, %div.i.7
%mul184.7 = fmul float %mul21, %mul11.i.7
%329 = tail call float @llvm.fmuladd.f32(float %mul180.7, float %div167.7, float %mul184.7)
%330 = tail call float @llvm.fmuladd.f32(float %mul179.7, float %329, float %mul178.7)
%splat.splatinsert.7 = insertelement <3 x float> undef, float %330, i32 0
%splat.splat.7 = shufflevector <3 x float> %splat.splatinsert.7, <3 x float> undef, <3 x i32> zeroinitializer
%mul189.7 = fmul <3 x float> %extractVec137.7, %splat.splat.7
%extractVec197.7 = shufflevector <4 x float> %fcj_buf.sroa.0.1.6, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub198.7 = fsub <3 x float> %extractVec197.7, %mul189.7
%extractVec199.7 = shufflevector <3 x float> %sub198.7, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec207.7 = shufflevector <4 x float> %loadVec4206.7, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add208.7 = fadd <3 x float> %extractVec207.7, %mul189.7
%extractVec209.7 = shufflevector <3 x float> %add208.7, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end212.7
if.end212.7: ; preds = %if.then153.7, %if.then119.7, %if.end212.6
%fci_buf.sroa.37.4 = phi <4 x float> [ %fci_buf.sroa.37.0, %if.end212.6 ], [ %extractVec209.7, %if.then153.7 ], [ %fci_buf.sroa.37.0, %if.then119.7 ]
%loadVec4206.7762 = phi <4 x float> [ %loadVec4206.7, %if.end212.6 ], [ %extractVec209.7, %if.then153.7 ], [ %loadVec4206.7, %if.then119.7 ]
%fcj_buf.sroa.0.1.7 = phi <4 x float> [ %fcj_buf.sroa.0.1.6, %if.end212.6 ], [ %extractVec199.7, %if.then153.7 ], [ %fcj_buf.sroa.0.1.6, %if.then119.7 ]
%331 = extractelement <4 x float> %fcj_buf.sroa.0.1.7, i32 0
store float %331, float addrspace(3)* %arrayidx217, align 4, !tbaa !39
%332 = extractelement <4 x float> %fcj_buf.sroa.0.1.7, i32 1
store float %332, float addrspace(3)* %arrayidx219, align 4, !tbaa !39
%333 = extractelement <4 x float> %fcj_buf.sroa.0.1.7, i32 2
store float %333, float addrspace(3)* %arrayidx221, align 4, !tbaa !39
tail call fastcc void @reduce_force_j_generic(float addrspace(3)* %2, float addrspace(1)* %f, i32 %x.i, i32 %y.i, i32 %add108)
br label %for.inc223
if.then98.1: ; preds = %for.inc223
%334 = load i32, i32 addrspace(3)* %arrayidx106.1, align 4, !tbaa !41
%mul107.1 = shl nsw i32 %334, 3
%add108.1 = add i32 %mul107.1, %y.i
%335 = sext i32 %add108.1 to i64
%arrayidx109.1 = getelementptr inbounds <4 x float>, <4 x float> addrspace(1)* %xq, i64 %335
%336 = load <4 x float>, <4 x float> addrspace(1)* %arrayidx109.1, align 16, !tbaa !36
%337 = extractelement <4 x float> %336, i32 3
%arrayidx111.1 = getelementptr inbounds i32, i32 addrspace(1)* %atom_types, i64 %335
%338 = load i32, i32 addrspace(1)* %arrayidx111.1, align 4, !tbaa !41
%and117.1499 = and i32 %45, 256
%tobool118.1500 = icmp eq i32 %and117.1499, 0
br i1 %tobool118.1500, label %if.end212.1559, label %if.then119.1512
if.then119.1512: ; preds = %if.then98.1
%339 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx126.3623, align 16, !tbaa !36
%340 = fsub <4 x float> %339, %336
%341 = extractelement <4 x float> %340, i32 0
%342 = extractelement <4 x float> %340, i32 1
%mul3.i.i.1502 = fmul float %342, %342
%343 = tail call float @llvm.fmuladd.f32(float %341, float %341, float %mul3.i.i.1502) #5
%344 = extractelement <4 x float> %340, i32 2
%345 = tail call float @llvm.fmuladd.f32(float %344, float %344, float %343) #5
%and139.1503 = and i32 %47, 256
%tobool140.1504 = icmp ne i32 %and139.1503, 0
%cond.1505 = select i1 %tobool140.1504, float 1.000000e+00, float 0.000000e+00
%notrhs.1506 = icmp ne i32 %mul31, %334
%not.or.cond.1507 = or i1 %notlhs, %notrhs.1506
%cmp147..1508 = or i1 %cmp147, %not.or.cond.1507
%conv149.1509 = uitofp i1 %cmp147..1508 to float
%mul150.1510 = fmul float %conv149.1509, %nbparam_params_rcoulomb_sq
%cmp151.1511 = fcmp olt float %345, %mul150.1510
br i1 %cmp151.1511, label %if.then153.1556, label %if.end212.1559
if.then153.1556: ; preds = %if.then119.1512
%extractVec137.1513 = shufflevector <4 x float> %340, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%346 = extractelement <4 x float> %339, i32 3
%347 = load i32, i32 addrspace(1)* %arrayidx154.3638, align 4, !tbaa !41
%mul155.1517 = mul nsw i32 %347, %ntypes
%add156.1518 = add nsw i32 %mul155.1517, %338
%mul157.1519 = shl nsw i32 %add156.1518, 1
%348 = sext i32 %mul157.1519 to i64
%arrayidx158.1520 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %348
%349 = load float, float addrspace(2)* %arrayidx158.1520, align 4, !tbaa !39
%add162.1521 = or i32 %mul157.1519, 1
%350 = sext i32 %add162.1521 to i64
%arrayidx163.1522 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %350
%351 = load float, float addrspace(2)* %arrayidx163.1522, align 4, !tbaa !39
%sub164.1523 = fsub float 1.000000e+00, %cond.1505
%352 = tail call float @llvm.fmuladd.f32(float %sub164.1523, float 0x3D71979980000000, float %345)
%cmp.i.i.1524 = fcmp olt float %352, 0.000000e+00
%call.i.i.1525 = tail call float @llvm.sqrt.f32(float %352) #6
%call.i.i.op.1526 = fdiv float 1.000000e+00, %call.i.i.1525
%div167.1527 = select i1 %cmp.i.i.1524, float 0x7FF8000000000000, float %call.i.i.op.1526
%mul168.1528 = fmul float %div167.1527, %div167.1527
%mul169.1529 = fmul float %mul168.1528, %mul168.1528
%mul170.1530 = fmul float %mul168.1528, %mul169.1529
%mul171.1531 = fmul float %cond.1505, %mul170.1530
%neg.1532 = fsub float -0.000000e+00, %349
%353 = tail call float @llvm.fmuladd.f32(float %351, float %mul171.1531, float %neg.1532)
%mul173.1533 = fmul float %mul171.1531, %353
%mul174.1534 = fmul float %mul168.1528, %mul173.1533
%cmp175.1535 = fcmp olt float %352, %nbparam_params_rvdw_sq
%cond177.1536 = select i1 %cmp175.1535, float 1.000000e+00, float 0.000000e+00
%mul178.1537 = fmul float %cond177.1536, %mul174.1534
%mul179.1538 = fmul float %337, %346
%mul180.1539 = fmul float %cond.1505, %mul168.1528
%mul182.1540 = fmul float %mul, %352
%mul.i.1541 = fmul float %mul182.1540, %mul182.1540
%354 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.1541, float 0x3FBDA79640000000) #5
%355 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.1541, float 0x3FE03C5780000000) #5
%356 = tail call float @llvm.fmuladd.f32(float %354, float %mul.i.1541, float 1.000000e+00) #5
%357 = tail call float @llvm.fmuladd.f32(float %355, float %mul182.1540, float %356) #5
%div.i.1542 = fdiv float 1.000000e+00, %357, !fpmath !46
%358 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.1541, float 0xBF0BFF7260000000) #5
%359 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.1541, float 0x3F50794180000000) #5
%360 = tail call float @llvm.fmuladd.f32(float %358, float %mul.i.1541, float 0xBF93BDB200000000) #5
%361 = tail call float @llvm.fmuladd.f32(float %359, float %mul.i.1541, float 0x3FB1D5E760000000) #5
%362 = tail call float @llvm.fmuladd.f32(float %360, float %mul.i.1541, float 0xBFE81272E0000000) #5
%363 = tail call float @llvm.fmuladd.f32(float %361, float %mul182.1540, float %362) #5
%mul11.i.1543 = fmul float %363, %div.i.1542
%mul184.1544 = fmul float %mul21, %mul11.i.1543
%364 = tail call float @llvm.fmuladd.f32(float %mul180.1539, float %div167.1527, float %mul184.1544)
%365 = tail call float @llvm.fmuladd.f32(float %mul179.1538, float %364, float %mul178.1537)
%splat.splatinsert.1545 = insertelement <3 x float> undef, float %365, i32 0
%splat.splat.1546 = shufflevector <3 x float> %splat.splatinsert.1545, <3 x float> undef, <3 x i32> zeroinitializer
%mul189.1547 = fmul <3 x float> %extractVec137.1513, %splat.splat.1546
%sub198.1548 = fsub <3 x float> zeroinitializer, %mul189.1547
%extractVec199.1549 = shufflevector <3 x float> %sub198.1548, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec207.1553 = shufflevector <4 x float> %loadVec4206.1552, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add208.1554 = fadd <3 x float> %extractVec207.1553, %mul189.1547
%extractVec209.1555 = shufflevector <3 x float> %add208.1554, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end212.1559
if.end212.1559: ; preds = %if.then153.1556, %if.then119.1512, %if.then98.1
%366 = phi <3 x float> [ %add208.1554, %if.then153.1556 ], [ %88, %if.then119.1512 ], [ %88, %if.then98.1 ]
%loadVec4206683 = phi <4 x float> [ %extractVec209.1555, %if.then153.1556 ], [ %loadVec4206.1552, %if.then119.1512 ], [ %loadVec4206.1552, %if.then98.1 ]
%fcj_buf.sroa.0.1.1557 = phi <4 x float> [ %extractVec199.1549, %if.then153.1556 ], [ <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float undef>, %if.then119.1512 ], [ <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float undef>, %if.then98.1 ]
%and117.1.1 = and i32 %45, 512
%tobool118.1.1 = icmp eq i32 %and117.1.1, 0
br i1 %tobool118.1.1, label %if.end212.1.1, label %if.then119.1.1
if.then119.1.1: ; preds = %if.end212.1559
%367 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx126.1.3, align 16, !tbaa !36
%368 = fsub <4 x float> %367, %336
%369 = extractelement <4 x float> %368, i32 0
%370 = extractelement <4 x float> %368, i32 1
%mul3.i.i.1.1 = fmul float %370, %370
%371 = tail call float @llvm.fmuladd.f32(float %369, float %369, float %mul3.i.i.1.1) #5
%372 = extractelement <4 x float> %368, i32 2
%373 = tail call float @llvm.fmuladd.f32(float %372, float %372, float %371) #5
%and139.1.1 = and i32 %47, 512
%tobool140.1.1 = icmp ne i32 %and139.1.1, 0
%cond.1.1 = select i1 %tobool140.1.1, float 1.000000e+00, float 0.000000e+00
%notrhs.1.1 = icmp ne i32 %34, %334
%not.or.cond.1.1 = or i1 %notlhs, %notrhs.1.1
%cmp147..1.1 = or i1 %cmp147, %not.or.cond.1.1
%conv149.1.1 = uitofp i1 %cmp147..1.1 to float
%mul150.1.1 = fmul float %conv149.1.1, %nbparam_params_rcoulomb_sq
%cmp151.1.1 = fcmp olt float %373, %mul150.1.1
br i1 %cmp151.1.1, label %if.then153.1.1, label %if.end212.1.1
if.then153.1.1: ; preds = %if.then119.1.1
%extractVec137.1.1 = shufflevector <4 x float> %368, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%374 = extractelement <4 x float> %367, i32 3
%375 = load i32, i32 addrspace(1)* %arrayidx154.1.3, align 4, !tbaa !41
%mul155.1.1 = mul nsw i32 %375, %ntypes
%add156.1.1 = add nsw i32 %mul155.1.1, %338
%mul157.1.1 = shl nsw i32 %add156.1.1, 1
%376 = sext i32 %mul157.1.1 to i64
%arrayidx158.1.1 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %376
%377 = load float, float addrspace(2)* %arrayidx158.1.1, align 4, !tbaa !39
%add162.1.1 = or i32 %mul157.1.1, 1
%378 = sext i32 %add162.1.1 to i64
%arrayidx163.1.1 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %378
%379 = load float, float addrspace(2)* %arrayidx163.1.1, align 4, !tbaa !39
%sub164.1.1 = fsub float 1.000000e+00, %cond.1.1
%380 = tail call float @llvm.fmuladd.f32(float %sub164.1.1, float 0x3D71979980000000, float %373)
%cmp.i.i.1.1 = fcmp olt float %380, 0.000000e+00
%call.i.i.1.1 = tail call float @llvm.sqrt.f32(float %380) #6
%call.i.i.op.1.1 = fdiv float 1.000000e+00, %call.i.i.1.1
%div167.1.1 = select i1 %cmp.i.i.1.1, float 0x7FF8000000000000, float %call.i.i.op.1.1
%mul168.1.1 = fmul float %div167.1.1, %div167.1.1
%mul169.1.1 = fmul float %mul168.1.1, %mul168.1.1
%mul170.1.1 = fmul float %mul168.1.1, %mul169.1.1
%mul171.1.1 = fmul float %cond.1.1, %mul170.1.1
%neg.1.1 = fsub float -0.000000e+00, %377
%381 = tail call float @llvm.fmuladd.f32(float %379, float %mul171.1.1, float %neg.1.1)
%mul173.1.1 = fmul float %mul171.1.1, %381
%mul174.1.1 = fmul float %mul168.1.1, %mul173.1.1
%cmp175.1.1 = fcmp olt float %380, %nbparam_params_rvdw_sq
%cond177.1.1 = select i1 %cmp175.1.1, float 1.000000e+00, float 0.000000e+00
%mul178.1.1 = fmul float %cond177.1.1, %mul174.1.1
%mul179.1.1 = fmul float %337, %374
%mul180.1.1 = fmul float %cond.1.1, %mul168.1.1
%mul182.1.1 = fmul float %mul, %380
%mul.i.1.1 = fmul float %mul182.1.1, %mul182.1.1
%382 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.1.1, float 0x3FBDA79640000000) #5
%383 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.1.1, float 0x3FE03C5780000000) #5
%384 = tail call float @llvm.fmuladd.f32(float %382, float %mul.i.1.1, float 1.000000e+00) #5
%385 = tail call float @llvm.fmuladd.f32(float %383, float %mul182.1.1, float %384) #5
%div.i.1.1 = fdiv float 1.000000e+00, %385, !fpmath !46
%386 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.1.1, float 0xBF0BFF7260000000) #5
%387 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.1.1, float 0x3F50794180000000) #5
%388 = tail call float @llvm.fmuladd.f32(float %386, float %mul.i.1.1, float 0xBF93BDB200000000) #5
%389 = tail call float @llvm.fmuladd.f32(float %387, float %mul.i.1.1, float 0x3FB1D5E760000000) #5
%390 = tail call float @llvm.fmuladd.f32(float %388, float %mul.i.1.1, float 0xBFE81272E0000000) #5
%391 = tail call float @llvm.fmuladd.f32(float %389, float %mul182.1.1, float %390) #5
%mul11.i.1.1 = fmul float %391, %div.i.1.1
%mul184.1.1 = fmul float %mul21, %mul11.i.1.1
%392 = tail call float @llvm.fmuladd.f32(float %mul180.1.1, float %div167.1.1, float %mul184.1.1)
%393 = tail call float @llvm.fmuladd.f32(float %mul179.1.1, float %392, float %mul178.1.1)
%splat.splatinsert.1.1 = insertelement <3 x float> undef, float %393, i32 0
%splat.splat.1.1 = shufflevector <3 x float> %splat.splatinsert.1.1, <3 x float> undef, <3 x i32> zeroinitializer
%mul189.1.1 = fmul <3 x float> %extractVec137.1.1, %splat.splat.1.1
%extractVec197.1.1 = shufflevector <4 x float> %fcj_buf.sroa.0.1.1557, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub198.1.1 = fsub <3 x float> %extractVec197.1.1, %mul189.1.1
%extractVec199.1.1 = shufflevector <3 x float> %sub198.1.1, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec207.1.1 = shufflevector <4 x float> %loadVec4206.1.1, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add208.1.1 = fadd <3 x float> %extractVec207.1.1, %mul189.1.1
%extractVec209.1.1 = shufflevector <3 x float> %add208.1.1, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end212.1.1
if.end212.1.1: ; preds = %if.then153.1.1, %if.then119.1.1, %if.end212.1559
%394 = phi <3 x float> [ %add208.1.1, %if.then153.1.1 ], [ %87, %if.then119.1.1 ], [ %87, %if.end212.1559 ]
%loadVec4206.1693 = phi <4 x float> [ %extractVec209.1.1, %if.then153.1.1 ], [ %loadVec4206.1.1, %if.then119.1.1 ], [ %loadVec4206.1.1, %if.end212.1559 ]
%fcj_buf.sroa.0.1.1.1 = phi <4 x float> [ %extractVec199.1.1, %if.then153.1.1 ], [ %fcj_buf.sroa.0.1.1557, %if.then119.1.1 ], [ %fcj_buf.sroa.0.1.1557, %if.end212.1559 ]
%and117.2.1 = and i32 %45, 1024
%tobool118.2.1 = icmp eq i32 %and117.2.1, 0
br i1 %tobool118.2.1, label %if.end212.2.1, label %if.then119.2.1
if.then119.2.1: ; preds = %if.end212.1.1
%395 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx126.2.3, align 16, !tbaa !36
%396 = fsub <4 x float> %395, %336
%397 = extractelement <4 x float> %396, i32 0
%398 = extractelement <4 x float> %396, i32 1
%mul3.i.i.2.1 = fmul float %398, %398
%399 = tail call float @llvm.fmuladd.f32(float %397, float %397, float %mul3.i.i.2.1) #5
%400 = extractelement <4 x float> %396, i32 2
%401 = tail call float @llvm.fmuladd.f32(float %400, float %400, float %399) #5
%and139.2.1 = and i32 %47, 1024
%tobool140.2.1 = icmp ne i32 %and139.2.1, 0
%cond.2.1 = select i1 %tobool140.2.1, float 1.000000e+00, float 0.000000e+00
%notrhs.2.1 = icmp ne i32 %32, %334
%not.or.cond.2.1 = or i1 %notlhs, %notrhs.2.1
%cmp147..2.1 = or i1 %cmp147, %not.or.cond.2.1
%conv149.2.1 = uitofp i1 %cmp147..2.1 to float
%mul150.2.1 = fmul float %conv149.2.1, %nbparam_params_rcoulomb_sq
%cmp151.2.1 = fcmp olt float %401, %mul150.2.1
br i1 %cmp151.2.1, label %if.then153.2.1, label %if.end212.2.1
if.then153.2.1: ; preds = %if.then119.2.1
%extractVec137.2.1 = shufflevector <4 x float> %396, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%402 = extractelement <4 x float> %395, i32 3
%403 = load i32, i32 addrspace(1)* %arrayidx154.2.3, align 4, !tbaa !41
%mul155.2.1 = mul nsw i32 %403, %ntypes
%add156.2.1 = add nsw i32 %mul155.2.1, %338
%mul157.2.1 = shl nsw i32 %add156.2.1, 1
%404 = sext i32 %mul157.2.1 to i64
%arrayidx158.2.1 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %404
%405 = load float, float addrspace(2)* %arrayidx158.2.1, align 4, !tbaa !39
%add162.2.1 = or i32 %mul157.2.1, 1
%406 = sext i32 %add162.2.1 to i64
%arrayidx163.2.1 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %406
%407 = load float, float addrspace(2)* %arrayidx163.2.1, align 4, !tbaa !39
%sub164.2.1 = fsub float 1.000000e+00, %cond.2.1
%408 = tail call float @llvm.fmuladd.f32(float %sub164.2.1, float 0x3D71979980000000, float %401)
%cmp.i.i.2.1 = fcmp olt float %408, 0.000000e+00
%call.i.i.2.1 = tail call float @llvm.sqrt.f32(float %408) #6
%call.i.i.op.2.1 = fdiv float 1.000000e+00, %call.i.i.2.1
%div167.2.1 = select i1 %cmp.i.i.2.1, float 0x7FF8000000000000, float %call.i.i.op.2.1
%mul168.2.1 = fmul float %div167.2.1, %div167.2.1
%mul169.2.1 = fmul float %mul168.2.1, %mul168.2.1
%mul170.2.1 = fmul float %mul168.2.1, %mul169.2.1
%mul171.2.1 = fmul float %cond.2.1, %mul170.2.1
%neg.2.1 = fsub float -0.000000e+00, %405
%409 = tail call float @llvm.fmuladd.f32(float %407, float %mul171.2.1, float %neg.2.1)
%mul173.2.1 = fmul float %mul171.2.1, %409
%mul174.2.1 = fmul float %mul168.2.1, %mul173.2.1
%cmp175.2.1 = fcmp olt float %408, %nbparam_params_rvdw_sq
%cond177.2.1 = select i1 %cmp175.2.1, float 1.000000e+00, float 0.000000e+00
%mul178.2.1 = fmul float %cond177.2.1, %mul174.2.1
%mul179.2.1 = fmul float %337, %402
%mul180.2.1 = fmul float %cond.2.1, %mul168.2.1
%mul182.2.1 = fmul float %mul, %408
%mul.i.2.1 = fmul float %mul182.2.1, %mul182.2.1
%410 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.2.1, float 0x3FBDA79640000000) #5
%411 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.2.1, float 0x3FE03C5780000000) #5
%412 = tail call float @llvm.fmuladd.f32(float %410, float %mul.i.2.1, float 1.000000e+00) #5
%413 = tail call float @llvm.fmuladd.f32(float %411, float %mul182.2.1, float %412) #5
%div.i.2.1 = fdiv float 1.000000e+00, %413, !fpmath !46
%414 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.2.1, float 0xBF0BFF7260000000) #5
%415 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.2.1, float 0x3F50794180000000) #5
%416 = tail call float @llvm.fmuladd.f32(float %414, float %mul.i.2.1, float 0xBF93BDB200000000) #5
%417 = tail call float @llvm.fmuladd.f32(float %415, float %mul.i.2.1, float 0x3FB1D5E760000000) #5
%418 = tail call float @llvm.fmuladd.f32(float %416, float %mul.i.2.1, float 0xBFE81272E0000000) #5
%419 = tail call float @llvm.fmuladd.f32(float %417, float %mul182.2.1, float %418) #5
%mul11.i.2.1 = fmul float %419, %div.i.2.1
%mul184.2.1 = fmul float %mul21, %mul11.i.2.1
%420 = tail call float @llvm.fmuladd.f32(float %mul180.2.1, float %div167.2.1, float %mul184.2.1)
%421 = tail call float @llvm.fmuladd.f32(float %mul179.2.1, float %420, float %mul178.2.1)
%splat.splatinsert.2.1 = insertelement <3 x float> undef, float %421, i32 0
%splat.splat.2.1 = shufflevector <3 x float> %splat.splatinsert.2.1, <3 x float> undef, <3 x i32> zeroinitializer
%mul189.2.1 = fmul <3 x float> %extractVec137.2.1, %splat.splat.2.1
%extractVec197.2.1 = shufflevector <4 x float> %fcj_buf.sroa.0.1.1.1, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub198.2.1 = fsub <3 x float> %extractVec197.2.1, %mul189.2.1
%extractVec199.2.1 = shufflevector <3 x float> %sub198.2.1, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec207.2.1 = shufflevector <4 x float> %loadVec4206.2.1, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add208.2.1 = fadd <3 x float> %extractVec207.2.1, %mul189.2.1
%extractVec209.2.1 = shufflevector <3 x float> %add208.2.1, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end212.2.1
if.end212.2.1: ; preds = %if.then153.2.1, %if.then119.2.1, %if.end212.1.1
%422 = phi <3 x float> [ %add208.2.1, %if.then153.2.1 ], [ %86, %if.then119.2.1 ], [ %86, %if.end212.1.1 ]
%loadVec4206.2703 = phi <4 x float> [ %extractVec209.2.1, %if.then153.2.1 ], [ %loadVec4206.2.1, %if.then119.2.1 ], [ %loadVec4206.2.1, %if.end212.1.1 ]
%fcj_buf.sroa.0.1.2.1 = phi <4 x float> [ %extractVec199.2.1, %if.then153.2.1 ], [ %fcj_buf.sroa.0.1.1.1, %if.then119.2.1 ], [ %fcj_buf.sroa.0.1.1.1, %if.end212.1.1 ]
%and117.3.1 = and i32 %45, 2048
%tobool118.3.1 = icmp eq i32 %and117.3.1, 0
br i1 %tobool118.3.1, label %if.end212.3.1, label %if.then119.3.1
if.then119.3.1: ; preds = %if.end212.2.1
%423 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx126.3.3, align 16, !tbaa !36
%424 = fsub <4 x float> %423, %336
%425 = extractelement <4 x float> %424, i32 0
%426 = extractelement <4 x float> %424, i32 1
%mul3.i.i.3.1 = fmul float %426, %426
%427 = tail call float @llvm.fmuladd.f32(float %425, float %425, float %mul3.i.i.3.1) #5
%428 = extractelement <4 x float> %424, i32 2
%429 = tail call float @llvm.fmuladd.f32(float %428, float %428, float %427) #5
%and139.3.1 = and i32 %47, 2048
%tobool140.3.1 = icmp ne i32 %and139.3.1, 0
%cond.3.1 = select i1 %tobool140.3.1, float 1.000000e+00, float 0.000000e+00
%notrhs.3.1 = icmp ne i32 %30, %334
%not.or.cond.3.1 = or i1 %notlhs, %notrhs.3.1
%cmp147..3.1 = or i1 %cmp147, %not.or.cond.3.1
%conv149.3.1 = uitofp i1 %cmp147..3.1 to float
%mul150.3.1 = fmul float %conv149.3.1, %nbparam_params_rcoulomb_sq
%cmp151.3.1 = fcmp olt float %429, %mul150.3.1
br i1 %cmp151.3.1, label %if.then153.3.1, label %if.end212.3.1
if.then153.3.1: ; preds = %if.then119.3.1
%extractVec137.3.1 = shufflevector <4 x float> %424, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%430 = extractelement <4 x float> %423, i32 3
%431 = load i32, i32 addrspace(1)* %arrayidx154.3.3, align 4, !tbaa !41
%mul155.3.1 = mul nsw i32 %431, %ntypes
%add156.3.1 = add nsw i32 %mul155.3.1, %338
%mul157.3.1 = shl nsw i32 %add156.3.1, 1
%432 = sext i32 %mul157.3.1 to i64
%arrayidx158.3.1 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %432
%433 = load float, float addrspace(2)* %arrayidx158.3.1, align 4, !tbaa !39
%add162.3.1 = or i32 %mul157.3.1, 1
%434 = sext i32 %add162.3.1 to i64
%arrayidx163.3.1 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %434
%435 = load float, float addrspace(2)* %arrayidx163.3.1, align 4, !tbaa !39
%sub164.3.1 = fsub float 1.000000e+00, %cond.3.1
%436 = tail call float @llvm.fmuladd.f32(float %sub164.3.1, float 0x3D71979980000000, float %429)
%cmp.i.i.3.1 = fcmp olt float %436, 0.000000e+00
%call.i.i.3.1 = tail call float @llvm.sqrt.f32(float %436) #6
%call.i.i.op.3.1 = fdiv float 1.000000e+00, %call.i.i.3.1
%div167.3.1 = select i1 %cmp.i.i.3.1, float 0x7FF8000000000000, float %call.i.i.op.3.1
%mul168.3.1 = fmul float %div167.3.1, %div167.3.1
%mul169.3.1 = fmul float %mul168.3.1, %mul168.3.1
%mul170.3.1 = fmul float %mul168.3.1, %mul169.3.1
%mul171.3.1 = fmul float %cond.3.1, %mul170.3.1
%neg.3.1 = fsub float -0.000000e+00, %433
%437 = tail call float @llvm.fmuladd.f32(float %435, float %mul171.3.1, float %neg.3.1)
%mul173.3.1 = fmul float %mul171.3.1, %437
%mul174.3.1 = fmul float %mul168.3.1, %mul173.3.1
%cmp175.3.1 = fcmp olt float %436, %nbparam_params_rvdw_sq
%cond177.3.1 = select i1 %cmp175.3.1, float 1.000000e+00, float 0.000000e+00
%mul178.3.1 = fmul float %cond177.3.1, %mul174.3.1
%mul179.3.1 = fmul float %337, %430
%mul180.3.1 = fmul float %cond.3.1, %mul168.3.1
%mul182.3.1 = fmul float %mul, %436
%mul.i.3.1 = fmul float %mul182.3.1, %mul182.3.1
%438 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.3.1, float 0x3FBDA79640000000) #5
%439 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.3.1, float 0x3FE03C5780000000) #5
%440 = tail call float @llvm.fmuladd.f32(float %438, float %mul.i.3.1, float 1.000000e+00) #5
%441 = tail call float @llvm.fmuladd.f32(float %439, float %mul182.3.1, float %440) #5
%div.i.3.1 = fdiv float 1.000000e+00, %441, !fpmath !46
%442 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.3.1, float 0xBF0BFF7260000000) #5
%443 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.3.1, float 0x3F50794180000000) #5
%444 = tail call float @llvm.fmuladd.f32(float %442, float %mul.i.3.1, float 0xBF93BDB200000000) #5
%445 = tail call float @llvm.fmuladd.f32(float %443, float %mul.i.3.1, float 0x3FB1D5E760000000) #5
%446 = tail call float @llvm.fmuladd.f32(float %444, float %mul.i.3.1, float 0xBFE81272E0000000) #5
%447 = tail call float @llvm.fmuladd.f32(float %445, float %mul182.3.1, float %446) #5
%mul11.i.3.1 = fmul float %447, %div.i.3.1
%mul184.3.1 = fmul float %mul21, %mul11.i.3.1
%448 = tail call float @llvm.fmuladd.f32(float %mul180.3.1, float %div167.3.1, float %mul184.3.1)
%449 = tail call float @llvm.fmuladd.f32(float %mul179.3.1, float %448, float %mul178.3.1)
%splat.splatinsert.3.1 = insertelement <3 x float> undef, float %449, i32 0
%splat.splat.3.1 = shufflevector <3 x float> %splat.splatinsert.3.1, <3 x float> undef, <3 x i32> zeroinitializer
%mul189.3.1 = fmul <3 x float> %extractVec137.3.1, %splat.splat.3.1
%extractVec197.3.1 = shufflevector <4 x float> %fcj_buf.sroa.0.1.2.1, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub198.3.1 = fsub <3 x float> %extractVec197.3.1, %mul189.3.1
%extractVec199.3.1 = shufflevector <3 x float> %sub198.3.1, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec207.3.1 = shufflevector <4 x float> %loadVec4206.3.1, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add208.3.1 = fadd <3 x float> %extractVec207.3.1, %mul189.3.1
%extractVec209.3.1 = shufflevector <3 x float> %add208.3.1, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end212.3.1
if.end212.3.1: ; preds = %if.then153.3.1, %if.then119.3.1, %if.end212.2.1
%450 = phi <3 x float> [ %add208.3.1, %if.then153.3.1 ], [ %85, %if.then119.3.1 ], [ %85, %if.end212.2.1 ]
%loadVec4206.3713 = phi <4 x float> [ %extractVec209.3.1, %if.then153.3.1 ], [ %loadVec4206.3.1, %if.then119.3.1 ], [ %loadVec4206.3.1, %if.end212.2.1 ]
%fcj_buf.sroa.0.1.3.1 = phi <4 x float> [ %extractVec199.3.1, %if.then153.3.1 ], [ %fcj_buf.sroa.0.1.2.1, %if.then119.3.1 ], [ %fcj_buf.sroa.0.1.2.1, %if.end212.2.1 ]
%and117.4.1 = and i32 %45, 4096
%tobool118.4.1 = icmp eq i32 %and117.4.1, 0
br i1 %tobool118.4.1, label %if.end212.4.1, label %if.then119.4.1
if.then119.4.1: ; preds = %if.end212.3.1
%451 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx126.4.3, align 16, !tbaa !36
%452 = fsub <4 x float> %451, %336
%453 = extractelement <4 x float> %452, i32 0
%454 = extractelement <4 x float> %452, i32 1
%mul3.i.i.4.1 = fmul float %454, %454
%455 = tail call float @llvm.fmuladd.f32(float %453, float %453, float %mul3.i.i.4.1) #5
%456 = extractelement <4 x float> %452, i32 2
%457 = tail call float @llvm.fmuladd.f32(float %456, float %456, float %455) #5
%and139.4.1 = and i32 %47, 4096
%tobool140.4.1 = icmp ne i32 %and139.4.1, 0
%cond.4.1 = select i1 %tobool140.4.1, float 1.000000e+00, float 0.000000e+00
%notrhs.4.1 = icmp ne i32 %28, %334
%not.or.cond.4.1 = or i1 %notlhs, %notrhs.4.1
%cmp147..4.1 = or i1 %cmp147, %not.or.cond.4.1
%conv149.4.1 = uitofp i1 %cmp147..4.1 to float
%mul150.4.1 = fmul float %conv149.4.1, %nbparam_params_rcoulomb_sq
%cmp151.4.1 = fcmp olt float %457, %mul150.4.1
br i1 %cmp151.4.1, label %if.then153.4.1, label %if.end212.4.1
if.then153.4.1: ; preds = %if.then119.4.1
%extractVec137.4.1 = shufflevector <4 x float> %452, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%458 = extractelement <4 x float> %451, i32 3
%459 = load i32, i32 addrspace(1)* %arrayidx154.4.3, align 4, !tbaa !41
%mul155.4.1 = mul nsw i32 %459, %ntypes
%add156.4.1 = add nsw i32 %mul155.4.1, %338
%mul157.4.1 = shl nsw i32 %add156.4.1, 1
%460 = sext i32 %mul157.4.1 to i64
%arrayidx158.4.1 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %460
%461 = load float, float addrspace(2)* %arrayidx158.4.1, align 4, !tbaa !39
%add162.4.1 = or i32 %mul157.4.1, 1
%462 = sext i32 %add162.4.1 to i64
%arrayidx163.4.1 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %462
%463 = load float, float addrspace(2)* %arrayidx163.4.1, align 4, !tbaa !39
%sub164.4.1 = fsub float 1.000000e+00, %cond.4.1
%464 = tail call float @llvm.fmuladd.f32(float %sub164.4.1, float 0x3D71979980000000, float %457)
%cmp.i.i.4.1 = fcmp olt float %464, 0.000000e+00
%call.i.i.4.1 = tail call float @llvm.sqrt.f32(float %464) #6
%call.i.i.op.4.1 = fdiv float 1.000000e+00, %call.i.i.4.1
%div167.4.1 = select i1 %cmp.i.i.4.1, float 0x7FF8000000000000, float %call.i.i.op.4.1
%mul168.4.1 = fmul float %div167.4.1, %div167.4.1
%mul169.4.1 = fmul float %mul168.4.1, %mul168.4.1
%mul170.4.1 = fmul float %mul168.4.1, %mul169.4.1
%mul171.4.1 = fmul float %cond.4.1, %mul170.4.1
%neg.4.1 = fsub float -0.000000e+00, %461
%465 = tail call float @llvm.fmuladd.f32(float %463, float %mul171.4.1, float %neg.4.1)
%mul173.4.1 = fmul float %mul171.4.1, %465
%mul174.4.1 = fmul float %mul168.4.1, %mul173.4.1
%cmp175.4.1 = fcmp olt float %464, %nbparam_params_rvdw_sq
%cond177.4.1 = select i1 %cmp175.4.1, float 1.000000e+00, float 0.000000e+00
%mul178.4.1 = fmul float %cond177.4.1, %mul174.4.1
%mul179.4.1 = fmul float %337, %458
%mul180.4.1 = fmul float %cond.4.1, %mul168.4.1
%mul182.4.1 = fmul float %mul, %464
%mul.i.4.1 = fmul float %mul182.4.1, %mul182.4.1
%466 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.4.1, float 0x3FBDA79640000000) #5
%467 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.4.1, float 0x3FE03C5780000000) #5
%468 = tail call float @llvm.fmuladd.f32(float %466, float %mul.i.4.1, float 1.000000e+00) #5
%469 = tail call float @llvm.fmuladd.f32(float %467, float %mul182.4.1, float %468) #5
%div.i.4.1 = fdiv float 1.000000e+00, %469, !fpmath !46
%470 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.4.1, float 0xBF0BFF7260000000) #5
%471 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.4.1, float 0x3F50794180000000) #5
%472 = tail call float @llvm.fmuladd.f32(float %470, float %mul.i.4.1, float 0xBF93BDB200000000) #5
%473 = tail call float @llvm.fmuladd.f32(float %471, float %mul.i.4.1, float 0x3FB1D5E760000000) #5
%474 = tail call float @llvm.fmuladd.f32(float %472, float %mul.i.4.1, float 0xBFE81272E0000000) #5
%475 = tail call float @llvm.fmuladd.f32(float %473, float %mul182.4.1, float %474) #5
%mul11.i.4.1 = fmul float %475, %div.i.4.1
%mul184.4.1 = fmul float %mul21, %mul11.i.4.1
%476 = tail call float @llvm.fmuladd.f32(float %mul180.4.1, float %div167.4.1, float %mul184.4.1)
%477 = tail call float @llvm.fmuladd.f32(float %mul179.4.1, float %476, float %mul178.4.1)
%splat.splatinsert.4.1 = insertelement <3 x float> undef, float %477, i32 0
%splat.splat.4.1 = shufflevector <3 x float> %splat.splatinsert.4.1, <3 x float> undef, <3 x i32> zeroinitializer
%mul189.4.1 = fmul <3 x float> %extractVec137.4.1, %splat.splat.4.1
%extractVec197.4.1 = shufflevector <4 x float> %fcj_buf.sroa.0.1.3.1, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub198.4.1 = fsub <3 x float> %extractVec197.4.1, %mul189.4.1
%extractVec199.4.1 = shufflevector <3 x float> %sub198.4.1, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec207.4.1 = shufflevector <4 x float> %loadVec4206.4.1, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add208.4.1 = fadd <3 x float> %extractVec207.4.1, %mul189.4.1
%extractVec209.4.1 = shufflevector <3 x float> %add208.4.1, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end212.4.1
if.end212.4.1: ; preds = %if.then153.4.1, %if.then119.4.1, %if.end212.3.1
%478 = phi <3 x float> [ %add208.4.1, %if.then153.4.1 ], [ %84, %if.then119.4.1 ], [ %84, %if.end212.3.1 ]
%loadVec4206.4723 = phi <4 x float> [ %extractVec209.4.1, %if.then153.4.1 ], [ %loadVec4206.4.1, %if.then119.4.1 ], [ %loadVec4206.4.1, %if.end212.3.1 ]
%fcj_buf.sroa.0.1.4.1 = phi <4 x float> [ %extractVec199.4.1, %if.then153.4.1 ], [ %fcj_buf.sroa.0.1.3.1, %if.then119.4.1 ], [ %fcj_buf.sroa.0.1.3.1, %if.end212.3.1 ]
%and117.5.1 = and i32 %45, 8192
%tobool118.5.1 = icmp eq i32 %and117.5.1, 0
br i1 %tobool118.5.1, label %if.end212.5.1, label %if.then119.5.1
if.then119.5.1: ; preds = %if.end212.4.1
%479 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx126.5.3, align 16, !tbaa !36
%480 = fsub <4 x float> %479, %336
%481 = extractelement <4 x float> %480, i32 0
%482 = extractelement <4 x float> %480, i32 1
%mul3.i.i.5.1 = fmul float %482, %482
%483 = tail call float @llvm.fmuladd.f32(float %481, float %481, float %mul3.i.i.5.1) #5
%484 = extractelement <4 x float> %480, i32 2
%485 = tail call float @llvm.fmuladd.f32(float %484, float %484, float %483) #5
%and139.5.1 = and i32 %47, 8192
%tobool140.5.1 = icmp ne i32 %and139.5.1, 0
%cond.5.1 = select i1 %tobool140.5.1, float 1.000000e+00, float 0.000000e+00
%notrhs.5.1 = icmp ne i32 %26, %334
%not.or.cond.5.1 = or i1 %notlhs, %notrhs.5.1
%cmp147..5.1 = or i1 %cmp147, %not.or.cond.5.1
%conv149.5.1 = uitofp i1 %cmp147..5.1 to float
%mul150.5.1 = fmul float %conv149.5.1, %nbparam_params_rcoulomb_sq
%cmp151.5.1 = fcmp olt float %485, %mul150.5.1
br i1 %cmp151.5.1, label %if.then153.5.1, label %if.end212.5.1
if.then153.5.1: ; preds = %if.then119.5.1
%extractVec137.5.1 = shufflevector <4 x float> %480, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%486 = extractelement <4 x float> %479, i32 3
%487 = load i32, i32 addrspace(1)* %arrayidx154.5.3, align 4, !tbaa !41
%mul155.5.1 = mul nsw i32 %487, %ntypes
%add156.5.1 = add nsw i32 %mul155.5.1, %338
%mul157.5.1 = shl nsw i32 %add156.5.1, 1
%488 = sext i32 %mul157.5.1 to i64
%arrayidx158.5.1 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %488
%489 = load float, float addrspace(2)* %arrayidx158.5.1, align 4, !tbaa !39
%add162.5.1 = or i32 %mul157.5.1, 1
%490 = sext i32 %add162.5.1 to i64
%arrayidx163.5.1 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %490
%491 = load float, float addrspace(2)* %arrayidx163.5.1, align 4, !tbaa !39
%sub164.5.1 = fsub float 1.000000e+00, %cond.5.1
%492 = tail call float @llvm.fmuladd.f32(float %sub164.5.1, float 0x3D71979980000000, float %485)
%cmp.i.i.5.1 = fcmp olt float %492, 0.000000e+00
%call.i.i.5.1 = tail call float @llvm.sqrt.f32(float %492) #6
%call.i.i.op.5.1 = fdiv float 1.000000e+00, %call.i.i.5.1
%div167.5.1 = select i1 %cmp.i.i.5.1, float 0x7FF8000000000000, float %call.i.i.op.5.1
%mul168.5.1 = fmul float %div167.5.1, %div167.5.1
%mul169.5.1 = fmul float %mul168.5.1, %mul168.5.1
%mul170.5.1 = fmul float %mul168.5.1, %mul169.5.1
%mul171.5.1 = fmul float %cond.5.1, %mul170.5.1
%neg.5.1 = fsub float -0.000000e+00, %489
%493 = tail call float @llvm.fmuladd.f32(float %491, float %mul171.5.1, float %neg.5.1)
%mul173.5.1 = fmul float %mul171.5.1, %493
%mul174.5.1 = fmul float %mul168.5.1, %mul173.5.1
%cmp175.5.1 = fcmp olt float %492, %nbparam_params_rvdw_sq
%cond177.5.1 = select i1 %cmp175.5.1, float 1.000000e+00, float 0.000000e+00
%mul178.5.1 = fmul float %cond177.5.1, %mul174.5.1
%mul179.5.1 = fmul float %337, %486
%mul180.5.1 = fmul float %cond.5.1, %mul168.5.1
%mul182.5.1 = fmul float %mul, %492
%mul.i.5.1 = fmul float %mul182.5.1, %mul182.5.1
%494 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.5.1, float 0x3FBDA79640000000) #5
%495 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.5.1, float 0x3FE03C5780000000) #5
%496 = tail call float @llvm.fmuladd.f32(float %494, float %mul.i.5.1, float 1.000000e+00) #5
%497 = tail call float @llvm.fmuladd.f32(float %495, float %mul182.5.1, float %496) #5
%div.i.5.1 = fdiv float 1.000000e+00, %497, !fpmath !46
%498 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.5.1, float 0xBF0BFF7260000000) #5
%499 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.5.1, float 0x3F50794180000000) #5
%500 = tail call float @llvm.fmuladd.f32(float %498, float %mul.i.5.1, float 0xBF93BDB200000000) #5
%501 = tail call float @llvm.fmuladd.f32(float %499, float %mul.i.5.1, float 0x3FB1D5E760000000) #5
%502 = tail call float @llvm.fmuladd.f32(float %500, float %mul.i.5.1, float 0xBFE81272E0000000) #5
%503 = tail call float @llvm.fmuladd.f32(float %501, float %mul182.5.1, float %502) #5
%mul11.i.5.1 = fmul float %503, %div.i.5.1
%mul184.5.1 = fmul float %mul21, %mul11.i.5.1
%504 = tail call float @llvm.fmuladd.f32(float %mul180.5.1, float %div167.5.1, float %mul184.5.1)
%505 = tail call float @llvm.fmuladd.f32(float %mul179.5.1, float %504, float %mul178.5.1)
%splat.splatinsert.5.1 = insertelement <3 x float> undef, float %505, i32 0
%splat.splat.5.1 = shufflevector <3 x float> %splat.splatinsert.5.1, <3 x float> undef, <3 x i32> zeroinitializer
%mul189.5.1 = fmul <3 x float> %extractVec137.5.1, %splat.splat.5.1
%extractVec197.5.1 = shufflevector <4 x float> %fcj_buf.sroa.0.1.4.1, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub198.5.1 = fsub <3 x float> %extractVec197.5.1, %mul189.5.1
%extractVec199.5.1 = shufflevector <3 x float> %sub198.5.1, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec207.5.1 = shufflevector <4 x float> %loadVec4206.5.1, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add208.5.1 = fadd <3 x float> %extractVec207.5.1, %mul189.5.1
%extractVec209.5.1 = shufflevector <3 x float> %add208.5.1, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end212.5.1
if.end212.5.1: ; preds = %if.then153.5.1, %if.then119.5.1, %if.end212.4.1
%506 = phi <3 x float> [ %add208.5.1, %if.then153.5.1 ], [ %83, %if.then119.5.1 ], [ %83, %if.end212.4.1 ]
%loadVec4206.5733 = phi <4 x float> [ %extractVec209.5.1, %if.then153.5.1 ], [ %loadVec4206.5.1, %if.then119.5.1 ], [ %loadVec4206.5.1, %if.end212.4.1 ]
%fcj_buf.sroa.0.1.5.1 = phi <4 x float> [ %extractVec199.5.1, %if.then153.5.1 ], [ %fcj_buf.sroa.0.1.4.1, %if.then119.5.1 ], [ %fcj_buf.sroa.0.1.4.1, %if.end212.4.1 ]
%and117.6.1 = and i32 %45, 16384
%tobool118.6.1 = icmp eq i32 %and117.6.1, 0
br i1 %tobool118.6.1, label %if.end212.6.1, label %if.then119.6.1
if.then119.6.1: ; preds = %if.end212.5.1
%507 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx126.6.3, align 16, !tbaa !36
%508 = fsub <4 x float> %507, %336
%509 = extractelement <4 x float> %508, i32 0
%510 = extractelement <4 x float> %508, i32 1
%mul3.i.i.6.1 = fmul float %510, %510
%511 = tail call float @llvm.fmuladd.f32(float %509, float %509, float %mul3.i.i.6.1) #5
%512 = extractelement <4 x float> %508, i32 2
%513 = tail call float @llvm.fmuladd.f32(float %512, float %512, float %511) #5
%and139.6.1 = and i32 %47, 16384
%tobool140.6.1 = icmp ne i32 %and139.6.1, 0
%cond.6.1 = select i1 %tobool140.6.1, float 1.000000e+00, float 0.000000e+00
%notrhs.6.1 = icmp ne i32 %24, %334
%not.or.cond.6.1 = or i1 %notlhs, %notrhs.6.1
%cmp147..6.1 = or i1 %cmp147, %not.or.cond.6.1
%conv149.6.1 = uitofp i1 %cmp147..6.1 to float
%mul150.6.1 = fmul float %conv149.6.1, %nbparam_params_rcoulomb_sq
%cmp151.6.1 = fcmp olt float %513, %mul150.6.1
br i1 %cmp151.6.1, label %if.then153.6.1, label %if.end212.6.1
if.then153.6.1: ; preds = %if.then119.6.1
%extractVec137.6.1 = shufflevector <4 x float> %508, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%514 = extractelement <4 x float> %507, i32 3
%515 = load i32, i32 addrspace(1)* %arrayidx154.6.3, align 4, !tbaa !41
%mul155.6.1 = mul nsw i32 %515, %ntypes
%add156.6.1 = add nsw i32 %mul155.6.1, %338
%mul157.6.1 = shl nsw i32 %add156.6.1, 1
%516 = sext i32 %mul157.6.1 to i64
%arrayidx158.6.1 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %516
%517 = load float, float addrspace(2)* %arrayidx158.6.1, align 4, !tbaa !39
%add162.6.1 = or i32 %mul157.6.1, 1
%518 = sext i32 %add162.6.1 to i64
%arrayidx163.6.1 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %518
%519 = load float, float addrspace(2)* %arrayidx163.6.1, align 4, !tbaa !39
%sub164.6.1 = fsub float 1.000000e+00, %cond.6.1
%520 = tail call float @llvm.fmuladd.f32(float %sub164.6.1, float 0x3D71979980000000, float %513)
%cmp.i.i.6.1 = fcmp olt float %520, 0.000000e+00
%call.i.i.6.1 = tail call float @llvm.sqrt.f32(float %520) #6
%call.i.i.op.6.1 = fdiv float 1.000000e+00, %call.i.i.6.1
%div167.6.1 = select i1 %cmp.i.i.6.1, float 0x7FF8000000000000, float %call.i.i.op.6.1
%mul168.6.1 = fmul float %div167.6.1, %div167.6.1
%mul169.6.1 = fmul float %mul168.6.1, %mul168.6.1
%mul170.6.1 = fmul float %mul168.6.1, %mul169.6.1
%mul171.6.1 = fmul float %cond.6.1, %mul170.6.1
%neg.6.1 = fsub float -0.000000e+00, %517
%521 = tail call float @llvm.fmuladd.f32(float %519, float %mul171.6.1, float %neg.6.1)
%mul173.6.1 = fmul float %mul171.6.1, %521
%mul174.6.1 = fmul float %mul168.6.1, %mul173.6.1
%cmp175.6.1 = fcmp olt float %520, %nbparam_params_rvdw_sq
%cond177.6.1 = select i1 %cmp175.6.1, float 1.000000e+00, float 0.000000e+00
%mul178.6.1 = fmul float %cond177.6.1, %mul174.6.1
%mul179.6.1 = fmul float %337, %514
%mul180.6.1 = fmul float %cond.6.1, %mul168.6.1
%mul182.6.1 = fmul float %mul, %520
%mul.i.6.1 = fmul float %mul182.6.1, %mul182.6.1
%522 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.6.1, float 0x3FBDA79640000000) #5
%523 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.6.1, float 0x3FE03C5780000000) #5
%524 = tail call float @llvm.fmuladd.f32(float %522, float %mul.i.6.1, float 1.000000e+00) #5
%525 = tail call float @llvm.fmuladd.f32(float %523, float %mul182.6.1, float %524) #5
%div.i.6.1 = fdiv float 1.000000e+00, %525, !fpmath !46
%526 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.6.1, float 0xBF0BFF7260000000) #5
%527 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.6.1, float 0x3F50794180000000) #5
%528 = tail call float @llvm.fmuladd.f32(float %526, float %mul.i.6.1, float 0xBF93BDB200000000) #5
%529 = tail call float @llvm.fmuladd.f32(float %527, float %mul.i.6.1, float 0x3FB1D5E760000000) #5
%530 = tail call float @llvm.fmuladd.f32(float %528, float %mul.i.6.1, float 0xBFE81272E0000000) #5
%531 = tail call float @llvm.fmuladd.f32(float %529, float %mul182.6.1, float %530) #5
%mul11.i.6.1 = fmul float %531, %div.i.6.1
%mul184.6.1 = fmul float %mul21, %mul11.i.6.1
%532 = tail call float @llvm.fmuladd.f32(float %mul180.6.1, float %div167.6.1, float %mul184.6.1)
%533 = tail call float @llvm.fmuladd.f32(float %mul179.6.1, float %532, float %mul178.6.1)
%splat.splatinsert.6.1 = insertelement <3 x float> undef, float %533, i32 0
%splat.splat.6.1 = shufflevector <3 x float> %splat.splatinsert.6.1, <3 x float> undef, <3 x i32> zeroinitializer
%mul189.6.1 = fmul <3 x float> %extractVec137.6.1, %splat.splat.6.1
%extractVec197.6.1 = shufflevector <4 x float> %fcj_buf.sroa.0.1.5.1, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub198.6.1 = fsub <3 x float> %extractVec197.6.1, %mul189.6.1
%extractVec199.6.1 = shufflevector <3 x float> %sub198.6.1, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec207.6.1 = shufflevector <4 x float> %loadVec4206.6.1, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add208.6.1 = fadd <3 x float> %extractVec207.6.1, %mul189.6.1
%extractVec209.6.1 = shufflevector <3 x float> %add208.6.1, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end212.6.1
if.end212.6.1: ; preds = %if.then153.6.1, %if.then119.6.1, %if.end212.5.1
%534 = phi <3 x float> [ %add208.6.1, %if.then153.6.1 ], [ %82, %if.then119.6.1 ], [ %82, %if.end212.5.1 ]
%loadVec4206.6743 = phi <4 x float> [ %extractVec209.6.1, %if.then153.6.1 ], [ %loadVec4206.6.1, %if.then119.6.1 ], [ %loadVec4206.6.1, %if.end212.5.1 ]
%fcj_buf.sroa.0.1.6.1 = phi <4 x float> [ %extractVec199.6.1, %if.then153.6.1 ], [ %fcj_buf.sroa.0.1.5.1, %if.then119.6.1 ], [ %fcj_buf.sroa.0.1.5.1, %if.end212.5.1 ]
%and117.7.1 = and i32 %45, 32768
%tobool118.7.1 = icmp eq i32 %and117.7.1, 0
br i1 %tobool118.7.1, label %if.end212.7.1, label %if.then119.7.1
if.then119.7.1: ; preds = %if.end212.6.1
%535 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx126.7.3, align 16, !tbaa !36
%536 = fsub <4 x float> %535, %336
%537 = extractelement <4 x float> %536, i32 0
%538 = extractelement <4 x float> %536, i32 1
%mul3.i.i.7.1 = fmul float %538, %538
%539 = tail call float @llvm.fmuladd.f32(float %537, float %537, float %mul3.i.i.7.1) #5
%540 = extractelement <4 x float> %536, i32 2
%541 = tail call float @llvm.fmuladd.f32(float %540, float %540, float %539) #5
%and139.7.1 = and i32 %47, 32768
%tobool140.7.1 = icmp ne i32 %and139.7.1, 0
%cond.7.1 = select i1 %tobool140.7.1, float 1.000000e+00, float 0.000000e+00
%notrhs.7.1 = icmp ne i32 %22, %334
%not.or.cond.7.1 = or i1 %notlhs, %notrhs.7.1
%cmp147..7.1 = or i1 %cmp147, %not.or.cond.7.1
%conv149.7.1 = uitofp i1 %cmp147..7.1 to float
%mul150.7.1 = fmul float %conv149.7.1, %nbparam_params_rcoulomb_sq
%cmp151.7.1 = fcmp olt float %541, %mul150.7.1
br i1 %cmp151.7.1, label %if.then153.7.1, label %if.end212.7.1
if.then153.7.1: ; preds = %if.then119.7.1
%extractVec137.7.1 = shufflevector <4 x float> %536, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%542 = extractelement <4 x float> %535, i32 3
%543 = load i32, i32 addrspace(1)* %arrayidx154.7.3, align 4, !tbaa !41
%mul155.7.1 = mul nsw i32 %543, %ntypes
%add156.7.1 = add nsw i32 %mul155.7.1, %338
%mul157.7.1 = shl nsw i32 %add156.7.1, 1
%544 = sext i32 %mul157.7.1 to i64
%arrayidx158.7.1 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %544
%545 = load float, float addrspace(2)* %arrayidx158.7.1, align 4, !tbaa !39
%add162.7.1 = or i32 %mul157.7.1, 1
%546 = sext i32 %add162.7.1 to i64
%arrayidx163.7.1 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %546
%547 = load float, float addrspace(2)* %arrayidx163.7.1, align 4, !tbaa !39
%sub164.7.1 = fsub float 1.000000e+00, %cond.7.1
%548 = tail call float @llvm.fmuladd.f32(float %sub164.7.1, float 0x3D71979980000000, float %541)
%cmp.i.i.7.1 = fcmp olt float %548, 0.000000e+00
%call.i.i.7.1 = tail call float @llvm.sqrt.f32(float %548) #6
%call.i.i.op.7.1 = fdiv float 1.000000e+00, %call.i.i.7.1
%div167.7.1 = select i1 %cmp.i.i.7.1, float 0x7FF8000000000000, float %call.i.i.op.7.1
%mul168.7.1 = fmul float %div167.7.1, %div167.7.1
%mul169.7.1 = fmul float %mul168.7.1, %mul168.7.1
%mul170.7.1 = fmul float %mul168.7.1, %mul169.7.1
%mul171.7.1 = fmul float %cond.7.1, %mul170.7.1
%neg.7.1 = fsub float -0.000000e+00, %545
%549 = tail call float @llvm.fmuladd.f32(float %547, float %mul171.7.1, float %neg.7.1)
%mul173.7.1 = fmul float %mul171.7.1, %549
%mul174.7.1 = fmul float %mul168.7.1, %mul173.7.1
%cmp175.7.1 = fcmp olt float %548, %nbparam_params_rvdw_sq
%cond177.7.1 = select i1 %cmp175.7.1, float 1.000000e+00, float 0.000000e+00
%mul178.7.1 = fmul float %cond177.7.1, %mul174.7.1
%mul179.7.1 = fmul float %337, %542
%mul180.7.1 = fmul float %cond.7.1, %mul168.7.1
%mul182.7.1 = fmul float %mul, %548
%mul.i.7.1 = fmul float %mul182.7.1, %mul182.7.1
%550 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.7.1, float 0x3FBDA79640000000) #5
%551 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.7.1, float 0x3FE03C5780000000) #5
%552 = tail call float @llvm.fmuladd.f32(float %550, float %mul.i.7.1, float 1.000000e+00) #5
%553 = tail call float @llvm.fmuladd.f32(float %551, float %mul182.7.1, float %552) #5
%div.i.7.1 = fdiv float 1.000000e+00, %553, !fpmath !46
%554 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.7.1, float 0xBF0BFF7260000000) #5
%555 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.7.1, float 0x3F50794180000000) #5
%556 = tail call float @llvm.fmuladd.f32(float %554, float %mul.i.7.1, float 0xBF93BDB200000000) #5
%557 = tail call float @llvm.fmuladd.f32(float %555, float %mul.i.7.1, float 0x3FB1D5E760000000) #5
%558 = tail call float @llvm.fmuladd.f32(float %556, float %mul.i.7.1, float 0xBFE81272E0000000) #5
%559 = tail call float @llvm.fmuladd.f32(float %557, float %mul182.7.1, float %558) #5
%mul11.i.7.1 = fmul float %559, %div.i.7.1
%mul184.7.1 = fmul float %mul21, %mul11.i.7.1
%560 = tail call float @llvm.fmuladd.f32(float %mul180.7.1, float %div167.7.1, float %mul184.7.1)
%561 = tail call float @llvm.fmuladd.f32(float %mul179.7.1, float %560, float %mul178.7.1)
%splat.splatinsert.7.1 = insertelement <3 x float> undef, float %561, i32 0
%splat.splat.7.1 = shufflevector <3 x float> %splat.splatinsert.7.1, <3 x float> undef, <3 x i32> zeroinitializer
%mul189.7.1 = fmul <3 x float> %extractVec137.7.1, %splat.splat.7.1
%extractVec197.7.1 = shufflevector <4 x float> %fcj_buf.sroa.0.1.6.1, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub198.7.1 = fsub <3 x float> %extractVec197.7.1, %mul189.7.1
%extractVec199.7.1 = shufflevector <3 x float> %sub198.7.1, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec207.7.1 = shufflevector <4 x float> %loadVec4206.7.1, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add208.7.1 = fadd <3 x float> %extractVec207.7.1, %mul189.7.1
%extractVec209.7.1 = shufflevector <3 x float> %add208.7.1, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end212.7.1
if.end212.7.1: ; preds = %if.then153.7.1, %if.then119.7.1, %if.end212.6.1
%fci_buf.sroa.37.5 = phi <4 x float> [ %fci_buf.sroa.37.1, %if.end212.6.1 ], [ %extractVec209.7.1, %if.then153.7.1 ], [ %fci_buf.sroa.37.1, %if.then119.7.1 ]
%loadVec4206.7753 = phi <4 x float> [ %loadVec4206.7.1, %if.end212.6.1 ], [ %extractVec209.7.1, %if.then153.7.1 ], [ %loadVec4206.7.1, %if.then119.7.1 ]
%fcj_buf.sroa.0.1.7.1 = phi <4 x float> [ %fcj_buf.sroa.0.1.6.1, %if.end212.6.1 ], [ %extractVec199.7.1, %if.then153.7.1 ], [ %fcj_buf.sroa.0.1.6.1, %if.then119.7.1 ]
%562 = extractelement <4 x float> %fcj_buf.sroa.0.1.7.1, i32 0
store float %562, float addrspace(3)* %arrayidx217, align 4, !tbaa !39
%563 = extractelement <4 x float> %fcj_buf.sroa.0.1.7.1, i32 1
store float %563, float addrspace(3)* %arrayidx219, align 4, !tbaa !39
%564 = extractelement <4 x float> %fcj_buf.sroa.0.1.7.1, i32 2
store float %564, float addrspace(3)* %arrayidx221, align 4, !tbaa !39
tail call fastcc void @reduce_force_j_generic(float addrspace(3)* %2, float addrspace(1)* %f, i32 %x.i, i32 %y.i, i32 %add108.1)
br label %for.inc223.1
for.inc223.1: ; preds = %if.end212.7.1, %for.inc223
%fci_buf.sroa.37.6 = phi <4 x float> [ %fci_buf.sroa.37.1, %for.inc223 ], [ %fci_buf.sroa.37.5, %if.end212.7.1 ]
%565 = phi <3 x float> [ %82, %for.inc223 ], [ %534, %if.end212.7.1 ]
%566 = phi <3 x float> [ %83, %for.inc223 ], [ %506, %if.end212.7.1 ]
%567 = phi <3 x float> [ %84, %for.inc223 ], [ %478, %if.end212.7.1 ]
%568 = phi <3 x float> [ %85, %for.inc223 ], [ %450, %if.end212.7.1 ]
%569 = phi <3 x float> [ %86, %for.inc223 ], [ %422, %if.end212.7.1 ]
%570 = phi <3 x float> [ %87, %for.inc223 ], [ %394, %if.end212.7.1 ]
%571 = phi <3 x float> [ %88, %for.inc223 ], [ %366, %if.end212.7.1 ]
%loadVec4206.7.2 = phi <4 x float> [ %loadVec4206.7.1, %for.inc223 ], [ %loadVec4206.7753, %if.end212.7.1 ]
%loadVec4206.6.2 = phi <4 x float> [ %loadVec4206.6.1, %for.inc223 ], [ %loadVec4206.6743, %if.end212.7.1 ]
%loadVec4206.5.2 = phi <4 x float> [ %loadVec4206.5.1, %for.inc223 ], [ %loadVec4206.5733, %if.end212.7.1 ]
%loadVec4206.4.2 = phi <4 x float> [ %loadVec4206.4.1, %for.inc223 ], [ %loadVec4206.4723, %if.end212.7.1 ]
%loadVec4206.3.2 = phi <4 x float> [ %loadVec4206.3.1, %for.inc223 ], [ %loadVec4206.3713, %if.end212.7.1 ]
%loadVec4206.2.2 = phi <4 x float> [ %loadVec4206.2.1, %for.inc223 ], [ %loadVec4206.2703, %if.end212.7.1 ]
%loadVec4206.1.2 = phi <4 x float> [ %loadVec4206.1.1, %for.inc223 ], [ %loadVec4206.1693, %if.end212.7.1 ]
%loadVec4206.2613 = phi <4 x float> [ %loadVec4206.1552, %for.inc223 ], [ %loadVec4206683, %if.end212.7.1 ]
%and96.2 = and i32 %45, 16711680
%tobool97.2 = icmp eq i32 %and96.2, 0
br i1 %tobool97.2, label %for.inc223.2, label %if.then98.2
if.then98.2: ; preds = %for.inc223.1
%572 = load i32, i32 addrspace(3)* %arrayidx106.2, align 4, !tbaa !41
%mul107.2 = shl nsw i32 %572, 3
%add108.2 = add i32 %mul107.2, %y.i
%573 = sext i32 %add108.2 to i64
%arrayidx109.2 = getelementptr inbounds <4 x float>, <4 x float> addrspace(1)* %xq, i64 %573
%574 = load <4 x float>, <4 x float> addrspace(1)* %arrayidx109.2, align 16, !tbaa !36
%575 = extractelement <4 x float> %574, i32 3
%arrayidx111.2 = getelementptr inbounds i32, i32 addrspace(1)* %atom_types, i64 %573
%576 = load i32, i32 addrspace(1)* %arrayidx111.2, align 4, !tbaa !41
%and117.2560 = and i32 %45, 65536
%tobool118.2561 = icmp eq i32 %and117.2560, 0
br i1 %tobool118.2561, label %if.end212.2620, label %if.then119.2573
if.then119.2573: ; preds = %if.then98.2
%577 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx126.3623, align 16, !tbaa !36
%578 = fsub <4 x float> %577, %574
%579 = extractelement <4 x float> %578, i32 0
%580 = extractelement <4 x float> %578, i32 1
%mul3.i.i.2563 = fmul float %580, %580
%581 = tail call float @llvm.fmuladd.f32(float %579, float %579, float %mul3.i.i.2563) #5
%582 = extractelement <4 x float> %578, i32 2
%583 = tail call float @llvm.fmuladd.f32(float %582, float %582, float %581) #5
%and139.2564 = and i32 %47, 65536
%tobool140.2565 = icmp ne i32 %and139.2564, 0
%cond.2566 = select i1 %tobool140.2565, float 1.000000e+00, float 0.000000e+00
%notrhs.2567 = icmp ne i32 %mul31, %572
%not.or.cond.2568 = or i1 %notlhs, %notrhs.2567
%cmp147..2569 = or i1 %cmp147, %not.or.cond.2568
%conv149.2570 = uitofp i1 %cmp147..2569 to float
%mul150.2571 = fmul float %conv149.2570, %nbparam_params_rcoulomb_sq
%cmp151.2572 = fcmp olt float %583, %mul150.2571
br i1 %cmp151.2572, label %if.then153.2617, label %if.end212.2620
if.then153.2617: ; preds = %if.then119.2573
%extractVec137.2574 = shufflevector <4 x float> %578, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%584 = extractelement <4 x float> %577, i32 3
%585 = load i32, i32 addrspace(1)* %arrayidx154.3638, align 4, !tbaa !41
%mul155.2578 = mul nsw i32 %585, %ntypes
%add156.2579 = add nsw i32 %mul155.2578, %576
%mul157.2580 = shl nsw i32 %add156.2579, 1
%586 = sext i32 %mul157.2580 to i64
%arrayidx158.2581 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %586
%587 = load float, float addrspace(2)* %arrayidx158.2581, align 4, !tbaa !39
%add162.2582 = or i32 %mul157.2580, 1
%588 = sext i32 %add162.2582 to i64
%arrayidx163.2583 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %588
%589 = load float, float addrspace(2)* %arrayidx163.2583, align 4, !tbaa !39
%sub164.2584 = fsub float 1.000000e+00, %cond.2566
%590 = tail call float @llvm.fmuladd.f32(float %sub164.2584, float 0x3D71979980000000, float %583)
%cmp.i.i.2585 = fcmp olt float %590, 0.000000e+00
%call.i.i.2586 = tail call float @llvm.sqrt.f32(float %590) #6
%call.i.i.op.2587 = fdiv float 1.000000e+00, %call.i.i.2586
%div167.2588 = select i1 %cmp.i.i.2585, float 0x7FF8000000000000, float %call.i.i.op.2587
%mul168.2589 = fmul float %div167.2588, %div167.2588
%mul169.2590 = fmul float %mul168.2589, %mul168.2589
%mul170.2591 = fmul float %mul168.2589, %mul169.2590
%mul171.2592 = fmul float %cond.2566, %mul170.2591
%neg.2593 = fsub float -0.000000e+00, %587
%591 = tail call float @llvm.fmuladd.f32(float %589, float %mul171.2592, float %neg.2593)
%mul173.2594 = fmul float %mul171.2592, %591
%mul174.2595 = fmul float %mul168.2589, %mul173.2594
%cmp175.2596 = fcmp olt float %590, %nbparam_params_rvdw_sq
%cond177.2597 = select i1 %cmp175.2596, float 1.000000e+00, float 0.000000e+00
%mul178.2598 = fmul float %cond177.2597, %mul174.2595
%mul179.2599 = fmul float %575, %584
%mul180.2600 = fmul float %cond.2566, %mul168.2589
%mul182.2601 = fmul float %mul, %590
%mul.i.2602 = fmul float %mul182.2601, %mul182.2601
%592 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.2602, float 0x3FBDA79640000000) #5
%593 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.2602, float 0x3FE03C5780000000) #5
%594 = tail call float @llvm.fmuladd.f32(float %592, float %mul.i.2602, float 1.000000e+00) #5
%595 = tail call float @llvm.fmuladd.f32(float %593, float %mul182.2601, float %594) #5
%div.i.2603 = fdiv float 1.000000e+00, %595, !fpmath !46
%596 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.2602, float 0xBF0BFF7260000000) #5
%597 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.2602, float 0x3F50794180000000) #5
%598 = tail call float @llvm.fmuladd.f32(float %596, float %mul.i.2602, float 0xBF93BDB200000000) #5
%599 = tail call float @llvm.fmuladd.f32(float %597, float %mul.i.2602, float 0x3FB1D5E760000000) #5
%600 = tail call float @llvm.fmuladd.f32(float %598, float %mul.i.2602, float 0xBFE81272E0000000) #5
%601 = tail call float @llvm.fmuladd.f32(float %599, float %mul182.2601, float %600) #5
%mul11.i.2604 = fmul float %601, %div.i.2603
%mul184.2605 = fmul float %mul21, %mul11.i.2604
%602 = tail call float @llvm.fmuladd.f32(float %mul180.2600, float %div167.2588, float %mul184.2605)
%603 = tail call float @llvm.fmuladd.f32(float %mul179.2599, float %602, float %mul178.2598)
%splat.splatinsert.2606 = insertelement <3 x float> undef, float %603, i32 0
%splat.splat.2607 = shufflevector <3 x float> %splat.splatinsert.2606, <3 x float> undef, <3 x i32> zeroinitializer
%mul189.2608 = fmul <3 x float> %extractVec137.2574, %splat.splat.2607
%sub198.2609 = fsub <3 x float> zeroinitializer, %mul189.2608
%extractVec199.2610 = shufflevector <3 x float> %sub198.2609, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec207.2614 = shufflevector <4 x float> %loadVec4206.2613, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add208.2615 = fadd <3 x float> %extractVec207.2614, %mul189.2608
%extractVec209.2616 = shufflevector <3 x float> %add208.2615, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end212.2620
if.end212.2620: ; preds = %if.then153.2617, %if.then119.2573, %if.then98.2
%604 = phi <3 x float> [ %add208.2615, %if.then153.2617 ], [ %571, %if.then119.2573 ], [ %571, %if.then98.2 ]
%loadVec4206684 = phi <4 x float> [ %extractVec209.2616, %if.then153.2617 ], [ %loadVec4206.2613, %if.then119.2573 ], [ %loadVec4206.2613, %if.then98.2 ]
%fcj_buf.sroa.0.1.2618 = phi <4 x float> [ %extractVec199.2610, %if.then153.2617 ], [ <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float undef>, %if.then119.2573 ], [ <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float undef>, %if.then98.2 ]
%and117.1.2 = and i32 %45, 131072
%tobool118.1.2 = icmp eq i32 %and117.1.2, 0
br i1 %tobool118.1.2, label %if.end212.1.2, label %if.then119.1.2
if.then119.1.2: ; preds = %if.end212.2620
%605 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx126.1.3, align 16, !tbaa !36
%606 = fsub <4 x float> %605, %574
%607 = extractelement <4 x float> %606, i32 0
%608 = extractelement <4 x float> %606, i32 1
%mul3.i.i.1.2 = fmul float %608, %608
%609 = tail call float @llvm.fmuladd.f32(float %607, float %607, float %mul3.i.i.1.2) #5
%610 = extractelement <4 x float> %606, i32 2
%611 = tail call float @llvm.fmuladd.f32(float %610, float %610, float %609) #5
%and139.1.2 = and i32 %47, 131072
%tobool140.1.2 = icmp ne i32 %and139.1.2, 0
%cond.1.2 = select i1 %tobool140.1.2, float 1.000000e+00, float 0.000000e+00
%notrhs.1.2 = icmp ne i32 %34, %572
%not.or.cond.1.2 = or i1 %notlhs, %notrhs.1.2
%cmp147..1.2 = or i1 %cmp147, %not.or.cond.1.2
%conv149.1.2 = uitofp i1 %cmp147..1.2 to float
%mul150.1.2 = fmul float %conv149.1.2, %nbparam_params_rcoulomb_sq
%cmp151.1.2 = fcmp olt float %611, %mul150.1.2
br i1 %cmp151.1.2, label %if.then153.1.2, label %if.end212.1.2
if.then153.1.2: ; preds = %if.then119.1.2
%extractVec137.1.2 = shufflevector <4 x float> %606, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%612 = extractelement <4 x float> %605, i32 3
%613 = load i32, i32 addrspace(1)* %arrayidx154.1.3, align 4, !tbaa !41
%mul155.1.2 = mul nsw i32 %613, %ntypes
%add156.1.2 = add nsw i32 %mul155.1.2, %576
%mul157.1.2 = shl nsw i32 %add156.1.2, 1
%614 = sext i32 %mul157.1.2 to i64
%arrayidx158.1.2 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %614
%615 = load float, float addrspace(2)* %arrayidx158.1.2, align 4, !tbaa !39
%add162.1.2 = or i32 %mul157.1.2, 1
%616 = sext i32 %add162.1.2 to i64
%arrayidx163.1.2 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %616
%617 = load float, float addrspace(2)* %arrayidx163.1.2, align 4, !tbaa !39
%sub164.1.2 = fsub float 1.000000e+00, %cond.1.2
%618 = tail call float @llvm.fmuladd.f32(float %sub164.1.2, float 0x3D71979980000000, float %611)
%cmp.i.i.1.2 = fcmp olt float %618, 0.000000e+00
%call.i.i.1.2 = tail call float @llvm.sqrt.f32(float %618) #6
%call.i.i.op.1.2 = fdiv float 1.000000e+00, %call.i.i.1.2
%div167.1.2 = select i1 %cmp.i.i.1.2, float 0x7FF8000000000000, float %call.i.i.op.1.2
%mul168.1.2 = fmul float %div167.1.2, %div167.1.2
%mul169.1.2 = fmul float %mul168.1.2, %mul168.1.2
%mul170.1.2 = fmul float %mul168.1.2, %mul169.1.2
%mul171.1.2 = fmul float %cond.1.2, %mul170.1.2
%neg.1.2 = fsub float -0.000000e+00, %615
%619 = tail call float @llvm.fmuladd.f32(float %617, float %mul171.1.2, float %neg.1.2)
%mul173.1.2 = fmul float %mul171.1.2, %619
%mul174.1.2 = fmul float %mul168.1.2, %mul173.1.2
%cmp175.1.2 = fcmp olt float %618, %nbparam_params_rvdw_sq
%cond177.1.2 = select i1 %cmp175.1.2, float 1.000000e+00, float 0.000000e+00
%mul178.1.2 = fmul float %cond177.1.2, %mul174.1.2
%mul179.1.2 = fmul float %575, %612
%mul180.1.2 = fmul float %cond.1.2, %mul168.1.2
%mul182.1.2 = fmul float %mul, %618
%mul.i.1.2 = fmul float %mul182.1.2, %mul182.1.2
%620 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.1.2, float 0x3FBDA79640000000) #5
%621 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.1.2, float 0x3FE03C5780000000) #5
%622 = tail call float @llvm.fmuladd.f32(float %620, float %mul.i.1.2, float 1.000000e+00) #5
%623 = tail call float @llvm.fmuladd.f32(float %621, float %mul182.1.2, float %622) #5
%div.i.1.2 = fdiv float 1.000000e+00, %623, !fpmath !46
%624 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.1.2, float 0xBF0BFF7260000000) #5
%625 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.1.2, float 0x3F50794180000000) #5
%626 = tail call float @llvm.fmuladd.f32(float %624, float %mul.i.1.2, float 0xBF93BDB200000000) #5
%627 = tail call float @llvm.fmuladd.f32(float %625, float %mul.i.1.2, float 0x3FB1D5E760000000) #5
%628 = tail call float @llvm.fmuladd.f32(float %626, float %mul.i.1.2, float 0xBFE81272E0000000) #5
%629 = tail call float @llvm.fmuladd.f32(float %627, float %mul182.1.2, float %628) #5
%mul11.i.1.2 = fmul float %629, %div.i.1.2
%mul184.1.2 = fmul float %mul21, %mul11.i.1.2
%630 = tail call float @llvm.fmuladd.f32(float %mul180.1.2, float %div167.1.2, float %mul184.1.2)
%631 = tail call float @llvm.fmuladd.f32(float %mul179.1.2, float %630, float %mul178.1.2)
%splat.splatinsert.1.2 = insertelement <3 x float> undef, float %631, i32 0
%splat.splat.1.2 = shufflevector <3 x float> %splat.splatinsert.1.2, <3 x float> undef, <3 x i32> zeroinitializer
%mul189.1.2 = fmul <3 x float> %extractVec137.1.2, %splat.splat.1.2
%extractVec197.1.2 = shufflevector <4 x float> %fcj_buf.sroa.0.1.2618, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub198.1.2 = fsub <3 x float> %extractVec197.1.2, %mul189.1.2
%extractVec199.1.2 = shufflevector <3 x float> %sub198.1.2, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec207.1.2 = shufflevector <4 x float> %loadVec4206.1.2, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add208.1.2 = fadd <3 x float> %extractVec207.1.2, %mul189.1.2
%extractVec209.1.2 = shufflevector <3 x float> %add208.1.2, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end212.1.2
if.end212.1.2: ; preds = %if.then153.1.2, %if.then119.1.2, %if.end212.2620
%632 = phi <3 x float> [ %add208.1.2, %if.then153.1.2 ], [ %570, %if.then119.1.2 ], [ %570, %if.end212.2620 ]
%loadVec4206.1694 = phi <4 x float> [ %extractVec209.1.2, %if.then153.1.2 ], [ %loadVec4206.1.2, %if.then119.1.2 ], [ %loadVec4206.1.2, %if.end212.2620 ]
%fcj_buf.sroa.0.1.1.2 = phi <4 x float> [ %extractVec199.1.2, %if.then153.1.2 ], [ %fcj_buf.sroa.0.1.2618, %if.then119.1.2 ], [ %fcj_buf.sroa.0.1.2618, %if.end212.2620 ]
%and117.2.2 = and i32 %45, 262144
%tobool118.2.2 = icmp eq i32 %and117.2.2, 0
br i1 %tobool118.2.2, label %if.end212.2.2, label %if.then119.2.2
if.then119.2.2: ; preds = %if.end212.1.2
%633 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx126.2.3, align 16, !tbaa !36
%634 = fsub <4 x float> %633, %574
%635 = extractelement <4 x float> %634, i32 0
%636 = extractelement <4 x float> %634, i32 1
%mul3.i.i.2.2 = fmul float %636, %636
%637 = tail call float @llvm.fmuladd.f32(float %635, float %635, float %mul3.i.i.2.2) #5
%638 = extractelement <4 x float> %634, i32 2
%639 = tail call float @llvm.fmuladd.f32(float %638, float %638, float %637) #5
%and139.2.2 = and i32 %47, 262144
%tobool140.2.2 = icmp ne i32 %and139.2.2, 0
%cond.2.2 = select i1 %tobool140.2.2, float 1.000000e+00, float 0.000000e+00
%notrhs.2.2 = icmp ne i32 %32, %572
%not.or.cond.2.2 = or i1 %notlhs, %notrhs.2.2
%cmp147..2.2 = or i1 %cmp147, %not.or.cond.2.2
%conv149.2.2 = uitofp i1 %cmp147..2.2 to float
%mul150.2.2 = fmul float %conv149.2.2, %nbparam_params_rcoulomb_sq
%cmp151.2.2 = fcmp olt float %639, %mul150.2.2
br i1 %cmp151.2.2, label %if.then153.2.2, label %if.end212.2.2
if.then153.2.2: ; preds = %if.then119.2.2
%extractVec137.2.2 = shufflevector <4 x float> %634, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%640 = extractelement <4 x float> %633, i32 3
%641 = load i32, i32 addrspace(1)* %arrayidx154.2.3, align 4, !tbaa !41
%mul155.2.2 = mul nsw i32 %641, %ntypes
%add156.2.2 = add nsw i32 %mul155.2.2, %576
%mul157.2.2 = shl nsw i32 %add156.2.2, 1
%642 = sext i32 %mul157.2.2 to i64
%arrayidx158.2.2 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %642
%643 = load float, float addrspace(2)* %arrayidx158.2.2, align 4, !tbaa !39
%add162.2.2 = or i32 %mul157.2.2, 1
%644 = sext i32 %add162.2.2 to i64
%arrayidx163.2.2 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %644
%645 = load float, float addrspace(2)* %arrayidx163.2.2, align 4, !tbaa !39
%sub164.2.2 = fsub float 1.000000e+00, %cond.2.2
%646 = tail call float @llvm.fmuladd.f32(float %sub164.2.2, float 0x3D71979980000000, float %639)
%cmp.i.i.2.2 = fcmp olt float %646, 0.000000e+00
%call.i.i.2.2 = tail call float @llvm.sqrt.f32(float %646) #6
%call.i.i.op.2.2 = fdiv float 1.000000e+00, %call.i.i.2.2
%div167.2.2 = select i1 %cmp.i.i.2.2, float 0x7FF8000000000000, float %call.i.i.op.2.2
%mul168.2.2 = fmul float %div167.2.2, %div167.2.2
%mul169.2.2 = fmul float %mul168.2.2, %mul168.2.2
%mul170.2.2 = fmul float %mul168.2.2, %mul169.2.2
%mul171.2.2 = fmul float %cond.2.2, %mul170.2.2
%neg.2.2 = fsub float -0.000000e+00, %643
%647 = tail call float @llvm.fmuladd.f32(float %645, float %mul171.2.2, float %neg.2.2)
%mul173.2.2 = fmul float %mul171.2.2, %647
%mul174.2.2 = fmul float %mul168.2.2, %mul173.2.2
%cmp175.2.2 = fcmp olt float %646, %nbparam_params_rvdw_sq
%cond177.2.2 = select i1 %cmp175.2.2, float 1.000000e+00, float 0.000000e+00
%mul178.2.2 = fmul float %cond177.2.2, %mul174.2.2
%mul179.2.2 = fmul float %575, %640
%mul180.2.2 = fmul float %cond.2.2, %mul168.2.2
%mul182.2.2 = fmul float %mul, %646
%mul.i.2.2 = fmul float %mul182.2.2, %mul182.2.2
%648 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.2.2, float 0x3FBDA79640000000) #5
%649 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.2.2, float 0x3FE03C5780000000) #5
%650 = tail call float @llvm.fmuladd.f32(float %648, float %mul.i.2.2, float 1.000000e+00) #5
%651 = tail call float @llvm.fmuladd.f32(float %649, float %mul182.2.2, float %650) #5
%div.i.2.2 = fdiv float 1.000000e+00, %651, !fpmath !46
%652 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.2.2, float 0xBF0BFF7260000000) #5
%653 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.2.2, float 0x3F50794180000000) #5
%654 = tail call float @llvm.fmuladd.f32(float %652, float %mul.i.2.2, float 0xBF93BDB200000000) #5
%655 = tail call float @llvm.fmuladd.f32(float %653, float %mul.i.2.2, float 0x3FB1D5E760000000) #5
%656 = tail call float @llvm.fmuladd.f32(float %654, float %mul.i.2.2, float 0xBFE81272E0000000) #5
%657 = tail call float @llvm.fmuladd.f32(float %655, float %mul182.2.2, float %656) #5
%mul11.i.2.2 = fmul float %657, %div.i.2.2
%mul184.2.2 = fmul float %mul21, %mul11.i.2.2
%658 = tail call float @llvm.fmuladd.f32(float %mul180.2.2, float %div167.2.2, float %mul184.2.2)
%659 = tail call float @llvm.fmuladd.f32(float %mul179.2.2, float %658, float %mul178.2.2)
%splat.splatinsert.2.2 = insertelement <3 x float> undef, float %659, i32 0
%splat.splat.2.2 = shufflevector <3 x float> %splat.splatinsert.2.2, <3 x float> undef, <3 x i32> zeroinitializer
%mul189.2.2 = fmul <3 x float> %extractVec137.2.2, %splat.splat.2.2
%extractVec197.2.2 = shufflevector <4 x float> %fcj_buf.sroa.0.1.1.2, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub198.2.2 = fsub <3 x float> %extractVec197.2.2, %mul189.2.2
%extractVec199.2.2 = shufflevector <3 x float> %sub198.2.2, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec207.2.2 = shufflevector <4 x float> %loadVec4206.2.2, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add208.2.2 = fadd <3 x float> %extractVec207.2.2, %mul189.2.2
%extractVec209.2.2 = shufflevector <3 x float> %add208.2.2, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end212.2.2
if.end212.2.2: ; preds = %if.then153.2.2, %if.then119.2.2, %if.end212.1.2
%660 = phi <3 x float> [ %add208.2.2, %if.then153.2.2 ], [ %569, %if.then119.2.2 ], [ %569, %if.end212.1.2 ]
%loadVec4206.2704 = phi <4 x float> [ %extractVec209.2.2, %if.then153.2.2 ], [ %loadVec4206.2.2, %if.then119.2.2 ], [ %loadVec4206.2.2, %if.end212.1.2 ]
%fcj_buf.sroa.0.1.2.2 = phi <4 x float> [ %extractVec199.2.2, %if.then153.2.2 ], [ %fcj_buf.sroa.0.1.1.2, %if.then119.2.2 ], [ %fcj_buf.sroa.0.1.1.2, %if.end212.1.2 ]
%and117.3.2 = and i32 %45, 524288
%tobool118.3.2 = icmp eq i32 %and117.3.2, 0
br i1 %tobool118.3.2, label %if.end212.3.2, label %if.then119.3.2
if.then119.3.2: ; preds = %if.end212.2.2
%661 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx126.3.3, align 16, !tbaa !36
%662 = fsub <4 x float> %661, %574
%663 = extractelement <4 x float> %662, i32 0
%664 = extractelement <4 x float> %662, i32 1
%mul3.i.i.3.2 = fmul float %664, %664
%665 = tail call float @llvm.fmuladd.f32(float %663, float %663, float %mul3.i.i.3.2) #5
%666 = extractelement <4 x float> %662, i32 2
%667 = tail call float @llvm.fmuladd.f32(float %666, float %666, float %665) #5
%and139.3.2 = and i32 %47, 524288
%tobool140.3.2 = icmp ne i32 %and139.3.2, 0
%cond.3.2 = select i1 %tobool140.3.2, float 1.000000e+00, float 0.000000e+00
%notrhs.3.2 = icmp ne i32 %30, %572
%not.or.cond.3.2 = or i1 %notlhs, %notrhs.3.2
%cmp147..3.2 = or i1 %cmp147, %not.or.cond.3.2
%conv149.3.2 = uitofp i1 %cmp147..3.2 to float
%mul150.3.2 = fmul float %conv149.3.2, %nbparam_params_rcoulomb_sq
%cmp151.3.2 = fcmp olt float %667, %mul150.3.2
br i1 %cmp151.3.2, label %if.then153.3.2, label %if.end212.3.2
if.then153.3.2: ; preds = %if.then119.3.2
%extractVec137.3.2 = shufflevector <4 x float> %662, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%668 = extractelement <4 x float> %661, i32 3
%669 = load i32, i32 addrspace(1)* %arrayidx154.3.3, align 4, !tbaa !41
%mul155.3.2 = mul nsw i32 %669, %ntypes
%add156.3.2 = add nsw i32 %mul155.3.2, %576
%mul157.3.2 = shl nsw i32 %add156.3.2, 1
%670 = sext i32 %mul157.3.2 to i64
%arrayidx158.3.2 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %670
%671 = load float, float addrspace(2)* %arrayidx158.3.2, align 4, !tbaa !39
%add162.3.2 = or i32 %mul157.3.2, 1
%672 = sext i32 %add162.3.2 to i64
%arrayidx163.3.2 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %672
%673 = load float, float addrspace(2)* %arrayidx163.3.2, align 4, !tbaa !39
%sub164.3.2 = fsub float 1.000000e+00, %cond.3.2
%674 = tail call float @llvm.fmuladd.f32(float %sub164.3.2, float 0x3D71979980000000, float %667)
%cmp.i.i.3.2 = fcmp olt float %674, 0.000000e+00
%call.i.i.3.2 = tail call float @llvm.sqrt.f32(float %674) #6
%call.i.i.op.3.2 = fdiv float 1.000000e+00, %call.i.i.3.2
%div167.3.2 = select i1 %cmp.i.i.3.2, float 0x7FF8000000000000, float %call.i.i.op.3.2
%mul168.3.2 = fmul float %div167.3.2, %div167.3.2
%mul169.3.2 = fmul float %mul168.3.2, %mul168.3.2
%mul170.3.2 = fmul float %mul168.3.2, %mul169.3.2
%mul171.3.2 = fmul float %cond.3.2, %mul170.3.2
%neg.3.2 = fsub float -0.000000e+00, %671
%675 = tail call float @llvm.fmuladd.f32(float %673, float %mul171.3.2, float %neg.3.2)
%mul173.3.2 = fmul float %mul171.3.2, %675
%mul174.3.2 = fmul float %mul168.3.2, %mul173.3.2
%cmp175.3.2 = fcmp olt float %674, %nbparam_params_rvdw_sq
%cond177.3.2 = select i1 %cmp175.3.2, float 1.000000e+00, float 0.000000e+00
%mul178.3.2 = fmul float %cond177.3.2, %mul174.3.2
%mul179.3.2 = fmul float %575, %668
%mul180.3.2 = fmul float %cond.3.2, %mul168.3.2
%mul182.3.2 = fmul float %mul, %674
%mul.i.3.2 = fmul float %mul182.3.2, %mul182.3.2
%676 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.3.2, float 0x3FBDA79640000000) #5
%677 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.3.2, float 0x3FE03C5780000000) #5
%678 = tail call float @llvm.fmuladd.f32(float %676, float %mul.i.3.2, float 1.000000e+00) #5
%679 = tail call float @llvm.fmuladd.f32(float %677, float %mul182.3.2, float %678) #5
%div.i.3.2 = fdiv float 1.000000e+00, %679, !fpmath !46
%680 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.3.2, float 0xBF0BFF7260000000) #5
%681 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.3.2, float 0x3F50794180000000) #5
%682 = tail call float @llvm.fmuladd.f32(float %680, float %mul.i.3.2, float 0xBF93BDB200000000) #5
%683 = tail call float @llvm.fmuladd.f32(float %681, float %mul.i.3.2, float 0x3FB1D5E760000000) #5
%684 = tail call float @llvm.fmuladd.f32(float %682, float %mul.i.3.2, float 0xBFE81272E0000000) #5
%685 = tail call float @llvm.fmuladd.f32(float %683, float %mul182.3.2, float %684) #5
%mul11.i.3.2 = fmul float %685, %div.i.3.2
%mul184.3.2 = fmul float %mul21, %mul11.i.3.2
%686 = tail call float @llvm.fmuladd.f32(float %mul180.3.2, float %div167.3.2, float %mul184.3.2)
%687 = tail call float @llvm.fmuladd.f32(float %mul179.3.2, float %686, float %mul178.3.2)
%splat.splatinsert.3.2 = insertelement <3 x float> undef, float %687, i32 0
%splat.splat.3.2 = shufflevector <3 x float> %splat.splatinsert.3.2, <3 x float> undef, <3 x i32> zeroinitializer
%mul189.3.2 = fmul <3 x float> %extractVec137.3.2, %splat.splat.3.2
%extractVec197.3.2 = shufflevector <4 x float> %fcj_buf.sroa.0.1.2.2, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub198.3.2 = fsub <3 x float> %extractVec197.3.2, %mul189.3.2
%extractVec199.3.2 = shufflevector <3 x float> %sub198.3.2, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec207.3.2 = shufflevector <4 x float> %loadVec4206.3.2, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add208.3.2 = fadd <3 x float> %extractVec207.3.2, %mul189.3.2
%extractVec209.3.2 = shufflevector <3 x float> %add208.3.2, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end212.3.2
if.end212.3.2: ; preds = %if.then153.3.2, %if.then119.3.2, %if.end212.2.2
%688 = phi <3 x float> [ %add208.3.2, %if.then153.3.2 ], [ %568, %if.then119.3.2 ], [ %568, %if.end212.2.2 ]
%loadVec4206.3714 = phi <4 x float> [ %extractVec209.3.2, %if.then153.3.2 ], [ %loadVec4206.3.2, %if.then119.3.2 ], [ %loadVec4206.3.2, %if.end212.2.2 ]
%fcj_buf.sroa.0.1.3.2 = phi <4 x float> [ %extractVec199.3.2, %if.then153.3.2 ], [ %fcj_buf.sroa.0.1.2.2, %if.then119.3.2 ], [ %fcj_buf.sroa.0.1.2.2, %if.end212.2.2 ]
%and117.4.2 = and i32 %45, 1048576
%tobool118.4.2 = icmp eq i32 %and117.4.2, 0
br i1 %tobool118.4.2, label %if.end212.4.2, label %if.then119.4.2
if.then119.4.2: ; preds = %if.end212.3.2
%689 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx126.4.3, align 16, !tbaa !36
%690 = fsub <4 x float> %689, %574
%691 = extractelement <4 x float> %690, i32 0
%692 = extractelement <4 x float> %690, i32 1
%mul3.i.i.4.2 = fmul float %692, %692
%693 = tail call float @llvm.fmuladd.f32(float %691, float %691, float %mul3.i.i.4.2) #5
%694 = extractelement <4 x float> %690, i32 2
%695 = tail call float @llvm.fmuladd.f32(float %694, float %694, float %693) #5
%and139.4.2 = and i32 %47, 1048576
%tobool140.4.2 = icmp ne i32 %and139.4.2, 0
%cond.4.2 = select i1 %tobool140.4.2, float 1.000000e+00, float 0.000000e+00
%notrhs.4.2 = icmp ne i32 %28, %572
%not.or.cond.4.2 = or i1 %notlhs, %notrhs.4.2
%cmp147..4.2 = or i1 %cmp147, %not.or.cond.4.2
%conv149.4.2 = uitofp i1 %cmp147..4.2 to float
%mul150.4.2 = fmul float %conv149.4.2, %nbparam_params_rcoulomb_sq
%cmp151.4.2 = fcmp olt float %695, %mul150.4.2
br i1 %cmp151.4.2, label %if.then153.4.2, label %if.end212.4.2
if.then153.4.2: ; preds = %if.then119.4.2
%extractVec137.4.2 = shufflevector <4 x float> %690, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%696 = extractelement <4 x float> %689, i32 3
%697 = load i32, i32 addrspace(1)* %arrayidx154.4.3, align 4, !tbaa !41
%mul155.4.2 = mul nsw i32 %697, %ntypes
%add156.4.2 = add nsw i32 %mul155.4.2, %576
%mul157.4.2 = shl nsw i32 %add156.4.2, 1
%698 = sext i32 %mul157.4.2 to i64
%arrayidx158.4.2 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %698
%699 = load float, float addrspace(2)* %arrayidx158.4.2, align 4, !tbaa !39
%add162.4.2 = or i32 %mul157.4.2, 1
%700 = sext i32 %add162.4.2 to i64
%arrayidx163.4.2 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %700
%701 = load float, float addrspace(2)* %arrayidx163.4.2, align 4, !tbaa !39
%sub164.4.2 = fsub float 1.000000e+00, %cond.4.2
%702 = tail call float @llvm.fmuladd.f32(float %sub164.4.2, float 0x3D71979980000000, float %695)
%cmp.i.i.4.2 = fcmp olt float %702, 0.000000e+00
%call.i.i.4.2 = tail call float @llvm.sqrt.f32(float %702) #6
%call.i.i.op.4.2 = fdiv float 1.000000e+00, %call.i.i.4.2
%div167.4.2 = select i1 %cmp.i.i.4.2, float 0x7FF8000000000000, float %call.i.i.op.4.2
%mul168.4.2 = fmul float %div167.4.2, %div167.4.2
%mul169.4.2 = fmul float %mul168.4.2, %mul168.4.2
%mul170.4.2 = fmul float %mul168.4.2, %mul169.4.2
%mul171.4.2 = fmul float %cond.4.2, %mul170.4.2
%neg.4.2 = fsub float -0.000000e+00, %699
%703 = tail call float @llvm.fmuladd.f32(float %701, float %mul171.4.2, float %neg.4.2)
%mul173.4.2 = fmul float %mul171.4.2, %703
%mul174.4.2 = fmul float %mul168.4.2, %mul173.4.2
%cmp175.4.2 = fcmp olt float %702, %nbparam_params_rvdw_sq
%cond177.4.2 = select i1 %cmp175.4.2, float 1.000000e+00, float 0.000000e+00
%mul178.4.2 = fmul float %cond177.4.2, %mul174.4.2
%mul179.4.2 = fmul float %575, %696
%mul180.4.2 = fmul float %cond.4.2, %mul168.4.2
%mul182.4.2 = fmul float %mul, %702
%mul.i.4.2 = fmul float %mul182.4.2, %mul182.4.2
%704 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.4.2, float 0x3FBDA79640000000) #5
%705 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.4.2, float 0x3FE03C5780000000) #5
%706 = tail call float @llvm.fmuladd.f32(float %704, float %mul.i.4.2, float 1.000000e+00) #5
%707 = tail call float @llvm.fmuladd.f32(float %705, float %mul182.4.2, float %706) #5
%div.i.4.2 = fdiv float 1.000000e+00, %707, !fpmath !46
%708 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.4.2, float 0xBF0BFF7260000000) #5
%709 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.4.2, float 0x3F50794180000000) #5
%710 = tail call float @llvm.fmuladd.f32(float %708, float %mul.i.4.2, float 0xBF93BDB200000000) #5
%711 = tail call float @llvm.fmuladd.f32(float %709, float %mul.i.4.2, float 0x3FB1D5E760000000) #5
%712 = tail call float @llvm.fmuladd.f32(float %710, float %mul.i.4.2, float 0xBFE81272E0000000) #5
%713 = tail call float @llvm.fmuladd.f32(float %711, float %mul182.4.2, float %712) #5
%mul11.i.4.2 = fmul float %713, %div.i.4.2
%mul184.4.2 = fmul float %mul21, %mul11.i.4.2
%714 = tail call float @llvm.fmuladd.f32(float %mul180.4.2, float %div167.4.2, float %mul184.4.2)
%715 = tail call float @llvm.fmuladd.f32(float %mul179.4.2, float %714, float %mul178.4.2)
%splat.splatinsert.4.2 = insertelement <3 x float> undef, float %715, i32 0
%splat.splat.4.2 = shufflevector <3 x float> %splat.splatinsert.4.2, <3 x float> undef, <3 x i32> zeroinitializer
%mul189.4.2 = fmul <3 x float> %extractVec137.4.2, %splat.splat.4.2
%extractVec197.4.2 = shufflevector <4 x float> %fcj_buf.sroa.0.1.3.2, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub198.4.2 = fsub <3 x float> %extractVec197.4.2, %mul189.4.2
%extractVec199.4.2 = shufflevector <3 x float> %sub198.4.2, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec207.4.2 = shufflevector <4 x float> %loadVec4206.4.2, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add208.4.2 = fadd <3 x float> %extractVec207.4.2, %mul189.4.2
%extractVec209.4.2 = shufflevector <3 x float> %add208.4.2, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end212.4.2
if.end212.4.2: ; preds = %if.then153.4.2, %if.then119.4.2, %if.end212.3.2
%716 = phi <3 x float> [ %add208.4.2, %if.then153.4.2 ], [ %567, %if.then119.4.2 ], [ %567, %if.end212.3.2 ]
%loadVec4206.4724 = phi <4 x float> [ %extractVec209.4.2, %if.then153.4.2 ], [ %loadVec4206.4.2, %if.then119.4.2 ], [ %loadVec4206.4.2, %if.end212.3.2 ]
%fcj_buf.sroa.0.1.4.2 = phi <4 x float> [ %extractVec199.4.2, %if.then153.4.2 ], [ %fcj_buf.sroa.0.1.3.2, %if.then119.4.2 ], [ %fcj_buf.sroa.0.1.3.2, %if.end212.3.2 ]
%and117.5.2 = and i32 %45, 2097152
%tobool118.5.2 = icmp eq i32 %and117.5.2, 0
br i1 %tobool118.5.2, label %if.end212.5.2, label %if.then119.5.2
if.then119.5.2: ; preds = %if.end212.4.2
%717 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx126.5.3, align 16, !tbaa !36
%718 = fsub <4 x float> %717, %574
%719 = extractelement <4 x float> %718, i32 0
%720 = extractelement <4 x float> %718, i32 1
%mul3.i.i.5.2 = fmul float %720, %720
%721 = tail call float @llvm.fmuladd.f32(float %719, float %719, float %mul3.i.i.5.2) #5
%722 = extractelement <4 x float> %718, i32 2
%723 = tail call float @llvm.fmuladd.f32(float %722, float %722, float %721) #5
%and139.5.2 = and i32 %47, 2097152
%tobool140.5.2 = icmp ne i32 %and139.5.2, 0
%cond.5.2 = select i1 %tobool140.5.2, float 1.000000e+00, float 0.000000e+00
%notrhs.5.2 = icmp ne i32 %26, %572
%not.or.cond.5.2 = or i1 %notlhs, %notrhs.5.2
%cmp147..5.2 = or i1 %cmp147, %not.or.cond.5.2
%conv149.5.2 = uitofp i1 %cmp147..5.2 to float
%mul150.5.2 = fmul float %conv149.5.2, %nbparam_params_rcoulomb_sq
%cmp151.5.2 = fcmp olt float %723, %mul150.5.2
br i1 %cmp151.5.2, label %if.then153.5.2, label %if.end212.5.2
if.then153.5.2: ; preds = %if.then119.5.2
%extractVec137.5.2 = shufflevector <4 x float> %718, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%724 = extractelement <4 x float> %717, i32 3
%725 = load i32, i32 addrspace(1)* %arrayidx154.5.3, align 4, !tbaa !41
%mul155.5.2 = mul nsw i32 %725, %ntypes
%add156.5.2 = add nsw i32 %mul155.5.2, %576
%mul157.5.2 = shl nsw i32 %add156.5.2, 1
%726 = sext i32 %mul157.5.2 to i64
%arrayidx158.5.2 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %726
%727 = load float, float addrspace(2)* %arrayidx158.5.2, align 4, !tbaa !39
%add162.5.2 = or i32 %mul157.5.2, 1
%728 = sext i32 %add162.5.2 to i64
%arrayidx163.5.2 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %728
%729 = load float, float addrspace(2)* %arrayidx163.5.2, align 4, !tbaa !39
%sub164.5.2 = fsub float 1.000000e+00, %cond.5.2
%730 = tail call float @llvm.fmuladd.f32(float %sub164.5.2, float 0x3D71979980000000, float %723)
%cmp.i.i.5.2 = fcmp olt float %730, 0.000000e+00
%call.i.i.5.2 = tail call float @llvm.sqrt.f32(float %730) #6
%call.i.i.op.5.2 = fdiv float 1.000000e+00, %call.i.i.5.2
%div167.5.2 = select i1 %cmp.i.i.5.2, float 0x7FF8000000000000, float %call.i.i.op.5.2
%mul168.5.2 = fmul float %div167.5.2, %div167.5.2
%mul169.5.2 = fmul float %mul168.5.2, %mul168.5.2
%mul170.5.2 = fmul float %mul168.5.2, %mul169.5.2
%mul171.5.2 = fmul float %cond.5.2, %mul170.5.2
%neg.5.2 = fsub float -0.000000e+00, %727
%731 = tail call float @llvm.fmuladd.f32(float %729, float %mul171.5.2, float %neg.5.2)
%mul173.5.2 = fmul float %mul171.5.2, %731
%mul174.5.2 = fmul float %mul168.5.2, %mul173.5.2
%cmp175.5.2 = fcmp olt float %730, %nbparam_params_rvdw_sq
%cond177.5.2 = select i1 %cmp175.5.2, float 1.000000e+00, float 0.000000e+00
%mul178.5.2 = fmul float %cond177.5.2, %mul174.5.2
%mul179.5.2 = fmul float %575, %724
%mul180.5.2 = fmul float %cond.5.2, %mul168.5.2
%mul182.5.2 = fmul float %mul, %730
%mul.i.5.2 = fmul float %mul182.5.2, %mul182.5.2
%732 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.5.2, float 0x3FBDA79640000000) #5
%733 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.5.2, float 0x3FE03C5780000000) #5
%734 = tail call float @llvm.fmuladd.f32(float %732, float %mul.i.5.2, float 1.000000e+00) #5
%735 = tail call float @llvm.fmuladd.f32(float %733, float %mul182.5.2, float %734) #5
%div.i.5.2 = fdiv float 1.000000e+00, %735, !fpmath !46
%736 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.5.2, float 0xBF0BFF7260000000) #5
%737 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.5.2, float 0x3F50794180000000) #5
%738 = tail call float @llvm.fmuladd.f32(float %736, float %mul.i.5.2, float 0xBF93BDB200000000) #5
%739 = tail call float @llvm.fmuladd.f32(float %737, float %mul.i.5.2, float 0x3FB1D5E760000000) #5
%740 = tail call float @llvm.fmuladd.f32(float %738, float %mul.i.5.2, float 0xBFE81272E0000000) #5
%741 = tail call float @llvm.fmuladd.f32(float %739, float %mul182.5.2, float %740) #5
%mul11.i.5.2 = fmul float %741, %div.i.5.2
%mul184.5.2 = fmul float %mul21, %mul11.i.5.2
%742 = tail call float @llvm.fmuladd.f32(float %mul180.5.2, float %div167.5.2, float %mul184.5.2)
%743 = tail call float @llvm.fmuladd.f32(float %mul179.5.2, float %742, float %mul178.5.2)
%splat.splatinsert.5.2 = insertelement <3 x float> undef, float %743, i32 0
%splat.splat.5.2 = shufflevector <3 x float> %splat.splatinsert.5.2, <3 x float> undef, <3 x i32> zeroinitializer
%mul189.5.2 = fmul <3 x float> %extractVec137.5.2, %splat.splat.5.2
%extractVec197.5.2 = shufflevector <4 x float> %fcj_buf.sroa.0.1.4.2, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub198.5.2 = fsub <3 x float> %extractVec197.5.2, %mul189.5.2
%extractVec199.5.2 = shufflevector <3 x float> %sub198.5.2, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec207.5.2 = shufflevector <4 x float> %loadVec4206.5.2, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add208.5.2 = fadd <3 x float> %extractVec207.5.2, %mul189.5.2
%extractVec209.5.2 = shufflevector <3 x float> %add208.5.2, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end212.5.2
if.end212.5.2: ; preds = %if.then153.5.2, %if.then119.5.2, %if.end212.4.2
%744 = phi <3 x float> [ %add208.5.2, %if.then153.5.2 ], [ %566, %if.then119.5.2 ], [ %566, %if.end212.4.2 ]
%loadVec4206.5734 = phi <4 x float> [ %extractVec209.5.2, %if.then153.5.2 ], [ %loadVec4206.5.2, %if.then119.5.2 ], [ %loadVec4206.5.2, %if.end212.4.2 ]
%fcj_buf.sroa.0.1.5.2 = phi <4 x float> [ %extractVec199.5.2, %if.then153.5.2 ], [ %fcj_buf.sroa.0.1.4.2, %if.then119.5.2 ], [ %fcj_buf.sroa.0.1.4.2, %if.end212.4.2 ]
%and117.6.2 = and i32 %45, 4194304
%tobool118.6.2 = icmp eq i32 %and117.6.2, 0
br i1 %tobool118.6.2, label %if.end212.6.2, label %if.then119.6.2
if.then119.6.2: ; preds = %if.end212.5.2
%745 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx126.6.3, align 16, !tbaa !36
%746 = fsub <4 x float> %745, %574
%747 = extractelement <4 x float> %746, i32 0
%748 = extractelement <4 x float> %746, i32 1
%mul3.i.i.6.2 = fmul float %748, %748
%749 = tail call float @llvm.fmuladd.f32(float %747, float %747, float %mul3.i.i.6.2) #5
%750 = extractelement <4 x float> %746, i32 2
%751 = tail call float @llvm.fmuladd.f32(float %750, float %750, float %749) #5
%and139.6.2 = and i32 %47, 4194304
%tobool140.6.2 = icmp ne i32 %and139.6.2, 0
%cond.6.2 = select i1 %tobool140.6.2, float 1.000000e+00, float 0.000000e+00
%notrhs.6.2 = icmp ne i32 %24, %572
%not.or.cond.6.2 = or i1 %notlhs, %notrhs.6.2
%cmp147..6.2 = or i1 %cmp147, %not.or.cond.6.2
%conv149.6.2 = uitofp i1 %cmp147..6.2 to float
%mul150.6.2 = fmul float %conv149.6.2, %nbparam_params_rcoulomb_sq
%cmp151.6.2 = fcmp olt float %751, %mul150.6.2
br i1 %cmp151.6.2, label %if.then153.6.2, label %if.end212.6.2
if.then153.6.2: ; preds = %if.then119.6.2
%extractVec137.6.2 = shufflevector <4 x float> %746, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%752 = extractelement <4 x float> %745, i32 3
%753 = load i32, i32 addrspace(1)* %arrayidx154.6.3, align 4, !tbaa !41
%mul155.6.2 = mul nsw i32 %753, %ntypes
%add156.6.2 = add nsw i32 %mul155.6.2, %576
%mul157.6.2 = shl nsw i32 %add156.6.2, 1
%754 = sext i32 %mul157.6.2 to i64
%arrayidx158.6.2 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %754
%755 = load float, float addrspace(2)* %arrayidx158.6.2, align 4, !tbaa !39
%add162.6.2 = or i32 %mul157.6.2, 1
%756 = sext i32 %add162.6.2 to i64
%arrayidx163.6.2 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %756
%757 = load float, float addrspace(2)* %arrayidx163.6.2, align 4, !tbaa !39
%sub164.6.2 = fsub float 1.000000e+00, %cond.6.2
%758 = tail call float @llvm.fmuladd.f32(float %sub164.6.2, float 0x3D71979980000000, float %751)
%cmp.i.i.6.2 = fcmp olt float %758, 0.000000e+00
%call.i.i.6.2 = tail call float @llvm.sqrt.f32(float %758) #6
%call.i.i.op.6.2 = fdiv float 1.000000e+00, %call.i.i.6.2
%div167.6.2 = select i1 %cmp.i.i.6.2, float 0x7FF8000000000000, float %call.i.i.op.6.2
%mul168.6.2 = fmul float %div167.6.2, %div167.6.2
%mul169.6.2 = fmul float %mul168.6.2, %mul168.6.2
%mul170.6.2 = fmul float %mul168.6.2, %mul169.6.2
%mul171.6.2 = fmul float %cond.6.2, %mul170.6.2
%neg.6.2 = fsub float -0.000000e+00, %755
%759 = tail call float @llvm.fmuladd.f32(float %757, float %mul171.6.2, float %neg.6.2)
%mul173.6.2 = fmul float %mul171.6.2, %759
%mul174.6.2 = fmul float %mul168.6.2, %mul173.6.2
%cmp175.6.2 = fcmp olt float %758, %nbparam_params_rvdw_sq
%cond177.6.2 = select i1 %cmp175.6.2, float 1.000000e+00, float 0.000000e+00
%mul178.6.2 = fmul float %cond177.6.2, %mul174.6.2
%mul179.6.2 = fmul float %575, %752
%mul180.6.2 = fmul float %cond.6.2, %mul168.6.2
%mul182.6.2 = fmul float %mul, %758
%mul.i.6.2 = fmul float %mul182.6.2, %mul182.6.2
%760 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.6.2, float 0x3FBDA79640000000) #5
%761 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.6.2, float 0x3FE03C5780000000) #5
%762 = tail call float @llvm.fmuladd.f32(float %760, float %mul.i.6.2, float 1.000000e+00) #5
%763 = tail call float @llvm.fmuladd.f32(float %761, float %mul182.6.2, float %762) #5
%div.i.6.2 = fdiv float 1.000000e+00, %763, !fpmath !46
%764 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.6.2, float 0xBF0BFF7260000000) #5
%765 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.6.2, float 0x3F50794180000000) #5
%766 = tail call float @llvm.fmuladd.f32(float %764, float %mul.i.6.2, float 0xBF93BDB200000000) #5
%767 = tail call float @llvm.fmuladd.f32(float %765, float %mul.i.6.2, float 0x3FB1D5E760000000) #5
%768 = tail call float @llvm.fmuladd.f32(float %766, float %mul.i.6.2, float 0xBFE81272E0000000) #5
%769 = tail call float @llvm.fmuladd.f32(float %767, float %mul182.6.2, float %768) #5
%mul11.i.6.2 = fmul float %769, %div.i.6.2
%mul184.6.2 = fmul float %mul21, %mul11.i.6.2
%770 = tail call float @llvm.fmuladd.f32(float %mul180.6.2, float %div167.6.2, float %mul184.6.2)
%771 = tail call float @llvm.fmuladd.f32(float %mul179.6.2, float %770, float %mul178.6.2)
%splat.splatinsert.6.2 = insertelement <3 x float> undef, float %771, i32 0
%splat.splat.6.2 = shufflevector <3 x float> %splat.splatinsert.6.2, <3 x float> undef, <3 x i32> zeroinitializer
%mul189.6.2 = fmul <3 x float> %extractVec137.6.2, %splat.splat.6.2
%extractVec197.6.2 = shufflevector <4 x float> %fcj_buf.sroa.0.1.5.2, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub198.6.2 = fsub <3 x float> %extractVec197.6.2, %mul189.6.2
%extractVec199.6.2 = shufflevector <3 x float> %sub198.6.2, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec207.6.2 = shufflevector <4 x float> %loadVec4206.6.2, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add208.6.2 = fadd <3 x float> %extractVec207.6.2, %mul189.6.2
%extractVec209.6.2 = shufflevector <3 x float> %add208.6.2, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end212.6.2
if.end212.6.2: ; preds = %if.then153.6.2, %if.then119.6.2, %if.end212.5.2
%772 = phi <3 x float> [ %add208.6.2, %if.then153.6.2 ], [ %565, %if.then119.6.2 ], [ %565, %if.end212.5.2 ]
%loadVec4206.6744 = phi <4 x float> [ %extractVec209.6.2, %if.then153.6.2 ], [ %loadVec4206.6.2, %if.then119.6.2 ], [ %loadVec4206.6.2, %if.end212.5.2 ]
%fcj_buf.sroa.0.1.6.2 = phi <4 x float> [ %extractVec199.6.2, %if.then153.6.2 ], [ %fcj_buf.sroa.0.1.5.2, %if.then119.6.2 ], [ %fcj_buf.sroa.0.1.5.2, %if.end212.5.2 ]
%and117.7.2 = and i32 %45, 8388608
%tobool118.7.2 = icmp eq i32 %and117.7.2, 0
br i1 %tobool118.7.2, label %if.end212.7.2, label %if.then119.7.2
if.then119.7.2: ; preds = %if.end212.6.2
%773 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx126.7.3, align 16, !tbaa !36
%774 = fsub <4 x float> %773, %574
%775 = extractelement <4 x float> %774, i32 0
%776 = extractelement <4 x float> %774, i32 1
%mul3.i.i.7.2 = fmul float %776, %776
%777 = tail call float @llvm.fmuladd.f32(float %775, float %775, float %mul3.i.i.7.2) #5
%778 = extractelement <4 x float> %774, i32 2
%779 = tail call float @llvm.fmuladd.f32(float %778, float %778, float %777) #5
%and139.7.2 = and i32 %47, 8388608
%tobool140.7.2 = icmp ne i32 %and139.7.2, 0
%cond.7.2 = select i1 %tobool140.7.2, float 1.000000e+00, float 0.000000e+00
%notrhs.7.2 = icmp ne i32 %22, %572
%not.or.cond.7.2 = or i1 %notlhs, %notrhs.7.2
%cmp147..7.2 = or i1 %cmp147, %not.or.cond.7.2
%conv149.7.2 = uitofp i1 %cmp147..7.2 to float
%mul150.7.2 = fmul float %conv149.7.2, %nbparam_params_rcoulomb_sq
%cmp151.7.2 = fcmp olt float %779, %mul150.7.2
br i1 %cmp151.7.2, label %if.then153.7.2, label %if.end212.7.2
if.then153.7.2: ; preds = %if.then119.7.2
%extractVec137.7.2 = shufflevector <4 x float> %774, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%780 = extractelement <4 x float> %773, i32 3
%781 = load i32, i32 addrspace(1)* %arrayidx154.7.3, align 4, !tbaa !41
%mul155.7.2 = mul nsw i32 %781, %ntypes
%add156.7.2 = add nsw i32 %mul155.7.2, %576
%mul157.7.2 = shl nsw i32 %add156.7.2, 1
%782 = sext i32 %mul157.7.2 to i64
%arrayidx158.7.2 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %782
%783 = load float, float addrspace(2)* %arrayidx158.7.2, align 4, !tbaa !39
%add162.7.2 = or i32 %mul157.7.2, 1
%784 = sext i32 %add162.7.2 to i64
%arrayidx163.7.2 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %784
%785 = load float, float addrspace(2)* %arrayidx163.7.2, align 4, !tbaa !39
%sub164.7.2 = fsub float 1.000000e+00, %cond.7.2
%786 = tail call float @llvm.fmuladd.f32(float %sub164.7.2, float 0x3D71979980000000, float %779)
%cmp.i.i.7.2 = fcmp olt float %786, 0.000000e+00
%call.i.i.7.2 = tail call float @llvm.sqrt.f32(float %786) #6
%call.i.i.op.7.2 = fdiv float 1.000000e+00, %call.i.i.7.2
%div167.7.2 = select i1 %cmp.i.i.7.2, float 0x7FF8000000000000, float %call.i.i.op.7.2
%mul168.7.2 = fmul float %div167.7.2, %div167.7.2
%mul169.7.2 = fmul float %mul168.7.2, %mul168.7.2
%mul170.7.2 = fmul float %mul168.7.2, %mul169.7.2
%mul171.7.2 = fmul float %cond.7.2, %mul170.7.2
%neg.7.2 = fsub float -0.000000e+00, %783
%787 = tail call float @llvm.fmuladd.f32(float %785, float %mul171.7.2, float %neg.7.2)
%mul173.7.2 = fmul float %mul171.7.2, %787
%mul174.7.2 = fmul float %mul168.7.2, %mul173.7.2
%cmp175.7.2 = fcmp olt float %786, %nbparam_params_rvdw_sq
%cond177.7.2 = select i1 %cmp175.7.2, float 1.000000e+00, float 0.000000e+00
%mul178.7.2 = fmul float %cond177.7.2, %mul174.7.2
%mul179.7.2 = fmul float %575, %780
%mul180.7.2 = fmul float %cond.7.2, %mul168.7.2
%mul182.7.2 = fmul float %mul, %786
%mul.i.7.2 = fmul float %mul182.7.2, %mul182.7.2
%788 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.7.2, float 0x3FBDA79640000000) #5
%789 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.7.2, float 0x3FE03C5780000000) #5
%790 = tail call float @llvm.fmuladd.f32(float %788, float %mul.i.7.2, float 1.000000e+00) #5
%791 = tail call float @llvm.fmuladd.f32(float %789, float %mul182.7.2, float %790) #5
%div.i.7.2 = fdiv float 1.000000e+00, %791, !fpmath !46
%792 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.7.2, float 0xBF0BFF7260000000) #5
%793 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.7.2, float 0x3F50794180000000) #5
%794 = tail call float @llvm.fmuladd.f32(float %792, float %mul.i.7.2, float 0xBF93BDB200000000) #5
%795 = tail call float @llvm.fmuladd.f32(float %793, float %mul.i.7.2, float 0x3FB1D5E760000000) #5
%796 = tail call float @llvm.fmuladd.f32(float %794, float %mul.i.7.2, float 0xBFE81272E0000000) #5
%797 = tail call float @llvm.fmuladd.f32(float %795, float %mul182.7.2, float %796) #5
%mul11.i.7.2 = fmul float %797, %div.i.7.2
%mul184.7.2 = fmul float %mul21, %mul11.i.7.2
%798 = tail call float @llvm.fmuladd.f32(float %mul180.7.2, float %div167.7.2, float %mul184.7.2)
%799 = tail call float @llvm.fmuladd.f32(float %mul179.7.2, float %798, float %mul178.7.2)
%splat.splatinsert.7.2 = insertelement <3 x float> undef, float %799, i32 0
%splat.splat.7.2 = shufflevector <3 x float> %splat.splatinsert.7.2, <3 x float> undef, <3 x i32> zeroinitializer
%mul189.7.2 = fmul <3 x float> %extractVec137.7.2, %splat.splat.7.2
%extractVec197.7.2 = shufflevector <4 x float> %fcj_buf.sroa.0.1.6.2, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub198.7.2 = fsub <3 x float> %extractVec197.7.2, %mul189.7.2
%extractVec199.7.2 = shufflevector <3 x float> %sub198.7.2, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec207.7.2 = shufflevector <4 x float> %loadVec4206.7.2, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add208.7.2 = fadd <3 x float> %extractVec207.7.2, %mul189.7.2
%extractVec209.7.2 = shufflevector <3 x float> %add208.7.2, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end212.7.2
if.end212.7.2: ; preds = %if.then153.7.2, %if.then119.7.2, %if.end212.6.2
%fci_buf.sroa.37.7 = phi <4 x float> [ %fci_buf.sroa.37.6, %if.end212.6.2 ], [ %extractVec209.7.2, %if.then153.7.2 ], [ %fci_buf.sroa.37.6, %if.then119.7.2 ]
%loadVec4206.7754 = phi <4 x float> [ %loadVec4206.7.2, %if.end212.6.2 ], [ %extractVec209.7.2, %if.then153.7.2 ], [ %loadVec4206.7.2, %if.then119.7.2 ]
%fcj_buf.sroa.0.1.7.2 = phi <4 x float> [ %fcj_buf.sroa.0.1.6.2, %if.end212.6.2 ], [ %extractVec199.7.2, %if.then153.7.2 ], [ %fcj_buf.sroa.0.1.6.2, %if.then119.7.2 ]
%800 = extractelement <4 x float> %fcj_buf.sroa.0.1.7.2, i32 0
store float %800, float addrspace(3)* %arrayidx217, align 4, !tbaa !39
%801 = extractelement <4 x float> %fcj_buf.sroa.0.1.7.2, i32 1
store float %801, float addrspace(3)* %arrayidx219, align 4, !tbaa !39
%802 = extractelement <4 x float> %fcj_buf.sroa.0.1.7.2, i32 2
store float %802, float addrspace(3)* %arrayidx221, align 4, !tbaa !39
tail call fastcc void @reduce_force_j_generic(float addrspace(3)* %2, float addrspace(1)* %f, i32 %x.i, i32 %y.i, i32 %add108.2)
br label %for.inc223.2
for.inc223.2: ; preds = %if.end212.7.2, %for.inc223.1
%fci_buf.sroa.37.8 = phi <4 x float> [ %fci_buf.sroa.37.6, %for.inc223.1 ], [ %fci_buf.sroa.37.7, %if.end212.7.2 ]
%803 = phi <3 x float> [ %565, %for.inc223.1 ], [ %772, %if.end212.7.2 ]
%804 = phi <3 x float> [ %566, %for.inc223.1 ], [ %744, %if.end212.7.2 ]
%805 = phi <3 x float> [ %567, %for.inc223.1 ], [ %716, %if.end212.7.2 ]
%806 = phi <3 x float> [ %568, %for.inc223.1 ], [ %688, %if.end212.7.2 ]
%807 = phi <3 x float> [ %569, %for.inc223.1 ], [ %660, %if.end212.7.2 ]
%808 = phi <3 x float> [ %570, %for.inc223.1 ], [ %632, %if.end212.7.2 ]
%809 = phi <3 x float> [ %571, %for.inc223.1 ], [ %604, %if.end212.7.2 ]
%loadVec4206.7.3 = phi <4 x float> [ %loadVec4206.7.2, %for.inc223.1 ], [ %loadVec4206.7754, %if.end212.7.2 ]
%loadVec4206.6.3 = phi <4 x float> [ %loadVec4206.6.2, %for.inc223.1 ], [ %loadVec4206.6744, %if.end212.7.2 ]
%loadVec4206.5.3 = phi <4 x float> [ %loadVec4206.5.2, %for.inc223.1 ], [ %loadVec4206.5734, %if.end212.7.2 ]
%loadVec4206.4.3 = phi <4 x float> [ %loadVec4206.4.2, %for.inc223.1 ], [ %loadVec4206.4724, %if.end212.7.2 ]
%loadVec4206.3.3 = phi <4 x float> [ %loadVec4206.3.2, %for.inc223.1 ], [ %loadVec4206.3714, %if.end212.7.2 ]
%loadVec4206.2.3 = phi <4 x float> [ %loadVec4206.2.2, %for.inc223.1 ], [ %loadVec4206.2704, %if.end212.7.2 ]
%loadVec4206.1.3 = phi <4 x float> [ %loadVec4206.1.2, %for.inc223.1 ], [ %loadVec4206.1694, %if.end212.7.2 ]
%loadVec4206.3674 = phi <4 x float> [ %loadVec4206.2613, %for.inc223.1 ], [ %loadVec4206684, %if.end212.7.2 ]
%tobool97.3 = icmp ult i32 %45, 16777216
br i1 %tobool97.3, label %for.inc227, label %if.then98.3
if.then98.3: ; preds = %for.inc223.2
%810 = load i32, i32 addrspace(3)* %arrayidx106.3, align 4, !tbaa !41
%mul107.3 = shl nsw i32 %810, 3
%add108.3 = add i32 %mul107.3, %y.i
%811 = sext i32 %add108.3 to i64
%arrayidx109.3 = getelementptr inbounds <4 x float>, <4 x float> addrspace(1)* %xq, i64 %811
%812 = load <4 x float>, <4 x float> addrspace(1)* %arrayidx109.3, align 16, !tbaa !36
%813 = extractelement <4 x float> %812, i32 3
%arrayidx111.3 = getelementptr inbounds i32, i32 addrspace(1)* %atom_types, i64 %811
%814 = load i32, i32 addrspace(1)* %arrayidx111.3, align 4, !tbaa !41
%and117.3621 = and i32 %45, 16777216
%tobool118.3622 = icmp eq i32 %and117.3621, 0
br i1 %tobool118.3622, label %if.end212.3681, label %if.then119.3634
if.then119.3634: ; preds = %if.then98.3
%815 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx126.3623, align 16, !tbaa !36
%816 = fsub <4 x float> %815, %812
%817 = extractelement <4 x float> %816, i32 0
%818 = extractelement <4 x float> %816, i32 1
%mul3.i.i.3624 = fmul float %818, %818
%819 = tail call float @llvm.fmuladd.f32(float %817, float %817, float %mul3.i.i.3624) #5
%820 = extractelement <4 x float> %816, i32 2
%821 = tail call float @llvm.fmuladd.f32(float %820, float %820, float %819) #5
%and139.3625 = and i32 %47, 16777216
%tobool140.3626 = icmp ne i32 %and139.3625, 0
%cond.3627 = select i1 %tobool140.3626, float 1.000000e+00, float 0.000000e+00
%notrhs.3628 = icmp ne i32 %mul31, %810
%not.or.cond.3629 = or i1 %notlhs, %notrhs.3628
%cmp147..3630 = or i1 %cmp147, %not.or.cond.3629
%conv149.3631 = uitofp i1 %cmp147..3630 to float
%mul150.3632 = fmul float %conv149.3631, %nbparam_params_rcoulomb_sq
%cmp151.3633 = fcmp olt float %821, %mul150.3632
br i1 %cmp151.3633, label %if.then153.3678, label %if.end212.3681
if.then153.3678: ; preds = %if.then119.3634
%extractVec137.3635 = shufflevector <4 x float> %816, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%822 = extractelement <4 x float> %815, i32 3
%823 = load i32, i32 addrspace(1)* %arrayidx154.3638, align 4, !tbaa !41
%mul155.3639 = mul nsw i32 %823, %ntypes
%add156.3640 = add nsw i32 %mul155.3639, %814
%mul157.3641 = shl nsw i32 %add156.3640, 1
%824 = sext i32 %mul157.3641 to i64
%arrayidx158.3642 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %824
%825 = load float, float addrspace(2)* %arrayidx158.3642, align 4, !tbaa !39
%add162.3643 = or i32 %mul157.3641, 1
%826 = sext i32 %add162.3643 to i64
%arrayidx163.3644 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %826
%827 = load float, float addrspace(2)* %arrayidx163.3644, align 4, !tbaa !39
%sub164.3645 = fsub float 1.000000e+00, %cond.3627
%828 = tail call float @llvm.fmuladd.f32(float %sub164.3645, float 0x3D71979980000000, float %821)
%cmp.i.i.3646 = fcmp olt float %828, 0.000000e+00
%call.i.i.3647 = tail call float @llvm.sqrt.f32(float %828) #6
%call.i.i.op.3648 = fdiv float 1.000000e+00, %call.i.i.3647
%div167.3649 = select i1 %cmp.i.i.3646, float 0x7FF8000000000000, float %call.i.i.op.3648
%mul168.3650 = fmul float %div167.3649, %div167.3649
%mul169.3651 = fmul float %mul168.3650, %mul168.3650
%mul170.3652 = fmul float %mul168.3650, %mul169.3651
%mul171.3653 = fmul float %cond.3627, %mul170.3652
%neg.3654 = fsub float -0.000000e+00, %825
%829 = tail call float @llvm.fmuladd.f32(float %827, float %mul171.3653, float %neg.3654)
%mul173.3655 = fmul float %mul171.3653, %829
%mul174.3656 = fmul float %mul168.3650, %mul173.3655
%cmp175.3657 = fcmp olt float %828, %nbparam_params_rvdw_sq
%cond177.3658 = select i1 %cmp175.3657, float 1.000000e+00, float 0.000000e+00
%mul178.3659 = fmul float %cond177.3658, %mul174.3656
%mul179.3660 = fmul float %813, %822
%mul180.3661 = fmul float %cond.3627, %mul168.3650
%mul182.3662 = fmul float %mul, %828
%mul.i.3663 = fmul float %mul182.3662, %mul182.3662
%830 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.3663, float 0x3FBDA79640000000) #5
%831 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.3663, float 0x3FE03C5780000000) #5
%832 = tail call float @llvm.fmuladd.f32(float %830, float %mul.i.3663, float 1.000000e+00) #5
%833 = tail call float @llvm.fmuladd.f32(float %831, float %mul182.3662, float %832) #5
%div.i.3664 = fdiv float 1.000000e+00, %833, !fpmath !46
%834 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.3663, float 0xBF0BFF7260000000) #5
%835 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.3663, float 0x3F50794180000000) #5
%836 = tail call float @llvm.fmuladd.f32(float %834, float %mul.i.3663, float 0xBF93BDB200000000) #5
%837 = tail call float @llvm.fmuladd.f32(float %835, float %mul.i.3663, float 0x3FB1D5E760000000) #5
%838 = tail call float @llvm.fmuladd.f32(float %836, float %mul.i.3663, float 0xBFE81272E0000000) #5
%839 = tail call float @llvm.fmuladd.f32(float %837, float %mul182.3662, float %838) #5
%mul11.i.3665 = fmul float %839, %div.i.3664
%mul184.3666 = fmul float %mul21, %mul11.i.3665
%840 = tail call float @llvm.fmuladd.f32(float %mul180.3661, float %div167.3649, float %mul184.3666)
%841 = tail call float @llvm.fmuladd.f32(float %mul179.3660, float %840, float %mul178.3659)
%splat.splatinsert.3667 = insertelement <3 x float> undef, float %841, i32 0
%splat.splat.3668 = shufflevector <3 x float> %splat.splatinsert.3667, <3 x float> undef, <3 x i32> zeroinitializer
%mul189.3669 = fmul <3 x float> %extractVec137.3635, %splat.splat.3668
%sub198.3670 = fsub <3 x float> zeroinitializer, %mul189.3669
%extractVec199.3671 = shufflevector <3 x float> %sub198.3670, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec207.3675 = shufflevector <4 x float> %loadVec4206.3674, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add208.3676 = fadd <3 x float> %extractVec207.3675, %mul189.3669
%extractVec209.3677 = shufflevector <3 x float> %add208.3676, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end212.3681
if.end212.3681: ; preds = %if.then153.3678, %if.then119.3634, %if.then98.3
%842 = phi <3 x float> [ %add208.3676, %if.then153.3678 ], [ %809, %if.then119.3634 ], [ %809, %if.then98.3 ]
%loadVec4206685 = phi <4 x float> [ %extractVec209.3677, %if.then153.3678 ], [ %loadVec4206.3674, %if.then119.3634 ], [ %loadVec4206.3674, %if.then98.3 ]
%fcj_buf.sroa.0.1.3679 = phi <4 x float> [ %extractVec199.3671, %if.then153.3678 ], [ <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float undef>, %if.then119.3634 ], [ <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float undef>, %if.then98.3 ]
%and117.1.3 = and i32 %45, 33554432
%tobool118.1.3 = icmp eq i32 %and117.1.3, 0
br i1 %tobool118.1.3, label %if.end212.1.3, label %if.then119.1.3
if.then119.1.3: ; preds = %if.end212.3681
%843 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx126.1.3, align 16, !tbaa !36
%844 = fsub <4 x float> %843, %812
%845 = extractelement <4 x float> %844, i32 0
%846 = extractelement <4 x float> %844, i32 1
%mul3.i.i.1.3 = fmul float %846, %846
%847 = tail call float @llvm.fmuladd.f32(float %845, float %845, float %mul3.i.i.1.3) #5
%848 = extractelement <4 x float> %844, i32 2
%849 = tail call float @llvm.fmuladd.f32(float %848, float %848, float %847) #5
%and139.1.3 = and i32 %47, 33554432
%tobool140.1.3 = icmp ne i32 %and139.1.3, 0
%cond.1.3 = select i1 %tobool140.1.3, float 1.000000e+00, float 0.000000e+00
%notrhs.1.3 = icmp ne i32 %34, %810
%not.or.cond.1.3 = or i1 %notlhs, %notrhs.1.3
%cmp147..1.3 = or i1 %cmp147, %not.or.cond.1.3
%conv149.1.3 = uitofp i1 %cmp147..1.3 to float
%mul150.1.3 = fmul float %conv149.1.3, %nbparam_params_rcoulomb_sq
%cmp151.1.3 = fcmp olt float %849, %mul150.1.3
br i1 %cmp151.1.3, label %if.then153.1.3, label %if.end212.1.3
if.then153.1.3: ; preds = %if.then119.1.3
%extractVec137.1.3 = shufflevector <4 x float> %844, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%850 = extractelement <4 x float> %843, i32 3
%851 = load i32, i32 addrspace(1)* %arrayidx154.1.3, align 4, !tbaa !41
%mul155.1.3 = mul nsw i32 %851, %ntypes
%add156.1.3 = add nsw i32 %mul155.1.3, %814
%mul157.1.3 = shl nsw i32 %add156.1.3, 1
%852 = sext i32 %mul157.1.3 to i64
%arrayidx158.1.3 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %852
%853 = load float, float addrspace(2)* %arrayidx158.1.3, align 4, !tbaa !39
%add162.1.3 = or i32 %mul157.1.3, 1
%854 = sext i32 %add162.1.3 to i64
%arrayidx163.1.3 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %854
%855 = load float, float addrspace(2)* %arrayidx163.1.3, align 4, !tbaa !39
%sub164.1.3 = fsub float 1.000000e+00, %cond.1.3
%856 = tail call float @llvm.fmuladd.f32(float %sub164.1.3, float 0x3D71979980000000, float %849)
%cmp.i.i.1.3 = fcmp olt float %856, 0.000000e+00
%call.i.i.1.3 = tail call float @llvm.sqrt.f32(float %856) #6
%call.i.i.op.1.3 = fdiv float 1.000000e+00, %call.i.i.1.3
%div167.1.3 = select i1 %cmp.i.i.1.3, float 0x7FF8000000000000, float %call.i.i.op.1.3
%mul168.1.3 = fmul float %div167.1.3, %div167.1.3
%mul169.1.3 = fmul float %mul168.1.3, %mul168.1.3
%mul170.1.3 = fmul float %mul168.1.3, %mul169.1.3
%mul171.1.3 = fmul float %cond.1.3, %mul170.1.3
%neg.1.3 = fsub float -0.000000e+00, %853
%857 = tail call float @llvm.fmuladd.f32(float %855, float %mul171.1.3, float %neg.1.3)
%mul173.1.3 = fmul float %mul171.1.3, %857
%mul174.1.3 = fmul float %mul168.1.3, %mul173.1.3
%cmp175.1.3 = fcmp olt float %856, %nbparam_params_rvdw_sq
%cond177.1.3 = select i1 %cmp175.1.3, float 1.000000e+00, float 0.000000e+00
%mul178.1.3 = fmul float %cond177.1.3, %mul174.1.3
%mul179.1.3 = fmul float %813, %850
%mul180.1.3 = fmul float %cond.1.3, %mul168.1.3
%mul182.1.3 = fmul float %mul, %856
%mul.i.1.3 = fmul float %mul182.1.3, %mul182.1.3
%858 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.1.3, float 0x3FBDA79640000000) #5
%859 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.1.3, float 0x3FE03C5780000000) #5
%860 = tail call float @llvm.fmuladd.f32(float %858, float %mul.i.1.3, float 1.000000e+00) #5
%861 = tail call float @llvm.fmuladd.f32(float %859, float %mul182.1.3, float %860) #5
%div.i.1.3 = fdiv float 1.000000e+00, %861, !fpmath !46
%862 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.1.3, float 0xBF0BFF7260000000) #5
%863 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.1.3, float 0x3F50794180000000) #5
%864 = tail call float @llvm.fmuladd.f32(float %862, float %mul.i.1.3, float 0xBF93BDB200000000) #5
%865 = tail call float @llvm.fmuladd.f32(float %863, float %mul.i.1.3, float 0x3FB1D5E760000000) #5
%866 = tail call float @llvm.fmuladd.f32(float %864, float %mul.i.1.3, float 0xBFE81272E0000000) #5
%867 = tail call float @llvm.fmuladd.f32(float %865, float %mul182.1.3, float %866) #5
%mul11.i.1.3 = fmul float %867, %div.i.1.3
%mul184.1.3 = fmul float %mul21, %mul11.i.1.3
%868 = tail call float @llvm.fmuladd.f32(float %mul180.1.3, float %div167.1.3, float %mul184.1.3)
%869 = tail call float @llvm.fmuladd.f32(float %mul179.1.3, float %868, float %mul178.1.3)
%splat.splatinsert.1.3 = insertelement <3 x float> undef, float %869, i32 0
%splat.splat.1.3 = shufflevector <3 x float> %splat.splatinsert.1.3, <3 x float> undef, <3 x i32> zeroinitializer
%mul189.1.3 = fmul <3 x float> %extractVec137.1.3, %splat.splat.1.3
%extractVec197.1.3 = shufflevector <4 x float> %fcj_buf.sroa.0.1.3679, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub198.1.3 = fsub <3 x float> %extractVec197.1.3, %mul189.1.3
%extractVec199.1.3 = shufflevector <3 x float> %sub198.1.3, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec207.1.3 = shufflevector <4 x float> %loadVec4206.1.3, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add208.1.3 = fadd <3 x float> %extractVec207.1.3, %mul189.1.3
%extractVec209.1.3 = shufflevector <3 x float> %add208.1.3, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end212.1.3
if.end212.1.3: ; preds = %if.then153.1.3, %if.then119.1.3, %if.end212.3681
%870 = phi <3 x float> [ %add208.1.3, %if.then153.1.3 ], [ %808, %if.then119.1.3 ], [ %808, %if.end212.3681 ]
%loadVec4206.1695 = phi <4 x float> [ %extractVec209.1.3, %if.then153.1.3 ], [ %loadVec4206.1.3, %if.then119.1.3 ], [ %loadVec4206.1.3, %if.end212.3681 ]
%fcj_buf.sroa.0.1.1.3 = phi <4 x float> [ %extractVec199.1.3, %if.then153.1.3 ], [ %fcj_buf.sroa.0.1.3679, %if.then119.1.3 ], [ %fcj_buf.sroa.0.1.3679, %if.end212.3681 ]
%and117.2.3 = and i32 %45, 67108864
%tobool118.2.3 = icmp eq i32 %and117.2.3, 0
br i1 %tobool118.2.3, label %if.end212.2.3, label %if.then119.2.3
if.then119.2.3: ; preds = %if.end212.1.3
%871 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx126.2.3, align 16, !tbaa !36
%872 = fsub <4 x float> %871, %812
%873 = extractelement <4 x float> %872, i32 0
%874 = extractelement <4 x float> %872, i32 1
%mul3.i.i.2.3 = fmul float %874, %874
%875 = tail call float @llvm.fmuladd.f32(float %873, float %873, float %mul3.i.i.2.3) #5
%876 = extractelement <4 x float> %872, i32 2
%877 = tail call float @llvm.fmuladd.f32(float %876, float %876, float %875) #5
%and139.2.3 = and i32 %47, 67108864
%tobool140.2.3 = icmp ne i32 %and139.2.3, 0
%cond.2.3 = select i1 %tobool140.2.3, float 1.000000e+00, float 0.000000e+00
%notrhs.2.3 = icmp ne i32 %32, %810
%not.or.cond.2.3 = or i1 %notlhs, %notrhs.2.3
%cmp147..2.3 = or i1 %cmp147, %not.or.cond.2.3
%conv149.2.3 = uitofp i1 %cmp147..2.3 to float
%mul150.2.3 = fmul float %conv149.2.3, %nbparam_params_rcoulomb_sq
%cmp151.2.3 = fcmp olt float %877, %mul150.2.3
br i1 %cmp151.2.3, label %if.then153.2.3, label %if.end212.2.3
if.then153.2.3: ; preds = %if.then119.2.3
%extractVec137.2.3 = shufflevector <4 x float> %872, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%878 = extractelement <4 x float> %871, i32 3
%879 = load i32, i32 addrspace(1)* %arrayidx154.2.3, align 4, !tbaa !41
%mul155.2.3 = mul nsw i32 %879, %ntypes
%add156.2.3 = add nsw i32 %mul155.2.3, %814
%mul157.2.3 = shl nsw i32 %add156.2.3, 1
%880 = sext i32 %mul157.2.3 to i64
%arrayidx158.2.3 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %880
%881 = load float, float addrspace(2)* %arrayidx158.2.3, align 4, !tbaa !39
%add162.2.3 = or i32 %mul157.2.3, 1
%882 = sext i32 %add162.2.3 to i64
%arrayidx163.2.3 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %882
%883 = load float, float addrspace(2)* %arrayidx163.2.3, align 4, !tbaa !39
%sub164.2.3 = fsub float 1.000000e+00, %cond.2.3
%884 = tail call float @llvm.fmuladd.f32(float %sub164.2.3, float 0x3D71979980000000, float %877)
%cmp.i.i.2.3 = fcmp olt float %884, 0.000000e+00
%call.i.i.2.3 = tail call float @llvm.sqrt.f32(float %884) #6
%call.i.i.op.2.3 = fdiv float 1.000000e+00, %call.i.i.2.3
%div167.2.3 = select i1 %cmp.i.i.2.3, float 0x7FF8000000000000, float %call.i.i.op.2.3
%mul168.2.3 = fmul float %div167.2.3, %div167.2.3
%mul169.2.3 = fmul float %mul168.2.3, %mul168.2.3
%mul170.2.3 = fmul float %mul168.2.3, %mul169.2.3
%mul171.2.3 = fmul float %cond.2.3, %mul170.2.3
%neg.2.3 = fsub float -0.000000e+00, %881
%885 = tail call float @llvm.fmuladd.f32(float %883, float %mul171.2.3, float %neg.2.3)
%mul173.2.3 = fmul float %mul171.2.3, %885
%mul174.2.3 = fmul float %mul168.2.3, %mul173.2.3
%cmp175.2.3 = fcmp olt float %884, %nbparam_params_rvdw_sq
%cond177.2.3 = select i1 %cmp175.2.3, float 1.000000e+00, float 0.000000e+00
%mul178.2.3 = fmul float %cond177.2.3, %mul174.2.3
%mul179.2.3 = fmul float %813, %878
%mul180.2.3 = fmul float %cond.2.3, %mul168.2.3
%mul182.2.3 = fmul float %mul, %884
%mul.i.2.3 = fmul float %mul182.2.3, %mul182.2.3
%886 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.2.3, float 0x3FBDA79640000000) #5
%887 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.2.3, float 0x3FE03C5780000000) #5
%888 = tail call float @llvm.fmuladd.f32(float %886, float %mul.i.2.3, float 1.000000e+00) #5
%889 = tail call float @llvm.fmuladd.f32(float %887, float %mul182.2.3, float %888) #5
%div.i.2.3 = fdiv float 1.000000e+00, %889, !fpmath !46
%890 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.2.3, float 0xBF0BFF7260000000) #5
%891 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.2.3, float 0x3F50794180000000) #5
%892 = tail call float @llvm.fmuladd.f32(float %890, float %mul.i.2.3, float 0xBF93BDB200000000) #5
%893 = tail call float @llvm.fmuladd.f32(float %891, float %mul.i.2.3, float 0x3FB1D5E760000000) #5
%894 = tail call float @llvm.fmuladd.f32(float %892, float %mul.i.2.3, float 0xBFE81272E0000000) #5
%895 = tail call float @llvm.fmuladd.f32(float %893, float %mul182.2.3, float %894) #5
%mul11.i.2.3 = fmul float %895, %div.i.2.3
%mul184.2.3 = fmul float %mul21, %mul11.i.2.3
%896 = tail call float @llvm.fmuladd.f32(float %mul180.2.3, float %div167.2.3, float %mul184.2.3)
%897 = tail call float @llvm.fmuladd.f32(float %mul179.2.3, float %896, float %mul178.2.3)
%splat.splatinsert.2.3 = insertelement <3 x float> undef, float %897, i32 0
%splat.splat.2.3 = shufflevector <3 x float> %splat.splatinsert.2.3, <3 x float> undef, <3 x i32> zeroinitializer
%mul189.2.3 = fmul <3 x float> %extractVec137.2.3, %splat.splat.2.3
%extractVec197.2.3 = shufflevector <4 x float> %fcj_buf.sroa.0.1.1.3, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub198.2.3 = fsub <3 x float> %extractVec197.2.3, %mul189.2.3
%extractVec199.2.3 = shufflevector <3 x float> %sub198.2.3, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec207.2.3 = shufflevector <4 x float> %loadVec4206.2.3, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add208.2.3 = fadd <3 x float> %extractVec207.2.3, %mul189.2.3
%extractVec209.2.3 = shufflevector <3 x float> %add208.2.3, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end212.2.3
if.end212.2.3: ; preds = %if.then153.2.3, %if.then119.2.3, %if.end212.1.3
%898 = phi <3 x float> [ %add208.2.3, %if.then153.2.3 ], [ %807, %if.then119.2.3 ], [ %807, %if.end212.1.3 ]
%loadVec4206.2705 = phi <4 x float> [ %extractVec209.2.3, %if.then153.2.3 ], [ %loadVec4206.2.3, %if.then119.2.3 ], [ %loadVec4206.2.3, %if.end212.1.3 ]
%fcj_buf.sroa.0.1.2.3 = phi <4 x float> [ %extractVec199.2.3, %if.then153.2.3 ], [ %fcj_buf.sroa.0.1.1.3, %if.then119.2.3 ], [ %fcj_buf.sroa.0.1.1.3, %if.end212.1.3 ]
%and117.3.3 = and i32 %45, 134217728
%tobool118.3.3 = icmp eq i32 %and117.3.3, 0
br i1 %tobool118.3.3, label %if.end212.3.3, label %if.then119.3.3
if.then119.3.3: ; preds = %if.end212.2.3
%899 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx126.3.3, align 16, !tbaa !36
%900 = fsub <4 x float> %899, %812
%901 = extractelement <4 x float> %900, i32 0
%902 = extractelement <4 x float> %900, i32 1
%mul3.i.i.3.3 = fmul float %902, %902
%903 = tail call float @llvm.fmuladd.f32(float %901, float %901, float %mul3.i.i.3.3) #5
%904 = extractelement <4 x float> %900, i32 2
%905 = tail call float @llvm.fmuladd.f32(float %904, float %904, float %903) #5
%and139.3.3 = and i32 %47, 134217728
%tobool140.3.3 = icmp ne i32 %and139.3.3, 0
%cond.3.3 = select i1 %tobool140.3.3, float 1.000000e+00, float 0.000000e+00
%notrhs.3.3 = icmp ne i32 %30, %810
%not.or.cond.3.3 = or i1 %notlhs, %notrhs.3.3
%cmp147..3.3 = or i1 %cmp147, %not.or.cond.3.3
%conv149.3.3 = uitofp i1 %cmp147..3.3 to float
%mul150.3.3 = fmul float %conv149.3.3, %nbparam_params_rcoulomb_sq
%cmp151.3.3 = fcmp olt float %905, %mul150.3.3
br i1 %cmp151.3.3, label %if.then153.3.3, label %if.end212.3.3
if.then153.3.3: ; preds = %if.then119.3.3
%extractVec137.3.3 = shufflevector <4 x float> %900, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%906 = extractelement <4 x float> %899, i32 3
%907 = load i32, i32 addrspace(1)* %arrayidx154.3.3, align 4, !tbaa !41
%mul155.3.3 = mul nsw i32 %907, %ntypes
%add156.3.3 = add nsw i32 %mul155.3.3, %814
%mul157.3.3 = shl nsw i32 %add156.3.3, 1
%908 = sext i32 %mul157.3.3 to i64
%arrayidx158.3.3 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %908
%909 = load float, float addrspace(2)* %arrayidx158.3.3, align 4, !tbaa !39
%add162.3.3 = or i32 %mul157.3.3, 1
%910 = sext i32 %add162.3.3 to i64
%arrayidx163.3.3 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %910
%911 = load float, float addrspace(2)* %arrayidx163.3.3, align 4, !tbaa !39
%sub164.3.3 = fsub float 1.000000e+00, %cond.3.3
%912 = tail call float @llvm.fmuladd.f32(float %sub164.3.3, float 0x3D71979980000000, float %905)
%cmp.i.i.3.3 = fcmp olt float %912, 0.000000e+00
%call.i.i.3.3 = tail call float @llvm.sqrt.f32(float %912) #6
%call.i.i.op.3.3 = fdiv float 1.000000e+00, %call.i.i.3.3
%div167.3.3 = select i1 %cmp.i.i.3.3, float 0x7FF8000000000000, float %call.i.i.op.3.3
%mul168.3.3 = fmul float %div167.3.3, %div167.3.3
%mul169.3.3 = fmul float %mul168.3.3, %mul168.3.3
%mul170.3.3 = fmul float %mul168.3.3, %mul169.3.3
%mul171.3.3 = fmul float %cond.3.3, %mul170.3.3
%neg.3.3 = fsub float -0.000000e+00, %909
%913 = tail call float @llvm.fmuladd.f32(float %911, float %mul171.3.3, float %neg.3.3)
%mul173.3.3 = fmul float %mul171.3.3, %913
%mul174.3.3 = fmul float %mul168.3.3, %mul173.3.3
%cmp175.3.3 = fcmp olt float %912, %nbparam_params_rvdw_sq
%cond177.3.3 = select i1 %cmp175.3.3, float 1.000000e+00, float 0.000000e+00
%mul178.3.3 = fmul float %cond177.3.3, %mul174.3.3
%mul179.3.3 = fmul float %813, %906
%mul180.3.3 = fmul float %cond.3.3, %mul168.3.3
%mul182.3.3 = fmul float %mul, %912
%mul.i.3.3 = fmul float %mul182.3.3, %mul182.3.3
%914 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.3.3, float 0x3FBDA79640000000) #5
%915 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.3.3, float 0x3FE03C5780000000) #5
%916 = tail call float @llvm.fmuladd.f32(float %914, float %mul.i.3.3, float 1.000000e+00) #5
%917 = tail call float @llvm.fmuladd.f32(float %915, float %mul182.3.3, float %916) #5
%div.i.3.3 = fdiv float 1.000000e+00, %917, !fpmath !46
%918 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.3.3, float 0xBF0BFF7260000000) #5
%919 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.3.3, float 0x3F50794180000000) #5
%920 = tail call float @llvm.fmuladd.f32(float %918, float %mul.i.3.3, float 0xBF93BDB200000000) #5
%921 = tail call float @llvm.fmuladd.f32(float %919, float %mul.i.3.3, float 0x3FB1D5E760000000) #5
%922 = tail call float @llvm.fmuladd.f32(float %920, float %mul.i.3.3, float 0xBFE81272E0000000) #5
%923 = tail call float @llvm.fmuladd.f32(float %921, float %mul182.3.3, float %922) #5
%mul11.i.3.3 = fmul float %923, %div.i.3.3
%mul184.3.3 = fmul float %mul21, %mul11.i.3.3
%924 = tail call float @llvm.fmuladd.f32(float %mul180.3.3, float %div167.3.3, float %mul184.3.3)
%925 = tail call float @llvm.fmuladd.f32(float %mul179.3.3, float %924, float %mul178.3.3)
%splat.splatinsert.3.3 = insertelement <3 x float> undef, float %925, i32 0
%splat.splat.3.3 = shufflevector <3 x float> %splat.splatinsert.3.3, <3 x float> undef, <3 x i32> zeroinitializer
%mul189.3.3 = fmul <3 x float> %extractVec137.3.3, %splat.splat.3.3
%extractVec197.3.3 = shufflevector <4 x float> %fcj_buf.sroa.0.1.2.3, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub198.3.3 = fsub <3 x float> %extractVec197.3.3, %mul189.3.3
%extractVec199.3.3 = shufflevector <3 x float> %sub198.3.3, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec207.3.3 = shufflevector <4 x float> %loadVec4206.3.3, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add208.3.3 = fadd <3 x float> %extractVec207.3.3, %mul189.3.3
%extractVec209.3.3 = shufflevector <3 x float> %add208.3.3, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end212.3.3
if.end212.3.3: ; preds = %if.then153.3.3, %if.then119.3.3, %if.end212.2.3
%926 = phi <3 x float> [ %add208.3.3, %if.then153.3.3 ], [ %806, %if.then119.3.3 ], [ %806, %if.end212.2.3 ]
%loadVec4206.3715 = phi <4 x float> [ %extractVec209.3.3, %if.then153.3.3 ], [ %loadVec4206.3.3, %if.then119.3.3 ], [ %loadVec4206.3.3, %if.end212.2.3 ]
%fcj_buf.sroa.0.1.3.3 = phi <4 x float> [ %extractVec199.3.3, %if.then153.3.3 ], [ %fcj_buf.sroa.0.1.2.3, %if.then119.3.3 ], [ %fcj_buf.sroa.0.1.2.3, %if.end212.2.3 ]
%and117.4.3 = and i32 %45, 268435456
%tobool118.4.3 = icmp eq i32 %and117.4.3, 0
br i1 %tobool118.4.3, label %if.end212.4.3, label %if.then119.4.3
if.then119.4.3: ; preds = %if.end212.3.3
%927 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx126.4.3, align 16, !tbaa !36
%928 = fsub <4 x float> %927, %812
%929 = extractelement <4 x float> %928, i32 0
%930 = extractelement <4 x float> %928, i32 1
%mul3.i.i.4.3 = fmul float %930, %930
%931 = tail call float @llvm.fmuladd.f32(float %929, float %929, float %mul3.i.i.4.3) #5
%932 = extractelement <4 x float> %928, i32 2
%933 = tail call float @llvm.fmuladd.f32(float %932, float %932, float %931) #5
%and139.4.3 = and i32 %47, 268435456
%tobool140.4.3 = icmp ne i32 %and139.4.3, 0
%cond.4.3 = select i1 %tobool140.4.3, float 1.000000e+00, float 0.000000e+00
%notrhs.4.3 = icmp ne i32 %28, %810
%not.or.cond.4.3 = or i1 %notlhs, %notrhs.4.3
%cmp147..4.3 = or i1 %cmp147, %not.or.cond.4.3
%conv149.4.3 = uitofp i1 %cmp147..4.3 to float
%mul150.4.3 = fmul float %conv149.4.3, %nbparam_params_rcoulomb_sq
%cmp151.4.3 = fcmp olt float %933, %mul150.4.3
br i1 %cmp151.4.3, label %if.then153.4.3, label %if.end212.4.3
if.then153.4.3: ; preds = %if.then119.4.3
%extractVec137.4.3 = shufflevector <4 x float> %928, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%934 = extractelement <4 x float> %927, i32 3
%935 = load i32, i32 addrspace(1)* %arrayidx154.4.3, align 4, !tbaa !41
%mul155.4.3 = mul nsw i32 %935, %ntypes
%add156.4.3 = add nsw i32 %mul155.4.3, %814
%mul157.4.3 = shl nsw i32 %add156.4.3, 1
%936 = sext i32 %mul157.4.3 to i64
%arrayidx158.4.3 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %936
%937 = load float, float addrspace(2)* %arrayidx158.4.3, align 4, !tbaa !39
%add162.4.3 = or i32 %mul157.4.3, 1
%938 = sext i32 %add162.4.3 to i64
%arrayidx163.4.3 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %938
%939 = load float, float addrspace(2)* %arrayidx163.4.3, align 4, !tbaa !39
%sub164.4.3 = fsub float 1.000000e+00, %cond.4.3
%940 = tail call float @llvm.fmuladd.f32(float %sub164.4.3, float 0x3D71979980000000, float %933)
%cmp.i.i.4.3 = fcmp olt float %940, 0.000000e+00
%call.i.i.4.3 = tail call float @llvm.sqrt.f32(float %940) #6
%call.i.i.op.4.3 = fdiv float 1.000000e+00, %call.i.i.4.3
%div167.4.3 = select i1 %cmp.i.i.4.3, float 0x7FF8000000000000, float %call.i.i.op.4.3
%mul168.4.3 = fmul float %div167.4.3, %div167.4.3
%mul169.4.3 = fmul float %mul168.4.3, %mul168.4.3
%mul170.4.3 = fmul float %mul168.4.3, %mul169.4.3
%mul171.4.3 = fmul float %cond.4.3, %mul170.4.3
%neg.4.3 = fsub float -0.000000e+00, %937
%941 = tail call float @llvm.fmuladd.f32(float %939, float %mul171.4.3, float %neg.4.3)
%mul173.4.3 = fmul float %mul171.4.3, %941
%mul174.4.3 = fmul float %mul168.4.3, %mul173.4.3
%cmp175.4.3 = fcmp olt float %940, %nbparam_params_rvdw_sq
%cond177.4.3 = select i1 %cmp175.4.3, float 1.000000e+00, float 0.000000e+00
%mul178.4.3 = fmul float %cond177.4.3, %mul174.4.3
%mul179.4.3 = fmul float %813, %934
%mul180.4.3 = fmul float %cond.4.3, %mul168.4.3
%mul182.4.3 = fmul float %mul, %940
%mul.i.4.3 = fmul float %mul182.4.3, %mul182.4.3
%942 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.4.3, float 0x3FBDA79640000000) #5
%943 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.4.3, float 0x3FE03C5780000000) #5
%944 = tail call float @llvm.fmuladd.f32(float %942, float %mul.i.4.3, float 1.000000e+00) #5
%945 = tail call float @llvm.fmuladd.f32(float %943, float %mul182.4.3, float %944) #5
%div.i.4.3 = fdiv float 1.000000e+00, %945, !fpmath !46
%946 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.4.3, float 0xBF0BFF7260000000) #5
%947 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.4.3, float 0x3F50794180000000) #5
%948 = tail call float @llvm.fmuladd.f32(float %946, float %mul.i.4.3, float 0xBF93BDB200000000) #5
%949 = tail call float @llvm.fmuladd.f32(float %947, float %mul.i.4.3, float 0x3FB1D5E760000000) #5
%950 = tail call float @llvm.fmuladd.f32(float %948, float %mul.i.4.3, float 0xBFE81272E0000000) #5
%951 = tail call float @llvm.fmuladd.f32(float %949, float %mul182.4.3, float %950) #5
%mul11.i.4.3 = fmul float %951, %div.i.4.3
%mul184.4.3 = fmul float %mul21, %mul11.i.4.3
%952 = tail call float @llvm.fmuladd.f32(float %mul180.4.3, float %div167.4.3, float %mul184.4.3)
%953 = tail call float @llvm.fmuladd.f32(float %mul179.4.3, float %952, float %mul178.4.3)
%splat.splatinsert.4.3 = insertelement <3 x float> undef, float %953, i32 0
%splat.splat.4.3 = shufflevector <3 x float> %splat.splatinsert.4.3, <3 x float> undef, <3 x i32> zeroinitializer
%mul189.4.3 = fmul <3 x float> %extractVec137.4.3, %splat.splat.4.3
%extractVec197.4.3 = shufflevector <4 x float> %fcj_buf.sroa.0.1.3.3, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub198.4.3 = fsub <3 x float> %extractVec197.4.3, %mul189.4.3
%extractVec199.4.3 = shufflevector <3 x float> %sub198.4.3, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec207.4.3 = shufflevector <4 x float> %loadVec4206.4.3, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add208.4.3 = fadd <3 x float> %extractVec207.4.3, %mul189.4.3
%extractVec209.4.3 = shufflevector <3 x float> %add208.4.3, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end212.4.3
if.end212.4.3: ; preds = %if.then153.4.3, %if.then119.4.3, %if.end212.3.3
%954 = phi <3 x float> [ %add208.4.3, %if.then153.4.3 ], [ %805, %if.then119.4.3 ], [ %805, %if.end212.3.3 ]
%loadVec4206.4725 = phi <4 x float> [ %extractVec209.4.3, %if.then153.4.3 ], [ %loadVec4206.4.3, %if.then119.4.3 ], [ %loadVec4206.4.3, %if.end212.3.3 ]
%fcj_buf.sroa.0.1.4.3 = phi <4 x float> [ %extractVec199.4.3, %if.then153.4.3 ], [ %fcj_buf.sroa.0.1.3.3, %if.then119.4.3 ], [ %fcj_buf.sroa.0.1.3.3, %if.end212.3.3 ]
%and117.5.3 = and i32 %45, 536870912
%tobool118.5.3 = icmp eq i32 %and117.5.3, 0
br i1 %tobool118.5.3, label %if.end212.5.3, label %if.then119.5.3
if.then119.5.3: ; preds = %if.end212.4.3
%955 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx126.5.3, align 16, !tbaa !36
%956 = fsub <4 x float> %955, %812
%957 = extractelement <4 x float> %956, i32 0
%958 = extractelement <4 x float> %956, i32 1
%mul3.i.i.5.3 = fmul float %958, %958
%959 = tail call float @llvm.fmuladd.f32(float %957, float %957, float %mul3.i.i.5.3) #5
%960 = extractelement <4 x float> %956, i32 2
%961 = tail call float @llvm.fmuladd.f32(float %960, float %960, float %959) #5
%and139.5.3 = and i32 %47, 536870912
%tobool140.5.3 = icmp ne i32 %and139.5.3, 0
%cond.5.3 = select i1 %tobool140.5.3, float 1.000000e+00, float 0.000000e+00
%notrhs.5.3 = icmp ne i32 %26, %810
%not.or.cond.5.3 = or i1 %notlhs, %notrhs.5.3
%cmp147..5.3 = or i1 %cmp147, %not.or.cond.5.3
%conv149.5.3 = uitofp i1 %cmp147..5.3 to float
%mul150.5.3 = fmul float %conv149.5.3, %nbparam_params_rcoulomb_sq
%cmp151.5.3 = fcmp olt float %961, %mul150.5.3
br i1 %cmp151.5.3, label %if.then153.5.3, label %if.end212.5.3
if.then153.5.3: ; preds = %if.then119.5.3
%extractVec137.5.3 = shufflevector <4 x float> %956, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%962 = extractelement <4 x float> %955, i32 3
%963 = load i32, i32 addrspace(1)* %arrayidx154.5.3, align 4, !tbaa !41
%mul155.5.3 = mul nsw i32 %963, %ntypes
%add156.5.3 = add nsw i32 %mul155.5.3, %814
%mul157.5.3 = shl nsw i32 %add156.5.3, 1
%964 = sext i32 %mul157.5.3 to i64
%arrayidx158.5.3 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %964
%965 = load float, float addrspace(2)* %arrayidx158.5.3, align 4, !tbaa !39
%add162.5.3 = or i32 %mul157.5.3, 1
%966 = sext i32 %add162.5.3 to i64
%arrayidx163.5.3 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %966
%967 = load float, float addrspace(2)* %arrayidx163.5.3, align 4, !tbaa !39
%sub164.5.3 = fsub float 1.000000e+00, %cond.5.3
%968 = tail call float @llvm.fmuladd.f32(float %sub164.5.3, float 0x3D71979980000000, float %961)
%cmp.i.i.5.3 = fcmp olt float %968, 0.000000e+00
%call.i.i.5.3 = tail call float @llvm.sqrt.f32(float %968) #6
%call.i.i.op.5.3 = fdiv float 1.000000e+00, %call.i.i.5.3
%div167.5.3 = select i1 %cmp.i.i.5.3, float 0x7FF8000000000000, float %call.i.i.op.5.3
%mul168.5.3 = fmul float %div167.5.3, %div167.5.3
%mul169.5.3 = fmul float %mul168.5.3, %mul168.5.3
%mul170.5.3 = fmul float %mul168.5.3, %mul169.5.3
%mul171.5.3 = fmul float %cond.5.3, %mul170.5.3
%neg.5.3 = fsub float -0.000000e+00, %965
%969 = tail call float @llvm.fmuladd.f32(float %967, float %mul171.5.3, float %neg.5.3)
%mul173.5.3 = fmul float %mul171.5.3, %969
%mul174.5.3 = fmul float %mul168.5.3, %mul173.5.3
%cmp175.5.3 = fcmp olt float %968, %nbparam_params_rvdw_sq
%cond177.5.3 = select i1 %cmp175.5.3, float 1.000000e+00, float 0.000000e+00
%mul178.5.3 = fmul float %cond177.5.3, %mul174.5.3
%mul179.5.3 = fmul float %813, %962
%mul180.5.3 = fmul float %cond.5.3, %mul168.5.3
%mul182.5.3 = fmul float %mul, %968
%mul.i.5.3 = fmul float %mul182.5.3, %mul182.5.3
%970 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.5.3, float 0x3FBDA79640000000) #5
%971 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.5.3, float 0x3FE03C5780000000) #5
%972 = tail call float @llvm.fmuladd.f32(float %970, float %mul.i.5.3, float 1.000000e+00) #5
%973 = tail call float @llvm.fmuladd.f32(float %971, float %mul182.5.3, float %972) #5
%div.i.5.3 = fdiv float 1.000000e+00, %973, !fpmath !46
%974 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.5.3, float 0xBF0BFF7260000000) #5
%975 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.5.3, float 0x3F50794180000000) #5
%976 = tail call float @llvm.fmuladd.f32(float %974, float %mul.i.5.3, float 0xBF93BDB200000000) #5
%977 = tail call float @llvm.fmuladd.f32(float %975, float %mul.i.5.3, float 0x3FB1D5E760000000) #5
%978 = tail call float @llvm.fmuladd.f32(float %976, float %mul.i.5.3, float 0xBFE81272E0000000) #5
%979 = tail call float @llvm.fmuladd.f32(float %977, float %mul182.5.3, float %978) #5
%mul11.i.5.3 = fmul float %979, %div.i.5.3
%mul184.5.3 = fmul float %mul21, %mul11.i.5.3
%980 = tail call float @llvm.fmuladd.f32(float %mul180.5.3, float %div167.5.3, float %mul184.5.3)
%981 = tail call float @llvm.fmuladd.f32(float %mul179.5.3, float %980, float %mul178.5.3)
%splat.splatinsert.5.3 = insertelement <3 x float> undef, float %981, i32 0
%splat.splat.5.3 = shufflevector <3 x float> %splat.splatinsert.5.3, <3 x float> undef, <3 x i32> zeroinitializer
%mul189.5.3 = fmul <3 x float> %extractVec137.5.3, %splat.splat.5.3
%extractVec197.5.3 = shufflevector <4 x float> %fcj_buf.sroa.0.1.4.3, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub198.5.3 = fsub <3 x float> %extractVec197.5.3, %mul189.5.3
%extractVec199.5.3 = shufflevector <3 x float> %sub198.5.3, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec207.5.3 = shufflevector <4 x float> %loadVec4206.5.3, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add208.5.3 = fadd <3 x float> %extractVec207.5.3, %mul189.5.3
%extractVec209.5.3 = shufflevector <3 x float> %add208.5.3, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end212.5.3
if.end212.5.3: ; preds = %if.then153.5.3, %if.then119.5.3, %if.end212.4.3
%982 = phi <3 x float> [ %add208.5.3, %if.then153.5.3 ], [ %804, %if.then119.5.3 ], [ %804, %if.end212.4.3 ]
%loadVec4206.5735 = phi <4 x float> [ %extractVec209.5.3, %if.then153.5.3 ], [ %loadVec4206.5.3, %if.then119.5.3 ], [ %loadVec4206.5.3, %if.end212.4.3 ]
%fcj_buf.sroa.0.1.5.3 = phi <4 x float> [ %extractVec199.5.3, %if.then153.5.3 ], [ %fcj_buf.sroa.0.1.4.3, %if.then119.5.3 ], [ %fcj_buf.sroa.0.1.4.3, %if.end212.4.3 ]
%and117.6.3 = and i32 %45, 1073741824
%tobool118.6.3 = icmp eq i32 %and117.6.3, 0
br i1 %tobool118.6.3, label %if.end212.6.3, label %if.then119.6.3
if.then119.6.3: ; preds = %if.end212.5.3
%983 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx126.6.3, align 16, !tbaa !36
%984 = fsub <4 x float> %983, %812
%985 = extractelement <4 x float> %984, i32 0
%986 = extractelement <4 x float> %984, i32 1
%mul3.i.i.6.3 = fmul float %986, %986
%987 = tail call float @llvm.fmuladd.f32(float %985, float %985, float %mul3.i.i.6.3) #5
%988 = extractelement <4 x float> %984, i32 2
%989 = tail call float @llvm.fmuladd.f32(float %988, float %988, float %987) #5
%and139.6.3 = and i32 %47, 1073741824
%tobool140.6.3 = icmp ne i32 %and139.6.3, 0
%cond.6.3 = select i1 %tobool140.6.3, float 1.000000e+00, float 0.000000e+00
%notrhs.6.3 = icmp ne i32 %24, %810
%not.or.cond.6.3 = or i1 %notlhs, %notrhs.6.3
%cmp147..6.3 = or i1 %cmp147, %not.or.cond.6.3
%conv149.6.3 = uitofp i1 %cmp147..6.3 to float
%mul150.6.3 = fmul float %conv149.6.3, %nbparam_params_rcoulomb_sq
%cmp151.6.3 = fcmp olt float %989, %mul150.6.3
br i1 %cmp151.6.3, label %if.then153.6.3, label %if.end212.6.3
if.then153.6.3: ; preds = %if.then119.6.3
%extractVec137.6.3 = shufflevector <4 x float> %984, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%990 = extractelement <4 x float> %983, i32 3
%991 = load i32, i32 addrspace(1)* %arrayidx154.6.3, align 4, !tbaa !41
%mul155.6.3 = mul nsw i32 %991, %ntypes
%add156.6.3 = add nsw i32 %mul155.6.3, %814
%mul157.6.3 = shl nsw i32 %add156.6.3, 1
%992 = sext i32 %mul157.6.3 to i64
%arrayidx158.6.3 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %992
%993 = load float, float addrspace(2)* %arrayidx158.6.3, align 4, !tbaa !39
%add162.6.3 = or i32 %mul157.6.3, 1
%994 = sext i32 %add162.6.3 to i64
%arrayidx163.6.3 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %994
%995 = load float, float addrspace(2)* %arrayidx163.6.3, align 4, !tbaa !39
%sub164.6.3 = fsub float 1.000000e+00, %cond.6.3
%996 = tail call float @llvm.fmuladd.f32(float %sub164.6.3, float 0x3D71979980000000, float %989)
%cmp.i.i.6.3 = fcmp olt float %996, 0.000000e+00
%call.i.i.6.3 = tail call float @llvm.sqrt.f32(float %996) #6
%call.i.i.op.6.3 = fdiv float 1.000000e+00, %call.i.i.6.3
%div167.6.3 = select i1 %cmp.i.i.6.3, float 0x7FF8000000000000, float %call.i.i.op.6.3
%mul168.6.3 = fmul float %div167.6.3, %div167.6.3
%mul169.6.3 = fmul float %mul168.6.3, %mul168.6.3
%mul170.6.3 = fmul float %mul168.6.3, %mul169.6.3
%mul171.6.3 = fmul float %cond.6.3, %mul170.6.3
%neg.6.3 = fsub float -0.000000e+00, %993
%997 = tail call float @llvm.fmuladd.f32(float %995, float %mul171.6.3, float %neg.6.3)
%mul173.6.3 = fmul float %mul171.6.3, %997
%mul174.6.3 = fmul float %mul168.6.3, %mul173.6.3
%cmp175.6.3 = fcmp olt float %996, %nbparam_params_rvdw_sq
%cond177.6.3 = select i1 %cmp175.6.3, float 1.000000e+00, float 0.000000e+00
%mul178.6.3 = fmul float %cond177.6.3, %mul174.6.3
%mul179.6.3 = fmul float %813, %990
%mul180.6.3 = fmul float %cond.6.3, %mul168.6.3
%mul182.6.3 = fmul float %mul, %996
%mul.i.6.3 = fmul float %mul182.6.3, %mul182.6.3
%998 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.6.3, float 0x3FBDA79640000000) #5
%999 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.6.3, float 0x3FE03C5780000000) #5
%1000 = tail call float @llvm.fmuladd.f32(float %998, float %mul.i.6.3, float 1.000000e+00) #5
%1001 = tail call float @llvm.fmuladd.f32(float %999, float %mul182.6.3, float %1000) #5
%div.i.6.3 = fdiv float 1.000000e+00, %1001, !fpmath !46
%1002 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.6.3, float 0xBF0BFF7260000000) #5
%1003 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.6.3, float 0x3F50794180000000) #5
%1004 = tail call float @llvm.fmuladd.f32(float %1002, float %mul.i.6.3, float 0xBF93BDB200000000) #5
%1005 = tail call float @llvm.fmuladd.f32(float %1003, float %mul.i.6.3, float 0x3FB1D5E760000000) #5
%1006 = tail call float @llvm.fmuladd.f32(float %1004, float %mul.i.6.3, float 0xBFE81272E0000000) #5
%1007 = tail call float @llvm.fmuladd.f32(float %1005, float %mul182.6.3, float %1006) #5
%mul11.i.6.3 = fmul float %1007, %div.i.6.3
%mul184.6.3 = fmul float %mul21, %mul11.i.6.3
%1008 = tail call float @llvm.fmuladd.f32(float %mul180.6.3, float %div167.6.3, float %mul184.6.3)
%1009 = tail call float @llvm.fmuladd.f32(float %mul179.6.3, float %1008, float %mul178.6.3)
%splat.splatinsert.6.3 = insertelement <3 x float> undef, float %1009, i32 0
%splat.splat.6.3 = shufflevector <3 x float> %splat.splatinsert.6.3, <3 x float> undef, <3 x i32> zeroinitializer
%mul189.6.3 = fmul <3 x float> %extractVec137.6.3, %splat.splat.6.3
%extractVec197.6.3 = shufflevector <4 x float> %fcj_buf.sroa.0.1.5.3, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub198.6.3 = fsub <3 x float> %extractVec197.6.3, %mul189.6.3
%extractVec199.6.3 = shufflevector <3 x float> %sub198.6.3, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec207.6.3 = shufflevector <4 x float> %loadVec4206.6.3, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add208.6.3 = fadd <3 x float> %extractVec207.6.3, %mul189.6.3
%extractVec209.6.3 = shufflevector <3 x float> %add208.6.3, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end212.6.3
if.end212.6.3: ; preds = %if.then153.6.3, %if.then119.6.3, %if.end212.5.3
%1010 = phi <3 x float> [ %add208.6.3, %if.then153.6.3 ], [ %803, %if.then119.6.3 ], [ %803, %if.end212.5.3 ]
%loadVec4206.6745 = phi <4 x float> [ %extractVec209.6.3, %if.then153.6.3 ], [ %loadVec4206.6.3, %if.then119.6.3 ], [ %loadVec4206.6.3, %if.end212.5.3 ]
%fcj_buf.sroa.0.1.6.3 = phi <4 x float> [ %extractVec199.6.3, %if.then153.6.3 ], [ %fcj_buf.sroa.0.1.5.3, %if.then119.6.3 ], [ %fcj_buf.sroa.0.1.5.3, %if.end212.5.3 ]
%tobool118.7.3 = icmp sgt i32 %45, -1
br i1 %tobool118.7.3, label %if.end212.7.3, label %if.then119.7.3
if.then119.7.3: ; preds = %if.end212.6.3
%1011 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx126.7.3, align 16, !tbaa !36
%1012 = fsub <4 x float> %1011, %812
%1013 = extractelement <4 x float> %1012, i32 0
%1014 = extractelement <4 x float> %1012, i32 1
%mul3.i.i.7.3 = fmul float %1014, %1014
%1015 = tail call float @llvm.fmuladd.f32(float %1013, float %1013, float %mul3.i.i.7.3) #5
%1016 = extractelement <4 x float> %1012, i32 2
%1017 = tail call float @llvm.fmuladd.f32(float %1016, float %1016, float %1015) #5
%tobool140.7.3 = icmp slt i32 %47, 0
%cond.7.3 = select i1 %tobool140.7.3, float 1.000000e+00, float 0.000000e+00
%notrhs.7.3 = icmp ne i32 %22, %810
%not.or.cond.7.3 = or i1 %notlhs, %notrhs.7.3
%cmp147..7.3 = or i1 %cmp147, %not.or.cond.7.3
%conv149.7.3 = uitofp i1 %cmp147..7.3 to float
%mul150.7.3 = fmul float %conv149.7.3, %nbparam_params_rcoulomb_sq
%cmp151.7.3 = fcmp olt float %1017, %mul150.7.3
br i1 %cmp151.7.3, label %if.then153.7.3, label %if.end212.7.3
if.then153.7.3: ; preds = %if.then119.7.3
%extractVec137.7.3 = shufflevector <4 x float> %1012, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%1018 = extractelement <4 x float> %1011, i32 3
%1019 = load i32, i32 addrspace(1)* %arrayidx154.7.3, align 4, !tbaa !41
%mul155.7.3 = mul nsw i32 %1019, %ntypes
%add156.7.3 = add nsw i32 %mul155.7.3, %814
%mul157.7.3 = shl nsw i32 %add156.7.3, 1
%1020 = sext i32 %mul157.7.3 to i64
%arrayidx158.7.3 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %1020
%1021 = load float, float addrspace(2)* %arrayidx158.7.3, align 4, !tbaa !39
%add162.7.3 = or i32 %mul157.7.3, 1
%1022 = sext i32 %add162.7.3 to i64
%arrayidx163.7.3 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %1022
%1023 = load float, float addrspace(2)* %arrayidx163.7.3, align 4, !tbaa !39
%sub164.7.3 = fsub float 1.000000e+00, %cond.7.3
%1024 = tail call float @llvm.fmuladd.f32(float %sub164.7.3, float 0x3D71979980000000, float %1017)
%cmp.i.i.7.3 = fcmp olt float %1024, 0.000000e+00
%call.i.i.7.3 = tail call float @llvm.sqrt.f32(float %1024) #6
%call.i.i.op.7.3 = fdiv float 1.000000e+00, %call.i.i.7.3
%div167.7.3 = select i1 %cmp.i.i.7.3, float 0x7FF8000000000000, float %call.i.i.op.7.3
%mul168.7.3 = fmul float %div167.7.3, %div167.7.3
%mul169.7.3 = fmul float %mul168.7.3, %mul168.7.3
%mul170.7.3 = fmul float %mul168.7.3, %mul169.7.3
%mul171.7.3 = fmul float %cond.7.3, %mul170.7.3
%neg.7.3 = fsub float -0.000000e+00, %1021
%1025 = tail call float @llvm.fmuladd.f32(float %1023, float %mul171.7.3, float %neg.7.3)
%mul173.7.3 = fmul float %mul171.7.3, %1025
%mul174.7.3 = fmul float %mul168.7.3, %mul173.7.3
%cmp175.7.3 = fcmp olt float %1024, %nbparam_params_rvdw_sq
%cond177.7.3 = select i1 %cmp175.7.3, float 1.000000e+00, float 0.000000e+00
%mul178.7.3 = fmul float %cond177.7.3, %mul174.7.3
%mul179.7.3 = fmul float %813, %1018
%mul180.7.3 = fmul float %cond.7.3, %mul168.7.3
%mul182.7.3 = fmul float %mul, %1024
%mul.i.7.3 = fmul float %mul182.7.3, %mul182.7.3
%1026 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i.7.3, float 0x3FBDA79640000000) #5
%1027 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i.7.3, float 0x3FE03C5780000000) #5
%1028 = tail call float @llvm.fmuladd.f32(float %1026, float %mul.i.7.3, float 1.000000e+00) #5
%1029 = tail call float @llvm.fmuladd.f32(float %1027, float %mul182.7.3, float %1028) #5
%div.i.7.3 = fdiv float 1.000000e+00, %1029, !fpmath !46
%1030 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i.7.3, float 0xBF0BFF7260000000) #5
%1031 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i.7.3, float 0x3F50794180000000) #5
%1032 = tail call float @llvm.fmuladd.f32(float %1030, float %mul.i.7.3, float 0xBF93BDB200000000) #5
%1033 = tail call float @llvm.fmuladd.f32(float %1031, float %mul.i.7.3, float 0x3FB1D5E760000000) #5
%1034 = tail call float @llvm.fmuladd.f32(float %1032, float %mul.i.7.3, float 0xBFE81272E0000000) #5
%1035 = tail call float @llvm.fmuladd.f32(float %1033, float %mul182.7.3, float %1034) #5
%mul11.i.7.3 = fmul float %1035, %div.i.7.3
%mul184.7.3 = fmul float %mul21, %mul11.i.7.3
%1036 = tail call float @llvm.fmuladd.f32(float %mul180.7.3, float %div167.7.3, float %mul184.7.3)
%1037 = tail call float @llvm.fmuladd.f32(float %mul179.7.3, float %1036, float %mul178.7.3)
%splat.splatinsert.7.3 = insertelement <3 x float> undef, float %1037, i32 0
%splat.splat.7.3 = shufflevector <3 x float> %splat.splatinsert.7.3, <3 x float> undef, <3 x i32> zeroinitializer
%mul189.7.3 = fmul <3 x float> %extractVec137.7.3, %splat.splat.7.3
%extractVec197.7.3 = shufflevector <4 x float> %fcj_buf.sroa.0.1.6.3, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub198.7.3 = fsub <3 x float> %extractVec197.7.3, %mul189.7.3
%extractVec199.7.3 = shufflevector <3 x float> %sub198.7.3, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec207.7.3 = shufflevector <4 x float> %loadVec4206.7.3, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add208.7.3 = fadd <3 x float> %extractVec207.7.3, %mul189.7.3
%extractVec209.7.3 = shufflevector <3 x float> %add208.7.3, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end212.7.3
if.end212.7.3: ; preds = %if.then153.7.3, %if.then119.7.3, %if.end212.6.3
%fci_buf.sroa.37.9 = phi <4 x float> [ %fci_buf.sroa.37.8, %if.end212.6.3 ], [ %extractVec209.7.3, %if.then153.7.3 ], [ %fci_buf.sroa.37.8, %if.then119.7.3 ]
%loadVec4206.7755 = phi <4 x float> [ %loadVec4206.7.3, %if.end212.6.3 ], [ %extractVec209.7.3, %if.then153.7.3 ], [ %loadVec4206.7.3, %if.then119.7.3 ]
%fcj_buf.sroa.0.1.7.3 = phi <4 x float> [ %fcj_buf.sroa.0.1.6.3, %if.end212.6.3 ], [ %extractVec199.7.3, %if.then153.7.3 ], [ %fcj_buf.sroa.0.1.6.3, %if.then119.7.3 ]
%1038 = extractelement <4 x float> %fcj_buf.sroa.0.1.7.3, i32 0
store float %1038, float addrspace(3)* %arrayidx217, align 4, !tbaa !39
%1039 = extractelement <4 x float> %fcj_buf.sroa.0.1.7.3, i32 1
store float %1039, float addrspace(3)* %arrayidx219, align 4, !tbaa !39
%1040 = extractelement <4 x float> %fcj_buf.sroa.0.1.7.3, i32 2
store float %1040, float addrspace(3)* %arrayidx221, align 4, !tbaa !39
tail call fastcc void @reduce_force_j_generic(float addrspace(3)* %2, float addrspace(1)* %f, i32 %x.i, i32 %y.i, i32 %add108.3)
br label %for.inc227
}
; Function Attrs: nounwind
define void @nbnxn_kernel_ElecEw_VdwLJ_VF_opencl(i32 %ntypes, i32 %nbparam_params_eeltype, i32 %nbparam_params_vdwtype, float %nbparam_params_epsfac, float %nbparam_params_c_rf, float %nbparam_params_two_k_rf, float %nbparam_params_ewald_beta, float %nbparam_params_sh_ewald, float %nbparam_params_sh_lj_ewald, float %nbparam_params_ewaldcoeff_lj, float %nbparam_params_rcoulomb_sq, float %nbparam_params_rvdw_sq, float %nbparam_params_rvdw_switch, float %nbparam_params_rlist_sq, float %nbparam_params_dispersion_shift_c2, float %nbparam_params_dispersion_shift_c3, float %nbparam_params_dispersion_shift_cpot, float %nbparam_params_repulsion_shift_c2, float %nbparam_params_repulsion_shift_c3, float %nbparam_params_repulsion_shift_cpot, float %nbparam_params_vdw_switch_c3, float %nbparam_params_vdw_switch_c4, float %nbparam_params_vdw_switch_c5, float %nbparam_params_coulomb_tab_size, float %nbparam_params_coulomb_tab_scale, <4 x float> addrspace(1)* noalias nocapture readonly %xq, float addrspace(1)* noalias nocapture %f, float addrspace(1)* noalias nocapture %e_lj, float addrspace(1)* noalias nocapture %e_el, float addrspace(1)* noalias nocapture %fshift, i32 addrspace(1)* noalias nocapture readonly %atom_types, float addrspace(1)* noalias nocapture readonly %shift_vec, float addrspace(2)* nocapture readonly %nbfp_climg2d, float addrspace(2)* nocapture readnone %nbfp_comb_climg2d, float addrspace(2)* nocapture readnone %coulomb_tab_climg2d, %struct.nbnxn_sci_t addrspace(1)* nocapture readonly %pl_sci, %struct.nbnxn_cj4_t addrspace(1)* nocapture readonly %pl_cj4, %struct.nbnxn_excl_t addrspace(1)* nocapture readonly %excl, i32 %bCalcFshift, <4 x float> addrspace(3)* nocapture %xqib, float addrspace(1)* nocapture readnone %debug_buffer) #0 {
entry:
%fshift_buf = alloca float, align 4
%mul = fmul float %nbparam_params_ewald_beta, %nbparam_params_ewald_beta
%mul19 = fmul float %mul, %nbparam_params_ewald_beta
%x.i = tail call i32 @llvm.amdgcn.workitem.id.x() #5, !range !35
%y.i = tail call i32 @llvm.amdgcn.workitem.id.y() #5, !range !35
%x.i581 = tail call i32 @llvm.r600.read.local.size.x() #2
%mul25 = mul i32 %x.i581, %y.i
%add = add i32 %mul25, %x.i
%x.i582 = tail call i32 @llvm.amdgcn.workgroup.id.x() #5
%div = lshr i32 %add, 5
%0 = bitcast float* %fshift_buf to i8*
call void @llvm.lifetime.start(i64 4, i8* %0) #5
%add.ptr = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 64
%1 = bitcast <4 x float> addrspace(3)* %add.ptr to i32 addrspace(3)*
%2 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 66, i32 0
%3 = sext i32 %x.i582 to i64
%nb_sci.sroa.0.0..sroa_idx = getelementptr inbounds %struct.nbnxn_sci_t, %struct.nbnxn_sci_t addrspace(1)* %pl_sci, i64 %3, i32 0
%nb_sci.sroa.0.0.copyload = load i32, i32 addrspace(1)* %nb_sci.sroa.0.0..sroa_idx, align 4
%nb_sci.sroa.4.0..sroa_idx339 = getelementptr inbounds %struct.nbnxn_sci_t, %struct.nbnxn_sci_t addrspace(1)* %pl_sci, i64 %3, i32 1
%nb_sci.sroa.4.0.copyload = load i32, i32 addrspace(1)* %nb_sci.sroa.4.0..sroa_idx339, align 4
%nb_sci.sroa.11.0..sroa_idx347 = getelementptr inbounds %struct.nbnxn_sci_t, %struct.nbnxn_sci_t addrspace(1)* %pl_sci, i64 %3, i32 2
%nb_sci.sroa.11.0.copyload = load i32, i32 addrspace(1)* %nb_sci.sroa.11.0..sroa_idx347, align 4
%nb_sci.sroa.12.0..sroa_idx349 = getelementptr inbounds %struct.nbnxn_sci_t, %struct.nbnxn_sci_t addrspace(1)* %pl_sci, i64 %3, i32 3
%nb_sci.sroa.12.0.copyload = load i32, i32 addrspace(1)* %nb_sci.sroa.12.0..sroa_idx349, align 4
%mul31 = shl nsw i32 %nb_sci.sroa.0.0.copyload, 3
%add32 = add i32 %mul31, %y.i
%mul33 = shl i32 %add32, 3
%add34 = add i32 %mul33, %x.i
%4 = sext i32 %add34 to i64
%arrayidx35 = getelementptr inbounds <4 x float>, <4 x float> addrspace(1)* %xq, i64 %4
%5 = load <4 x float>, <4 x float> addrspace(1)* %arrayidx35, align 16, !tbaa !36
%mul36 = mul nsw i32 %nb_sci.sroa.4.0.copyload, 3
%6 = sext i32 %mul36 to i64
%arrayidx37 = getelementptr inbounds float, float addrspace(1)* %shift_vec, i64 %6
%7 = load float, float addrspace(1)* %arrayidx37, align 4, !tbaa !39
%vecinit = insertelement <4 x float> undef, float %7, i32 0
%add40 = add nsw i32 %mul36, 1
%8 = sext i32 %add40 to i64
%arrayidx41 = getelementptr inbounds float, float addrspace(1)* %shift_vec, i64 %8
%9 = load float, float addrspace(1)* %arrayidx41, align 4, !tbaa !39
%vecinit42 = insertelement <4 x float> %vecinit, float %9, i32 1
%add45 = add nsw i32 %mul36, 2
%10 = sext i32 %add45 to i64
%arrayidx46 = getelementptr inbounds float, float addrspace(1)* %shift_vec, i64 %10
%11 = load float, float addrspace(1)* %arrayidx46, align 4, !tbaa !39
%vecinit47 = insertelement <4 x float> %vecinit42, float %11, i32 2
%vecinit48 = insertelement <4 x float> %vecinit47, float 0.000000e+00, i32 3
%add49 = fadd <4 x float> %5, %vecinit48
%12 = extractelement <4 x float> %add49, i32 3
%mul51 = fmul float %12, %nbparam_params_epsfac
%13 = insertelement <4 x float> %add49, float %mul51, i32 3
%mul52 = shl nuw nsw i32 %y.i, 3
%add53 = add nuw nsw i32 %mul52, %x.i
%arrayidx54 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 %add53
store <4 x float> %13, <4 x float> addrspace(3)* %arrayidx54, align 16, !tbaa !36
%14 = or i32 %add, 32
%15 = icmp eq i32 %14, 32
br i1 %15, label %if.then, label %if.end
if.then: ; preds = %entry
%add.ptr29 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 66, i32 192
%arrayidx58580 = getelementptr inbounds float, float addrspace(3)* %add.ptr29, i32 %div
%arrayidx58 = bitcast float addrspace(3)* %arrayidx58580 to i32 addrspace(3)*
store volatile i32 0, i32 addrspace(3)* %arrayidx58, align 4, !tbaa !41
br label %if.end
if.end: ; preds = %entry, %if.then
tail call void @llvm.amdgcn.s.barrier() #5
%cmp63 = icmp eq i32 %nb_sci.sroa.4.0.copyload, 22
br i1 %cmp63, label %land.lhs.true, label %for.cond89.preheader
land.lhs.true: ; preds = %if.end
%16 = sext i32 %nb_sci.sroa.11.0.copyload to i64
%arrayidx67 = getelementptr inbounds %struct.nbnxn_cj4_t, %struct.nbnxn_cj4_t addrspace(1)* %pl_cj4, i64 %16, i32 0, i64 0
%17 = load i32, i32 addrspace(1)* %arrayidx67, align 4, !tbaa !41
%cmp69 = icmp eq i32 %17, %mul31
br i1 %cmp69, label %for.body75.preheader, label %for.cond89.preheader
for.body75.preheader: ; preds = %land.lhs.true
%arrayidx78 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 %x.i
%18 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx78, align 16
%19 = extractelement <4 x float> %18, i32 3
%20 = tail call float @llvm.fmuladd.f32(float %19, float %19, float 0.000000e+00)
%add77.1 = add nuw nsw i32 %x.i, 8
%arrayidx78.1 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 %add77.1
%21 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx78.1, align 16
%22 = extractelement <4 x float> %21, i32 3
%23 = tail call float @llvm.fmuladd.f32(float %22, float %22, float %20)
%add77.2 = add nuw nsw i32 %x.i, 16
%arrayidx78.2 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 %add77.2
%24 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx78.2, align 16
%25 = extractelement <4 x float> %24, i32 3
%26 = tail call float @llvm.fmuladd.f32(float %25, float %25, float %23)
%add77.3 = add nuw nsw i32 %x.i, 24
%arrayidx78.3 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 %add77.3
%27 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx78.3, align 16
%28 = extractelement <4 x float> %27, i32 3
%29 = tail call float @llvm.fmuladd.f32(float %28, float %28, float %26)
%add77.4 = add nuw nsw i32 %x.i, 32
%arrayidx78.4 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 %add77.4
%30 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx78.4, align 16
%31 = extractelement <4 x float> %30, i32 3
%32 = tail call float @llvm.fmuladd.f32(float %31, float %31, float %29)
%add77.5 = add nuw nsw i32 %x.i, 40
%arrayidx78.5 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 %add77.5
%33 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx78.5, align 16
%34 = extractelement <4 x float> %33, i32 3
%35 = tail call float @llvm.fmuladd.f32(float %34, float %34, float %32)
%add77.6 = add nuw nsw i32 %x.i, 48
%arrayidx78.6 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 %add77.6
%36 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx78.6, align 16
%37 = extractelement <4 x float> %36, i32 3
%38 = tail call float @llvm.fmuladd.f32(float %37, float %37, float %35)
%add77.7 = add nuw nsw i32 %x.i, 56
%arrayidx78.7 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 %add77.7
%39 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx78.7, align 16
%40 = extractelement <4 x float> %39, i32 3
%41 = tail call float @llvm.fmuladd.f32(float %40, float %40, float %38)
%mul84 = fmul float %nbparam_params_epsfac, 8.000000e+00
%div85 = fdiv float %41, %mul84, !fpmath !46
%mul86 = fmul float %nbparam_params_ewald_beta, 0xBFE20DD760000000
%mul87 = fmul float %mul86, %div85
br label %for.cond89.preheader
for.cond89.preheader: ; preds = %for.body75.preheader, %land.lhs.true, %if.end
%E_el.2.ph = phi float [ 0.000000e+00, %if.end ], [ 0.000000e+00, %land.lhs.true ], [ %mul87, %for.body75.preheader ]
%cmp90599 = icmp slt i32 %nb_sci.sroa.11.0.copyload, %nb_sci.sroa.12.0.copyload
br i1 %cmp90599, label %for.body92.lr.ph, label %for.cond89.preheader.for.end275_crit_edge
for.cond89.preheader.for.end275_crit_edge: ; preds = %for.cond89.preheader
%.pre1108 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 66, i32 %add
%.pre1109 = add i32 %add, 64
%.pre1110 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 66, i32 %.pre1109
%.pre1111 = add i32 %add, 128
%.pre1112 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 66, i32 %.pre1111
%.pre = shl i32 %nb_sci.sroa.0.0.copyload, 6
%.pre1154 = add i32 %.pre, %x.i
%.pre1155 = or i32 %.pre, 8
%.pre1156 = add i32 %.pre1155, %x.i
%.pre1157 = or i32 %.pre, 16
%.pre1158 = add i32 %.pre1157, %x.i
%.pre1159 = or i32 %.pre, 24
%.pre1160 = add i32 %.pre1159, %x.i
%.pre1161 = or i32 %.pre, 32
%.pre1162 = add i32 %.pre1161, %x.i
%.pre1163 = or i32 %.pre, 40
%.pre1164 = add i32 %.pre1163, %x.i
%.pre1165 = or i32 %.pre, 48
%.pre1166 = add i32 %.pre1165, %x.i
%.pre1167 = or i32 %.pre, 56
%.pre1168 = add i32 %.pre1167, %x.i
br label %for.end275
for.body92.lr.ph: ; preds = %for.cond89.preheader
%42 = zext i32 %div to i64
%and = and i32 %add, 31
%43 = zext i32 %and to i64
%44 = or i32 %y.i, 4
%45 = icmp eq i32 %44, 4
%cmp108 = icmp ult i32 %x.i, 4
%or.cond319 = and i1 %cmp108, %45
%46 = zext i32 %x.i to i64
%add116 = add nuw nsw i32 %y.i, %x.i
%arrayidx117 = getelementptr inbounds i32, i32 addrspace(3)* %1, i32 %add116
%mul131 = and i32 %y.i, 4
%cmp176 = icmp ugt i32 %y.i, %x.i
%arrayidx263 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 66, i32 %add
%add264 = add i32 %add, 64
%arrayidx265 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 66, i32 %add264
%add266 = add i32 %add, 128
%arrayidx267 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 66, i32 %add266
%47 = sext i32 %nb_sci.sroa.11.0.copyload to i64
%add133.3 = or i32 %mul131, 3
%arrayidx134.3 = getelementptr inbounds i32, i32 addrspace(3)* %1, i32 %add133.3
%48 = or i32 %mul31, 7
%add153.7.3 = add nuw nsw i32 %x.i, 56
%arrayidx154.7.3 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 %add153.7.3
%add149.7.3 = shl i32 %nb_sci.sroa.0.0.copyload, 6
%mul150.7.3 = or i32 %add149.7.3, 56
%add151.7.3 = add i32 %mul150.7.3, %x.i
%49 = sext i32 %add151.7.3 to i64
%arrayidx183.7.3 = getelementptr inbounds i32, i32 addrspace(1)* %atom_types, i64 %49
%50 = or i32 %mul31, 6
%add153.6.3 = add nuw nsw i32 %x.i, 48
%arrayidx154.6.3 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 %add153.6.3
%mul150.6.3 = or i32 %add149.7.3, 48
%add151.6.3 = add i32 %mul150.6.3, %x.i
%51 = sext i32 %add151.6.3 to i64
%arrayidx183.6.3 = getelementptr inbounds i32, i32 addrspace(1)* %atom_types, i64 %51
%52 = or i32 %mul31, 5
%add153.5.3 = add nuw nsw i32 %x.i, 40
%arrayidx154.5.3 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 %add153.5.3
%mul150.5.3 = or i32 %add149.7.3, 40
%add151.5.3 = add i32 %mul150.5.3, %x.i
%53 = sext i32 %add151.5.3 to i64
%arrayidx183.5.3 = getelementptr inbounds i32, i32 addrspace(1)* %atom_types, i64 %53
%54 = or i32 %mul31, 4
%add153.4.3 = add nuw nsw i32 %x.i, 32
%arrayidx154.4.3 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 %add153.4.3
%mul150.4.3 = or i32 %add149.7.3, 32
%add151.4.3 = add i32 %mul150.4.3, %x.i
%55 = sext i32 %add151.4.3 to i64
%arrayidx183.4.3 = getelementptr inbounds i32, i32 addrspace(1)* %atom_types, i64 %55
%56 = or i32 %mul31, 3
%add153.3.3 = add nuw nsw i32 %x.i, 24
%arrayidx154.3.3 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 %add153.3.3
%mul150.3.3 = or i32 %add149.7.3, 24
%add151.3.3 = add i32 %mul150.3.3, %x.i
%57 = sext i32 %add151.3.3 to i64
%arrayidx183.3.3 = getelementptr inbounds i32, i32 addrspace(1)* %atom_types, i64 %57
%58 = or i32 %mul31, 2
%add153.2.3 = add nuw nsw i32 %x.i, 16
%arrayidx154.2.3 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 %add153.2.3
%mul150.2.3 = or i32 %add149.7.3, 16
%add151.2.3 = add i32 %mul150.2.3, %x.i
%59 = sext i32 %add151.2.3 to i64
%arrayidx183.2.3 = getelementptr inbounds i32, i32 addrspace(1)* %atom_types, i64 %59
%60 = or i32 %mul31, 1
%add153.1.3 = add nuw nsw i32 %x.i, 8
%arrayidx154.1.3 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 %add153.1.3
%mul150.1.3 = or i32 %add149.7.3, 8
%add151.1.3 = add i32 %mul150.1.3, %x.i
%61 = sext i32 %add151.1.3 to i64
%arrayidx183.1.3 = getelementptr inbounds i32, i32 addrspace(1)* %atom_types, i64 %61
%arrayidx154.3939 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 %x.i
%add151.3954 = add i32 %add149.7.3, %x.i
%62 = sext i32 %add151.3954 to i64
%arrayidx183.3955 = getelementptr inbounds i32, i32 addrspace(1)* %atom_types, i64 %62
%add133.2 = or i32 %mul131, 2
%arrayidx134.2 = getelementptr inbounds i32, i32 addrspace(3)* %1, i32 %add133.2
%add133.1 = or i32 %mul131, 1
%arrayidx134.1 = getelementptr inbounds i32, i32 addrspace(3)* %1, i32 %add133.1
%arrayidx134 = getelementptr inbounds i32, i32 addrspace(3)* %1, i32 %mul131
br label %for.body92
for.body92: ; preds = %for.inc273, %for.body92.lr.ph
%fci_buf.sroa.72.0 = phi <4 x float> [ <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float undef>, %for.body92.lr.ph ], [ %fci_buf.sroa.72.2, %for.inc273 ]
%fci_buf.sroa.62.0 = phi <4 x float> [ <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float undef>, %for.body92.lr.ph ], [ %fci_buf.sroa.62.2, %for.inc273 ]
%fci_buf.sroa.52.0 = phi <4 x float> [ <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float undef>, %for.body92.lr.ph ], [ %fci_buf.sroa.52.2, %for.inc273 ]
%fci_buf.sroa.42.0 = phi <4 x float> [ <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float undef>, %for.body92.lr.ph ], [ %fci_buf.sroa.42.2, %for.inc273 ]
%fci_buf.sroa.32.0 = phi <4 x float> [ <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float undef>, %for.body92.lr.ph ], [ %fci_buf.sroa.32.2, %for.inc273 ]
%fci_buf.sroa.22.0 = phi <4 x float> [ <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float undef>, %for.body92.lr.ph ], [ %fci_buf.sroa.22.2, %for.inc273 ]
%fci_buf.sroa.12.0 = phi <4 x float> [ <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float undef>, %for.body92.lr.ph ], [ %fci_buf.sroa.12.2, %for.inc273 ]
%fci_buf.sroa.0.0 = phi <4 x float> [ <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float undef>, %for.body92.lr.ph ], [ %fci_buf.sroa.0.3, %for.inc273 ]
%indvars.iv = phi i64 [ %47, %for.body92.lr.ph ], [ %indvars.iv.next, %for.inc273 ]
%E_lj.0601 = phi float [ 0.000000e+00, %for.body92.lr.ph ], [ %E_lj.5, %for.inc273 ]
%E_el.2600 = phi float [ %E_el.2.ph, %for.body92.lr.ph ], [ %E_el.7, %for.inc273 ]
%excl_ind = getelementptr inbounds %struct.nbnxn_cj4_t, %struct.nbnxn_cj4_t addrspace(1)* %pl_cj4, i64 %indvars.iv, i32 1, i64 %42, i32 1
%63 = load i32, i32 addrspace(1)* %excl_ind, align 4, !tbaa !43
%imask98 = getelementptr inbounds %struct.nbnxn_cj4_t, %struct.nbnxn_cj4_t addrspace(1)* %pl_cj4, i64 %indvars.iv, i32 1, i64 %42, i32 0
%64 = load i32, i32 addrspace(1)* %imask98, align 4, !tbaa !45
%65 = sext i32 %63 to i64
%arrayidx100 = getelementptr inbounds %struct.nbnxn_excl_t, %struct.nbnxn_excl_t addrspace(1)* %excl, i64 %65, i32 0, i64 %43
%66 = load i32, i32 addrspace(1)* %arrayidx100, align 4, !tbaa !41
%tobool = icmp eq i32 %64, 0
br i1 %tobool, label %for.inc273, label %if.then101
if.then101: ; preds = %for.body92
br i1 %or.cond319, label %if.then110, label %for.body122.preheader
if.then110: ; preds = %if.then101
%arrayidx113 = getelementptr inbounds %struct.nbnxn_cj4_t, %struct.nbnxn_cj4_t addrspace(1)* %pl_cj4, i64 %indvars.iv, i32 0, i64 %46
%67 = load i32, i32 addrspace(1)* %arrayidx113, align 4, !tbaa !41
store i32 %67, i32 addrspace(3)* %arrayidx117, align 4, !tbaa !41
br label %for.body122.preheader
for.body122.preheader: ; preds = %if.then101, %if.then110
%and124 = and i32 %64, 255
%tobool125 = icmp eq i32 %and124, 0
br i1 %tobool125, label %for.inc269, label %if.then126
if.then126: ; preds = %for.body122.preheader
%68 = load i32, i32 addrspace(3)* %arrayidx134, align 4, !tbaa !41
%mul135 = shl nsw i32 %68, 3
%add136 = add i32 %mul135, %y.i
%69 = sext i32 %add136 to i64
%arrayidx137 = getelementptr inbounds <4 x float>, <4 x float> addrspace(1)* %xq, i64 %69
%70 = load <4 x float>, <4 x float> addrspace(1)* %arrayidx137, align 16, !tbaa !36
%71 = extractelement <4 x float> %70, i32 3
%arrayidx139 = getelementptr inbounds i32, i32 addrspace(1)* %atom_types, i64 %69
%72 = load i32, i32 addrspace(1)* %arrayidx139, align 4, !tbaa !41
%and145 = and i32 %64, 1
%tobool146 = icmp eq i32 %and145, 0
br i1 %tobool146, label %if.end258, label %if.then147
if.then147: ; preds = %if.then126
%73 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx154.3939, align 16, !tbaa !36
%74 = fsub <4 x float> %73, %70
%75 = extractelement <4 x float> %74, i32 0
%76 = extractelement <4 x float> %74, i32 1
%mul3.i.i589 = fmul float %76, %76
%77 = tail call float @llvm.fmuladd.f32(float %75, float %75, float %mul3.i.i589) #5
%78 = extractelement <4 x float> %74, i32 2
%79 = tail call float @llvm.fmuladd.f32(float %78, float %78, float %77) #5
%and168 = and i32 %66, 1
%tobool169 = icmp ne i32 %and168, 0
%cond = select i1 %tobool169, float 1.000000e+00, float 0.000000e+00
%cmp174 = icmp eq i32 %mul31, %68
%or.cond = and i1 %cmp63, %cmp174
%not.or.cond = xor i1 %or.cond, true
%cmp176. = or i1 %cmp176, %not.or.cond
%conv178 = uitofp i1 %cmp176. to float
%mul179 = fmul float %conv178, %nbparam_params_rcoulomb_sq
%cmp180 = fcmp olt float %79, %mul179
br i1 %cmp180, label %if.then182, label %if.end258
if.then182: ; preds = %if.then147
%extractVec166 = shufflevector <4 x float> %74, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%80 = extractelement <4 x float> %73, i32 3
%81 = load i32, i32 addrspace(1)* %arrayidx183.3955, align 4, !tbaa !41
%mul184 = mul nsw i32 %81, %ntypes
%add185 = add nsw i32 %mul184, %72
%mul186 = shl nsw i32 %add185, 1
%82 = sext i32 %mul186 to i64
%arrayidx187 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %82
%83 = load float, float addrspace(2)* %arrayidx187, align 4, !tbaa !39
%add191 = or i32 %mul186, 1
%84 = sext i32 %add191 to i64
%arrayidx192 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %84
%85 = load float, float addrspace(2)* %arrayidx192, align 4, !tbaa !39
%sub193 = fsub float 1.000000e+00, %cond
%86 = tail call float @llvm.fmuladd.f32(float %sub193, float 0x3D71979980000000, float %79)
%cmp.i.i587 = fcmp olt float %86, 0.000000e+00
%call.i.i = tail call float @llvm.sqrt.f32(float %86) #6
%call.i.i.op = fdiv float 1.000000e+00, %call.i.i
%div196 = select i1 %cmp.i.i587, float 0x7FF8000000000000, float %call.i.i.op
%mul197 = fmul float %div196, %div196
%mul198 = fmul float %mul197, %mul197
%mul199 = fmul float %mul197, %mul198
%mul200 = fmul float %cond, %mul199
%neg = fsub float -0.000000e+00, %83
%87 = tail call float @llvm.fmuladd.f32(float %85, float %mul200, float %neg)
%mul202 = fmul float %mul200, %87
%mul203 = fmul float %mul197, %mul202
%88 = tail call float @llvm.fmuladd.f32(float %mul200, float %mul200, float %nbparam_params_repulsion_shift_cpot)
%mul207 = fmul float %88, %85
%add211 = fadd float %mul200, %nbparam_params_dispersion_shift_cpot
%mul212 = fmul float %add211, %83
%mul213 = fmul float %mul212, 0x3FC5555560000000
%neg214 = fsub float -0.000000e+00, %mul213
%89 = tail call float @llvm.fmuladd.f32(float %mul207, float 0x3FB5555540000000, float %neg214)
%mul215 = fmul float %cond, %89
%add216 = fadd float %E_lj.0601, %mul215
%mul217 = fmul float %71, %80
%mul218 = fmul float %cond, %mul197
%mul220 = fmul float %mul, %86
%mul.i585 = fmul float %mul220, %mul220
%90 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i585, float 0x3FBDA79640000000) #5
%91 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i585, float 0x3FE03C5780000000) #5
%92 = tail call float @llvm.fmuladd.f32(float %90, float %mul.i585, float 1.000000e+00) #5
%93 = tail call float @llvm.fmuladd.f32(float %91, float %mul220, float %92) #5
%div.i586 = fdiv float 1.000000e+00, %93, !fpmath !46
%94 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i585, float 0xBF0BFF7260000000) #5
%95 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i585, float 0x3F50794180000000) #5
%96 = tail call float @llvm.fmuladd.f32(float %94, float %mul.i585, float 0xBF93BDB200000000) #5
%97 = tail call float @llvm.fmuladd.f32(float %95, float %mul.i585, float 0x3FB1D5E760000000) #5
%98 = tail call float @llvm.fmuladd.f32(float %96, float %mul.i585, float 0xBFE81272E0000000) #5
%99 = tail call float @llvm.fmuladd.f32(float %97, float %mul220, float %98) #5
%mul11.i = fmul float %99, %div.i586
%mul222 = fmul float %mul19, %mul11.i
%100 = tail call float @llvm.fmuladd.f32(float %mul218, float %div196, float %mul222)
%101 = tail call float @llvm.fmuladd.f32(float %mul217, float %100, float %mul203)
%mul225 = fmul float %86, %div196
%mul226 = fmul float %mul225, %nbparam_params_ewald_beta
%fabs.i = tail call float @llvm.fabs.f32(float %mul226) #5
%and.i = bitcast float %fabs.i to i32
%mul.i = fmul float %mul226, %mul226
%div.i = fdiv float 1.000000e+00, %mul.i, !fpmath !46
%sub.i = fadd float %fabs.i, -1.000000e+00
%cmp.i583 = fcmp olt float %fabs.i, 1.250000e+00
%cond.i = select i1 %cmp.i583, float %sub.i, float %div.i
%cmp2.i = fcmp olt float %fabs.i, 8.437500e-01
%cond6.i = select i1 %cmp2.i, float %mul.i, float %cond.i
%102 = tail call float @llvm.fmuladd.f32(float %cond6.i, float 0xC07E384EA0000000, float 0xC090046160000000) #5
%103 = tail call float @llvm.fmuladd.f32(float %cond6.i, float %102, float 0xC083EC8820000000) #5
%104 = tail call float @llvm.fmuladd.f32(float %cond6.i, float %103, float 0xC064145D40000000) #5
%105 = tail call float @llvm.fmuladd.f32(float %cond6.i, float %104, float 0xC031C20960000000) #5
%106 = tail call float @llvm.fmuladd.f32(float %cond6.i, float %105, float 0xBFE993BA80000000) #5
%107 = tail call float @llvm.fmuladd.f32(float %cond6.i, float %106, float 0xBF84341240000000) #5
%108 = tail call float @llvm.fmuladd.f32(float %cond6.i, float 0xC03670E240000000, float 0x407DA874E0000000) #5
%109 = tail call float @llvm.fmuladd.f32(float %cond6.i, float %108, float 0x40A3F219C0000000) #5
%110 = tail call float @llvm.fmuladd.f32(float %cond6.i, float %109, float 0x40A8FFB760000000) #5
%111 = tail call float @llvm.fmuladd.f32(float %cond6.i, float %110, float 0x409802EB20000000) #5
%112 = tail call float @llvm.fmuladd.f32(float %cond6.i, float %111, float 0x40745CAE20000000) #5
%113 = tail call float @llvm.fmuladd.f32(float %cond6.i, float %112, float 0x403E568B20000000) #5
%114 = tail call float @llvm.fmuladd.f32(float %cond6.i, float 0xC023A0EFC0000000, float 0xC054526560000000) #5
%115 = tail call float @llvm.fmuladd.f32(float %cond6.i, float %114, float 0xC067135CE0000000) #5
%116 = tail call float @llvm.fmuladd.f32(float %cond6.i, float %115, float 0xC0644CB180000000) #5
%117 = tail call float @llvm.fmuladd.f32(float %cond6.i, float %116, float 0xC04F300AE0000000) #5
%118 = tail call float @llvm.fmuladd.f32(float %cond6.i, float %117, float 0xC0251E0440000000) #5
%119 = tail call float @llvm.fmuladd.f32(float %cond6.i, float %118, float 0xBFE63416E0000000) #5
%120 = tail call float @llvm.fmuladd.f32(float %cond6.i, float %119, float 0xBF84341260000000) #5
%121 = tail call float @llvm.fmuladd.f32(float %cond6.i, float 0xBFAEEFF2E0000000, float 0x401A47EF80000000) #5
%122 = tail call float @llvm.fmuladd.f32(float %cond6.i, float %121, float 0x405B28A3E0000000) #5
%123 = tail call float @llvm.fmuladd.f32(float %cond6.i, float %122, float 0x407AD02160000000) #5
%124 = tail call float @llvm.fmuladd.f32(float %cond6.i, float %123, float 0x40842B1920000000) #5
%125 = tail call float @llvm.fmuladd.f32(float %cond6.i, float %124, float 0x407B290DE0000000) #5
%126 = tail call float @llvm.fmuladd.f32(float %cond6.i, float %125, float 0x4061350C60000000) #5
%127 = tail call float @llvm.fmuladd.f32(float %cond6.i, float %126, float 0x4033A6B9C0000000) #5
%cmp32.i = fcmp olt float %fabs.i, 0x4006DB6DA0000000
%cond36.i = select i1 %cmp32.i, float %120, float %107
%cond41.i = select i1 %cmp32.i, float %127, float %113
%128 = tail call float @llvm.fmuladd.f32(float %cond6.i, float 0xBF61BF3800000000, float 0x3FA22A3660000000) #5
%129 = tail call float @llvm.fmuladd.f32(float %cond6.i, float %128, float 0xBFBC639840000000) #5
%130 = tail call float @llvm.fmuladd.f32(float %cond6.i, float %129, float 0x3FD45FCA80000000) #5
%131 = tail call float @llvm.fmuladd.f32(float %cond6.i, float %130, float 0xBFD7D24100000000) #5
%132 = tail call float @llvm.fmuladd.f32(float %cond6.i, float %131, float 0x3FDA8D00A0000000) #5
%133 = tail call float @llvm.fmuladd.f32(float %cond6.i, float %132, float 0xBF6359B8C0000000) #5
%134 = tail call float @llvm.fmuladd.f32(float %cond6.i, float 0x3F888B5460000000, float 0x3F8BEDC260000000) #5
%135 = tail call float @llvm.fmuladd.f32(float %cond6.i, float %134, float 0x3FC02660E0000000) #5
%136 = tail call float @llvm.fmuladd.f32(float %cond6.i, float %135, float 0x3FB2635CE0000000) #5
%137 = tail call float @llvm.fmuladd.f32(float %cond6.i, float %136, float 0x3FE14AF0A0000000) #5
%138 = tail call float @llvm.fmuladd.f32(float %cond6.i, float %137, float 0x3FBB3E6620000000) #5
%cond57.i = select i1 %cmp.i583, float %133, float %cond36.i
%cond62.i = select i1 %cmp.i583, float %138, float %cond41.i
%139 = tail call float @llvm.fmuladd.f32(float %cond6.i, float 0xBEF8EAD620000000, float 0xBF77A29120000000) #5
%140 = tail call float @llvm.fmuladd.f32(float %cond6.i, float %139, float 0xBF9D2A51E0000000) #5
%141 = tail call float @llvm.fmuladd.f32(float %cond6.i, float %140, float 0xBFD4CD7D60000000) #5
%142 = tail call float @llvm.fmuladd.f32(float %cond6.i, float %141, float 0x3FC06EBA80000000) #5
%143 = tail call float @llvm.fmuladd.f32(float %cond6.i, float 0xBED09C4340000000, float 0x3F215DC920000000) #5
%144 = tail call float @llvm.fmuladd.f32(float %cond6.i, float %143, float 0x3F74D022C0000000) #5
%145 = tail call float @llvm.fmuladd.f32(float %cond6.i, float %144, float 0x3FB0A54C60000000) #5
%146 = tail call float @llvm.fmuladd.f32(float %cond6.i, float %145, float 0x3FD97779C0000000) #5
%cond75.i = select i1 %cmp2.i, float %142, float %cond57.i
%cond80.i = select i1 %cmp2.i, float %146, float %cond62.i
%147 = tail call float @llvm.fmuladd.f32(float %cond6.i, float %cond80.i, float 1.000000e+00) #5
%div82.i = fdiv float %cond75.i, %147, !fpmath !46
%and83.i = and i32 %and.i, -4096
%astype84.i = bitcast i32 %and83.i to float
%sub85.i = fsub float -0.000000e+00, %astype84.i
%148 = tail call float @llvm.fmuladd.f32(float %sub85.i, float %astype84.i, float -5.625000e-01) #5
%cmp.i2.i = fcmp olt float %148, 0.000000e+00
%cond.i3.i = select i1 %cmp.i2.i, float -5.000000e-01, float 5.000000e-01
%149 = tail call float @llvm.fmuladd.f32(float %148, float 0x3FF7154760000000, float %cond.i3.i) #5
%conv.i4.i = fptosi float %149 to i32
%conv1.i5.i = sitofp i32 %conv.i4.i to float
%150 = tail call float @llvm.fmuladd.f32(float %conv1.i5.i, float 0xBFE62E3000000000, float %148) #5
%mul.i6.i = fmul float %conv1.i5.i, 0xBEE2FEFA20000000
%add.i7.i = fadd float %150, %mul.i6.i
%mul3.i8.i = fmul float %add.i7.i, %add.i7.i
%151 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i, float 0x3E66376980000000, float 0xBEBBBD41C0000000) #5
%152 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i, float %151, float 0x3F11566AA0000000) #5
%153 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i, float %152, float 0xBF66C16C20000000) #5
%154 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i, float %153, float 0x3FC5555560000000) #5
%sub8.i9.i = fsub float -0.000000e+00, %154
%155 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i, float %sub8.i9.i, float %add.i7.i) #5
%sub10.i10.i = fsub float -0.000000e+00, %mul.i6.i
%mul11.i11.i = fmul float %add.i7.i, %155
%sub12.i12.i = fsub float 2.000000e+00, %155
%div.i13.i = fdiv float %mul11.i11.i, %sub12.i12.i, !fpmath !46
%sub13.i14.i = fsub float %sub10.i10.i, %div.i13.i
%sub14.i15.i = fsub float %sub13.i14.i, %150
%sub15.i16.i = fsub float 1.000000e+00, %sub14.i15.i
%astype.i17.i = bitcast float %sub15.i16.i to i32
%shl.i18.i = shl i32 %conv.i4.i, 23
%add16.i19.i = add nsw i32 %astype.i17.i, %shl.i18.i
%astype17.i20.i = bitcast i32 %add16.i19.i to float
%cmp18.i21.i = fcmp olt float %148, 0xC055D589E0000000
%cond20.i22.i = select i1 %cmp18.i21.i, float 0.000000e+00, float %astype17.i20.i
%cmp21.i23.i = fcmp olt float %148, 0x40562E4300000000
%cond26.i24.i = select i1 %cmp21.i23.i, float %cond20.i22.i, float 0x7FF0000000000000
%cmp.i.i25.i = fcmp uno float %148, 0.000000e+00
%cond31.i26.i = select i1 %cmp.i.i25.i, float %148, float %cond26.i24.i
%sub88.i = fsub float %astype84.i, %fabs.i
%add.i584 = fadd float %fabs.i, %astype84.i
%156 = tail call float @llvm.fmuladd.f32(float %sub88.i, float %add.i584, float %div82.i) #5
%cmp.i1.i = fcmp olt float %156, 0.000000e+00
%cond.i.i = select i1 %cmp.i1.i, float -5.000000e-01, float 5.000000e-01
%157 = tail call float @llvm.fmuladd.f32(float %156, float 0x3FF7154760000000, float %cond.i.i) #5
%conv.i.i = fptosi float %157 to i32
%conv1.i.i = sitofp i32 %conv.i.i to float
%158 = tail call float @llvm.fmuladd.f32(float %conv1.i.i, float 0xBFE62E3000000000, float %156) #5
%mul.i.i = fmul float %conv1.i.i, 0xBEE2FEFA20000000
%add.i.i = fadd float %158, %mul.i.i
%mul3.i.i = fmul float %add.i.i, %add.i.i
%159 = tail call float @llvm.fmuladd.f32(float %mul3.i.i, float 0x3E66376980000000, float 0xBEBBBD41C0000000) #5
%160 = tail call float @llvm.fmuladd.f32(float %mul3.i.i, float %159, float 0x3F11566AA0000000) #5
%161 = tail call float @llvm.fmuladd.f32(float %mul3.i.i, float %160, float 0xBF66C16C20000000) #5
%162 = tail call float @llvm.fmuladd.f32(float %mul3.i.i, float %161, float 0x3FC5555560000000) #5
%sub8.i.i = fsub float -0.000000e+00, %162
%163 = tail call float @llvm.fmuladd.f32(float %mul3.i.i, float %sub8.i.i, float %add.i.i) #5
%sub10.i.i = fsub float -0.000000e+00, %mul.i.i
%mul11.i.i = fmul float %add.i.i, %163
%sub12.i.i = fsub float 2.000000e+00, %163
%div.i.i = fdiv float %mul11.i.i, %sub12.i.i, !fpmath !46
%sub13.i.i = fsub float %sub10.i.i, %div.i.i
%sub14.i.i = fsub float %sub13.i.i, %158
%sub15.i.i = fsub float 1.000000e+00, %sub14.i.i
%astype.i.i = bitcast float %sub15.i.i to i32
%shl.i.i = shl i32 %conv.i.i, 23
%add16.i.i = add nsw i32 %astype.i.i, %shl.i.i
%astype17.i.i = bitcast i32 %add16.i.i to float
%cmp18.i.i = fcmp olt float %156, 0xC055D589E0000000
%cond20.i.i = select i1 %cmp18.i.i, float 0.000000e+00, float %astype17.i.i
%cmp21.i.i = fcmp olt float %156, 0x40562E4300000000
%cond26.i.i = select i1 %cmp21.i.i, float %cond20.i.i, float 0x7FF0000000000000
%cmp.i.i.i = fcmp uno float %156, 0.000000e+00
%cond31.i.i = select i1 %cmp.i.i.i, float %156, float %cond26.i.i
%mul91.i = fmul float %cond31.i26.i, %cond31.i.i
%div92.i = fdiv float %mul91.i, %fabs.i, !fpmath !46
%sub93.i = fsub float 2.000000e+00, %div92.i
%cmp94.i = fcmp olt float %mul226, 0.000000e+00
%cond98.i = select i1 %cmp94.i, float %sub93.i, float %div92.i
%cmp99.i = fcmp olt float %fabs.i, 2.800000e+01
%cond103.i = select i1 %cmp99.i, float %cond98.i, float 0.000000e+00
%sub104.i = fsub float 0x3FC3D4FA80000000, %div82.i
%add105.i = fadd float %div82.i, 0x3FEB0AC160000000
%add106.i = fadd float %add105.i, 1.000000e+00
%cond111.i = select i1 %cmp94.i, float %add106.i, float %sub104.i
%cond116.i = select i1 %cmp.i583, float %cond111.i, float %cond103.i
%sub117.i = fadd float %mul226, -5.000000e-01
%164 = tail call float @llvm.fmuladd.f32(float %mul226, float %div82.i, float %sub117.i) #5
%sub119.i = fsub float 5.000000e-01, %164
%cond124.i = select i1 %cmp2.i, float %sub119.i, float %cond116.i
%cmp125.i = fcmp olt float %mul226, -6.000000e+00
%cond129.i = select i1 %cmp125.i, float 2.000000e+00, float %cond124.i
%cmp.i.i = fcmp uno float %mul226, 0.000000e+00
%cond134.i = select i1 %cmp.i.i, float %mul226, float %cond129.i
%mul229 = fmul float %cond, %nbparam_params_sh_ewald
%neg230 = fsub float -0.000000e+00, %mul229
%165 = tail call float @llvm.fmuladd.f32(float %div196, float %cond134.i, float %neg230)
%166 = tail call float @llvm.fmuladd.f32(float %mul217, float %165, float %E_el.2600)
%splat.splatinsert = insertelement <3 x float> undef, float %101, i32 0
%splat.splat = shufflevector <3 x float> %splat.splatinsert, <3 x float> undef, <3 x i32> zeroinitializer
%mul235 = fmul <3 x float> %extractVec166, %splat.splat
%sub244 = fsub <3 x float> zeroinitializer, %mul235
%extractVec245 = shufflevector <3 x float> %sub244, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec253 = shufflevector <4 x float> %fci_buf.sroa.0.0, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add254 = fadd <3 x float> %extractVec253, %mul235
%extractVec255 = shufflevector <3 x float> %add254, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end258
if.end258: ; preds = %if.then126, %if.then147, %if.then182
%fci_buf.sroa.0.1 = phi <4 x float> [ %fci_buf.sroa.0.0, %if.then126 ], [ %extractVec255, %if.then182 ], [ %fci_buf.sroa.0.0, %if.then147 ]
%E_el.5 = phi float [ %E_el.2600, %if.then126 ], [ %166, %if.then182 ], [ %E_el.2600, %if.then147 ]
%E_lj.3 = phi float [ %E_lj.0601, %if.then126 ], [ %add216, %if.then182 ], [ %E_lj.0601, %if.then147 ]
%fcj_buf.sroa.0.1 = phi <4 x float> [ <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float undef>, %if.then126 ], [ %extractVec245, %if.then182 ], [ <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float undef>, %if.then147 ]
%and145.1 = and i32 %64, 2
%tobool146.1 = icmp eq i32 %and145.1, 0
br i1 %tobool146.1, label %if.end258.1, label %if.then147.1
for.inc269: ; preds = %for.body122.preheader, %if.end258.7
%fci_buf.sroa.72.1 = phi <4 x float> [ %fci_buf.sroa.72.0, %for.body122.preheader ], [ %fci_buf.sroa.72.4, %if.end258.7 ]
%fci_buf.sroa.62.1 = phi <4 x float> [ %fci_buf.sroa.62.0, %for.body122.preheader ], [ %fci_buf.sroa.62.3, %if.end258.7 ]
%fci_buf.sroa.52.1 = phi <4 x float> [ %fci_buf.sroa.52.0, %for.body122.preheader ], [ %fci_buf.sroa.52.3, %if.end258.7 ]
%fci_buf.sroa.42.1 = phi <4 x float> [ %fci_buf.sroa.42.0, %for.body122.preheader ], [ %fci_buf.sroa.42.3, %if.end258.7 ]
%fci_buf.sroa.32.1 = phi <4 x float> [ %fci_buf.sroa.32.0, %for.body122.preheader ], [ %fci_buf.sroa.32.3, %if.end258.7 ]
%fci_buf.sroa.22.1 = phi <4 x float> [ %fci_buf.sroa.22.0, %for.body122.preheader ], [ %fci_buf.sroa.22.3, %if.end258.7 ]
%fci_buf.sroa.12.1 = phi <4 x float> [ %fci_buf.sroa.12.0, %for.body122.preheader ], [ %fci_buf.sroa.12.3, %if.end258.7 ]
%fci_buf.sroa.0.2 = phi <4 x float> [ %fci_buf.sroa.0.0, %for.body122.preheader ], [ %fci_buf.sroa.0.1, %if.end258.7 ]
%E_el.6 = phi float [ %E_el.2600, %for.body122.preheader ], [ %E_el.5.7, %if.end258.7 ]
%E_lj.4 = phi float [ %E_lj.0601, %for.body122.preheader ], [ %E_lj.3.7, %if.end258.7 ]
%and124.1 = and i32 %64, 65280
%tobool125.1 = icmp eq i32 %and124.1, 0
br i1 %tobool125.1, label %for.inc269.1, label %if.then126.1
for.inc273: ; preds = %for.inc269.2, %if.end258.7.3, %for.body92
%fci_buf.sroa.72.2 = phi <4 x float> [ %fci_buf.sroa.72.0, %for.body92 ], [ %fci_buf.sroa.72.8, %for.inc269.2 ], [ %fci_buf.sroa.72.9, %if.end258.7.3 ]
%fci_buf.sroa.62.2 = phi <4 x float> [ %fci_buf.sroa.62.0, %for.body92 ], [ %fci_buf.sroa.62.7, %for.inc269.2 ], [ %fci_buf.sroa.62.8, %if.end258.7.3 ]
%fci_buf.sroa.52.2 = phi <4 x float> [ %fci_buf.sroa.52.0, %for.body92 ], [ %fci_buf.sroa.52.7, %for.inc269.2 ], [ %fci_buf.sroa.52.8, %if.end258.7.3 ]
%fci_buf.sroa.42.2 = phi <4 x float> [ %fci_buf.sroa.42.0, %for.body92 ], [ %fci_buf.sroa.42.7, %for.inc269.2 ], [ %fci_buf.sroa.42.8, %if.end258.7.3 ]
%fci_buf.sroa.32.2 = phi <4 x float> [ %fci_buf.sroa.32.0, %for.body92 ], [ %fci_buf.sroa.32.7, %for.inc269.2 ], [ %fci_buf.sroa.32.8, %if.end258.7.3 ]
%fci_buf.sroa.22.2 = phi <4 x float> [ %fci_buf.sroa.22.0, %for.body92 ], [ %fci_buf.sroa.22.7, %for.inc269.2 ], [ %fci_buf.sroa.22.8, %if.end258.7.3 ]
%fci_buf.sroa.12.2 = phi <4 x float> [ %fci_buf.sroa.12.0, %for.body92 ], [ %fci_buf.sroa.12.7, %for.inc269.2 ], [ %fci_buf.sroa.12.8, %if.end258.7.3 ]
%fci_buf.sroa.0.3 = phi <4 x float> [ %fci_buf.sroa.0.0, %for.body92 ], [ %fci_buf.sroa.0.7, %for.inc269.2 ], [ %fci_buf.sroa.0.8, %if.end258.7.3 ]
%E_el.7 = phi float [ %E_el.2600, %for.body92 ], [ %E_el.6.2, %for.inc269.2 ], [ %E_el.5.7.3, %if.end258.7.3 ]
%E_lj.5 = phi float [ %E_lj.0601, %for.body92 ], [ %E_lj.4.2, %for.inc269.2 ], [ %E_lj.3.7.3, %if.end258.7.3 ]
%indvars.iv.next = add nsw i64 %indvars.iv, 1
%lftr.wideiv = trunc i64 %indvars.iv.next to i32
%exitcond = icmp eq i32 %lftr.wideiv, %nb_sci.sroa.12.0.copyload
br i1 %exitcond, label %for.end275.loopexit, label %for.body92
for.end275.loopexit: ; preds = %for.inc273
%E_lj.5.lcssa = phi float [ %E_lj.5, %for.inc273 ]
%E_el.7.lcssa = phi float [ %E_el.7, %for.inc273 ]
%fci_buf.sroa.0.3.lcssa = phi <4 x float> [ %fci_buf.sroa.0.3, %for.inc273 ]
%fci_buf.sroa.12.2.lcssa = phi <4 x float> [ %fci_buf.sroa.12.2, %for.inc273 ]
%fci_buf.sroa.22.2.lcssa = phi <4 x float> [ %fci_buf.sroa.22.2, %for.inc273 ]
%fci_buf.sroa.32.2.lcssa = phi <4 x float> [ %fci_buf.sroa.32.2, %for.inc273 ]
%fci_buf.sroa.42.2.lcssa = phi <4 x float> [ %fci_buf.sroa.42.2, %for.inc273 ]
%fci_buf.sroa.52.2.lcssa = phi <4 x float> [ %fci_buf.sroa.52.2, %for.inc273 ]
%fci_buf.sroa.62.2.lcssa = phi <4 x float> [ %fci_buf.sroa.62.2, %for.inc273 ]
%fci_buf.sroa.72.2.lcssa = phi <4 x float> [ %fci_buf.sroa.72.2, %for.inc273 ]
%fci_buf.sroa.0.0.vec.extract = shufflevector <4 x float> %fci_buf.sroa.0.3.lcssa, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%fci_buf.sroa.12.16.vec.extract = shufflevector <4 x float> %fci_buf.sroa.12.2.lcssa, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%fci_buf.sroa.22.32.vec.extract = shufflevector <4 x float> %fci_buf.sroa.22.2.lcssa, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%fci_buf.sroa.32.48.vec.extract = shufflevector <4 x float> %fci_buf.sroa.32.2.lcssa, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%fci_buf.sroa.42.64.vec.extract = shufflevector <4 x float> %fci_buf.sroa.42.2.lcssa, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%fci_buf.sroa.52.80.vec.extract = shufflevector <4 x float> %fci_buf.sroa.52.2.lcssa, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%fci_buf.sroa.62.96.vec.extract = shufflevector <4 x float> %fci_buf.sroa.62.2.lcssa, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
br label %for.end275
for.end275: ; preds = %for.cond89.preheader.for.end275_crit_edge, %for.end275.loopexit
%add288.7.pre-phi = phi i32 [ %.pre1168, %for.cond89.preheader.for.end275_crit_edge ], [ %add151.7.3, %for.end275.loopexit ]
%add288.6.pre-phi = phi i32 [ %.pre1166, %for.cond89.preheader.for.end275_crit_edge ], [ %add151.6.3, %for.end275.loopexit ]
%add288.5.pre-phi = phi i32 [ %.pre1164, %for.cond89.preheader.for.end275_crit_edge ], [ %add151.5.3, %for.end275.loopexit ]
%add288.4.pre-phi = phi i32 [ %.pre1162, %for.cond89.preheader.for.end275_crit_edge ], [ %add151.4.3, %for.end275.loopexit ]
%add288.3.pre-phi = phi i32 [ %.pre1160, %for.cond89.preheader.for.end275_crit_edge ], [ %add151.3.3, %for.end275.loopexit ]
%add288.2.pre-phi = phi i32 [ %.pre1158, %for.cond89.preheader.for.end275_crit_edge ], [ %add151.2.3, %for.end275.loopexit ]
%add288.1.pre-phi = phi i32 [ %.pre1156, %for.cond89.preheader.for.end275_crit_edge ], [ %add151.1.3, %for.end275.loopexit ]
%add288.pre-phi = phi i32 [ %.pre1154, %for.cond89.preheader.for.end275_crit_edge ], [ %add151.3954, %for.end275.loopexit ]
%fci_buf.sroa.72.3 = phi <4 x float> [ <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float undef>, %for.cond89.preheader.for.end275_crit_edge ], [ %fci_buf.sroa.72.2.lcssa, %for.end275.loopexit ]
%arrayidx296.pre-phi = phi float addrspace(3)* [ %.pre1112, %for.cond89.preheader.for.end275_crit_edge ], [ %arrayidx267, %for.end275.loopexit ]
%arrayidx293.pre-phi = phi float addrspace(3)* [ %.pre1110, %for.cond89.preheader.for.end275_crit_edge ], [ %arrayidx265, %for.end275.loopexit ]
%arrayidx290.pre-phi = phi float addrspace(3)* [ %.pre1108, %for.cond89.preheader.for.end275_crit_edge ], [ %arrayidx263, %for.end275.loopexit ]
%167 = phi <3 x float> [ bitcast (i96 trunc (i128 bitcast (<4 x i32> <i32 0, i32 0, i32 0, i32 undef> to i128) to i96) to <3 x float>), %for.cond89.preheader.for.end275_crit_edge ], [ %fci_buf.sroa.62.96.vec.extract, %for.end275.loopexit ]
%168 = phi <3 x float> [ bitcast (i96 trunc (i128 bitcast (<4 x i32> <i32 0, i32 0, i32 0, i32 undef> to i128) to i96) to <3 x float>), %for.cond89.preheader.for.end275_crit_edge ], [ %fci_buf.sroa.52.80.vec.extract, %for.end275.loopexit ]
%169 = phi <3 x float> [ bitcast (i96 trunc (i128 bitcast (<4 x i32> <i32 0, i32 0, i32 0, i32 undef> to i128) to i96) to <3 x float>), %for.cond89.preheader.for.end275_crit_edge ], [ %fci_buf.sroa.42.64.vec.extract, %for.end275.loopexit ]
%170 = phi <3 x float> [ bitcast (i96 trunc (i128 bitcast (<4 x i32> <i32 0, i32 0, i32 0, i32 undef> to i128) to i96) to <3 x float>), %for.cond89.preheader.for.end275_crit_edge ], [ %fci_buf.sroa.32.48.vec.extract, %for.end275.loopexit ]
%171 = phi <3 x float> [ bitcast (i96 trunc (i128 bitcast (<4 x i32> <i32 0, i32 0, i32 0, i32 undef> to i128) to i96) to <3 x float>), %for.cond89.preheader.for.end275_crit_edge ], [ %fci_buf.sroa.22.32.vec.extract, %for.end275.loopexit ]
%172 = phi <3 x float> [ bitcast (i96 trunc (i128 bitcast (<4 x i32> <i32 0, i32 0, i32 0, i32 undef> to i128) to i96) to <3 x float>), %for.cond89.preheader.for.end275_crit_edge ], [ %fci_buf.sroa.12.16.vec.extract, %for.end275.loopexit ]
%173 = phi <3 x float> [ bitcast (i96 trunc (i128 bitcast (<4 x i32> <i32 0, i32 0, i32 0, i32 undef> to i128) to i96) to <3 x float>), %for.cond89.preheader.for.end275_crit_edge ], [ %fci_buf.sroa.0.0.vec.extract, %for.end275.loopexit ]
%E_lj.0.lcssa = phi float [ 0.000000e+00, %for.cond89.preheader.for.end275_crit_edge ], [ %E_lj.5.lcssa, %for.end275.loopexit ]
%E_el.2.lcssa = phi float [ %E_el.2.ph, %for.cond89.preheader.for.end275_crit_edge ], [ %E_el.7.lcssa, %for.end275.loopexit ]
store float 0.000000e+00, float* %fshift_buf, align 4, !tbaa !39
%tobool2971113 = icmp ne i32 %bCalcFshift, 0
%not.cmp63 = xor i1 %cmp63, true
%tobool297 = and i1 %tobool2971113, %not.cmp63
%174 = extractelement <3 x float> %173, i32 0
store float %174, float addrspace(3)* %arrayidx290.pre-phi, align 4, !tbaa !39
%175 = extractelement <3 x float> %173, i32 1
store float %175, float addrspace(3)* %arrayidx293.pre-phi, align 4, !tbaa !39
%176 = extractelement <3 x float> %173, i32 2
store float %176, float addrspace(3)* %arrayidx296.pre-phi, align 4, !tbaa !39
tail call void @llvm.amdgcn.s.barrier() #5
call fastcc void @reduce_force_i_pow2(float addrspace(3)* %2, float addrspace(1)* %f, float* nonnull %fshift_buf, i1 zeroext %tobool297, i32 %x.i, i32 %y.i, i32 %add288.pre-phi) #5
tail call void @llvm.amdgcn.s.barrier() #5
%177 = extractelement <3 x float> %172, i32 0
store float %177, float addrspace(3)* %arrayidx290.pre-phi, align 4, !tbaa !39
%178 = extractelement <3 x float> %172, i32 1
store float %178, float addrspace(3)* %arrayidx293.pre-phi, align 4, !tbaa !39
%179 = extractelement <3 x float> %172, i32 2
store float %179, float addrspace(3)* %arrayidx296.pre-phi, align 4, !tbaa !39
tail call void @llvm.amdgcn.s.barrier() #5
call fastcc void @reduce_force_i_pow2(float addrspace(3)* %2, float addrspace(1)* %f, float* nonnull %fshift_buf, i1 zeroext %tobool297, i32 %x.i, i32 %y.i, i32 %add288.1.pre-phi) #5
tail call void @llvm.amdgcn.s.barrier() #5
%180 = extractelement <3 x float> %171, i32 0
store float %180, float addrspace(3)* %arrayidx290.pre-phi, align 4, !tbaa !39
%181 = extractelement <3 x float> %171, i32 1
store float %181, float addrspace(3)* %arrayidx293.pre-phi, align 4, !tbaa !39
%182 = extractelement <3 x float> %171, i32 2
store float %182, float addrspace(3)* %arrayidx296.pre-phi, align 4, !tbaa !39
tail call void @llvm.amdgcn.s.barrier() #5
call fastcc void @reduce_force_i_pow2(float addrspace(3)* %2, float addrspace(1)* %f, float* nonnull %fshift_buf, i1 zeroext %tobool297, i32 %x.i, i32 %y.i, i32 %add288.2.pre-phi) #5
tail call void @llvm.amdgcn.s.barrier() #5
%183 = extractelement <3 x float> %170, i32 0
store float %183, float addrspace(3)* %arrayidx290.pre-phi, align 4, !tbaa !39
%184 = extractelement <3 x float> %170, i32 1
store float %184, float addrspace(3)* %arrayidx293.pre-phi, align 4, !tbaa !39
%185 = extractelement <3 x float> %170, i32 2
store float %185, float addrspace(3)* %arrayidx296.pre-phi, align 4, !tbaa !39
tail call void @llvm.amdgcn.s.barrier() #5
call fastcc void @reduce_force_i_pow2(float addrspace(3)* %2, float addrspace(1)* %f, float* nonnull %fshift_buf, i1 zeroext %tobool297, i32 %x.i, i32 %y.i, i32 %add288.3.pre-phi) #5
tail call void @llvm.amdgcn.s.barrier() #5
%186 = extractelement <3 x float> %169, i32 0
store float %186, float addrspace(3)* %arrayidx290.pre-phi, align 4, !tbaa !39
%187 = extractelement <3 x float> %169, i32 1
store float %187, float addrspace(3)* %arrayidx293.pre-phi, align 4, !tbaa !39
%188 = extractelement <3 x float> %169, i32 2
store float %188, float addrspace(3)* %arrayidx296.pre-phi, align 4, !tbaa !39
tail call void @llvm.amdgcn.s.barrier() #5
call fastcc void @reduce_force_i_pow2(float addrspace(3)* %2, float addrspace(1)* %f, float* nonnull %fshift_buf, i1 zeroext %tobool297, i32 %x.i, i32 %y.i, i32 %add288.4.pre-phi) #5
tail call void @llvm.amdgcn.s.barrier() #5
%189 = extractelement <3 x float> %168, i32 0
store float %189, float addrspace(3)* %arrayidx290.pre-phi, align 4, !tbaa !39
%190 = extractelement <3 x float> %168, i32 1
store float %190, float addrspace(3)* %arrayidx293.pre-phi, align 4, !tbaa !39
%191 = extractelement <3 x float> %168, i32 2
store float %191, float addrspace(3)* %arrayidx296.pre-phi, align 4, !tbaa !39
tail call void @llvm.amdgcn.s.barrier() #5
call fastcc void @reduce_force_i_pow2(float addrspace(3)* %2, float addrspace(1)* %f, float* nonnull %fshift_buf, i1 zeroext %tobool297, i32 %x.i, i32 %y.i, i32 %add288.5.pre-phi) #5
tail call void @llvm.amdgcn.s.barrier() #5
%192 = extractelement <3 x float> %167, i32 0
store float %192, float addrspace(3)* %arrayidx290.pre-phi, align 4, !tbaa !39
%193 = extractelement <3 x float> %167, i32 1
store float %193, float addrspace(3)* %arrayidx293.pre-phi, align 4, !tbaa !39
%194 = extractelement <3 x float> %167, i32 2
store float %194, float addrspace(3)* %arrayidx296.pre-phi, align 4, !tbaa !39
tail call void @llvm.amdgcn.s.barrier() #5
call fastcc void @reduce_force_i_pow2(float addrspace(3)* %2, float addrspace(1)* %f, float* nonnull %fshift_buf, i1 zeroext %tobool297, i32 %x.i, i32 %y.i, i32 %add288.6.pre-phi) #5
tail call void @llvm.amdgcn.s.barrier() #5
%195 = extractelement <4 x float> %fci_buf.sroa.72.3, i32 0
store float %195, float addrspace(3)* %arrayidx290.pre-phi, align 4, !tbaa !39
%196 = extractelement <4 x float> %fci_buf.sroa.72.3, i32 1
store float %196, float addrspace(3)* %arrayidx293.pre-phi, align 4, !tbaa !39
%197 = extractelement <4 x float> %fci_buf.sroa.72.3, i32 2
store float %197, float addrspace(3)* %arrayidx296.pre-phi, align 4, !tbaa !39
tail call void @llvm.amdgcn.s.barrier() #5
call fastcc void @reduce_force_i_pow2(float addrspace(3)* %2, float addrspace(1)* %f, float* nonnull %fshift_buf, i1 zeroext %tobool297, i32 %x.i, i32 %y.i, i32 %add288.7.pre-phi) #5
tail call void @llvm.amdgcn.s.barrier() #5
%cmp303 = icmp ult i32 %y.i, 3
%or.cond320 = and i1 %cmp303, %tobool297
br i1 %or.cond320, label %if.then305, label %if.end311
if.then305: ; preds = %for.end275
%add308 = add i32 %mul36, %y.i
%198 = sext i32 %add308 to i64
%arrayidx309 = getelementptr inbounds float, float addrspace(1)* %fshift, i64 %198
%199 = load float, float* %fshift_buf, align 4, !tbaa !39
%200 = load volatile float, float addrspace(1)* %arrayidx309, align 4, !tbaa !39
%201 = bitcast float %200 to i32
%202 = bitcast float addrspace(1)* %arrayidx309 to i32 addrspace(1)*
br label %do.body.i
do.body.i: ; preds = %do.body.i, %if.then305
%current.sroa.0.0.i = phi i32 [ %201, %if.then305 ], [ %206, %do.body.i ]
%203 = bitcast i32 %current.sroa.0.0.i to float
%add.i = fadd float %199, %203
%204 = bitcast float %add.i to i32
%205 = cmpxchg volatile i32 addrspace(1)* %202, i32 %current.sroa.0.0.i, i32 %204 seq_cst seq_cst
%206 = extractvalue { i32, i1 } %205, 0
%cmp.i = extractvalue { i32, i1 } %205, 1
br i1 %cmp.i, label %if.end311.loopexit, label %do.body.i
if.end311.loopexit: ; preds = %do.body.i
br label %if.end311
if.end311: ; preds = %if.end311.loopexit, %for.end275
store float %E_lj.0.lcssa, float addrspace(3)* %arrayidx290.pre-phi, align 4, !tbaa !39
store float %E_el.2.lcssa, float addrspace(3)* %arrayidx293.pre-phi, align 4, !tbaa !39
%and315 = and i32 %add, 32
%add.ptr316 = getelementptr inbounds <4 x float>, <4 x float> addrspace(3)* %xqib, i32 66, i32 %and315
%and317 = and i32 %add, -33
tail call fastcc void @reduce_energy_pow2(float addrspace(3)* %add.ptr316, float addrspace(1)* %e_lj, float addrspace(1)* %e_el, i32 %and317)
call void @llvm.lifetime.end(i64 4, i8* %0) #5
ret void
if.then147.1: ; preds = %if.end258
%207 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx154.1.3, align 16, !tbaa !36
%208 = fsub <4 x float> %207, %70
%209 = extractelement <4 x float> %208, i32 0
%210 = extractelement <4 x float> %208, i32 1
%mul3.i.i589.1 = fmul float %210, %210
%211 = tail call float @llvm.fmuladd.f32(float %209, float %209, float %mul3.i.i589.1) #5
%212 = extractelement <4 x float> %208, i32 2
%213 = tail call float @llvm.fmuladd.f32(float %212, float %212, float %211) #5
%and168.1 = and i32 %66, 2
%tobool169.1 = icmp ne i32 %and168.1, 0
%cond.1 = select i1 %tobool169.1, float 1.000000e+00, float 0.000000e+00
%cmp174.1 = icmp eq i32 %60, %68
%or.cond.1 = and i1 %cmp63, %cmp174.1
%not.or.cond.1 = xor i1 %or.cond.1, true
%cmp176..1 = or i1 %cmp176, %not.or.cond.1
%conv178.1 = uitofp i1 %cmp176..1 to float
%mul179.1 = fmul float %conv178.1, %nbparam_params_rcoulomb_sq
%cmp180.1 = fcmp olt float %213, %mul179.1
br i1 %cmp180.1, label %if.then182.1, label %if.end258.1
if.then182.1: ; preds = %if.then147.1
%extractVec166.1 = shufflevector <4 x float> %208, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%214 = extractelement <4 x float> %207, i32 3
%215 = load i32, i32 addrspace(1)* %arrayidx183.1.3, align 4, !tbaa !41
%mul184.1 = mul nsw i32 %215, %ntypes
%add185.1 = add nsw i32 %mul184.1, %72
%mul186.1 = shl nsw i32 %add185.1, 1
%216 = sext i32 %mul186.1 to i64
%arrayidx187.1 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %216
%217 = load float, float addrspace(2)* %arrayidx187.1, align 4, !tbaa !39
%add191.1 = or i32 %mul186.1, 1
%218 = sext i32 %add191.1 to i64
%arrayidx192.1 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %218
%219 = load float, float addrspace(2)* %arrayidx192.1, align 4, !tbaa !39
%sub193.1 = fsub float 1.000000e+00, %cond.1
%220 = tail call float @llvm.fmuladd.f32(float %sub193.1, float 0x3D71979980000000, float %213)
%cmp.i.i587.1 = fcmp olt float %220, 0.000000e+00
%call.i.i.1 = tail call float @llvm.sqrt.f32(float %220) #6
%call.i.i.op.1 = fdiv float 1.000000e+00, %call.i.i.1
%div196.1 = select i1 %cmp.i.i587.1, float 0x7FF8000000000000, float %call.i.i.op.1
%mul197.1 = fmul float %div196.1, %div196.1
%mul198.1 = fmul float %mul197.1, %mul197.1
%mul199.1 = fmul float %mul197.1, %mul198.1
%mul200.1 = fmul float %cond.1, %mul199.1
%neg.1 = fsub float -0.000000e+00, %217
%221 = tail call float @llvm.fmuladd.f32(float %219, float %mul200.1, float %neg.1)
%mul202.1 = fmul float %mul200.1, %221
%mul203.1 = fmul float %mul197.1, %mul202.1
%222 = tail call float @llvm.fmuladd.f32(float %mul200.1, float %mul200.1, float %nbparam_params_repulsion_shift_cpot)
%mul207.1 = fmul float %222, %219
%add211.1 = fadd float %mul200.1, %nbparam_params_dispersion_shift_cpot
%mul212.1 = fmul float %add211.1, %217
%mul213.1 = fmul float %mul212.1, 0x3FC5555560000000
%neg214.1 = fsub float -0.000000e+00, %mul213.1
%223 = tail call float @llvm.fmuladd.f32(float %mul207.1, float 0x3FB5555540000000, float %neg214.1)
%mul215.1 = fmul float %cond.1, %223
%add216.1 = fadd float %E_lj.3, %mul215.1
%mul217.1 = fmul float %71, %214
%mul218.1 = fmul float %cond.1, %mul197.1
%mul220.1 = fmul float %mul, %220
%mul.i585.1 = fmul float %mul220.1, %mul220.1
%224 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i585.1, float 0x3FBDA79640000000) #5
%225 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i585.1, float 0x3FE03C5780000000) #5
%226 = tail call float @llvm.fmuladd.f32(float %224, float %mul.i585.1, float 1.000000e+00) #5
%227 = tail call float @llvm.fmuladd.f32(float %225, float %mul220.1, float %226) #5
%div.i586.1 = fdiv float 1.000000e+00, %227, !fpmath !46
%228 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i585.1, float 0xBF0BFF7260000000) #5
%229 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i585.1, float 0x3F50794180000000) #5
%230 = tail call float @llvm.fmuladd.f32(float %228, float %mul.i585.1, float 0xBF93BDB200000000) #5
%231 = tail call float @llvm.fmuladd.f32(float %229, float %mul.i585.1, float 0x3FB1D5E760000000) #5
%232 = tail call float @llvm.fmuladd.f32(float %230, float %mul.i585.1, float 0xBFE81272E0000000) #5
%233 = tail call float @llvm.fmuladd.f32(float %231, float %mul220.1, float %232) #5
%mul11.i.1 = fmul float %233, %div.i586.1
%mul222.1 = fmul float %mul19, %mul11.i.1
%234 = tail call float @llvm.fmuladd.f32(float %mul218.1, float %div196.1, float %mul222.1)
%235 = tail call float @llvm.fmuladd.f32(float %mul217.1, float %234, float %mul203.1)
%mul225.1 = fmul float %220, %div196.1
%mul226.1 = fmul float %mul225.1, %nbparam_params_ewald_beta
%fabs.i.1 = tail call float @llvm.fabs.f32(float %mul226.1) #5
%and.i.1 = bitcast float %fabs.i.1 to i32
%mul.i.1 = fmul float %mul226.1, %mul226.1
%div.i.1 = fdiv float 1.000000e+00, %mul.i.1, !fpmath !46
%sub.i.1 = fadd float %fabs.i.1, -1.000000e+00
%cmp.i583.1 = fcmp olt float %fabs.i.1, 1.250000e+00
%cond.i.1 = select i1 %cmp.i583.1, float %sub.i.1, float %div.i.1
%cmp2.i.1 = fcmp olt float %fabs.i.1, 8.437500e-01
%cond6.i.1 = select i1 %cmp2.i.1, float %mul.i.1, float %cond.i.1
%236 = tail call float @llvm.fmuladd.f32(float %cond6.i.1, float 0xC07E384EA0000000, float 0xC090046160000000) #5
%237 = tail call float @llvm.fmuladd.f32(float %cond6.i.1, float %236, float 0xC083EC8820000000) #5
%238 = tail call float @llvm.fmuladd.f32(float %cond6.i.1, float %237, float 0xC064145D40000000) #5
%239 = tail call float @llvm.fmuladd.f32(float %cond6.i.1, float %238, float 0xC031C20960000000) #5
%240 = tail call float @llvm.fmuladd.f32(float %cond6.i.1, float %239, float 0xBFE993BA80000000) #5
%241 = tail call float @llvm.fmuladd.f32(float %cond6.i.1, float %240, float 0xBF84341240000000) #5
%242 = tail call float @llvm.fmuladd.f32(float %cond6.i.1, float 0xC03670E240000000, float 0x407DA874E0000000) #5
%243 = tail call float @llvm.fmuladd.f32(float %cond6.i.1, float %242, float 0x40A3F219C0000000) #5
%244 = tail call float @llvm.fmuladd.f32(float %cond6.i.1, float %243, float 0x40A8FFB760000000) #5
%245 = tail call float @llvm.fmuladd.f32(float %cond6.i.1, float %244, float 0x409802EB20000000) #5
%246 = tail call float @llvm.fmuladd.f32(float %cond6.i.1, float %245, float 0x40745CAE20000000) #5
%247 = tail call float @llvm.fmuladd.f32(float %cond6.i.1, float %246, float 0x403E568B20000000) #5
%248 = tail call float @llvm.fmuladd.f32(float %cond6.i.1, float 0xC023A0EFC0000000, float 0xC054526560000000) #5
%249 = tail call float @llvm.fmuladd.f32(float %cond6.i.1, float %248, float 0xC067135CE0000000) #5
%250 = tail call float @llvm.fmuladd.f32(float %cond6.i.1, float %249, float 0xC0644CB180000000) #5
%251 = tail call float @llvm.fmuladd.f32(float %cond6.i.1, float %250, float 0xC04F300AE0000000) #5
%252 = tail call float @llvm.fmuladd.f32(float %cond6.i.1, float %251, float 0xC0251E0440000000) #5
%253 = tail call float @llvm.fmuladd.f32(float %cond6.i.1, float %252, float 0xBFE63416E0000000) #5
%254 = tail call float @llvm.fmuladd.f32(float %cond6.i.1, float %253, float 0xBF84341260000000) #5
%255 = tail call float @llvm.fmuladd.f32(float %cond6.i.1, float 0xBFAEEFF2E0000000, float 0x401A47EF80000000) #5
%256 = tail call float @llvm.fmuladd.f32(float %cond6.i.1, float %255, float 0x405B28A3E0000000) #5
%257 = tail call float @llvm.fmuladd.f32(float %cond6.i.1, float %256, float 0x407AD02160000000) #5
%258 = tail call float @llvm.fmuladd.f32(float %cond6.i.1, float %257, float 0x40842B1920000000) #5
%259 = tail call float @llvm.fmuladd.f32(float %cond6.i.1, float %258, float 0x407B290DE0000000) #5
%260 = tail call float @llvm.fmuladd.f32(float %cond6.i.1, float %259, float 0x4061350C60000000) #5
%261 = tail call float @llvm.fmuladd.f32(float %cond6.i.1, float %260, float 0x4033A6B9C0000000) #5
%cmp32.i.1 = fcmp olt float %fabs.i.1, 0x4006DB6DA0000000
%cond36.i.1 = select i1 %cmp32.i.1, float %254, float %241
%cond41.i.1 = select i1 %cmp32.i.1, float %261, float %247
%262 = tail call float @llvm.fmuladd.f32(float %cond6.i.1, float 0xBF61BF3800000000, float 0x3FA22A3660000000) #5
%263 = tail call float @llvm.fmuladd.f32(float %cond6.i.1, float %262, float 0xBFBC639840000000) #5
%264 = tail call float @llvm.fmuladd.f32(float %cond6.i.1, float %263, float 0x3FD45FCA80000000) #5
%265 = tail call float @llvm.fmuladd.f32(float %cond6.i.1, float %264, float 0xBFD7D24100000000) #5
%266 = tail call float @llvm.fmuladd.f32(float %cond6.i.1, float %265, float 0x3FDA8D00A0000000) #5
%267 = tail call float @llvm.fmuladd.f32(float %cond6.i.1, float %266, float 0xBF6359B8C0000000) #5
%268 = tail call float @llvm.fmuladd.f32(float %cond6.i.1, float 0x3F888B5460000000, float 0x3F8BEDC260000000) #5
%269 = tail call float @llvm.fmuladd.f32(float %cond6.i.1, float %268, float 0x3FC02660E0000000) #5
%270 = tail call float @llvm.fmuladd.f32(float %cond6.i.1, float %269, float 0x3FB2635CE0000000) #5
%271 = tail call float @llvm.fmuladd.f32(float %cond6.i.1, float %270, float 0x3FE14AF0A0000000) #5
%272 = tail call float @llvm.fmuladd.f32(float %cond6.i.1, float %271, float 0x3FBB3E6620000000) #5
%cond57.i.1 = select i1 %cmp.i583.1, float %267, float %cond36.i.1
%cond62.i.1 = select i1 %cmp.i583.1, float %272, float %cond41.i.1
%273 = tail call float @llvm.fmuladd.f32(float %cond6.i.1, float 0xBEF8EAD620000000, float 0xBF77A29120000000) #5
%274 = tail call float @llvm.fmuladd.f32(float %cond6.i.1, float %273, float 0xBF9D2A51E0000000) #5
%275 = tail call float @llvm.fmuladd.f32(float %cond6.i.1, float %274, float 0xBFD4CD7D60000000) #5
%276 = tail call float @llvm.fmuladd.f32(float %cond6.i.1, float %275, float 0x3FC06EBA80000000) #5
%277 = tail call float @llvm.fmuladd.f32(float %cond6.i.1, float 0xBED09C4340000000, float 0x3F215DC920000000) #5
%278 = tail call float @llvm.fmuladd.f32(float %cond6.i.1, float %277, float 0x3F74D022C0000000) #5
%279 = tail call float @llvm.fmuladd.f32(float %cond6.i.1, float %278, float 0x3FB0A54C60000000) #5
%280 = tail call float @llvm.fmuladd.f32(float %cond6.i.1, float %279, float 0x3FD97779C0000000) #5
%cond75.i.1 = select i1 %cmp2.i.1, float %276, float %cond57.i.1
%cond80.i.1 = select i1 %cmp2.i.1, float %280, float %cond62.i.1
%281 = tail call float @llvm.fmuladd.f32(float %cond6.i.1, float %cond80.i.1, float 1.000000e+00) #5
%div82.i.1 = fdiv float %cond75.i.1, %281, !fpmath !46
%and83.i.1 = and i32 %and.i.1, -4096
%astype84.i.1 = bitcast i32 %and83.i.1 to float
%sub85.i.1 = fsub float -0.000000e+00, %astype84.i.1
%282 = tail call float @llvm.fmuladd.f32(float %sub85.i.1, float %astype84.i.1, float -5.625000e-01) #5
%cmp.i2.i.1 = fcmp olt float %282, 0.000000e+00
%cond.i3.i.1 = select i1 %cmp.i2.i.1, float -5.000000e-01, float 5.000000e-01
%283 = tail call float @llvm.fmuladd.f32(float %282, float 0x3FF7154760000000, float %cond.i3.i.1) #5
%conv.i4.i.1 = fptosi float %283 to i32
%conv1.i5.i.1 = sitofp i32 %conv.i4.i.1 to float
%284 = tail call float @llvm.fmuladd.f32(float %conv1.i5.i.1, float 0xBFE62E3000000000, float %282) #5
%mul.i6.i.1 = fmul float %conv1.i5.i.1, 0xBEE2FEFA20000000
%add.i7.i.1 = fadd float %284, %mul.i6.i.1
%mul3.i8.i.1 = fmul float %add.i7.i.1, %add.i7.i.1
%285 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.1, float 0x3E66376980000000, float 0xBEBBBD41C0000000) #5
%286 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.1, float %285, float 0x3F11566AA0000000) #5
%287 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.1, float %286, float 0xBF66C16C20000000) #5
%288 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.1, float %287, float 0x3FC5555560000000) #5
%sub8.i9.i.1 = fsub float -0.000000e+00, %288
%289 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.1, float %sub8.i9.i.1, float %add.i7.i.1) #5
%sub10.i10.i.1 = fsub float -0.000000e+00, %mul.i6.i.1
%mul11.i11.i.1 = fmul float %add.i7.i.1, %289
%sub12.i12.i.1 = fsub float 2.000000e+00, %289
%div.i13.i.1 = fdiv float %mul11.i11.i.1, %sub12.i12.i.1, !fpmath !46
%sub13.i14.i.1 = fsub float %sub10.i10.i.1, %div.i13.i.1
%sub14.i15.i.1 = fsub float %sub13.i14.i.1, %284
%sub15.i16.i.1 = fsub float 1.000000e+00, %sub14.i15.i.1
%astype.i17.i.1 = bitcast float %sub15.i16.i.1 to i32
%shl.i18.i.1 = shl i32 %conv.i4.i.1, 23
%add16.i19.i.1 = add nsw i32 %astype.i17.i.1, %shl.i18.i.1
%astype17.i20.i.1 = bitcast i32 %add16.i19.i.1 to float
%cmp18.i21.i.1 = fcmp olt float %282, 0xC055D589E0000000
%cond20.i22.i.1 = select i1 %cmp18.i21.i.1, float 0.000000e+00, float %astype17.i20.i.1
%cmp21.i23.i.1 = fcmp olt float %282, 0x40562E4300000000
%cond26.i24.i.1 = select i1 %cmp21.i23.i.1, float %cond20.i22.i.1, float 0x7FF0000000000000
%cmp.i.i25.i.1 = fcmp uno float %282, 0.000000e+00
%cond31.i26.i.1 = select i1 %cmp.i.i25.i.1, float %282, float %cond26.i24.i.1
%sub88.i.1 = fsub float %astype84.i.1, %fabs.i.1
%add.i584.1 = fadd float %fabs.i.1, %astype84.i.1
%290 = tail call float @llvm.fmuladd.f32(float %sub88.i.1, float %add.i584.1, float %div82.i.1) #5
%cmp.i1.i.1 = fcmp olt float %290, 0.000000e+00
%cond.i.i.1 = select i1 %cmp.i1.i.1, float -5.000000e-01, float 5.000000e-01
%291 = tail call float @llvm.fmuladd.f32(float %290, float 0x3FF7154760000000, float %cond.i.i.1) #5
%conv.i.i.1 = fptosi float %291 to i32
%conv1.i.i.1 = sitofp i32 %conv.i.i.1 to float
%292 = tail call float @llvm.fmuladd.f32(float %conv1.i.i.1, float 0xBFE62E3000000000, float %290) #5
%mul.i.i.1 = fmul float %conv1.i.i.1, 0xBEE2FEFA20000000
%add.i.i.1 = fadd float %292, %mul.i.i.1
%mul3.i.i.1 = fmul float %add.i.i.1, %add.i.i.1
%293 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.1, float 0x3E66376980000000, float 0xBEBBBD41C0000000) #5
%294 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.1, float %293, float 0x3F11566AA0000000) #5
%295 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.1, float %294, float 0xBF66C16C20000000) #5
%296 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.1, float %295, float 0x3FC5555560000000) #5
%sub8.i.i.1 = fsub float -0.000000e+00, %296
%297 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.1, float %sub8.i.i.1, float %add.i.i.1) #5
%sub10.i.i.1 = fsub float -0.000000e+00, %mul.i.i.1
%mul11.i.i.1 = fmul float %add.i.i.1, %297
%sub12.i.i.1 = fsub float 2.000000e+00, %297
%div.i.i.1 = fdiv float %mul11.i.i.1, %sub12.i.i.1, !fpmath !46
%sub13.i.i.1 = fsub float %sub10.i.i.1, %div.i.i.1
%sub14.i.i.1 = fsub float %sub13.i.i.1, %292
%sub15.i.i.1 = fsub float 1.000000e+00, %sub14.i.i.1
%astype.i.i.1 = bitcast float %sub15.i.i.1 to i32
%shl.i.i.1 = shl i32 %conv.i.i.1, 23
%add16.i.i.1 = add nsw i32 %astype.i.i.1, %shl.i.i.1
%astype17.i.i.1 = bitcast i32 %add16.i.i.1 to float
%cmp18.i.i.1 = fcmp olt float %290, 0xC055D589E0000000
%cond20.i.i.1 = select i1 %cmp18.i.i.1, float 0.000000e+00, float %astype17.i.i.1
%cmp21.i.i.1 = fcmp olt float %290, 0x40562E4300000000
%cond26.i.i.1 = select i1 %cmp21.i.i.1, float %cond20.i.i.1, float 0x7FF0000000000000
%cmp.i.i.i.1 = fcmp uno float %290, 0.000000e+00
%cond31.i.i.1 = select i1 %cmp.i.i.i.1, float %290, float %cond26.i.i.1
%mul91.i.1 = fmul float %cond31.i26.i.1, %cond31.i.i.1
%div92.i.1 = fdiv float %mul91.i.1, %fabs.i.1, !fpmath !46
%sub93.i.1 = fsub float 2.000000e+00, %div92.i.1
%cmp94.i.1 = fcmp olt float %mul226.1, 0.000000e+00
%cond98.i.1 = select i1 %cmp94.i.1, float %sub93.i.1, float %div92.i.1
%cmp99.i.1 = fcmp olt float %fabs.i.1, 2.800000e+01
%cond103.i.1 = select i1 %cmp99.i.1, float %cond98.i.1, float 0.000000e+00
%sub104.i.1 = fsub float 0x3FC3D4FA80000000, %div82.i.1
%add105.i.1 = fadd float %div82.i.1, 0x3FEB0AC160000000
%add106.i.1 = fadd float %add105.i.1, 1.000000e+00
%cond111.i.1 = select i1 %cmp94.i.1, float %add106.i.1, float %sub104.i.1
%cond116.i.1 = select i1 %cmp.i583.1, float %cond111.i.1, float %cond103.i.1
%sub117.i.1 = fadd float %mul226.1, -5.000000e-01
%298 = tail call float @llvm.fmuladd.f32(float %mul226.1, float %div82.i.1, float %sub117.i.1) #5
%sub119.i.1 = fsub float 5.000000e-01, %298
%cond124.i.1 = select i1 %cmp2.i.1, float %sub119.i.1, float %cond116.i.1
%cmp125.i.1 = fcmp olt float %mul226.1, -6.000000e+00
%cond129.i.1 = select i1 %cmp125.i.1, float 2.000000e+00, float %cond124.i.1
%cmp.i.i.1 = fcmp uno float %mul226.1, 0.000000e+00
%cond134.i.1 = select i1 %cmp.i.i.1, float %mul226.1, float %cond129.i.1
%mul229.1 = fmul float %cond.1, %nbparam_params_sh_ewald
%neg230.1 = fsub float -0.000000e+00, %mul229.1
%299 = tail call float @llvm.fmuladd.f32(float %div196.1, float %cond134.i.1, float %neg230.1)
%300 = tail call float @llvm.fmuladd.f32(float %mul217.1, float %299, float %E_el.5)
%splat.splatinsert.1 = insertelement <3 x float> undef, float %235, i32 0
%splat.splat.1 = shufflevector <3 x float> %splat.splatinsert.1, <3 x float> undef, <3 x i32> zeroinitializer
%mul235.1 = fmul <3 x float> %extractVec166.1, %splat.splat.1
%extractVec243.1 = shufflevector <4 x float> %fcj_buf.sroa.0.1, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub244.1 = fsub <3 x float> %extractVec243.1, %mul235.1
%extractVec245.1 = shufflevector <3 x float> %sub244.1, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec253.1 = shufflevector <4 x float> %fci_buf.sroa.12.0, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add254.1 = fadd <3 x float> %extractVec253.1, %mul235.1
%extractVec255.1 = shufflevector <3 x float> %add254.1, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end258.1
if.end258.1: ; preds = %if.then182.1, %if.then147.1, %if.end258
%fci_buf.sroa.12.3 = phi <4 x float> [ %fci_buf.sroa.12.0, %if.end258 ], [ %extractVec255.1, %if.then182.1 ], [ %fci_buf.sroa.12.0, %if.then147.1 ]
%E_el.5.1 = phi float [ %E_el.5, %if.end258 ], [ %300, %if.then182.1 ], [ %E_el.5, %if.then147.1 ]
%E_lj.3.1 = phi float [ %E_lj.3, %if.end258 ], [ %add216.1, %if.then182.1 ], [ %E_lj.3, %if.then147.1 ]
%fcj_buf.sroa.0.1.1 = phi <4 x float> [ %fcj_buf.sroa.0.1, %if.end258 ], [ %extractVec245.1, %if.then182.1 ], [ %fcj_buf.sroa.0.1, %if.then147.1 ]
%and145.2 = and i32 %64, 4
%tobool146.2 = icmp eq i32 %and145.2, 0
br i1 %tobool146.2, label %if.end258.2, label %if.then147.2
if.then147.2: ; preds = %if.end258.1
%301 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx154.2.3, align 16, !tbaa !36
%302 = fsub <4 x float> %301, %70
%303 = extractelement <4 x float> %302, i32 0
%304 = extractelement <4 x float> %302, i32 1
%mul3.i.i589.2 = fmul float %304, %304
%305 = tail call float @llvm.fmuladd.f32(float %303, float %303, float %mul3.i.i589.2) #5
%306 = extractelement <4 x float> %302, i32 2
%307 = tail call float @llvm.fmuladd.f32(float %306, float %306, float %305) #5
%and168.2 = and i32 %66, 4
%tobool169.2 = icmp ne i32 %and168.2, 0
%cond.2 = select i1 %tobool169.2, float 1.000000e+00, float 0.000000e+00
%cmp174.2 = icmp eq i32 %58, %68
%or.cond.2 = and i1 %cmp63, %cmp174.2
%not.or.cond.2 = xor i1 %or.cond.2, true
%cmp176..2 = or i1 %cmp176, %not.or.cond.2
%conv178.2 = uitofp i1 %cmp176..2 to float
%mul179.2 = fmul float %conv178.2, %nbparam_params_rcoulomb_sq
%cmp180.2 = fcmp olt float %307, %mul179.2
br i1 %cmp180.2, label %if.then182.2, label %if.end258.2
if.then182.2: ; preds = %if.then147.2
%extractVec166.2 = shufflevector <4 x float> %302, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%308 = extractelement <4 x float> %301, i32 3
%309 = load i32, i32 addrspace(1)* %arrayidx183.2.3, align 4, !tbaa !41
%mul184.2 = mul nsw i32 %309, %ntypes
%add185.2 = add nsw i32 %mul184.2, %72
%mul186.2 = shl nsw i32 %add185.2, 1
%310 = sext i32 %mul186.2 to i64
%arrayidx187.2 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %310
%311 = load float, float addrspace(2)* %arrayidx187.2, align 4, !tbaa !39
%add191.2 = or i32 %mul186.2, 1
%312 = sext i32 %add191.2 to i64
%arrayidx192.2 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %312
%313 = load float, float addrspace(2)* %arrayidx192.2, align 4, !tbaa !39
%sub193.2 = fsub float 1.000000e+00, %cond.2
%314 = tail call float @llvm.fmuladd.f32(float %sub193.2, float 0x3D71979980000000, float %307)
%cmp.i.i587.2 = fcmp olt float %314, 0.000000e+00
%call.i.i.2 = tail call float @llvm.sqrt.f32(float %314) #6
%call.i.i.op.2 = fdiv float 1.000000e+00, %call.i.i.2
%div196.2 = select i1 %cmp.i.i587.2, float 0x7FF8000000000000, float %call.i.i.op.2
%mul197.2 = fmul float %div196.2, %div196.2
%mul198.2 = fmul float %mul197.2, %mul197.2
%mul199.2 = fmul float %mul197.2, %mul198.2
%mul200.2 = fmul float %cond.2, %mul199.2
%neg.2 = fsub float -0.000000e+00, %311
%315 = tail call float @llvm.fmuladd.f32(float %313, float %mul200.2, float %neg.2)
%mul202.2 = fmul float %mul200.2, %315
%mul203.2 = fmul float %mul197.2, %mul202.2
%316 = tail call float @llvm.fmuladd.f32(float %mul200.2, float %mul200.2, float %nbparam_params_repulsion_shift_cpot)
%mul207.2 = fmul float %316, %313
%add211.2 = fadd float %mul200.2, %nbparam_params_dispersion_shift_cpot
%mul212.2 = fmul float %add211.2, %311
%mul213.2 = fmul float %mul212.2, 0x3FC5555560000000
%neg214.2 = fsub float -0.000000e+00, %mul213.2
%317 = tail call float @llvm.fmuladd.f32(float %mul207.2, float 0x3FB5555540000000, float %neg214.2)
%mul215.2 = fmul float %cond.2, %317
%add216.2 = fadd float %E_lj.3.1, %mul215.2
%mul217.2 = fmul float %71, %308
%mul218.2 = fmul float %cond.2, %mul197.2
%mul220.2 = fmul float %mul, %314
%mul.i585.2 = fmul float %mul220.2, %mul220.2
%318 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i585.2, float 0x3FBDA79640000000) #5
%319 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i585.2, float 0x3FE03C5780000000) #5
%320 = tail call float @llvm.fmuladd.f32(float %318, float %mul.i585.2, float 1.000000e+00) #5
%321 = tail call float @llvm.fmuladd.f32(float %319, float %mul220.2, float %320) #5
%div.i586.2 = fdiv float 1.000000e+00, %321, !fpmath !46
%322 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i585.2, float 0xBF0BFF7260000000) #5
%323 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i585.2, float 0x3F50794180000000) #5
%324 = tail call float @llvm.fmuladd.f32(float %322, float %mul.i585.2, float 0xBF93BDB200000000) #5
%325 = tail call float @llvm.fmuladd.f32(float %323, float %mul.i585.2, float 0x3FB1D5E760000000) #5
%326 = tail call float @llvm.fmuladd.f32(float %324, float %mul.i585.2, float 0xBFE81272E0000000) #5
%327 = tail call float @llvm.fmuladd.f32(float %325, float %mul220.2, float %326) #5
%mul11.i.2 = fmul float %327, %div.i586.2
%mul222.2 = fmul float %mul19, %mul11.i.2
%328 = tail call float @llvm.fmuladd.f32(float %mul218.2, float %div196.2, float %mul222.2)
%329 = tail call float @llvm.fmuladd.f32(float %mul217.2, float %328, float %mul203.2)
%mul225.2 = fmul float %314, %div196.2
%mul226.2 = fmul float %mul225.2, %nbparam_params_ewald_beta
%fabs.i.2 = tail call float @llvm.fabs.f32(float %mul226.2) #5
%and.i.2 = bitcast float %fabs.i.2 to i32
%mul.i.2 = fmul float %mul226.2, %mul226.2
%div.i.2 = fdiv float 1.000000e+00, %mul.i.2, !fpmath !46
%sub.i.2 = fadd float %fabs.i.2, -1.000000e+00
%cmp.i583.2 = fcmp olt float %fabs.i.2, 1.250000e+00
%cond.i.2 = select i1 %cmp.i583.2, float %sub.i.2, float %div.i.2
%cmp2.i.2 = fcmp olt float %fabs.i.2, 8.437500e-01
%cond6.i.2 = select i1 %cmp2.i.2, float %mul.i.2, float %cond.i.2
%330 = tail call float @llvm.fmuladd.f32(float %cond6.i.2, float 0xC07E384EA0000000, float 0xC090046160000000) #5
%331 = tail call float @llvm.fmuladd.f32(float %cond6.i.2, float %330, float 0xC083EC8820000000) #5
%332 = tail call float @llvm.fmuladd.f32(float %cond6.i.2, float %331, float 0xC064145D40000000) #5
%333 = tail call float @llvm.fmuladd.f32(float %cond6.i.2, float %332, float 0xC031C20960000000) #5
%334 = tail call float @llvm.fmuladd.f32(float %cond6.i.2, float %333, float 0xBFE993BA80000000) #5
%335 = tail call float @llvm.fmuladd.f32(float %cond6.i.2, float %334, float 0xBF84341240000000) #5
%336 = tail call float @llvm.fmuladd.f32(float %cond6.i.2, float 0xC03670E240000000, float 0x407DA874E0000000) #5
%337 = tail call float @llvm.fmuladd.f32(float %cond6.i.2, float %336, float 0x40A3F219C0000000) #5
%338 = tail call float @llvm.fmuladd.f32(float %cond6.i.2, float %337, float 0x40A8FFB760000000) #5
%339 = tail call float @llvm.fmuladd.f32(float %cond6.i.2, float %338, float 0x409802EB20000000) #5
%340 = tail call float @llvm.fmuladd.f32(float %cond6.i.2, float %339, float 0x40745CAE20000000) #5
%341 = tail call float @llvm.fmuladd.f32(float %cond6.i.2, float %340, float 0x403E568B20000000) #5
%342 = tail call float @llvm.fmuladd.f32(float %cond6.i.2, float 0xC023A0EFC0000000, float 0xC054526560000000) #5
%343 = tail call float @llvm.fmuladd.f32(float %cond6.i.2, float %342, float 0xC067135CE0000000) #5
%344 = tail call float @llvm.fmuladd.f32(float %cond6.i.2, float %343, float 0xC0644CB180000000) #5
%345 = tail call float @llvm.fmuladd.f32(float %cond6.i.2, float %344, float 0xC04F300AE0000000) #5
%346 = tail call float @llvm.fmuladd.f32(float %cond6.i.2, float %345, float 0xC0251E0440000000) #5
%347 = tail call float @llvm.fmuladd.f32(float %cond6.i.2, float %346, float 0xBFE63416E0000000) #5
%348 = tail call float @llvm.fmuladd.f32(float %cond6.i.2, float %347, float 0xBF84341260000000) #5
%349 = tail call float @llvm.fmuladd.f32(float %cond6.i.2, float 0xBFAEEFF2E0000000, float 0x401A47EF80000000) #5
%350 = tail call float @llvm.fmuladd.f32(float %cond6.i.2, float %349, float 0x405B28A3E0000000) #5
%351 = tail call float @llvm.fmuladd.f32(float %cond6.i.2, float %350, float 0x407AD02160000000) #5
%352 = tail call float @llvm.fmuladd.f32(float %cond6.i.2, float %351, float 0x40842B1920000000) #5
%353 = tail call float @llvm.fmuladd.f32(float %cond6.i.2, float %352, float 0x407B290DE0000000) #5
%354 = tail call float @llvm.fmuladd.f32(float %cond6.i.2, float %353, float 0x4061350C60000000) #5
%355 = tail call float @llvm.fmuladd.f32(float %cond6.i.2, float %354, float 0x4033A6B9C0000000) #5
%cmp32.i.2 = fcmp olt float %fabs.i.2, 0x4006DB6DA0000000
%cond36.i.2 = select i1 %cmp32.i.2, float %348, float %335
%cond41.i.2 = select i1 %cmp32.i.2, float %355, float %341
%356 = tail call float @llvm.fmuladd.f32(float %cond6.i.2, float 0xBF61BF3800000000, float 0x3FA22A3660000000) #5
%357 = tail call float @llvm.fmuladd.f32(float %cond6.i.2, float %356, float 0xBFBC639840000000) #5
%358 = tail call float @llvm.fmuladd.f32(float %cond6.i.2, float %357, float 0x3FD45FCA80000000) #5
%359 = tail call float @llvm.fmuladd.f32(float %cond6.i.2, float %358, float 0xBFD7D24100000000) #5
%360 = tail call float @llvm.fmuladd.f32(float %cond6.i.2, float %359, float 0x3FDA8D00A0000000) #5
%361 = tail call float @llvm.fmuladd.f32(float %cond6.i.2, float %360, float 0xBF6359B8C0000000) #5
%362 = tail call float @llvm.fmuladd.f32(float %cond6.i.2, float 0x3F888B5460000000, float 0x3F8BEDC260000000) #5
%363 = tail call float @llvm.fmuladd.f32(float %cond6.i.2, float %362, float 0x3FC02660E0000000) #5
%364 = tail call float @llvm.fmuladd.f32(float %cond6.i.2, float %363, float 0x3FB2635CE0000000) #5
%365 = tail call float @llvm.fmuladd.f32(float %cond6.i.2, float %364, float 0x3FE14AF0A0000000) #5
%366 = tail call float @llvm.fmuladd.f32(float %cond6.i.2, float %365, float 0x3FBB3E6620000000) #5
%cond57.i.2 = select i1 %cmp.i583.2, float %361, float %cond36.i.2
%cond62.i.2 = select i1 %cmp.i583.2, float %366, float %cond41.i.2
%367 = tail call float @llvm.fmuladd.f32(float %cond6.i.2, float 0xBEF8EAD620000000, float 0xBF77A29120000000) #5
%368 = tail call float @llvm.fmuladd.f32(float %cond6.i.2, float %367, float 0xBF9D2A51E0000000) #5
%369 = tail call float @llvm.fmuladd.f32(float %cond6.i.2, float %368, float 0xBFD4CD7D60000000) #5
%370 = tail call float @llvm.fmuladd.f32(float %cond6.i.2, float %369, float 0x3FC06EBA80000000) #5
%371 = tail call float @llvm.fmuladd.f32(float %cond6.i.2, float 0xBED09C4340000000, float 0x3F215DC920000000) #5
%372 = tail call float @llvm.fmuladd.f32(float %cond6.i.2, float %371, float 0x3F74D022C0000000) #5
%373 = tail call float @llvm.fmuladd.f32(float %cond6.i.2, float %372, float 0x3FB0A54C60000000) #5
%374 = tail call float @llvm.fmuladd.f32(float %cond6.i.2, float %373, float 0x3FD97779C0000000) #5
%cond75.i.2 = select i1 %cmp2.i.2, float %370, float %cond57.i.2
%cond80.i.2 = select i1 %cmp2.i.2, float %374, float %cond62.i.2
%375 = tail call float @llvm.fmuladd.f32(float %cond6.i.2, float %cond80.i.2, float 1.000000e+00) #5
%div82.i.2 = fdiv float %cond75.i.2, %375, !fpmath !46
%and83.i.2 = and i32 %and.i.2, -4096
%astype84.i.2 = bitcast i32 %and83.i.2 to float
%sub85.i.2 = fsub float -0.000000e+00, %astype84.i.2
%376 = tail call float @llvm.fmuladd.f32(float %sub85.i.2, float %astype84.i.2, float -5.625000e-01) #5
%cmp.i2.i.2 = fcmp olt float %376, 0.000000e+00
%cond.i3.i.2 = select i1 %cmp.i2.i.2, float -5.000000e-01, float 5.000000e-01
%377 = tail call float @llvm.fmuladd.f32(float %376, float 0x3FF7154760000000, float %cond.i3.i.2) #5
%conv.i4.i.2 = fptosi float %377 to i32
%conv1.i5.i.2 = sitofp i32 %conv.i4.i.2 to float
%378 = tail call float @llvm.fmuladd.f32(float %conv1.i5.i.2, float 0xBFE62E3000000000, float %376) #5
%mul.i6.i.2 = fmul float %conv1.i5.i.2, 0xBEE2FEFA20000000
%add.i7.i.2 = fadd float %378, %mul.i6.i.2
%mul3.i8.i.2 = fmul float %add.i7.i.2, %add.i7.i.2
%379 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.2, float 0x3E66376980000000, float 0xBEBBBD41C0000000) #5
%380 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.2, float %379, float 0x3F11566AA0000000) #5
%381 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.2, float %380, float 0xBF66C16C20000000) #5
%382 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.2, float %381, float 0x3FC5555560000000) #5
%sub8.i9.i.2 = fsub float -0.000000e+00, %382
%383 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.2, float %sub8.i9.i.2, float %add.i7.i.2) #5
%sub10.i10.i.2 = fsub float -0.000000e+00, %mul.i6.i.2
%mul11.i11.i.2 = fmul float %add.i7.i.2, %383
%sub12.i12.i.2 = fsub float 2.000000e+00, %383
%div.i13.i.2 = fdiv float %mul11.i11.i.2, %sub12.i12.i.2, !fpmath !46
%sub13.i14.i.2 = fsub float %sub10.i10.i.2, %div.i13.i.2
%sub14.i15.i.2 = fsub float %sub13.i14.i.2, %378
%sub15.i16.i.2 = fsub float 1.000000e+00, %sub14.i15.i.2
%astype.i17.i.2 = bitcast float %sub15.i16.i.2 to i32
%shl.i18.i.2 = shl i32 %conv.i4.i.2, 23
%add16.i19.i.2 = add nsw i32 %astype.i17.i.2, %shl.i18.i.2
%astype17.i20.i.2 = bitcast i32 %add16.i19.i.2 to float
%cmp18.i21.i.2 = fcmp olt float %376, 0xC055D589E0000000
%cond20.i22.i.2 = select i1 %cmp18.i21.i.2, float 0.000000e+00, float %astype17.i20.i.2
%cmp21.i23.i.2 = fcmp olt float %376, 0x40562E4300000000
%cond26.i24.i.2 = select i1 %cmp21.i23.i.2, float %cond20.i22.i.2, float 0x7FF0000000000000
%cmp.i.i25.i.2 = fcmp uno float %376, 0.000000e+00
%cond31.i26.i.2 = select i1 %cmp.i.i25.i.2, float %376, float %cond26.i24.i.2
%sub88.i.2 = fsub float %astype84.i.2, %fabs.i.2
%add.i584.2 = fadd float %fabs.i.2, %astype84.i.2
%384 = tail call float @llvm.fmuladd.f32(float %sub88.i.2, float %add.i584.2, float %div82.i.2) #5
%cmp.i1.i.2 = fcmp olt float %384, 0.000000e+00
%cond.i.i.2 = select i1 %cmp.i1.i.2, float -5.000000e-01, float 5.000000e-01
%385 = tail call float @llvm.fmuladd.f32(float %384, float 0x3FF7154760000000, float %cond.i.i.2) #5
%conv.i.i.2 = fptosi float %385 to i32
%conv1.i.i.2 = sitofp i32 %conv.i.i.2 to float
%386 = tail call float @llvm.fmuladd.f32(float %conv1.i.i.2, float 0xBFE62E3000000000, float %384) #5
%mul.i.i.2 = fmul float %conv1.i.i.2, 0xBEE2FEFA20000000
%add.i.i.2 = fadd float %386, %mul.i.i.2
%mul3.i.i.2 = fmul float %add.i.i.2, %add.i.i.2
%387 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.2, float 0x3E66376980000000, float 0xBEBBBD41C0000000) #5
%388 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.2, float %387, float 0x3F11566AA0000000) #5
%389 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.2, float %388, float 0xBF66C16C20000000) #5
%390 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.2, float %389, float 0x3FC5555560000000) #5
%sub8.i.i.2 = fsub float -0.000000e+00, %390
%391 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.2, float %sub8.i.i.2, float %add.i.i.2) #5
%sub10.i.i.2 = fsub float -0.000000e+00, %mul.i.i.2
%mul11.i.i.2 = fmul float %add.i.i.2, %391
%sub12.i.i.2 = fsub float 2.000000e+00, %391
%div.i.i.2 = fdiv float %mul11.i.i.2, %sub12.i.i.2, !fpmath !46
%sub13.i.i.2 = fsub float %sub10.i.i.2, %div.i.i.2
%sub14.i.i.2 = fsub float %sub13.i.i.2, %386
%sub15.i.i.2 = fsub float 1.000000e+00, %sub14.i.i.2
%astype.i.i.2 = bitcast float %sub15.i.i.2 to i32
%shl.i.i.2 = shl i32 %conv.i.i.2, 23
%add16.i.i.2 = add nsw i32 %astype.i.i.2, %shl.i.i.2
%astype17.i.i.2 = bitcast i32 %add16.i.i.2 to float
%cmp18.i.i.2 = fcmp olt float %384, 0xC055D589E0000000
%cond20.i.i.2 = select i1 %cmp18.i.i.2, float 0.000000e+00, float %astype17.i.i.2
%cmp21.i.i.2 = fcmp olt float %384, 0x40562E4300000000
%cond26.i.i.2 = select i1 %cmp21.i.i.2, float %cond20.i.i.2, float 0x7FF0000000000000
%cmp.i.i.i.2 = fcmp uno float %384, 0.000000e+00
%cond31.i.i.2 = select i1 %cmp.i.i.i.2, float %384, float %cond26.i.i.2
%mul91.i.2 = fmul float %cond31.i26.i.2, %cond31.i.i.2
%div92.i.2 = fdiv float %mul91.i.2, %fabs.i.2, !fpmath !46
%sub93.i.2 = fsub float 2.000000e+00, %div92.i.2
%cmp94.i.2 = fcmp olt float %mul226.2, 0.000000e+00
%cond98.i.2 = select i1 %cmp94.i.2, float %sub93.i.2, float %div92.i.2
%cmp99.i.2 = fcmp olt float %fabs.i.2, 2.800000e+01
%cond103.i.2 = select i1 %cmp99.i.2, float %cond98.i.2, float 0.000000e+00
%sub104.i.2 = fsub float 0x3FC3D4FA80000000, %div82.i.2
%add105.i.2 = fadd float %div82.i.2, 0x3FEB0AC160000000
%add106.i.2 = fadd float %add105.i.2, 1.000000e+00
%cond111.i.2 = select i1 %cmp94.i.2, float %add106.i.2, float %sub104.i.2
%cond116.i.2 = select i1 %cmp.i583.2, float %cond111.i.2, float %cond103.i.2
%sub117.i.2 = fadd float %mul226.2, -5.000000e-01
%392 = tail call float @llvm.fmuladd.f32(float %mul226.2, float %div82.i.2, float %sub117.i.2) #5
%sub119.i.2 = fsub float 5.000000e-01, %392
%cond124.i.2 = select i1 %cmp2.i.2, float %sub119.i.2, float %cond116.i.2
%cmp125.i.2 = fcmp olt float %mul226.2, -6.000000e+00
%cond129.i.2 = select i1 %cmp125.i.2, float 2.000000e+00, float %cond124.i.2
%cmp.i.i.2 = fcmp uno float %mul226.2, 0.000000e+00
%cond134.i.2 = select i1 %cmp.i.i.2, float %mul226.2, float %cond129.i.2
%mul229.2 = fmul float %cond.2, %nbparam_params_sh_ewald
%neg230.2 = fsub float -0.000000e+00, %mul229.2
%393 = tail call float @llvm.fmuladd.f32(float %div196.2, float %cond134.i.2, float %neg230.2)
%394 = tail call float @llvm.fmuladd.f32(float %mul217.2, float %393, float %E_el.5.1)
%splat.splatinsert.2 = insertelement <3 x float> undef, float %329, i32 0
%splat.splat.2 = shufflevector <3 x float> %splat.splatinsert.2, <3 x float> undef, <3 x i32> zeroinitializer
%mul235.2 = fmul <3 x float> %extractVec166.2, %splat.splat.2
%extractVec243.2 = shufflevector <4 x float> %fcj_buf.sroa.0.1.1, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub244.2 = fsub <3 x float> %extractVec243.2, %mul235.2
%extractVec245.2 = shufflevector <3 x float> %sub244.2, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec253.2 = shufflevector <4 x float> %fci_buf.sroa.22.0, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add254.2 = fadd <3 x float> %extractVec253.2, %mul235.2
%extractVec255.2 = shufflevector <3 x float> %add254.2, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end258.2
if.end258.2: ; preds = %if.then182.2, %if.then147.2, %if.end258.1
%fci_buf.sroa.22.3 = phi <4 x float> [ %fci_buf.sroa.22.0, %if.end258.1 ], [ %extractVec255.2, %if.then182.2 ], [ %fci_buf.sroa.22.0, %if.then147.2 ]
%E_el.5.2 = phi float [ %E_el.5.1, %if.end258.1 ], [ %394, %if.then182.2 ], [ %E_el.5.1, %if.then147.2 ]
%E_lj.3.2 = phi float [ %E_lj.3.1, %if.end258.1 ], [ %add216.2, %if.then182.2 ], [ %E_lj.3.1, %if.then147.2 ]
%fcj_buf.sroa.0.1.2 = phi <4 x float> [ %fcj_buf.sroa.0.1.1, %if.end258.1 ], [ %extractVec245.2, %if.then182.2 ], [ %fcj_buf.sroa.0.1.1, %if.then147.2 ]
%and145.3 = and i32 %64, 8
%tobool146.3 = icmp eq i32 %and145.3, 0
br i1 %tobool146.3, label %if.end258.3, label %if.then147.3
if.then147.3: ; preds = %if.end258.2
%395 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx154.3.3, align 16, !tbaa !36
%396 = fsub <4 x float> %395, %70
%397 = extractelement <4 x float> %396, i32 0
%398 = extractelement <4 x float> %396, i32 1
%mul3.i.i589.3 = fmul float %398, %398
%399 = tail call float @llvm.fmuladd.f32(float %397, float %397, float %mul3.i.i589.3) #5
%400 = extractelement <4 x float> %396, i32 2
%401 = tail call float @llvm.fmuladd.f32(float %400, float %400, float %399) #5
%and168.3 = and i32 %66, 8
%tobool169.3 = icmp ne i32 %and168.3, 0
%cond.3 = select i1 %tobool169.3, float 1.000000e+00, float 0.000000e+00
%cmp174.3 = icmp eq i32 %56, %68
%or.cond.3 = and i1 %cmp63, %cmp174.3
%not.or.cond.3 = xor i1 %or.cond.3, true
%cmp176..3 = or i1 %cmp176, %not.or.cond.3
%conv178.3 = uitofp i1 %cmp176..3 to float
%mul179.3 = fmul float %conv178.3, %nbparam_params_rcoulomb_sq
%cmp180.3 = fcmp olt float %401, %mul179.3
br i1 %cmp180.3, label %if.then182.3, label %if.end258.3
if.then182.3: ; preds = %if.then147.3
%extractVec166.3 = shufflevector <4 x float> %396, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%402 = extractelement <4 x float> %395, i32 3
%403 = load i32, i32 addrspace(1)* %arrayidx183.3.3, align 4, !tbaa !41
%mul184.3 = mul nsw i32 %403, %ntypes
%add185.3 = add nsw i32 %mul184.3, %72
%mul186.3 = shl nsw i32 %add185.3, 1
%404 = sext i32 %mul186.3 to i64
%arrayidx187.3 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %404
%405 = load float, float addrspace(2)* %arrayidx187.3, align 4, !tbaa !39
%add191.3 = or i32 %mul186.3, 1
%406 = sext i32 %add191.3 to i64
%arrayidx192.3 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %406
%407 = load float, float addrspace(2)* %arrayidx192.3, align 4, !tbaa !39
%sub193.3 = fsub float 1.000000e+00, %cond.3
%408 = tail call float @llvm.fmuladd.f32(float %sub193.3, float 0x3D71979980000000, float %401)
%cmp.i.i587.3 = fcmp olt float %408, 0.000000e+00
%call.i.i.3 = tail call float @llvm.sqrt.f32(float %408) #6
%call.i.i.op.3 = fdiv float 1.000000e+00, %call.i.i.3
%div196.3 = select i1 %cmp.i.i587.3, float 0x7FF8000000000000, float %call.i.i.op.3
%mul197.3 = fmul float %div196.3, %div196.3
%mul198.3 = fmul float %mul197.3, %mul197.3
%mul199.3 = fmul float %mul197.3, %mul198.3
%mul200.3 = fmul float %cond.3, %mul199.3
%neg.3 = fsub float -0.000000e+00, %405
%409 = tail call float @llvm.fmuladd.f32(float %407, float %mul200.3, float %neg.3)
%mul202.3 = fmul float %mul200.3, %409
%mul203.3 = fmul float %mul197.3, %mul202.3
%410 = tail call float @llvm.fmuladd.f32(float %mul200.3, float %mul200.3, float %nbparam_params_repulsion_shift_cpot)
%mul207.3 = fmul float %410, %407
%add211.3 = fadd float %mul200.3, %nbparam_params_dispersion_shift_cpot
%mul212.3 = fmul float %add211.3, %405
%mul213.3 = fmul float %mul212.3, 0x3FC5555560000000
%neg214.3 = fsub float -0.000000e+00, %mul213.3
%411 = tail call float @llvm.fmuladd.f32(float %mul207.3, float 0x3FB5555540000000, float %neg214.3)
%mul215.3 = fmul float %cond.3, %411
%add216.3 = fadd float %E_lj.3.2, %mul215.3
%mul217.3 = fmul float %71, %402
%mul218.3 = fmul float %cond.3, %mul197.3
%mul220.3 = fmul float %mul, %408
%mul.i585.3 = fmul float %mul220.3, %mul220.3
%412 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i585.3, float 0x3FBDA79640000000) #5
%413 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i585.3, float 0x3FE03C5780000000) #5
%414 = tail call float @llvm.fmuladd.f32(float %412, float %mul.i585.3, float 1.000000e+00) #5
%415 = tail call float @llvm.fmuladd.f32(float %413, float %mul220.3, float %414) #5
%div.i586.3 = fdiv float 1.000000e+00, %415, !fpmath !46
%416 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i585.3, float 0xBF0BFF7260000000) #5
%417 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i585.3, float 0x3F50794180000000) #5
%418 = tail call float @llvm.fmuladd.f32(float %416, float %mul.i585.3, float 0xBF93BDB200000000) #5
%419 = tail call float @llvm.fmuladd.f32(float %417, float %mul.i585.3, float 0x3FB1D5E760000000) #5
%420 = tail call float @llvm.fmuladd.f32(float %418, float %mul.i585.3, float 0xBFE81272E0000000) #5
%421 = tail call float @llvm.fmuladd.f32(float %419, float %mul220.3, float %420) #5
%mul11.i.3 = fmul float %421, %div.i586.3
%mul222.3 = fmul float %mul19, %mul11.i.3
%422 = tail call float @llvm.fmuladd.f32(float %mul218.3, float %div196.3, float %mul222.3)
%423 = tail call float @llvm.fmuladd.f32(float %mul217.3, float %422, float %mul203.3)
%mul225.3 = fmul float %408, %div196.3
%mul226.3 = fmul float %mul225.3, %nbparam_params_ewald_beta
%fabs.i.3 = tail call float @llvm.fabs.f32(float %mul226.3) #5
%and.i.3 = bitcast float %fabs.i.3 to i32
%mul.i.3 = fmul float %mul226.3, %mul226.3
%div.i.3 = fdiv float 1.000000e+00, %mul.i.3, !fpmath !46
%sub.i.3 = fadd float %fabs.i.3, -1.000000e+00
%cmp.i583.3 = fcmp olt float %fabs.i.3, 1.250000e+00
%cond.i.3 = select i1 %cmp.i583.3, float %sub.i.3, float %div.i.3
%cmp2.i.3 = fcmp olt float %fabs.i.3, 8.437500e-01
%cond6.i.3 = select i1 %cmp2.i.3, float %mul.i.3, float %cond.i.3
%424 = tail call float @llvm.fmuladd.f32(float %cond6.i.3, float 0xC07E384EA0000000, float 0xC090046160000000) #5
%425 = tail call float @llvm.fmuladd.f32(float %cond6.i.3, float %424, float 0xC083EC8820000000) #5
%426 = tail call float @llvm.fmuladd.f32(float %cond6.i.3, float %425, float 0xC064145D40000000) #5
%427 = tail call float @llvm.fmuladd.f32(float %cond6.i.3, float %426, float 0xC031C20960000000) #5
%428 = tail call float @llvm.fmuladd.f32(float %cond6.i.3, float %427, float 0xBFE993BA80000000) #5
%429 = tail call float @llvm.fmuladd.f32(float %cond6.i.3, float %428, float 0xBF84341240000000) #5
%430 = tail call float @llvm.fmuladd.f32(float %cond6.i.3, float 0xC03670E240000000, float 0x407DA874E0000000) #5
%431 = tail call float @llvm.fmuladd.f32(float %cond6.i.3, float %430, float 0x40A3F219C0000000) #5
%432 = tail call float @llvm.fmuladd.f32(float %cond6.i.3, float %431, float 0x40A8FFB760000000) #5
%433 = tail call float @llvm.fmuladd.f32(float %cond6.i.3, float %432, float 0x409802EB20000000) #5
%434 = tail call float @llvm.fmuladd.f32(float %cond6.i.3, float %433, float 0x40745CAE20000000) #5
%435 = tail call float @llvm.fmuladd.f32(float %cond6.i.3, float %434, float 0x403E568B20000000) #5
%436 = tail call float @llvm.fmuladd.f32(float %cond6.i.3, float 0xC023A0EFC0000000, float 0xC054526560000000) #5
%437 = tail call float @llvm.fmuladd.f32(float %cond6.i.3, float %436, float 0xC067135CE0000000) #5
%438 = tail call float @llvm.fmuladd.f32(float %cond6.i.3, float %437, float 0xC0644CB180000000) #5
%439 = tail call float @llvm.fmuladd.f32(float %cond6.i.3, float %438, float 0xC04F300AE0000000) #5
%440 = tail call float @llvm.fmuladd.f32(float %cond6.i.3, float %439, float 0xC0251E0440000000) #5
%441 = tail call float @llvm.fmuladd.f32(float %cond6.i.3, float %440, float 0xBFE63416E0000000) #5
%442 = tail call float @llvm.fmuladd.f32(float %cond6.i.3, float %441, float 0xBF84341260000000) #5
%443 = tail call float @llvm.fmuladd.f32(float %cond6.i.3, float 0xBFAEEFF2E0000000, float 0x401A47EF80000000) #5
%444 = tail call float @llvm.fmuladd.f32(float %cond6.i.3, float %443, float 0x405B28A3E0000000) #5
%445 = tail call float @llvm.fmuladd.f32(float %cond6.i.3, float %444, float 0x407AD02160000000) #5
%446 = tail call float @llvm.fmuladd.f32(float %cond6.i.3, float %445, float 0x40842B1920000000) #5
%447 = tail call float @llvm.fmuladd.f32(float %cond6.i.3, float %446, float 0x407B290DE0000000) #5
%448 = tail call float @llvm.fmuladd.f32(float %cond6.i.3, float %447, float 0x4061350C60000000) #5
%449 = tail call float @llvm.fmuladd.f32(float %cond6.i.3, float %448, float 0x4033A6B9C0000000) #5
%cmp32.i.3 = fcmp olt float %fabs.i.3, 0x4006DB6DA0000000
%cond36.i.3 = select i1 %cmp32.i.3, float %442, float %429
%cond41.i.3 = select i1 %cmp32.i.3, float %449, float %435
%450 = tail call float @llvm.fmuladd.f32(float %cond6.i.3, float 0xBF61BF3800000000, float 0x3FA22A3660000000) #5
%451 = tail call float @llvm.fmuladd.f32(float %cond6.i.3, float %450, float 0xBFBC639840000000) #5
%452 = tail call float @llvm.fmuladd.f32(float %cond6.i.3, float %451, float 0x3FD45FCA80000000) #5
%453 = tail call float @llvm.fmuladd.f32(float %cond6.i.3, float %452, float 0xBFD7D24100000000) #5
%454 = tail call float @llvm.fmuladd.f32(float %cond6.i.3, float %453, float 0x3FDA8D00A0000000) #5
%455 = tail call float @llvm.fmuladd.f32(float %cond6.i.3, float %454, float 0xBF6359B8C0000000) #5
%456 = tail call float @llvm.fmuladd.f32(float %cond6.i.3, float 0x3F888B5460000000, float 0x3F8BEDC260000000) #5
%457 = tail call float @llvm.fmuladd.f32(float %cond6.i.3, float %456, float 0x3FC02660E0000000) #5
%458 = tail call float @llvm.fmuladd.f32(float %cond6.i.3, float %457, float 0x3FB2635CE0000000) #5
%459 = tail call float @llvm.fmuladd.f32(float %cond6.i.3, float %458, float 0x3FE14AF0A0000000) #5
%460 = tail call float @llvm.fmuladd.f32(float %cond6.i.3, float %459, float 0x3FBB3E6620000000) #5
%cond57.i.3 = select i1 %cmp.i583.3, float %455, float %cond36.i.3
%cond62.i.3 = select i1 %cmp.i583.3, float %460, float %cond41.i.3
%461 = tail call float @llvm.fmuladd.f32(float %cond6.i.3, float 0xBEF8EAD620000000, float 0xBF77A29120000000) #5
%462 = tail call float @llvm.fmuladd.f32(float %cond6.i.3, float %461, float 0xBF9D2A51E0000000) #5
%463 = tail call float @llvm.fmuladd.f32(float %cond6.i.3, float %462, float 0xBFD4CD7D60000000) #5
%464 = tail call float @llvm.fmuladd.f32(float %cond6.i.3, float %463, float 0x3FC06EBA80000000) #5
%465 = tail call float @llvm.fmuladd.f32(float %cond6.i.3, float 0xBED09C4340000000, float 0x3F215DC920000000) #5
%466 = tail call float @llvm.fmuladd.f32(float %cond6.i.3, float %465, float 0x3F74D022C0000000) #5
%467 = tail call float @llvm.fmuladd.f32(float %cond6.i.3, float %466, float 0x3FB0A54C60000000) #5
%468 = tail call float @llvm.fmuladd.f32(float %cond6.i.3, float %467, float 0x3FD97779C0000000) #5
%cond75.i.3 = select i1 %cmp2.i.3, float %464, float %cond57.i.3
%cond80.i.3 = select i1 %cmp2.i.3, float %468, float %cond62.i.3
%469 = tail call float @llvm.fmuladd.f32(float %cond6.i.3, float %cond80.i.3, float 1.000000e+00) #5
%div82.i.3 = fdiv float %cond75.i.3, %469, !fpmath !46
%and83.i.3 = and i32 %and.i.3, -4096
%astype84.i.3 = bitcast i32 %and83.i.3 to float
%sub85.i.3 = fsub float -0.000000e+00, %astype84.i.3
%470 = tail call float @llvm.fmuladd.f32(float %sub85.i.3, float %astype84.i.3, float -5.625000e-01) #5
%cmp.i2.i.3 = fcmp olt float %470, 0.000000e+00
%cond.i3.i.3 = select i1 %cmp.i2.i.3, float -5.000000e-01, float 5.000000e-01
%471 = tail call float @llvm.fmuladd.f32(float %470, float 0x3FF7154760000000, float %cond.i3.i.3) #5
%conv.i4.i.3 = fptosi float %471 to i32
%conv1.i5.i.3 = sitofp i32 %conv.i4.i.3 to float
%472 = tail call float @llvm.fmuladd.f32(float %conv1.i5.i.3, float 0xBFE62E3000000000, float %470) #5
%mul.i6.i.3 = fmul float %conv1.i5.i.3, 0xBEE2FEFA20000000
%add.i7.i.3 = fadd float %472, %mul.i6.i.3
%mul3.i8.i.3 = fmul float %add.i7.i.3, %add.i7.i.3
%473 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.3, float 0x3E66376980000000, float 0xBEBBBD41C0000000) #5
%474 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.3, float %473, float 0x3F11566AA0000000) #5
%475 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.3, float %474, float 0xBF66C16C20000000) #5
%476 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.3, float %475, float 0x3FC5555560000000) #5
%sub8.i9.i.3 = fsub float -0.000000e+00, %476
%477 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.3, float %sub8.i9.i.3, float %add.i7.i.3) #5
%sub10.i10.i.3 = fsub float -0.000000e+00, %mul.i6.i.3
%mul11.i11.i.3 = fmul float %add.i7.i.3, %477
%sub12.i12.i.3 = fsub float 2.000000e+00, %477
%div.i13.i.3 = fdiv float %mul11.i11.i.3, %sub12.i12.i.3, !fpmath !46
%sub13.i14.i.3 = fsub float %sub10.i10.i.3, %div.i13.i.3
%sub14.i15.i.3 = fsub float %sub13.i14.i.3, %472
%sub15.i16.i.3 = fsub float 1.000000e+00, %sub14.i15.i.3
%astype.i17.i.3 = bitcast float %sub15.i16.i.3 to i32
%shl.i18.i.3 = shl i32 %conv.i4.i.3, 23
%add16.i19.i.3 = add nsw i32 %astype.i17.i.3, %shl.i18.i.3
%astype17.i20.i.3 = bitcast i32 %add16.i19.i.3 to float
%cmp18.i21.i.3 = fcmp olt float %470, 0xC055D589E0000000
%cond20.i22.i.3 = select i1 %cmp18.i21.i.3, float 0.000000e+00, float %astype17.i20.i.3
%cmp21.i23.i.3 = fcmp olt float %470, 0x40562E4300000000
%cond26.i24.i.3 = select i1 %cmp21.i23.i.3, float %cond20.i22.i.3, float 0x7FF0000000000000
%cmp.i.i25.i.3 = fcmp uno float %470, 0.000000e+00
%cond31.i26.i.3 = select i1 %cmp.i.i25.i.3, float %470, float %cond26.i24.i.3
%sub88.i.3 = fsub float %astype84.i.3, %fabs.i.3
%add.i584.3 = fadd float %fabs.i.3, %astype84.i.3
%478 = tail call float @llvm.fmuladd.f32(float %sub88.i.3, float %add.i584.3, float %div82.i.3) #5
%cmp.i1.i.3 = fcmp olt float %478, 0.000000e+00
%cond.i.i.3 = select i1 %cmp.i1.i.3, float -5.000000e-01, float 5.000000e-01
%479 = tail call float @llvm.fmuladd.f32(float %478, float 0x3FF7154760000000, float %cond.i.i.3) #5
%conv.i.i.3 = fptosi float %479 to i32
%conv1.i.i.3 = sitofp i32 %conv.i.i.3 to float
%480 = tail call float @llvm.fmuladd.f32(float %conv1.i.i.3, float 0xBFE62E3000000000, float %478) #5
%mul.i.i.3 = fmul float %conv1.i.i.3, 0xBEE2FEFA20000000
%add.i.i.3 = fadd float %480, %mul.i.i.3
%mul3.i.i.3 = fmul float %add.i.i.3, %add.i.i.3
%481 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.3, float 0x3E66376980000000, float 0xBEBBBD41C0000000) #5
%482 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.3, float %481, float 0x3F11566AA0000000) #5
%483 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.3, float %482, float 0xBF66C16C20000000) #5
%484 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.3, float %483, float 0x3FC5555560000000) #5
%sub8.i.i.3 = fsub float -0.000000e+00, %484
%485 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.3, float %sub8.i.i.3, float %add.i.i.3) #5
%sub10.i.i.3 = fsub float -0.000000e+00, %mul.i.i.3
%mul11.i.i.3 = fmul float %add.i.i.3, %485
%sub12.i.i.3 = fsub float 2.000000e+00, %485
%div.i.i.3 = fdiv float %mul11.i.i.3, %sub12.i.i.3, !fpmath !46
%sub13.i.i.3 = fsub float %sub10.i.i.3, %div.i.i.3
%sub14.i.i.3 = fsub float %sub13.i.i.3, %480
%sub15.i.i.3 = fsub float 1.000000e+00, %sub14.i.i.3
%astype.i.i.3 = bitcast float %sub15.i.i.3 to i32
%shl.i.i.3 = shl i32 %conv.i.i.3, 23
%add16.i.i.3 = add nsw i32 %astype.i.i.3, %shl.i.i.3
%astype17.i.i.3 = bitcast i32 %add16.i.i.3 to float
%cmp18.i.i.3 = fcmp olt float %478, 0xC055D589E0000000
%cond20.i.i.3 = select i1 %cmp18.i.i.3, float 0.000000e+00, float %astype17.i.i.3
%cmp21.i.i.3 = fcmp olt float %478, 0x40562E4300000000
%cond26.i.i.3 = select i1 %cmp21.i.i.3, float %cond20.i.i.3, float 0x7FF0000000000000
%cmp.i.i.i.3 = fcmp uno float %478, 0.000000e+00
%cond31.i.i.3 = select i1 %cmp.i.i.i.3, float %478, float %cond26.i.i.3
%mul91.i.3 = fmul float %cond31.i26.i.3, %cond31.i.i.3
%div92.i.3 = fdiv float %mul91.i.3, %fabs.i.3, !fpmath !46
%sub93.i.3 = fsub float 2.000000e+00, %div92.i.3
%cmp94.i.3 = fcmp olt float %mul226.3, 0.000000e+00
%cond98.i.3 = select i1 %cmp94.i.3, float %sub93.i.3, float %div92.i.3
%cmp99.i.3 = fcmp olt float %fabs.i.3, 2.800000e+01
%cond103.i.3 = select i1 %cmp99.i.3, float %cond98.i.3, float 0.000000e+00
%sub104.i.3 = fsub float 0x3FC3D4FA80000000, %div82.i.3
%add105.i.3 = fadd float %div82.i.3, 0x3FEB0AC160000000
%add106.i.3 = fadd float %add105.i.3, 1.000000e+00
%cond111.i.3 = select i1 %cmp94.i.3, float %add106.i.3, float %sub104.i.3
%cond116.i.3 = select i1 %cmp.i583.3, float %cond111.i.3, float %cond103.i.3
%sub117.i.3 = fadd float %mul226.3, -5.000000e-01
%486 = tail call float @llvm.fmuladd.f32(float %mul226.3, float %div82.i.3, float %sub117.i.3) #5
%sub119.i.3 = fsub float 5.000000e-01, %486
%cond124.i.3 = select i1 %cmp2.i.3, float %sub119.i.3, float %cond116.i.3
%cmp125.i.3 = fcmp olt float %mul226.3, -6.000000e+00
%cond129.i.3 = select i1 %cmp125.i.3, float 2.000000e+00, float %cond124.i.3
%cmp.i.i.3 = fcmp uno float %mul226.3, 0.000000e+00
%cond134.i.3 = select i1 %cmp.i.i.3, float %mul226.3, float %cond129.i.3
%mul229.3 = fmul float %cond.3, %nbparam_params_sh_ewald
%neg230.3 = fsub float -0.000000e+00, %mul229.3
%487 = tail call float @llvm.fmuladd.f32(float %div196.3, float %cond134.i.3, float %neg230.3)
%488 = tail call float @llvm.fmuladd.f32(float %mul217.3, float %487, float %E_el.5.2)
%splat.splatinsert.3 = insertelement <3 x float> undef, float %423, i32 0
%splat.splat.3 = shufflevector <3 x float> %splat.splatinsert.3, <3 x float> undef, <3 x i32> zeroinitializer
%mul235.3 = fmul <3 x float> %extractVec166.3, %splat.splat.3
%extractVec243.3 = shufflevector <4 x float> %fcj_buf.sroa.0.1.2, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub244.3 = fsub <3 x float> %extractVec243.3, %mul235.3
%extractVec245.3 = shufflevector <3 x float> %sub244.3, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec253.3 = shufflevector <4 x float> %fci_buf.sroa.32.0, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add254.3 = fadd <3 x float> %extractVec253.3, %mul235.3
%extractVec255.3 = shufflevector <3 x float> %add254.3, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end258.3
if.end258.3: ; preds = %if.then182.3, %if.then147.3, %if.end258.2
%fci_buf.sroa.32.3 = phi <4 x float> [ %fci_buf.sroa.32.0, %if.end258.2 ], [ %extractVec255.3, %if.then182.3 ], [ %fci_buf.sroa.32.0, %if.then147.3 ]
%E_el.5.3 = phi float [ %E_el.5.2, %if.end258.2 ], [ %488, %if.then182.3 ], [ %E_el.5.2, %if.then147.3 ]
%E_lj.3.3 = phi float [ %E_lj.3.2, %if.end258.2 ], [ %add216.3, %if.then182.3 ], [ %E_lj.3.2, %if.then147.3 ]
%fcj_buf.sroa.0.1.3 = phi <4 x float> [ %fcj_buf.sroa.0.1.2, %if.end258.2 ], [ %extractVec245.3, %if.then182.3 ], [ %fcj_buf.sroa.0.1.2, %if.then147.3 ]
%and145.4 = and i32 %64, 16
%tobool146.4 = icmp eq i32 %and145.4, 0
br i1 %tobool146.4, label %if.end258.4, label %if.then147.4
if.then147.4: ; preds = %if.end258.3
%489 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx154.4.3, align 16, !tbaa !36
%490 = fsub <4 x float> %489, %70
%491 = extractelement <4 x float> %490, i32 0
%492 = extractelement <4 x float> %490, i32 1
%mul3.i.i589.4 = fmul float %492, %492
%493 = tail call float @llvm.fmuladd.f32(float %491, float %491, float %mul3.i.i589.4) #5
%494 = extractelement <4 x float> %490, i32 2
%495 = tail call float @llvm.fmuladd.f32(float %494, float %494, float %493) #5
%and168.4 = and i32 %66, 16
%tobool169.4 = icmp ne i32 %and168.4, 0
%cond.4 = select i1 %tobool169.4, float 1.000000e+00, float 0.000000e+00
%cmp174.4 = icmp eq i32 %54, %68
%or.cond.4 = and i1 %cmp63, %cmp174.4
%not.or.cond.4 = xor i1 %or.cond.4, true
%cmp176..4 = or i1 %cmp176, %not.or.cond.4
%conv178.4 = uitofp i1 %cmp176..4 to float
%mul179.4 = fmul float %conv178.4, %nbparam_params_rcoulomb_sq
%cmp180.4 = fcmp olt float %495, %mul179.4
br i1 %cmp180.4, label %if.then182.4, label %if.end258.4
if.then182.4: ; preds = %if.then147.4
%extractVec166.4 = shufflevector <4 x float> %490, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%496 = extractelement <4 x float> %489, i32 3
%497 = load i32, i32 addrspace(1)* %arrayidx183.4.3, align 4, !tbaa !41
%mul184.4 = mul nsw i32 %497, %ntypes
%add185.4 = add nsw i32 %mul184.4, %72
%mul186.4 = shl nsw i32 %add185.4, 1
%498 = sext i32 %mul186.4 to i64
%arrayidx187.4 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %498
%499 = load float, float addrspace(2)* %arrayidx187.4, align 4, !tbaa !39
%add191.4 = or i32 %mul186.4, 1
%500 = sext i32 %add191.4 to i64
%arrayidx192.4 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %500
%501 = load float, float addrspace(2)* %arrayidx192.4, align 4, !tbaa !39
%sub193.4 = fsub float 1.000000e+00, %cond.4
%502 = tail call float @llvm.fmuladd.f32(float %sub193.4, float 0x3D71979980000000, float %495)
%cmp.i.i587.4 = fcmp olt float %502, 0.000000e+00
%call.i.i.4 = tail call float @llvm.sqrt.f32(float %502) #6
%call.i.i.op.4 = fdiv float 1.000000e+00, %call.i.i.4
%div196.4 = select i1 %cmp.i.i587.4, float 0x7FF8000000000000, float %call.i.i.op.4
%mul197.4 = fmul float %div196.4, %div196.4
%mul198.4 = fmul float %mul197.4, %mul197.4
%mul199.4 = fmul float %mul197.4, %mul198.4
%mul200.4 = fmul float %cond.4, %mul199.4
%neg.4 = fsub float -0.000000e+00, %499
%503 = tail call float @llvm.fmuladd.f32(float %501, float %mul200.4, float %neg.4)
%mul202.4 = fmul float %mul200.4, %503
%mul203.4 = fmul float %mul197.4, %mul202.4
%504 = tail call float @llvm.fmuladd.f32(float %mul200.4, float %mul200.4, float %nbparam_params_repulsion_shift_cpot)
%mul207.4 = fmul float %504, %501
%add211.4 = fadd float %mul200.4, %nbparam_params_dispersion_shift_cpot
%mul212.4 = fmul float %add211.4, %499
%mul213.4 = fmul float %mul212.4, 0x3FC5555560000000
%neg214.4 = fsub float -0.000000e+00, %mul213.4
%505 = tail call float @llvm.fmuladd.f32(float %mul207.4, float 0x3FB5555540000000, float %neg214.4)
%mul215.4 = fmul float %cond.4, %505
%add216.4 = fadd float %E_lj.3.3, %mul215.4
%mul217.4 = fmul float %71, %496
%mul218.4 = fmul float %cond.4, %mul197.4
%mul220.4 = fmul float %mul, %502
%mul.i585.4 = fmul float %mul220.4, %mul220.4
%506 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i585.4, float 0x3FBDA79640000000) #5
%507 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i585.4, float 0x3FE03C5780000000) #5
%508 = tail call float @llvm.fmuladd.f32(float %506, float %mul.i585.4, float 1.000000e+00) #5
%509 = tail call float @llvm.fmuladd.f32(float %507, float %mul220.4, float %508) #5
%div.i586.4 = fdiv float 1.000000e+00, %509, !fpmath !46
%510 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i585.4, float 0xBF0BFF7260000000) #5
%511 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i585.4, float 0x3F50794180000000) #5
%512 = tail call float @llvm.fmuladd.f32(float %510, float %mul.i585.4, float 0xBF93BDB200000000) #5
%513 = tail call float @llvm.fmuladd.f32(float %511, float %mul.i585.4, float 0x3FB1D5E760000000) #5
%514 = tail call float @llvm.fmuladd.f32(float %512, float %mul.i585.4, float 0xBFE81272E0000000) #5
%515 = tail call float @llvm.fmuladd.f32(float %513, float %mul220.4, float %514) #5
%mul11.i.4 = fmul float %515, %div.i586.4
%mul222.4 = fmul float %mul19, %mul11.i.4
%516 = tail call float @llvm.fmuladd.f32(float %mul218.4, float %div196.4, float %mul222.4)
%517 = tail call float @llvm.fmuladd.f32(float %mul217.4, float %516, float %mul203.4)
%mul225.4 = fmul float %502, %div196.4
%mul226.4 = fmul float %mul225.4, %nbparam_params_ewald_beta
%fabs.i.4 = tail call float @llvm.fabs.f32(float %mul226.4) #5
%and.i.4 = bitcast float %fabs.i.4 to i32
%mul.i.4 = fmul float %mul226.4, %mul226.4
%div.i.4 = fdiv float 1.000000e+00, %mul.i.4, !fpmath !46
%sub.i.4 = fadd float %fabs.i.4, -1.000000e+00
%cmp.i583.4 = fcmp olt float %fabs.i.4, 1.250000e+00
%cond.i.4 = select i1 %cmp.i583.4, float %sub.i.4, float %div.i.4
%cmp2.i.4 = fcmp olt float %fabs.i.4, 8.437500e-01
%cond6.i.4 = select i1 %cmp2.i.4, float %mul.i.4, float %cond.i.4
%518 = tail call float @llvm.fmuladd.f32(float %cond6.i.4, float 0xC07E384EA0000000, float 0xC090046160000000) #5
%519 = tail call float @llvm.fmuladd.f32(float %cond6.i.4, float %518, float 0xC083EC8820000000) #5
%520 = tail call float @llvm.fmuladd.f32(float %cond6.i.4, float %519, float 0xC064145D40000000) #5
%521 = tail call float @llvm.fmuladd.f32(float %cond6.i.4, float %520, float 0xC031C20960000000) #5
%522 = tail call float @llvm.fmuladd.f32(float %cond6.i.4, float %521, float 0xBFE993BA80000000) #5
%523 = tail call float @llvm.fmuladd.f32(float %cond6.i.4, float %522, float 0xBF84341240000000) #5
%524 = tail call float @llvm.fmuladd.f32(float %cond6.i.4, float 0xC03670E240000000, float 0x407DA874E0000000) #5
%525 = tail call float @llvm.fmuladd.f32(float %cond6.i.4, float %524, float 0x40A3F219C0000000) #5
%526 = tail call float @llvm.fmuladd.f32(float %cond6.i.4, float %525, float 0x40A8FFB760000000) #5
%527 = tail call float @llvm.fmuladd.f32(float %cond6.i.4, float %526, float 0x409802EB20000000) #5
%528 = tail call float @llvm.fmuladd.f32(float %cond6.i.4, float %527, float 0x40745CAE20000000) #5
%529 = tail call float @llvm.fmuladd.f32(float %cond6.i.4, float %528, float 0x403E568B20000000) #5
%530 = tail call float @llvm.fmuladd.f32(float %cond6.i.4, float 0xC023A0EFC0000000, float 0xC054526560000000) #5
%531 = tail call float @llvm.fmuladd.f32(float %cond6.i.4, float %530, float 0xC067135CE0000000) #5
%532 = tail call float @llvm.fmuladd.f32(float %cond6.i.4, float %531, float 0xC0644CB180000000) #5
%533 = tail call float @llvm.fmuladd.f32(float %cond6.i.4, float %532, float 0xC04F300AE0000000) #5
%534 = tail call float @llvm.fmuladd.f32(float %cond6.i.4, float %533, float 0xC0251E0440000000) #5
%535 = tail call float @llvm.fmuladd.f32(float %cond6.i.4, float %534, float 0xBFE63416E0000000) #5
%536 = tail call float @llvm.fmuladd.f32(float %cond6.i.4, float %535, float 0xBF84341260000000) #5
%537 = tail call float @llvm.fmuladd.f32(float %cond6.i.4, float 0xBFAEEFF2E0000000, float 0x401A47EF80000000) #5
%538 = tail call float @llvm.fmuladd.f32(float %cond6.i.4, float %537, float 0x405B28A3E0000000) #5
%539 = tail call float @llvm.fmuladd.f32(float %cond6.i.4, float %538, float 0x407AD02160000000) #5
%540 = tail call float @llvm.fmuladd.f32(float %cond6.i.4, float %539, float 0x40842B1920000000) #5
%541 = tail call float @llvm.fmuladd.f32(float %cond6.i.4, float %540, float 0x407B290DE0000000) #5
%542 = tail call float @llvm.fmuladd.f32(float %cond6.i.4, float %541, float 0x4061350C60000000) #5
%543 = tail call float @llvm.fmuladd.f32(float %cond6.i.4, float %542, float 0x4033A6B9C0000000) #5
%cmp32.i.4 = fcmp olt float %fabs.i.4, 0x4006DB6DA0000000
%cond36.i.4 = select i1 %cmp32.i.4, float %536, float %523
%cond41.i.4 = select i1 %cmp32.i.4, float %543, float %529
%544 = tail call float @llvm.fmuladd.f32(float %cond6.i.4, float 0xBF61BF3800000000, float 0x3FA22A3660000000) #5
%545 = tail call float @llvm.fmuladd.f32(float %cond6.i.4, float %544, float 0xBFBC639840000000) #5
%546 = tail call float @llvm.fmuladd.f32(float %cond6.i.4, float %545, float 0x3FD45FCA80000000) #5
%547 = tail call float @llvm.fmuladd.f32(float %cond6.i.4, float %546, float 0xBFD7D24100000000) #5
%548 = tail call float @llvm.fmuladd.f32(float %cond6.i.4, float %547, float 0x3FDA8D00A0000000) #5
%549 = tail call float @llvm.fmuladd.f32(float %cond6.i.4, float %548, float 0xBF6359B8C0000000) #5
%550 = tail call float @llvm.fmuladd.f32(float %cond6.i.4, float 0x3F888B5460000000, float 0x3F8BEDC260000000) #5
%551 = tail call float @llvm.fmuladd.f32(float %cond6.i.4, float %550, float 0x3FC02660E0000000) #5
%552 = tail call float @llvm.fmuladd.f32(float %cond6.i.4, float %551, float 0x3FB2635CE0000000) #5
%553 = tail call float @llvm.fmuladd.f32(float %cond6.i.4, float %552, float 0x3FE14AF0A0000000) #5
%554 = tail call float @llvm.fmuladd.f32(float %cond6.i.4, float %553, float 0x3FBB3E6620000000) #5
%cond57.i.4 = select i1 %cmp.i583.4, float %549, float %cond36.i.4
%cond62.i.4 = select i1 %cmp.i583.4, float %554, float %cond41.i.4
%555 = tail call float @llvm.fmuladd.f32(float %cond6.i.4, float 0xBEF8EAD620000000, float 0xBF77A29120000000) #5
%556 = tail call float @llvm.fmuladd.f32(float %cond6.i.4, float %555, float 0xBF9D2A51E0000000) #5
%557 = tail call float @llvm.fmuladd.f32(float %cond6.i.4, float %556, float 0xBFD4CD7D60000000) #5
%558 = tail call float @llvm.fmuladd.f32(float %cond6.i.4, float %557, float 0x3FC06EBA80000000) #5
%559 = tail call float @llvm.fmuladd.f32(float %cond6.i.4, float 0xBED09C4340000000, float 0x3F215DC920000000) #5
%560 = tail call float @llvm.fmuladd.f32(float %cond6.i.4, float %559, float 0x3F74D022C0000000) #5
%561 = tail call float @llvm.fmuladd.f32(float %cond6.i.4, float %560, float 0x3FB0A54C60000000) #5
%562 = tail call float @llvm.fmuladd.f32(float %cond6.i.4, float %561, float 0x3FD97779C0000000) #5
%cond75.i.4 = select i1 %cmp2.i.4, float %558, float %cond57.i.4
%cond80.i.4 = select i1 %cmp2.i.4, float %562, float %cond62.i.4
%563 = tail call float @llvm.fmuladd.f32(float %cond6.i.4, float %cond80.i.4, float 1.000000e+00) #5
%div82.i.4 = fdiv float %cond75.i.4, %563, !fpmath !46
%and83.i.4 = and i32 %and.i.4, -4096
%astype84.i.4 = bitcast i32 %and83.i.4 to float
%sub85.i.4 = fsub float -0.000000e+00, %astype84.i.4
%564 = tail call float @llvm.fmuladd.f32(float %sub85.i.4, float %astype84.i.4, float -5.625000e-01) #5
%cmp.i2.i.4 = fcmp olt float %564, 0.000000e+00
%cond.i3.i.4 = select i1 %cmp.i2.i.4, float -5.000000e-01, float 5.000000e-01
%565 = tail call float @llvm.fmuladd.f32(float %564, float 0x3FF7154760000000, float %cond.i3.i.4) #5
%conv.i4.i.4 = fptosi float %565 to i32
%conv1.i5.i.4 = sitofp i32 %conv.i4.i.4 to float
%566 = tail call float @llvm.fmuladd.f32(float %conv1.i5.i.4, float 0xBFE62E3000000000, float %564) #5
%mul.i6.i.4 = fmul float %conv1.i5.i.4, 0xBEE2FEFA20000000
%add.i7.i.4 = fadd float %566, %mul.i6.i.4
%mul3.i8.i.4 = fmul float %add.i7.i.4, %add.i7.i.4
%567 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.4, float 0x3E66376980000000, float 0xBEBBBD41C0000000) #5
%568 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.4, float %567, float 0x3F11566AA0000000) #5
%569 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.4, float %568, float 0xBF66C16C20000000) #5
%570 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.4, float %569, float 0x3FC5555560000000) #5
%sub8.i9.i.4 = fsub float -0.000000e+00, %570
%571 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.4, float %sub8.i9.i.4, float %add.i7.i.4) #5
%sub10.i10.i.4 = fsub float -0.000000e+00, %mul.i6.i.4
%mul11.i11.i.4 = fmul float %add.i7.i.4, %571
%sub12.i12.i.4 = fsub float 2.000000e+00, %571
%div.i13.i.4 = fdiv float %mul11.i11.i.4, %sub12.i12.i.4, !fpmath !46
%sub13.i14.i.4 = fsub float %sub10.i10.i.4, %div.i13.i.4
%sub14.i15.i.4 = fsub float %sub13.i14.i.4, %566
%sub15.i16.i.4 = fsub float 1.000000e+00, %sub14.i15.i.4
%astype.i17.i.4 = bitcast float %sub15.i16.i.4 to i32
%shl.i18.i.4 = shl i32 %conv.i4.i.4, 23
%add16.i19.i.4 = add nsw i32 %astype.i17.i.4, %shl.i18.i.4
%astype17.i20.i.4 = bitcast i32 %add16.i19.i.4 to float
%cmp18.i21.i.4 = fcmp olt float %564, 0xC055D589E0000000
%cond20.i22.i.4 = select i1 %cmp18.i21.i.4, float 0.000000e+00, float %astype17.i20.i.4
%cmp21.i23.i.4 = fcmp olt float %564, 0x40562E4300000000
%cond26.i24.i.4 = select i1 %cmp21.i23.i.4, float %cond20.i22.i.4, float 0x7FF0000000000000
%cmp.i.i25.i.4 = fcmp uno float %564, 0.000000e+00
%cond31.i26.i.4 = select i1 %cmp.i.i25.i.4, float %564, float %cond26.i24.i.4
%sub88.i.4 = fsub float %astype84.i.4, %fabs.i.4
%add.i584.4 = fadd float %fabs.i.4, %astype84.i.4
%572 = tail call float @llvm.fmuladd.f32(float %sub88.i.4, float %add.i584.4, float %div82.i.4) #5
%cmp.i1.i.4 = fcmp olt float %572, 0.000000e+00
%cond.i.i.4 = select i1 %cmp.i1.i.4, float -5.000000e-01, float 5.000000e-01
%573 = tail call float @llvm.fmuladd.f32(float %572, float 0x3FF7154760000000, float %cond.i.i.4) #5
%conv.i.i.4 = fptosi float %573 to i32
%conv1.i.i.4 = sitofp i32 %conv.i.i.4 to float
%574 = tail call float @llvm.fmuladd.f32(float %conv1.i.i.4, float 0xBFE62E3000000000, float %572) #5
%mul.i.i.4 = fmul float %conv1.i.i.4, 0xBEE2FEFA20000000
%add.i.i.4 = fadd float %574, %mul.i.i.4
%mul3.i.i.4 = fmul float %add.i.i.4, %add.i.i.4
%575 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.4, float 0x3E66376980000000, float 0xBEBBBD41C0000000) #5
%576 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.4, float %575, float 0x3F11566AA0000000) #5
%577 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.4, float %576, float 0xBF66C16C20000000) #5
%578 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.4, float %577, float 0x3FC5555560000000) #5
%sub8.i.i.4 = fsub float -0.000000e+00, %578
%579 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.4, float %sub8.i.i.4, float %add.i.i.4) #5
%sub10.i.i.4 = fsub float -0.000000e+00, %mul.i.i.4
%mul11.i.i.4 = fmul float %add.i.i.4, %579
%sub12.i.i.4 = fsub float 2.000000e+00, %579
%div.i.i.4 = fdiv float %mul11.i.i.4, %sub12.i.i.4, !fpmath !46
%sub13.i.i.4 = fsub float %sub10.i.i.4, %div.i.i.4
%sub14.i.i.4 = fsub float %sub13.i.i.4, %574
%sub15.i.i.4 = fsub float 1.000000e+00, %sub14.i.i.4
%astype.i.i.4 = bitcast float %sub15.i.i.4 to i32
%shl.i.i.4 = shl i32 %conv.i.i.4, 23
%add16.i.i.4 = add nsw i32 %astype.i.i.4, %shl.i.i.4
%astype17.i.i.4 = bitcast i32 %add16.i.i.4 to float
%cmp18.i.i.4 = fcmp olt float %572, 0xC055D589E0000000
%cond20.i.i.4 = select i1 %cmp18.i.i.4, float 0.000000e+00, float %astype17.i.i.4
%cmp21.i.i.4 = fcmp olt float %572, 0x40562E4300000000
%cond26.i.i.4 = select i1 %cmp21.i.i.4, float %cond20.i.i.4, float 0x7FF0000000000000
%cmp.i.i.i.4 = fcmp uno float %572, 0.000000e+00
%cond31.i.i.4 = select i1 %cmp.i.i.i.4, float %572, float %cond26.i.i.4
%mul91.i.4 = fmul float %cond31.i26.i.4, %cond31.i.i.4
%div92.i.4 = fdiv float %mul91.i.4, %fabs.i.4, !fpmath !46
%sub93.i.4 = fsub float 2.000000e+00, %div92.i.4
%cmp94.i.4 = fcmp olt float %mul226.4, 0.000000e+00
%cond98.i.4 = select i1 %cmp94.i.4, float %sub93.i.4, float %div92.i.4
%cmp99.i.4 = fcmp olt float %fabs.i.4, 2.800000e+01
%cond103.i.4 = select i1 %cmp99.i.4, float %cond98.i.4, float 0.000000e+00
%sub104.i.4 = fsub float 0x3FC3D4FA80000000, %div82.i.4
%add105.i.4 = fadd float %div82.i.4, 0x3FEB0AC160000000
%add106.i.4 = fadd float %add105.i.4, 1.000000e+00
%cond111.i.4 = select i1 %cmp94.i.4, float %add106.i.4, float %sub104.i.4
%cond116.i.4 = select i1 %cmp.i583.4, float %cond111.i.4, float %cond103.i.4
%sub117.i.4 = fadd float %mul226.4, -5.000000e-01
%580 = tail call float @llvm.fmuladd.f32(float %mul226.4, float %div82.i.4, float %sub117.i.4) #5
%sub119.i.4 = fsub float 5.000000e-01, %580
%cond124.i.4 = select i1 %cmp2.i.4, float %sub119.i.4, float %cond116.i.4
%cmp125.i.4 = fcmp olt float %mul226.4, -6.000000e+00
%cond129.i.4 = select i1 %cmp125.i.4, float 2.000000e+00, float %cond124.i.4
%cmp.i.i.4 = fcmp uno float %mul226.4, 0.000000e+00
%cond134.i.4 = select i1 %cmp.i.i.4, float %mul226.4, float %cond129.i.4
%mul229.4 = fmul float %cond.4, %nbparam_params_sh_ewald
%neg230.4 = fsub float -0.000000e+00, %mul229.4
%581 = tail call float @llvm.fmuladd.f32(float %div196.4, float %cond134.i.4, float %neg230.4)
%582 = tail call float @llvm.fmuladd.f32(float %mul217.4, float %581, float %E_el.5.3)
%splat.splatinsert.4 = insertelement <3 x float> undef, float %517, i32 0
%splat.splat.4 = shufflevector <3 x float> %splat.splatinsert.4, <3 x float> undef, <3 x i32> zeroinitializer
%mul235.4 = fmul <3 x float> %extractVec166.4, %splat.splat.4
%extractVec243.4 = shufflevector <4 x float> %fcj_buf.sroa.0.1.3, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub244.4 = fsub <3 x float> %extractVec243.4, %mul235.4
%extractVec245.4 = shufflevector <3 x float> %sub244.4, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec253.4 = shufflevector <4 x float> %fci_buf.sroa.42.0, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add254.4 = fadd <3 x float> %extractVec253.4, %mul235.4
%extractVec255.4 = shufflevector <3 x float> %add254.4, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end258.4
if.end258.4: ; preds = %if.then182.4, %if.then147.4, %if.end258.3
%fci_buf.sroa.42.3 = phi <4 x float> [ %fci_buf.sroa.42.0, %if.end258.3 ], [ %extractVec255.4, %if.then182.4 ], [ %fci_buf.sroa.42.0, %if.then147.4 ]
%E_el.5.4 = phi float [ %E_el.5.3, %if.end258.3 ], [ %582, %if.then182.4 ], [ %E_el.5.3, %if.then147.4 ]
%E_lj.3.4 = phi float [ %E_lj.3.3, %if.end258.3 ], [ %add216.4, %if.then182.4 ], [ %E_lj.3.3, %if.then147.4 ]
%fcj_buf.sroa.0.1.4 = phi <4 x float> [ %fcj_buf.sroa.0.1.3, %if.end258.3 ], [ %extractVec245.4, %if.then182.4 ], [ %fcj_buf.sroa.0.1.3, %if.then147.4 ]
%and145.5 = and i32 %64, 32
%tobool146.5 = icmp eq i32 %and145.5, 0
br i1 %tobool146.5, label %if.end258.5, label %if.then147.5
if.then147.5: ; preds = %if.end258.4
%583 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx154.5.3, align 16, !tbaa !36
%584 = fsub <4 x float> %583, %70
%585 = extractelement <4 x float> %584, i32 0
%586 = extractelement <4 x float> %584, i32 1
%mul3.i.i589.5 = fmul float %586, %586
%587 = tail call float @llvm.fmuladd.f32(float %585, float %585, float %mul3.i.i589.5) #5
%588 = extractelement <4 x float> %584, i32 2
%589 = tail call float @llvm.fmuladd.f32(float %588, float %588, float %587) #5
%and168.5 = and i32 %66, 32
%tobool169.5 = icmp ne i32 %and168.5, 0
%cond.5 = select i1 %tobool169.5, float 1.000000e+00, float 0.000000e+00
%cmp174.5 = icmp eq i32 %52, %68
%or.cond.5 = and i1 %cmp63, %cmp174.5
%not.or.cond.5 = xor i1 %or.cond.5, true
%cmp176..5 = or i1 %cmp176, %not.or.cond.5
%conv178.5 = uitofp i1 %cmp176..5 to float
%mul179.5 = fmul float %conv178.5, %nbparam_params_rcoulomb_sq
%cmp180.5 = fcmp olt float %589, %mul179.5
br i1 %cmp180.5, label %if.then182.5, label %if.end258.5
if.then182.5: ; preds = %if.then147.5
%extractVec166.5 = shufflevector <4 x float> %584, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%590 = extractelement <4 x float> %583, i32 3
%591 = load i32, i32 addrspace(1)* %arrayidx183.5.3, align 4, !tbaa !41
%mul184.5 = mul nsw i32 %591, %ntypes
%add185.5 = add nsw i32 %mul184.5, %72
%mul186.5 = shl nsw i32 %add185.5, 1
%592 = sext i32 %mul186.5 to i64
%arrayidx187.5 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %592
%593 = load float, float addrspace(2)* %arrayidx187.5, align 4, !tbaa !39
%add191.5 = or i32 %mul186.5, 1
%594 = sext i32 %add191.5 to i64
%arrayidx192.5 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %594
%595 = load float, float addrspace(2)* %arrayidx192.5, align 4, !tbaa !39
%sub193.5 = fsub float 1.000000e+00, %cond.5
%596 = tail call float @llvm.fmuladd.f32(float %sub193.5, float 0x3D71979980000000, float %589)
%cmp.i.i587.5 = fcmp olt float %596, 0.000000e+00
%call.i.i.5 = tail call float @llvm.sqrt.f32(float %596) #6
%call.i.i.op.5 = fdiv float 1.000000e+00, %call.i.i.5
%div196.5 = select i1 %cmp.i.i587.5, float 0x7FF8000000000000, float %call.i.i.op.5
%mul197.5 = fmul float %div196.5, %div196.5
%mul198.5 = fmul float %mul197.5, %mul197.5
%mul199.5 = fmul float %mul197.5, %mul198.5
%mul200.5 = fmul float %cond.5, %mul199.5
%neg.5 = fsub float -0.000000e+00, %593
%597 = tail call float @llvm.fmuladd.f32(float %595, float %mul200.5, float %neg.5)
%mul202.5 = fmul float %mul200.5, %597
%mul203.5 = fmul float %mul197.5, %mul202.5
%598 = tail call float @llvm.fmuladd.f32(float %mul200.5, float %mul200.5, float %nbparam_params_repulsion_shift_cpot)
%mul207.5 = fmul float %598, %595
%add211.5 = fadd float %mul200.5, %nbparam_params_dispersion_shift_cpot
%mul212.5 = fmul float %add211.5, %593
%mul213.5 = fmul float %mul212.5, 0x3FC5555560000000
%neg214.5 = fsub float -0.000000e+00, %mul213.5
%599 = tail call float @llvm.fmuladd.f32(float %mul207.5, float 0x3FB5555540000000, float %neg214.5)
%mul215.5 = fmul float %cond.5, %599
%add216.5 = fadd float %E_lj.3.4, %mul215.5
%mul217.5 = fmul float %71, %590
%mul218.5 = fmul float %cond.5, %mul197.5
%mul220.5 = fmul float %mul, %596
%mul.i585.5 = fmul float %mul220.5, %mul220.5
%600 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i585.5, float 0x3FBDA79640000000) #5
%601 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i585.5, float 0x3FE03C5780000000) #5
%602 = tail call float @llvm.fmuladd.f32(float %600, float %mul.i585.5, float 1.000000e+00) #5
%603 = tail call float @llvm.fmuladd.f32(float %601, float %mul220.5, float %602) #5
%div.i586.5 = fdiv float 1.000000e+00, %603, !fpmath !46
%604 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i585.5, float 0xBF0BFF7260000000) #5
%605 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i585.5, float 0x3F50794180000000) #5
%606 = tail call float @llvm.fmuladd.f32(float %604, float %mul.i585.5, float 0xBF93BDB200000000) #5
%607 = tail call float @llvm.fmuladd.f32(float %605, float %mul.i585.5, float 0x3FB1D5E760000000) #5
%608 = tail call float @llvm.fmuladd.f32(float %606, float %mul.i585.5, float 0xBFE81272E0000000) #5
%609 = tail call float @llvm.fmuladd.f32(float %607, float %mul220.5, float %608) #5
%mul11.i.5 = fmul float %609, %div.i586.5
%mul222.5 = fmul float %mul19, %mul11.i.5
%610 = tail call float @llvm.fmuladd.f32(float %mul218.5, float %div196.5, float %mul222.5)
%611 = tail call float @llvm.fmuladd.f32(float %mul217.5, float %610, float %mul203.5)
%mul225.5 = fmul float %596, %div196.5
%mul226.5 = fmul float %mul225.5, %nbparam_params_ewald_beta
%fabs.i.5 = tail call float @llvm.fabs.f32(float %mul226.5) #5
%and.i.5 = bitcast float %fabs.i.5 to i32
%mul.i.5 = fmul float %mul226.5, %mul226.5
%div.i.5 = fdiv float 1.000000e+00, %mul.i.5, !fpmath !46
%sub.i.5 = fadd float %fabs.i.5, -1.000000e+00
%cmp.i583.5 = fcmp olt float %fabs.i.5, 1.250000e+00
%cond.i.5 = select i1 %cmp.i583.5, float %sub.i.5, float %div.i.5
%cmp2.i.5 = fcmp olt float %fabs.i.5, 8.437500e-01
%cond6.i.5 = select i1 %cmp2.i.5, float %mul.i.5, float %cond.i.5
%612 = tail call float @llvm.fmuladd.f32(float %cond6.i.5, float 0xC07E384EA0000000, float 0xC090046160000000) #5
%613 = tail call float @llvm.fmuladd.f32(float %cond6.i.5, float %612, float 0xC083EC8820000000) #5
%614 = tail call float @llvm.fmuladd.f32(float %cond6.i.5, float %613, float 0xC064145D40000000) #5
%615 = tail call float @llvm.fmuladd.f32(float %cond6.i.5, float %614, float 0xC031C20960000000) #5
%616 = tail call float @llvm.fmuladd.f32(float %cond6.i.5, float %615, float 0xBFE993BA80000000) #5
%617 = tail call float @llvm.fmuladd.f32(float %cond6.i.5, float %616, float 0xBF84341240000000) #5
%618 = tail call float @llvm.fmuladd.f32(float %cond6.i.5, float 0xC03670E240000000, float 0x407DA874E0000000) #5
%619 = tail call float @llvm.fmuladd.f32(float %cond6.i.5, float %618, float 0x40A3F219C0000000) #5
%620 = tail call float @llvm.fmuladd.f32(float %cond6.i.5, float %619, float 0x40A8FFB760000000) #5
%621 = tail call float @llvm.fmuladd.f32(float %cond6.i.5, float %620, float 0x409802EB20000000) #5
%622 = tail call float @llvm.fmuladd.f32(float %cond6.i.5, float %621, float 0x40745CAE20000000) #5
%623 = tail call float @llvm.fmuladd.f32(float %cond6.i.5, float %622, float 0x403E568B20000000) #5
%624 = tail call float @llvm.fmuladd.f32(float %cond6.i.5, float 0xC023A0EFC0000000, float 0xC054526560000000) #5
%625 = tail call float @llvm.fmuladd.f32(float %cond6.i.5, float %624, float 0xC067135CE0000000) #5
%626 = tail call float @llvm.fmuladd.f32(float %cond6.i.5, float %625, float 0xC0644CB180000000) #5
%627 = tail call float @llvm.fmuladd.f32(float %cond6.i.5, float %626, float 0xC04F300AE0000000) #5
%628 = tail call float @llvm.fmuladd.f32(float %cond6.i.5, float %627, float 0xC0251E0440000000) #5
%629 = tail call float @llvm.fmuladd.f32(float %cond6.i.5, float %628, float 0xBFE63416E0000000) #5
%630 = tail call float @llvm.fmuladd.f32(float %cond6.i.5, float %629, float 0xBF84341260000000) #5
%631 = tail call float @llvm.fmuladd.f32(float %cond6.i.5, float 0xBFAEEFF2E0000000, float 0x401A47EF80000000) #5
%632 = tail call float @llvm.fmuladd.f32(float %cond6.i.5, float %631, float 0x405B28A3E0000000) #5
%633 = tail call float @llvm.fmuladd.f32(float %cond6.i.5, float %632, float 0x407AD02160000000) #5
%634 = tail call float @llvm.fmuladd.f32(float %cond6.i.5, float %633, float 0x40842B1920000000) #5
%635 = tail call float @llvm.fmuladd.f32(float %cond6.i.5, float %634, float 0x407B290DE0000000) #5
%636 = tail call float @llvm.fmuladd.f32(float %cond6.i.5, float %635, float 0x4061350C60000000) #5
%637 = tail call float @llvm.fmuladd.f32(float %cond6.i.5, float %636, float 0x4033A6B9C0000000) #5
%cmp32.i.5 = fcmp olt float %fabs.i.5, 0x4006DB6DA0000000
%cond36.i.5 = select i1 %cmp32.i.5, float %630, float %617
%cond41.i.5 = select i1 %cmp32.i.5, float %637, float %623
%638 = tail call float @llvm.fmuladd.f32(float %cond6.i.5, float 0xBF61BF3800000000, float 0x3FA22A3660000000) #5
%639 = tail call float @llvm.fmuladd.f32(float %cond6.i.5, float %638, float 0xBFBC639840000000) #5
%640 = tail call float @llvm.fmuladd.f32(float %cond6.i.5, float %639, float 0x3FD45FCA80000000) #5
%641 = tail call float @llvm.fmuladd.f32(float %cond6.i.5, float %640, float 0xBFD7D24100000000) #5
%642 = tail call float @llvm.fmuladd.f32(float %cond6.i.5, float %641, float 0x3FDA8D00A0000000) #5
%643 = tail call float @llvm.fmuladd.f32(float %cond6.i.5, float %642, float 0xBF6359B8C0000000) #5
%644 = tail call float @llvm.fmuladd.f32(float %cond6.i.5, float 0x3F888B5460000000, float 0x3F8BEDC260000000) #5
%645 = tail call float @llvm.fmuladd.f32(float %cond6.i.5, float %644, float 0x3FC02660E0000000) #5
%646 = tail call float @llvm.fmuladd.f32(float %cond6.i.5, float %645, float 0x3FB2635CE0000000) #5
%647 = tail call float @llvm.fmuladd.f32(float %cond6.i.5, float %646, float 0x3FE14AF0A0000000) #5
%648 = tail call float @llvm.fmuladd.f32(float %cond6.i.5, float %647, float 0x3FBB3E6620000000) #5
%cond57.i.5 = select i1 %cmp.i583.5, float %643, float %cond36.i.5
%cond62.i.5 = select i1 %cmp.i583.5, float %648, float %cond41.i.5
%649 = tail call float @llvm.fmuladd.f32(float %cond6.i.5, float 0xBEF8EAD620000000, float 0xBF77A29120000000) #5
%650 = tail call float @llvm.fmuladd.f32(float %cond6.i.5, float %649, float 0xBF9D2A51E0000000) #5
%651 = tail call float @llvm.fmuladd.f32(float %cond6.i.5, float %650, float 0xBFD4CD7D60000000) #5
%652 = tail call float @llvm.fmuladd.f32(float %cond6.i.5, float %651, float 0x3FC06EBA80000000) #5
%653 = tail call float @llvm.fmuladd.f32(float %cond6.i.5, float 0xBED09C4340000000, float 0x3F215DC920000000) #5
%654 = tail call float @llvm.fmuladd.f32(float %cond6.i.5, float %653, float 0x3F74D022C0000000) #5
%655 = tail call float @llvm.fmuladd.f32(float %cond6.i.5, float %654, float 0x3FB0A54C60000000) #5
%656 = tail call float @llvm.fmuladd.f32(float %cond6.i.5, float %655, float 0x3FD97779C0000000) #5
%cond75.i.5 = select i1 %cmp2.i.5, float %652, float %cond57.i.5
%cond80.i.5 = select i1 %cmp2.i.5, float %656, float %cond62.i.5
%657 = tail call float @llvm.fmuladd.f32(float %cond6.i.5, float %cond80.i.5, float 1.000000e+00) #5
%div82.i.5 = fdiv float %cond75.i.5, %657, !fpmath !46
%and83.i.5 = and i32 %and.i.5, -4096
%astype84.i.5 = bitcast i32 %and83.i.5 to float
%sub85.i.5 = fsub float -0.000000e+00, %astype84.i.5
%658 = tail call float @llvm.fmuladd.f32(float %sub85.i.5, float %astype84.i.5, float -5.625000e-01) #5
%cmp.i2.i.5 = fcmp olt float %658, 0.000000e+00
%cond.i3.i.5 = select i1 %cmp.i2.i.5, float -5.000000e-01, float 5.000000e-01
%659 = tail call float @llvm.fmuladd.f32(float %658, float 0x3FF7154760000000, float %cond.i3.i.5) #5
%conv.i4.i.5 = fptosi float %659 to i32
%conv1.i5.i.5 = sitofp i32 %conv.i4.i.5 to float
%660 = tail call float @llvm.fmuladd.f32(float %conv1.i5.i.5, float 0xBFE62E3000000000, float %658) #5
%mul.i6.i.5 = fmul float %conv1.i5.i.5, 0xBEE2FEFA20000000
%add.i7.i.5 = fadd float %660, %mul.i6.i.5
%mul3.i8.i.5 = fmul float %add.i7.i.5, %add.i7.i.5
%661 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.5, float 0x3E66376980000000, float 0xBEBBBD41C0000000) #5
%662 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.5, float %661, float 0x3F11566AA0000000) #5
%663 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.5, float %662, float 0xBF66C16C20000000) #5
%664 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.5, float %663, float 0x3FC5555560000000) #5
%sub8.i9.i.5 = fsub float -0.000000e+00, %664
%665 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.5, float %sub8.i9.i.5, float %add.i7.i.5) #5
%sub10.i10.i.5 = fsub float -0.000000e+00, %mul.i6.i.5
%mul11.i11.i.5 = fmul float %add.i7.i.5, %665
%sub12.i12.i.5 = fsub float 2.000000e+00, %665
%div.i13.i.5 = fdiv float %mul11.i11.i.5, %sub12.i12.i.5, !fpmath !46
%sub13.i14.i.5 = fsub float %sub10.i10.i.5, %div.i13.i.5
%sub14.i15.i.5 = fsub float %sub13.i14.i.5, %660
%sub15.i16.i.5 = fsub float 1.000000e+00, %sub14.i15.i.5
%astype.i17.i.5 = bitcast float %sub15.i16.i.5 to i32
%shl.i18.i.5 = shl i32 %conv.i4.i.5, 23
%add16.i19.i.5 = add nsw i32 %astype.i17.i.5, %shl.i18.i.5
%astype17.i20.i.5 = bitcast i32 %add16.i19.i.5 to float
%cmp18.i21.i.5 = fcmp olt float %658, 0xC055D589E0000000
%cond20.i22.i.5 = select i1 %cmp18.i21.i.5, float 0.000000e+00, float %astype17.i20.i.5
%cmp21.i23.i.5 = fcmp olt float %658, 0x40562E4300000000
%cond26.i24.i.5 = select i1 %cmp21.i23.i.5, float %cond20.i22.i.5, float 0x7FF0000000000000
%cmp.i.i25.i.5 = fcmp uno float %658, 0.000000e+00
%cond31.i26.i.5 = select i1 %cmp.i.i25.i.5, float %658, float %cond26.i24.i.5
%sub88.i.5 = fsub float %astype84.i.5, %fabs.i.5
%add.i584.5 = fadd float %fabs.i.5, %astype84.i.5
%666 = tail call float @llvm.fmuladd.f32(float %sub88.i.5, float %add.i584.5, float %div82.i.5) #5
%cmp.i1.i.5 = fcmp olt float %666, 0.000000e+00
%cond.i.i.5 = select i1 %cmp.i1.i.5, float -5.000000e-01, float 5.000000e-01
%667 = tail call float @llvm.fmuladd.f32(float %666, float 0x3FF7154760000000, float %cond.i.i.5) #5
%conv.i.i.5 = fptosi float %667 to i32
%conv1.i.i.5 = sitofp i32 %conv.i.i.5 to float
%668 = tail call float @llvm.fmuladd.f32(float %conv1.i.i.5, float 0xBFE62E3000000000, float %666) #5
%mul.i.i.5 = fmul float %conv1.i.i.5, 0xBEE2FEFA20000000
%add.i.i.5 = fadd float %668, %mul.i.i.5
%mul3.i.i.5 = fmul float %add.i.i.5, %add.i.i.5
%669 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.5, float 0x3E66376980000000, float 0xBEBBBD41C0000000) #5
%670 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.5, float %669, float 0x3F11566AA0000000) #5
%671 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.5, float %670, float 0xBF66C16C20000000) #5
%672 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.5, float %671, float 0x3FC5555560000000) #5
%sub8.i.i.5 = fsub float -0.000000e+00, %672
%673 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.5, float %sub8.i.i.5, float %add.i.i.5) #5
%sub10.i.i.5 = fsub float -0.000000e+00, %mul.i.i.5
%mul11.i.i.5 = fmul float %add.i.i.5, %673
%sub12.i.i.5 = fsub float 2.000000e+00, %673
%div.i.i.5 = fdiv float %mul11.i.i.5, %sub12.i.i.5, !fpmath !46
%sub13.i.i.5 = fsub float %sub10.i.i.5, %div.i.i.5
%sub14.i.i.5 = fsub float %sub13.i.i.5, %668
%sub15.i.i.5 = fsub float 1.000000e+00, %sub14.i.i.5
%astype.i.i.5 = bitcast float %sub15.i.i.5 to i32
%shl.i.i.5 = shl i32 %conv.i.i.5, 23
%add16.i.i.5 = add nsw i32 %astype.i.i.5, %shl.i.i.5
%astype17.i.i.5 = bitcast i32 %add16.i.i.5 to float
%cmp18.i.i.5 = fcmp olt float %666, 0xC055D589E0000000
%cond20.i.i.5 = select i1 %cmp18.i.i.5, float 0.000000e+00, float %astype17.i.i.5
%cmp21.i.i.5 = fcmp olt float %666, 0x40562E4300000000
%cond26.i.i.5 = select i1 %cmp21.i.i.5, float %cond20.i.i.5, float 0x7FF0000000000000
%cmp.i.i.i.5 = fcmp uno float %666, 0.000000e+00
%cond31.i.i.5 = select i1 %cmp.i.i.i.5, float %666, float %cond26.i.i.5
%mul91.i.5 = fmul float %cond31.i26.i.5, %cond31.i.i.5
%div92.i.5 = fdiv float %mul91.i.5, %fabs.i.5, !fpmath !46
%sub93.i.5 = fsub float 2.000000e+00, %div92.i.5
%cmp94.i.5 = fcmp olt float %mul226.5, 0.000000e+00
%cond98.i.5 = select i1 %cmp94.i.5, float %sub93.i.5, float %div92.i.5
%cmp99.i.5 = fcmp olt float %fabs.i.5, 2.800000e+01
%cond103.i.5 = select i1 %cmp99.i.5, float %cond98.i.5, float 0.000000e+00
%sub104.i.5 = fsub float 0x3FC3D4FA80000000, %div82.i.5
%add105.i.5 = fadd float %div82.i.5, 0x3FEB0AC160000000
%add106.i.5 = fadd float %add105.i.5, 1.000000e+00
%cond111.i.5 = select i1 %cmp94.i.5, float %add106.i.5, float %sub104.i.5
%cond116.i.5 = select i1 %cmp.i583.5, float %cond111.i.5, float %cond103.i.5
%sub117.i.5 = fadd float %mul226.5, -5.000000e-01
%674 = tail call float @llvm.fmuladd.f32(float %mul226.5, float %div82.i.5, float %sub117.i.5) #5
%sub119.i.5 = fsub float 5.000000e-01, %674
%cond124.i.5 = select i1 %cmp2.i.5, float %sub119.i.5, float %cond116.i.5
%cmp125.i.5 = fcmp olt float %mul226.5, -6.000000e+00
%cond129.i.5 = select i1 %cmp125.i.5, float 2.000000e+00, float %cond124.i.5
%cmp.i.i.5 = fcmp uno float %mul226.5, 0.000000e+00
%cond134.i.5 = select i1 %cmp.i.i.5, float %mul226.5, float %cond129.i.5
%mul229.5 = fmul float %cond.5, %nbparam_params_sh_ewald
%neg230.5 = fsub float -0.000000e+00, %mul229.5
%675 = tail call float @llvm.fmuladd.f32(float %div196.5, float %cond134.i.5, float %neg230.5)
%676 = tail call float @llvm.fmuladd.f32(float %mul217.5, float %675, float %E_el.5.4)
%splat.splatinsert.5 = insertelement <3 x float> undef, float %611, i32 0
%splat.splat.5 = shufflevector <3 x float> %splat.splatinsert.5, <3 x float> undef, <3 x i32> zeroinitializer
%mul235.5 = fmul <3 x float> %extractVec166.5, %splat.splat.5
%extractVec243.5 = shufflevector <4 x float> %fcj_buf.sroa.0.1.4, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub244.5 = fsub <3 x float> %extractVec243.5, %mul235.5
%extractVec245.5 = shufflevector <3 x float> %sub244.5, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec253.5 = shufflevector <4 x float> %fci_buf.sroa.52.0, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add254.5 = fadd <3 x float> %extractVec253.5, %mul235.5
%extractVec255.5 = shufflevector <3 x float> %add254.5, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end258.5
if.end258.5: ; preds = %if.then182.5, %if.then147.5, %if.end258.4
%fci_buf.sroa.52.3 = phi <4 x float> [ %fci_buf.sroa.52.0, %if.end258.4 ], [ %extractVec255.5, %if.then182.5 ], [ %fci_buf.sroa.52.0, %if.then147.5 ]
%E_el.5.5 = phi float [ %E_el.5.4, %if.end258.4 ], [ %676, %if.then182.5 ], [ %E_el.5.4, %if.then147.5 ]
%E_lj.3.5 = phi float [ %E_lj.3.4, %if.end258.4 ], [ %add216.5, %if.then182.5 ], [ %E_lj.3.4, %if.then147.5 ]
%fcj_buf.sroa.0.1.5 = phi <4 x float> [ %fcj_buf.sroa.0.1.4, %if.end258.4 ], [ %extractVec245.5, %if.then182.5 ], [ %fcj_buf.sroa.0.1.4, %if.then147.5 ]
%and145.6 = and i32 %64, 64
%tobool146.6 = icmp eq i32 %and145.6, 0
br i1 %tobool146.6, label %if.end258.6, label %if.then147.6
if.then147.6: ; preds = %if.end258.5
%677 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx154.6.3, align 16, !tbaa !36
%678 = fsub <4 x float> %677, %70
%679 = extractelement <4 x float> %678, i32 0
%680 = extractelement <4 x float> %678, i32 1
%mul3.i.i589.6 = fmul float %680, %680
%681 = tail call float @llvm.fmuladd.f32(float %679, float %679, float %mul3.i.i589.6) #5
%682 = extractelement <4 x float> %678, i32 2
%683 = tail call float @llvm.fmuladd.f32(float %682, float %682, float %681) #5
%and168.6 = and i32 %66, 64
%tobool169.6 = icmp ne i32 %and168.6, 0
%cond.6 = select i1 %tobool169.6, float 1.000000e+00, float 0.000000e+00
%cmp174.6 = icmp eq i32 %50, %68
%or.cond.6 = and i1 %cmp63, %cmp174.6
%not.or.cond.6 = xor i1 %or.cond.6, true
%cmp176..6 = or i1 %cmp176, %not.or.cond.6
%conv178.6 = uitofp i1 %cmp176..6 to float
%mul179.6 = fmul float %conv178.6, %nbparam_params_rcoulomb_sq
%cmp180.6 = fcmp olt float %683, %mul179.6
br i1 %cmp180.6, label %if.then182.6, label %if.end258.6
if.then182.6: ; preds = %if.then147.6
%extractVec166.6 = shufflevector <4 x float> %678, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%684 = extractelement <4 x float> %677, i32 3
%685 = load i32, i32 addrspace(1)* %arrayidx183.6.3, align 4, !tbaa !41
%mul184.6 = mul nsw i32 %685, %ntypes
%add185.6 = add nsw i32 %mul184.6, %72
%mul186.6 = shl nsw i32 %add185.6, 1
%686 = sext i32 %mul186.6 to i64
%arrayidx187.6 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %686
%687 = load float, float addrspace(2)* %arrayidx187.6, align 4, !tbaa !39
%add191.6 = or i32 %mul186.6, 1
%688 = sext i32 %add191.6 to i64
%arrayidx192.6 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %688
%689 = load float, float addrspace(2)* %arrayidx192.6, align 4, !tbaa !39
%sub193.6 = fsub float 1.000000e+00, %cond.6
%690 = tail call float @llvm.fmuladd.f32(float %sub193.6, float 0x3D71979980000000, float %683)
%cmp.i.i587.6 = fcmp olt float %690, 0.000000e+00
%call.i.i.6 = tail call float @llvm.sqrt.f32(float %690) #6
%call.i.i.op.6 = fdiv float 1.000000e+00, %call.i.i.6
%div196.6 = select i1 %cmp.i.i587.6, float 0x7FF8000000000000, float %call.i.i.op.6
%mul197.6 = fmul float %div196.6, %div196.6
%mul198.6 = fmul float %mul197.6, %mul197.6
%mul199.6 = fmul float %mul197.6, %mul198.6
%mul200.6 = fmul float %cond.6, %mul199.6
%neg.6 = fsub float -0.000000e+00, %687
%691 = tail call float @llvm.fmuladd.f32(float %689, float %mul200.6, float %neg.6)
%mul202.6 = fmul float %mul200.6, %691
%mul203.6 = fmul float %mul197.6, %mul202.6
%692 = tail call float @llvm.fmuladd.f32(float %mul200.6, float %mul200.6, float %nbparam_params_repulsion_shift_cpot)
%mul207.6 = fmul float %692, %689
%add211.6 = fadd float %mul200.6, %nbparam_params_dispersion_shift_cpot
%mul212.6 = fmul float %add211.6, %687
%mul213.6 = fmul float %mul212.6, 0x3FC5555560000000
%neg214.6 = fsub float -0.000000e+00, %mul213.6
%693 = tail call float @llvm.fmuladd.f32(float %mul207.6, float 0x3FB5555540000000, float %neg214.6)
%mul215.6 = fmul float %cond.6, %693
%add216.6 = fadd float %E_lj.3.5, %mul215.6
%mul217.6 = fmul float %71, %684
%mul218.6 = fmul float %cond.6, %mul197.6
%mul220.6 = fmul float %mul, %690
%mul.i585.6 = fmul float %mul220.6, %mul220.6
%694 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i585.6, float 0x3FBDA79640000000) #5
%695 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i585.6, float 0x3FE03C5780000000) #5
%696 = tail call float @llvm.fmuladd.f32(float %694, float %mul.i585.6, float 1.000000e+00) #5
%697 = tail call float @llvm.fmuladd.f32(float %695, float %mul220.6, float %696) #5
%div.i586.6 = fdiv float 1.000000e+00, %697, !fpmath !46
%698 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i585.6, float 0xBF0BFF7260000000) #5
%699 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i585.6, float 0x3F50794180000000) #5
%700 = tail call float @llvm.fmuladd.f32(float %698, float %mul.i585.6, float 0xBF93BDB200000000) #5
%701 = tail call float @llvm.fmuladd.f32(float %699, float %mul.i585.6, float 0x3FB1D5E760000000) #5
%702 = tail call float @llvm.fmuladd.f32(float %700, float %mul.i585.6, float 0xBFE81272E0000000) #5
%703 = tail call float @llvm.fmuladd.f32(float %701, float %mul220.6, float %702) #5
%mul11.i.6 = fmul float %703, %div.i586.6
%mul222.6 = fmul float %mul19, %mul11.i.6
%704 = tail call float @llvm.fmuladd.f32(float %mul218.6, float %div196.6, float %mul222.6)
%705 = tail call float @llvm.fmuladd.f32(float %mul217.6, float %704, float %mul203.6)
%mul225.6 = fmul float %690, %div196.6
%mul226.6 = fmul float %mul225.6, %nbparam_params_ewald_beta
%fabs.i.6 = tail call float @llvm.fabs.f32(float %mul226.6) #5
%and.i.6 = bitcast float %fabs.i.6 to i32
%mul.i.6 = fmul float %mul226.6, %mul226.6
%div.i.6 = fdiv float 1.000000e+00, %mul.i.6, !fpmath !46
%sub.i.6 = fadd float %fabs.i.6, -1.000000e+00
%cmp.i583.6 = fcmp olt float %fabs.i.6, 1.250000e+00
%cond.i.6 = select i1 %cmp.i583.6, float %sub.i.6, float %div.i.6
%cmp2.i.6 = fcmp olt float %fabs.i.6, 8.437500e-01
%cond6.i.6 = select i1 %cmp2.i.6, float %mul.i.6, float %cond.i.6
%706 = tail call float @llvm.fmuladd.f32(float %cond6.i.6, float 0xC07E384EA0000000, float 0xC090046160000000) #5
%707 = tail call float @llvm.fmuladd.f32(float %cond6.i.6, float %706, float 0xC083EC8820000000) #5
%708 = tail call float @llvm.fmuladd.f32(float %cond6.i.6, float %707, float 0xC064145D40000000) #5
%709 = tail call float @llvm.fmuladd.f32(float %cond6.i.6, float %708, float 0xC031C20960000000) #5
%710 = tail call float @llvm.fmuladd.f32(float %cond6.i.6, float %709, float 0xBFE993BA80000000) #5
%711 = tail call float @llvm.fmuladd.f32(float %cond6.i.6, float %710, float 0xBF84341240000000) #5
%712 = tail call float @llvm.fmuladd.f32(float %cond6.i.6, float 0xC03670E240000000, float 0x407DA874E0000000) #5
%713 = tail call float @llvm.fmuladd.f32(float %cond6.i.6, float %712, float 0x40A3F219C0000000) #5
%714 = tail call float @llvm.fmuladd.f32(float %cond6.i.6, float %713, float 0x40A8FFB760000000) #5
%715 = tail call float @llvm.fmuladd.f32(float %cond6.i.6, float %714, float 0x409802EB20000000) #5
%716 = tail call float @llvm.fmuladd.f32(float %cond6.i.6, float %715, float 0x40745CAE20000000) #5
%717 = tail call float @llvm.fmuladd.f32(float %cond6.i.6, float %716, float 0x403E568B20000000) #5
%718 = tail call float @llvm.fmuladd.f32(float %cond6.i.6, float 0xC023A0EFC0000000, float 0xC054526560000000) #5
%719 = tail call float @llvm.fmuladd.f32(float %cond6.i.6, float %718, float 0xC067135CE0000000) #5
%720 = tail call float @llvm.fmuladd.f32(float %cond6.i.6, float %719, float 0xC0644CB180000000) #5
%721 = tail call float @llvm.fmuladd.f32(float %cond6.i.6, float %720, float 0xC04F300AE0000000) #5
%722 = tail call float @llvm.fmuladd.f32(float %cond6.i.6, float %721, float 0xC0251E0440000000) #5
%723 = tail call float @llvm.fmuladd.f32(float %cond6.i.6, float %722, float 0xBFE63416E0000000) #5
%724 = tail call float @llvm.fmuladd.f32(float %cond6.i.6, float %723, float 0xBF84341260000000) #5
%725 = tail call float @llvm.fmuladd.f32(float %cond6.i.6, float 0xBFAEEFF2E0000000, float 0x401A47EF80000000) #5
%726 = tail call float @llvm.fmuladd.f32(float %cond6.i.6, float %725, float 0x405B28A3E0000000) #5
%727 = tail call float @llvm.fmuladd.f32(float %cond6.i.6, float %726, float 0x407AD02160000000) #5
%728 = tail call float @llvm.fmuladd.f32(float %cond6.i.6, float %727, float 0x40842B1920000000) #5
%729 = tail call float @llvm.fmuladd.f32(float %cond6.i.6, float %728, float 0x407B290DE0000000) #5
%730 = tail call float @llvm.fmuladd.f32(float %cond6.i.6, float %729, float 0x4061350C60000000) #5
%731 = tail call float @llvm.fmuladd.f32(float %cond6.i.6, float %730, float 0x4033A6B9C0000000) #5
%cmp32.i.6 = fcmp olt float %fabs.i.6, 0x4006DB6DA0000000
%cond36.i.6 = select i1 %cmp32.i.6, float %724, float %711
%cond41.i.6 = select i1 %cmp32.i.6, float %731, float %717
%732 = tail call float @llvm.fmuladd.f32(float %cond6.i.6, float 0xBF61BF3800000000, float 0x3FA22A3660000000) #5
%733 = tail call float @llvm.fmuladd.f32(float %cond6.i.6, float %732, float 0xBFBC639840000000) #5
%734 = tail call float @llvm.fmuladd.f32(float %cond6.i.6, float %733, float 0x3FD45FCA80000000) #5
%735 = tail call float @llvm.fmuladd.f32(float %cond6.i.6, float %734, float 0xBFD7D24100000000) #5
%736 = tail call float @llvm.fmuladd.f32(float %cond6.i.6, float %735, float 0x3FDA8D00A0000000) #5
%737 = tail call float @llvm.fmuladd.f32(float %cond6.i.6, float %736, float 0xBF6359B8C0000000) #5
%738 = tail call float @llvm.fmuladd.f32(float %cond6.i.6, float 0x3F888B5460000000, float 0x3F8BEDC260000000) #5
%739 = tail call float @llvm.fmuladd.f32(float %cond6.i.6, float %738, float 0x3FC02660E0000000) #5
%740 = tail call float @llvm.fmuladd.f32(float %cond6.i.6, float %739, float 0x3FB2635CE0000000) #5
%741 = tail call float @llvm.fmuladd.f32(float %cond6.i.6, float %740, float 0x3FE14AF0A0000000) #5
%742 = tail call float @llvm.fmuladd.f32(float %cond6.i.6, float %741, float 0x3FBB3E6620000000) #5
%cond57.i.6 = select i1 %cmp.i583.6, float %737, float %cond36.i.6
%cond62.i.6 = select i1 %cmp.i583.6, float %742, float %cond41.i.6
%743 = tail call float @llvm.fmuladd.f32(float %cond6.i.6, float 0xBEF8EAD620000000, float 0xBF77A29120000000) #5
%744 = tail call float @llvm.fmuladd.f32(float %cond6.i.6, float %743, float 0xBF9D2A51E0000000) #5
%745 = tail call float @llvm.fmuladd.f32(float %cond6.i.6, float %744, float 0xBFD4CD7D60000000) #5
%746 = tail call float @llvm.fmuladd.f32(float %cond6.i.6, float %745, float 0x3FC06EBA80000000) #5
%747 = tail call float @llvm.fmuladd.f32(float %cond6.i.6, float 0xBED09C4340000000, float 0x3F215DC920000000) #5
%748 = tail call float @llvm.fmuladd.f32(float %cond6.i.6, float %747, float 0x3F74D022C0000000) #5
%749 = tail call float @llvm.fmuladd.f32(float %cond6.i.6, float %748, float 0x3FB0A54C60000000) #5
%750 = tail call float @llvm.fmuladd.f32(float %cond6.i.6, float %749, float 0x3FD97779C0000000) #5
%cond75.i.6 = select i1 %cmp2.i.6, float %746, float %cond57.i.6
%cond80.i.6 = select i1 %cmp2.i.6, float %750, float %cond62.i.6
%751 = tail call float @llvm.fmuladd.f32(float %cond6.i.6, float %cond80.i.6, float 1.000000e+00) #5
%div82.i.6 = fdiv float %cond75.i.6, %751, !fpmath !46
%and83.i.6 = and i32 %and.i.6, -4096
%astype84.i.6 = bitcast i32 %and83.i.6 to float
%sub85.i.6 = fsub float -0.000000e+00, %astype84.i.6
%752 = tail call float @llvm.fmuladd.f32(float %sub85.i.6, float %astype84.i.6, float -5.625000e-01) #5
%cmp.i2.i.6 = fcmp olt float %752, 0.000000e+00
%cond.i3.i.6 = select i1 %cmp.i2.i.6, float -5.000000e-01, float 5.000000e-01
%753 = tail call float @llvm.fmuladd.f32(float %752, float 0x3FF7154760000000, float %cond.i3.i.6) #5
%conv.i4.i.6 = fptosi float %753 to i32
%conv1.i5.i.6 = sitofp i32 %conv.i4.i.6 to float
%754 = tail call float @llvm.fmuladd.f32(float %conv1.i5.i.6, float 0xBFE62E3000000000, float %752) #5
%mul.i6.i.6 = fmul float %conv1.i5.i.6, 0xBEE2FEFA20000000
%add.i7.i.6 = fadd float %754, %mul.i6.i.6
%mul3.i8.i.6 = fmul float %add.i7.i.6, %add.i7.i.6
%755 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.6, float 0x3E66376980000000, float 0xBEBBBD41C0000000) #5
%756 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.6, float %755, float 0x3F11566AA0000000) #5
%757 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.6, float %756, float 0xBF66C16C20000000) #5
%758 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.6, float %757, float 0x3FC5555560000000) #5
%sub8.i9.i.6 = fsub float -0.000000e+00, %758
%759 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.6, float %sub8.i9.i.6, float %add.i7.i.6) #5
%sub10.i10.i.6 = fsub float -0.000000e+00, %mul.i6.i.6
%mul11.i11.i.6 = fmul float %add.i7.i.6, %759
%sub12.i12.i.6 = fsub float 2.000000e+00, %759
%div.i13.i.6 = fdiv float %mul11.i11.i.6, %sub12.i12.i.6, !fpmath !46
%sub13.i14.i.6 = fsub float %sub10.i10.i.6, %div.i13.i.6
%sub14.i15.i.6 = fsub float %sub13.i14.i.6, %754
%sub15.i16.i.6 = fsub float 1.000000e+00, %sub14.i15.i.6
%astype.i17.i.6 = bitcast float %sub15.i16.i.6 to i32
%shl.i18.i.6 = shl i32 %conv.i4.i.6, 23
%add16.i19.i.6 = add nsw i32 %astype.i17.i.6, %shl.i18.i.6
%astype17.i20.i.6 = bitcast i32 %add16.i19.i.6 to float
%cmp18.i21.i.6 = fcmp olt float %752, 0xC055D589E0000000
%cond20.i22.i.6 = select i1 %cmp18.i21.i.6, float 0.000000e+00, float %astype17.i20.i.6
%cmp21.i23.i.6 = fcmp olt float %752, 0x40562E4300000000
%cond26.i24.i.6 = select i1 %cmp21.i23.i.6, float %cond20.i22.i.6, float 0x7FF0000000000000
%cmp.i.i25.i.6 = fcmp uno float %752, 0.000000e+00
%cond31.i26.i.6 = select i1 %cmp.i.i25.i.6, float %752, float %cond26.i24.i.6
%sub88.i.6 = fsub float %astype84.i.6, %fabs.i.6
%add.i584.6 = fadd float %fabs.i.6, %astype84.i.6
%760 = tail call float @llvm.fmuladd.f32(float %sub88.i.6, float %add.i584.6, float %div82.i.6) #5
%cmp.i1.i.6 = fcmp olt float %760, 0.000000e+00
%cond.i.i.6 = select i1 %cmp.i1.i.6, float -5.000000e-01, float 5.000000e-01
%761 = tail call float @llvm.fmuladd.f32(float %760, float 0x3FF7154760000000, float %cond.i.i.6) #5
%conv.i.i.6 = fptosi float %761 to i32
%conv1.i.i.6 = sitofp i32 %conv.i.i.6 to float
%762 = tail call float @llvm.fmuladd.f32(float %conv1.i.i.6, float 0xBFE62E3000000000, float %760) #5
%mul.i.i.6 = fmul float %conv1.i.i.6, 0xBEE2FEFA20000000
%add.i.i.6 = fadd float %762, %mul.i.i.6
%mul3.i.i.6 = fmul float %add.i.i.6, %add.i.i.6
%763 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.6, float 0x3E66376980000000, float 0xBEBBBD41C0000000) #5
%764 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.6, float %763, float 0x3F11566AA0000000) #5
%765 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.6, float %764, float 0xBF66C16C20000000) #5
%766 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.6, float %765, float 0x3FC5555560000000) #5
%sub8.i.i.6 = fsub float -0.000000e+00, %766
%767 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.6, float %sub8.i.i.6, float %add.i.i.6) #5
%sub10.i.i.6 = fsub float -0.000000e+00, %mul.i.i.6
%mul11.i.i.6 = fmul float %add.i.i.6, %767
%sub12.i.i.6 = fsub float 2.000000e+00, %767
%div.i.i.6 = fdiv float %mul11.i.i.6, %sub12.i.i.6, !fpmath !46
%sub13.i.i.6 = fsub float %sub10.i.i.6, %div.i.i.6
%sub14.i.i.6 = fsub float %sub13.i.i.6, %762
%sub15.i.i.6 = fsub float 1.000000e+00, %sub14.i.i.6
%astype.i.i.6 = bitcast float %sub15.i.i.6 to i32
%shl.i.i.6 = shl i32 %conv.i.i.6, 23
%add16.i.i.6 = add nsw i32 %astype.i.i.6, %shl.i.i.6
%astype17.i.i.6 = bitcast i32 %add16.i.i.6 to float
%cmp18.i.i.6 = fcmp olt float %760, 0xC055D589E0000000
%cond20.i.i.6 = select i1 %cmp18.i.i.6, float 0.000000e+00, float %astype17.i.i.6
%cmp21.i.i.6 = fcmp olt float %760, 0x40562E4300000000
%cond26.i.i.6 = select i1 %cmp21.i.i.6, float %cond20.i.i.6, float 0x7FF0000000000000
%cmp.i.i.i.6 = fcmp uno float %760, 0.000000e+00
%cond31.i.i.6 = select i1 %cmp.i.i.i.6, float %760, float %cond26.i.i.6
%mul91.i.6 = fmul float %cond31.i26.i.6, %cond31.i.i.6
%div92.i.6 = fdiv float %mul91.i.6, %fabs.i.6, !fpmath !46
%sub93.i.6 = fsub float 2.000000e+00, %div92.i.6
%cmp94.i.6 = fcmp olt float %mul226.6, 0.000000e+00
%cond98.i.6 = select i1 %cmp94.i.6, float %sub93.i.6, float %div92.i.6
%cmp99.i.6 = fcmp olt float %fabs.i.6, 2.800000e+01
%cond103.i.6 = select i1 %cmp99.i.6, float %cond98.i.6, float 0.000000e+00
%sub104.i.6 = fsub float 0x3FC3D4FA80000000, %div82.i.6
%add105.i.6 = fadd float %div82.i.6, 0x3FEB0AC160000000
%add106.i.6 = fadd float %add105.i.6, 1.000000e+00
%cond111.i.6 = select i1 %cmp94.i.6, float %add106.i.6, float %sub104.i.6
%cond116.i.6 = select i1 %cmp.i583.6, float %cond111.i.6, float %cond103.i.6
%sub117.i.6 = fadd float %mul226.6, -5.000000e-01
%768 = tail call float @llvm.fmuladd.f32(float %mul226.6, float %div82.i.6, float %sub117.i.6) #5
%sub119.i.6 = fsub float 5.000000e-01, %768
%cond124.i.6 = select i1 %cmp2.i.6, float %sub119.i.6, float %cond116.i.6
%cmp125.i.6 = fcmp olt float %mul226.6, -6.000000e+00
%cond129.i.6 = select i1 %cmp125.i.6, float 2.000000e+00, float %cond124.i.6
%cmp.i.i.6 = fcmp uno float %mul226.6, 0.000000e+00
%cond134.i.6 = select i1 %cmp.i.i.6, float %mul226.6, float %cond129.i.6
%mul229.6 = fmul float %cond.6, %nbparam_params_sh_ewald
%neg230.6 = fsub float -0.000000e+00, %mul229.6
%769 = tail call float @llvm.fmuladd.f32(float %div196.6, float %cond134.i.6, float %neg230.6)
%770 = tail call float @llvm.fmuladd.f32(float %mul217.6, float %769, float %E_el.5.5)
%splat.splatinsert.6 = insertelement <3 x float> undef, float %705, i32 0
%splat.splat.6 = shufflevector <3 x float> %splat.splatinsert.6, <3 x float> undef, <3 x i32> zeroinitializer
%mul235.6 = fmul <3 x float> %extractVec166.6, %splat.splat.6
%extractVec243.6 = shufflevector <4 x float> %fcj_buf.sroa.0.1.5, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub244.6 = fsub <3 x float> %extractVec243.6, %mul235.6
%extractVec245.6 = shufflevector <3 x float> %sub244.6, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec253.6 = shufflevector <4 x float> %fci_buf.sroa.62.0, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add254.6 = fadd <3 x float> %extractVec253.6, %mul235.6
%extractVec255.6 = shufflevector <3 x float> %add254.6, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end258.6
if.end258.6: ; preds = %if.then182.6, %if.then147.6, %if.end258.5
%fci_buf.sroa.62.3 = phi <4 x float> [ %fci_buf.sroa.62.0, %if.end258.5 ], [ %extractVec255.6, %if.then182.6 ], [ %fci_buf.sroa.62.0, %if.then147.6 ]
%E_el.5.6 = phi float [ %E_el.5.5, %if.end258.5 ], [ %770, %if.then182.6 ], [ %E_el.5.5, %if.then147.6 ]
%E_lj.3.6 = phi float [ %E_lj.3.5, %if.end258.5 ], [ %add216.6, %if.then182.6 ], [ %E_lj.3.5, %if.then147.6 ]
%fcj_buf.sroa.0.1.6 = phi <4 x float> [ %fcj_buf.sroa.0.1.5, %if.end258.5 ], [ %extractVec245.6, %if.then182.6 ], [ %fcj_buf.sroa.0.1.5, %if.then147.6 ]
%and145.7 = and i32 %64, 128
%tobool146.7 = icmp eq i32 %and145.7, 0
br i1 %tobool146.7, label %if.end258.7, label %if.then147.7
if.then147.7: ; preds = %if.end258.6
%771 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx154.7.3, align 16, !tbaa !36
%772 = fsub <4 x float> %771, %70
%773 = extractelement <4 x float> %772, i32 0
%774 = extractelement <4 x float> %772, i32 1
%mul3.i.i589.7 = fmul float %774, %774
%775 = tail call float @llvm.fmuladd.f32(float %773, float %773, float %mul3.i.i589.7) #5
%776 = extractelement <4 x float> %772, i32 2
%777 = tail call float @llvm.fmuladd.f32(float %776, float %776, float %775) #5
%and168.7 = and i32 %66, 128
%tobool169.7 = icmp ne i32 %and168.7, 0
%cond.7 = select i1 %tobool169.7, float 1.000000e+00, float 0.000000e+00
%cmp174.7 = icmp eq i32 %48, %68
%or.cond.7 = and i1 %cmp63, %cmp174.7
%not.or.cond.7 = xor i1 %or.cond.7, true
%cmp176..7 = or i1 %cmp176, %not.or.cond.7
%conv178.7 = uitofp i1 %cmp176..7 to float
%mul179.7 = fmul float %conv178.7, %nbparam_params_rcoulomb_sq
%cmp180.7 = fcmp olt float %777, %mul179.7
br i1 %cmp180.7, label %if.then182.7, label %if.end258.7
if.then182.7: ; preds = %if.then147.7
%extractVec166.7 = shufflevector <4 x float> %772, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%778 = extractelement <4 x float> %771, i32 3
%779 = load i32, i32 addrspace(1)* %arrayidx183.7.3, align 4, !tbaa !41
%mul184.7 = mul nsw i32 %779, %ntypes
%add185.7 = add nsw i32 %mul184.7, %72
%mul186.7 = shl nsw i32 %add185.7, 1
%780 = sext i32 %mul186.7 to i64
%arrayidx187.7 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %780
%781 = load float, float addrspace(2)* %arrayidx187.7, align 4, !tbaa !39
%add191.7 = or i32 %mul186.7, 1
%782 = sext i32 %add191.7 to i64
%arrayidx192.7 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %782
%783 = load float, float addrspace(2)* %arrayidx192.7, align 4, !tbaa !39
%sub193.7 = fsub float 1.000000e+00, %cond.7
%784 = tail call float @llvm.fmuladd.f32(float %sub193.7, float 0x3D71979980000000, float %777)
%cmp.i.i587.7 = fcmp olt float %784, 0.000000e+00
%call.i.i.7 = tail call float @llvm.sqrt.f32(float %784) #6
%call.i.i.op.7 = fdiv float 1.000000e+00, %call.i.i.7
%div196.7 = select i1 %cmp.i.i587.7, float 0x7FF8000000000000, float %call.i.i.op.7
%mul197.7 = fmul float %div196.7, %div196.7
%mul198.7 = fmul float %mul197.7, %mul197.7
%mul199.7 = fmul float %mul197.7, %mul198.7
%mul200.7 = fmul float %cond.7, %mul199.7
%neg.7 = fsub float -0.000000e+00, %781
%785 = tail call float @llvm.fmuladd.f32(float %783, float %mul200.7, float %neg.7)
%mul202.7 = fmul float %mul200.7, %785
%mul203.7 = fmul float %mul197.7, %mul202.7
%786 = tail call float @llvm.fmuladd.f32(float %mul200.7, float %mul200.7, float %nbparam_params_repulsion_shift_cpot)
%mul207.7 = fmul float %786, %783
%add211.7 = fadd float %mul200.7, %nbparam_params_dispersion_shift_cpot
%mul212.7 = fmul float %add211.7, %781
%mul213.7 = fmul float %mul212.7, 0x3FC5555560000000
%neg214.7 = fsub float -0.000000e+00, %mul213.7
%787 = tail call float @llvm.fmuladd.f32(float %mul207.7, float 0x3FB5555540000000, float %neg214.7)
%mul215.7 = fmul float %cond.7, %787
%add216.7 = fadd float %E_lj.3.6, %mul215.7
%mul217.7 = fmul float %71, %778
%mul218.7 = fmul float %cond.7, %mul197.7
%mul220.7 = fmul float %mul, %784
%mul.i585.7 = fmul float %mul220.7, %mul220.7
%788 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i585.7, float 0x3FBDA79640000000) #5
%789 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i585.7, float 0x3FE03C5780000000) #5
%790 = tail call float @llvm.fmuladd.f32(float %788, float %mul.i585.7, float 1.000000e+00) #5
%791 = tail call float @llvm.fmuladd.f32(float %789, float %mul220.7, float %790) #5
%div.i586.7 = fdiv float 1.000000e+00, %791, !fpmath !46
%792 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i585.7, float 0xBF0BFF7260000000) #5
%793 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i585.7, float 0x3F50794180000000) #5
%794 = tail call float @llvm.fmuladd.f32(float %792, float %mul.i585.7, float 0xBF93BDB200000000) #5
%795 = tail call float @llvm.fmuladd.f32(float %793, float %mul.i585.7, float 0x3FB1D5E760000000) #5
%796 = tail call float @llvm.fmuladd.f32(float %794, float %mul.i585.7, float 0xBFE81272E0000000) #5
%797 = tail call float @llvm.fmuladd.f32(float %795, float %mul220.7, float %796) #5
%mul11.i.7 = fmul float %797, %div.i586.7
%mul222.7 = fmul float %mul19, %mul11.i.7
%798 = tail call float @llvm.fmuladd.f32(float %mul218.7, float %div196.7, float %mul222.7)
%799 = tail call float @llvm.fmuladd.f32(float %mul217.7, float %798, float %mul203.7)
%mul225.7 = fmul float %784, %div196.7
%mul226.7 = fmul float %mul225.7, %nbparam_params_ewald_beta
%fabs.i.7 = tail call float @llvm.fabs.f32(float %mul226.7) #5
%and.i.7 = bitcast float %fabs.i.7 to i32
%mul.i.7 = fmul float %mul226.7, %mul226.7
%div.i.7 = fdiv float 1.000000e+00, %mul.i.7, !fpmath !46
%sub.i.7 = fadd float %fabs.i.7, -1.000000e+00
%cmp.i583.7 = fcmp olt float %fabs.i.7, 1.250000e+00
%cond.i.7 = select i1 %cmp.i583.7, float %sub.i.7, float %div.i.7
%cmp2.i.7 = fcmp olt float %fabs.i.7, 8.437500e-01
%cond6.i.7 = select i1 %cmp2.i.7, float %mul.i.7, float %cond.i.7
%800 = tail call float @llvm.fmuladd.f32(float %cond6.i.7, float 0xC07E384EA0000000, float 0xC090046160000000) #5
%801 = tail call float @llvm.fmuladd.f32(float %cond6.i.7, float %800, float 0xC083EC8820000000) #5
%802 = tail call float @llvm.fmuladd.f32(float %cond6.i.7, float %801, float 0xC064145D40000000) #5
%803 = tail call float @llvm.fmuladd.f32(float %cond6.i.7, float %802, float 0xC031C20960000000) #5
%804 = tail call float @llvm.fmuladd.f32(float %cond6.i.7, float %803, float 0xBFE993BA80000000) #5
%805 = tail call float @llvm.fmuladd.f32(float %cond6.i.7, float %804, float 0xBF84341240000000) #5
%806 = tail call float @llvm.fmuladd.f32(float %cond6.i.7, float 0xC03670E240000000, float 0x407DA874E0000000) #5
%807 = tail call float @llvm.fmuladd.f32(float %cond6.i.7, float %806, float 0x40A3F219C0000000) #5
%808 = tail call float @llvm.fmuladd.f32(float %cond6.i.7, float %807, float 0x40A8FFB760000000) #5
%809 = tail call float @llvm.fmuladd.f32(float %cond6.i.7, float %808, float 0x409802EB20000000) #5
%810 = tail call float @llvm.fmuladd.f32(float %cond6.i.7, float %809, float 0x40745CAE20000000) #5
%811 = tail call float @llvm.fmuladd.f32(float %cond6.i.7, float %810, float 0x403E568B20000000) #5
%812 = tail call float @llvm.fmuladd.f32(float %cond6.i.7, float 0xC023A0EFC0000000, float 0xC054526560000000) #5
%813 = tail call float @llvm.fmuladd.f32(float %cond6.i.7, float %812, float 0xC067135CE0000000) #5
%814 = tail call float @llvm.fmuladd.f32(float %cond6.i.7, float %813, float 0xC0644CB180000000) #5
%815 = tail call float @llvm.fmuladd.f32(float %cond6.i.7, float %814, float 0xC04F300AE0000000) #5
%816 = tail call float @llvm.fmuladd.f32(float %cond6.i.7, float %815, float 0xC0251E0440000000) #5
%817 = tail call float @llvm.fmuladd.f32(float %cond6.i.7, float %816, float 0xBFE63416E0000000) #5
%818 = tail call float @llvm.fmuladd.f32(float %cond6.i.7, float %817, float 0xBF84341260000000) #5
%819 = tail call float @llvm.fmuladd.f32(float %cond6.i.7, float 0xBFAEEFF2E0000000, float 0x401A47EF80000000) #5
%820 = tail call float @llvm.fmuladd.f32(float %cond6.i.7, float %819, float 0x405B28A3E0000000) #5
%821 = tail call float @llvm.fmuladd.f32(float %cond6.i.7, float %820, float 0x407AD02160000000) #5
%822 = tail call float @llvm.fmuladd.f32(float %cond6.i.7, float %821, float 0x40842B1920000000) #5
%823 = tail call float @llvm.fmuladd.f32(float %cond6.i.7, float %822, float 0x407B290DE0000000) #5
%824 = tail call float @llvm.fmuladd.f32(float %cond6.i.7, float %823, float 0x4061350C60000000) #5
%825 = tail call float @llvm.fmuladd.f32(float %cond6.i.7, float %824, float 0x4033A6B9C0000000) #5
%cmp32.i.7 = fcmp olt float %fabs.i.7, 0x4006DB6DA0000000
%cond36.i.7 = select i1 %cmp32.i.7, float %818, float %805
%cond41.i.7 = select i1 %cmp32.i.7, float %825, float %811
%826 = tail call float @llvm.fmuladd.f32(float %cond6.i.7, float 0xBF61BF3800000000, float 0x3FA22A3660000000) #5
%827 = tail call float @llvm.fmuladd.f32(float %cond6.i.7, float %826, float 0xBFBC639840000000) #5
%828 = tail call float @llvm.fmuladd.f32(float %cond6.i.7, float %827, float 0x3FD45FCA80000000) #5
%829 = tail call float @llvm.fmuladd.f32(float %cond6.i.7, float %828, float 0xBFD7D24100000000) #5
%830 = tail call float @llvm.fmuladd.f32(float %cond6.i.7, float %829, float 0x3FDA8D00A0000000) #5
%831 = tail call float @llvm.fmuladd.f32(float %cond6.i.7, float %830, float 0xBF6359B8C0000000) #5
%832 = tail call float @llvm.fmuladd.f32(float %cond6.i.7, float 0x3F888B5460000000, float 0x3F8BEDC260000000) #5
%833 = tail call float @llvm.fmuladd.f32(float %cond6.i.7, float %832, float 0x3FC02660E0000000) #5
%834 = tail call float @llvm.fmuladd.f32(float %cond6.i.7, float %833, float 0x3FB2635CE0000000) #5
%835 = tail call float @llvm.fmuladd.f32(float %cond6.i.7, float %834, float 0x3FE14AF0A0000000) #5
%836 = tail call float @llvm.fmuladd.f32(float %cond6.i.7, float %835, float 0x3FBB3E6620000000) #5
%cond57.i.7 = select i1 %cmp.i583.7, float %831, float %cond36.i.7
%cond62.i.7 = select i1 %cmp.i583.7, float %836, float %cond41.i.7
%837 = tail call float @llvm.fmuladd.f32(float %cond6.i.7, float 0xBEF8EAD620000000, float 0xBF77A29120000000) #5
%838 = tail call float @llvm.fmuladd.f32(float %cond6.i.7, float %837, float 0xBF9D2A51E0000000) #5
%839 = tail call float @llvm.fmuladd.f32(float %cond6.i.7, float %838, float 0xBFD4CD7D60000000) #5
%840 = tail call float @llvm.fmuladd.f32(float %cond6.i.7, float %839, float 0x3FC06EBA80000000) #5
%841 = tail call float @llvm.fmuladd.f32(float %cond6.i.7, float 0xBED09C4340000000, float 0x3F215DC920000000) #5
%842 = tail call float @llvm.fmuladd.f32(float %cond6.i.7, float %841, float 0x3F74D022C0000000) #5
%843 = tail call float @llvm.fmuladd.f32(float %cond6.i.7, float %842, float 0x3FB0A54C60000000) #5
%844 = tail call float @llvm.fmuladd.f32(float %cond6.i.7, float %843, float 0x3FD97779C0000000) #5
%cond75.i.7 = select i1 %cmp2.i.7, float %840, float %cond57.i.7
%cond80.i.7 = select i1 %cmp2.i.7, float %844, float %cond62.i.7
%845 = tail call float @llvm.fmuladd.f32(float %cond6.i.7, float %cond80.i.7, float 1.000000e+00) #5
%div82.i.7 = fdiv float %cond75.i.7, %845, !fpmath !46
%and83.i.7 = and i32 %and.i.7, -4096
%astype84.i.7 = bitcast i32 %and83.i.7 to float
%sub85.i.7 = fsub float -0.000000e+00, %astype84.i.7
%846 = tail call float @llvm.fmuladd.f32(float %sub85.i.7, float %astype84.i.7, float -5.625000e-01) #5
%cmp.i2.i.7 = fcmp olt float %846, 0.000000e+00
%cond.i3.i.7 = select i1 %cmp.i2.i.7, float -5.000000e-01, float 5.000000e-01
%847 = tail call float @llvm.fmuladd.f32(float %846, float 0x3FF7154760000000, float %cond.i3.i.7) #5
%conv.i4.i.7 = fptosi float %847 to i32
%conv1.i5.i.7 = sitofp i32 %conv.i4.i.7 to float
%848 = tail call float @llvm.fmuladd.f32(float %conv1.i5.i.7, float 0xBFE62E3000000000, float %846) #5
%mul.i6.i.7 = fmul float %conv1.i5.i.7, 0xBEE2FEFA20000000
%add.i7.i.7 = fadd float %848, %mul.i6.i.7
%mul3.i8.i.7 = fmul float %add.i7.i.7, %add.i7.i.7
%849 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.7, float 0x3E66376980000000, float 0xBEBBBD41C0000000) #5
%850 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.7, float %849, float 0x3F11566AA0000000) #5
%851 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.7, float %850, float 0xBF66C16C20000000) #5
%852 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.7, float %851, float 0x3FC5555560000000) #5
%sub8.i9.i.7 = fsub float -0.000000e+00, %852
%853 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.7, float %sub8.i9.i.7, float %add.i7.i.7) #5
%sub10.i10.i.7 = fsub float -0.000000e+00, %mul.i6.i.7
%mul11.i11.i.7 = fmul float %add.i7.i.7, %853
%sub12.i12.i.7 = fsub float 2.000000e+00, %853
%div.i13.i.7 = fdiv float %mul11.i11.i.7, %sub12.i12.i.7, !fpmath !46
%sub13.i14.i.7 = fsub float %sub10.i10.i.7, %div.i13.i.7
%sub14.i15.i.7 = fsub float %sub13.i14.i.7, %848
%sub15.i16.i.7 = fsub float 1.000000e+00, %sub14.i15.i.7
%astype.i17.i.7 = bitcast float %sub15.i16.i.7 to i32
%shl.i18.i.7 = shl i32 %conv.i4.i.7, 23
%add16.i19.i.7 = add nsw i32 %astype.i17.i.7, %shl.i18.i.7
%astype17.i20.i.7 = bitcast i32 %add16.i19.i.7 to float
%cmp18.i21.i.7 = fcmp olt float %846, 0xC055D589E0000000
%cond20.i22.i.7 = select i1 %cmp18.i21.i.7, float 0.000000e+00, float %astype17.i20.i.7
%cmp21.i23.i.7 = fcmp olt float %846, 0x40562E4300000000
%cond26.i24.i.7 = select i1 %cmp21.i23.i.7, float %cond20.i22.i.7, float 0x7FF0000000000000
%cmp.i.i25.i.7 = fcmp uno float %846, 0.000000e+00
%cond31.i26.i.7 = select i1 %cmp.i.i25.i.7, float %846, float %cond26.i24.i.7
%sub88.i.7 = fsub float %astype84.i.7, %fabs.i.7
%add.i584.7 = fadd float %fabs.i.7, %astype84.i.7
%854 = tail call float @llvm.fmuladd.f32(float %sub88.i.7, float %add.i584.7, float %div82.i.7) #5
%cmp.i1.i.7 = fcmp olt float %854, 0.000000e+00
%cond.i.i.7 = select i1 %cmp.i1.i.7, float -5.000000e-01, float 5.000000e-01
%855 = tail call float @llvm.fmuladd.f32(float %854, float 0x3FF7154760000000, float %cond.i.i.7) #5
%conv.i.i.7 = fptosi float %855 to i32
%conv1.i.i.7 = sitofp i32 %conv.i.i.7 to float
%856 = tail call float @llvm.fmuladd.f32(float %conv1.i.i.7, float 0xBFE62E3000000000, float %854) #5
%mul.i.i.7 = fmul float %conv1.i.i.7, 0xBEE2FEFA20000000
%add.i.i.7 = fadd float %856, %mul.i.i.7
%mul3.i.i.7 = fmul float %add.i.i.7, %add.i.i.7
%857 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.7, float 0x3E66376980000000, float 0xBEBBBD41C0000000) #5
%858 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.7, float %857, float 0x3F11566AA0000000) #5
%859 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.7, float %858, float 0xBF66C16C20000000) #5
%860 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.7, float %859, float 0x3FC5555560000000) #5
%sub8.i.i.7 = fsub float -0.000000e+00, %860
%861 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.7, float %sub8.i.i.7, float %add.i.i.7) #5
%sub10.i.i.7 = fsub float -0.000000e+00, %mul.i.i.7
%mul11.i.i.7 = fmul float %add.i.i.7, %861
%sub12.i.i.7 = fsub float 2.000000e+00, %861
%div.i.i.7 = fdiv float %mul11.i.i.7, %sub12.i.i.7, !fpmath !46
%sub13.i.i.7 = fsub float %sub10.i.i.7, %div.i.i.7
%sub14.i.i.7 = fsub float %sub13.i.i.7, %856
%sub15.i.i.7 = fsub float 1.000000e+00, %sub14.i.i.7
%astype.i.i.7 = bitcast float %sub15.i.i.7 to i32
%shl.i.i.7 = shl i32 %conv.i.i.7, 23
%add16.i.i.7 = add nsw i32 %astype.i.i.7, %shl.i.i.7
%astype17.i.i.7 = bitcast i32 %add16.i.i.7 to float
%cmp18.i.i.7 = fcmp olt float %854, 0xC055D589E0000000
%cond20.i.i.7 = select i1 %cmp18.i.i.7, float 0.000000e+00, float %astype17.i.i.7
%cmp21.i.i.7 = fcmp olt float %854, 0x40562E4300000000
%cond26.i.i.7 = select i1 %cmp21.i.i.7, float %cond20.i.i.7, float 0x7FF0000000000000
%cmp.i.i.i.7 = fcmp uno float %854, 0.000000e+00
%cond31.i.i.7 = select i1 %cmp.i.i.i.7, float %854, float %cond26.i.i.7
%mul91.i.7 = fmul float %cond31.i26.i.7, %cond31.i.i.7
%div92.i.7 = fdiv float %mul91.i.7, %fabs.i.7, !fpmath !46
%sub93.i.7 = fsub float 2.000000e+00, %div92.i.7
%cmp94.i.7 = fcmp olt float %mul226.7, 0.000000e+00
%cond98.i.7 = select i1 %cmp94.i.7, float %sub93.i.7, float %div92.i.7
%cmp99.i.7 = fcmp olt float %fabs.i.7, 2.800000e+01
%cond103.i.7 = select i1 %cmp99.i.7, float %cond98.i.7, float 0.000000e+00
%sub104.i.7 = fsub float 0x3FC3D4FA80000000, %div82.i.7
%add105.i.7 = fadd float %div82.i.7, 0x3FEB0AC160000000
%add106.i.7 = fadd float %add105.i.7, 1.000000e+00
%cond111.i.7 = select i1 %cmp94.i.7, float %add106.i.7, float %sub104.i.7
%cond116.i.7 = select i1 %cmp.i583.7, float %cond111.i.7, float %cond103.i.7
%sub117.i.7 = fadd float %mul226.7, -5.000000e-01
%862 = tail call float @llvm.fmuladd.f32(float %mul226.7, float %div82.i.7, float %sub117.i.7) #5
%sub119.i.7 = fsub float 5.000000e-01, %862
%cond124.i.7 = select i1 %cmp2.i.7, float %sub119.i.7, float %cond116.i.7
%cmp125.i.7 = fcmp olt float %mul226.7, -6.000000e+00
%cond129.i.7 = select i1 %cmp125.i.7, float 2.000000e+00, float %cond124.i.7
%cmp.i.i.7 = fcmp uno float %mul226.7, 0.000000e+00
%cond134.i.7 = select i1 %cmp.i.i.7, float %mul226.7, float %cond129.i.7
%mul229.7 = fmul float %cond.7, %nbparam_params_sh_ewald
%neg230.7 = fsub float -0.000000e+00, %mul229.7
%863 = tail call float @llvm.fmuladd.f32(float %div196.7, float %cond134.i.7, float %neg230.7)
%864 = tail call float @llvm.fmuladd.f32(float %mul217.7, float %863, float %E_el.5.6)
%splat.splatinsert.7 = insertelement <3 x float> undef, float %799, i32 0
%splat.splat.7 = shufflevector <3 x float> %splat.splatinsert.7, <3 x float> undef, <3 x i32> zeroinitializer
%mul235.7 = fmul <3 x float> %extractVec166.7, %splat.splat.7
%extractVec243.7 = shufflevector <4 x float> %fcj_buf.sroa.0.1.6, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub244.7 = fsub <3 x float> %extractVec243.7, %mul235.7
%extractVec245.7 = shufflevector <3 x float> %sub244.7, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec253.7 = shufflevector <4 x float> %fci_buf.sroa.72.0, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add254.7 = fadd <3 x float> %extractVec253.7, %mul235.7
%extractVec255.7 = shufflevector <3 x float> %add254.7, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end258.7
if.end258.7: ; preds = %if.then182.7, %if.then147.7, %if.end258.6
%fci_buf.sroa.72.4 = phi <4 x float> [ %fci_buf.sroa.72.0, %if.end258.6 ], [ %extractVec255.7, %if.then182.7 ], [ %fci_buf.sroa.72.0, %if.then147.7 ]
%E_el.5.7 = phi float [ %E_el.5.6, %if.end258.6 ], [ %864, %if.then182.7 ], [ %E_el.5.6, %if.then147.7 ]
%E_lj.3.7 = phi float [ %E_lj.3.6, %if.end258.6 ], [ %add216.7, %if.then182.7 ], [ %E_lj.3.6, %if.then147.7 ]
%fcj_buf.sroa.0.1.7 = phi <4 x float> [ %fcj_buf.sroa.0.1.6, %if.end258.6 ], [ %extractVec245.7, %if.then182.7 ], [ %fcj_buf.sroa.0.1.6, %if.then147.7 ]
%865 = extractelement <4 x float> %fcj_buf.sroa.0.1.7, i32 0
store float %865, float addrspace(3)* %arrayidx263, align 4, !tbaa !39
%866 = extractelement <4 x float> %fcj_buf.sroa.0.1.7, i32 1
store float %866, float addrspace(3)* %arrayidx265, align 4, !tbaa !39
%867 = extractelement <4 x float> %fcj_buf.sroa.0.1.7, i32 2
store float %867, float addrspace(3)* %arrayidx267, align 4, !tbaa !39
tail call fastcc void @reduce_force_j_generic(float addrspace(3)* %2, float addrspace(1)* %f, i32 %x.i, i32 %y.i, i32 %add136)
br label %for.inc269
if.then126.1: ; preds = %for.inc269
%868 = load i32, i32 addrspace(3)* %arrayidx134.1, align 4, !tbaa !41
%mul135.1 = shl nsw i32 %868, 3
%add136.1 = add i32 %mul135.1, %y.i
%869 = sext i32 %add136.1 to i64
%arrayidx137.1 = getelementptr inbounds <4 x float>, <4 x float> addrspace(1)* %xq, i64 %869
%870 = load <4 x float>, <4 x float> addrspace(1)* %arrayidx137.1, align 16, !tbaa !36
%871 = extractelement <4 x float> %870, i32 3
%arrayidx139.1 = getelementptr inbounds i32, i32 addrspace(1)* %atom_types, i64 %869
%872 = load i32, i32 addrspace(1)* %arrayidx139.1, align 4, !tbaa !41
%and145.1611 = and i32 %64, 256
%tobool146.1612 = icmp eq i32 %and145.1611, 0
br i1 %tobool146.1612, label %if.end258.1773, label %if.then147.1625
if.then147.1625: ; preds = %if.then126.1
%873 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx154.3939, align 16, !tbaa !36
%874 = fsub <4 x float> %873, %870
%875 = extractelement <4 x float> %874, i32 0
%876 = extractelement <4 x float> %874, i32 1
%mul3.i.i589.1614 = fmul float %876, %876
%877 = tail call float @llvm.fmuladd.f32(float %875, float %875, float %mul3.i.i589.1614) #5
%878 = extractelement <4 x float> %874, i32 2
%879 = tail call float @llvm.fmuladd.f32(float %878, float %878, float %877) #5
%and168.1615 = and i32 %66, 256
%tobool169.1616 = icmp ne i32 %and168.1615, 0
%cond.1617 = select i1 %tobool169.1616, float 1.000000e+00, float 0.000000e+00
%cmp174.1618 = icmp eq i32 %mul31, %868
%or.cond.1619 = and i1 %cmp63, %cmp174.1618
%not.or.cond.1620 = xor i1 %or.cond.1619, true
%cmp176..1621 = or i1 %cmp176, %not.or.cond.1620
%conv178.1622 = uitofp i1 %cmp176..1621 to float
%mul179.1623 = fmul float %conv178.1622, %nbparam_params_rcoulomb_sq
%cmp180.1624 = fcmp olt float %879, %mul179.1623
br i1 %cmp180.1624, label %if.then182.1768, label %if.end258.1773
if.then182.1768: ; preds = %if.then147.1625
%extractVec166.1626 = shufflevector <4 x float> %874, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%880 = extractelement <4 x float> %873, i32 3
%881 = load i32, i32 addrspace(1)* %arrayidx183.3955, align 4, !tbaa !41
%mul184.1630 = mul nsw i32 %881, %ntypes
%add185.1631 = add nsw i32 %mul184.1630, %872
%mul186.1632 = shl nsw i32 %add185.1631, 1
%882 = sext i32 %mul186.1632 to i64
%arrayidx187.1633 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %882
%883 = load float, float addrspace(2)* %arrayidx187.1633, align 4, !tbaa !39
%add191.1634 = or i32 %mul186.1632, 1
%884 = sext i32 %add191.1634 to i64
%arrayidx192.1635 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %884
%885 = load float, float addrspace(2)* %arrayidx192.1635, align 4, !tbaa !39
%sub193.1636 = fsub float 1.000000e+00, %cond.1617
%886 = tail call float @llvm.fmuladd.f32(float %sub193.1636, float 0x3D71979980000000, float %879)
%cmp.i.i587.1637 = fcmp olt float %886, 0.000000e+00
%call.i.i.1638 = tail call float @llvm.sqrt.f32(float %886) #6
%call.i.i.op.1639 = fdiv float 1.000000e+00, %call.i.i.1638
%div196.1640 = select i1 %cmp.i.i587.1637, float 0x7FF8000000000000, float %call.i.i.op.1639
%mul197.1641 = fmul float %div196.1640, %div196.1640
%mul198.1642 = fmul float %mul197.1641, %mul197.1641
%mul199.1643 = fmul float %mul197.1641, %mul198.1642
%mul200.1644 = fmul float %cond.1617, %mul199.1643
%neg.1645 = fsub float -0.000000e+00, %883
%887 = tail call float @llvm.fmuladd.f32(float %885, float %mul200.1644, float %neg.1645)
%mul202.1646 = fmul float %mul200.1644, %887
%mul203.1647 = fmul float %mul197.1641, %mul202.1646
%888 = tail call float @llvm.fmuladd.f32(float %mul200.1644, float %mul200.1644, float %nbparam_params_repulsion_shift_cpot)
%mul207.1648 = fmul float %888, %885
%add211.1649 = fadd float %mul200.1644, %nbparam_params_dispersion_shift_cpot
%mul212.1650 = fmul float %add211.1649, %883
%mul213.1651 = fmul float %mul212.1650, 0x3FC5555560000000
%neg214.1652 = fsub float -0.000000e+00, %mul213.1651
%889 = tail call float @llvm.fmuladd.f32(float %mul207.1648, float 0x3FB5555540000000, float %neg214.1652)
%mul215.1653 = fmul float %cond.1617, %889
%add216.1654 = fadd float %E_lj.4, %mul215.1653
%mul217.1655 = fmul float %871, %880
%mul218.1656 = fmul float %cond.1617, %mul197.1641
%mul220.1657 = fmul float %mul, %886
%mul.i585.1658 = fmul float %mul220.1657, %mul220.1657
%890 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i585.1658, float 0x3FBDA79640000000) #5
%891 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i585.1658, float 0x3FE03C5780000000) #5
%892 = tail call float @llvm.fmuladd.f32(float %890, float %mul.i585.1658, float 1.000000e+00) #5
%893 = tail call float @llvm.fmuladd.f32(float %891, float %mul220.1657, float %892) #5
%div.i586.1659 = fdiv float 1.000000e+00, %893, !fpmath !46
%894 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i585.1658, float 0xBF0BFF7260000000) #5
%895 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i585.1658, float 0x3F50794180000000) #5
%896 = tail call float @llvm.fmuladd.f32(float %894, float %mul.i585.1658, float 0xBF93BDB200000000) #5
%897 = tail call float @llvm.fmuladd.f32(float %895, float %mul.i585.1658, float 0x3FB1D5E760000000) #5
%898 = tail call float @llvm.fmuladd.f32(float %896, float %mul.i585.1658, float 0xBFE81272E0000000) #5
%899 = tail call float @llvm.fmuladd.f32(float %897, float %mul220.1657, float %898) #5
%mul11.i.1660 = fmul float %899, %div.i586.1659
%mul222.1661 = fmul float %mul19, %mul11.i.1660
%900 = tail call float @llvm.fmuladd.f32(float %mul218.1656, float %div196.1640, float %mul222.1661)
%901 = tail call float @llvm.fmuladd.f32(float %mul217.1655, float %900, float %mul203.1647)
%mul225.1662 = fmul float %886, %div196.1640
%mul226.1663 = fmul float %mul225.1662, %nbparam_params_ewald_beta
%fabs.i.1664 = tail call float @llvm.fabs.f32(float %mul226.1663) #5
%and.i.1665 = bitcast float %fabs.i.1664 to i32
%mul.i.1666 = fmul float %mul226.1663, %mul226.1663
%div.i.1667 = fdiv float 1.000000e+00, %mul.i.1666, !fpmath !46
%sub.i.1668 = fadd float %fabs.i.1664, -1.000000e+00
%cmp.i583.1669 = fcmp olt float %fabs.i.1664, 1.250000e+00
%cond.i.1670 = select i1 %cmp.i583.1669, float %sub.i.1668, float %div.i.1667
%cmp2.i.1671 = fcmp olt float %fabs.i.1664, 8.437500e-01
%cond6.i.1672 = select i1 %cmp2.i.1671, float %mul.i.1666, float %cond.i.1670
%902 = tail call float @llvm.fmuladd.f32(float %cond6.i.1672, float 0xC07E384EA0000000, float 0xC090046160000000) #5
%903 = tail call float @llvm.fmuladd.f32(float %cond6.i.1672, float %902, float 0xC083EC8820000000) #5
%904 = tail call float @llvm.fmuladd.f32(float %cond6.i.1672, float %903, float 0xC064145D40000000) #5
%905 = tail call float @llvm.fmuladd.f32(float %cond6.i.1672, float %904, float 0xC031C20960000000) #5
%906 = tail call float @llvm.fmuladd.f32(float %cond6.i.1672, float %905, float 0xBFE993BA80000000) #5
%907 = tail call float @llvm.fmuladd.f32(float %cond6.i.1672, float %906, float 0xBF84341240000000) #5
%908 = tail call float @llvm.fmuladd.f32(float %cond6.i.1672, float 0xC03670E240000000, float 0x407DA874E0000000) #5
%909 = tail call float @llvm.fmuladd.f32(float %cond6.i.1672, float %908, float 0x40A3F219C0000000) #5
%910 = tail call float @llvm.fmuladd.f32(float %cond6.i.1672, float %909, float 0x40A8FFB760000000) #5
%911 = tail call float @llvm.fmuladd.f32(float %cond6.i.1672, float %910, float 0x409802EB20000000) #5
%912 = tail call float @llvm.fmuladd.f32(float %cond6.i.1672, float %911, float 0x40745CAE20000000) #5
%913 = tail call float @llvm.fmuladd.f32(float %cond6.i.1672, float %912, float 0x403E568B20000000) #5
%914 = tail call float @llvm.fmuladd.f32(float %cond6.i.1672, float 0xC023A0EFC0000000, float 0xC054526560000000) #5
%915 = tail call float @llvm.fmuladd.f32(float %cond6.i.1672, float %914, float 0xC067135CE0000000) #5
%916 = tail call float @llvm.fmuladd.f32(float %cond6.i.1672, float %915, float 0xC0644CB180000000) #5
%917 = tail call float @llvm.fmuladd.f32(float %cond6.i.1672, float %916, float 0xC04F300AE0000000) #5
%918 = tail call float @llvm.fmuladd.f32(float %cond6.i.1672, float %917, float 0xC0251E0440000000) #5
%919 = tail call float @llvm.fmuladd.f32(float %cond6.i.1672, float %918, float 0xBFE63416E0000000) #5
%920 = tail call float @llvm.fmuladd.f32(float %cond6.i.1672, float %919, float 0xBF84341260000000) #5
%921 = tail call float @llvm.fmuladd.f32(float %cond6.i.1672, float 0xBFAEEFF2E0000000, float 0x401A47EF80000000) #5
%922 = tail call float @llvm.fmuladd.f32(float %cond6.i.1672, float %921, float 0x405B28A3E0000000) #5
%923 = tail call float @llvm.fmuladd.f32(float %cond6.i.1672, float %922, float 0x407AD02160000000) #5
%924 = tail call float @llvm.fmuladd.f32(float %cond6.i.1672, float %923, float 0x40842B1920000000) #5
%925 = tail call float @llvm.fmuladd.f32(float %cond6.i.1672, float %924, float 0x407B290DE0000000) #5
%926 = tail call float @llvm.fmuladd.f32(float %cond6.i.1672, float %925, float 0x4061350C60000000) #5
%927 = tail call float @llvm.fmuladd.f32(float %cond6.i.1672, float %926, float 0x4033A6B9C0000000) #5
%cmp32.i.1673 = fcmp olt float %fabs.i.1664, 0x4006DB6DA0000000
%cond36.i.1674 = select i1 %cmp32.i.1673, float %920, float %907
%cond41.i.1675 = select i1 %cmp32.i.1673, float %927, float %913
%928 = tail call float @llvm.fmuladd.f32(float %cond6.i.1672, float 0xBF61BF3800000000, float 0x3FA22A3660000000) #5
%929 = tail call float @llvm.fmuladd.f32(float %cond6.i.1672, float %928, float 0xBFBC639840000000) #5
%930 = tail call float @llvm.fmuladd.f32(float %cond6.i.1672, float %929, float 0x3FD45FCA80000000) #5
%931 = tail call float @llvm.fmuladd.f32(float %cond6.i.1672, float %930, float 0xBFD7D24100000000) #5
%932 = tail call float @llvm.fmuladd.f32(float %cond6.i.1672, float %931, float 0x3FDA8D00A0000000) #5
%933 = tail call float @llvm.fmuladd.f32(float %cond6.i.1672, float %932, float 0xBF6359B8C0000000) #5
%934 = tail call float @llvm.fmuladd.f32(float %cond6.i.1672, float 0x3F888B5460000000, float 0x3F8BEDC260000000) #5
%935 = tail call float @llvm.fmuladd.f32(float %cond6.i.1672, float %934, float 0x3FC02660E0000000) #5
%936 = tail call float @llvm.fmuladd.f32(float %cond6.i.1672, float %935, float 0x3FB2635CE0000000) #5
%937 = tail call float @llvm.fmuladd.f32(float %cond6.i.1672, float %936, float 0x3FE14AF0A0000000) #5
%938 = tail call float @llvm.fmuladd.f32(float %cond6.i.1672, float %937, float 0x3FBB3E6620000000) #5
%cond57.i.1676 = select i1 %cmp.i583.1669, float %933, float %cond36.i.1674
%cond62.i.1677 = select i1 %cmp.i583.1669, float %938, float %cond41.i.1675
%939 = tail call float @llvm.fmuladd.f32(float %cond6.i.1672, float 0xBEF8EAD620000000, float 0xBF77A29120000000) #5
%940 = tail call float @llvm.fmuladd.f32(float %cond6.i.1672, float %939, float 0xBF9D2A51E0000000) #5
%941 = tail call float @llvm.fmuladd.f32(float %cond6.i.1672, float %940, float 0xBFD4CD7D60000000) #5
%942 = tail call float @llvm.fmuladd.f32(float %cond6.i.1672, float %941, float 0x3FC06EBA80000000) #5
%943 = tail call float @llvm.fmuladd.f32(float %cond6.i.1672, float 0xBED09C4340000000, float 0x3F215DC920000000) #5
%944 = tail call float @llvm.fmuladd.f32(float %cond6.i.1672, float %943, float 0x3F74D022C0000000) #5
%945 = tail call float @llvm.fmuladd.f32(float %cond6.i.1672, float %944, float 0x3FB0A54C60000000) #5
%946 = tail call float @llvm.fmuladd.f32(float %cond6.i.1672, float %945, float 0x3FD97779C0000000) #5
%cond75.i.1678 = select i1 %cmp2.i.1671, float %942, float %cond57.i.1676
%cond80.i.1679 = select i1 %cmp2.i.1671, float %946, float %cond62.i.1677
%947 = tail call float @llvm.fmuladd.f32(float %cond6.i.1672, float %cond80.i.1679, float 1.000000e+00) #5
%div82.i.1680 = fdiv float %cond75.i.1678, %947, !fpmath !46
%and83.i.1681 = and i32 %and.i.1665, -4096
%astype84.i.1682 = bitcast i32 %and83.i.1681 to float
%sub85.i.1683 = fsub float -0.000000e+00, %astype84.i.1682
%948 = tail call float @llvm.fmuladd.f32(float %sub85.i.1683, float %astype84.i.1682, float -5.625000e-01) #5
%cmp.i2.i.1684 = fcmp olt float %948, 0.000000e+00
%cond.i3.i.1685 = select i1 %cmp.i2.i.1684, float -5.000000e-01, float 5.000000e-01
%949 = tail call float @llvm.fmuladd.f32(float %948, float 0x3FF7154760000000, float %cond.i3.i.1685) #5
%conv.i4.i.1686 = fptosi float %949 to i32
%conv1.i5.i.1687 = sitofp i32 %conv.i4.i.1686 to float
%950 = tail call float @llvm.fmuladd.f32(float %conv1.i5.i.1687, float 0xBFE62E3000000000, float %948) #5
%mul.i6.i.1688 = fmul float %conv1.i5.i.1687, 0xBEE2FEFA20000000
%add.i7.i.1689 = fadd float %950, %mul.i6.i.1688
%mul3.i8.i.1690 = fmul float %add.i7.i.1689, %add.i7.i.1689
%951 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.1690, float 0x3E66376980000000, float 0xBEBBBD41C0000000) #5
%952 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.1690, float %951, float 0x3F11566AA0000000) #5
%953 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.1690, float %952, float 0xBF66C16C20000000) #5
%954 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.1690, float %953, float 0x3FC5555560000000) #5
%sub8.i9.i.1691 = fsub float -0.000000e+00, %954
%955 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.1690, float %sub8.i9.i.1691, float %add.i7.i.1689) #5
%sub10.i10.i.1692 = fsub float -0.000000e+00, %mul.i6.i.1688
%mul11.i11.i.1693 = fmul float %add.i7.i.1689, %955
%sub12.i12.i.1694 = fsub float 2.000000e+00, %955
%div.i13.i.1695 = fdiv float %mul11.i11.i.1693, %sub12.i12.i.1694, !fpmath !46
%sub13.i14.i.1696 = fsub float %sub10.i10.i.1692, %div.i13.i.1695
%sub14.i15.i.1697 = fsub float %sub13.i14.i.1696, %950
%sub15.i16.i.1698 = fsub float 1.000000e+00, %sub14.i15.i.1697
%astype.i17.i.1699 = bitcast float %sub15.i16.i.1698 to i32
%shl.i18.i.1700 = shl i32 %conv.i4.i.1686, 23
%add16.i19.i.1701 = add nsw i32 %astype.i17.i.1699, %shl.i18.i.1700
%astype17.i20.i.1702 = bitcast i32 %add16.i19.i.1701 to float
%cmp18.i21.i.1703 = fcmp olt float %948, 0xC055D589E0000000
%cond20.i22.i.1704 = select i1 %cmp18.i21.i.1703, float 0.000000e+00, float %astype17.i20.i.1702
%cmp21.i23.i.1705 = fcmp olt float %948, 0x40562E4300000000
%cond26.i24.i.1706 = select i1 %cmp21.i23.i.1705, float %cond20.i22.i.1704, float 0x7FF0000000000000
%cmp.i.i25.i.1707 = fcmp uno float %948, 0.000000e+00
%cond31.i26.i.1708 = select i1 %cmp.i.i25.i.1707, float %948, float %cond26.i24.i.1706
%sub88.i.1709 = fsub float %astype84.i.1682, %fabs.i.1664
%add.i584.1710 = fadd float %fabs.i.1664, %astype84.i.1682
%956 = tail call float @llvm.fmuladd.f32(float %sub88.i.1709, float %add.i584.1710, float %div82.i.1680) #5
%cmp.i1.i.1711 = fcmp olt float %956, 0.000000e+00
%cond.i.i.1712 = select i1 %cmp.i1.i.1711, float -5.000000e-01, float 5.000000e-01
%957 = tail call float @llvm.fmuladd.f32(float %956, float 0x3FF7154760000000, float %cond.i.i.1712) #5
%conv.i.i.1713 = fptosi float %957 to i32
%conv1.i.i.1714 = sitofp i32 %conv.i.i.1713 to float
%958 = tail call float @llvm.fmuladd.f32(float %conv1.i.i.1714, float 0xBFE62E3000000000, float %956) #5
%mul.i.i.1715 = fmul float %conv1.i.i.1714, 0xBEE2FEFA20000000
%add.i.i.1716 = fadd float %958, %mul.i.i.1715
%mul3.i.i.1717 = fmul float %add.i.i.1716, %add.i.i.1716
%959 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.1717, float 0x3E66376980000000, float 0xBEBBBD41C0000000) #5
%960 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.1717, float %959, float 0x3F11566AA0000000) #5
%961 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.1717, float %960, float 0xBF66C16C20000000) #5
%962 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.1717, float %961, float 0x3FC5555560000000) #5
%sub8.i.i.1718 = fsub float -0.000000e+00, %962
%963 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.1717, float %sub8.i.i.1718, float %add.i.i.1716) #5
%sub10.i.i.1719 = fsub float -0.000000e+00, %mul.i.i.1715
%mul11.i.i.1720 = fmul float %add.i.i.1716, %963
%sub12.i.i.1721 = fsub float 2.000000e+00, %963
%div.i.i.1722 = fdiv float %mul11.i.i.1720, %sub12.i.i.1721, !fpmath !46
%sub13.i.i.1723 = fsub float %sub10.i.i.1719, %div.i.i.1722
%sub14.i.i.1724 = fsub float %sub13.i.i.1723, %958
%sub15.i.i.1725 = fsub float 1.000000e+00, %sub14.i.i.1724
%astype.i.i.1726 = bitcast float %sub15.i.i.1725 to i32
%shl.i.i.1727 = shl i32 %conv.i.i.1713, 23
%add16.i.i.1728 = add nsw i32 %astype.i.i.1726, %shl.i.i.1727
%astype17.i.i.1729 = bitcast i32 %add16.i.i.1728 to float
%cmp18.i.i.1730 = fcmp olt float %956, 0xC055D589E0000000
%cond20.i.i.1731 = select i1 %cmp18.i.i.1730, float 0.000000e+00, float %astype17.i.i.1729
%cmp21.i.i.1732 = fcmp olt float %956, 0x40562E4300000000
%cond26.i.i.1733 = select i1 %cmp21.i.i.1732, float %cond20.i.i.1731, float 0x7FF0000000000000
%cmp.i.i.i.1734 = fcmp uno float %956, 0.000000e+00
%cond31.i.i.1735 = select i1 %cmp.i.i.i.1734, float %956, float %cond26.i.i.1733
%mul91.i.1736 = fmul float %cond31.i26.i.1708, %cond31.i.i.1735
%div92.i.1737 = fdiv float %mul91.i.1736, %fabs.i.1664, !fpmath !46
%sub93.i.1738 = fsub float 2.000000e+00, %div92.i.1737
%cmp94.i.1739 = fcmp olt float %mul226.1663, 0.000000e+00
%cond98.i.1740 = select i1 %cmp94.i.1739, float %sub93.i.1738, float %div92.i.1737
%cmp99.i.1741 = fcmp olt float %fabs.i.1664, 2.800000e+01
%cond103.i.1742 = select i1 %cmp99.i.1741, float %cond98.i.1740, float 0.000000e+00
%sub104.i.1743 = fsub float 0x3FC3D4FA80000000, %div82.i.1680
%add105.i.1744 = fadd float %div82.i.1680, 0x3FEB0AC160000000
%add106.i.1745 = fadd float %add105.i.1744, 1.000000e+00
%cond111.i.1746 = select i1 %cmp94.i.1739, float %add106.i.1745, float %sub104.i.1743
%cond116.i.1747 = select i1 %cmp.i583.1669, float %cond111.i.1746, float %cond103.i.1742
%sub117.i.1748 = fadd float %mul226.1663, -5.000000e-01
%964 = tail call float @llvm.fmuladd.f32(float %mul226.1663, float %div82.i.1680, float %sub117.i.1748) #5
%sub119.i.1749 = fsub float 5.000000e-01, %964
%cond124.i.1750 = select i1 %cmp2.i.1671, float %sub119.i.1749, float %cond116.i.1747
%cmp125.i.1751 = fcmp olt float %mul226.1663, -6.000000e+00
%cond129.i.1752 = select i1 %cmp125.i.1751, float 2.000000e+00, float %cond124.i.1750
%cmp.i.i.1753 = fcmp uno float %mul226.1663, 0.000000e+00
%cond134.i.1754 = select i1 %cmp.i.i.1753, float %mul226.1663, float %cond129.i.1752
%mul229.1755 = fmul float %cond.1617, %nbparam_params_sh_ewald
%neg230.1756 = fsub float -0.000000e+00, %mul229.1755
%965 = tail call float @llvm.fmuladd.f32(float %div196.1640, float %cond134.i.1754, float %neg230.1756)
%966 = tail call float @llvm.fmuladd.f32(float %mul217.1655, float %965, float %E_el.6)
%splat.splatinsert.1757 = insertelement <3 x float> undef, float %901, i32 0
%splat.splat.1758 = shufflevector <3 x float> %splat.splatinsert.1757, <3 x float> undef, <3 x i32> zeroinitializer
%mul235.1759 = fmul <3 x float> %extractVec166.1626, %splat.splat.1758
%sub244.1760 = fsub <3 x float> zeroinitializer, %mul235.1759
%extractVec245.1761 = shufflevector <3 x float> %sub244.1760, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec253.1765 = shufflevector <4 x float> %fci_buf.sroa.0.2, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add254.1766 = fadd <3 x float> %extractVec253.1765, %mul235.1759
%extractVec255.1767 = shufflevector <3 x float> %add254.1766, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end258.1773
if.end258.1773: ; preds = %if.then182.1768, %if.then147.1625, %if.then126.1
%fci_buf.sroa.0.4 = phi <4 x float> [ %fci_buf.sroa.0.2, %if.then126.1 ], [ %extractVec255.1767, %if.then182.1768 ], [ %fci_buf.sroa.0.2, %if.then147.1625 ]
%E_el.5.1769 = phi float [ %E_el.6, %if.then126.1 ], [ %966, %if.then182.1768 ], [ %E_el.6, %if.then147.1625 ]
%E_lj.3.1770 = phi float [ %E_lj.4, %if.then126.1 ], [ %add216.1654, %if.then182.1768 ], [ %E_lj.4, %if.then147.1625 ]
%fcj_buf.sroa.0.1.1771 = phi <4 x float> [ <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float undef>, %if.then126.1 ], [ %extractVec245.1761, %if.then182.1768 ], [ <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float undef>, %if.then147.1625 ]
%and145.1.1 = and i32 %64, 512
%tobool146.1.1 = icmp eq i32 %and145.1.1, 0
br i1 %tobool146.1.1, label %if.end258.1.1, label %if.then147.1.1
if.then147.1.1: ; preds = %if.end258.1773
%967 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx154.1.3, align 16, !tbaa !36
%968 = fsub <4 x float> %967, %870
%969 = extractelement <4 x float> %968, i32 0
%970 = extractelement <4 x float> %968, i32 1
%mul3.i.i589.1.1 = fmul float %970, %970
%971 = tail call float @llvm.fmuladd.f32(float %969, float %969, float %mul3.i.i589.1.1) #5
%972 = extractelement <4 x float> %968, i32 2
%973 = tail call float @llvm.fmuladd.f32(float %972, float %972, float %971) #5
%and168.1.1 = and i32 %66, 512
%tobool169.1.1 = icmp ne i32 %and168.1.1, 0
%cond.1.1 = select i1 %tobool169.1.1, float 1.000000e+00, float 0.000000e+00
%cmp174.1.1 = icmp eq i32 %60, %868
%or.cond.1.1 = and i1 %cmp63, %cmp174.1.1
%not.or.cond.1.1 = xor i1 %or.cond.1.1, true
%cmp176..1.1 = or i1 %cmp176, %not.or.cond.1.1
%conv178.1.1 = uitofp i1 %cmp176..1.1 to float
%mul179.1.1 = fmul float %conv178.1.1, %nbparam_params_rcoulomb_sq
%cmp180.1.1 = fcmp olt float %973, %mul179.1.1
br i1 %cmp180.1.1, label %if.then182.1.1, label %if.end258.1.1
if.then182.1.1: ; preds = %if.then147.1.1
%extractVec166.1.1 = shufflevector <4 x float> %968, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%974 = extractelement <4 x float> %967, i32 3
%975 = load i32, i32 addrspace(1)* %arrayidx183.1.3, align 4, !tbaa !41
%mul184.1.1 = mul nsw i32 %975, %ntypes
%add185.1.1 = add nsw i32 %mul184.1.1, %872
%mul186.1.1 = shl nsw i32 %add185.1.1, 1
%976 = sext i32 %mul186.1.1 to i64
%arrayidx187.1.1 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %976
%977 = load float, float addrspace(2)* %arrayidx187.1.1, align 4, !tbaa !39
%add191.1.1 = or i32 %mul186.1.1, 1
%978 = sext i32 %add191.1.1 to i64
%arrayidx192.1.1 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %978
%979 = load float, float addrspace(2)* %arrayidx192.1.1, align 4, !tbaa !39
%sub193.1.1 = fsub float 1.000000e+00, %cond.1.1
%980 = tail call float @llvm.fmuladd.f32(float %sub193.1.1, float 0x3D71979980000000, float %973)
%cmp.i.i587.1.1 = fcmp olt float %980, 0.000000e+00
%call.i.i.1.1 = tail call float @llvm.sqrt.f32(float %980) #6
%call.i.i.op.1.1 = fdiv float 1.000000e+00, %call.i.i.1.1
%div196.1.1 = select i1 %cmp.i.i587.1.1, float 0x7FF8000000000000, float %call.i.i.op.1.1
%mul197.1.1 = fmul float %div196.1.1, %div196.1.1
%mul198.1.1 = fmul float %mul197.1.1, %mul197.1.1
%mul199.1.1 = fmul float %mul197.1.1, %mul198.1.1
%mul200.1.1 = fmul float %cond.1.1, %mul199.1.1
%neg.1.1 = fsub float -0.000000e+00, %977
%981 = tail call float @llvm.fmuladd.f32(float %979, float %mul200.1.1, float %neg.1.1)
%mul202.1.1 = fmul float %mul200.1.1, %981
%mul203.1.1 = fmul float %mul197.1.1, %mul202.1.1
%982 = tail call float @llvm.fmuladd.f32(float %mul200.1.1, float %mul200.1.1, float %nbparam_params_repulsion_shift_cpot)
%mul207.1.1 = fmul float %982, %979
%add211.1.1 = fadd float %mul200.1.1, %nbparam_params_dispersion_shift_cpot
%mul212.1.1 = fmul float %add211.1.1, %977
%mul213.1.1 = fmul float %mul212.1.1, 0x3FC5555560000000
%neg214.1.1 = fsub float -0.000000e+00, %mul213.1.1
%983 = tail call float @llvm.fmuladd.f32(float %mul207.1.1, float 0x3FB5555540000000, float %neg214.1.1)
%mul215.1.1 = fmul float %cond.1.1, %983
%add216.1.1 = fadd float %E_lj.3.1770, %mul215.1.1
%mul217.1.1 = fmul float %871, %974
%mul218.1.1 = fmul float %cond.1.1, %mul197.1.1
%mul220.1.1 = fmul float %mul, %980
%mul.i585.1.1 = fmul float %mul220.1.1, %mul220.1.1
%984 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i585.1.1, float 0x3FBDA79640000000) #5
%985 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i585.1.1, float 0x3FE03C5780000000) #5
%986 = tail call float @llvm.fmuladd.f32(float %984, float %mul.i585.1.1, float 1.000000e+00) #5
%987 = tail call float @llvm.fmuladd.f32(float %985, float %mul220.1.1, float %986) #5
%div.i586.1.1 = fdiv float 1.000000e+00, %987, !fpmath !46
%988 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i585.1.1, float 0xBF0BFF7260000000) #5
%989 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i585.1.1, float 0x3F50794180000000) #5
%990 = tail call float @llvm.fmuladd.f32(float %988, float %mul.i585.1.1, float 0xBF93BDB200000000) #5
%991 = tail call float @llvm.fmuladd.f32(float %989, float %mul.i585.1.1, float 0x3FB1D5E760000000) #5
%992 = tail call float @llvm.fmuladd.f32(float %990, float %mul.i585.1.1, float 0xBFE81272E0000000) #5
%993 = tail call float @llvm.fmuladd.f32(float %991, float %mul220.1.1, float %992) #5
%mul11.i.1.1 = fmul float %993, %div.i586.1.1
%mul222.1.1 = fmul float %mul19, %mul11.i.1.1
%994 = tail call float @llvm.fmuladd.f32(float %mul218.1.1, float %div196.1.1, float %mul222.1.1)
%995 = tail call float @llvm.fmuladd.f32(float %mul217.1.1, float %994, float %mul203.1.1)
%mul225.1.1 = fmul float %980, %div196.1.1
%mul226.1.1 = fmul float %mul225.1.1, %nbparam_params_ewald_beta
%fabs.i.1.1 = tail call float @llvm.fabs.f32(float %mul226.1.1) #5
%and.i.1.1 = bitcast float %fabs.i.1.1 to i32
%mul.i.1.1 = fmul float %mul226.1.1, %mul226.1.1
%div.i.1.1 = fdiv float 1.000000e+00, %mul.i.1.1, !fpmath !46
%sub.i.1.1 = fadd float %fabs.i.1.1, -1.000000e+00
%cmp.i583.1.1 = fcmp olt float %fabs.i.1.1, 1.250000e+00
%cond.i.1.1 = select i1 %cmp.i583.1.1, float %sub.i.1.1, float %div.i.1.1
%cmp2.i.1.1 = fcmp olt float %fabs.i.1.1, 8.437500e-01
%cond6.i.1.1 = select i1 %cmp2.i.1.1, float %mul.i.1.1, float %cond.i.1.1
%996 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.1, float 0xC07E384EA0000000, float 0xC090046160000000) #5
%997 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.1, float %996, float 0xC083EC8820000000) #5
%998 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.1, float %997, float 0xC064145D40000000) #5
%999 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.1, float %998, float 0xC031C20960000000) #5
%1000 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.1, float %999, float 0xBFE993BA80000000) #5
%1001 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.1, float %1000, float 0xBF84341240000000) #5
%1002 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.1, float 0xC03670E240000000, float 0x407DA874E0000000) #5
%1003 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.1, float %1002, float 0x40A3F219C0000000) #5
%1004 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.1, float %1003, float 0x40A8FFB760000000) #5
%1005 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.1, float %1004, float 0x409802EB20000000) #5
%1006 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.1, float %1005, float 0x40745CAE20000000) #5
%1007 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.1, float %1006, float 0x403E568B20000000) #5
%1008 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.1, float 0xC023A0EFC0000000, float 0xC054526560000000) #5
%1009 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.1, float %1008, float 0xC067135CE0000000) #5
%1010 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.1, float %1009, float 0xC0644CB180000000) #5
%1011 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.1, float %1010, float 0xC04F300AE0000000) #5
%1012 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.1, float %1011, float 0xC0251E0440000000) #5
%1013 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.1, float %1012, float 0xBFE63416E0000000) #5
%1014 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.1, float %1013, float 0xBF84341260000000) #5
%1015 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.1, float 0xBFAEEFF2E0000000, float 0x401A47EF80000000) #5
%1016 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.1, float %1015, float 0x405B28A3E0000000) #5
%1017 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.1, float %1016, float 0x407AD02160000000) #5
%1018 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.1, float %1017, float 0x40842B1920000000) #5
%1019 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.1, float %1018, float 0x407B290DE0000000) #5
%1020 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.1, float %1019, float 0x4061350C60000000) #5
%1021 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.1, float %1020, float 0x4033A6B9C0000000) #5
%cmp32.i.1.1 = fcmp olt float %fabs.i.1.1, 0x4006DB6DA0000000
%cond36.i.1.1 = select i1 %cmp32.i.1.1, float %1014, float %1001
%cond41.i.1.1 = select i1 %cmp32.i.1.1, float %1021, float %1007
%1022 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.1, float 0xBF61BF3800000000, float 0x3FA22A3660000000) #5
%1023 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.1, float %1022, float 0xBFBC639840000000) #5
%1024 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.1, float %1023, float 0x3FD45FCA80000000) #5
%1025 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.1, float %1024, float 0xBFD7D24100000000) #5
%1026 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.1, float %1025, float 0x3FDA8D00A0000000) #5
%1027 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.1, float %1026, float 0xBF6359B8C0000000) #5
%1028 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.1, float 0x3F888B5460000000, float 0x3F8BEDC260000000) #5
%1029 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.1, float %1028, float 0x3FC02660E0000000) #5
%1030 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.1, float %1029, float 0x3FB2635CE0000000) #5
%1031 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.1, float %1030, float 0x3FE14AF0A0000000) #5
%1032 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.1, float %1031, float 0x3FBB3E6620000000) #5
%cond57.i.1.1 = select i1 %cmp.i583.1.1, float %1027, float %cond36.i.1.1
%cond62.i.1.1 = select i1 %cmp.i583.1.1, float %1032, float %cond41.i.1.1
%1033 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.1, float 0xBEF8EAD620000000, float 0xBF77A29120000000) #5
%1034 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.1, float %1033, float 0xBF9D2A51E0000000) #5
%1035 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.1, float %1034, float 0xBFD4CD7D60000000) #5
%1036 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.1, float %1035, float 0x3FC06EBA80000000) #5
%1037 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.1, float 0xBED09C4340000000, float 0x3F215DC920000000) #5
%1038 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.1, float %1037, float 0x3F74D022C0000000) #5
%1039 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.1, float %1038, float 0x3FB0A54C60000000) #5
%1040 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.1, float %1039, float 0x3FD97779C0000000) #5
%cond75.i.1.1 = select i1 %cmp2.i.1.1, float %1036, float %cond57.i.1.1
%cond80.i.1.1 = select i1 %cmp2.i.1.1, float %1040, float %cond62.i.1.1
%1041 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.1, float %cond80.i.1.1, float 1.000000e+00) #5
%div82.i.1.1 = fdiv float %cond75.i.1.1, %1041, !fpmath !46
%and83.i.1.1 = and i32 %and.i.1.1, -4096
%astype84.i.1.1 = bitcast i32 %and83.i.1.1 to float
%sub85.i.1.1 = fsub float -0.000000e+00, %astype84.i.1.1
%1042 = tail call float @llvm.fmuladd.f32(float %sub85.i.1.1, float %astype84.i.1.1, float -5.625000e-01) #5
%cmp.i2.i.1.1 = fcmp olt float %1042, 0.000000e+00
%cond.i3.i.1.1 = select i1 %cmp.i2.i.1.1, float -5.000000e-01, float 5.000000e-01
%1043 = tail call float @llvm.fmuladd.f32(float %1042, float 0x3FF7154760000000, float %cond.i3.i.1.1) #5
%conv.i4.i.1.1 = fptosi float %1043 to i32
%conv1.i5.i.1.1 = sitofp i32 %conv.i4.i.1.1 to float
%1044 = tail call float @llvm.fmuladd.f32(float %conv1.i5.i.1.1, float 0xBFE62E3000000000, float %1042) #5
%mul.i6.i.1.1 = fmul float %conv1.i5.i.1.1, 0xBEE2FEFA20000000
%add.i7.i.1.1 = fadd float %1044, %mul.i6.i.1.1
%mul3.i8.i.1.1 = fmul float %add.i7.i.1.1, %add.i7.i.1.1
%1045 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.1.1, float 0x3E66376980000000, float 0xBEBBBD41C0000000) #5
%1046 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.1.1, float %1045, float 0x3F11566AA0000000) #5
%1047 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.1.1, float %1046, float 0xBF66C16C20000000) #5
%1048 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.1.1, float %1047, float 0x3FC5555560000000) #5
%sub8.i9.i.1.1 = fsub float -0.000000e+00, %1048
%1049 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.1.1, float %sub8.i9.i.1.1, float %add.i7.i.1.1) #5
%sub10.i10.i.1.1 = fsub float -0.000000e+00, %mul.i6.i.1.1
%mul11.i11.i.1.1 = fmul float %add.i7.i.1.1, %1049
%sub12.i12.i.1.1 = fsub float 2.000000e+00, %1049
%div.i13.i.1.1 = fdiv float %mul11.i11.i.1.1, %sub12.i12.i.1.1, !fpmath !46
%sub13.i14.i.1.1 = fsub float %sub10.i10.i.1.1, %div.i13.i.1.1
%sub14.i15.i.1.1 = fsub float %sub13.i14.i.1.1, %1044
%sub15.i16.i.1.1 = fsub float 1.000000e+00, %sub14.i15.i.1.1
%astype.i17.i.1.1 = bitcast float %sub15.i16.i.1.1 to i32
%shl.i18.i.1.1 = shl i32 %conv.i4.i.1.1, 23
%add16.i19.i.1.1 = add nsw i32 %astype.i17.i.1.1, %shl.i18.i.1.1
%astype17.i20.i.1.1 = bitcast i32 %add16.i19.i.1.1 to float
%cmp18.i21.i.1.1 = fcmp olt float %1042, 0xC055D589E0000000
%cond20.i22.i.1.1 = select i1 %cmp18.i21.i.1.1, float 0.000000e+00, float %astype17.i20.i.1.1
%cmp21.i23.i.1.1 = fcmp olt float %1042, 0x40562E4300000000
%cond26.i24.i.1.1 = select i1 %cmp21.i23.i.1.1, float %cond20.i22.i.1.1, float 0x7FF0000000000000
%cmp.i.i25.i.1.1 = fcmp uno float %1042, 0.000000e+00
%cond31.i26.i.1.1 = select i1 %cmp.i.i25.i.1.1, float %1042, float %cond26.i24.i.1.1
%sub88.i.1.1 = fsub float %astype84.i.1.1, %fabs.i.1.1
%add.i584.1.1 = fadd float %fabs.i.1.1, %astype84.i.1.1
%1050 = tail call float @llvm.fmuladd.f32(float %sub88.i.1.1, float %add.i584.1.1, float %div82.i.1.1) #5
%cmp.i1.i.1.1 = fcmp olt float %1050, 0.000000e+00
%cond.i.i.1.1 = select i1 %cmp.i1.i.1.1, float -5.000000e-01, float 5.000000e-01
%1051 = tail call float @llvm.fmuladd.f32(float %1050, float 0x3FF7154760000000, float %cond.i.i.1.1) #5
%conv.i.i.1.1 = fptosi float %1051 to i32
%conv1.i.i.1.1 = sitofp i32 %conv.i.i.1.1 to float
%1052 = tail call float @llvm.fmuladd.f32(float %conv1.i.i.1.1, float 0xBFE62E3000000000, float %1050) #5
%mul.i.i.1.1 = fmul float %conv1.i.i.1.1, 0xBEE2FEFA20000000
%add.i.i.1.1 = fadd float %1052, %mul.i.i.1.1
%mul3.i.i.1.1 = fmul float %add.i.i.1.1, %add.i.i.1.1
%1053 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.1.1, float 0x3E66376980000000, float 0xBEBBBD41C0000000) #5
%1054 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.1.1, float %1053, float 0x3F11566AA0000000) #5
%1055 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.1.1, float %1054, float 0xBF66C16C20000000) #5
%1056 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.1.1, float %1055, float 0x3FC5555560000000) #5
%sub8.i.i.1.1 = fsub float -0.000000e+00, %1056
%1057 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.1.1, float %sub8.i.i.1.1, float %add.i.i.1.1) #5
%sub10.i.i.1.1 = fsub float -0.000000e+00, %mul.i.i.1.1
%mul11.i.i.1.1 = fmul float %add.i.i.1.1, %1057
%sub12.i.i.1.1 = fsub float 2.000000e+00, %1057
%div.i.i.1.1 = fdiv float %mul11.i.i.1.1, %sub12.i.i.1.1, !fpmath !46
%sub13.i.i.1.1 = fsub float %sub10.i.i.1.1, %div.i.i.1.1
%sub14.i.i.1.1 = fsub float %sub13.i.i.1.1, %1052
%sub15.i.i.1.1 = fsub float 1.000000e+00, %sub14.i.i.1.1
%astype.i.i.1.1 = bitcast float %sub15.i.i.1.1 to i32
%shl.i.i.1.1 = shl i32 %conv.i.i.1.1, 23
%add16.i.i.1.1 = add nsw i32 %astype.i.i.1.1, %shl.i.i.1.1
%astype17.i.i.1.1 = bitcast i32 %add16.i.i.1.1 to float
%cmp18.i.i.1.1 = fcmp olt float %1050, 0xC055D589E0000000
%cond20.i.i.1.1 = select i1 %cmp18.i.i.1.1, float 0.000000e+00, float %astype17.i.i.1.1
%cmp21.i.i.1.1 = fcmp olt float %1050, 0x40562E4300000000
%cond26.i.i.1.1 = select i1 %cmp21.i.i.1.1, float %cond20.i.i.1.1, float 0x7FF0000000000000
%cmp.i.i.i.1.1 = fcmp uno float %1050, 0.000000e+00
%cond31.i.i.1.1 = select i1 %cmp.i.i.i.1.1, float %1050, float %cond26.i.i.1.1
%mul91.i.1.1 = fmul float %cond31.i26.i.1.1, %cond31.i.i.1.1
%div92.i.1.1 = fdiv float %mul91.i.1.1, %fabs.i.1.1, !fpmath !46
%sub93.i.1.1 = fsub float 2.000000e+00, %div92.i.1.1
%cmp94.i.1.1 = fcmp olt float %mul226.1.1, 0.000000e+00
%cond98.i.1.1 = select i1 %cmp94.i.1.1, float %sub93.i.1.1, float %div92.i.1.1
%cmp99.i.1.1 = fcmp olt float %fabs.i.1.1, 2.800000e+01
%cond103.i.1.1 = select i1 %cmp99.i.1.1, float %cond98.i.1.1, float 0.000000e+00
%sub104.i.1.1 = fsub float 0x3FC3D4FA80000000, %div82.i.1.1
%add105.i.1.1 = fadd float %div82.i.1.1, 0x3FEB0AC160000000
%add106.i.1.1 = fadd float %add105.i.1.1, 1.000000e+00
%cond111.i.1.1 = select i1 %cmp94.i.1.1, float %add106.i.1.1, float %sub104.i.1.1
%cond116.i.1.1 = select i1 %cmp.i583.1.1, float %cond111.i.1.1, float %cond103.i.1.1
%sub117.i.1.1 = fadd float %mul226.1.1, -5.000000e-01
%1058 = tail call float @llvm.fmuladd.f32(float %mul226.1.1, float %div82.i.1.1, float %sub117.i.1.1) #5
%sub119.i.1.1 = fsub float 5.000000e-01, %1058
%cond124.i.1.1 = select i1 %cmp2.i.1.1, float %sub119.i.1.1, float %cond116.i.1.1
%cmp125.i.1.1 = fcmp olt float %mul226.1.1, -6.000000e+00
%cond129.i.1.1 = select i1 %cmp125.i.1.1, float 2.000000e+00, float %cond124.i.1.1
%cmp.i.i.1.1 = fcmp uno float %mul226.1.1, 0.000000e+00
%cond134.i.1.1 = select i1 %cmp.i.i.1.1, float %mul226.1.1, float %cond129.i.1.1
%mul229.1.1 = fmul float %cond.1.1, %nbparam_params_sh_ewald
%neg230.1.1 = fsub float -0.000000e+00, %mul229.1.1
%1059 = tail call float @llvm.fmuladd.f32(float %div196.1.1, float %cond134.i.1.1, float %neg230.1.1)
%1060 = tail call float @llvm.fmuladd.f32(float %mul217.1.1, float %1059, float %E_el.5.1769)
%splat.splatinsert.1.1 = insertelement <3 x float> undef, float %995, i32 0
%splat.splat.1.1 = shufflevector <3 x float> %splat.splatinsert.1.1, <3 x float> undef, <3 x i32> zeroinitializer
%mul235.1.1 = fmul <3 x float> %extractVec166.1.1, %splat.splat.1.1
%extractVec243.1.1 = shufflevector <4 x float> %fcj_buf.sroa.0.1.1771, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub244.1.1 = fsub <3 x float> %extractVec243.1.1, %mul235.1.1
%extractVec245.1.1 = shufflevector <3 x float> %sub244.1.1, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec253.1.1 = shufflevector <4 x float> %fci_buf.sroa.12.1, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add254.1.1 = fadd <3 x float> %extractVec253.1.1, %mul235.1.1
%extractVec255.1.1 = shufflevector <3 x float> %add254.1.1, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end258.1.1
if.end258.1.1: ; preds = %if.then182.1.1, %if.then147.1.1, %if.end258.1773
%fci_buf.sroa.12.4 = phi <4 x float> [ %fci_buf.sroa.12.1, %if.end258.1773 ], [ %extractVec255.1.1, %if.then182.1.1 ], [ %fci_buf.sroa.12.1, %if.then147.1.1 ]
%E_el.5.1.1 = phi float [ %E_el.5.1769, %if.end258.1773 ], [ %1060, %if.then182.1.1 ], [ %E_el.5.1769, %if.then147.1.1 ]
%E_lj.3.1.1 = phi float [ %E_lj.3.1770, %if.end258.1773 ], [ %add216.1.1, %if.then182.1.1 ], [ %E_lj.3.1770, %if.then147.1.1 ]
%fcj_buf.sroa.0.1.1.1 = phi <4 x float> [ %fcj_buf.sroa.0.1.1771, %if.end258.1773 ], [ %extractVec245.1.1, %if.then182.1.1 ], [ %fcj_buf.sroa.0.1.1771, %if.then147.1.1 ]
%and145.2.1 = and i32 %64, 1024
%tobool146.2.1 = icmp eq i32 %and145.2.1, 0
br i1 %tobool146.2.1, label %if.end258.2.1, label %if.then147.2.1
if.then147.2.1: ; preds = %if.end258.1.1
%1061 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx154.2.3, align 16, !tbaa !36
%1062 = fsub <4 x float> %1061, %870
%1063 = extractelement <4 x float> %1062, i32 0
%1064 = extractelement <4 x float> %1062, i32 1
%mul3.i.i589.2.1 = fmul float %1064, %1064
%1065 = tail call float @llvm.fmuladd.f32(float %1063, float %1063, float %mul3.i.i589.2.1) #5
%1066 = extractelement <4 x float> %1062, i32 2
%1067 = tail call float @llvm.fmuladd.f32(float %1066, float %1066, float %1065) #5
%and168.2.1 = and i32 %66, 1024
%tobool169.2.1 = icmp ne i32 %and168.2.1, 0
%cond.2.1 = select i1 %tobool169.2.1, float 1.000000e+00, float 0.000000e+00
%cmp174.2.1 = icmp eq i32 %58, %868
%or.cond.2.1 = and i1 %cmp63, %cmp174.2.1
%not.or.cond.2.1 = xor i1 %or.cond.2.1, true
%cmp176..2.1 = or i1 %cmp176, %not.or.cond.2.1
%conv178.2.1 = uitofp i1 %cmp176..2.1 to float
%mul179.2.1 = fmul float %conv178.2.1, %nbparam_params_rcoulomb_sq
%cmp180.2.1 = fcmp olt float %1067, %mul179.2.1
br i1 %cmp180.2.1, label %if.then182.2.1, label %if.end258.2.1
if.then182.2.1: ; preds = %if.then147.2.1
%extractVec166.2.1 = shufflevector <4 x float> %1062, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%1068 = extractelement <4 x float> %1061, i32 3
%1069 = load i32, i32 addrspace(1)* %arrayidx183.2.3, align 4, !tbaa !41
%mul184.2.1 = mul nsw i32 %1069, %ntypes
%add185.2.1 = add nsw i32 %mul184.2.1, %872
%mul186.2.1 = shl nsw i32 %add185.2.1, 1
%1070 = sext i32 %mul186.2.1 to i64
%arrayidx187.2.1 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %1070
%1071 = load float, float addrspace(2)* %arrayidx187.2.1, align 4, !tbaa !39
%add191.2.1 = or i32 %mul186.2.1, 1
%1072 = sext i32 %add191.2.1 to i64
%arrayidx192.2.1 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %1072
%1073 = load float, float addrspace(2)* %arrayidx192.2.1, align 4, !tbaa !39
%sub193.2.1 = fsub float 1.000000e+00, %cond.2.1
%1074 = tail call float @llvm.fmuladd.f32(float %sub193.2.1, float 0x3D71979980000000, float %1067)
%cmp.i.i587.2.1 = fcmp olt float %1074, 0.000000e+00
%call.i.i.2.1 = tail call float @llvm.sqrt.f32(float %1074) #6
%call.i.i.op.2.1 = fdiv float 1.000000e+00, %call.i.i.2.1
%div196.2.1 = select i1 %cmp.i.i587.2.1, float 0x7FF8000000000000, float %call.i.i.op.2.1
%mul197.2.1 = fmul float %div196.2.1, %div196.2.1
%mul198.2.1 = fmul float %mul197.2.1, %mul197.2.1
%mul199.2.1 = fmul float %mul197.2.1, %mul198.2.1
%mul200.2.1 = fmul float %cond.2.1, %mul199.2.1
%neg.2.1 = fsub float -0.000000e+00, %1071
%1075 = tail call float @llvm.fmuladd.f32(float %1073, float %mul200.2.1, float %neg.2.1)
%mul202.2.1 = fmul float %mul200.2.1, %1075
%mul203.2.1 = fmul float %mul197.2.1, %mul202.2.1
%1076 = tail call float @llvm.fmuladd.f32(float %mul200.2.1, float %mul200.2.1, float %nbparam_params_repulsion_shift_cpot)
%mul207.2.1 = fmul float %1076, %1073
%add211.2.1 = fadd float %mul200.2.1, %nbparam_params_dispersion_shift_cpot
%mul212.2.1 = fmul float %add211.2.1, %1071
%mul213.2.1 = fmul float %mul212.2.1, 0x3FC5555560000000
%neg214.2.1 = fsub float -0.000000e+00, %mul213.2.1
%1077 = tail call float @llvm.fmuladd.f32(float %mul207.2.1, float 0x3FB5555540000000, float %neg214.2.1)
%mul215.2.1 = fmul float %cond.2.1, %1077
%add216.2.1 = fadd float %E_lj.3.1.1, %mul215.2.1
%mul217.2.1 = fmul float %871, %1068
%mul218.2.1 = fmul float %cond.2.1, %mul197.2.1
%mul220.2.1 = fmul float %mul, %1074
%mul.i585.2.1 = fmul float %mul220.2.1, %mul220.2.1
%1078 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i585.2.1, float 0x3FBDA79640000000) #5
%1079 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i585.2.1, float 0x3FE03C5780000000) #5
%1080 = tail call float @llvm.fmuladd.f32(float %1078, float %mul.i585.2.1, float 1.000000e+00) #5
%1081 = tail call float @llvm.fmuladd.f32(float %1079, float %mul220.2.1, float %1080) #5
%div.i586.2.1 = fdiv float 1.000000e+00, %1081, !fpmath !46
%1082 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i585.2.1, float 0xBF0BFF7260000000) #5
%1083 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i585.2.1, float 0x3F50794180000000) #5
%1084 = tail call float @llvm.fmuladd.f32(float %1082, float %mul.i585.2.1, float 0xBF93BDB200000000) #5
%1085 = tail call float @llvm.fmuladd.f32(float %1083, float %mul.i585.2.1, float 0x3FB1D5E760000000) #5
%1086 = tail call float @llvm.fmuladd.f32(float %1084, float %mul.i585.2.1, float 0xBFE81272E0000000) #5
%1087 = tail call float @llvm.fmuladd.f32(float %1085, float %mul220.2.1, float %1086) #5
%mul11.i.2.1 = fmul float %1087, %div.i586.2.1
%mul222.2.1 = fmul float %mul19, %mul11.i.2.1
%1088 = tail call float @llvm.fmuladd.f32(float %mul218.2.1, float %div196.2.1, float %mul222.2.1)
%1089 = tail call float @llvm.fmuladd.f32(float %mul217.2.1, float %1088, float %mul203.2.1)
%mul225.2.1 = fmul float %1074, %div196.2.1
%mul226.2.1 = fmul float %mul225.2.1, %nbparam_params_ewald_beta
%fabs.i.2.1 = tail call float @llvm.fabs.f32(float %mul226.2.1) #5
%and.i.2.1 = bitcast float %fabs.i.2.1 to i32
%mul.i.2.1 = fmul float %mul226.2.1, %mul226.2.1
%div.i.2.1 = fdiv float 1.000000e+00, %mul.i.2.1, !fpmath !46
%sub.i.2.1 = fadd float %fabs.i.2.1, -1.000000e+00
%cmp.i583.2.1 = fcmp olt float %fabs.i.2.1, 1.250000e+00
%cond.i.2.1 = select i1 %cmp.i583.2.1, float %sub.i.2.1, float %div.i.2.1
%cmp2.i.2.1 = fcmp olt float %fabs.i.2.1, 8.437500e-01
%cond6.i.2.1 = select i1 %cmp2.i.2.1, float %mul.i.2.1, float %cond.i.2.1
%1090 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.1, float 0xC07E384EA0000000, float 0xC090046160000000) #5
%1091 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.1, float %1090, float 0xC083EC8820000000) #5
%1092 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.1, float %1091, float 0xC064145D40000000) #5
%1093 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.1, float %1092, float 0xC031C20960000000) #5
%1094 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.1, float %1093, float 0xBFE993BA80000000) #5
%1095 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.1, float %1094, float 0xBF84341240000000) #5
%1096 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.1, float 0xC03670E240000000, float 0x407DA874E0000000) #5
%1097 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.1, float %1096, float 0x40A3F219C0000000) #5
%1098 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.1, float %1097, float 0x40A8FFB760000000) #5
%1099 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.1, float %1098, float 0x409802EB20000000) #5
%1100 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.1, float %1099, float 0x40745CAE20000000) #5
%1101 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.1, float %1100, float 0x403E568B20000000) #5
%1102 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.1, float 0xC023A0EFC0000000, float 0xC054526560000000) #5
%1103 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.1, float %1102, float 0xC067135CE0000000) #5
%1104 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.1, float %1103, float 0xC0644CB180000000) #5
%1105 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.1, float %1104, float 0xC04F300AE0000000) #5
%1106 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.1, float %1105, float 0xC0251E0440000000) #5
%1107 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.1, float %1106, float 0xBFE63416E0000000) #5
%1108 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.1, float %1107, float 0xBF84341260000000) #5
%1109 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.1, float 0xBFAEEFF2E0000000, float 0x401A47EF80000000) #5
%1110 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.1, float %1109, float 0x405B28A3E0000000) #5
%1111 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.1, float %1110, float 0x407AD02160000000) #5
%1112 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.1, float %1111, float 0x40842B1920000000) #5
%1113 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.1, float %1112, float 0x407B290DE0000000) #5
%1114 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.1, float %1113, float 0x4061350C60000000) #5
%1115 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.1, float %1114, float 0x4033A6B9C0000000) #5
%cmp32.i.2.1 = fcmp olt float %fabs.i.2.1, 0x4006DB6DA0000000
%cond36.i.2.1 = select i1 %cmp32.i.2.1, float %1108, float %1095
%cond41.i.2.1 = select i1 %cmp32.i.2.1, float %1115, float %1101
%1116 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.1, float 0xBF61BF3800000000, float 0x3FA22A3660000000) #5
%1117 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.1, float %1116, float 0xBFBC639840000000) #5
%1118 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.1, float %1117, float 0x3FD45FCA80000000) #5
%1119 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.1, float %1118, float 0xBFD7D24100000000) #5
%1120 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.1, float %1119, float 0x3FDA8D00A0000000) #5
%1121 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.1, float %1120, float 0xBF6359B8C0000000) #5
%1122 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.1, float 0x3F888B5460000000, float 0x3F8BEDC260000000) #5
%1123 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.1, float %1122, float 0x3FC02660E0000000) #5
%1124 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.1, float %1123, float 0x3FB2635CE0000000) #5
%1125 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.1, float %1124, float 0x3FE14AF0A0000000) #5
%1126 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.1, float %1125, float 0x3FBB3E6620000000) #5
%cond57.i.2.1 = select i1 %cmp.i583.2.1, float %1121, float %cond36.i.2.1
%cond62.i.2.1 = select i1 %cmp.i583.2.1, float %1126, float %cond41.i.2.1
%1127 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.1, float 0xBEF8EAD620000000, float 0xBF77A29120000000) #5
%1128 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.1, float %1127, float 0xBF9D2A51E0000000) #5
%1129 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.1, float %1128, float 0xBFD4CD7D60000000) #5
%1130 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.1, float %1129, float 0x3FC06EBA80000000) #5
%1131 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.1, float 0xBED09C4340000000, float 0x3F215DC920000000) #5
%1132 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.1, float %1131, float 0x3F74D022C0000000) #5
%1133 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.1, float %1132, float 0x3FB0A54C60000000) #5
%1134 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.1, float %1133, float 0x3FD97779C0000000) #5
%cond75.i.2.1 = select i1 %cmp2.i.2.1, float %1130, float %cond57.i.2.1
%cond80.i.2.1 = select i1 %cmp2.i.2.1, float %1134, float %cond62.i.2.1
%1135 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.1, float %cond80.i.2.1, float 1.000000e+00) #5
%div82.i.2.1 = fdiv float %cond75.i.2.1, %1135, !fpmath !46
%and83.i.2.1 = and i32 %and.i.2.1, -4096
%astype84.i.2.1 = bitcast i32 %and83.i.2.1 to float
%sub85.i.2.1 = fsub float -0.000000e+00, %astype84.i.2.1
%1136 = tail call float @llvm.fmuladd.f32(float %sub85.i.2.1, float %astype84.i.2.1, float -5.625000e-01) #5
%cmp.i2.i.2.1 = fcmp olt float %1136, 0.000000e+00
%cond.i3.i.2.1 = select i1 %cmp.i2.i.2.1, float -5.000000e-01, float 5.000000e-01
%1137 = tail call float @llvm.fmuladd.f32(float %1136, float 0x3FF7154760000000, float %cond.i3.i.2.1) #5
%conv.i4.i.2.1 = fptosi float %1137 to i32
%conv1.i5.i.2.1 = sitofp i32 %conv.i4.i.2.1 to float
%1138 = tail call float @llvm.fmuladd.f32(float %conv1.i5.i.2.1, float 0xBFE62E3000000000, float %1136) #5
%mul.i6.i.2.1 = fmul float %conv1.i5.i.2.1, 0xBEE2FEFA20000000
%add.i7.i.2.1 = fadd float %1138, %mul.i6.i.2.1
%mul3.i8.i.2.1 = fmul float %add.i7.i.2.1, %add.i7.i.2.1
%1139 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.2.1, float 0x3E66376980000000, float 0xBEBBBD41C0000000) #5
%1140 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.2.1, float %1139, float 0x3F11566AA0000000) #5
%1141 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.2.1, float %1140, float 0xBF66C16C20000000) #5
%1142 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.2.1, float %1141, float 0x3FC5555560000000) #5
%sub8.i9.i.2.1 = fsub float -0.000000e+00, %1142
%1143 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.2.1, float %sub8.i9.i.2.1, float %add.i7.i.2.1) #5
%sub10.i10.i.2.1 = fsub float -0.000000e+00, %mul.i6.i.2.1
%mul11.i11.i.2.1 = fmul float %add.i7.i.2.1, %1143
%sub12.i12.i.2.1 = fsub float 2.000000e+00, %1143
%div.i13.i.2.1 = fdiv float %mul11.i11.i.2.1, %sub12.i12.i.2.1, !fpmath !46
%sub13.i14.i.2.1 = fsub float %sub10.i10.i.2.1, %div.i13.i.2.1
%sub14.i15.i.2.1 = fsub float %sub13.i14.i.2.1, %1138
%sub15.i16.i.2.1 = fsub float 1.000000e+00, %sub14.i15.i.2.1
%astype.i17.i.2.1 = bitcast float %sub15.i16.i.2.1 to i32
%shl.i18.i.2.1 = shl i32 %conv.i4.i.2.1, 23
%add16.i19.i.2.1 = add nsw i32 %astype.i17.i.2.1, %shl.i18.i.2.1
%astype17.i20.i.2.1 = bitcast i32 %add16.i19.i.2.1 to float
%cmp18.i21.i.2.1 = fcmp olt float %1136, 0xC055D589E0000000
%cond20.i22.i.2.1 = select i1 %cmp18.i21.i.2.1, float 0.000000e+00, float %astype17.i20.i.2.1
%cmp21.i23.i.2.1 = fcmp olt float %1136, 0x40562E4300000000
%cond26.i24.i.2.1 = select i1 %cmp21.i23.i.2.1, float %cond20.i22.i.2.1, float 0x7FF0000000000000
%cmp.i.i25.i.2.1 = fcmp uno float %1136, 0.000000e+00
%cond31.i26.i.2.1 = select i1 %cmp.i.i25.i.2.1, float %1136, float %cond26.i24.i.2.1
%sub88.i.2.1 = fsub float %astype84.i.2.1, %fabs.i.2.1
%add.i584.2.1 = fadd float %fabs.i.2.1, %astype84.i.2.1
%1144 = tail call float @llvm.fmuladd.f32(float %sub88.i.2.1, float %add.i584.2.1, float %div82.i.2.1) #5
%cmp.i1.i.2.1 = fcmp olt float %1144, 0.000000e+00
%cond.i.i.2.1 = select i1 %cmp.i1.i.2.1, float -5.000000e-01, float 5.000000e-01
%1145 = tail call float @llvm.fmuladd.f32(float %1144, float 0x3FF7154760000000, float %cond.i.i.2.1) #5
%conv.i.i.2.1 = fptosi float %1145 to i32
%conv1.i.i.2.1 = sitofp i32 %conv.i.i.2.1 to float
%1146 = tail call float @llvm.fmuladd.f32(float %conv1.i.i.2.1, float 0xBFE62E3000000000, float %1144) #5
%mul.i.i.2.1 = fmul float %conv1.i.i.2.1, 0xBEE2FEFA20000000
%add.i.i.2.1 = fadd float %1146, %mul.i.i.2.1
%mul3.i.i.2.1 = fmul float %add.i.i.2.1, %add.i.i.2.1
%1147 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.2.1, float 0x3E66376980000000, float 0xBEBBBD41C0000000) #5
%1148 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.2.1, float %1147, float 0x3F11566AA0000000) #5
%1149 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.2.1, float %1148, float 0xBF66C16C20000000) #5
%1150 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.2.1, float %1149, float 0x3FC5555560000000) #5
%sub8.i.i.2.1 = fsub float -0.000000e+00, %1150
%1151 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.2.1, float %sub8.i.i.2.1, float %add.i.i.2.1) #5
%sub10.i.i.2.1 = fsub float -0.000000e+00, %mul.i.i.2.1
%mul11.i.i.2.1 = fmul float %add.i.i.2.1, %1151
%sub12.i.i.2.1 = fsub float 2.000000e+00, %1151
%div.i.i.2.1 = fdiv float %mul11.i.i.2.1, %sub12.i.i.2.1, !fpmath !46
%sub13.i.i.2.1 = fsub float %sub10.i.i.2.1, %div.i.i.2.1
%sub14.i.i.2.1 = fsub float %sub13.i.i.2.1, %1146
%sub15.i.i.2.1 = fsub float 1.000000e+00, %sub14.i.i.2.1
%astype.i.i.2.1 = bitcast float %sub15.i.i.2.1 to i32
%shl.i.i.2.1 = shl i32 %conv.i.i.2.1, 23
%add16.i.i.2.1 = add nsw i32 %astype.i.i.2.1, %shl.i.i.2.1
%astype17.i.i.2.1 = bitcast i32 %add16.i.i.2.1 to float
%cmp18.i.i.2.1 = fcmp olt float %1144, 0xC055D589E0000000
%cond20.i.i.2.1 = select i1 %cmp18.i.i.2.1, float 0.000000e+00, float %astype17.i.i.2.1
%cmp21.i.i.2.1 = fcmp olt float %1144, 0x40562E4300000000
%cond26.i.i.2.1 = select i1 %cmp21.i.i.2.1, float %cond20.i.i.2.1, float 0x7FF0000000000000
%cmp.i.i.i.2.1 = fcmp uno float %1144, 0.000000e+00
%cond31.i.i.2.1 = select i1 %cmp.i.i.i.2.1, float %1144, float %cond26.i.i.2.1
%mul91.i.2.1 = fmul float %cond31.i26.i.2.1, %cond31.i.i.2.1
%div92.i.2.1 = fdiv float %mul91.i.2.1, %fabs.i.2.1, !fpmath !46
%sub93.i.2.1 = fsub float 2.000000e+00, %div92.i.2.1
%cmp94.i.2.1 = fcmp olt float %mul226.2.1, 0.000000e+00
%cond98.i.2.1 = select i1 %cmp94.i.2.1, float %sub93.i.2.1, float %div92.i.2.1
%cmp99.i.2.1 = fcmp olt float %fabs.i.2.1, 2.800000e+01
%cond103.i.2.1 = select i1 %cmp99.i.2.1, float %cond98.i.2.1, float 0.000000e+00
%sub104.i.2.1 = fsub float 0x3FC3D4FA80000000, %div82.i.2.1
%add105.i.2.1 = fadd float %div82.i.2.1, 0x3FEB0AC160000000
%add106.i.2.1 = fadd float %add105.i.2.1, 1.000000e+00
%cond111.i.2.1 = select i1 %cmp94.i.2.1, float %add106.i.2.1, float %sub104.i.2.1
%cond116.i.2.1 = select i1 %cmp.i583.2.1, float %cond111.i.2.1, float %cond103.i.2.1
%sub117.i.2.1 = fadd float %mul226.2.1, -5.000000e-01
%1152 = tail call float @llvm.fmuladd.f32(float %mul226.2.1, float %div82.i.2.1, float %sub117.i.2.1) #5
%sub119.i.2.1 = fsub float 5.000000e-01, %1152
%cond124.i.2.1 = select i1 %cmp2.i.2.1, float %sub119.i.2.1, float %cond116.i.2.1
%cmp125.i.2.1 = fcmp olt float %mul226.2.1, -6.000000e+00
%cond129.i.2.1 = select i1 %cmp125.i.2.1, float 2.000000e+00, float %cond124.i.2.1
%cmp.i.i.2.1 = fcmp uno float %mul226.2.1, 0.000000e+00
%cond134.i.2.1 = select i1 %cmp.i.i.2.1, float %mul226.2.1, float %cond129.i.2.1
%mul229.2.1 = fmul float %cond.2.1, %nbparam_params_sh_ewald
%neg230.2.1 = fsub float -0.000000e+00, %mul229.2.1
%1153 = tail call float @llvm.fmuladd.f32(float %div196.2.1, float %cond134.i.2.1, float %neg230.2.1)
%1154 = tail call float @llvm.fmuladd.f32(float %mul217.2.1, float %1153, float %E_el.5.1.1)
%splat.splatinsert.2.1 = insertelement <3 x float> undef, float %1089, i32 0
%splat.splat.2.1 = shufflevector <3 x float> %splat.splatinsert.2.1, <3 x float> undef, <3 x i32> zeroinitializer
%mul235.2.1 = fmul <3 x float> %extractVec166.2.1, %splat.splat.2.1
%extractVec243.2.1 = shufflevector <4 x float> %fcj_buf.sroa.0.1.1.1, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub244.2.1 = fsub <3 x float> %extractVec243.2.1, %mul235.2.1
%extractVec245.2.1 = shufflevector <3 x float> %sub244.2.1, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec253.2.1 = shufflevector <4 x float> %fci_buf.sroa.22.1, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add254.2.1 = fadd <3 x float> %extractVec253.2.1, %mul235.2.1
%extractVec255.2.1 = shufflevector <3 x float> %add254.2.1, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end258.2.1
if.end258.2.1: ; preds = %if.then182.2.1, %if.then147.2.1, %if.end258.1.1
%fci_buf.sroa.22.4 = phi <4 x float> [ %fci_buf.sroa.22.1, %if.end258.1.1 ], [ %extractVec255.2.1, %if.then182.2.1 ], [ %fci_buf.sroa.22.1, %if.then147.2.1 ]
%E_el.5.2.1 = phi float [ %E_el.5.1.1, %if.end258.1.1 ], [ %1154, %if.then182.2.1 ], [ %E_el.5.1.1, %if.then147.2.1 ]
%E_lj.3.2.1 = phi float [ %E_lj.3.1.1, %if.end258.1.1 ], [ %add216.2.1, %if.then182.2.1 ], [ %E_lj.3.1.1, %if.then147.2.1 ]
%fcj_buf.sroa.0.1.2.1 = phi <4 x float> [ %fcj_buf.sroa.0.1.1.1, %if.end258.1.1 ], [ %extractVec245.2.1, %if.then182.2.1 ], [ %fcj_buf.sroa.0.1.1.1, %if.then147.2.1 ]
%and145.3.1 = and i32 %64, 2048
%tobool146.3.1 = icmp eq i32 %and145.3.1, 0
br i1 %tobool146.3.1, label %if.end258.3.1, label %if.then147.3.1
if.then147.3.1: ; preds = %if.end258.2.1
%1155 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx154.3.3, align 16, !tbaa !36
%1156 = fsub <4 x float> %1155, %870
%1157 = extractelement <4 x float> %1156, i32 0
%1158 = extractelement <4 x float> %1156, i32 1
%mul3.i.i589.3.1 = fmul float %1158, %1158
%1159 = tail call float @llvm.fmuladd.f32(float %1157, float %1157, float %mul3.i.i589.3.1) #5
%1160 = extractelement <4 x float> %1156, i32 2
%1161 = tail call float @llvm.fmuladd.f32(float %1160, float %1160, float %1159) #5
%and168.3.1 = and i32 %66, 2048
%tobool169.3.1 = icmp ne i32 %and168.3.1, 0
%cond.3.1 = select i1 %tobool169.3.1, float 1.000000e+00, float 0.000000e+00
%cmp174.3.1 = icmp eq i32 %56, %868
%or.cond.3.1 = and i1 %cmp63, %cmp174.3.1
%not.or.cond.3.1 = xor i1 %or.cond.3.1, true
%cmp176..3.1 = or i1 %cmp176, %not.or.cond.3.1
%conv178.3.1 = uitofp i1 %cmp176..3.1 to float
%mul179.3.1 = fmul float %conv178.3.1, %nbparam_params_rcoulomb_sq
%cmp180.3.1 = fcmp olt float %1161, %mul179.3.1
br i1 %cmp180.3.1, label %if.then182.3.1, label %if.end258.3.1
if.then182.3.1: ; preds = %if.then147.3.1
%extractVec166.3.1 = shufflevector <4 x float> %1156, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%1162 = extractelement <4 x float> %1155, i32 3
%1163 = load i32, i32 addrspace(1)* %arrayidx183.3.3, align 4, !tbaa !41
%mul184.3.1 = mul nsw i32 %1163, %ntypes
%add185.3.1 = add nsw i32 %mul184.3.1, %872
%mul186.3.1 = shl nsw i32 %add185.3.1, 1
%1164 = sext i32 %mul186.3.1 to i64
%arrayidx187.3.1 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %1164
%1165 = load float, float addrspace(2)* %arrayidx187.3.1, align 4, !tbaa !39
%add191.3.1 = or i32 %mul186.3.1, 1
%1166 = sext i32 %add191.3.1 to i64
%arrayidx192.3.1 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %1166
%1167 = load float, float addrspace(2)* %arrayidx192.3.1, align 4, !tbaa !39
%sub193.3.1 = fsub float 1.000000e+00, %cond.3.1
%1168 = tail call float @llvm.fmuladd.f32(float %sub193.3.1, float 0x3D71979980000000, float %1161)
%cmp.i.i587.3.1 = fcmp olt float %1168, 0.000000e+00
%call.i.i.3.1 = tail call float @llvm.sqrt.f32(float %1168) #6
%call.i.i.op.3.1 = fdiv float 1.000000e+00, %call.i.i.3.1
%div196.3.1 = select i1 %cmp.i.i587.3.1, float 0x7FF8000000000000, float %call.i.i.op.3.1
%mul197.3.1 = fmul float %div196.3.1, %div196.3.1
%mul198.3.1 = fmul float %mul197.3.1, %mul197.3.1
%mul199.3.1 = fmul float %mul197.3.1, %mul198.3.1
%mul200.3.1 = fmul float %cond.3.1, %mul199.3.1
%neg.3.1 = fsub float -0.000000e+00, %1165
%1169 = tail call float @llvm.fmuladd.f32(float %1167, float %mul200.3.1, float %neg.3.1)
%mul202.3.1 = fmul float %mul200.3.1, %1169
%mul203.3.1 = fmul float %mul197.3.1, %mul202.3.1
%1170 = tail call float @llvm.fmuladd.f32(float %mul200.3.1, float %mul200.3.1, float %nbparam_params_repulsion_shift_cpot)
%mul207.3.1 = fmul float %1170, %1167
%add211.3.1 = fadd float %mul200.3.1, %nbparam_params_dispersion_shift_cpot
%mul212.3.1 = fmul float %add211.3.1, %1165
%mul213.3.1 = fmul float %mul212.3.1, 0x3FC5555560000000
%neg214.3.1 = fsub float -0.000000e+00, %mul213.3.1
%1171 = tail call float @llvm.fmuladd.f32(float %mul207.3.1, float 0x3FB5555540000000, float %neg214.3.1)
%mul215.3.1 = fmul float %cond.3.1, %1171
%add216.3.1 = fadd float %E_lj.3.2.1, %mul215.3.1
%mul217.3.1 = fmul float %871, %1162
%mul218.3.1 = fmul float %cond.3.1, %mul197.3.1
%mul220.3.1 = fmul float %mul, %1168
%mul.i585.3.1 = fmul float %mul220.3.1, %mul220.3.1
%1172 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i585.3.1, float 0x3FBDA79640000000) #5
%1173 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i585.3.1, float 0x3FE03C5780000000) #5
%1174 = tail call float @llvm.fmuladd.f32(float %1172, float %mul.i585.3.1, float 1.000000e+00) #5
%1175 = tail call float @llvm.fmuladd.f32(float %1173, float %mul220.3.1, float %1174) #5
%div.i586.3.1 = fdiv float 1.000000e+00, %1175, !fpmath !46
%1176 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i585.3.1, float 0xBF0BFF7260000000) #5
%1177 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i585.3.1, float 0x3F50794180000000) #5
%1178 = tail call float @llvm.fmuladd.f32(float %1176, float %mul.i585.3.1, float 0xBF93BDB200000000) #5
%1179 = tail call float @llvm.fmuladd.f32(float %1177, float %mul.i585.3.1, float 0x3FB1D5E760000000) #5
%1180 = tail call float @llvm.fmuladd.f32(float %1178, float %mul.i585.3.1, float 0xBFE81272E0000000) #5
%1181 = tail call float @llvm.fmuladd.f32(float %1179, float %mul220.3.1, float %1180) #5
%mul11.i.3.1 = fmul float %1181, %div.i586.3.1
%mul222.3.1 = fmul float %mul19, %mul11.i.3.1
%1182 = tail call float @llvm.fmuladd.f32(float %mul218.3.1, float %div196.3.1, float %mul222.3.1)
%1183 = tail call float @llvm.fmuladd.f32(float %mul217.3.1, float %1182, float %mul203.3.1)
%mul225.3.1 = fmul float %1168, %div196.3.1
%mul226.3.1 = fmul float %mul225.3.1, %nbparam_params_ewald_beta
%fabs.i.3.1 = tail call float @llvm.fabs.f32(float %mul226.3.1) #5
%and.i.3.1 = bitcast float %fabs.i.3.1 to i32
%mul.i.3.1 = fmul float %mul226.3.1, %mul226.3.1
%div.i.3.1 = fdiv float 1.000000e+00, %mul.i.3.1, !fpmath !46
%sub.i.3.1 = fadd float %fabs.i.3.1, -1.000000e+00
%cmp.i583.3.1 = fcmp olt float %fabs.i.3.1, 1.250000e+00
%cond.i.3.1 = select i1 %cmp.i583.3.1, float %sub.i.3.1, float %div.i.3.1
%cmp2.i.3.1 = fcmp olt float %fabs.i.3.1, 8.437500e-01
%cond6.i.3.1 = select i1 %cmp2.i.3.1, float %mul.i.3.1, float %cond.i.3.1
%1184 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.1, float 0xC07E384EA0000000, float 0xC090046160000000) #5
%1185 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.1, float %1184, float 0xC083EC8820000000) #5
%1186 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.1, float %1185, float 0xC064145D40000000) #5
%1187 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.1, float %1186, float 0xC031C20960000000) #5
%1188 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.1, float %1187, float 0xBFE993BA80000000) #5
%1189 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.1, float %1188, float 0xBF84341240000000) #5
%1190 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.1, float 0xC03670E240000000, float 0x407DA874E0000000) #5
%1191 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.1, float %1190, float 0x40A3F219C0000000) #5
%1192 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.1, float %1191, float 0x40A8FFB760000000) #5
%1193 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.1, float %1192, float 0x409802EB20000000) #5
%1194 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.1, float %1193, float 0x40745CAE20000000) #5
%1195 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.1, float %1194, float 0x403E568B20000000) #5
%1196 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.1, float 0xC023A0EFC0000000, float 0xC054526560000000) #5
%1197 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.1, float %1196, float 0xC067135CE0000000) #5
%1198 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.1, float %1197, float 0xC0644CB180000000) #5
%1199 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.1, float %1198, float 0xC04F300AE0000000) #5
%1200 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.1, float %1199, float 0xC0251E0440000000) #5
%1201 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.1, float %1200, float 0xBFE63416E0000000) #5
%1202 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.1, float %1201, float 0xBF84341260000000) #5
%1203 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.1, float 0xBFAEEFF2E0000000, float 0x401A47EF80000000) #5
%1204 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.1, float %1203, float 0x405B28A3E0000000) #5
%1205 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.1, float %1204, float 0x407AD02160000000) #5
%1206 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.1, float %1205, float 0x40842B1920000000) #5
%1207 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.1, float %1206, float 0x407B290DE0000000) #5
%1208 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.1, float %1207, float 0x4061350C60000000) #5
%1209 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.1, float %1208, float 0x4033A6B9C0000000) #5
%cmp32.i.3.1 = fcmp olt float %fabs.i.3.1, 0x4006DB6DA0000000
%cond36.i.3.1 = select i1 %cmp32.i.3.1, float %1202, float %1189
%cond41.i.3.1 = select i1 %cmp32.i.3.1, float %1209, float %1195
%1210 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.1, float 0xBF61BF3800000000, float 0x3FA22A3660000000) #5
%1211 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.1, float %1210, float 0xBFBC639840000000) #5
%1212 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.1, float %1211, float 0x3FD45FCA80000000) #5
%1213 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.1, float %1212, float 0xBFD7D24100000000) #5
%1214 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.1, float %1213, float 0x3FDA8D00A0000000) #5
%1215 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.1, float %1214, float 0xBF6359B8C0000000) #5
%1216 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.1, float 0x3F888B5460000000, float 0x3F8BEDC260000000) #5
%1217 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.1, float %1216, float 0x3FC02660E0000000) #5
%1218 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.1, float %1217, float 0x3FB2635CE0000000) #5
%1219 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.1, float %1218, float 0x3FE14AF0A0000000) #5
%1220 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.1, float %1219, float 0x3FBB3E6620000000) #5
%cond57.i.3.1 = select i1 %cmp.i583.3.1, float %1215, float %cond36.i.3.1
%cond62.i.3.1 = select i1 %cmp.i583.3.1, float %1220, float %cond41.i.3.1
%1221 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.1, float 0xBEF8EAD620000000, float 0xBF77A29120000000) #5
%1222 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.1, float %1221, float 0xBF9D2A51E0000000) #5
%1223 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.1, float %1222, float 0xBFD4CD7D60000000) #5
%1224 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.1, float %1223, float 0x3FC06EBA80000000) #5
%1225 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.1, float 0xBED09C4340000000, float 0x3F215DC920000000) #5
%1226 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.1, float %1225, float 0x3F74D022C0000000) #5
%1227 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.1, float %1226, float 0x3FB0A54C60000000) #5
%1228 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.1, float %1227, float 0x3FD97779C0000000) #5
%cond75.i.3.1 = select i1 %cmp2.i.3.1, float %1224, float %cond57.i.3.1
%cond80.i.3.1 = select i1 %cmp2.i.3.1, float %1228, float %cond62.i.3.1
%1229 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.1, float %cond80.i.3.1, float 1.000000e+00) #5
%div82.i.3.1 = fdiv float %cond75.i.3.1, %1229, !fpmath !46
%and83.i.3.1 = and i32 %and.i.3.1, -4096
%astype84.i.3.1 = bitcast i32 %and83.i.3.1 to float
%sub85.i.3.1 = fsub float -0.000000e+00, %astype84.i.3.1
%1230 = tail call float @llvm.fmuladd.f32(float %sub85.i.3.1, float %astype84.i.3.1, float -5.625000e-01) #5
%cmp.i2.i.3.1 = fcmp olt float %1230, 0.000000e+00
%cond.i3.i.3.1 = select i1 %cmp.i2.i.3.1, float -5.000000e-01, float 5.000000e-01
%1231 = tail call float @llvm.fmuladd.f32(float %1230, float 0x3FF7154760000000, float %cond.i3.i.3.1) #5
%conv.i4.i.3.1 = fptosi float %1231 to i32
%conv1.i5.i.3.1 = sitofp i32 %conv.i4.i.3.1 to float
%1232 = tail call float @llvm.fmuladd.f32(float %conv1.i5.i.3.1, float 0xBFE62E3000000000, float %1230) #5
%mul.i6.i.3.1 = fmul float %conv1.i5.i.3.1, 0xBEE2FEFA20000000
%add.i7.i.3.1 = fadd float %1232, %mul.i6.i.3.1
%mul3.i8.i.3.1 = fmul float %add.i7.i.3.1, %add.i7.i.3.1
%1233 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.3.1, float 0x3E66376980000000, float 0xBEBBBD41C0000000) #5
%1234 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.3.1, float %1233, float 0x3F11566AA0000000) #5
%1235 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.3.1, float %1234, float 0xBF66C16C20000000) #5
%1236 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.3.1, float %1235, float 0x3FC5555560000000) #5
%sub8.i9.i.3.1 = fsub float -0.000000e+00, %1236
%1237 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.3.1, float %sub8.i9.i.3.1, float %add.i7.i.3.1) #5
%sub10.i10.i.3.1 = fsub float -0.000000e+00, %mul.i6.i.3.1
%mul11.i11.i.3.1 = fmul float %add.i7.i.3.1, %1237
%sub12.i12.i.3.1 = fsub float 2.000000e+00, %1237
%div.i13.i.3.1 = fdiv float %mul11.i11.i.3.1, %sub12.i12.i.3.1, !fpmath !46
%sub13.i14.i.3.1 = fsub float %sub10.i10.i.3.1, %div.i13.i.3.1
%sub14.i15.i.3.1 = fsub float %sub13.i14.i.3.1, %1232
%sub15.i16.i.3.1 = fsub float 1.000000e+00, %sub14.i15.i.3.1
%astype.i17.i.3.1 = bitcast float %sub15.i16.i.3.1 to i32
%shl.i18.i.3.1 = shl i32 %conv.i4.i.3.1, 23
%add16.i19.i.3.1 = add nsw i32 %astype.i17.i.3.1, %shl.i18.i.3.1
%astype17.i20.i.3.1 = bitcast i32 %add16.i19.i.3.1 to float
%cmp18.i21.i.3.1 = fcmp olt float %1230, 0xC055D589E0000000
%cond20.i22.i.3.1 = select i1 %cmp18.i21.i.3.1, float 0.000000e+00, float %astype17.i20.i.3.1
%cmp21.i23.i.3.1 = fcmp olt float %1230, 0x40562E4300000000
%cond26.i24.i.3.1 = select i1 %cmp21.i23.i.3.1, float %cond20.i22.i.3.1, float 0x7FF0000000000000
%cmp.i.i25.i.3.1 = fcmp uno float %1230, 0.000000e+00
%cond31.i26.i.3.1 = select i1 %cmp.i.i25.i.3.1, float %1230, float %cond26.i24.i.3.1
%sub88.i.3.1 = fsub float %astype84.i.3.1, %fabs.i.3.1
%add.i584.3.1 = fadd float %fabs.i.3.1, %astype84.i.3.1
%1238 = tail call float @llvm.fmuladd.f32(float %sub88.i.3.1, float %add.i584.3.1, float %div82.i.3.1) #5
%cmp.i1.i.3.1 = fcmp olt float %1238, 0.000000e+00
%cond.i.i.3.1 = select i1 %cmp.i1.i.3.1, float -5.000000e-01, float 5.000000e-01
%1239 = tail call float @llvm.fmuladd.f32(float %1238, float 0x3FF7154760000000, float %cond.i.i.3.1) #5
%conv.i.i.3.1 = fptosi float %1239 to i32
%conv1.i.i.3.1 = sitofp i32 %conv.i.i.3.1 to float
%1240 = tail call float @llvm.fmuladd.f32(float %conv1.i.i.3.1, float 0xBFE62E3000000000, float %1238) #5
%mul.i.i.3.1 = fmul float %conv1.i.i.3.1, 0xBEE2FEFA20000000
%add.i.i.3.1 = fadd float %1240, %mul.i.i.3.1
%mul3.i.i.3.1 = fmul float %add.i.i.3.1, %add.i.i.3.1
%1241 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.3.1, float 0x3E66376980000000, float 0xBEBBBD41C0000000) #5
%1242 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.3.1, float %1241, float 0x3F11566AA0000000) #5
%1243 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.3.1, float %1242, float 0xBF66C16C20000000) #5
%1244 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.3.1, float %1243, float 0x3FC5555560000000) #5
%sub8.i.i.3.1 = fsub float -0.000000e+00, %1244
%1245 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.3.1, float %sub8.i.i.3.1, float %add.i.i.3.1) #5
%sub10.i.i.3.1 = fsub float -0.000000e+00, %mul.i.i.3.1
%mul11.i.i.3.1 = fmul float %add.i.i.3.1, %1245
%sub12.i.i.3.1 = fsub float 2.000000e+00, %1245
%div.i.i.3.1 = fdiv float %mul11.i.i.3.1, %sub12.i.i.3.1, !fpmath !46
%sub13.i.i.3.1 = fsub float %sub10.i.i.3.1, %div.i.i.3.1
%sub14.i.i.3.1 = fsub float %sub13.i.i.3.1, %1240
%sub15.i.i.3.1 = fsub float 1.000000e+00, %sub14.i.i.3.1
%astype.i.i.3.1 = bitcast float %sub15.i.i.3.1 to i32
%shl.i.i.3.1 = shl i32 %conv.i.i.3.1, 23
%add16.i.i.3.1 = add nsw i32 %astype.i.i.3.1, %shl.i.i.3.1
%astype17.i.i.3.1 = bitcast i32 %add16.i.i.3.1 to float
%cmp18.i.i.3.1 = fcmp olt float %1238, 0xC055D589E0000000
%cond20.i.i.3.1 = select i1 %cmp18.i.i.3.1, float 0.000000e+00, float %astype17.i.i.3.1
%cmp21.i.i.3.1 = fcmp olt float %1238, 0x40562E4300000000
%cond26.i.i.3.1 = select i1 %cmp21.i.i.3.1, float %cond20.i.i.3.1, float 0x7FF0000000000000
%cmp.i.i.i.3.1 = fcmp uno float %1238, 0.000000e+00
%cond31.i.i.3.1 = select i1 %cmp.i.i.i.3.1, float %1238, float %cond26.i.i.3.1
%mul91.i.3.1 = fmul float %cond31.i26.i.3.1, %cond31.i.i.3.1
%div92.i.3.1 = fdiv float %mul91.i.3.1, %fabs.i.3.1, !fpmath !46
%sub93.i.3.1 = fsub float 2.000000e+00, %div92.i.3.1
%cmp94.i.3.1 = fcmp olt float %mul226.3.1, 0.000000e+00
%cond98.i.3.1 = select i1 %cmp94.i.3.1, float %sub93.i.3.1, float %div92.i.3.1
%cmp99.i.3.1 = fcmp olt float %fabs.i.3.1, 2.800000e+01
%cond103.i.3.1 = select i1 %cmp99.i.3.1, float %cond98.i.3.1, float 0.000000e+00
%sub104.i.3.1 = fsub float 0x3FC3D4FA80000000, %div82.i.3.1
%add105.i.3.1 = fadd float %div82.i.3.1, 0x3FEB0AC160000000
%add106.i.3.1 = fadd float %add105.i.3.1, 1.000000e+00
%cond111.i.3.1 = select i1 %cmp94.i.3.1, float %add106.i.3.1, float %sub104.i.3.1
%cond116.i.3.1 = select i1 %cmp.i583.3.1, float %cond111.i.3.1, float %cond103.i.3.1
%sub117.i.3.1 = fadd float %mul226.3.1, -5.000000e-01
%1246 = tail call float @llvm.fmuladd.f32(float %mul226.3.1, float %div82.i.3.1, float %sub117.i.3.1) #5
%sub119.i.3.1 = fsub float 5.000000e-01, %1246
%cond124.i.3.1 = select i1 %cmp2.i.3.1, float %sub119.i.3.1, float %cond116.i.3.1
%cmp125.i.3.1 = fcmp olt float %mul226.3.1, -6.000000e+00
%cond129.i.3.1 = select i1 %cmp125.i.3.1, float 2.000000e+00, float %cond124.i.3.1
%cmp.i.i.3.1 = fcmp uno float %mul226.3.1, 0.000000e+00
%cond134.i.3.1 = select i1 %cmp.i.i.3.1, float %mul226.3.1, float %cond129.i.3.1
%mul229.3.1 = fmul float %cond.3.1, %nbparam_params_sh_ewald
%neg230.3.1 = fsub float -0.000000e+00, %mul229.3.1
%1247 = tail call float @llvm.fmuladd.f32(float %div196.3.1, float %cond134.i.3.1, float %neg230.3.1)
%1248 = tail call float @llvm.fmuladd.f32(float %mul217.3.1, float %1247, float %E_el.5.2.1)
%splat.splatinsert.3.1 = insertelement <3 x float> undef, float %1183, i32 0
%splat.splat.3.1 = shufflevector <3 x float> %splat.splatinsert.3.1, <3 x float> undef, <3 x i32> zeroinitializer
%mul235.3.1 = fmul <3 x float> %extractVec166.3.1, %splat.splat.3.1
%extractVec243.3.1 = shufflevector <4 x float> %fcj_buf.sroa.0.1.2.1, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub244.3.1 = fsub <3 x float> %extractVec243.3.1, %mul235.3.1
%extractVec245.3.1 = shufflevector <3 x float> %sub244.3.1, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec253.3.1 = shufflevector <4 x float> %fci_buf.sroa.32.1, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add254.3.1 = fadd <3 x float> %extractVec253.3.1, %mul235.3.1
%extractVec255.3.1 = shufflevector <3 x float> %add254.3.1, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end258.3.1
if.end258.3.1: ; preds = %if.then182.3.1, %if.then147.3.1, %if.end258.2.1
%fci_buf.sroa.32.4 = phi <4 x float> [ %fci_buf.sroa.32.1, %if.end258.2.1 ], [ %extractVec255.3.1, %if.then182.3.1 ], [ %fci_buf.sroa.32.1, %if.then147.3.1 ]
%E_el.5.3.1 = phi float [ %E_el.5.2.1, %if.end258.2.1 ], [ %1248, %if.then182.3.1 ], [ %E_el.5.2.1, %if.then147.3.1 ]
%E_lj.3.3.1 = phi float [ %E_lj.3.2.1, %if.end258.2.1 ], [ %add216.3.1, %if.then182.3.1 ], [ %E_lj.3.2.1, %if.then147.3.1 ]
%fcj_buf.sroa.0.1.3.1 = phi <4 x float> [ %fcj_buf.sroa.0.1.2.1, %if.end258.2.1 ], [ %extractVec245.3.1, %if.then182.3.1 ], [ %fcj_buf.sroa.0.1.2.1, %if.then147.3.1 ]
%and145.4.1 = and i32 %64, 4096
%tobool146.4.1 = icmp eq i32 %and145.4.1, 0
br i1 %tobool146.4.1, label %if.end258.4.1, label %if.then147.4.1
if.then147.4.1: ; preds = %if.end258.3.1
%1249 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx154.4.3, align 16, !tbaa !36
%1250 = fsub <4 x float> %1249, %870
%1251 = extractelement <4 x float> %1250, i32 0
%1252 = extractelement <4 x float> %1250, i32 1
%mul3.i.i589.4.1 = fmul float %1252, %1252
%1253 = tail call float @llvm.fmuladd.f32(float %1251, float %1251, float %mul3.i.i589.4.1) #5
%1254 = extractelement <4 x float> %1250, i32 2
%1255 = tail call float @llvm.fmuladd.f32(float %1254, float %1254, float %1253) #5
%and168.4.1 = and i32 %66, 4096
%tobool169.4.1 = icmp ne i32 %and168.4.1, 0
%cond.4.1 = select i1 %tobool169.4.1, float 1.000000e+00, float 0.000000e+00
%cmp174.4.1 = icmp eq i32 %54, %868
%or.cond.4.1 = and i1 %cmp63, %cmp174.4.1
%not.or.cond.4.1 = xor i1 %or.cond.4.1, true
%cmp176..4.1 = or i1 %cmp176, %not.or.cond.4.1
%conv178.4.1 = uitofp i1 %cmp176..4.1 to float
%mul179.4.1 = fmul float %conv178.4.1, %nbparam_params_rcoulomb_sq
%cmp180.4.1 = fcmp olt float %1255, %mul179.4.1
br i1 %cmp180.4.1, label %if.then182.4.1, label %if.end258.4.1
if.then182.4.1: ; preds = %if.then147.4.1
%extractVec166.4.1 = shufflevector <4 x float> %1250, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%1256 = extractelement <4 x float> %1249, i32 3
%1257 = load i32, i32 addrspace(1)* %arrayidx183.4.3, align 4, !tbaa !41
%mul184.4.1 = mul nsw i32 %1257, %ntypes
%add185.4.1 = add nsw i32 %mul184.4.1, %872
%mul186.4.1 = shl nsw i32 %add185.4.1, 1
%1258 = sext i32 %mul186.4.1 to i64
%arrayidx187.4.1 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %1258
%1259 = load float, float addrspace(2)* %arrayidx187.4.1, align 4, !tbaa !39
%add191.4.1 = or i32 %mul186.4.1, 1
%1260 = sext i32 %add191.4.1 to i64
%arrayidx192.4.1 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %1260
%1261 = load float, float addrspace(2)* %arrayidx192.4.1, align 4, !tbaa !39
%sub193.4.1 = fsub float 1.000000e+00, %cond.4.1
%1262 = tail call float @llvm.fmuladd.f32(float %sub193.4.1, float 0x3D71979980000000, float %1255)
%cmp.i.i587.4.1 = fcmp olt float %1262, 0.000000e+00
%call.i.i.4.1 = tail call float @llvm.sqrt.f32(float %1262) #6
%call.i.i.op.4.1 = fdiv float 1.000000e+00, %call.i.i.4.1
%div196.4.1 = select i1 %cmp.i.i587.4.1, float 0x7FF8000000000000, float %call.i.i.op.4.1
%mul197.4.1 = fmul float %div196.4.1, %div196.4.1
%mul198.4.1 = fmul float %mul197.4.1, %mul197.4.1
%mul199.4.1 = fmul float %mul197.4.1, %mul198.4.1
%mul200.4.1 = fmul float %cond.4.1, %mul199.4.1
%neg.4.1 = fsub float -0.000000e+00, %1259
%1263 = tail call float @llvm.fmuladd.f32(float %1261, float %mul200.4.1, float %neg.4.1)
%mul202.4.1 = fmul float %mul200.4.1, %1263
%mul203.4.1 = fmul float %mul197.4.1, %mul202.4.1
%1264 = tail call float @llvm.fmuladd.f32(float %mul200.4.1, float %mul200.4.1, float %nbparam_params_repulsion_shift_cpot)
%mul207.4.1 = fmul float %1264, %1261
%add211.4.1 = fadd float %mul200.4.1, %nbparam_params_dispersion_shift_cpot
%mul212.4.1 = fmul float %add211.4.1, %1259
%mul213.4.1 = fmul float %mul212.4.1, 0x3FC5555560000000
%neg214.4.1 = fsub float -0.000000e+00, %mul213.4.1
%1265 = tail call float @llvm.fmuladd.f32(float %mul207.4.1, float 0x3FB5555540000000, float %neg214.4.1)
%mul215.4.1 = fmul float %cond.4.1, %1265
%add216.4.1 = fadd float %E_lj.3.3.1, %mul215.4.1
%mul217.4.1 = fmul float %871, %1256
%mul218.4.1 = fmul float %cond.4.1, %mul197.4.1
%mul220.4.1 = fmul float %mul, %1262
%mul.i585.4.1 = fmul float %mul220.4.1, %mul220.4.1
%1266 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i585.4.1, float 0x3FBDA79640000000) #5
%1267 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i585.4.1, float 0x3FE03C5780000000) #5
%1268 = tail call float @llvm.fmuladd.f32(float %1266, float %mul.i585.4.1, float 1.000000e+00) #5
%1269 = tail call float @llvm.fmuladd.f32(float %1267, float %mul220.4.1, float %1268) #5
%div.i586.4.1 = fdiv float 1.000000e+00, %1269, !fpmath !46
%1270 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i585.4.1, float 0xBF0BFF7260000000) #5
%1271 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i585.4.1, float 0x3F50794180000000) #5
%1272 = tail call float @llvm.fmuladd.f32(float %1270, float %mul.i585.4.1, float 0xBF93BDB200000000) #5
%1273 = tail call float @llvm.fmuladd.f32(float %1271, float %mul.i585.4.1, float 0x3FB1D5E760000000) #5
%1274 = tail call float @llvm.fmuladd.f32(float %1272, float %mul.i585.4.1, float 0xBFE81272E0000000) #5
%1275 = tail call float @llvm.fmuladd.f32(float %1273, float %mul220.4.1, float %1274) #5
%mul11.i.4.1 = fmul float %1275, %div.i586.4.1
%mul222.4.1 = fmul float %mul19, %mul11.i.4.1
%1276 = tail call float @llvm.fmuladd.f32(float %mul218.4.1, float %div196.4.1, float %mul222.4.1)
%1277 = tail call float @llvm.fmuladd.f32(float %mul217.4.1, float %1276, float %mul203.4.1)
%mul225.4.1 = fmul float %1262, %div196.4.1
%mul226.4.1 = fmul float %mul225.4.1, %nbparam_params_ewald_beta
%fabs.i.4.1 = tail call float @llvm.fabs.f32(float %mul226.4.1) #5
%and.i.4.1 = bitcast float %fabs.i.4.1 to i32
%mul.i.4.1 = fmul float %mul226.4.1, %mul226.4.1
%div.i.4.1 = fdiv float 1.000000e+00, %mul.i.4.1, !fpmath !46
%sub.i.4.1 = fadd float %fabs.i.4.1, -1.000000e+00
%cmp.i583.4.1 = fcmp olt float %fabs.i.4.1, 1.250000e+00
%cond.i.4.1 = select i1 %cmp.i583.4.1, float %sub.i.4.1, float %div.i.4.1
%cmp2.i.4.1 = fcmp olt float %fabs.i.4.1, 8.437500e-01
%cond6.i.4.1 = select i1 %cmp2.i.4.1, float %mul.i.4.1, float %cond.i.4.1
%1278 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.1, float 0xC07E384EA0000000, float 0xC090046160000000) #5
%1279 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.1, float %1278, float 0xC083EC8820000000) #5
%1280 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.1, float %1279, float 0xC064145D40000000) #5
%1281 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.1, float %1280, float 0xC031C20960000000) #5
%1282 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.1, float %1281, float 0xBFE993BA80000000) #5
%1283 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.1, float %1282, float 0xBF84341240000000) #5
%1284 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.1, float 0xC03670E240000000, float 0x407DA874E0000000) #5
%1285 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.1, float %1284, float 0x40A3F219C0000000) #5
%1286 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.1, float %1285, float 0x40A8FFB760000000) #5
%1287 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.1, float %1286, float 0x409802EB20000000) #5
%1288 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.1, float %1287, float 0x40745CAE20000000) #5
%1289 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.1, float %1288, float 0x403E568B20000000) #5
%1290 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.1, float 0xC023A0EFC0000000, float 0xC054526560000000) #5
%1291 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.1, float %1290, float 0xC067135CE0000000) #5
%1292 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.1, float %1291, float 0xC0644CB180000000) #5
%1293 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.1, float %1292, float 0xC04F300AE0000000) #5
%1294 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.1, float %1293, float 0xC0251E0440000000) #5
%1295 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.1, float %1294, float 0xBFE63416E0000000) #5
%1296 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.1, float %1295, float 0xBF84341260000000) #5
%1297 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.1, float 0xBFAEEFF2E0000000, float 0x401A47EF80000000) #5
%1298 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.1, float %1297, float 0x405B28A3E0000000) #5
%1299 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.1, float %1298, float 0x407AD02160000000) #5
%1300 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.1, float %1299, float 0x40842B1920000000) #5
%1301 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.1, float %1300, float 0x407B290DE0000000) #5
%1302 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.1, float %1301, float 0x4061350C60000000) #5
%1303 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.1, float %1302, float 0x4033A6B9C0000000) #5
%cmp32.i.4.1 = fcmp olt float %fabs.i.4.1, 0x4006DB6DA0000000
%cond36.i.4.1 = select i1 %cmp32.i.4.1, float %1296, float %1283
%cond41.i.4.1 = select i1 %cmp32.i.4.1, float %1303, float %1289
%1304 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.1, float 0xBF61BF3800000000, float 0x3FA22A3660000000) #5
%1305 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.1, float %1304, float 0xBFBC639840000000) #5
%1306 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.1, float %1305, float 0x3FD45FCA80000000) #5
%1307 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.1, float %1306, float 0xBFD7D24100000000) #5
%1308 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.1, float %1307, float 0x3FDA8D00A0000000) #5
%1309 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.1, float %1308, float 0xBF6359B8C0000000) #5
%1310 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.1, float 0x3F888B5460000000, float 0x3F8BEDC260000000) #5
%1311 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.1, float %1310, float 0x3FC02660E0000000) #5
%1312 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.1, float %1311, float 0x3FB2635CE0000000) #5
%1313 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.1, float %1312, float 0x3FE14AF0A0000000) #5
%1314 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.1, float %1313, float 0x3FBB3E6620000000) #5
%cond57.i.4.1 = select i1 %cmp.i583.4.1, float %1309, float %cond36.i.4.1
%cond62.i.4.1 = select i1 %cmp.i583.4.1, float %1314, float %cond41.i.4.1
%1315 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.1, float 0xBEF8EAD620000000, float 0xBF77A29120000000) #5
%1316 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.1, float %1315, float 0xBF9D2A51E0000000) #5
%1317 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.1, float %1316, float 0xBFD4CD7D60000000) #5
%1318 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.1, float %1317, float 0x3FC06EBA80000000) #5
%1319 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.1, float 0xBED09C4340000000, float 0x3F215DC920000000) #5
%1320 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.1, float %1319, float 0x3F74D022C0000000) #5
%1321 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.1, float %1320, float 0x3FB0A54C60000000) #5
%1322 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.1, float %1321, float 0x3FD97779C0000000) #5
%cond75.i.4.1 = select i1 %cmp2.i.4.1, float %1318, float %cond57.i.4.1
%cond80.i.4.1 = select i1 %cmp2.i.4.1, float %1322, float %cond62.i.4.1
%1323 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.1, float %cond80.i.4.1, float 1.000000e+00) #5
%div82.i.4.1 = fdiv float %cond75.i.4.1, %1323, !fpmath !46
%and83.i.4.1 = and i32 %and.i.4.1, -4096
%astype84.i.4.1 = bitcast i32 %and83.i.4.1 to float
%sub85.i.4.1 = fsub float -0.000000e+00, %astype84.i.4.1
%1324 = tail call float @llvm.fmuladd.f32(float %sub85.i.4.1, float %astype84.i.4.1, float -5.625000e-01) #5
%cmp.i2.i.4.1 = fcmp olt float %1324, 0.000000e+00
%cond.i3.i.4.1 = select i1 %cmp.i2.i.4.1, float -5.000000e-01, float 5.000000e-01
%1325 = tail call float @llvm.fmuladd.f32(float %1324, float 0x3FF7154760000000, float %cond.i3.i.4.1) #5
%conv.i4.i.4.1 = fptosi float %1325 to i32
%conv1.i5.i.4.1 = sitofp i32 %conv.i4.i.4.1 to float
%1326 = tail call float @llvm.fmuladd.f32(float %conv1.i5.i.4.1, float 0xBFE62E3000000000, float %1324) #5
%mul.i6.i.4.1 = fmul float %conv1.i5.i.4.1, 0xBEE2FEFA20000000
%add.i7.i.4.1 = fadd float %1326, %mul.i6.i.4.1
%mul3.i8.i.4.1 = fmul float %add.i7.i.4.1, %add.i7.i.4.1
%1327 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.4.1, float 0x3E66376980000000, float 0xBEBBBD41C0000000) #5
%1328 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.4.1, float %1327, float 0x3F11566AA0000000) #5
%1329 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.4.1, float %1328, float 0xBF66C16C20000000) #5
%1330 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.4.1, float %1329, float 0x3FC5555560000000) #5
%sub8.i9.i.4.1 = fsub float -0.000000e+00, %1330
%1331 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.4.1, float %sub8.i9.i.4.1, float %add.i7.i.4.1) #5
%sub10.i10.i.4.1 = fsub float -0.000000e+00, %mul.i6.i.4.1
%mul11.i11.i.4.1 = fmul float %add.i7.i.4.1, %1331
%sub12.i12.i.4.1 = fsub float 2.000000e+00, %1331
%div.i13.i.4.1 = fdiv float %mul11.i11.i.4.1, %sub12.i12.i.4.1, !fpmath !46
%sub13.i14.i.4.1 = fsub float %sub10.i10.i.4.1, %div.i13.i.4.1
%sub14.i15.i.4.1 = fsub float %sub13.i14.i.4.1, %1326
%sub15.i16.i.4.1 = fsub float 1.000000e+00, %sub14.i15.i.4.1
%astype.i17.i.4.1 = bitcast float %sub15.i16.i.4.1 to i32
%shl.i18.i.4.1 = shl i32 %conv.i4.i.4.1, 23
%add16.i19.i.4.1 = add nsw i32 %astype.i17.i.4.1, %shl.i18.i.4.1
%astype17.i20.i.4.1 = bitcast i32 %add16.i19.i.4.1 to float
%cmp18.i21.i.4.1 = fcmp olt float %1324, 0xC055D589E0000000
%cond20.i22.i.4.1 = select i1 %cmp18.i21.i.4.1, float 0.000000e+00, float %astype17.i20.i.4.1
%cmp21.i23.i.4.1 = fcmp olt float %1324, 0x40562E4300000000
%cond26.i24.i.4.1 = select i1 %cmp21.i23.i.4.1, float %cond20.i22.i.4.1, float 0x7FF0000000000000
%cmp.i.i25.i.4.1 = fcmp uno float %1324, 0.000000e+00
%cond31.i26.i.4.1 = select i1 %cmp.i.i25.i.4.1, float %1324, float %cond26.i24.i.4.1
%sub88.i.4.1 = fsub float %astype84.i.4.1, %fabs.i.4.1
%add.i584.4.1 = fadd float %fabs.i.4.1, %astype84.i.4.1
%1332 = tail call float @llvm.fmuladd.f32(float %sub88.i.4.1, float %add.i584.4.1, float %div82.i.4.1) #5
%cmp.i1.i.4.1 = fcmp olt float %1332, 0.000000e+00
%cond.i.i.4.1 = select i1 %cmp.i1.i.4.1, float -5.000000e-01, float 5.000000e-01
%1333 = tail call float @llvm.fmuladd.f32(float %1332, float 0x3FF7154760000000, float %cond.i.i.4.1) #5
%conv.i.i.4.1 = fptosi float %1333 to i32
%conv1.i.i.4.1 = sitofp i32 %conv.i.i.4.1 to float
%1334 = tail call float @llvm.fmuladd.f32(float %conv1.i.i.4.1, float 0xBFE62E3000000000, float %1332) #5
%mul.i.i.4.1 = fmul float %conv1.i.i.4.1, 0xBEE2FEFA20000000
%add.i.i.4.1 = fadd float %1334, %mul.i.i.4.1
%mul3.i.i.4.1 = fmul float %add.i.i.4.1, %add.i.i.4.1
%1335 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.4.1, float 0x3E66376980000000, float 0xBEBBBD41C0000000) #5
%1336 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.4.1, float %1335, float 0x3F11566AA0000000) #5
%1337 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.4.1, float %1336, float 0xBF66C16C20000000) #5
%1338 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.4.1, float %1337, float 0x3FC5555560000000) #5
%sub8.i.i.4.1 = fsub float -0.000000e+00, %1338
%1339 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.4.1, float %sub8.i.i.4.1, float %add.i.i.4.1) #5
%sub10.i.i.4.1 = fsub float -0.000000e+00, %mul.i.i.4.1
%mul11.i.i.4.1 = fmul float %add.i.i.4.1, %1339
%sub12.i.i.4.1 = fsub float 2.000000e+00, %1339
%div.i.i.4.1 = fdiv float %mul11.i.i.4.1, %sub12.i.i.4.1, !fpmath !46
%sub13.i.i.4.1 = fsub float %sub10.i.i.4.1, %div.i.i.4.1
%sub14.i.i.4.1 = fsub float %sub13.i.i.4.1, %1334
%sub15.i.i.4.1 = fsub float 1.000000e+00, %sub14.i.i.4.1
%astype.i.i.4.1 = bitcast float %sub15.i.i.4.1 to i32
%shl.i.i.4.1 = shl i32 %conv.i.i.4.1, 23
%add16.i.i.4.1 = add nsw i32 %astype.i.i.4.1, %shl.i.i.4.1
%astype17.i.i.4.1 = bitcast i32 %add16.i.i.4.1 to float
%cmp18.i.i.4.1 = fcmp olt float %1332, 0xC055D589E0000000
%cond20.i.i.4.1 = select i1 %cmp18.i.i.4.1, float 0.000000e+00, float %astype17.i.i.4.1
%cmp21.i.i.4.1 = fcmp olt float %1332, 0x40562E4300000000
%cond26.i.i.4.1 = select i1 %cmp21.i.i.4.1, float %cond20.i.i.4.1, float 0x7FF0000000000000
%cmp.i.i.i.4.1 = fcmp uno float %1332, 0.000000e+00
%cond31.i.i.4.1 = select i1 %cmp.i.i.i.4.1, float %1332, float %cond26.i.i.4.1
%mul91.i.4.1 = fmul float %cond31.i26.i.4.1, %cond31.i.i.4.1
%div92.i.4.1 = fdiv float %mul91.i.4.1, %fabs.i.4.1, !fpmath !46
%sub93.i.4.1 = fsub float 2.000000e+00, %div92.i.4.1
%cmp94.i.4.1 = fcmp olt float %mul226.4.1, 0.000000e+00
%cond98.i.4.1 = select i1 %cmp94.i.4.1, float %sub93.i.4.1, float %div92.i.4.1
%cmp99.i.4.1 = fcmp olt float %fabs.i.4.1, 2.800000e+01
%cond103.i.4.1 = select i1 %cmp99.i.4.1, float %cond98.i.4.1, float 0.000000e+00
%sub104.i.4.1 = fsub float 0x3FC3D4FA80000000, %div82.i.4.1
%add105.i.4.1 = fadd float %div82.i.4.1, 0x3FEB0AC160000000
%add106.i.4.1 = fadd float %add105.i.4.1, 1.000000e+00
%cond111.i.4.1 = select i1 %cmp94.i.4.1, float %add106.i.4.1, float %sub104.i.4.1
%cond116.i.4.1 = select i1 %cmp.i583.4.1, float %cond111.i.4.1, float %cond103.i.4.1
%sub117.i.4.1 = fadd float %mul226.4.1, -5.000000e-01
%1340 = tail call float @llvm.fmuladd.f32(float %mul226.4.1, float %div82.i.4.1, float %sub117.i.4.1) #5
%sub119.i.4.1 = fsub float 5.000000e-01, %1340
%cond124.i.4.1 = select i1 %cmp2.i.4.1, float %sub119.i.4.1, float %cond116.i.4.1
%cmp125.i.4.1 = fcmp olt float %mul226.4.1, -6.000000e+00
%cond129.i.4.1 = select i1 %cmp125.i.4.1, float 2.000000e+00, float %cond124.i.4.1
%cmp.i.i.4.1 = fcmp uno float %mul226.4.1, 0.000000e+00
%cond134.i.4.1 = select i1 %cmp.i.i.4.1, float %mul226.4.1, float %cond129.i.4.1
%mul229.4.1 = fmul float %cond.4.1, %nbparam_params_sh_ewald
%neg230.4.1 = fsub float -0.000000e+00, %mul229.4.1
%1341 = tail call float @llvm.fmuladd.f32(float %div196.4.1, float %cond134.i.4.1, float %neg230.4.1)
%1342 = tail call float @llvm.fmuladd.f32(float %mul217.4.1, float %1341, float %E_el.5.3.1)
%splat.splatinsert.4.1 = insertelement <3 x float> undef, float %1277, i32 0
%splat.splat.4.1 = shufflevector <3 x float> %splat.splatinsert.4.1, <3 x float> undef, <3 x i32> zeroinitializer
%mul235.4.1 = fmul <3 x float> %extractVec166.4.1, %splat.splat.4.1
%extractVec243.4.1 = shufflevector <4 x float> %fcj_buf.sroa.0.1.3.1, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub244.4.1 = fsub <3 x float> %extractVec243.4.1, %mul235.4.1
%extractVec245.4.1 = shufflevector <3 x float> %sub244.4.1, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec253.4.1 = shufflevector <4 x float> %fci_buf.sroa.42.1, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add254.4.1 = fadd <3 x float> %extractVec253.4.1, %mul235.4.1
%extractVec255.4.1 = shufflevector <3 x float> %add254.4.1, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end258.4.1
if.end258.4.1: ; preds = %if.then182.4.1, %if.then147.4.1, %if.end258.3.1
%fci_buf.sroa.42.4 = phi <4 x float> [ %fci_buf.sroa.42.1, %if.end258.3.1 ], [ %extractVec255.4.1, %if.then182.4.1 ], [ %fci_buf.sroa.42.1, %if.then147.4.1 ]
%E_el.5.4.1 = phi float [ %E_el.5.3.1, %if.end258.3.1 ], [ %1342, %if.then182.4.1 ], [ %E_el.5.3.1, %if.then147.4.1 ]
%E_lj.3.4.1 = phi float [ %E_lj.3.3.1, %if.end258.3.1 ], [ %add216.4.1, %if.then182.4.1 ], [ %E_lj.3.3.1, %if.then147.4.1 ]
%fcj_buf.sroa.0.1.4.1 = phi <4 x float> [ %fcj_buf.sroa.0.1.3.1, %if.end258.3.1 ], [ %extractVec245.4.1, %if.then182.4.1 ], [ %fcj_buf.sroa.0.1.3.1, %if.then147.4.1 ]
%and145.5.1 = and i32 %64, 8192
%tobool146.5.1 = icmp eq i32 %and145.5.1, 0
br i1 %tobool146.5.1, label %if.end258.5.1, label %if.then147.5.1
if.then147.5.1: ; preds = %if.end258.4.1
%1343 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx154.5.3, align 16, !tbaa !36
%1344 = fsub <4 x float> %1343, %870
%1345 = extractelement <4 x float> %1344, i32 0
%1346 = extractelement <4 x float> %1344, i32 1
%mul3.i.i589.5.1 = fmul float %1346, %1346
%1347 = tail call float @llvm.fmuladd.f32(float %1345, float %1345, float %mul3.i.i589.5.1) #5
%1348 = extractelement <4 x float> %1344, i32 2
%1349 = tail call float @llvm.fmuladd.f32(float %1348, float %1348, float %1347) #5
%and168.5.1 = and i32 %66, 8192
%tobool169.5.1 = icmp ne i32 %and168.5.1, 0
%cond.5.1 = select i1 %tobool169.5.1, float 1.000000e+00, float 0.000000e+00
%cmp174.5.1 = icmp eq i32 %52, %868
%or.cond.5.1 = and i1 %cmp63, %cmp174.5.1
%not.or.cond.5.1 = xor i1 %or.cond.5.1, true
%cmp176..5.1 = or i1 %cmp176, %not.or.cond.5.1
%conv178.5.1 = uitofp i1 %cmp176..5.1 to float
%mul179.5.1 = fmul float %conv178.5.1, %nbparam_params_rcoulomb_sq
%cmp180.5.1 = fcmp olt float %1349, %mul179.5.1
br i1 %cmp180.5.1, label %if.then182.5.1, label %if.end258.5.1
if.then182.5.1: ; preds = %if.then147.5.1
%extractVec166.5.1 = shufflevector <4 x float> %1344, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%1350 = extractelement <4 x float> %1343, i32 3
%1351 = load i32, i32 addrspace(1)* %arrayidx183.5.3, align 4, !tbaa !41
%mul184.5.1 = mul nsw i32 %1351, %ntypes
%add185.5.1 = add nsw i32 %mul184.5.1, %872
%mul186.5.1 = shl nsw i32 %add185.5.1, 1
%1352 = sext i32 %mul186.5.1 to i64
%arrayidx187.5.1 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %1352
%1353 = load float, float addrspace(2)* %arrayidx187.5.1, align 4, !tbaa !39
%add191.5.1 = or i32 %mul186.5.1, 1
%1354 = sext i32 %add191.5.1 to i64
%arrayidx192.5.1 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %1354
%1355 = load float, float addrspace(2)* %arrayidx192.5.1, align 4, !tbaa !39
%sub193.5.1 = fsub float 1.000000e+00, %cond.5.1
%1356 = tail call float @llvm.fmuladd.f32(float %sub193.5.1, float 0x3D71979980000000, float %1349)
%cmp.i.i587.5.1 = fcmp olt float %1356, 0.000000e+00
%call.i.i.5.1 = tail call float @llvm.sqrt.f32(float %1356) #6
%call.i.i.op.5.1 = fdiv float 1.000000e+00, %call.i.i.5.1
%div196.5.1 = select i1 %cmp.i.i587.5.1, float 0x7FF8000000000000, float %call.i.i.op.5.1
%mul197.5.1 = fmul float %div196.5.1, %div196.5.1
%mul198.5.1 = fmul float %mul197.5.1, %mul197.5.1
%mul199.5.1 = fmul float %mul197.5.1, %mul198.5.1
%mul200.5.1 = fmul float %cond.5.1, %mul199.5.1
%neg.5.1 = fsub float -0.000000e+00, %1353
%1357 = tail call float @llvm.fmuladd.f32(float %1355, float %mul200.5.1, float %neg.5.1)
%mul202.5.1 = fmul float %mul200.5.1, %1357
%mul203.5.1 = fmul float %mul197.5.1, %mul202.5.1
%1358 = tail call float @llvm.fmuladd.f32(float %mul200.5.1, float %mul200.5.1, float %nbparam_params_repulsion_shift_cpot)
%mul207.5.1 = fmul float %1358, %1355
%add211.5.1 = fadd float %mul200.5.1, %nbparam_params_dispersion_shift_cpot
%mul212.5.1 = fmul float %add211.5.1, %1353
%mul213.5.1 = fmul float %mul212.5.1, 0x3FC5555560000000
%neg214.5.1 = fsub float -0.000000e+00, %mul213.5.1
%1359 = tail call float @llvm.fmuladd.f32(float %mul207.5.1, float 0x3FB5555540000000, float %neg214.5.1)
%mul215.5.1 = fmul float %cond.5.1, %1359
%add216.5.1 = fadd float %E_lj.3.4.1, %mul215.5.1
%mul217.5.1 = fmul float %871, %1350
%mul218.5.1 = fmul float %cond.5.1, %mul197.5.1
%mul220.5.1 = fmul float %mul, %1356
%mul.i585.5.1 = fmul float %mul220.5.1, %mul220.5.1
%1360 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i585.5.1, float 0x3FBDA79640000000) #5
%1361 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i585.5.1, float 0x3FE03C5780000000) #5
%1362 = tail call float @llvm.fmuladd.f32(float %1360, float %mul.i585.5.1, float 1.000000e+00) #5
%1363 = tail call float @llvm.fmuladd.f32(float %1361, float %mul220.5.1, float %1362) #5
%div.i586.5.1 = fdiv float 1.000000e+00, %1363, !fpmath !46
%1364 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i585.5.1, float 0xBF0BFF7260000000) #5
%1365 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i585.5.1, float 0x3F50794180000000) #5
%1366 = tail call float @llvm.fmuladd.f32(float %1364, float %mul.i585.5.1, float 0xBF93BDB200000000) #5
%1367 = tail call float @llvm.fmuladd.f32(float %1365, float %mul.i585.5.1, float 0x3FB1D5E760000000) #5
%1368 = tail call float @llvm.fmuladd.f32(float %1366, float %mul.i585.5.1, float 0xBFE81272E0000000) #5
%1369 = tail call float @llvm.fmuladd.f32(float %1367, float %mul220.5.1, float %1368) #5
%mul11.i.5.1 = fmul float %1369, %div.i586.5.1
%mul222.5.1 = fmul float %mul19, %mul11.i.5.1
%1370 = tail call float @llvm.fmuladd.f32(float %mul218.5.1, float %div196.5.1, float %mul222.5.1)
%1371 = tail call float @llvm.fmuladd.f32(float %mul217.5.1, float %1370, float %mul203.5.1)
%mul225.5.1 = fmul float %1356, %div196.5.1
%mul226.5.1 = fmul float %mul225.5.1, %nbparam_params_ewald_beta
%fabs.i.5.1 = tail call float @llvm.fabs.f32(float %mul226.5.1) #5
%and.i.5.1 = bitcast float %fabs.i.5.1 to i32
%mul.i.5.1 = fmul float %mul226.5.1, %mul226.5.1
%div.i.5.1 = fdiv float 1.000000e+00, %mul.i.5.1, !fpmath !46
%sub.i.5.1 = fadd float %fabs.i.5.1, -1.000000e+00
%cmp.i583.5.1 = fcmp olt float %fabs.i.5.1, 1.250000e+00
%cond.i.5.1 = select i1 %cmp.i583.5.1, float %sub.i.5.1, float %div.i.5.1
%cmp2.i.5.1 = fcmp olt float %fabs.i.5.1, 8.437500e-01
%cond6.i.5.1 = select i1 %cmp2.i.5.1, float %mul.i.5.1, float %cond.i.5.1
%1372 = tail call float @llvm.fmuladd.f32(float %cond6.i.5.1, float 0xC07E384EA0000000, float 0xC090046160000000) #5
%1373 = tail call float @llvm.fmuladd.f32(float %cond6.i.5.1, float %1372, float 0xC083EC8820000000) #5
%1374 = tail call float @llvm.fmuladd.f32(float %cond6.i.5.1, float %1373, float 0xC064145D40000000) #5
%1375 = tail call float @llvm.fmuladd.f32(float %cond6.i.5.1, float %1374, float 0xC031C20960000000) #5
%1376 = tail call float @llvm.fmuladd.f32(float %cond6.i.5.1, float %1375, float 0xBFE993BA80000000) #5
%1377 = tail call float @llvm.fmuladd.f32(float %cond6.i.5.1, float %1376, float 0xBF84341240000000) #5
%1378 = tail call float @llvm.fmuladd.f32(float %cond6.i.5.1, float 0xC03670E240000000, float 0x407DA874E0000000) #5
%1379 = tail call float @llvm.fmuladd.f32(float %cond6.i.5.1, float %1378, float 0x40A3F219C0000000) #5
%1380 = tail call float @llvm.fmuladd.f32(float %cond6.i.5.1, float %1379, float 0x40A8FFB760000000) #5
%1381 = tail call float @llvm.fmuladd.f32(float %cond6.i.5.1, float %1380, float 0x409802EB20000000) #5
%1382 = tail call float @llvm.fmuladd.f32(float %cond6.i.5.1, float %1381, float 0x40745CAE20000000) #5
%1383 = tail call float @llvm.fmuladd.f32(float %cond6.i.5.1, float %1382, float 0x403E568B20000000) #5
%1384 = tail call float @llvm.fmuladd.f32(float %cond6.i.5.1, float 0xC023A0EFC0000000, float 0xC054526560000000) #5
%1385 = tail call float @llvm.fmuladd.f32(float %cond6.i.5.1, float %1384, float 0xC067135CE0000000) #5
%1386 = tail call float @llvm.fmuladd.f32(float %cond6.i.5.1, float %1385, float 0xC0644CB180000000) #5
%1387 = tail call float @llvm.fmuladd.f32(float %cond6.i.5.1, float %1386, float 0xC04F300AE0000000) #5
%1388 = tail call float @llvm.fmuladd.f32(float %cond6.i.5.1, float %1387, float 0xC0251E0440000000) #5
%1389 = tail call float @llvm.fmuladd.f32(float %cond6.i.5.1, float %1388, float 0xBFE63416E0000000) #5
%1390 = tail call float @llvm.fmuladd.f32(float %cond6.i.5.1, float %1389, float 0xBF84341260000000) #5
%1391 = tail call float @llvm.fmuladd.f32(float %cond6.i.5.1, float 0xBFAEEFF2E0000000, float 0x401A47EF80000000) #5
%1392 = tail call float @llvm.fmuladd.f32(float %cond6.i.5.1, float %1391, float 0x405B28A3E0000000) #5
%1393 = tail call float @llvm.fmuladd.f32(float %cond6.i.5.1, float %1392, float 0x407AD02160000000) #5
%1394 = tail call float @llvm.fmuladd.f32(float %cond6.i.5.1, float %1393, float 0x40842B1920000000) #5
%1395 = tail call float @llvm.fmuladd.f32(float %cond6.i.5.1, float %1394, float 0x407B290DE0000000) #5
%1396 = tail call float @llvm.fmuladd.f32(float %cond6.i.5.1, float %1395, float 0x4061350C60000000) #5
%1397 = tail call float @llvm.fmuladd.f32(float %cond6.i.5.1, float %1396, float 0x4033A6B9C0000000) #5
%cmp32.i.5.1 = fcmp olt float %fabs.i.5.1, 0x4006DB6DA0000000
%cond36.i.5.1 = select i1 %cmp32.i.5.1, float %1390, float %1377
%cond41.i.5.1 = select i1 %cmp32.i.5.1, float %1397, float %1383
%1398 = tail call float @llvm.fmuladd.f32(float %cond6.i.5.1, float 0xBF61BF3800000000, float 0x3FA22A3660000000) #5
%1399 = tail call float @llvm.fmuladd.f32(float %cond6.i.5.1, float %1398, float 0xBFBC639840000000) #5
%1400 = tail call float @llvm.fmuladd.f32(float %cond6.i.5.1, float %1399, float 0x3FD45FCA80000000) #5
%1401 = tail call float @llvm.fmuladd.f32(float %cond6.i.5.1, float %1400, float 0xBFD7D24100000000) #5
%1402 = tail call float @llvm.fmuladd.f32(float %cond6.i.5.1, float %1401, float 0x3FDA8D00A0000000) #5
%1403 = tail call float @llvm.fmuladd.f32(float %cond6.i.5.1, float %1402, float 0xBF6359B8C0000000) #5
%1404 = tail call float @llvm.fmuladd.f32(float %cond6.i.5.1, float 0x3F888B5460000000, float 0x3F8BEDC260000000) #5
%1405 = tail call float @llvm.fmuladd.f32(float %cond6.i.5.1, float %1404, float 0x3FC02660E0000000) #5
%1406 = tail call float @llvm.fmuladd.f32(float %cond6.i.5.1, float %1405, float 0x3FB2635CE0000000) #5
%1407 = tail call float @llvm.fmuladd.f32(float %cond6.i.5.1, float %1406, float 0x3FE14AF0A0000000) #5
%1408 = tail call float @llvm.fmuladd.f32(float %cond6.i.5.1, float %1407, float 0x3FBB3E6620000000) #5
%cond57.i.5.1 = select i1 %cmp.i583.5.1, float %1403, float %cond36.i.5.1
%cond62.i.5.1 = select i1 %cmp.i583.5.1, float %1408, float %cond41.i.5.1
%1409 = tail call float @llvm.fmuladd.f32(float %cond6.i.5.1, float 0xBEF8EAD620000000, float 0xBF77A29120000000) #5
%1410 = tail call float @llvm.fmuladd.f32(float %cond6.i.5.1, float %1409, float 0xBF9D2A51E0000000) #5
%1411 = tail call float @llvm.fmuladd.f32(float %cond6.i.5.1, float %1410, float 0xBFD4CD7D60000000) #5
%1412 = tail call float @llvm.fmuladd.f32(float %cond6.i.5.1, float %1411, float 0x3FC06EBA80000000) #5
%1413 = tail call float @llvm.fmuladd.f32(float %cond6.i.5.1, float 0xBED09C4340000000, float 0x3F215DC920000000) #5
%1414 = tail call float @llvm.fmuladd.f32(float %cond6.i.5.1, float %1413, float 0x3F74D022C0000000) #5
%1415 = tail call float @llvm.fmuladd.f32(float %cond6.i.5.1, float %1414, float 0x3FB0A54C60000000) #5
%1416 = tail call float @llvm.fmuladd.f32(float %cond6.i.5.1, float %1415, float 0x3FD97779C0000000) #5
%cond75.i.5.1 = select i1 %cmp2.i.5.1, float %1412, float %cond57.i.5.1
%cond80.i.5.1 = select i1 %cmp2.i.5.1, float %1416, float %cond62.i.5.1
%1417 = tail call float @llvm.fmuladd.f32(float %cond6.i.5.1, float %cond80.i.5.1, float 1.000000e+00) #5
%div82.i.5.1 = fdiv float %cond75.i.5.1, %1417, !fpmath !46
%and83.i.5.1 = and i32 %and.i.5.1, -4096
%astype84.i.5.1 = bitcast i32 %and83.i.5.1 to float
%sub85.i.5.1 = fsub float -0.000000e+00, %astype84.i.5.1
%1418 = tail call float @llvm.fmuladd.f32(float %sub85.i.5.1, float %astype84.i.5.1, float -5.625000e-01) #5
%cmp.i2.i.5.1 = fcmp olt float %1418, 0.000000e+00
%cond.i3.i.5.1 = select i1 %cmp.i2.i.5.1, float -5.000000e-01, float 5.000000e-01
%1419 = tail call float @llvm.fmuladd.f32(float %1418, float 0x3FF7154760000000, float %cond.i3.i.5.1) #5
%conv.i4.i.5.1 = fptosi float %1419 to i32
%conv1.i5.i.5.1 = sitofp i32 %conv.i4.i.5.1 to float
%1420 = tail call float @llvm.fmuladd.f32(float %conv1.i5.i.5.1, float 0xBFE62E3000000000, float %1418) #5
%mul.i6.i.5.1 = fmul float %conv1.i5.i.5.1, 0xBEE2FEFA20000000
%add.i7.i.5.1 = fadd float %1420, %mul.i6.i.5.1
%mul3.i8.i.5.1 = fmul float %add.i7.i.5.1, %add.i7.i.5.1
%1421 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.5.1, float 0x3E66376980000000, float 0xBEBBBD41C0000000) #5
%1422 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.5.1, float %1421, float 0x3F11566AA0000000) #5
%1423 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.5.1, float %1422, float 0xBF66C16C20000000) #5
%1424 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.5.1, float %1423, float 0x3FC5555560000000) #5
%sub8.i9.i.5.1 = fsub float -0.000000e+00, %1424
%1425 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.5.1, float %sub8.i9.i.5.1, float %add.i7.i.5.1) #5
%sub10.i10.i.5.1 = fsub float -0.000000e+00, %mul.i6.i.5.1
%mul11.i11.i.5.1 = fmul float %add.i7.i.5.1, %1425
%sub12.i12.i.5.1 = fsub float 2.000000e+00, %1425
%div.i13.i.5.1 = fdiv float %mul11.i11.i.5.1, %sub12.i12.i.5.1, !fpmath !46
%sub13.i14.i.5.1 = fsub float %sub10.i10.i.5.1, %div.i13.i.5.1
%sub14.i15.i.5.1 = fsub float %sub13.i14.i.5.1, %1420
%sub15.i16.i.5.1 = fsub float 1.000000e+00, %sub14.i15.i.5.1
%astype.i17.i.5.1 = bitcast float %sub15.i16.i.5.1 to i32
%shl.i18.i.5.1 = shl i32 %conv.i4.i.5.1, 23
%add16.i19.i.5.1 = add nsw i32 %astype.i17.i.5.1, %shl.i18.i.5.1
%astype17.i20.i.5.1 = bitcast i32 %add16.i19.i.5.1 to float
%cmp18.i21.i.5.1 = fcmp olt float %1418, 0xC055D589E0000000
%cond20.i22.i.5.1 = select i1 %cmp18.i21.i.5.1, float 0.000000e+00, float %astype17.i20.i.5.1
%cmp21.i23.i.5.1 = fcmp olt float %1418, 0x40562E4300000000
%cond26.i24.i.5.1 = select i1 %cmp21.i23.i.5.1, float %cond20.i22.i.5.1, float 0x7FF0000000000000
%cmp.i.i25.i.5.1 = fcmp uno float %1418, 0.000000e+00
%cond31.i26.i.5.1 = select i1 %cmp.i.i25.i.5.1, float %1418, float %cond26.i24.i.5.1
%sub88.i.5.1 = fsub float %astype84.i.5.1, %fabs.i.5.1
%add.i584.5.1 = fadd float %fabs.i.5.1, %astype84.i.5.1
%1426 = tail call float @llvm.fmuladd.f32(float %sub88.i.5.1, float %add.i584.5.1, float %div82.i.5.1) #5
%cmp.i1.i.5.1 = fcmp olt float %1426, 0.000000e+00
%cond.i.i.5.1 = select i1 %cmp.i1.i.5.1, float -5.000000e-01, float 5.000000e-01
%1427 = tail call float @llvm.fmuladd.f32(float %1426, float 0x3FF7154760000000, float %cond.i.i.5.1) #5
%conv.i.i.5.1 = fptosi float %1427 to i32
%conv1.i.i.5.1 = sitofp i32 %conv.i.i.5.1 to float
%1428 = tail call float @llvm.fmuladd.f32(float %conv1.i.i.5.1, float 0xBFE62E3000000000, float %1426) #5
%mul.i.i.5.1 = fmul float %conv1.i.i.5.1, 0xBEE2FEFA20000000
%add.i.i.5.1 = fadd float %1428, %mul.i.i.5.1
%mul3.i.i.5.1 = fmul float %add.i.i.5.1, %add.i.i.5.1
%1429 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.5.1, float 0x3E66376980000000, float 0xBEBBBD41C0000000) #5
%1430 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.5.1, float %1429, float 0x3F11566AA0000000) #5
%1431 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.5.1, float %1430, float 0xBF66C16C20000000) #5
%1432 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.5.1, float %1431, float 0x3FC5555560000000) #5
%sub8.i.i.5.1 = fsub float -0.000000e+00, %1432
%1433 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.5.1, float %sub8.i.i.5.1, float %add.i.i.5.1) #5
%sub10.i.i.5.1 = fsub float -0.000000e+00, %mul.i.i.5.1
%mul11.i.i.5.1 = fmul float %add.i.i.5.1, %1433
%sub12.i.i.5.1 = fsub float 2.000000e+00, %1433
%div.i.i.5.1 = fdiv float %mul11.i.i.5.1, %sub12.i.i.5.1, !fpmath !46
%sub13.i.i.5.1 = fsub float %sub10.i.i.5.1, %div.i.i.5.1
%sub14.i.i.5.1 = fsub float %sub13.i.i.5.1, %1428
%sub15.i.i.5.1 = fsub float 1.000000e+00, %sub14.i.i.5.1
%astype.i.i.5.1 = bitcast float %sub15.i.i.5.1 to i32
%shl.i.i.5.1 = shl i32 %conv.i.i.5.1, 23
%add16.i.i.5.1 = add nsw i32 %astype.i.i.5.1, %shl.i.i.5.1
%astype17.i.i.5.1 = bitcast i32 %add16.i.i.5.1 to float
%cmp18.i.i.5.1 = fcmp olt float %1426, 0xC055D589E0000000
%cond20.i.i.5.1 = select i1 %cmp18.i.i.5.1, float 0.000000e+00, float %astype17.i.i.5.1
%cmp21.i.i.5.1 = fcmp olt float %1426, 0x40562E4300000000
%cond26.i.i.5.1 = select i1 %cmp21.i.i.5.1, float %cond20.i.i.5.1, float 0x7FF0000000000000
%cmp.i.i.i.5.1 = fcmp uno float %1426, 0.000000e+00
%cond31.i.i.5.1 = select i1 %cmp.i.i.i.5.1, float %1426, float %cond26.i.i.5.1
%mul91.i.5.1 = fmul float %cond31.i26.i.5.1, %cond31.i.i.5.1
%div92.i.5.1 = fdiv float %mul91.i.5.1, %fabs.i.5.1, !fpmath !46
%sub93.i.5.1 = fsub float 2.000000e+00, %div92.i.5.1
%cmp94.i.5.1 = fcmp olt float %mul226.5.1, 0.000000e+00
%cond98.i.5.1 = select i1 %cmp94.i.5.1, float %sub93.i.5.1, float %div92.i.5.1
%cmp99.i.5.1 = fcmp olt float %fabs.i.5.1, 2.800000e+01
%cond103.i.5.1 = select i1 %cmp99.i.5.1, float %cond98.i.5.1, float 0.000000e+00
%sub104.i.5.1 = fsub float 0x3FC3D4FA80000000, %div82.i.5.1
%add105.i.5.1 = fadd float %div82.i.5.1, 0x3FEB0AC160000000
%add106.i.5.1 = fadd float %add105.i.5.1, 1.000000e+00
%cond111.i.5.1 = select i1 %cmp94.i.5.1, float %add106.i.5.1, float %sub104.i.5.1
%cond116.i.5.1 = select i1 %cmp.i583.5.1, float %cond111.i.5.1, float %cond103.i.5.1
%sub117.i.5.1 = fadd float %mul226.5.1, -5.000000e-01
%1434 = tail call float @llvm.fmuladd.f32(float %mul226.5.1, float %div82.i.5.1, float %sub117.i.5.1) #5
%sub119.i.5.1 = fsub float 5.000000e-01, %1434
%cond124.i.5.1 = select i1 %cmp2.i.5.1, float %sub119.i.5.1, float %cond116.i.5.1
%cmp125.i.5.1 = fcmp olt float %mul226.5.1, -6.000000e+00
%cond129.i.5.1 = select i1 %cmp125.i.5.1, float 2.000000e+00, float %cond124.i.5.1
%cmp.i.i.5.1 = fcmp uno float %mul226.5.1, 0.000000e+00
%cond134.i.5.1 = select i1 %cmp.i.i.5.1, float %mul226.5.1, float %cond129.i.5.1
%mul229.5.1 = fmul float %cond.5.1, %nbparam_params_sh_ewald
%neg230.5.1 = fsub float -0.000000e+00, %mul229.5.1
%1435 = tail call float @llvm.fmuladd.f32(float %div196.5.1, float %cond134.i.5.1, float %neg230.5.1)
%1436 = tail call float @llvm.fmuladd.f32(float %mul217.5.1, float %1435, float %E_el.5.4.1)
%splat.splatinsert.5.1 = insertelement <3 x float> undef, float %1371, i32 0
%splat.splat.5.1 = shufflevector <3 x float> %splat.splatinsert.5.1, <3 x float> undef, <3 x i32> zeroinitializer
%mul235.5.1 = fmul <3 x float> %extractVec166.5.1, %splat.splat.5.1
%extractVec243.5.1 = shufflevector <4 x float> %fcj_buf.sroa.0.1.4.1, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub244.5.1 = fsub <3 x float> %extractVec243.5.1, %mul235.5.1
%extractVec245.5.1 = shufflevector <3 x float> %sub244.5.1, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec253.5.1 = shufflevector <4 x float> %fci_buf.sroa.52.1, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add254.5.1 = fadd <3 x float> %extractVec253.5.1, %mul235.5.1
%extractVec255.5.1 = shufflevector <3 x float> %add254.5.1, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end258.5.1
if.end258.5.1: ; preds = %if.then182.5.1, %if.then147.5.1, %if.end258.4.1
%fci_buf.sroa.52.4 = phi <4 x float> [ %fci_buf.sroa.52.1, %if.end258.4.1 ], [ %extractVec255.5.1, %if.then182.5.1 ], [ %fci_buf.sroa.52.1, %if.then147.5.1 ]
%E_el.5.5.1 = phi float [ %E_el.5.4.1, %if.end258.4.1 ], [ %1436, %if.then182.5.1 ], [ %E_el.5.4.1, %if.then147.5.1 ]
%E_lj.3.5.1 = phi float [ %E_lj.3.4.1, %if.end258.4.1 ], [ %add216.5.1, %if.then182.5.1 ], [ %E_lj.3.4.1, %if.then147.5.1 ]
%fcj_buf.sroa.0.1.5.1 = phi <4 x float> [ %fcj_buf.sroa.0.1.4.1, %if.end258.4.1 ], [ %extractVec245.5.1, %if.then182.5.1 ], [ %fcj_buf.sroa.0.1.4.1, %if.then147.5.1 ]
%and145.6.1 = and i32 %64, 16384
%tobool146.6.1 = icmp eq i32 %and145.6.1, 0
br i1 %tobool146.6.1, label %if.end258.6.1, label %if.then147.6.1
if.then147.6.1: ; preds = %if.end258.5.1
%1437 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx154.6.3, align 16, !tbaa !36
%1438 = fsub <4 x float> %1437, %870
%1439 = extractelement <4 x float> %1438, i32 0
%1440 = extractelement <4 x float> %1438, i32 1
%mul3.i.i589.6.1 = fmul float %1440, %1440
%1441 = tail call float @llvm.fmuladd.f32(float %1439, float %1439, float %mul3.i.i589.6.1) #5
%1442 = extractelement <4 x float> %1438, i32 2
%1443 = tail call float @llvm.fmuladd.f32(float %1442, float %1442, float %1441) #5
%and168.6.1 = and i32 %66, 16384
%tobool169.6.1 = icmp ne i32 %and168.6.1, 0
%cond.6.1 = select i1 %tobool169.6.1, float 1.000000e+00, float 0.000000e+00
%cmp174.6.1 = icmp eq i32 %50, %868
%or.cond.6.1 = and i1 %cmp63, %cmp174.6.1
%not.or.cond.6.1 = xor i1 %or.cond.6.1, true
%cmp176..6.1 = or i1 %cmp176, %not.or.cond.6.1
%conv178.6.1 = uitofp i1 %cmp176..6.1 to float
%mul179.6.1 = fmul float %conv178.6.1, %nbparam_params_rcoulomb_sq
%cmp180.6.1 = fcmp olt float %1443, %mul179.6.1
br i1 %cmp180.6.1, label %if.then182.6.1, label %if.end258.6.1
if.then182.6.1: ; preds = %if.then147.6.1
%extractVec166.6.1 = shufflevector <4 x float> %1438, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%1444 = extractelement <4 x float> %1437, i32 3
%1445 = load i32, i32 addrspace(1)* %arrayidx183.6.3, align 4, !tbaa !41
%mul184.6.1 = mul nsw i32 %1445, %ntypes
%add185.6.1 = add nsw i32 %mul184.6.1, %872
%mul186.6.1 = shl nsw i32 %add185.6.1, 1
%1446 = sext i32 %mul186.6.1 to i64
%arrayidx187.6.1 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %1446
%1447 = load float, float addrspace(2)* %arrayidx187.6.1, align 4, !tbaa !39
%add191.6.1 = or i32 %mul186.6.1, 1
%1448 = sext i32 %add191.6.1 to i64
%arrayidx192.6.1 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %1448
%1449 = load float, float addrspace(2)* %arrayidx192.6.1, align 4, !tbaa !39
%sub193.6.1 = fsub float 1.000000e+00, %cond.6.1
%1450 = tail call float @llvm.fmuladd.f32(float %sub193.6.1, float 0x3D71979980000000, float %1443)
%cmp.i.i587.6.1 = fcmp olt float %1450, 0.000000e+00
%call.i.i.6.1 = tail call float @llvm.sqrt.f32(float %1450) #6
%call.i.i.op.6.1 = fdiv float 1.000000e+00, %call.i.i.6.1
%div196.6.1 = select i1 %cmp.i.i587.6.1, float 0x7FF8000000000000, float %call.i.i.op.6.1
%mul197.6.1 = fmul float %div196.6.1, %div196.6.1
%mul198.6.1 = fmul float %mul197.6.1, %mul197.6.1
%mul199.6.1 = fmul float %mul197.6.1, %mul198.6.1
%mul200.6.1 = fmul float %cond.6.1, %mul199.6.1
%neg.6.1 = fsub float -0.000000e+00, %1447
%1451 = tail call float @llvm.fmuladd.f32(float %1449, float %mul200.6.1, float %neg.6.1)
%mul202.6.1 = fmul float %mul200.6.1, %1451
%mul203.6.1 = fmul float %mul197.6.1, %mul202.6.1
%1452 = tail call float @llvm.fmuladd.f32(float %mul200.6.1, float %mul200.6.1, float %nbparam_params_repulsion_shift_cpot)
%mul207.6.1 = fmul float %1452, %1449
%add211.6.1 = fadd float %mul200.6.1, %nbparam_params_dispersion_shift_cpot
%mul212.6.1 = fmul float %add211.6.1, %1447
%mul213.6.1 = fmul float %mul212.6.1, 0x3FC5555560000000
%neg214.6.1 = fsub float -0.000000e+00, %mul213.6.1
%1453 = tail call float @llvm.fmuladd.f32(float %mul207.6.1, float 0x3FB5555540000000, float %neg214.6.1)
%mul215.6.1 = fmul float %cond.6.1, %1453
%add216.6.1 = fadd float %E_lj.3.5.1, %mul215.6.1
%mul217.6.1 = fmul float %871, %1444
%mul218.6.1 = fmul float %cond.6.1, %mul197.6.1
%mul220.6.1 = fmul float %mul, %1450
%mul.i585.6.1 = fmul float %mul220.6.1, %mul220.6.1
%1454 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i585.6.1, float 0x3FBDA79640000000) #5
%1455 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i585.6.1, float 0x3FE03C5780000000) #5
%1456 = tail call float @llvm.fmuladd.f32(float %1454, float %mul.i585.6.1, float 1.000000e+00) #5
%1457 = tail call float @llvm.fmuladd.f32(float %1455, float %mul220.6.1, float %1456) #5
%div.i586.6.1 = fdiv float 1.000000e+00, %1457, !fpmath !46
%1458 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i585.6.1, float 0xBF0BFF7260000000) #5
%1459 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i585.6.1, float 0x3F50794180000000) #5
%1460 = tail call float @llvm.fmuladd.f32(float %1458, float %mul.i585.6.1, float 0xBF93BDB200000000) #5
%1461 = tail call float @llvm.fmuladd.f32(float %1459, float %mul.i585.6.1, float 0x3FB1D5E760000000) #5
%1462 = tail call float @llvm.fmuladd.f32(float %1460, float %mul.i585.6.1, float 0xBFE81272E0000000) #5
%1463 = tail call float @llvm.fmuladd.f32(float %1461, float %mul220.6.1, float %1462) #5
%mul11.i.6.1 = fmul float %1463, %div.i586.6.1
%mul222.6.1 = fmul float %mul19, %mul11.i.6.1
%1464 = tail call float @llvm.fmuladd.f32(float %mul218.6.1, float %div196.6.1, float %mul222.6.1)
%1465 = tail call float @llvm.fmuladd.f32(float %mul217.6.1, float %1464, float %mul203.6.1)
%mul225.6.1 = fmul float %1450, %div196.6.1
%mul226.6.1 = fmul float %mul225.6.1, %nbparam_params_ewald_beta
%fabs.i.6.1 = tail call float @llvm.fabs.f32(float %mul226.6.1) #5
%and.i.6.1 = bitcast float %fabs.i.6.1 to i32
%mul.i.6.1 = fmul float %mul226.6.1, %mul226.6.1
%div.i.6.1 = fdiv float 1.000000e+00, %mul.i.6.1, !fpmath !46
%sub.i.6.1 = fadd float %fabs.i.6.1, -1.000000e+00
%cmp.i583.6.1 = fcmp olt float %fabs.i.6.1, 1.250000e+00
%cond.i.6.1 = select i1 %cmp.i583.6.1, float %sub.i.6.1, float %div.i.6.1
%cmp2.i.6.1 = fcmp olt float %fabs.i.6.1, 8.437500e-01
%cond6.i.6.1 = select i1 %cmp2.i.6.1, float %mul.i.6.1, float %cond.i.6.1
%1466 = tail call float @llvm.fmuladd.f32(float %cond6.i.6.1, float 0xC07E384EA0000000, float 0xC090046160000000) #5
%1467 = tail call float @llvm.fmuladd.f32(float %cond6.i.6.1, float %1466, float 0xC083EC8820000000) #5
%1468 = tail call float @llvm.fmuladd.f32(float %cond6.i.6.1, float %1467, float 0xC064145D40000000) #5
%1469 = tail call float @llvm.fmuladd.f32(float %cond6.i.6.1, float %1468, float 0xC031C20960000000) #5
%1470 = tail call float @llvm.fmuladd.f32(float %cond6.i.6.1, float %1469, float 0xBFE993BA80000000) #5
%1471 = tail call float @llvm.fmuladd.f32(float %cond6.i.6.1, float %1470, float 0xBF84341240000000) #5
%1472 = tail call float @llvm.fmuladd.f32(float %cond6.i.6.1, float 0xC03670E240000000, float 0x407DA874E0000000) #5
%1473 = tail call float @llvm.fmuladd.f32(float %cond6.i.6.1, float %1472, float 0x40A3F219C0000000) #5
%1474 = tail call float @llvm.fmuladd.f32(float %cond6.i.6.1, float %1473, float 0x40A8FFB760000000) #5
%1475 = tail call float @llvm.fmuladd.f32(float %cond6.i.6.1, float %1474, float 0x409802EB20000000) #5
%1476 = tail call float @llvm.fmuladd.f32(float %cond6.i.6.1, float %1475, float 0x40745CAE20000000) #5
%1477 = tail call float @llvm.fmuladd.f32(float %cond6.i.6.1, float %1476, float 0x403E568B20000000) #5
%1478 = tail call float @llvm.fmuladd.f32(float %cond6.i.6.1, float 0xC023A0EFC0000000, float 0xC054526560000000) #5
%1479 = tail call float @llvm.fmuladd.f32(float %cond6.i.6.1, float %1478, float 0xC067135CE0000000) #5
%1480 = tail call float @llvm.fmuladd.f32(float %cond6.i.6.1, float %1479, float 0xC0644CB180000000) #5
%1481 = tail call float @llvm.fmuladd.f32(float %cond6.i.6.1, float %1480, float 0xC04F300AE0000000) #5
%1482 = tail call float @llvm.fmuladd.f32(float %cond6.i.6.1, float %1481, float 0xC0251E0440000000) #5
%1483 = tail call float @llvm.fmuladd.f32(float %cond6.i.6.1, float %1482, float 0xBFE63416E0000000) #5
%1484 = tail call float @llvm.fmuladd.f32(float %cond6.i.6.1, float %1483, float 0xBF84341260000000) #5
%1485 = tail call float @llvm.fmuladd.f32(float %cond6.i.6.1, float 0xBFAEEFF2E0000000, float 0x401A47EF80000000) #5
%1486 = tail call float @llvm.fmuladd.f32(float %cond6.i.6.1, float %1485, float 0x405B28A3E0000000) #5
%1487 = tail call float @llvm.fmuladd.f32(float %cond6.i.6.1, float %1486, float 0x407AD02160000000) #5
%1488 = tail call float @llvm.fmuladd.f32(float %cond6.i.6.1, float %1487, float 0x40842B1920000000) #5
%1489 = tail call float @llvm.fmuladd.f32(float %cond6.i.6.1, float %1488, float 0x407B290DE0000000) #5
%1490 = tail call float @llvm.fmuladd.f32(float %cond6.i.6.1, float %1489, float 0x4061350C60000000) #5
%1491 = tail call float @llvm.fmuladd.f32(float %cond6.i.6.1, float %1490, float 0x4033A6B9C0000000) #5
%cmp32.i.6.1 = fcmp olt float %fabs.i.6.1, 0x4006DB6DA0000000
%cond36.i.6.1 = select i1 %cmp32.i.6.1, float %1484, float %1471
%cond41.i.6.1 = select i1 %cmp32.i.6.1, float %1491, float %1477
%1492 = tail call float @llvm.fmuladd.f32(float %cond6.i.6.1, float 0xBF61BF3800000000, float 0x3FA22A3660000000) #5
%1493 = tail call float @llvm.fmuladd.f32(float %cond6.i.6.1, float %1492, float 0xBFBC639840000000) #5
%1494 = tail call float @llvm.fmuladd.f32(float %cond6.i.6.1, float %1493, float 0x3FD45FCA80000000) #5
%1495 = tail call float @llvm.fmuladd.f32(float %cond6.i.6.1, float %1494, float 0xBFD7D24100000000) #5
%1496 = tail call float @llvm.fmuladd.f32(float %cond6.i.6.1, float %1495, float 0x3FDA8D00A0000000) #5
%1497 = tail call float @llvm.fmuladd.f32(float %cond6.i.6.1, float %1496, float 0xBF6359B8C0000000) #5
%1498 = tail call float @llvm.fmuladd.f32(float %cond6.i.6.1, float 0x3F888B5460000000, float 0x3F8BEDC260000000) #5
%1499 = tail call float @llvm.fmuladd.f32(float %cond6.i.6.1, float %1498, float 0x3FC02660E0000000) #5
%1500 = tail call float @llvm.fmuladd.f32(float %cond6.i.6.1, float %1499, float 0x3FB2635CE0000000) #5
%1501 = tail call float @llvm.fmuladd.f32(float %cond6.i.6.1, float %1500, float 0x3FE14AF0A0000000) #5
%1502 = tail call float @llvm.fmuladd.f32(float %cond6.i.6.1, float %1501, float 0x3FBB3E6620000000) #5
%cond57.i.6.1 = select i1 %cmp.i583.6.1, float %1497, float %cond36.i.6.1
%cond62.i.6.1 = select i1 %cmp.i583.6.1, float %1502, float %cond41.i.6.1
%1503 = tail call float @llvm.fmuladd.f32(float %cond6.i.6.1, float 0xBEF8EAD620000000, float 0xBF77A29120000000) #5
%1504 = tail call float @llvm.fmuladd.f32(float %cond6.i.6.1, float %1503, float 0xBF9D2A51E0000000) #5
%1505 = tail call float @llvm.fmuladd.f32(float %cond6.i.6.1, float %1504, float 0xBFD4CD7D60000000) #5
%1506 = tail call float @llvm.fmuladd.f32(float %cond6.i.6.1, float %1505, float 0x3FC06EBA80000000) #5
%1507 = tail call float @llvm.fmuladd.f32(float %cond6.i.6.1, float 0xBED09C4340000000, float 0x3F215DC920000000) #5
%1508 = tail call float @llvm.fmuladd.f32(float %cond6.i.6.1, float %1507, float 0x3F74D022C0000000) #5
%1509 = tail call float @llvm.fmuladd.f32(float %cond6.i.6.1, float %1508, float 0x3FB0A54C60000000) #5
%1510 = tail call float @llvm.fmuladd.f32(float %cond6.i.6.1, float %1509, float 0x3FD97779C0000000) #5
%cond75.i.6.1 = select i1 %cmp2.i.6.1, float %1506, float %cond57.i.6.1
%cond80.i.6.1 = select i1 %cmp2.i.6.1, float %1510, float %cond62.i.6.1
%1511 = tail call float @llvm.fmuladd.f32(float %cond6.i.6.1, float %cond80.i.6.1, float 1.000000e+00) #5
%div82.i.6.1 = fdiv float %cond75.i.6.1, %1511, !fpmath !46
%and83.i.6.1 = and i32 %and.i.6.1, -4096
%astype84.i.6.1 = bitcast i32 %and83.i.6.1 to float
%sub85.i.6.1 = fsub float -0.000000e+00, %astype84.i.6.1
%1512 = tail call float @llvm.fmuladd.f32(float %sub85.i.6.1, float %astype84.i.6.1, float -5.625000e-01) #5
%cmp.i2.i.6.1 = fcmp olt float %1512, 0.000000e+00
%cond.i3.i.6.1 = select i1 %cmp.i2.i.6.1, float -5.000000e-01, float 5.000000e-01
%1513 = tail call float @llvm.fmuladd.f32(float %1512, float 0x3FF7154760000000, float %cond.i3.i.6.1) #5
%conv.i4.i.6.1 = fptosi float %1513 to i32
%conv1.i5.i.6.1 = sitofp i32 %conv.i4.i.6.1 to float
%1514 = tail call float @llvm.fmuladd.f32(float %conv1.i5.i.6.1, float 0xBFE62E3000000000, float %1512) #5
%mul.i6.i.6.1 = fmul float %conv1.i5.i.6.1, 0xBEE2FEFA20000000
%add.i7.i.6.1 = fadd float %1514, %mul.i6.i.6.1
%mul3.i8.i.6.1 = fmul float %add.i7.i.6.1, %add.i7.i.6.1
%1515 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.6.1, float 0x3E66376980000000, float 0xBEBBBD41C0000000) #5
%1516 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.6.1, float %1515, float 0x3F11566AA0000000) #5
%1517 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.6.1, float %1516, float 0xBF66C16C20000000) #5
%1518 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.6.1, float %1517, float 0x3FC5555560000000) #5
%sub8.i9.i.6.1 = fsub float -0.000000e+00, %1518
%1519 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.6.1, float %sub8.i9.i.6.1, float %add.i7.i.6.1) #5
%sub10.i10.i.6.1 = fsub float -0.000000e+00, %mul.i6.i.6.1
%mul11.i11.i.6.1 = fmul float %add.i7.i.6.1, %1519
%sub12.i12.i.6.1 = fsub float 2.000000e+00, %1519
%div.i13.i.6.1 = fdiv float %mul11.i11.i.6.1, %sub12.i12.i.6.1, !fpmath !46
%sub13.i14.i.6.1 = fsub float %sub10.i10.i.6.1, %div.i13.i.6.1
%sub14.i15.i.6.1 = fsub float %sub13.i14.i.6.1, %1514
%sub15.i16.i.6.1 = fsub float 1.000000e+00, %sub14.i15.i.6.1
%astype.i17.i.6.1 = bitcast float %sub15.i16.i.6.1 to i32
%shl.i18.i.6.1 = shl i32 %conv.i4.i.6.1, 23
%add16.i19.i.6.1 = add nsw i32 %astype.i17.i.6.1, %shl.i18.i.6.1
%astype17.i20.i.6.1 = bitcast i32 %add16.i19.i.6.1 to float
%cmp18.i21.i.6.1 = fcmp olt float %1512, 0xC055D589E0000000
%cond20.i22.i.6.1 = select i1 %cmp18.i21.i.6.1, float 0.000000e+00, float %astype17.i20.i.6.1
%cmp21.i23.i.6.1 = fcmp olt float %1512, 0x40562E4300000000
%cond26.i24.i.6.1 = select i1 %cmp21.i23.i.6.1, float %cond20.i22.i.6.1, float 0x7FF0000000000000
%cmp.i.i25.i.6.1 = fcmp uno float %1512, 0.000000e+00
%cond31.i26.i.6.1 = select i1 %cmp.i.i25.i.6.1, float %1512, float %cond26.i24.i.6.1
%sub88.i.6.1 = fsub float %astype84.i.6.1, %fabs.i.6.1
%add.i584.6.1 = fadd float %fabs.i.6.1, %astype84.i.6.1
%1520 = tail call float @llvm.fmuladd.f32(float %sub88.i.6.1, float %add.i584.6.1, float %div82.i.6.1) #5
%cmp.i1.i.6.1 = fcmp olt float %1520, 0.000000e+00
%cond.i.i.6.1 = select i1 %cmp.i1.i.6.1, float -5.000000e-01, float 5.000000e-01
%1521 = tail call float @llvm.fmuladd.f32(float %1520, float 0x3FF7154760000000, float %cond.i.i.6.1) #5
%conv.i.i.6.1 = fptosi float %1521 to i32
%conv1.i.i.6.1 = sitofp i32 %conv.i.i.6.1 to float
%1522 = tail call float @llvm.fmuladd.f32(float %conv1.i.i.6.1, float 0xBFE62E3000000000, float %1520) #5
%mul.i.i.6.1 = fmul float %conv1.i.i.6.1, 0xBEE2FEFA20000000
%add.i.i.6.1 = fadd float %1522, %mul.i.i.6.1
%mul3.i.i.6.1 = fmul float %add.i.i.6.1, %add.i.i.6.1
%1523 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.6.1, float 0x3E66376980000000, float 0xBEBBBD41C0000000) #5
%1524 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.6.1, float %1523, float 0x3F11566AA0000000) #5
%1525 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.6.1, float %1524, float 0xBF66C16C20000000) #5
%1526 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.6.1, float %1525, float 0x3FC5555560000000) #5
%sub8.i.i.6.1 = fsub float -0.000000e+00, %1526
%1527 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.6.1, float %sub8.i.i.6.1, float %add.i.i.6.1) #5
%sub10.i.i.6.1 = fsub float -0.000000e+00, %mul.i.i.6.1
%mul11.i.i.6.1 = fmul float %add.i.i.6.1, %1527
%sub12.i.i.6.1 = fsub float 2.000000e+00, %1527
%div.i.i.6.1 = fdiv float %mul11.i.i.6.1, %sub12.i.i.6.1, !fpmath !46
%sub13.i.i.6.1 = fsub float %sub10.i.i.6.1, %div.i.i.6.1
%sub14.i.i.6.1 = fsub float %sub13.i.i.6.1, %1522
%sub15.i.i.6.1 = fsub float 1.000000e+00, %sub14.i.i.6.1
%astype.i.i.6.1 = bitcast float %sub15.i.i.6.1 to i32
%shl.i.i.6.1 = shl i32 %conv.i.i.6.1, 23
%add16.i.i.6.1 = add nsw i32 %astype.i.i.6.1, %shl.i.i.6.1
%astype17.i.i.6.1 = bitcast i32 %add16.i.i.6.1 to float
%cmp18.i.i.6.1 = fcmp olt float %1520, 0xC055D589E0000000
%cond20.i.i.6.1 = select i1 %cmp18.i.i.6.1, float 0.000000e+00, float %astype17.i.i.6.1
%cmp21.i.i.6.1 = fcmp olt float %1520, 0x40562E4300000000
%cond26.i.i.6.1 = select i1 %cmp21.i.i.6.1, float %cond20.i.i.6.1, float 0x7FF0000000000000
%cmp.i.i.i.6.1 = fcmp uno float %1520, 0.000000e+00
%cond31.i.i.6.1 = select i1 %cmp.i.i.i.6.1, float %1520, float %cond26.i.i.6.1
%mul91.i.6.1 = fmul float %cond31.i26.i.6.1, %cond31.i.i.6.1
%div92.i.6.1 = fdiv float %mul91.i.6.1, %fabs.i.6.1, !fpmath !46
%sub93.i.6.1 = fsub float 2.000000e+00, %div92.i.6.1
%cmp94.i.6.1 = fcmp olt float %mul226.6.1, 0.000000e+00
%cond98.i.6.1 = select i1 %cmp94.i.6.1, float %sub93.i.6.1, float %div92.i.6.1
%cmp99.i.6.1 = fcmp olt float %fabs.i.6.1, 2.800000e+01
%cond103.i.6.1 = select i1 %cmp99.i.6.1, float %cond98.i.6.1, float 0.000000e+00
%sub104.i.6.1 = fsub float 0x3FC3D4FA80000000, %div82.i.6.1
%add105.i.6.1 = fadd float %div82.i.6.1, 0x3FEB0AC160000000
%add106.i.6.1 = fadd float %add105.i.6.1, 1.000000e+00
%cond111.i.6.1 = select i1 %cmp94.i.6.1, float %add106.i.6.1, float %sub104.i.6.1
%cond116.i.6.1 = select i1 %cmp.i583.6.1, float %cond111.i.6.1, float %cond103.i.6.1
%sub117.i.6.1 = fadd float %mul226.6.1, -5.000000e-01
%1528 = tail call float @llvm.fmuladd.f32(float %mul226.6.1, float %div82.i.6.1, float %sub117.i.6.1) #5
%sub119.i.6.1 = fsub float 5.000000e-01, %1528
%cond124.i.6.1 = select i1 %cmp2.i.6.1, float %sub119.i.6.1, float %cond116.i.6.1
%cmp125.i.6.1 = fcmp olt float %mul226.6.1, -6.000000e+00
%cond129.i.6.1 = select i1 %cmp125.i.6.1, float 2.000000e+00, float %cond124.i.6.1
%cmp.i.i.6.1 = fcmp uno float %mul226.6.1, 0.000000e+00
%cond134.i.6.1 = select i1 %cmp.i.i.6.1, float %mul226.6.1, float %cond129.i.6.1
%mul229.6.1 = fmul float %cond.6.1, %nbparam_params_sh_ewald
%neg230.6.1 = fsub float -0.000000e+00, %mul229.6.1
%1529 = tail call float @llvm.fmuladd.f32(float %div196.6.1, float %cond134.i.6.1, float %neg230.6.1)
%1530 = tail call float @llvm.fmuladd.f32(float %mul217.6.1, float %1529, float %E_el.5.5.1)
%splat.splatinsert.6.1 = insertelement <3 x float> undef, float %1465, i32 0
%splat.splat.6.1 = shufflevector <3 x float> %splat.splatinsert.6.1, <3 x float> undef, <3 x i32> zeroinitializer
%mul235.6.1 = fmul <3 x float> %extractVec166.6.1, %splat.splat.6.1
%extractVec243.6.1 = shufflevector <4 x float> %fcj_buf.sroa.0.1.5.1, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub244.6.1 = fsub <3 x float> %extractVec243.6.1, %mul235.6.1
%extractVec245.6.1 = shufflevector <3 x float> %sub244.6.1, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec253.6.1 = shufflevector <4 x float> %fci_buf.sroa.62.1, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add254.6.1 = fadd <3 x float> %extractVec253.6.1, %mul235.6.1
%extractVec255.6.1 = shufflevector <3 x float> %add254.6.1, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end258.6.1
if.end258.6.1: ; preds = %if.then182.6.1, %if.then147.6.1, %if.end258.5.1
%fci_buf.sroa.62.4 = phi <4 x float> [ %fci_buf.sroa.62.1, %if.end258.5.1 ], [ %extractVec255.6.1, %if.then182.6.1 ], [ %fci_buf.sroa.62.1, %if.then147.6.1 ]
%E_el.5.6.1 = phi float [ %E_el.5.5.1, %if.end258.5.1 ], [ %1530, %if.then182.6.1 ], [ %E_el.5.5.1, %if.then147.6.1 ]
%E_lj.3.6.1 = phi float [ %E_lj.3.5.1, %if.end258.5.1 ], [ %add216.6.1, %if.then182.6.1 ], [ %E_lj.3.5.1, %if.then147.6.1 ]
%fcj_buf.sroa.0.1.6.1 = phi <4 x float> [ %fcj_buf.sroa.0.1.5.1, %if.end258.5.1 ], [ %extractVec245.6.1, %if.then182.6.1 ], [ %fcj_buf.sroa.0.1.5.1, %if.then147.6.1 ]
%and145.7.1 = and i32 %64, 32768
%tobool146.7.1 = icmp eq i32 %and145.7.1, 0
br i1 %tobool146.7.1, label %if.end258.7.1, label %if.then147.7.1
if.then147.7.1: ; preds = %if.end258.6.1
%1531 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx154.7.3, align 16, !tbaa !36
%1532 = fsub <4 x float> %1531, %870
%1533 = extractelement <4 x float> %1532, i32 0
%1534 = extractelement <4 x float> %1532, i32 1
%mul3.i.i589.7.1 = fmul float %1534, %1534
%1535 = tail call float @llvm.fmuladd.f32(float %1533, float %1533, float %mul3.i.i589.7.1) #5
%1536 = extractelement <4 x float> %1532, i32 2
%1537 = tail call float @llvm.fmuladd.f32(float %1536, float %1536, float %1535) #5
%and168.7.1 = and i32 %66, 32768
%tobool169.7.1 = icmp ne i32 %and168.7.1, 0
%cond.7.1 = select i1 %tobool169.7.1, float 1.000000e+00, float 0.000000e+00
%cmp174.7.1 = icmp eq i32 %48, %868
%or.cond.7.1 = and i1 %cmp63, %cmp174.7.1
%not.or.cond.7.1 = xor i1 %or.cond.7.1, true
%cmp176..7.1 = or i1 %cmp176, %not.or.cond.7.1
%conv178.7.1 = uitofp i1 %cmp176..7.1 to float
%mul179.7.1 = fmul float %conv178.7.1, %nbparam_params_rcoulomb_sq
%cmp180.7.1 = fcmp olt float %1537, %mul179.7.1
br i1 %cmp180.7.1, label %if.then182.7.1, label %if.end258.7.1
if.then182.7.1: ; preds = %if.then147.7.1
%extractVec166.7.1 = shufflevector <4 x float> %1532, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%1538 = extractelement <4 x float> %1531, i32 3
%1539 = load i32, i32 addrspace(1)* %arrayidx183.7.3, align 4, !tbaa !41
%mul184.7.1 = mul nsw i32 %1539, %ntypes
%add185.7.1 = add nsw i32 %mul184.7.1, %872
%mul186.7.1 = shl nsw i32 %add185.7.1, 1
%1540 = sext i32 %mul186.7.1 to i64
%arrayidx187.7.1 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %1540
%1541 = load float, float addrspace(2)* %arrayidx187.7.1, align 4, !tbaa !39
%add191.7.1 = or i32 %mul186.7.1, 1
%1542 = sext i32 %add191.7.1 to i64
%arrayidx192.7.1 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %1542
%1543 = load float, float addrspace(2)* %arrayidx192.7.1, align 4, !tbaa !39
%sub193.7.1 = fsub float 1.000000e+00, %cond.7.1
%1544 = tail call float @llvm.fmuladd.f32(float %sub193.7.1, float 0x3D71979980000000, float %1537)
%cmp.i.i587.7.1 = fcmp olt float %1544, 0.000000e+00
%call.i.i.7.1 = tail call float @llvm.sqrt.f32(float %1544) #6
%call.i.i.op.7.1 = fdiv float 1.000000e+00, %call.i.i.7.1
%div196.7.1 = select i1 %cmp.i.i587.7.1, float 0x7FF8000000000000, float %call.i.i.op.7.1
%mul197.7.1 = fmul float %div196.7.1, %div196.7.1
%mul198.7.1 = fmul float %mul197.7.1, %mul197.7.1
%mul199.7.1 = fmul float %mul197.7.1, %mul198.7.1
%mul200.7.1 = fmul float %cond.7.1, %mul199.7.1
%neg.7.1 = fsub float -0.000000e+00, %1541
%1545 = tail call float @llvm.fmuladd.f32(float %1543, float %mul200.7.1, float %neg.7.1)
%mul202.7.1 = fmul float %mul200.7.1, %1545
%mul203.7.1 = fmul float %mul197.7.1, %mul202.7.1
%1546 = tail call float @llvm.fmuladd.f32(float %mul200.7.1, float %mul200.7.1, float %nbparam_params_repulsion_shift_cpot)
%mul207.7.1 = fmul float %1546, %1543
%add211.7.1 = fadd float %mul200.7.1, %nbparam_params_dispersion_shift_cpot
%mul212.7.1 = fmul float %add211.7.1, %1541
%mul213.7.1 = fmul float %mul212.7.1, 0x3FC5555560000000
%neg214.7.1 = fsub float -0.000000e+00, %mul213.7.1
%1547 = tail call float @llvm.fmuladd.f32(float %mul207.7.1, float 0x3FB5555540000000, float %neg214.7.1)
%mul215.7.1 = fmul float %cond.7.1, %1547
%add216.7.1 = fadd float %E_lj.3.6.1, %mul215.7.1
%mul217.7.1 = fmul float %871, %1538
%mul218.7.1 = fmul float %cond.7.1, %mul197.7.1
%mul220.7.1 = fmul float %mul, %1544
%mul.i585.7.1 = fmul float %mul220.7.1, %mul220.7.1
%1548 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i585.7.1, float 0x3FBDA79640000000) #5
%1549 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i585.7.1, float 0x3FE03C5780000000) #5
%1550 = tail call float @llvm.fmuladd.f32(float %1548, float %mul.i585.7.1, float 1.000000e+00) #5
%1551 = tail call float @llvm.fmuladd.f32(float %1549, float %mul220.7.1, float %1550) #5
%div.i586.7.1 = fdiv float 1.000000e+00, %1551, !fpmath !46
%1552 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i585.7.1, float 0xBF0BFF7260000000) #5
%1553 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i585.7.1, float 0x3F50794180000000) #5
%1554 = tail call float @llvm.fmuladd.f32(float %1552, float %mul.i585.7.1, float 0xBF93BDB200000000) #5
%1555 = tail call float @llvm.fmuladd.f32(float %1553, float %mul.i585.7.1, float 0x3FB1D5E760000000) #5
%1556 = tail call float @llvm.fmuladd.f32(float %1554, float %mul.i585.7.1, float 0xBFE81272E0000000) #5
%1557 = tail call float @llvm.fmuladd.f32(float %1555, float %mul220.7.1, float %1556) #5
%mul11.i.7.1 = fmul float %1557, %div.i586.7.1
%mul222.7.1 = fmul float %mul19, %mul11.i.7.1
%1558 = tail call float @llvm.fmuladd.f32(float %mul218.7.1, float %div196.7.1, float %mul222.7.1)
%1559 = tail call float @llvm.fmuladd.f32(float %mul217.7.1, float %1558, float %mul203.7.1)
%mul225.7.1 = fmul float %1544, %div196.7.1
%mul226.7.1 = fmul float %mul225.7.1, %nbparam_params_ewald_beta
%fabs.i.7.1 = tail call float @llvm.fabs.f32(float %mul226.7.1) #5
%and.i.7.1 = bitcast float %fabs.i.7.1 to i32
%mul.i.7.1 = fmul float %mul226.7.1, %mul226.7.1
%div.i.7.1 = fdiv float 1.000000e+00, %mul.i.7.1, !fpmath !46
%sub.i.7.1 = fadd float %fabs.i.7.1, -1.000000e+00
%cmp.i583.7.1 = fcmp olt float %fabs.i.7.1, 1.250000e+00
%cond.i.7.1 = select i1 %cmp.i583.7.1, float %sub.i.7.1, float %div.i.7.1
%cmp2.i.7.1 = fcmp olt float %fabs.i.7.1, 8.437500e-01
%cond6.i.7.1 = select i1 %cmp2.i.7.1, float %mul.i.7.1, float %cond.i.7.1
%1560 = tail call float @llvm.fmuladd.f32(float %cond6.i.7.1, float 0xC07E384EA0000000, float 0xC090046160000000) #5
%1561 = tail call float @llvm.fmuladd.f32(float %cond6.i.7.1, float %1560, float 0xC083EC8820000000) #5
%1562 = tail call float @llvm.fmuladd.f32(float %cond6.i.7.1, float %1561, float 0xC064145D40000000) #5
%1563 = tail call float @llvm.fmuladd.f32(float %cond6.i.7.1, float %1562, float 0xC031C20960000000) #5
%1564 = tail call float @llvm.fmuladd.f32(float %cond6.i.7.1, float %1563, float 0xBFE993BA80000000) #5
%1565 = tail call float @llvm.fmuladd.f32(float %cond6.i.7.1, float %1564, float 0xBF84341240000000) #5
%1566 = tail call float @llvm.fmuladd.f32(float %cond6.i.7.1, float 0xC03670E240000000, float 0x407DA874E0000000) #5
%1567 = tail call float @llvm.fmuladd.f32(float %cond6.i.7.1, float %1566, float 0x40A3F219C0000000) #5
%1568 = tail call float @llvm.fmuladd.f32(float %cond6.i.7.1, float %1567, float 0x40A8FFB760000000) #5
%1569 = tail call float @llvm.fmuladd.f32(float %cond6.i.7.1, float %1568, float 0x409802EB20000000) #5
%1570 = tail call float @llvm.fmuladd.f32(float %cond6.i.7.1, float %1569, float 0x40745CAE20000000) #5
%1571 = tail call float @llvm.fmuladd.f32(float %cond6.i.7.1, float %1570, float 0x403E568B20000000) #5
%1572 = tail call float @llvm.fmuladd.f32(float %cond6.i.7.1, float 0xC023A0EFC0000000, float 0xC054526560000000) #5
%1573 = tail call float @llvm.fmuladd.f32(float %cond6.i.7.1, float %1572, float 0xC067135CE0000000) #5
%1574 = tail call float @llvm.fmuladd.f32(float %cond6.i.7.1, float %1573, float 0xC0644CB180000000) #5
%1575 = tail call float @llvm.fmuladd.f32(float %cond6.i.7.1, float %1574, float 0xC04F300AE0000000) #5
%1576 = tail call float @llvm.fmuladd.f32(float %cond6.i.7.1, float %1575, float 0xC0251E0440000000) #5
%1577 = tail call float @llvm.fmuladd.f32(float %cond6.i.7.1, float %1576, float 0xBFE63416E0000000) #5
%1578 = tail call float @llvm.fmuladd.f32(float %cond6.i.7.1, float %1577, float 0xBF84341260000000) #5
%1579 = tail call float @llvm.fmuladd.f32(float %cond6.i.7.1, float 0xBFAEEFF2E0000000, float 0x401A47EF80000000) #5
%1580 = tail call float @llvm.fmuladd.f32(float %cond6.i.7.1, float %1579, float 0x405B28A3E0000000) #5
%1581 = tail call float @llvm.fmuladd.f32(float %cond6.i.7.1, float %1580, float 0x407AD02160000000) #5
%1582 = tail call float @llvm.fmuladd.f32(float %cond6.i.7.1, float %1581, float 0x40842B1920000000) #5
%1583 = tail call float @llvm.fmuladd.f32(float %cond6.i.7.1, float %1582, float 0x407B290DE0000000) #5
%1584 = tail call float @llvm.fmuladd.f32(float %cond6.i.7.1, float %1583, float 0x4061350C60000000) #5
%1585 = tail call float @llvm.fmuladd.f32(float %cond6.i.7.1, float %1584, float 0x4033A6B9C0000000) #5
%cmp32.i.7.1 = fcmp olt float %fabs.i.7.1, 0x4006DB6DA0000000
%cond36.i.7.1 = select i1 %cmp32.i.7.1, float %1578, float %1565
%cond41.i.7.1 = select i1 %cmp32.i.7.1, float %1585, float %1571
%1586 = tail call float @llvm.fmuladd.f32(float %cond6.i.7.1, float 0xBF61BF3800000000, float 0x3FA22A3660000000) #5
%1587 = tail call float @llvm.fmuladd.f32(float %cond6.i.7.1, float %1586, float 0xBFBC639840000000) #5
%1588 = tail call float @llvm.fmuladd.f32(float %cond6.i.7.1, float %1587, float 0x3FD45FCA80000000) #5
%1589 = tail call float @llvm.fmuladd.f32(float %cond6.i.7.1, float %1588, float 0xBFD7D24100000000) #5
%1590 = tail call float @llvm.fmuladd.f32(float %cond6.i.7.1, float %1589, float 0x3FDA8D00A0000000) #5
%1591 = tail call float @llvm.fmuladd.f32(float %cond6.i.7.1, float %1590, float 0xBF6359B8C0000000) #5
%1592 = tail call float @llvm.fmuladd.f32(float %cond6.i.7.1, float 0x3F888B5460000000, float 0x3F8BEDC260000000) #5
%1593 = tail call float @llvm.fmuladd.f32(float %cond6.i.7.1, float %1592, float 0x3FC02660E0000000) #5
%1594 = tail call float @llvm.fmuladd.f32(float %cond6.i.7.1, float %1593, float 0x3FB2635CE0000000) #5
%1595 = tail call float @llvm.fmuladd.f32(float %cond6.i.7.1, float %1594, float 0x3FE14AF0A0000000) #5
%1596 = tail call float @llvm.fmuladd.f32(float %cond6.i.7.1, float %1595, float 0x3FBB3E6620000000) #5
%cond57.i.7.1 = select i1 %cmp.i583.7.1, float %1591, float %cond36.i.7.1
%cond62.i.7.1 = select i1 %cmp.i583.7.1, float %1596, float %cond41.i.7.1
%1597 = tail call float @llvm.fmuladd.f32(float %cond6.i.7.1, float 0xBEF8EAD620000000, float 0xBF77A29120000000) #5
%1598 = tail call float @llvm.fmuladd.f32(float %cond6.i.7.1, float %1597, float 0xBF9D2A51E0000000) #5
%1599 = tail call float @llvm.fmuladd.f32(float %cond6.i.7.1, float %1598, float 0xBFD4CD7D60000000) #5
%1600 = tail call float @llvm.fmuladd.f32(float %cond6.i.7.1, float %1599, float 0x3FC06EBA80000000) #5
%1601 = tail call float @llvm.fmuladd.f32(float %cond6.i.7.1, float 0xBED09C4340000000, float 0x3F215DC920000000) #5
%1602 = tail call float @llvm.fmuladd.f32(float %cond6.i.7.1, float %1601, float 0x3F74D022C0000000) #5
%1603 = tail call float @llvm.fmuladd.f32(float %cond6.i.7.1, float %1602, float 0x3FB0A54C60000000) #5
%1604 = tail call float @llvm.fmuladd.f32(float %cond6.i.7.1, float %1603, float 0x3FD97779C0000000) #5
%cond75.i.7.1 = select i1 %cmp2.i.7.1, float %1600, float %cond57.i.7.1
%cond80.i.7.1 = select i1 %cmp2.i.7.1, float %1604, float %cond62.i.7.1
%1605 = tail call float @llvm.fmuladd.f32(float %cond6.i.7.1, float %cond80.i.7.1, float 1.000000e+00) #5
%div82.i.7.1 = fdiv float %cond75.i.7.1, %1605, !fpmath !46
%and83.i.7.1 = and i32 %and.i.7.1, -4096
%astype84.i.7.1 = bitcast i32 %and83.i.7.1 to float
%sub85.i.7.1 = fsub float -0.000000e+00, %astype84.i.7.1
%1606 = tail call float @llvm.fmuladd.f32(float %sub85.i.7.1, float %astype84.i.7.1, float -5.625000e-01) #5
%cmp.i2.i.7.1 = fcmp olt float %1606, 0.000000e+00
%cond.i3.i.7.1 = select i1 %cmp.i2.i.7.1, float -5.000000e-01, float 5.000000e-01
%1607 = tail call float @llvm.fmuladd.f32(float %1606, float 0x3FF7154760000000, float %cond.i3.i.7.1) #5
%conv.i4.i.7.1 = fptosi float %1607 to i32
%conv1.i5.i.7.1 = sitofp i32 %conv.i4.i.7.1 to float
%1608 = tail call float @llvm.fmuladd.f32(float %conv1.i5.i.7.1, float 0xBFE62E3000000000, float %1606) #5
%mul.i6.i.7.1 = fmul float %conv1.i5.i.7.1, 0xBEE2FEFA20000000
%add.i7.i.7.1 = fadd float %1608, %mul.i6.i.7.1
%mul3.i8.i.7.1 = fmul float %add.i7.i.7.1, %add.i7.i.7.1
%1609 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.7.1, float 0x3E66376980000000, float 0xBEBBBD41C0000000) #5
%1610 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.7.1, float %1609, float 0x3F11566AA0000000) #5
%1611 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.7.1, float %1610, float 0xBF66C16C20000000) #5
%1612 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.7.1, float %1611, float 0x3FC5555560000000) #5
%sub8.i9.i.7.1 = fsub float -0.000000e+00, %1612
%1613 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.7.1, float %sub8.i9.i.7.1, float %add.i7.i.7.1) #5
%sub10.i10.i.7.1 = fsub float -0.000000e+00, %mul.i6.i.7.1
%mul11.i11.i.7.1 = fmul float %add.i7.i.7.1, %1613
%sub12.i12.i.7.1 = fsub float 2.000000e+00, %1613
%div.i13.i.7.1 = fdiv float %mul11.i11.i.7.1, %sub12.i12.i.7.1, !fpmath !46
%sub13.i14.i.7.1 = fsub float %sub10.i10.i.7.1, %div.i13.i.7.1
%sub14.i15.i.7.1 = fsub float %sub13.i14.i.7.1, %1608
%sub15.i16.i.7.1 = fsub float 1.000000e+00, %sub14.i15.i.7.1
%astype.i17.i.7.1 = bitcast float %sub15.i16.i.7.1 to i32
%shl.i18.i.7.1 = shl i32 %conv.i4.i.7.1, 23
%add16.i19.i.7.1 = add nsw i32 %astype.i17.i.7.1, %shl.i18.i.7.1
%astype17.i20.i.7.1 = bitcast i32 %add16.i19.i.7.1 to float
%cmp18.i21.i.7.1 = fcmp olt float %1606, 0xC055D589E0000000
%cond20.i22.i.7.1 = select i1 %cmp18.i21.i.7.1, float 0.000000e+00, float %astype17.i20.i.7.1
%cmp21.i23.i.7.1 = fcmp olt float %1606, 0x40562E4300000000
%cond26.i24.i.7.1 = select i1 %cmp21.i23.i.7.1, float %cond20.i22.i.7.1, float 0x7FF0000000000000
%cmp.i.i25.i.7.1 = fcmp uno float %1606, 0.000000e+00
%cond31.i26.i.7.1 = select i1 %cmp.i.i25.i.7.1, float %1606, float %cond26.i24.i.7.1
%sub88.i.7.1 = fsub float %astype84.i.7.1, %fabs.i.7.1
%add.i584.7.1 = fadd float %fabs.i.7.1, %astype84.i.7.1
%1614 = tail call float @llvm.fmuladd.f32(float %sub88.i.7.1, float %add.i584.7.1, float %div82.i.7.1) #5
%cmp.i1.i.7.1 = fcmp olt float %1614, 0.000000e+00
%cond.i.i.7.1 = select i1 %cmp.i1.i.7.1, float -5.000000e-01, float 5.000000e-01
%1615 = tail call float @llvm.fmuladd.f32(float %1614, float 0x3FF7154760000000, float %cond.i.i.7.1) #5
%conv.i.i.7.1 = fptosi float %1615 to i32
%conv1.i.i.7.1 = sitofp i32 %conv.i.i.7.1 to float
%1616 = tail call float @llvm.fmuladd.f32(float %conv1.i.i.7.1, float 0xBFE62E3000000000, float %1614) #5
%mul.i.i.7.1 = fmul float %conv1.i.i.7.1, 0xBEE2FEFA20000000
%add.i.i.7.1 = fadd float %1616, %mul.i.i.7.1
%mul3.i.i.7.1 = fmul float %add.i.i.7.1, %add.i.i.7.1
%1617 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.7.1, float 0x3E66376980000000, float 0xBEBBBD41C0000000) #5
%1618 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.7.1, float %1617, float 0x3F11566AA0000000) #5
%1619 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.7.1, float %1618, float 0xBF66C16C20000000) #5
%1620 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.7.1, float %1619, float 0x3FC5555560000000) #5
%sub8.i.i.7.1 = fsub float -0.000000e+00, %1620
%1621 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.7.1, float %sub8.i.i.7.1, float %add.i.i.7.1) #5
%sub10.i.i.7.1 = fsub float -0.000000e+00, %mul.i.i.7.1
%mul11.i.i.7.1 = fmul float %add.i.i.7.1, %1621
%sub12.i.i.7.1 = fsub float 2.000000e+00, %1621
%div.i.i.7.1 = fdiv float %mul11.i.i.7.1, %sub12.i.i.7.1, !fpmath !46
%sub13.i.i.7.1 = fsub float %sub10.i.i.7.1, %div.i.i.7.1
%sub14.i.i.7.1 = fsub float %sub13.i.i.7.1, %1616
%sub15.i.i.7.1 = fsub float 1.000000e+00, %sub14.i.i.7.1
%astype.i.i.7.1 = bitcast float %sub15.i.i.7.1 to i32
%shl.i.i.7.1 = shl i32 %conv.i.i.7.1, 23
%add16.i.i.7.1 = add nsw i32 %astype.i.i.7.1, %shl.i.i.7.1
%astype17.i.i.7.1 = bitcast i32 %add16.i.i.7.1 to float
%cmp18.i.i.7.1 = fcmp olt float %1614, 0xC055D589E0000000
%cond20.i.i.7.1 = select i1 %cmp18.i.i.7.1, float 0.000000e+00, float %astype17.i.i.7.1
%cmp21.i.i.7.1 = fcmp olt float %1614, 0x40562E4300000000
%cond26.i.i.7.1 = select i1 %cmp21.i.i.7.1, float %cond20.i.i.7.1, float 0x7FF0000000000000
%cmp.i.i.i.7.1 = fcmp uno float %1614, 0.000000e+00
%cond31.i.i.7.1 = select i1 %cmp.i.i.i.7.1, float %1614, float %cond26.i.i.7.1
%mul91.i.7.1 = fmul float %cond31.i26.i.7.1, %cond31.i.i.7.1
%div92.i.7.1 = fdiv float %mul91.i.7.1, %fabs.i.7.1, !fpmath !46
%sub93.i.7.1 = fsub float 2.000000e+00, %div92.i.7.1
%cmp94.i.7.1 = fcmp olt float %mul226.7.1, 0.000000e+00
%cond98.i.7.1 = select i1 %cmp94.i.7.1, float %sub93.i.7.1, float %div92.i.7.1
%cmp99.i.7.1 = fcmp olt float %fabs.i.7.1, 2.800000e+01
%cond103.i.7.1 = select i1 %cmp99.i.7.1, float %cond98.i.7.1, float 0.000000e+00
%sub104.i.7.1 = fsub float 0x3FC3D4FA80000000, %div82.i.7.1
%add105.i.7.1 = fadd float %div82.i.7.1, 0x3FEB0AC160000000
%add106.i.7.1 = fadd float %add105.i.7.1, 1.000000e+00
%cond111.i.7.1 = select i1 %cmp94.i.7.1, float %add106.i.7.1, float %sub104.i.7.1
%cond116.i.7.1 = select i1 %cmp.i583.7.1, float %cond111.i.7.1, float %cond103.i.7.1
%sub117.i.7.1 = fadd float %mul226.7.1, -5.000000e-01
%1622 = tail call float @llvm.fmuladd.f32(float %mul226.7.1, float %div82.i.7.1, float %sub117.i.7.1) #5
%sub119.i.7.1 = fsub float 5.000000e-01, %1622
%cond124.i.7.1 = select i1 %cmp2.i.7.1, float %sub119.i.7.1, float %cond116.i.7.1
%cmp125.i.7.1 = fcmp olt float %mul226.7.1, -6.000000e+00
%cond129.i.7.1 = select i1 %cmp125.i.7.1, float 2.000000e+00, float %cond124.i.7.1
%cmp.i.i.7.1 = fcmp uno float %mul226.7.1, 0.000000e+00
%cond134.i.7.1 = select i1 %cmp.i.i.7.1, float %mul226.7.1, float %cond129.i.7.1
%mul229.7.1 = fmul float %cond.7.1, %nbparam_params_sh_ewald
%neg230.7.1 = fsub float -0.000000e+00, %mul229.7.1
%1623 = tail call float @llvm.fmuladd.f32(float %div196.7.1, float %cond134.i.7.1, float %neg230.7.1)
%1624 = tail call float @llvm.fmuladd.f32(float %mul217.7.1, float %1623, float %E_el.5.6.1)
%splat.splatinsert.7.1 = insertelement <3 x float> undef, float %1559, i32 0
%splat.splat.7.1 = shufflevector <3 x float> %splat.splatinsert.7.1, <3 x float> undef, <3 x i32> zeroinitializer
%mul235.7.1 = fmul <3 x float> %extractVec166.7.1, %splat.splat.7.1
%extractVec243.7.1 = shufflevector <4 x float> %fcj_buf.sroa.0.1.6.1, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub244.7.1 = fsub <3 x float> %extractVec243.7.1, %mul235.7.1
%extractVec245.7.1 = shufflevector <3 x float> %sub244.7.1, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec253.7.1 = shufflevector <4 x float> %fci_buf.sroa.72.1, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add254.7.1 = fadd <3 x float> %extractVec253.7.1, %mul235.7.1
%extractVec255.7.1 = shufflevector <3 x float> %add254.7.1, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end258.7.1
if.end258.7.1: ; preds = %if.then182.7.1, %if.then147.7.1, %if.end258.6.1
%fci_buf.sroa.72.5 = phi <4 x float> [ %fci_buf.sroa.72.1, %if.end258.6.1 ], [ %extractVec255.7.1, %if.then182.7.1 ], [ %fci_buf.sroa.72.1, %if.then147.7.1 ]
%E_el.5.7.1 = phi float [ %E_el.5.6.1, %if.end258.6.1 ], [ %1624, %if.then182.7.1 ], [ %E_el.5.6.1, %if.then147.7.1 ]
%E_lj.3.7.1 = phi float [ %E_lj.3.6.1, %if.end258.6.1 ], [ %add216.7.1, %if.then182.7.1 ], [ %E_lj.3.6.1, %if.then147.7.1 ]
%fcj_buf.sroa.0.1.7.1 = phi <4 x float> [ %fcj_buf.sroa.0.1.6.1, %if.end258.6.1 ], [ %extractVec245.7.1, %if.then182.7.1 ], [ %fcj_buf.sroa.0.1.6.1, %if.then147.7.1 ]
%1625 = extractelement <4 x float> %fcj_buf.sroa.0.1.7.1, i32 0
store float %1625, float addrspace(3)* %arrayidx263, align 4, !tbaa !39
%1626 = extractelement <4 x float> %fcj_buf.sroa.0.1.7.1, i32 1
store float %1626, float addrspace(3)* %arrayidx265, align 4, !tbaa !39
%1627 = extractelement <4 x float> %fcj_buf.sroa.0.1.7.1, i32 2
store float %1627, float addrspace(3)* %arrayidx267, align 4, !tbaa !39
tail call fastcc void @reduce_force_j_generic(float addrspace(3)* %2, float addrspace(1)* %f, i32 %x.i, i32 %y.i, i32 %add136.1)
br label %for.inc269.1
for.inc269.1: ; preds = %if.end258.7.1, %for.inc269
%fci_buf.sroa.72.6 = phi <4 x float> [ %fci_buf.sroa.72.1, %for.inc269 ], [ %fci_buf.sroa.72.5, %if.end258.7.1 ]
%fci_buf.sroa.62.5 = phi <4 x float> [ %fci_buf.sroa.62.1, %for.inc269 ], [ %fci_buf.sroa.62.4, %if.end258.7.1 ]
%fci_buf.sroa.52.5 = phi <4 x float> [ %fci_buf.sroa.52.1, %for.inc269 ], [ %fci_buf.sroa.52.4, %if.end258.7.1 ]
%fci_buf.sroa.42.5 = phi <4 x float> [ %fci_buf.sroa.42.1, %for.inc269 ], [ %fci_buf.sroa.42.4, %if.end258.7.1 ]
%fci_buf.sroa.32.5 = phi <4 x float> [ %fci_buf.sroa.32.1, %for.inc269 ], [ %fci_buf.sroa.32.4, %if.end258.7.1 ]
%fci_buf.sroa.22.5 = phi <4 x float> [ %fci_buf.sroa.22.1, %for.inc269 ], [ %fci_buf.sroa.22.4, %if.end258.7.1 ]
%fci_buf.sroa.12.5 = phi <4 x float> [ %fci_buf.sroa.12.1, %for.inc269 ], [ %fci_buf.sroa.12.4, %if.end258.7.1 ]
%fci_buf.sroa.0.5 = phi <4 x float> [ %fci_buf.sroa.0.2, %for.inc269 ], [ %fci_buf.sroa.0.4, %if.end258.7.1 ]
%E_el.6.1 = phi float [ %E_el.6, %for.inc269 ], [ %E_el.5.7.1, %if.end258.7.1 ]
%E_lj.4.1 = phi float [ %E_lj.4, %for.inc269 ], [ %E_lj.3.7.1, %if.end258.7.1 ]
%and124.2 = and i32 %64, 16711680
%tobool125.2 = icmp eq i32 %and124.2, 0
br i1 %tobool125.2, label %for.inc269.2, label %if.then126.2
if.then126.2: ; preds = %for.inc269.1
%1628 = load i32, i32 addrspace(3)* %arrayidx134.2, align 4, !tbaa !41
%mul135.2 = shl nsw i32 %1628, 3
%add136.2 = add i32 %mul135.2, %y.i
%1629 = sext i32 %add136.2 to i64
%arrayidx137.2 = getelementptr inbounds <4 x float>, <4 x float> addrspace(1)* %xq, i64 %1629
%1630 = load <4 x float>, <4 x float> addrspace(1)* %arrayidx137.2, align 16, !tbaa !36
%1631 = extractelement <4 x float> %1630, i32 3
%arrayidx139.2 = getelementptr inbounds i32, i32 addrspace(1)* %atom_types, i64 %1629
%1632 = load i32, i32 addrspace(1)* %arrayidx139.2, align 4, !tbaa !41
%and145.2774 = and i32 %64, 65536
%tobool146.2775 = icmp eq i32 %and145.2774, 0
br i1 %tobool146.2775, label %if.end258.2936, label %if.then147.2788
if.then147.2788: ; preds = %if.then126.2
%1633 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx154.3939, align 16, !tbaa !36
%1634 = fsub <4 x float> %1633, %1630
%1635 = extractelement <4 x float> %1634, i32 0
%1636 = extractelement <4 x float> %1634, i32 1
%mul3.i.i589.2777 = fmul float %1636, %1636
%1637 = tail call float @llvm.fmuladd.f32(float %1635, float %1635, float %mul3.i.i589.2777) #5
%1638 = extractelement <4 x float> %1634, i32 2
%1639 = tail call float @llvm.fmuladd.f32(float %1638, float %1638, float %1637) #5
%and168.2778 = and i32 %66, 65536
%tobool169.2779 = icmp ne i32 %and168.2778, 0
%cond.2780 = select i1 %tobool169.2779, float 1.000000e+00, float 0.000000e+00
%cmp174.2781 = icmp eq i32 %mul31, %1628
%or.cond.2782 = and i1 %cmp63, %cmp174.2781
%not.or.cond.2783 = xor i1 %or.cond.2782, true
%cmp176..2784 = or i1 %cmp176, %not.or.cond.2783
%conv178.2785 = uitofp i1 %cmp176..2784 to float
%mul179.2786 = fmul float %conv178.2785, %nbparam_params_rcoulomb_sq
%cmp180.2787 = fcmp olt float %1639, %mul179.2786
br i1 %cmp180.2787, label %if.then182.2931, label %if.end258.2936
if.then182.2931: ; preds = %if.then147.2788
%extractVec166.2789 = shufflevector <4 x float> %1634, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%1640 = extractelement <4 x float> %1633, i32 3
%1641 = load i32, i32 addrspace(1)* %arrayidx183.3955, align 4, !tbaa !41
%mul184.2793 = mul nsw i32 %1641, %ntypes
%add185.2794 = add nsw i32 %mul184.2793, %1632
%mul186.2795 = shl nsw i32 %add185.2794, 1
%1642 = sext i32 %mul186.2795 to i64
%arrayidx187.2796 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %1642
%1643 = load float, float addrspace(2)* %arrayidx187.2796, align 4, !tbaa !39
%add191.2797 = or i32 %mul186.2795, 1
%1644 = sext i32 %add191.2797 to i64
%arrayidx192.2798 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %1644
%1645 = load float, float addrspace(2)* %arrayidx192.2798, align 4, !tbaa !39
%sub193.2799 = fsub float 1.000000e+00, %cond.2780
%1646 = tail call float @llvm.fmuladd.f32(float %sub193.2799, float 0x3D71979980000000, float %1639)
%cmp.i.i587.2800 = fcmp olt float %1646, 0.000000e+00
%call.i.i.2801 = tail call float @llvm.sqrt.f32(float %1646) #6
%call.i.i.op.2802 = fdiv float 1.000000e+00, %call.i.i.2801
%div196.2803 = select i1 %cmp.i.i587.2800, float 0x7FF8000000000000, float %call.i.i.op.2802
%mul197.2804 = fmul float %div196.2803, %div196.2803
%mul198.2805 = fmul float %mul197.2804, %mul197.2804
%mul199.2806 = fmul float %mul197.2804, %mul198.2805
%mul200.2807 = fmul float %cond.2780, %mul199.2806
%neg.2808 = fsub float -0.000000e+00, %1643
%1647 = tail call float @llvm.fmuladd.f32(float %1645, float %mul200.2807, float %neg.2808)
%mul202.2809 = fmul float %mul200.2807, %1647
%mul203.2810 = fmul float %mul197.2804, %mul202.2809
%1648 = tail call float @llvm.fmuladd.f32(float %mul200.2807, float %mul200.2807, float %nbparam_params_repulsion_shift_cpot)
%mul207.2811 = fmul float %1648, %1645
%add211.2812 = fadd float %mul200.2807, %nbparam_params_dispersion_shift_cpot
%mul212.2813 = fmul float %add211.2812, %1643
%mul213.2814 = fmul float %mul212.2813, 0x3FC5555560000000
%neg214.2815 = fsub float -0.000000e+00, %mul213.2814
%1649 = tail call float @llvm.fmuladd.f32(float %mul207.2811, float 0x3FB5555540000000, float %neg214.2815)
%mul215.2816 = fmul float %cond.2780, %1649
%add216.2817 = fadd float %E_lj.4.1, %mul215.2816
%mul217.2818 = fmul float %1631, %1640
%mul218.2819 = fmul float %cond.2780, %mul197.2804
%mul220.2820 = fmul float %mul, %1646
%mul.i585.2821 = fmul float %mul220.2820, %mul220.2820
%1650 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i585.2821, float 0x3FBDA79640000000) #5
%1651 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i585.2821, float 0x3FE03C5780000000) #5
%1652 = tail call float @llvm.fmuladd.f32(float %1650, float %mul.i585.2821, float 1.000000e+00) #5
%1653 = tail call float @llvm.fmuladd.f32(float %1651, float %mul220.2820, float %1652) #5
%div.i586.2822 = fdiv float 1.000000e+00, %1653, !fpmath !46
%1654 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i585.2821, float 0xBF0BFF7260000000) #5
%1655 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i585.2821, float 0x3F50794180000000) #5
%1656 = tail call float @llvm.fmuladd.f32(float %1654, float %mul.i585.2821, float 0xBF93BDB200000000) #5
%1657 = tail call float @llvm.fmuladd.f32(float %1655, float %mul.i585.2821, float 0x3FB1D5E760000000) #5
%1658 = tail call float @llvm.fmuladd.f32(float %1656, float %mul.i585.2821, float 0xBFE81272E0000000) #5
%1659 = tail call float @llvm.fmuladd.f32(float %1657, float %mul220.2820, float %1658) #5
%mul11.i.2823 = fmul float %1659, %div.i586.2822
%mul222.2824 = fmul float %mul19, %mul11.i.2823
%1660 = tail call float @llvm.fmuladd.f32(float %mul218.2819, float %div196.2803, float %mul222.2824)
%1661 = tail call float @llvm.fmuladd.f32(float %mul217.2818, float %1660, float %mul203.2810)
%mul225.2825 = fmul float %1646, %div196.2803
%mul226.2826 = fmul float %mul225.2825, %nbparam_params_ewald_beta
%fabs.i.2827 = tail call float @llvm.fabs.f32(float %mul226.2826) #5
%and.i.2828 = bitcast float %fabs.i.2827 to i32
%mul.i.2829 = fmul float %mul226.2826, %mul226.2826
%div.i.2830 = fdiv float 1.000000e+00, %mul.i.2829, !fpmath !46
%sub.i.2831 = fadd float %fabs.i.2827, -1.000000e+00
%cmp.i583.2832 = fcmp olt float %fabs.i.2827, 1.250000e+00
%cond.i.2833 = select i1 %cmp.i583.2832, float %sub.i.2831, float %div.i.2830
%cmp2.i.2834 = fcmp olt float %fabs.i.2827, 8.437500e-01
%cond6.i.2835 = select i1 %cmp2.i.2834, float %mul.i.2829, float %cond.i.2833
%1662 = tail call float @llvm.fmuladd.f32(float %cond6.i.2835, float 0xC07E384EA0000000, float 0xC090046160000000) #5
%1663 = tail call float @llvm.fmuladd.f32(float %cond6.i.2835, float %1662, float 0xC083EC8820000000) #5
%1664 = tail call float @llvm.fmuladd.f32(float %cond6.i.2835, float %1663, float 0xC064145D40000000) #5
%1665 = tail call float @llvm.fmuladd.f32(float %cond6.i.2835, float %1664, float 0xC031C20960000000) #5
%1666 = tail call float @llvm.fmuladd.f32(float %cond6.i.2835, float %1665, float 0xBFE993BA80000000) #5
%1667 = tail call float @llvm.fmuladd.f32(float %cond6.i.2835, float %1666, float 0xBF84341240000000) #5
%1668 = tail call float @llvm.fmuladd.f32(float %cond6.i.2835, float 0xC03670E240000000, float 0x407DA874E0000000) #5
%1669 = tail call float @llvm.fmuladd.f32(float %cond6.i.2835, float %1668, float 0x40A3F219C0000000) #5
%1670 = tail call float @llvm.fmuladd.f32(float %cond6.i.2835, float %1669, float 0x40A8FFB760000000) #5
%1671 = tail call float @llvm.fmuladd.f32(float %cond6.i.2835, float %1670, float 0x409802EB20000000) #5
%1672 = tail call float @llvm.fmuladd.f32(float %cond6.i.2835, float %1671, float 0x40745CAE20000000) #5
%1673 = tail call float @llvm.fmuladd.f32(float %cond6.i.2835, float %1672, float 0x403E568B20000000) #5
%1674 = tail call float @llvm.fmuladd.f32(float %cond6.i.2835, float 0xC023A0EFC0000000, float 0xC054526560000000) #5
%1675 = tail call float @llvm.fmuladd.f32(float %cond6.i.2835, float %1674, float 0xC067135CE0000000) #5
%1676 = tail call float @llvm.fmuladd.f32(float %cond6.i.2835, float %1675, float 0xC0644CB180000000) #5
%1677 = tail call float @llvm.fmuladd.f32(float %cond6.i.2835, float %1676, float 0xC04F300AE0000000) #5
%1678 = tail call float @llvm.fmuladd.f32(float %cond6.i.2835, float %1677, float 0xC0251E0440000000) #5
%1679 = tail call float @llvm.fmuladd.f32(float %cond6.i.2835, float %1678, float 0xBFE63416E0000000) #5
%1680 = tail call float @llvm.fmuladd.f32(float %cond6.i.2835, float %1679, float 0xBF84341260000000) #5
%1681 = tail call float @llvm.fmuladd.f32(float %cond6.i.2835, float 0xBFAEEFF2E0000000, float 0x401A47EF80000000) #5
%1682 = tail call float @llvm.fmuladd.f32(float %cond6.i.2835, float %1681, float 0x405B28A3E0000000) #5
%1683 = tail call float @llvm.fmuladd.f32(float %cond6.i.2835, float %1682, float 0x407AD02160000000) #5
%1684 = tail call float @llvm.fmuladd.f32(float %cond6.i.2835, float %1683, float 0x40842B1920000000) #5
%1685 = tail call float @llvm.fmuladd.f32(float %cond6.i.2835, float %1684, float 0x407B290DE0000000) #5
%1686 = tail call float @llvm.fmuladd.f32(float %cond6.i.2835, float %1685, float 0x4061350C60000000) #5
%1687 = tail call float @llvm.fmuladd.f32(float %cond6.i.2835, float %1686, float 0x4033A6B9C0000000) #5
%cmp32.i.2836 = fcmp olt float %fabs.i.2827, 0x4006DB6DA0000000
%cond36.i.2837 = select i1 %cmp32.i.2836, float %1680, float %1667
%cond41.i.2838 = select i1 %cmp32.i.2836, float %1687, float %1673
%1688 = tail call float @llvm.fmuladd.f32(float %cond6.i.2835, float 0xBF61BF3800000000, float 0x3FA22A3660000000) #5
%1689 = tail call float @llvm.fmuladd.f32(float %cond6.i.2835, float %1688, float 0xBFBC639840000000) #5
%1690 = tail call float @llvm.fmuladd.f32(float %cond6.i.2835, float %1689, float 0x3FD45FCA80000000) #5
%1691 = tail call float @llvm.fmuladd.f32(float %cond6.i.2835, float %1690, float 0xBFD7D24100000000) #5
%1692 = tail call float @llvm.fmuladd.f32(float %cond6.i.2835, float %1691, float 0x3FDA8D00A0000000) #5
%1693 = tail call float @llvm.fmuladd.f32(float %cond6.i.2835, float %1692, float 0xBF6359B8C0000000) #5
%1694 = tail call float @llvm.fmuladd.f32(float %cond6.i.2835, float 0x3F888B5460000000, float 0x3F8BEDC260000000) #5
%1695 = tail call float @llvm.fmuladd.f32(float %cond6.i.2835, float %1694, float 0x3FC02660E0000000) #5
%1696 = tail call float @llvm.fmuladd.f32(float %cond6.i.2835, float %1695, float 0x3FB2635CE0000000) #5
%1697 = tail call float @llvm.fmuladd.f32(float %cond6.i.2835, float %1696, float 0x3FE14AF0A0000000) #5
%1698 = tail call float @llvm.fmuladd.f32(float %cond6.i.2835, float %1697, float 0x3FBB3E6620000000) #5
%cond57.i.2839 = select i1 %cmp.i583.2832, float %1693, float %cond36.i.2837
%cond62.i.2840 = select i1 %cmp.i583.2832, float %1698, float %cond41.i.2838
%1699 = tail call float @llvm.fmuladd.f32(float %cond6.i.2835, float 0xBEF8EAD620000000, float 0xBF77A29120000000) #5
%1700 = tail call float @llvm.fmuladd.f32(float %cond6.i.2835, float %1699, float 0xBF9D2A51E0000000) #5
%1701 = tail call float @llvm.fmuladd.f32(float %cond6.i.2835, float %1700, float 0xBFD4CD7D60000000) #5
%1702 = tail call float @llvm.fmuladd.f32(float %cond6.i.2835, float %1701, float 0x3FC06EBA80000000) #5
%1703 = tail call float @llvm.fmuladd.f32(float %cond6.i.2835, float 0xBED09C4340000000, float 0x3F215DC920000000) #5
%1704 = tail call float @llvm.fmuladd.f32(float %cond6.i.2835, float %1703, float 0x3F74D022C0000000) #5
%1705 = tail call float @llvm.fmuladd.f32(float %cond6.i.2835, float %1704, float 0x3FB0A54C60000000) #5
%1706 = tail call float @llvm.fmuladd.f32(float %cond6.i.2835, float %1705, float 0x3FD97779C0000000) #5
%cond75.i.2841 = select i1 %cmp2.i.2834, float %1702, float %cond57.i.2839
%cond80.i.2842 = select i1 %cmp2.i.2834, float %1706, float %cond62.i.2840
%1707 = tail call float @llvm.fmuladd.f32(float %cond6.i.2835, float %cond80.i.2842, float 1.000000e+00) #5
%div82.i.2843 = fdiv float %cond75.i.2841, %1707, !fpmath !46
%and83.i.2844 = and i32 %and.i.2828, -4096
%astype84.i.2845 = bitcast i32 %and83.i.2844 to float
%sub85.i.2846 = fsub float -0.000000e+00, %astype84.i.2845
%1708 = tail call float @llvm.fmuladd.f32(float %sub85.i.2846, float %astype84.i.2845, float -5.625000e-01) #5
%cmp.i2.i.2847 = fcmp olt float %1708, 0.000000e+00
%cond.i3.i.2848 = select i1 %cmp.i2.i.2847, float -5.000000e-01, float 5.000000e-01
%1709 = tail call float @llvm.fmuladd.f32(float %1708, float 0x3FF7154760000000, float %cond.i3.i.2848) #5
%conv.i4.i.2849 = fptosi float %1709 to i32
%conv1.i5.i.2850 = sitofp i32 %conv.i4.i.2849 to float
%1710 = tail call float @llvm.fmuladd.f32(float %conv1.i5.i.2850, float 0xBFE62E3000000000, float %1708) #5
%mul.i6.i.2851 = fmul float %conv1.i5.i.2850, 0xBEE2FEFA20000000
%add.i7.i.2852 = fadd float %1710, %mul.i6.i.2851
%mul3.i8.i.2853 = fmul float %add.i7.i.2852, %add.i7.i.2852
%1711 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.2853, float 0x3E66376980000000, float 0xBEBBBD41C0000000) #5
%1712 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.2853, float %1711, float 0x3F11566AA0000000) #5
%1713 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.2853, float %1712, float 0xBF66C16C20000000) #5
%1714 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.2853, float %1713, float 0x3FC5555560000000) #5
%sub8.i9.i.2854 = fsub float -0.000000e+00, %1714
%1715 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.2853, float %sub8.i9.i.2854, float %add.i7.i.2852) #5
%sub10.i10.i.2855 = fsub float -0.000000e+00, %mul.i6.i.2851
%mul11.i11.i.2856 = fmul float %add.i7.i.2852, %1715
%sub12.i12.i.2857 = fsub float 2.000000e+00, %1715
%div.i13.i.2858 = fdiv float %mul11.i11.i.2856, %sub12.i12.i.2857, !fpmath !46
%sub13.i14.i.2859 = fsub float %sub10.i10.i.2855, %div.i13.i.2858
%sub14.i15.i.2860 = fsub float %sub13.i14.i.2859, %1710
%sub15.i16.i.2861 = fsub float 1.000000e+00, %sub14.i15.i.2860
%astype.i17.i.2862 = bitcast float %sub15.i16.i.2861 to i32
%shl.i18.i.2863 = shl i32 %conv.i4.i.2849, 23
%add16.i19.i.2864 = add nsw i32 %astype.i17.i.2862, %shl.i18.i.2863
%astype17.i20.i.2865 = bitcast i32 %add16.i19.i.2864 to float
%cmp18.i21.i.2866 = fcmp olt float %1708, 0xC055D589E0000000
%cond20.i22.i.2867 = select i1 %cmp18.i21.i.2866, float 0.000000e+00, float %astype17.i20.i.2865
%cmp21.i23.i.2868 = fcmp olt float %1708, 0x40562E4300000000
%cond26.i24.i.2869 = select i1 %cmp21.i23.i.2868, float %cond20.i22.i.2867, float 0x7FF0000000000000
%cmp.i.i25.i.2870 = fcmp uno float %1708, 0.000000e+00
%cond31.i26.i.2871 = select i1 %cmp.i.i25.i.2870, float %1708, float %cond26.i24.i.2869
%sub88.i.2872 = fsub float %astype84.i.2845, %fabs.i.2827
%add.i584.2873 = fadd float %fabs.i.2827, %astype84.i.2845
%1716 = tail call float @llvm.fmuladd.f32(float %sub88.i.2872, float %add.i584.2873, float %div82.i.2843) #5
%cmp.i1.i.2874 = fcmp olt float %1716, 0.000000e+00
%cond.i.i.2875 = select i1 %cmp.i1.i.2874, float -5.000000e-01, float 5.000000e-01
%1717 = tail call float @llvm.fmuladd.f32(float %1716, float 0x3FF7154760000000, float %cond.i.i.2875) #5
%conv.i.i.2876 = fptosi float %1717 to i32
%conv1.i.i.2877 = sitofp i32 %conv.i.i.2876 to float
%1718 = tail call float @llvm.fmuladd.f32(float %conv1.i.i.2877, float 0xBFE62E3000000000, float %1716) #5
%mul.i.i.2878 = fmul float %conv1.i.i.2877, 0xBEE2FEFA20000000
%add.i.i.2879 = fadd float %1718, %mul.i.i.2878
%mul3.i.i.2880 = fmul float %add.i.i.2879, %add.i.i.2879
%1719 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.2880, float 0x3E66376980000000, float 0xBEBBBD41C0000000) #5
%1720 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.2880, float %1719, float 0x3F11566AA0000000) #5
%1721 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.2880, float %1720, float 0xBF66C16C20000000) #5
%1722 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.2880, float %1721, float 0x3FC5555560000000) #5
%sub8.i.i.2881 = fsub float -0.000000e+00, %1722
%1723 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.2880, float %sub8.i.i.2881, float %add.i.i.2879) #5
%sub10.i.i.2882 = fsub float -0.000000e+00, %mul.i.i.2878
%mul11.i.i.2883 = fmul float %add.i.i.2879, %1723
%sub12.i.i.2884 = fsub float 2.000000e+00, %1723
%div.i.i.2885 = fdiv float %mul11.i.i.2883, %sub12.i.i.2884, !fpmath !46
%sub13.i.i.2886 = fsub float %sub10.i.i.2882, %div.i.i.2885
%sub14.i.i.2887 = fsub float %sub13.i.i.2886, %1718
%sub15.i.i.2888 = fsub float 1.000000e+00, %sub14.i.i.2887
%astype.i.i.2889 = bitcast float %sub15.i.i.2888 to i32
%shl.i.i.2890 = shl i32 %conv.i.i.2876, 23
%add16.i.i.2891 = add nsw i32 %astype.i.i.2889, %shl.i.i.2890
%astype17.i.i.2892 = bitcast i32 %add16.i.i.2891 to float
%cmp18.i.i.2893 = fcmp olt float %1716, 0xC055D589E0000000
%cond20.i.i.2894 = select i1 %cmp18.i.i.2893, float 0.000000e+00, float %astype17.i.i.2892
%cmp21.i.i.2895 = fcmp olt float %1716, 0x40562E4300000000
%cond26.i.i.2896 = select i1 %cmp21.i.i.2895, float %cond20.i.i.2894, float 0x7FF0000000000000
%cmp.i.i.i.2897 = fcmp uno float %1716, 0.000000e+00
%cond31.i.i.2898 = select i1 %cmp.i.i.i.2897, float %1716, float %cond26.i.i.2896
%mul91.i.2899 = fmul float %cond31.i26.i.2871, %cond31.i.i.2898
%div92.i.2900 = fdiv float %mul91.i.2899, %fabs.i.2827, !fpmath !46
%sub93.i.2901 = fsub float 2.000000e+00, %div92.i.2900
%cmp94.i.2902 = fcmp olt float %mul226.2826, 0.000000e+00
%cond98.i.2903 = select i1 %cmp94.i.2902, float %sub93.i.2901, float %div92.i.2900
%cmp99.i.2904 = fcmp olt float %fabs.i.2827, 2.800000e+01
%cond103.i.2905 = select i1 %cmp99.i.2904, float %cond98.i.2903, float 0.000000e+00
%sub104.i.2906 = fsub float 0x3FC3D4FA80000000, %div82.i.2843
%add105.i.2907 = fadd float %div82.i.2843, 0x3FEB0AC160000000
%add106.i.2908 = fadd float %add105.i.2907, 1.000000e+00
%cond111.i.2909 = select i1 %cmp94.i.2902, float %add106.i.2908, float %sub104.i.2906
%cond116.i.2910 = select i1 %cmp.i583.2832, float %cond111.i.2909, float %cond103.i.2905
%sub117.i.2911 = fadd float %mul226.2826, -5.000000e-01
%1724 = tail call float @llvm.fmuladd.f32(float %mul226.2826, float %div82.i.2843, float %sub117.i.2911) #5
%sub119.i.2912 = fsub float 5.000000e-01, %1724
%cond124.i.2913 = select i1 %cmp2.i.2834, float %sub119.i.2912, float %cond116.i.2910
%cmp125.i.2914 = fcmp olt float %mul226.2826, -6.000000e+00
%cond129.i.2915 = select i1 %cmp125.i.2914, float 2.000000e+00, float %cond124.i.2913
%cmp.i.i.2916 = fcmp uno float %mul226.2826, 0.000000e+00
%cond134.i.2917 = select i1 %cmp.i.i.2916, float %mul226.2826, float %cond129.i.2915
%mul229.2918 = fmul float %cond.2780, %nbparam_params_sh_ewald
%neg230.2919 = fsub float -0.000000e+00, %mul229.2918
%1725 = tail call float @llvm.fmuladd.f32(float %div196.2803, float %cond134.i.2917, float %neg230.2919)
%1726 = tail call float @llvm.fmuladd.f32(float %mul217.2818, float %1725, float %E_el.6.1)
%splat.splatinsert.2920 = insertelement <3 x float> undef, float %1661, i32 0
%splat.splat.2921 = shufflevector <3 x float> %splat.splatinsert.2920, <3 x float> undef, <3 x i32> zeroinitializer
%mul235.2922 = fmul <3 x float> %extractVec166.2789, %splat.splat.2921
%sub244.2923 = fsub <3 x float> zeroinitializer, %mul235.2922
%extractVec245.2924 = shufflevector <3 x float> %sub244.2923, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec253.2928 = shufflevector <4 x float> %fci_buf.sroa.0.5, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add254.2929 = fadd <3 x float> %extractVec253.2928, %mul235.2922
%extractVec255.2930 = shufflevector <3 x float> %add254.2929, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end258.2936
if.end258.2936: ; preds = %if.then182.2931, %if.then147.2788, %if.then126.2
%fci_buf.sroa.0.6 = phi <4 x float> [ %fci_buf.sroa.0.5, %if.then126.2 ], [ %extractVec255.2930, %if.then182.2931 ], [ %fci_buf.sroa.0.5, %if.then147.2788 ]
%E_el.5.2932 = phi float [ %E_el.6.1, %if.then126.2 ], [ %1726, %if.then182.2931 ], [ %E_el.6.1, %if.then147.2788 ]
%E_lj.3.2933 = phi float [ %E_lj.4.1, %if.then126.2 ], [ %add216.2817, %if.then182.2931 ], [ %E_lj.4.1, %if.then147.2788 ]
%fcj_buf.sroa.0.1.2934 = phi <4 x float> [ <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float undef>, %if.then126.2 ], [ %extractVec245.2924, %if.then182.2931 ], [ <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float undef>, %if.then147.2788 ]
%and145.1.2 = and i32 %64, 131072
%tobool146.1.2 = icmp eq i32 %and145.1.2, 0
br i1 %tobool146.1.2, label %if.end258.1.2, label %if.then147.1.2
if.then147.1.2: ; preds = %if.end258.2936
%1727 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx154.1.3, align 16, !tbaa !36
%1728 = fsub <4 x float> %1727, %1630
%1729 = extractelement <4 x float> %1728, i32 0
%1730 = extractelement <4 x float> %1728, i32 1
%mul3.i.i589.1.2 = fmul float %1730, %1730
%1731 = tail call float @llvm.fmuladd.f32(float %1729, float %1729, float %mul3.i.i589.1.2) #5
%1732 = extractelement <4 x float> %1728, i32 2
%1733 = tail call float @llvm.fmuladd.f32(float %1732, float %1732, float %1731) #5
%and168.1.2 = and i32 %66, 131072
%tobool169.1.2 = icmp ne i32 %and168.1.2, 0
%cond.1.2 = select i1 %tobool169.1.2, float 1.000000e+00, float 0.000000e+00
%cmp174.1.2 = icmp eq i32 %60, %1628
%or.cond.1.2 = and i1 %cmp63, %cmp174.1.2
%not.or.cond.1.2 = xor i1 %or.cond.1.2, true
%cmp176..1.2 = or i1 %cmp176, %not.or.cond.1.2
%conv178.1.2 = uitofp i1 %cmp176..1.2 to float
%mul179.1.2 = fmul float %conv178.1.2, %nbparam_params_rcoulomb_sq
%cmp180.1.2 = fcmp olt float %1733, %mul179.1.2
br i1 %cmp180.1.2, label %if.then182.1.2, label %if.end258.1.2
if.then182.1.2: ; preds = %if.then147.1.2
%extractVec166.1.2 = shufflevector <4 x float> %1728, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%1734 = extractelement <4 x float> %1727, i32 3
%1735 = load i32, i32 addrspace(1)* %arrayidx183.1.3, align 4, !tbaa !41
%mul184.1.2 = mul nsw i32 %1735, %ntypes
%add185.1.2 = add nsw i32 %mul184.1.2, %1632
%mul186.1.2 = shl nsw i32 %add185.1.2, 1
%1736 = sext i32 %mul186.1.2 to i64
%arrayidx187.1.2 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %1736
%1737 = load float, float addrspace(2)* %arrayidx187.1.2, align 4, !tbaa !39
%add191.1.2 = or i32 %mul186.1.2, 1
%1738 = sext i32 %add191.1.2 to i64
%arrayidx192.1.2 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %1738
%1739 = load float, float addrspace(2)* %arrayidx192.1.2, align 4, !tbaa !39
%sub193.1.2 = fsub float 1.000000e+00, %cond.1.2
%1740 = tail call float @llvm.fmuladd.f32(float %sub193.1.2, float 0x3D71979980000000, float %1733)
%cmp.i.i587.1.2 = fcmp olt float %1740, 0.000000e+00
%call.i.i.1.2 = tail call float @llvm.sqrt.f32(float %1740) #6
%call.i.i.op.1.2 = fdiv float 1.000000e+00, %call.i.i.1.2
%div196.1.2 = select i1 %cmp.i.i587.1.2, float 0x7FF8000000000000, float %call.i.i.op.1.2
%mul197.1.2 = fmul float %div196.1.2, %div196.1.2
%mul198.1.2 = fmul float %mul197.1.2, %mul197.1.2
%mul199.1.2 = fmul float %mul197.1.2, %mul198.1.2
%mul200.1.2 = fmul float %cond.1.2, %mul199.1.2
%neg.1.2 = fsub float -0.000000e+00, %1737
%1741 = tail call float @llvm.fmuladd.f32(float %1739, float %mul200.1.2, float %neg.1.2)
%mul202.1.2 = fmul float %mul200.1.2, %1741
%mul203.1.2 = fmul float %mul197.1.2, %mul202.1.2
%1742 = tail call float @llvm.fmuladd.f32(float %mul200.1.2, float %mul200.1.2, float %nbparam_params_repulsion_shift_cpot)
%mul207.1.2 = fmul float %1742, %1739
%add211.1.2 = fadd float %mul200.1.2, %nbparam_params_dispersion_shift_cpot
%mul212.1.2 = fmul float %add211.1.2, %1737
%mul213.1.2 = fmul float %mul212.1.2, 0x3FC5555560000000
%neg214.1.2 = fsub float -0.000000e+00, %mul213.1.2
%1743 = tail call float @llvm.fmuladd.f32(float %mul207.1.2, float 0x3FB5555540000000, float %neg214.1.2)
%mul215.1.2 = fmul float %cond.1.2, %1743
%add216.1.2 = fadd float %E_lj.3.2933, %mul215.1.2
%mul217.1.2 = fmul float %1631, %1734
%mul218.1.2 = fmul float %cond.1.2, %mul197.1.2
%mul220.1.2 = fmul float %mul, %1740
%mul.i585.1.2 = fmul float %mul220.1.2, %mul220.1.2
%1744 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i585.1.2, float 0x3FBDA79640000000) #5
%1745 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i585.1.2, float 0x3FE03C5780000000) #5
%1746 = tail call float @llvm.fmuladd.f32(float %1744, float %mul.i585.1.2, float 1.000000e+00) #5
%1747 = tail call float @llvm.fmuladd.f32(float %1745, float %mul220.1.2, float %1746) #5
%div.i586.1.2 = fdiv float 1.000000e+00, %1747, !fpmath !46
%1748 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i585.1.2, float 0xBF0BFF7260000000) #5
%1749 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i585.1.2, float 0x3F50794180000000) #5
%1750 = tail call float @llvm.fmuladd.f32(float %1748, float %mul.i585.1.2, float 0xBF93BDB200000000) #5
%1751 = tail call float @llvm.fmuladd.f32(float %1749, float %mul.i585.1.2, float 0x3FB1D5E760000000) #5
%1752 = tail call float @llvm.fmuladd.f32(float %1750, float %mul.i585.1.2, float 0xBFE81272E0000000) #5
%1753 = tail call float @llvm.fmuladd.f32(float %1751, float %mul220.1.2, float %1752) #5
%mul11.i.1.2 = fmul float %1753, %div.i586.1.2
%mul222.1.2 = fmul float %mul19, %mul11.i.1.2
%1754 = tail call float @llvm.fmuladd.f32(float %mul218.1.2, float %div196.1.2, float %mul222.1.2)
%1755 = tail call float @llvm.fmuladd.f32(float %mul217.1.2, float %1754, float %mul203.1.2)
%mul225.1.2 = fmul float %1740, %div196.1.2
%mul226.1.2 = fmul float %mul225.1.2, %nbparam_params_ewald_beta
%fabs.i.1.2 = tail call float @llvm.fabs.f32(float %mul226.1.2) #5
%and.i.1.2 = bitcast float %fabs.i.1.2 to i32
%mul.i.1.2 = fmul float %mul226.1.2, %mul226.1.2
%div.i.1.2 = fdiv float 1.000000e+00, %mul.i.1.2, !fpmath !46
%sub.i.1.2 = fadd float %fabs.i.1.2, -1.000000e+00
%cmp.i583.1.2 = fcmp olt float %fabs.i.1.2, 1.250000e+00
%cond.i.1.2 = select i1 %cmp.i583.1.2, float %sub.i.1.2, float %div.i.1.2
%cmp2.i.1.2 = fcmp olt float %fabs.i.1.2, 8.437500e-01
%cond6.i.1.2 = select i1 %cmp2.i.1.2, float %mul.i.1.2, float %cond.i.1.2
%1756 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.2, float 0xC07E384EA0000000, float 0xC090046160000000) #5
%1757 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.2, float %1756, float 0xC083EC8820000000) #5
%1758 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.2, float %1757, float 0xC064145D40000000) #5
%1759 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.2, float %1758, float 0xC031C20960000000) #5
%1760 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.2, float %1759, float 0xBFE993BA80000000) #5
%1761 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.2, float %1760, float 0xBF84341240000000) #5
%1762 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.2, float 0xC03670E240000000, float 0x407DA874E0000000) #5
%1763 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.2, float %1762, float 0x40A3F219C0000000) #5
%1764 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.2, float %1763, float 0x40A8FFB760000000) #5
%1765 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.2, float %1764, float 0x409802EB20000000) #5
%1766 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.2, float %1765, float 0x40745CAE20000000) #5
%1767 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.2, float %1766, float 0x403E568B20000000) #5
%1768 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.2, float 0xC023A0EFC0000000, float 0xC054526560000000) #5
%1769 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.2, float %1768, float 0xC067135CE0000000) #5
%1770 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.2, float %1769, float 0xC0644CB180000000) #5
%1771 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.2, float %1770, float 0xC04F300AE0000000) #5
%1772 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.2, float %1771, float 0xC0251E0440000000) #5
%1773 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.2, float %1772, float 0xBFE63416E0000000) #5
%1774 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.2, float %1773, float 0xBF84341260000000) #5
%1775 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.2, float 0xBFAEEFF2E0000000, float 0x401A47EF80000000) #5
%1776 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.2, float %1775, float 0x405B28A3E0000000) #5
%1777 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.2, float %1776, float 0x407AD02160000000) #5
%1778 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.2, float %1777, float 0x40842B1920000000) #5
%1779 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.2, float %1778, float 0x407B290DE0000000) #5
%1780 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.2, float %1779, float 0x4061350C60000000) #5
%1781 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.2, float %1780, float 0x4033A6B9C0000000) #5
%cmp32.i.1.2 = fcmp olt float %fabs.i.1.2, 0x4006DB6DA0000000
%cond36.i.1.2 = select i1 %cmp32.i.1.2, float %1774, float %1761
%cond41.i.1.2 = select i1 %cmp32.i.1.2, float %1781, float %1767
%1782 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.2, float 0xBF61BF3800000000, float 0x3FA22A3660000000) #5
%1783 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.2, float %1782, float 0xBFBC639840000000) #5
%1784 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.2, float %1783, float 0x3FD45FCA80000000) #5
%1785 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.2, float %1784, float 0xBFD7D24100000000) #5
%1786 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.2, float %1785, float 0x3FDA8D00A0000000) #5
%1787 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.2, float %1786, float 0xBF6359B8C0000000) #5
%1788 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.2, float 0x3F888B5460000000, float 0x3F8BEDC260000000) #5
%1789 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.2, float %1788, float 0x3FC02660E0000000) #5
%1790 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.2, float %1789, float 0x3FB2635CE0000000) #5
%1791 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.2, float %1790, float 0x3FE14AF0A0000000) #5
%1792 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.2, float %1791, float 0x3FBB3E6620000000) #5
%cond57.i.1.2 = select i1 %cmp.i583.1.2, float %1787, float %cond36.i.1.2
%cond62.i.1.2 = select i1 %cmp.i583.1.2, float %1792, float %cond41.i.1.2
%1793 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.2, float 0xBEF8EAD620000000, float 0xBF77A29120000000) #5
%1794 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.2, float %1793, float 0xBF9D2A51E0000000) #5
%1795 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.2, float %1794, float 0xBFD4CD7D60000000) #5
%1796 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.2, float %1795, float 0x3FC06EBA80000000) #5
%1797 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.2, float 0xBED09C4340000000, float 0x3F215DC920000000) #5
%1798 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.2, float %1797, float 0x3F74D022C0000000) #5
%1799 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.2, float %1798, float 0x3FB0A54C60000000) #5
%1800 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.2, float %1799, float 0x3FD97779C0000000) #5
%cond75.i.1.2 = select i1 %cmp2.i.1.2, float %1796, float %cond57.i.1.2
%cond80.i.1.2 = select i1 %cmp2.i.1.2, float %1800, float %cond62.i.1.2
%1801 = tail call float @llvm.fmuladd.f32(float %cond6.i.1.2, float %cond80.i.1.2, float 1.000000e+00) #5
%div82.i.1.2 = fdiv float %cond75.i.1.2, %1801, !fpmath !46
%and83.i.1.2 = and i32 %and.i.1.2, -4096
%astype84.i.1.2 = bitcast i32 %and83.i.1.2 to float
%sub85.i.1.2 = fsub float -0.000000e+00, %astype84.i.1.2
%1802 = tail call float @llvm.fmuladd.f32(float %sub85.i.1.2, float %astype84.i.1.2, float -5.625000e-01) #5
%cmp.i2.i.1.2 = fcmp olt float %1802, 0.000000e+00
%cond.i3.i.1.2 = select i1 %cmp.i2.i.1.2, float -5.000000e-01, float 5.000000e-01
%1803 = tail call float @llvm.fmuladd.f32(float %1802, float 0x3FF7154760000000, float %cond.i3.i.1.2) #5
%conv.i4.i.1.2 = fptosi float %1803 to i32
%conv1.i5.i.1.2 = sitofp i32 %conv.i4.i.1.2 to float
%1804 = tail call float @llvm.fmuladd.f32(float %conv1.i5.i.1.2, float 0xBFE62E3000000000, float %1802) #5
%mul.i6.i.1.2 = fmul float %conv1.i5.i.1.2, 0xBEE2FEFA20000000
%add.i7.i.1.2 = fadd float %1804, %mul.i6.i.1.2
%mul3.i8.i.1.2 = fmul float %add.i7.i.1.2, %add.i7.i.1.2
%1805 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.1.2, float 0x3E66376980000000, float 0xBEBBBD41C0000000) #5
%1806 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.1.2, float %1805, float 0x3F11566AA0000000) #5
%1807 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.1.2, float %1806, float 0xBF66C16C20000000) #5
%1808 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.1.2, float %1807, float 0x3FC5555560000000) #5
%sub8.i9.i.1.2 = fsub float -0.000000e+00, %1808
%1809 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.1.2, float %sub8.i9.i.1.2, float %add.i7.i.1.2) #5
%sub10.i10.i.1.2 = fsub float -0.000000e+00, %mul.i6.i.1.2
%mul11.i11.i.1.2 = fmul float %add.i7.i.1.2, %1809
%sub12.i12.i.1.2 = fsub float 2.000000e+00, %1809
%div.i13.i.1.2 = fdiv float %mul11.i11.i.1.2, %sub12.i12.i.1.2, !fpmath !46
%sub13.i14.i.1.2 = fsub float %sub10.i10.i.1.2, %div.i13.i.1.2
%sub14.i15.i.1.2 = fsub float %sub13.i14.i.1.2, %1804
%sub15.i16.i.1.2 = fsub float 1.000000e+00, %sub14.i15.i.1.2
%astype.i17.i.1.2 = bitcast float %sub15.i16.i.1.2 to i32
%shl.i18.i.1.2 = shl i32 %conv.i4.i.1.2, 23
%add16.i19.i.1.2 = add nsw i32 %astype.i17.i.1.2, %shl.i18.i.1.2
%astype17.i20.i.1.2 = bitcast i32 %add16.i19.i.1.2 to float
%cmp18.i21.i.1.2 = fcmp olt float %1802, 0xC055D589E0000000
%cond20.i22.i.1.2 = select i1 %cmp18.i21.i.1.2, float 0.000000e+00, float %astype17.i20.i.1.2
%cmp21.i23.i.1.2 = fcmp olt float %1802, 0x40562E4300000000
%cond26.i24.i.1.2 = select i1 %cmp21.i23.i.1.2, float %cond20.i22.i.1.2, float 0x7FF0000000000000
%cmp.i.i25.i.1.2 = fcmp uno float %1802, 0.000000e+00
%cond31.i26.i.1.2 = select i1 %cmp.i.i25.i.1.2, float %1802, float %cond26.i24.i.1.2
%sub88.i.1.2 = fsub float %astype84.i.1.2, %fabs.i.1.2
%add.i584.1.2 = fadd float %fabs.i.1.2, %astype84.i.1.2
%1810 = tail call float @llvm.fmuladd.f32(float %sub88.i.1.2, float %add.i584.1.2, float %div82.i.1.2) #5
%cmp.i1.i.1.2 = fcmp olt float %1810, 0.000000e+00
%cond.i.i.1.2 = select i1 %cmp.i1.i.1.2, float -5.000000e-01, float 5.000000e-01
%1811 = tail call float @llvm.fmuladd.f32(float %1810, float 0x3FF7154760000000, float %cond.i.i.1.2) #5
%conv.i.i.1.2 = fptosi float %1811 to i32
%conv1.i.i.1.2 = sitofp i32 %conv.i.i.1.2 to float
%1812 = tail call float @llvm.fmuladd.f32(float %conv1.i.i.1.2, float 0xBFE62E3000000000, float %1810) #5
%mul.i.i.1.2 = fmul float %conv1.i.i.1.2, 0xBEE2FEFA20000000
%add.i.i.1.2 = fadd float %1812, %mul.i.i.1.2
%mul3.i.i.1.2 = fmul float %add.i.i.1.2, %add.i.i.1.2
%1813 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.1.2, float 0x3E66376980000000, float 0xBEBBBD41C0000000) #5
%1814 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.1.2, float %1813, float 0x3F11566AA0000000) #5
%1815 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.1.2, float %1814, float 0xBF66C16C20000000) #5
%1816 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.1.2, float %1815, float 0x3FC5555560000000) #5
%sub8.i.i.1.2 = fsub float -0.000000e+00, %1816
%1817 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.1.2, float %sub8.i.i.1.2, float %add.i.i.1.2) #5
%sub10.i.i.1.2 = fsub float -0.000000e+00, %mul.i.i.1.2
%mul11.i.i.1.2 = fmul float %add.i.i.1.2, %1817
%sub12.i.i.1.2 = fsub float 2.000000e+00, %1817
%div.i.i.1.2 = fdiv float %mul11.i.i.1.2, %sub12.i.i.1.2, !fpmath !46
%sub13.i.i.1.2 = fsub float %sub10.i.i.1.2, %div.i.i.1.2
%sub14.i.i.1.2 = fsub float %sub13.i.i.1.2, %1812
%sub15.i.i.1.2 = fsub float 1.000000e+00, %sub14.i.i.1.2
%astype.i.i.1.2 = bitcast float %sub15.i.i.1.2 to i32
%shl.i.i.1.2 = shl i32 %conv.i.i.1.2, 23
%add16.i.i.1.2 = add nsw i32 %astype.i.i.1.2, %shl.i.i.1.2
%astype17.i.i.1.2 = bitcast i32 %add16.i.i.1.2 to float
%cmp18.i.i.1.2 = fcmp olt float %1810, 0xC055D589E0000000
%cond20.i.i.1.2 = select i1 %cmp18.i.i.1.2, float 0.000000e+00, float %astype17.i.i.1.2
%cmp21.i.i.1.2 = fcmp olt float %1810, 0x40562E4300000000
%cond26.i.i.1.2 = select i1 %cmp21.i.i.1.2, float %cond20.i.i.1.2, float 0x7FF0000000000000
%cmp.i.i.i.1.2 = fcmp uno float %1810, 0.000000e+00
%cond31.i.i.1.2 = select i1 %cmp.i.i.i.1.2, float %1810, float %cond26.i.i.1.2
%mul91.i.1.2 = fmul float %cond31.i26.i.1.2, %cond31.i.i.1.2
%div92.i.1.2 = fdiv float %mul91.i.1.2, %fabs.i.1.2, !fpmath !46
%sub93.i.1.2 = fsub float 2.000000e+00, %div92.i.1.2
%cmp94.i.1.2 = fcmp olt float %mul226.1.2, 0.000000e+00
%cond98.i.1.2 = select i1 %cmp94.i.1.2, float %sub93.i.1.2, float %div92.i.1.2
%cmp99.i.1.2 = fcmp olt float %fabs.i.1.2, 2.800000e+01
%cond103.i.1.2 = select i1 %cmp99.i.1.2, float %cond98.i.1.2, float 0.000000e+00
%sub104.i.1.2 = fsub float 0x3FC3D4FA80000000, %div82.i.1.2
%add105.i.1.2 = fadd float %div82.i.1.2, 0x3FEB0AC160000000
%add106.i.1.2 = fadd float %add105.i.1.2, 1.000000e+00
%cond111.i.1.2 = select i1 %cmp94.i.1.2, float %add106.i.1.2, float %sub104.i.1.2
%cond116.i.1.2 = select i1 %cmp.i583.1.2, float %cond111.i.1.2, float %cond103.i.1.2
%sub117.i.1.2 = fadd float %mul226.1.2, -5.000000e-01
%1818 = tail call float @llvm.fmuladd.f32(float %mul226.1.2, float %div82.i.1.2, float %sub117.i.1.2) #5
%sub119.i.1.2 = fsub float 5.000000e-01, %1818
%cond124.i.1.2 = select i1 %cmp2.i.1.2, float %sub119.i.1.2, float %cond116.i.1.2
%cmp125.i.1.2 = fcmp olt float %mul226.1.2, -6.000000e+00
%cond129.i.1.2 = select i1 %cmp125.i.1.2, float 2.000000e+00, float %cond124.i.1.2
%cmp.i.i.1.2 = fcmp uno float %mul226.1.2, 0.000000e+00
%cond134.i.1.2 = select i1 %cmp.i.i.1.2, float %mul226.1.2, float %cond129.i.1.2
%mul229.1.2 = fmul float %cond.1.2, %nbparam_params_sh_ewald
%neg230.1.2 = fsub float -0.000000e+00, %mul229.1.2
%1819 = tail call float @llvm.fmuladd.f32(float %div196.1.2, float %cond134.i.1.2, float %neg230.1.2)
%1820 = tail call float @llvm.fmuladd.f32(float %mul217.1.2, float %1819, float %E_el.5.2932)
%splat.splatinsert.1.2 = insertelement <3 x float> undef, float %1755, i32 0
%splat.splat.1.2 = shufflevector <3 x float> %splat.splatinsert.1.2, <3 x float> undef, <3 x i32> zeroinitializer
%mul235.1.2 = fmul <3 x float> %extractVec166.1.2, %splat.splat.1.2
%extractVec243.1.2 = shufflevector <4 x float> %fcj_buf.sroa.0.1.2934, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub244.1.2 = fsub <3 x float> %extractVec243.1.2, %mul235.1.2
%extractVec245.1.2 = shufflevector <3 x float> %sub244.1.2, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec253.1.2 = shufflevector <4 x float> %fci_buf.sroa.12.5, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add254.1.2 = fadd <3 x float> %extractVec253.1.2, %mul235.1.2
%extractVec255.1.2 = shufflevector <3 x float> %add254.1.2, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end258.1.2
if.end258.1.2: ; preds = %if.then182.1.2, %if.then147.1.2, %if.end258.2936
%fci_buf.sroa.12.6 = phi <4 x float> [ %fci_buf.sroa.12.5, %if.end258.2936 ], [ %extractVec255.1.2, %if.then182.1.2 ], [ %fci_buf.sroa.12.5, %if.then147.1.2 ]
%E_el.5.1.2 = phi float [ %E_el.5.2932, %if.end258.2936 ], [ %1820, %if.then182.1.2 ], [ %E_el.5.2932, %if.then147.1.2 ]
%E_lj.3.1.2 = phi float [ %E_lj.3.2933, %if.end258.2936 ], [ %add216.1.2, %if.then182.1.2 ], [ %E_lj.3.2933, %if.then147.1.2 ]
%fcj_buf.sroa.0.1.1.2 = phi <4 x float> [ %fcj_buf.sroa.0.1.2934, %if.end258.2936 ], [ %extractVec245.1.2, %if.then182.1.2 ], [ %fcj_buf.sroa.0.1.2934, %if.then147.1.2 ]
%and145.2.2 = and i32 %64, 262144
%tobool146.2.2 = icmp eq i32 %and145.2.2, 0
br i1 %tobool146.2.2, label %if.end258.2.2, label %if.then147.2.2
if.then147.2.2: ; preds = %if.end258.1.2
%1821 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx154.2.3, align 16, !tbaa !36
%1822 = fsub <4 x float> %1821, %1630
%1823 = extractelement <4 x float> %1822, i32 0
%1824 = extractelement <4 x float> %1822, i32 1
%mul3.i.i589.2.2 = fmul float %1824, %1824
%1825 = tail call float @llvm.fmuladd.f32(float %1823, float %1823, float %mul3.i.i589.2.2) #5
%1826 = extractelement <4 x float> %1822, i32 2
%1827 = tail call float @llvm.fmuladd.f32(float %1826, float %1826, float %1825) #5
%and168.2.2 = and i32 %66, 262144
%tobool169.2.2 = icmp ne i32 %and168.2.2, 0
%cond.2.2 = select i1 %tobool169.2.2, float 1.000000e+00, float 0.000000e+00
%cmp174.2.2 = icmp eq i32 %58, %1628
%or.cond.2.2 = and i1 %cmp63, %cmp174.2.2
%not.or.cond.2.2 = xor i1 %or.cond.2.2, true
%cmp176..2.2 = or i1 %cmp176, %not.or.cond.2.2
%conv178.2.2 = uitofp i1 %cmp176..2.2 to float
%mul179.2.2 = fmul float %conv178.2.2, %nbparam_params_rcoulomb_sq
%cmp180.2.2 = fcmp olt float %1827, %mul179.2.2
br i1 %cmp180.2.2, label %if.then182.2.2, label %if.end258.2.2
if.then182.2.2: ; preds = %if.then147.2.2
%extractVec166.2.2 = shufflevector <4 x float> %1822, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%1828 = extractelement <4 x float> %1821, i32 3
%1829 = load i32, i32 addrspace(1)* %arrayidx183.2.3, align 4, !tbaa !41
%mul184.2.2 = mul nsw i32 %1829, %ntypes
%add185.2.2 = add nsw i32 %mul184.2.2, %1632
%mul186.2.2 = shl nsw i32 %add185.2.2, 1
%1830 = sext i32 %mul186.2.2 to i64
%arrayidx187.2.2 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %1830
%1831 = load float, float addrspace(2)* %arrayidx187.2.2, align 4, !tbaa !39
%add191.2.2 = or i32 %mul186.2.2, 1
%1832 = sext i32 %add191.2.2 to i64
%arrayidx192.2.2 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %1832
%1833 = load float, float addrspace(2)* %arrayidx192.2.2, align 4, !tbaa !39
%sub193.2.2 = fsub float 1.000000e+00, %cond.2.2
%1834 = tail call float @llvm.fmuladd.f32(float %sub193.2.2, float 0x3D71979980000000, float %1827)
%cmp.i.i587.2.2 = fcmp olt float %1834, 0.000000e+00
%call.i.i.2.2 = tail call float @llvm.sqrt.f32(float %1834) #6
%call.i.i.op.2.2 = fdiv float 1.000000e+00, %call.i.i.2.2
%div196.2.2 = select i1 %cmp.i.i587.2.2, float 0x7FF8000000000000, float %call.i.i.op.2.2
%mul197.2.2 = fmul float %div196.2.2, %div196.2.2
%mul198.2.2 = fmul float %mul197.2.2, %mul197.2.2
%mul199.2.2 = fmul float %mul197.2.2, %mul198.2.2
%mul200.2.2 = fmul float %cond.2.2, %mul199.2.2
%neg.2.2 = fsub float -0.000000e+00, %1831
%1835 = tail call float @llvm.fmuladd.f32(float %1833, float %mul200.2.2, float %neg.2.2)
%mul202.2.2 = fmul float %mul200.2.2, %1835
%mul203.2.2 = fmul float %mul197.2.2, %mul202.2.2
%1836 = tail call float @llvm.fmuladd.f32(float %mul200.2.2, float %mul200.2.2, float %nbparam_params_repulsion_shift_cpot)
%mul207.2.2 = fmul float %1836, %1833
%add211.2.2 = fadd float %mul200.2.2, %nbparam_params_dispersion_shift_cpot
%mul212.2.2 = fmul float %add211.2.2, %1831
%mul213.2.2 = fmul float %mul212.2.2, 0x3FC5555560000000
%neg214.2.2 = fsub float -0.000000e+00, %mul213.2.2
%1837 = tail call float @llvm.fmuladd.f32(float %mul207.2.2, float 0x3FB5555540000000, float %neg214.2.2)
%mul215.2.2 = fmul float %cond.2.2, %1837
%add216.2.2 = fadd float %E_lj.3.1.2, %mul215.2.2
%mul217.2.2 = fmul float %1631, %1828
%mul218.2.2 = fmul float %cond.2.2, %mul197.2.2
%mul220.2.2 = fmul float %mul, %1834
%mul.i585.2.2 = fmul float %mul220.2.2, %mul220.2.2
%1838 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i585.2.2, float 0x3FBDA79640000000) #5
%1839 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i585.2.2, float 0x3FE03C5780000000) #5
%1840 = tail call float @llvm.fmuladd.f32(float %1838, float %mul.i585.2.2, float 1.000000e+00) #5
%1841 = tail call float @llvm.fmuladd.f32(float %1839, float %mul220.2.2, float %1840) #5
%div.i586.2.2 = fdiv float 1.000000e+00, %1841, !fpmath !46
%1842 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i585.2.2, float 0xBF0BFF7260000000) #5
%1843 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i585.2.2, float 0x3F50794180000000) #5
%1844 = tail call float @llvm.fmuladd.f32(float %1842, float %mul.i585.2.2, float 0xBF93BDB200000000) #5
%1845 = tail call float @llvm.fmuladd.f32(float %1843, float %mul.i585.2.2, float 0x3FB1D5E760000000) #5
%1846 = tail call float @llvm.fmuladd.f32(float %1844, float %mul.i585.2.2, float 0xBFE81272E0000000) #5
%1847 = tail call float @llvm.fmuladd.f32(float %1845, float %mul220.2.2, float %1846) #5
%mul11.i.2.2 = fmul float %1847, %div.i586.2.2
%mul222.2.2 = fmul float %mul19, %mul11.i.2.2
%1848 = tail call float @llvm.fmuladd.f32(float %mul218.2.2, float %div196.2.2, float %mul222.2.2)
%1849 = tail call float @llvm.fmuladd.f32(float %mul217.2.2, float %1848, float %mul203.2.2)
%mul225.2.2 = fmul float %1834, %div196.2.2
%mul226.2.2 = fmul float %mul225.2.2, %nbparam_params_ewald_beta
%fabs.i.2.2 = tail call float @llvm.fabs.f32(float %mul226.2.2) #5
%and.i.2.2 = bitcast float %fabs.i.2.2 to i32
%mul.i.2.2 = fmul float %mul226.2.2, %mul226.2.2
%div.i.2.2 = fdiv float 1.000000e+00, %mul.i.2.2, !fpmath !46
%sub.i.2.2 = fadd float %fabs.i.2.2, -1.000000e+00
%cmp.i583.2.2 = fcmp olt float %fabs.i.2.2, 1.250000e+00
%cond.i.2.2 = select i1 %cmp.i583.2.2, float %sub.i.2.2, float %div.i.2.2
%cmp2.i.2.2 = fcmp olt float %fabs.i.2.2, 8.437500e-01
%cond6.i.2.2 = select i1 %cmp2.i.2.2, float %mul.i.2.2, float %cond.i.2.2
%1850 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.2, float 0xC07E384EA0000000, float 0xC090046160000000) #5
%1851 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.2, float %1850, float 0xC083EC8820000000) #5
%1852 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.2, float %1851, float 0xC064145D40000000) #5
%1853 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.2, float %1852, float 0xC031C20960000000) #5
%1854 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.2, float %1853, float 0xBFE993BA80000000) #5
%1855 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.2, float %1854, float 0xBF84341240000000) #5
%1856 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.2, float 0xC03670E240000000, float 0x407DA874E0000000) #5
%1857 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.2, float %1856, float 0x40A3F219C0000000) #5
%1858 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.2, float %1857, float 0x40A8FFB760000000) #5
%1859 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.2, float %1858, float 0x409802EB20000000) #5
%1860 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.2, float %1859, float 0x40745CAE20000000) #5
%1861 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.2, float %1860, float 0x403E568B20000000) #5
%1862 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.2, float 0xC023A0EFC0000000, float 0xC054526560000000) #5
%1863 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.2, float %1862, float 0xC067135CE0000000) #5
%1864 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.2, float %1863, float 0xC0644CB180000000) #5
%1865 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.2, float %1864, float 0xC04F300AE0000000) #5
%1866 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.2, float %1865, float 0xC0251E0440000000) #5
%1867 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.2, float %1866, float 0xBFE63416E0000000) #5
%1868 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.2, float %1867, float 0xBF84341260000000) #5
%1869 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.2, float 0xBFAEEFF2E0000000, float 0x401A47EF80000000) #5
%1870 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.2, float %1869, float 0x405B28A3E0000000) #5
%1871 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.2, float %1870, float 0x407AD02160000000) #5
%1872 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.2, float %1871, float 0x40842B1920000000) #5
%1873 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.2, float %1872, float 0x407B290DE0000000) #5
%1874 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.2, float %1873, float 0x4061350C60000000) #5
%1875 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.2, float %1874, float 0x4033A6B9C0000000) #5
%cmp32.i.2.2 = fcmp olt float %fabs.i.2.2, 0x4006DB6DA0000000
%cond36.i.2.2 = select i1 %cmp32.i.2.2, float %1868, float %1855
%cond41.i.2.2 = select i1 %cmp32.i.2.2, float %1875, float %1861
%1876 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.2, float 0xBF61BF3800000000, float 0x3FA22A3660000000) #5
%1877 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.2, float %1876, float 0xBFBC639840000000) #5
%1878 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.2, float %1877, float 0x3FD45FCA80000000) #5
%1879 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.2, float %1878, float 0xBFD7D24100000000) #5
%1880 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.2, float %1879, float 0x3FDA8D00A0000000) #5
%1881 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.2, float %1880, float 0xBF6359B8C0000000) #5
%1882 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.2, float 0x3F888B5460000000, float 0x3F8BEDC260000000) #5
%1883 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.2, float %1882, float 0x3FC02660E0000000) #5
%1884 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.2, float %1883, float 0x3FB2635CE0000000) #5
%1885 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.2, float %1884, float 0x3FE14AF0A0000000) #5
%1886 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.2, float %1885, float 0x3FBB3E6620000000) #5
%cond57.i.2.2 = select i1 %cmp.i583.2.2, float %1881, float %cond36.i.2.2
%cond62.i.2.2 = select i1 %cmp.i583.2.2, float %1886, float %cond41.i.2.2
%1887 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.2, float 0xBEF8EAD620000000, float 0xBF77A29120000000) #5
%1888 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.2, float %1887, float 0xBF9D2A51E0000000) #5
%1889 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.2, float %1888, float 0xBFD4CD7D60000000) #5
%1890 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.2, float %1889, float 0x3FC06EBA80000000) #5
%1891 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.2, float 0xBED09C4340000000, float 0x3F215DC920000000) #5
%1892 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.2, float %1891, float 0x3F74D022C0000000) #5
%1893 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.2, float %1892, float 0x3FB0A54C60000000) #5
%1894 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.2, float %1893, float 0x3FD97779C0000000) #5
%cond75.i.2.2 = select i1 %cmp2.i.2.2, float %1890, float %cond57.i.2.2
%cond80.i.2.2 = select i1 %cmp2.i.2.2, float %1894, float %cond62.i.2.2
%1895 = tail call float @llvm.fmuladd.f32(float %cond6.i.2.2, float %cond80.i.2.2, float 1.000000e+00) #5
%div82.i.2.2 = fdiv float %cond75.i.2.2, %1895, !fpmath !46
%and83.i.2.2 = and i32 %and.i.2.2, -4096
%astype84.i.2.2 = bitcast i32 %and83.i.2.2 to float
%sub85.i.2.2 = fsub float -0.000000e+00, %astype84.i.2.2
%1896 = tail call float @llvm.fmuladd.f32(float %sub85.i.2.2, float %astype84.i.2.2, float -5.625000e-01) #5
%cmp.i2.i.2.2 = fcmp olt float %1896, 0.000000e+00
%cond.i3.i.2.2 = select i1 %cmp.i2.i.2.2, float -5.000000e-01, float 5.000000e-01
%1897 = tail call float @llvm.fmuladd.f32(float %1896, float 0x3FF7154760000000, float %cond.i3.i.2.2) #5
%conv.i4.i.2.2 = fptosi float %1897 to i32
%conv1.i5.i.2.2 = sitofp i32 %conv.i4.i.2.2 to float
%1898 = tail call float @llvm.fmuladd.f32(float %conv1.i5.i.2.2, float 0xBFE62E3000000000, float %1896) #5
%mul.i6.i.2.2 = fmul float %conv1.i5.i.2.2, 0xBEE2FEFA20000000
%add.i7.i.2.2 = fadd float %1898, %mul.i6.i.2.2
%mul3.i8.i.2.2 = fmul float %add.i7.i.2.2, %add.i7.i.2.2
%1899 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.2.2, float 0x3E66376980000000, float 0xBEBBBD41C0000000) #5
%1900 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.2.2, float %1899, float 0x3F11566AA0000000) #5
%1901 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.2.2, float %1900, float 0xBF66C16C20000000) #5
%1902 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.2.2, float %1901, float 0x3FC5555560000000) #5
%sub8.i9.i.2.2 = fsub float -0.000000e+00, %1902
%1903 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.2.2, float %sub8.i9.i.2.2, float %add.i7.i.2.2) #5
%sub10.i10.i.2.2 = fsub float -0.000000e+00, %mul.i6.i.2.2
%mul11.i11.i.2.2 = fmul float %add.i7.i.2.2, %1903
%sub12.i12.i.2.2 = fsub float 2.000000e+00, %1903
%div.i13.i.2.2 = fdiv float %mul11.i11.i.2.2, %sub12.i12.i.2.2, !fpmath !46
%sub13.i14.i.2.2 = fsub float %sub10.i10.i.2.2, %div.i13.i.2.2
%sub14.i15.i.2.2 = fsub float %sub13.i14.i.2.2, %1898
%sub15.i16.i.2.2 = fsub float 1.000000e+00, %sub14.i15.i.2.2
%astype.i17.i.2.2 = bitcast float %sub15.i16.i.2.2 to i32
%shl.i18.i.2.2 = shl i32 %conv.i4.i.2.2, 23
%add16.i19.i.2.2 = add nsw i32 %astype.i17.i.2.2, %shl.i18.i.2.2
%astype17.i20.i.2.2 = bitcast i32 %add16.i19.i.2.2 to float
%cmp18.i21.i.2.2 = fcmp olt float %1896, 0xC055D589E0000000
%cond20.i22.i.2.2 = select i1 %cmp18.i21.i.2.2, float 0.000000e+00, float %astype17.i20.i.2.2
%cmp21.i23.i.2.2 = fcmp olt float %1896, 0x40562E4300000000
%cond26.i24.i.2.2 = select i1 %cmp21.i23.i.2.2, float %cond20.i22.i.2.2, float 0x7FF0000000000000
%cmp.i.i25.i.2.2 = fcmp uno float %1896, 0.000000e+00
%cond31.i26.i.2.2 = select i1 %cmp.i.i25.i.2.2, float %1896, float %cond26.i24.i.2.2
%sub88.i.2.2 = fsub float %astype84.i.2.2, %fabs.i.2.2
%add.i584.2.2 = fadd float %fabs.i.2.2, %astype84.i.2.2
%1904 = tail call float @llvm.fmuladd.f32(float %sub88.i.2.2, float %add.i584.2.2, float %div82.i.2.2) #5
%cmp.i1.i.2.2 = fcmp olt float %1904, 0.000000e+00
%cond.i.i.2.2 = select i1 %cmp.i1.i.2.2, float -5.000000e-01, float 5.000000e-01
%1905 = tail call float @llvm.fmuladd.f32(float %1904, float 0x3FF7154760000000, float %cond.i.i.2.2) #5
%conv.i.i.2.2 = fptosi float %1905 to i32
%conv1.i.i.2.2 = sitofp i32 %conv.i.i.2.2 to float
%1906 = tail call float @llvm.fmuladd.f32(float %conv1.i.i.2.2, float 0xBFE62E3000000000, float %1904) #5
%mul.i.i.2.2 = fmul float %conv1.i.i.2.2, 0xBEE2FEFA20000000
%add.i.i.2.2 = fadd float %1906, %mul.i.i.2.2
%mul3.i.i.2.2 = fmul float %add.i.i.2.2, %add.i.i.2.2
%1907 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.2.2, float 0x3E66376980000000, float 0xBEBBBD41C0000000) #5
%1908 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.2.2, float %1907, float 0x3F11566AA0000000) #5
%1909 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.2.2, float %1908, float 0xBF66C16C20000000) #5
%1910 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.2.2, float %1909, float 0x3FC5555560000000) #5
%sub8.i.i.2.2 = fsub float -0.000000e+00, %1910
%1911 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.2.2, float %sub8.i.i.2.2, float %add.i.i.2.2) #5
%sub10.i.i.2.2 = fsub float -0.000000e+00, %mul.i.i.2.2
%mul11.i.i.2.2 = fmul float %add.i.i.2.2, %1911
%sub12.i.i.2.2 = fsub float 2.000000e+00, %1911
%div.i.i.2.2 = fdiv float %mul11.i.i.2.2, %sub12.i.i.2.2, !fpmath !46
%sub13.i.i.2.2 = fsub float %sub10.i.i.2.2, %div.i.i.2.2
%sub14.i.i.2.2 = fsub float %sub13.i.i.2.2, %1906
%sub15.i.i.2.2 = fsub float 1.000000e+00, %sub14.i.i.2.2
%astype.i.i.2.2 = bitcast float %sub15.i.i.2.2 to i32
%shl.i.i.2.2 = shl i32 %conv.i.i.2.2, 23
%add16.i.i.2.2 = add nsw i32 %astype.i.i.2.2, %shl.i.i.2.2
%astype17.i.i.2.2 = bitcast i32 %add16.i.i.2.2 to float
%cmp18.i.i.2.2 = fcmp olt float %1904, 0xC055D589E0000000
%cond20.i.i.2.2 = select i1 %cmp18.i.i.2.2, float 0.000000e+00, float %astype17.i.i.2.2
%cmp21.i.i.2.2 = fcmp olt float %1904, 0x40562E4300000000
%cond26.i.i.2.2 = select i1 %cmp21.i.i.2.2, float %cond20.i.i.2.2, float 0x7FF0000000000000
%cmp.i.i.i.2.2 = fcmp uno float %1904, 0.000000e+00
%cond31.i.i.2.2 = select i1 %cmp.i.i.i.2.2, float %1904, float %cond26.i.i.2.2
%mul91.i.2.2 = fmul float %cond31.i26.i.2.2, %cond31.i.i.2.2
%div92.i.2.2 = fdiv float %mul91.i.2.2, %fabs.i.2.2, !fpmath !46
%sub93.i.2.2 = fsub float 2.000000e+00, %div92.i.2.2
%cmp94.i.2.2 = fcmp olt float %mul226.2.2, 0.000000e+00
%cond98.i.2.2 = select i1 %cmp94.i.2.2, float %sub93.i.2.2, float %div92.i.2.2
%cmp99.i.2.2 = fcmp olt float %fabs.i.2.2, 2.800000e+01
%cond103.i.2.2 = select i1 %cmp99.i.2.2, float %cond98.i.2.2, float 0.000000e+00
%sub104.i.2.2 = fsub float 0x3FC3D4FA80000000, %div82.i.2.2
%add105.i.2.2 = fadd float %div82.i.2.2, 0x3FEB0AC160000000
%add106.i.2.2 = fadd float %add105.i.2.2, 1.000000e+00
%cond111.i.2.2 = select i1 %cmp94.i.2.2, float %add106.i.2.2, float %sub104.i.2.2
%cond116.i.2.2 = select i1 %cmp.i583.2.2, float %cond111.i.2.2, float %cond103.i.2.2
%sub117.i.2.2 = fadd float %mul226.2.2, -5.000000e-01
%1912 = tail call float @llvm.fmuladd.f32(float %mul226.2.2, float %div82.i.2.2, float %sub117.i.2.2) #5
%sub119.i.2.2 = fsub float 5.000000e-01, %1912
%cond124.i.2.2 = select i1 %cmp2.i.2.2, float %sub119.i.2.2, float %cond116.i.2.2
%cmp125.i.2.2 = fcmp olt float %mul226.2.2, -6.000000e+00
%cond129.i.2.2 = select i1 %cmp125.i.2.2, float 2.000000e+00, float %cond124.i.2.2
%cmp.i.i.2.2 = fcmp uno float %mul226.2.2, 0.000000e+00
%cond134.i.2.2 = select i1 %cmp.i.i.2.2, float %mul226.2.2, float %cond129.i.2.2
%mul229.2.2 = fmul float %cond.2.2, %nbparam_params_sh_ewald
%neg230.2.2 = fsub float -0.000000e+00, %mul229.2.2
%1913 = tail call float @llvm.fmuladd.f32(float %div196.2.2, float %cond134.i.2.2, float %neg230.2.2)
%1914 = tail call float @llvm.fmuladd.f32(float %mul217.2.2, float %1913, float %E_el.5.1.2)
%splat.splatinsert.2.2 = insertelement <3 x float> undef, float %1849, i32 0
%splat.splat.2.2 = shufflevector <3 x float> %splat.splatinsert.2.2, <3 x float> undef, <3 x i32> zeroinitializer
%mul235.2.2 = fmul <3 x float> %extractVec166.2.2, %splat.splat.2.2
%extractVec243.2.2 = shufflevector <4 x float> %fcj_buf.sroa.0.1.1.2, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub244.2.2 = fsub <3 x float> %extractVec243.2.2, %mul235.2.2
%extractVec245.2.2 = shufflevector <3 x float> %sub244.2.2, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec253.2.2 = shufflevector <4 x float> %fci_buf.sroa.22.5, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add254.2.2 = fadd <3 x float> %extractVec253.2.2, %mul235.2.2
%extractVec255.2.2 = shufflevector <3 x float> %add254.2.2, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end258.2.2
if.end258.2.2: ; preds = %if.then182.2.2, %if.then147.2.2, %if.end258.1.2
%fci_buf.sroa.22.6 = phi <4 x float> [ %fci_buf.sroa.22.5, %if.end258.1.2 ], [ %extractVec255.2.2, %if.then182.2.2 ], [ %fci_buf.sroa.22.5, %if.then147.2.2 ]
%E_el.5.2.2 = phi float [ %E_el.5.1.2, %if.end258.1.2 ], [ %1914, %if.then182.2.2 ], [ %E_el.5.1.2, %if.then147.2.2 ]
%E_lj.3.2.2 = phi float [ %E_lj.3.1.2, %if.end258.1.2 ], [ %add216.2.2, %if.then182.2.2 ], [ %E_lj.3.1.2, %if.then147.2.2 ]
%fcj_buf.sroa.0.1.2.2 = phi <4 x float> [ %fcj_buf.sroa.0.1.1.2, %if.end258.1.2 ], [ %extractVec245.2.2, %if.then182.2.2 ], [ %fcj_buf.sroa.0.1.1.2, %if.then147.2.2 ]
%and145.3.2 = and i32 %64, 524288
%tobool146.3.2 = icmp eq i32 %and145.3.2, 0
br i1 %tobool146.3.2, label %if.end258.3.2, label %if.then147.3.2
if.then147.3.2: ; preds = %if.end258.2.2
%1915 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx154.3.3, align 16, !tbaa !36
%1916 = fsub <4 x float> %1915, %1630
%1917 = extractelement <4 x float> %1916, i32 0
%1918 = extractelement <4 x float> %1916, i32 1
%mul3.i.i589.3.2 = fmul float %1918, %1918
%1919 = tail call float @llvm.fmuladd.f32(float %1917, float %1917, float %mul3.i.i589.3.2) #5
%1920 = extractelement <4 x float> %1916, i32 2
%1921 = tail call float @llvm.fmuladd.f32(float %1920, float %1920, float %1919) #5
%and168.3.2 = and i32 %66, 524288
%tobool169.3.2 = icmp ne i32 %and168.3.2, 0
%cond.3.2 = select i1 %tobool169.3.2, float 1.000000e+00, float 0.000000e+00
%cmp174.3.2 = icmp eq i32 %56, %1628
%or.cond.3.2 = and i1 %cmp63, %cmp174.3.2
%not.or.cond.3.2 = xor i1 %or.cond.3.2, true
%cmp176..3.2 = or i1 %cmp176, %not.or.cond.3.2
%conv178.3.2 = uitofp i1 %cmp176..3.2 to float
%mul179.3.2 = fmul float %conv178.3.2, %nbparam_params_rcoulomb_sq
%cmp180.3.2 = fcmp olt float %1921, %mul179.3.2
br i1 %cmp180.3.2, label %if.then182.3.2, label %if.end258.3.2
if.then182.3.2: ; preds = %if.then147.3.2
%extractVec166.3.2 = shufflevector <4 x float> %1916, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%1922 = extractelement <4 x float> %1915, i32 3
%1923 = load i32, i32 addrspace(1)* %arrayidx183.3.3, align 4, !tbaa !41
%mul184.3.2 = mul nsw i32 %1923, %ntypes
%add185.3.2 = add nsw i32 %mul184.3.2, %1632
%mul186.3.2 = shl nsw i32 %add185.3.2, 1
%1924 = sext i32 %mul186.3.2 to i64
%arrayidx187.3.2 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %1924
%1925 = load float, float addrspace(2)* %arrayidx187.3.2, align 4, !tbaa !39
%add191.3.2 = or i32 %mul186.3.2, 1
%1926 = sext i32 %add191.3.2 to i64
%arrayidx192.3.2 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %1926
%1927 = load float, float addrspace(2)* %arrayidx192.3.2, align 4, !tbaa !39
%sub193.3.2 = fsub float 1.000000e+00, %cond.3.2
%1928 = tail call float @llvm.fmuladd.f32(float %sub193.3.2, float 0x3D71979980000000, float %1921)
%cmp.i.i587.3.2 = fcmp olt float %1928, 0.000000e+00
%call.i.i.3.2 = tail call float @llvm.sqrt.f32(float %1928) #6
%call.i.i.op.3.2 = fdiv float 1.000000e+00, %call.i.i.3.2
%div196.3.2 = select i1 %cmp.i.i587.3.2, float 0x7FF8000000000000, float %call.i.i.op.3.2
%mul197.3.2 = fmul float %div196.3.2, %div196.3.2
%mul198.3.2 = fmul float %mul197.3.2, %mul197.3.2
%mul199.3.2 = fmul float %mul197.3.2, %mul198.3.2
%mul200.3.2 = fmul float %cond.3.2, %mul199.3.2
%neg.3.2 = fsub float -0.000000e+00, %1925
%1929 = tail call float @llvm.fmuladd.f32(float %1927, float %mul200.3.2, float %neg.3.2)
%mul202.3.2 = fmul float %mul200.3.2, %1929
%mul203.3.2 = fmul float %mul197.3.2, %mul202.3.2
%1930 = tail call float @llvm.fmuladd.f32(float %mul200.3.2, float %mul200.3.2, float %nbparam_params_repulsion_shift_cpot)
%mul207.3.2 = fmul float %1930, %1927
%add211.3.2 = fadd float %mul200.3.2, %nbparam_params_dispersion_shift_cpot
%mul212.3.2 = fmul float %add211.3.2, %1925
%mul213.3.2 = fmul float %mul212.3.2, 0x3FC5555560000000
%neg214.3.2 = fsub float -0.000000e+00, %mul213.3.2
%1931 = tail call float @llvm.fmuladd.f32(float %mul207.3.2, float 0x3FB5555540000000, float %neg214.3.2)
%mul215.3.2 = fmul float %cond.3.2, %1931
%add216.3.2 = fadd float %E_lj.3.2.2, %mul215.3.2
%mul217.3.2 = fmul float %1631, %1922
%mul218.3.2 = fmul float %cond.3.2, %mul197.3.2
%mul220.3.2 = fmul float %mul, %1928
%mul.i585.3.2 = fmul float %mul220.3.2, %mul220.3.2
%1932 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i585.3.2, float 0x3FBDA79640000000) #5
%1933 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i585.3.2, float 0x3FE03C5780000000) #5
%1934 = tail call float @llvm.fmuladd.f32(float %1932, float %mul.i585.3.2, float 1.000000e+00) #5
%1935 = tail call float @llvm.fmuladd.f32(float %1933, float %mul220.3.2, float %1934) #5
%div.i586.3.2 = fdiv float 1.000000e+00, %1935, !fpmath !46
%1936 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i585.3.2, float 0xBF0BFF7260000000) #5
%1937 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i585.3.2, float 0x3F50794180000000) #5
%1938 = tail call float @llvm.fmuladd.f32(float %1936, float %mul.i585.3.2, float 0xBF93BDB200000000) #5
%1939 = tail call float @llvm.fmuladd.f32(float %1937, float %mul.i585.3.2, float 0x3FB1D5E760000000) #5
%1940 = tail call float @llvm.fmuladd.f32(float %1938, float %mul.i585.3.2, float 0xBFE81272E0000000) #5
%1941 = tail call float @llvm.fmuladd.f32(float %1939, float %mul220.3.2, float %1940) #5
%mul11.i.3.2 = fmul float %1941, %div.i586.3.2
%mul222.3.2 = fmul float %mul19, %mul11.i.3.2
%1942 = tail call float @llvm.fmuladd.f32(float %mul218.3.2, float %div196.3.2, float %mul222.3.2)
%1943 = tail call float @llvm.fmuladd.f32(float %mul217.3.2, float %1942, float %mul203.3.2)
%mul225.3.2 = fmul float %1928, %div196.3.2
%mul226.3.2 = fmul float %mul225.3.2, %nbparam_params_ewald_beta
%fabs.i.3.2 = tail call float @llvm.fabs.f32(float %mul226.3.2) #5
%and.i.3.2 = bitcast float %fabs.i.3.2 to i32
%mul.i.3.2 = fmul float %mul226.3.2, %mul226.3.2
%div.i.3.2 = fdiv float 1.000000e+00, %mul.i.3.2, !fpmath !46
%sub.i.3.2 = fadd float %fabs.i.3.2, -1.000000e+00
%cmp.i583.3.2 = fcmp olt float %fabs.i.3.2, 1.250000e+00
%cond.i.3.2 = select i1 %cmp.i583.3.2, float %sub.i.3.2, float %div.i.3.2
%cmp2.i.3.2 = fcmp olt float %fabs.i.3.2, 8.437500e-01
%cond6.i.3.2 = select i1 %cmp2.i.3.2, float %mul.i.3.2, float %cond.i.3.2
%1944 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.2, float 0xC07E384EA0000000, float 0xC090046160000000) #5
%1945 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.2, float %1944, float 0xC083EC8820000000) #5
%1946 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.2, float %1945, float 0xC064145D40000000) #5
%1947 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.2, float %1946, float 0xC031C20960000000) #5
%1948 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.2, float %1947, float 0xBFE993BA80000000) #5
%1949 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.2, float %1948, float 0xBF84341240000000) #5
%1950 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.2, float 0xC03670E240000000, float 0x407DA874E0000000) #5
%1951 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.2, float %1950, float 0x40A3F219C0000000) #5
%1952 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.2, float %1951, float 0x40A8FFB760000000) #5
%1953 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.2, float %1952, float 0x409802EB20000000) #5
%1954 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.2, float %1953, float 0x40745CAE20000000) #5
%1955 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.2, float %1954, float 0x403E568B20000000) #5
%1956 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.2, float 0xC023A0EFC0000000, float 0xC054526560000000) #5
%1957 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.2, float %1956, float 0xC067135CE0000000) #5
%1958 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.2, float %1957, float 0xC0644CB180000000) #5
%1959 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.2, float %1958, float 0xC04F300AE0000000) #5
%1960 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.2, float %1959, float 0xC0251E0440000000) #5
%1961 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.2, float %1960, float 0xBFE63416E0000000) #5
%1962 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.2, float %1961, float 0xBF84341260000000) #5
%1963 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.2, float 0xBFAEEFF2E0000000, float 0x401A47EF80000000) #5
%1964 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.2, float %1963, float 0x405B28A3E0000000) #5
%1965 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.2, float %1964, float 0x407AD02160000000) #5
%1966 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.2, float %1965, float 0x40842B1920000000) #5
%1967 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.2, float %1966, float 0x407B290DE0000000) #5
%1968 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.2, float %1967, float 0x4061350C60000000) #5
%1969 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.2, float %1968, float 0x4033A6B9C0000000) #5
%cmp32.i.3.2 = fcmp olt float %fabs.i.3.2, 0x4006DB6DA0000000
%cond36.i.3.2 = select i1 %cmp32.i.3.2, float %1962, float %1949
%cond41.i.3.2 = select i1 %cmp32.i.3.2, float %1969, float %1955
%1970 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.2, float 0xBF61BF3800000000, float 0x3FA22A3660000000) #5
%1971 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.2, float %1970, float 0xBFBC639840000000) #5
%1972 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.2, float %1971, float 0x3FD45FCA80000000) #5
%1973 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.2, float %1972, float 0xBFD7D24100000000) #5
%1974 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.2, float %1973, float 0x3FDA8D00A0000000) #5
%1975 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.2, float %1974, float 0xBF6359B8C0000000) #5
%1976 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.2, float 0x3F888B5460000000, float 0x3F8BEDC260000000) #5
%1977 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.2, float %1976, float 0x3FC02660E0000000) #5
%1978 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.2, float %1977, float 0x3FB2635CE0000000) #5
%1979 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.2, float %1978, float 0x3FE14AF0A0000000) #5
%1980 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.2, float %1979, float 0x3FBB3E6620000000) #5
%cond57.i.3.2 = select i1 %cmp.i583.3.2, float %1975, float %cond36.i.3.2
%cond62.i.3.2 = select i1 %cmp.i583.3.2, float %1980, float %cond41.i.3.2
%1981 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.2, float 0xBEF8EAD620000000, float 0xBF77A29120000000) #5
%1982 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.2, float %1981, float 0xBF9D2A51E0000000) #5
%1983 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.2, float %1982, float 0xBFD4CD7D60000000) #5
%1984 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.2, float %1983, float 0x3FC06EBA80000000) #5
%1985 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.2, float 0xBED09C4340000000, float 0x3F215DC920000000) #5
%1986 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.2, float %1985, float 0x3F74D022C0000000) #5
%1987 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.2, float %1986, float 0x3FB0A54C60000000) #5
%1988 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.2, float %1987, float 0x3FD97779C0000000) #5
%cond75.i.3.2 = select i1 %cmp2.i.3.2, float %1984, float %cond57.i.3.2
%cond80.i.3.2 = select i1 %cmp2.i.3.2, float %1988, float %cond62.i.3.2
%1989 = tail call float @llvm.fmuladd.f32(float %cond6.i.3.2, float %cond80.i.3.2, float 1.000000e+00) #5
%div82.i.3.2 = fdiv float %cond75.i.3.2, %1989, !fpmath !46
%and83.i.3.2 = and i32 %and.i.3.2, -4096
%astype84.i.3.2 = bitcast i32 %and83.i.3.2 to float
%sub85.i.3.2 = fsub float -0.000000e+00, %astype84.i.3.2
%1990 = tail call float @llvm.fmuladd.f32(float %sub85.i.3.2, float %astype84.i.3.2, float -5.625000e-01) #5
%cmp.i2.i.3.2 = fcmp olt float %1990, 0.000000e+00
%cond.i3.i.3.2 = select i1 %cmp.i2.i.3.2, float -5.000000e-01, float 5.000000e-01
%1991 = tail call float @llvm.fmuladd.f32(float %1990, float 0x3FF7154760000000, float %cond.i3.i.3.2) #5
%conv.i4.i.3.2 = fptosi float %1991 to i32
%conv1.i5.i.3.2 = sitofp i32 %conv.i4.i.3.2 to float
%1992 = tail call float @llvm.fmuladd.f32(float %conv1.i5.i.3.2, float 0xBFE62E3000000000, float %1990) #5
%mul.i6.i.3.2 = fmul float %conv1.i5.i.3.2, 0xBEE2FEFA20000000
%add.i7.i.3.2 = fadd float %1992, %mul.i6.i.3.2
%mul3.i8.i.3.2 = fmul float %add.i7.i.3.2, %add.i7.i.3.2
%1993 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.3.2, float 0x3E66376980000000, float 0xBEBBBD41C0000000) #5
%1994 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.3.2, float %1993, float 0x3F11566AA0000000) #5
%1995 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.3.2, float %1994, float 0xBF66C16C20000000) #5
%1996 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.3.2, float %1995, float 0x3FC5555560000000) #5
%sub8.i9.i.3.2 = fsub float -0.000000e+00, %1996
%1997 = tail call float @llvm.fmuladd.f32(float %mul3.i8.i.3.2, float %sub8.i9.i.3.2, float %add.i7.i.3.2) #5
%sub10.i10.i.3.2 = fsub float -0.000000e+00, %mul.i6.i.3.2
%mul11.i11.i.3.2 = fmul float %add.i7.i.3.2, %1997
%sub12.i12.i.3.2 = fsub float 2.000000e+00, %1997
%div.i13.i.3.2 = fdiv float %mul11.i11.i.3.2, %sub12.i12.i.3.2, !fpmath !46
%sub13.i14.i.3.2 = fsub float %sub10.i10.i.3.2, %div.i13.i.3.2
%sub14.i15.i.3.2 = fsub float %sub13.i14.i.3.2, %1992
%sub15.i16.i.3.2 = fsub float 1.000000e+00, %sub14.i15.i.3.2
%astype.i17.i.3.2 = bitcast float %sub15.i16.i.3.2 to i32
%shl.i18.i.3.2 = shl i32 %conv.i4.i.3.2, 23
%add16.i19.i.3.2 = add nsw i32 %astype.i17.i.3.2, %shl.i18.i.3.2
%astype17.i20.i.3.2 = bitcast i32 %add16.i19.i.3.2 to float
%cmp18.i21.i.3.2 = fcmp olt float %1990, 0xC055D589E0000000
%cond20.i22.i.3.2 = select i1 %cmp18.i21.i.3.2, float 0.000000e+00, float %astype17.i20.i.3.2
%cmp21.i23.i.3.2 = fcmp olt float %1990, 0x40562E4300000000
%cond26.i24.i.3.2 = select i1 %cmp21.i23.i.3.2, float %cond20.i22.i.3.2, float 0x7FF0000000000000
%cmp.i.i25.i.3.2 = fcmp uno float %1990, 0.000000e+00
%cond31.i26.i.3.2 = select i1 %cmp.i.i25.i.3.2, float %1990, float %cond26.i24.i.3.2
%sub88.i.3.2 = fsub float %astype84.i.3.2, %fabs.i.3.2
%add.i584.3.2 = fadd float %fabs.i.3.2, %astype84.i.3.2
%1998 = tail call float @llvm.fmuladd.f32(float %sub88.i.3.2, float %add.i584.3.2, float %div82.i.3.2) #5
%cmp.i1.i.3.2 = fcmp olt float %1998, 0.000000e+00
%cond.i.i.3.2 = select i1 %cmp.i1.i.3.2, float -5.000000e-01, float 5.000000e-01
%1999 = tail call float @llvm.fmuladd.f32(float %1998, float 0x3FF7154760000000, float %cond.i.i.3.2) #5
%conv.i.i.3.2 = fptosi float %1999 to i32
%conv1.i.i.3.2 = sitofp i32 %conv.i.i.3.2 to float
%2000 = tail call float @llvm.fmuladd.f32(float %conv1.i.i.3.2, float 0xBFE62E3000000000, float %1998) #5
%mul.i.i.3.2 = fmul float %conv1.i.i.3.2, 0xBEE2FEFA20000000
%add.i.i.3.2 = fadd float %2000, %mul.i.i.3.2
%mul3.i.i.3.2 = fmul float %add.i.i.3.2, %add.i.i.3.2
%2001 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.3.2, float 0x3E66376980000000, float 0xBEBBBD41C0000000) #5
%2002 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.3.2, float %2001, float 0x3F11566AA0000000) #5
%2003 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.3.2, float %2002, float 0xBF66C16C20000000) #5
%2004 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.3.2, float %2003, float 0x3FC5555560000000) #5
%sub8.i.i.3.2 = fsub float -0.000000e+00, %2004
%2005 = tail call float @llvm.fmuladd.f32(float %mul3.i.i.3.2, float %sub8.i.i.3.2, float %add.i.i.3.2) #5
%sub10.i.i.3.2 = fsub float -0.000000e+00, %mul.i.i.3.2
%mul11.i.i.3.2 = fmul float %add.i.i.3.2, %2005
%sub12.i.i.3.2 = fsub float 2.000000e+00, %2005
%div.i.i.3.2 = fdiv float %mul11.i.i.3.2, %sub12.i.i.3.2, !fpmath !46
%sub13.i.i.3.2 = fsub float %sub10.i.i.3.2, %div.i.i.3.2
%sub14.i.i.3.2 = fsub float %sub13.i.i.3.2, %2000
%sub15.i.i.3.2 = fsub float 1.000000e+00, %sub14.i.i.3.2
%astype.i.i.3.2 = bitcast float %sub15.i.i.3.2 to i32
%shl.i.i.3.2 = shl i32 %conv.i.i.3.2, 23
%add16.i.i.3.2 = add nsw i32 %astype.i.i.3.2, %shl.i.i.3.2
%astype17.i.i.3.2 = bitcast i32 %add16.i.i.3.2 to float
%cmp18.i.i.3.2 = fcmp olt float %1998, 0xC055D589E0000000
%cond20.i.i.3.2 = select i1 %cmp18.i.i.3.2, float 0.000000e+00, float %astype17.i.i.3.2
%cmp21.i.i.3.2 = fcmp olt float %1998, 0x40562E4300000000
%cond26.i.i.3.2 = select i1 %cmp21.i.i.3.2, float %cond20.i.i.3.2, float 0x7FF0000000000000
%cmp.i.i.i.3.2 = fcmp uno float %1998, 0.000000e+00
%cond31.i.i.3.2 = select i1 %cmp.i.i.i.3.2, float %1998, float %cond26.i.i.3.2
%mul91.i.3.2 = fmul float %cond31.i26.i.3.2, %cond31.i.i.3.2
%div92.i.3.2 = fdiv float %mul91.i.3.2, %fabs.i.3.2, !fpmath !46
%sub93.i.3.2 = fsub float 2.000000e+00, %div92.i.3.2
%cmp94.i.3.2 = fcmp olt float %mul226.3.2, 0.000000e+00
%cond98.i.3.2 = select i1 %cmp94.i.3.2, float %sub93.i.3.2, float %div92.i.3.2
%cmp99.i.3.2 = fcmp olt float %fabs.i.3.2, 2.800000e+01
%cond103.i.3.2 = select i1 %cmp99.i.3.2, float %cond98.i.3.2, float 0.000000e+00
%sub104.i.3.2 = fsub float 0x3FC3D4FA80000000, %div82.i.3.2
%add105.i.3.2 = fadd float %div82.i.3.2, 0x3FEB0AC160000000
%add106.i.3.2 = fadd float %add105.i.3.2, 1.000000e+00
%cond111.i.3.2 = select i1 %cmp94.i.3.2, float %add106.i.3.2, float %sub104.i.3.2
%cond116.i.3.2 = select i1 %cmp.i583.3.2, float %cond111.i.3.2, float %cond103.i.3.2
%sub117.i.3.2 = fadd float %mul226.3.2, -5.000000e-01
%2006 = tail call float @llvm.fmuladd.f32(float %mul226.3.2, float %div82.i.3.2, float %sub117.i.3.2) #5
%sub119.i.3.2 = fsub float 5.000000e-01, %2006
%cond124.i.3.2 = select i1 %cmp2.i.3.2, float %sub119.i.3.2, float %cond116.i.3.2
%cmp125.i.3.2 = fcmp olt float %mul226.3.2, -6.000000e+00
%cond129.i.3.2 = select i1 %cmp125.i.3.2, float 2.000000e+00, float %cond124.i.3.2
%cmp.i.i.3.2 = fcmp uno float %mul226.3.2, 0.000000e+00
%cond134.i.3.2 = select i1 %cmp.i.i.3.2, float %mul226.3.2, float %cond129.i.3.2
%mul229.3.2 = fmul float %cond.3.2, %nbparam_params_sh_ewald
%neg230.3.2 = fsub float -0.000000e+00, %mul229.3.2
%2007 = tail call float @llvm.fmuladd.f32(float %div196.3.2, float %cond134.i.3.2, float %neg230.3.2)
%2008 = tail call float @llvm.fmuladd.f32(float %mul217.3.2, float %2007, float %E_el.5.2.2)
%splat.splatinsert.3.2 = insertelement <3 x float> undef, float %1943, i32 0
%splat.splat.3.2 = shufflevector <3 x float> %splat.splatinsert.3.2, <3 x float> undef, <3 x i32> zeroinitializer
%mul235.3.2 = fmul <3 x float> %extractVec166.3.2, %splat.splat.3.2
%extractVec243.3.2 = shufflevector <4 x float> %fcj_buf.sroa.0.1.2.2, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%sub244.3.2 = fsub <3 x float> %extractVec243.3.2, %mul235.3.2
%extractVec245.3.2 = shufflevector <3 x float> %sub244.3.2, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
%extractVec253.3.2 = shufflevector <4 x float> %fci_buf.sroa.32.5, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%add254.3.2 = fadd <3 x float> %extractVec253.3.2, %mul235.3.2
%extractVec255.3.2 = shufflevector <3 x float> %add254.3.2, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
br label %if.end258.3.2
if.end258.3.2: ; preds = %if.then182.3.2, %if.then147.3.2, %if.end258.2.2
%fci_buf.sroa.32.6 = phi <4 x float> [ %fci_buf.sroa.32.5, %if.end258.2.2 ], [ %extractVec255.3.2, %if.then182.3.2 ], [ %fci_buf.sroa.32.5, %if.then147.3.2 ]
%E_el.5.3.2 = phi float [ %E_el.5.2.2, %if.end258.2.2 ], [ %2008, %if.then182.3.2 ], [ %E_el.5.2.2, %if.then147.3.2 ]
%E_lj.3.3.2 = phi float [ %E_lj.3.2.2, %if.end258.2.2 ], [ %add216.3.2, %if.then182.3.2 ], [ %E_lj.3.2.2, %if.then147.3.2 ]
%fcj_buf.sroa.0.1.3.2 = phi <4 x float> [ %fcj_buf.sroa.0.1.2.2, %if.end258.2.2 ], [ %extractVec245.3.2, %if.then182.3.2 ], [ %fcj_buf.sroa.0.1.2.2, %if.then147.3.2 ]
%and145.4.2 = and i32 %64, 1048576
%tobool146.4.2 = icmp eq i32 %and145.4.2, 0
br i1 %tobool146.4.2, label %if.end258.4.2, label %if.then147.4.2
if.then147.4.2: ; preds = %if.end258.3.2
%2009 = load <4 x float>, <4 x float> addrspace(3)* %arrayidx154.4.3, align 16, !tbaa !36
%2010 = fsub <4 x float> %2009, %1630
%2011 = extractelement <4 x float> %2010, i32 0
%2012 = extractelement <4 x float> %2010, i32 1
%mul3.i.i589.4.2 = fmul float %2012, %2012
%2013 = tail call float @llvm.fmuladd.f32(float %2011, float %2011, float %mul3.i.i589.4.2) #5
%2014 = extractelement <4 x float> %2010, i32 2
%2015 = tail call float @llvm.fmuladd.f32(float %2014, float %2014, float %2013) #5
%and168.4.2 = and i32 %66, 1048576
%tobool169.4.2 = icmp ne i32 %and168.4.2, 0
%cond.4.2 = select i1 %tobool169.4.2, float 1.000000e+00, float 0.000000e+00
%cmp174.4.2 = icmp eq i32 %54, %1628
%or.cond.4.2 = and i1 %cmp63, %cmp174.4.2
%not.or.cond.4.2 = xor i1 %or.cond.4.2, true
%cmp176..4.2 = or i1 %cmp176, %not.or.cond.4.2
%conv178.4.2 = uitofp i1 %cmp176..4.2 to float
%mul179.4.2 = fmul float %conv178.4.2, %nbparam_params_rcoulomb_sq
%cmp180.4.2 = fcmp olt float %2015, %mul179.4.2
br i1 %cmp180.4.2, label %if.then182.4.2, label %if.end258.4.2
if.then182.4.2: ; preds = %if.then147.4.2
%extractVec166.4.2 = shufflevector <4 x float> %2010, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
%2016 = extractelement <4 x float> %2009, i32 3
%2017 = load i32, i32 addrspace(1)* %arrayidx183.4.3, align 4, !tbaa !41
%mul184.4.2 = mul nsw i32 %2017, %ntypes
%add185.4.2 = add nsw i32 %mul184.4.2, %1632
%mul186.4.2 = shl nsw i32 %add185.4.2, 1
%2018 = sext i32 %mul186.4.2 to i64
%arrayidx187.4.2 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %2018
%2019 = load float, float addrspace(2)* %arrayidx187.4.2, align 4, !tbaa !39
%add191.4.2 = or i32 %mul186.4.2, 1
%2020 = sext i32 %add191.4.2 to i64
%arrayidx192.4.2 = getelementptr inbounds float, float addrspace(2)* %nbfp_climg2d, i64 %2020
%2021 = load float, float addrspace(2)* %arrayidx192.4.2, align 4, !tbaa !39
%sub193.4.2 = fsub float 1.000000e+00, %cond.4.2
%2022 = tail call float @llvm.fmuladd.f32(float %sub193.4.2, float 0x3D71979980000000, float %2015)
%cmp.i.i587.4.2 = fcmp olt float %2022, 0.000000e+00
%call.i.i.4.2 = tail call float @llvm.sqrt.f32(float %2022) #6
%call.i.i.op.4.2 = fdiv float 1.000000e+00, %call.i.i.4.2
%div196.4.2 = select i1 %cmp.i.i587.4.2, float 0x7FF8000000000000, float %call.i.i.op.4.2
%mul197.4.2 = fmul float %div196.4.2, %div196.4.2
%mul198.4.2 = fmul float %mul197.4.2, %mul197.4.2
%mul199.4.2 = fmul float %mul197.4.2, %mul198.4.2
%mul200.4.2 = fmul float %cond.4.2, %mul199.4.2
%neg.4.2 = fsub float -0.000000e+00, %2019
%2023 = tail call float @llvm.fmuladd.f32(float %2021, float %mul200.4.2, float %neg.4.2)
%mul202.4.2 = fmul float %mul200.4.2, %2023
%mul203.4.2 = fmul float %mul197.4.2, %mul202.4.2
%2024 = tail call float @llvm.fmuladd.f32(float %mul200.4.2, float %mul200.4.2, float %nbparam_params_repulsion_shift_cpot)
%mul207.4.2 = fmul float %2024, %2021
%add211.4.2 = fadd float %mul200.4.2, %nbparam_params_dispersion_shift_cpot
%mul212.4.2 = fmul float %add211.4.2, %2019
%mul213.4.2 = fmul float %mul212.4.2, 0x3FC5555560000000
%neg214.4.2 = fsub float -0.000000e+00, %mul213.4.2
%2025 = tail call float @llvm.fmuladd.f32(float %mul207.4.2, float 0x3FB5555540000000, float %neg214.4.2)
%mul215.4.2 = fmul float %cond.4.2, %2025
%add216.4.2 = fadd float %E_lj.3.3.2, %mul215.4.2
%mul217.4.2 = fmul float %1631, %2016
%mul218.4.2 = fmul float %cond.4.2, %mul197.4.2
%mul220.4.2 = fmul float %mul, %2022
%mul.i585.4.2 = fmul float %mul220.4.2, %mul220.4.2
%2026 = tail call float @llvm.fmuladd.f32(float 0x3F5256E0E0000000, float %mul.i585.4.2, float 0x3FBDA79640000000) #5
%2027 = tail call float @llvm.fmuladd.f32(float 0x3F8E7290E0000000, float %mul.i585.4.2, float 0x3FE03C5780000000) #5
%2028 = tail call float @llvm.fmuladd.f32(float %2026, float %mul.i585.4.2, float 1.000000e+00) #5
%2029 = tail call float @llvm.fmuladd.f32(float %2027, float %mul220.4.2, float %2028) #5
%div.i586.4.2 = fdiv float 1.000000e+00, %2029, !fpmath !46
%2030 = tail call float @llvm.fmuladd.f32(float 0xBE52A32500000000, float %mul.i585.4.2, float 0xBF0BFF7260000000) #5
%2031 = tail call float @llvm.fmuladd.f32(float 0x3EB8AB28A0000000, float %mul.i585.4.2, float 0x3F50794180000000) #5
%2032 = tail call float @llvm.fmuladd.f32(float %2030, float %mul.i585.4.2, float 0xBF93BDB200000000) #5
%2033 = tail call float @llvm.fmuladd.f32(float %2031, float %mul.i585.4.2, float 0x3FB1D5E760000000) #5
%2034 = tail call float @llvm.fmuladd.f32(float %2032, float %mul.i585.4.2, float 0xBFE81272E0000000) #5
%2035 = tail call float @llvm.fmuladd.f32(float %2033, float %mul220.4.2, float %2034) #5
%mul11.i.4.2 = fmul float %2035, %div.i586.4.2
%mul222.4.2 = fmul float %mul19, %mul11.i.4.2
%2036 = tail call float @llvm.fmuladd.f32(float %mul218.4.2, float %div196.4.2, float %mul222.4.2)
%2037 = tail call float @llvm.fmuladd.f32(float %mul217.4.2, float %2036, float %mul203.4.2)
%mul225.4.2 = fmul float %2022, %div196.4.2
%mul226.4.2 = fmul float %mul225.4.2, %nbparam_params_ewald_beta
%fabs.i.4.2 = tail call float @llvm.fabs.f32(float %mul226.4.2) #5
%and.i.4.2 = bitcast float %fabs.i.4.2 to i32
%mul.i.4.2 = fmul float %mul226.4.2, %mul226.4.2
%div.i.4.2 = fdiv float 1.000000e+00, %mul.i.4.2, !fpmath !46
%sub.i.4.2 = fadd float %fabs.i.4.2, -1.000000e+00
%cmp.i583.4.2 = fcmp olt float %fabs.i.4.2, 1.250000e+00
%cond.i.4.2 = select i1 %cmp.i583.4.2, float %sub.i.4.2, float %div.i.4.2
%cmp2.i.4.2 = fcmp olt float %fabs.i.4.2, 8.437500e-01
%cond6.i.4.2 = select i1 %cmp2.i.4.2, float %mul.i.4.2, float %cond.i.4.2
%2038 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.2, float 0xC07E384EA0000000, float 0xC090046160000000) #5
%2039 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.2, float %2038, float 0xC083EC8820000000) #5
%2040 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.2, float %2039, float 0xC064145D40000000) #5
%2041 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.2, float %2040, float 0xC031C20960000000) #5
%2042 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.2, float %2041, float 0xBFE993BA80000000) #5
%2043 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.2, float %2042, float 0xBF84341240000000) #5
%2044 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.2, float 0xC03670E240000000, float 0x407DA874E0000000) #5
%2045 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.2, float %2044, float 0x40A3F219C0000000) #5
%2046 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.2, float %2045, float 0x40A8FFB760000000) #5
%2047 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.2, float %2046, float 0x409802EB20000000) #5
%2048 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.2, float %2047, float 0x40745CAE20000000) #5
%2049 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.2, float %2048, float 0x403E568B20000000) #5
%2050 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.2, float 0xC023A0EFC0000000, float 0xC054526560000000) #5
%2051 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.2, float %2050, float 0xC067135CE0000000) #5
%2052 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.2, float %2051, float 0xC0644CB180000000) #5
%2053 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.2, float %2052, float 0xC04F300AE0000000) #5
%2054 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.2, float %2053, float 0xC0251E0440000000) #5
%2055 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.2, float %2054, float 0xBFE63416E0000000) #5
%2056 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.2, float %2055, float 0xBF84341260000000) #5
%2057 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.2, float 0xBFAEEFF2E0000000, float 0x401A47EF80000000) #5
%2058 = tail call float @llvm.fmuladd.f32(float %cond6.i.4.2, float %2057, float 0x405B28A3E0000000) #5
%2059 = tail call float @l
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment