; ModuleID = 'resampler_private_IIR_FIR.c' source_filename = "resampler_private_IIR_FIR.c" target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" @silk_resampler_frac_FIR_12 = external local_unnamed_addr constant [12 x [4 x i16]], align 16 ; Function Attrs: nounwind ssp uwtable define hidden void @silk_resampler_private_IIR_FIR(i8* %SS, i16* nocapture %out, i16* %in, i32 %inLen) local_unnamed_addr #0 { entry: %batchSize = getelementptr inbounds i8, i8* %SS, i64 268 %0 = bitcast i8* %batchSize to i32* %1 = load i32, i32* %0, align 4 %mul = shl i32 %1, 1 %add = add nsw i32 %mul, 8 %2 = zext i32 %add to i64 %vla = alloca i16, i64 %2, align 16 %3 = bitcast i16* %vla to i8* %sFIR = getelementptr inbounds i8, i8* %SS, i64 24 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %sFIR, i64 16, i32 8, i1 false) %invRatio_Q16 = getelementptr inbounds i8, i8* %SS, i64 272 %4 = bitcast i8* %invRatio_Q16 to i32* %5 = load i32, i32* %4, align 8 %arraydecay3 = bitcast i8* %SS to i32* %arrayidx = getelementptr inbounds i16, i16* %vla, i64 8 br label %while.cond while.cond: ; preds = %if.then, %entry %6 = phi i32 [ %1, %entry ], [ %.pre, %if.then ] %inLen.addr.0 = phi i32 [ %inLen, %entry ], [ %sub, %if.then ] %in.addr.0 = phi i16* [ %in, %entry ], [ %add.ptr, %if.then ] %out.addr.0 = phi i16* [ %out, %entry ], [ %out.addr.0.lcssa.i, %if.then ] %cmp = icmp slt i32 %inLen.addr.0, %6 %7 = select i1 %cmp, i32 %inLen.addr.0, i32 %6 call void @silk_resampler_private_up2_HQ(i32* %arraydecay3, i16* %arrayidx, i16* %in.addr.0, i32 %7) #3 %shl = shl i32 %7, 17 %cmp121.i = icmp sgt i32 %shl, 0 br i1 %cmp121.i, label %for.body.i.preheader, label %silk_resampler_private_IIR_FIR_INTERPOL.exit for.body.i.preheader: ; preds = %while.cond br label %for.body.i for.body.i: ; preds = %for.body.i.preheader, %for.body.i %add86.sink123.i = phi i32 [ %add86.i, %for.body.i ], [ 0, %for.body.i.preheader ] %out.addr.0122.i = phi i16* [ %incdec.ptr.i, %for.body.i ], [ %out.addr.0, %for.body.i.preheader ] %and.i = and i32 %add86.sink123.i, 65535 %mul.i = mul nuw nsw i32 %and.i, 12 %shr119.i = lshr i32 %mul.i, 16 %shr2.i = ashr i32 %add86.sink123.i, 16 %idxprom.i = sext i32 %shr2.i to i64 %arrayidx.i = getelementptr inbounds i16, i16* %vla, i64 %idxprom.i %8 = load i16, i16* %arrayidx.i, align 2 %conv4.i = sext i16 %8 to i32 %idxprom5120.i = zext i32 %shr119.i to i64 %arrayidx7.i = getelementptr inbounds [12 x [4 x i16]], [12 x [4 x i16]]* @silk_resampler_frac_FIR_12, i64 0, i64 %idxprom5120.i, i64 0 %9 = load i16, i16* %arrayidx7.i, align 8 %conv8.i = sext i16 %9 to i32 %mul9.i = mul nsw i32 %conv8.i, %conv4.i %arrayidx10.i = getelementptr inbounds i16, i16* %arrayidx.i, i64 1 %10 = load i16, i16* %arrayidx10.i, align 2 %conv11.i = sext i16 %10 to i32 %arrayidx14.i = getelementptr inbounds [12 x [4 x i16]], [12 x [4 x i16]]* @silk_resampler_frac_FIR_12, i64 0, i64 %idxprom5120.i, i64 1 %11 = load i16, i16* %arrayidx14.i, align 2 %conv15.i = sext i16 %11 to i32 %mul16.i = mul nsw i32 %conv15.i, %conv11.i %add.i = add nsw i32 %mul16.i, %mul9.i %arrayidx17.i = getelementptr inbounds i16, i16* %arrayidx.i, i64 2 %12 = load i16, i16* %arrayidx17.i, align 2 %conv18.i = sext i16 %12 to i32 %arrayidx21.i = getelementptr inbounds [12 x [4 x i16]], [12 x [4 x i16]]* @silk_resampler_frac_FIR_12, i64 0, i64 %idxprom5120.i, i64 2 %13 = load i16, i16* %arrayidx21.i, align 4 %conv22.i = sext i16 %13 to i32 %mul23.i = mul nsw i32 %conv22.i, %conv18.i %add24.i = add nsw i32 %add.i, %mul23.i %arrayidx25.i = getelementptr inbounds i16, i16* %arrayidx.i, i64 3 %14 = load i16, i16* %arrayidx25.i, align 2 %conv26.i = sext i16 %14 to i32 %arrayidx29.i = getelementptr inbounds [12 x [4 x i16]], [12 x [4 x i16]]* @silk_resampler_frac_FIR_12, i64 0, i64 %idxprom5120.i, i64 3 %15 = load i16, i16* %arrayidx29.i, align 2 %conv30.i = sext i16 %15 to i32 %mul31.i = mul nsw i32 %conv30.i, %conv26.i %add32.i = add nsw i32 %add24.i, %mul31.i %arrayidx33.i = getelementptr inbounds i16, i16* %arrayidx.i, i64 4 %16 = load i16, i16* %arrayidx33.i, align 2 %conv34.i = sext i16 %16 to i32 %sub.i = sub nsw i32 11, %shr119.i %idxprom35.i = sext i32 %sub.i to i64 %arrayidx37.i = getelementptr inbounds [12 x [4 x i16]], [12 x [4 x i16]]* @silk_resampler_frac_FIR_12, i64 0, i64 %idxprom35.i, i64 3 %17 = load i16, i16* %arrayidx37.i, align 2 %conv38.i = sext i16 %17 to i32 %mul39.i = mul nsw i32 %conv38.i, %conv34.i %add40.i = add nsw i32 %add32.i, %mul39.i %arrayidx41.i = getelementptr inbounds i16, i16* %arrayidx.i, i64 5 %18 = load i16, i16* %arrayidx41.i, align 2 %conv42.i = sext i16 %18 to i32 %arrayidx46.i = getelementptr inbounds [12 x [4 x i16]], [12 x [4 x i16]]* @silk_resampler_frac_FIR_12, i64 0, i64 %idxprom35.i, i64 2 %19 = load i16, i16* %arrayidx46.i, align 4 %conv47.i = sext i16 %19 to i32 %mul48.i = mul nsw i32 %conv47.i, %conv42.i %add49.i = add nsw i32 %add40.i, %mul48.i %arrayidx50.i = getelementptr inbounds i16, i16* %arrayidx.i, i64 6 %20 = load i16, i16* %arrayidx50.i, align 2 %conv51.i = sext i16 %20 to i32 %arrayidx55.i = getelementptr inbounds [12 x [4 x i16]], [12 x [4 x i16]]* @silk_resampler_frac_FIR_12, i64 0, i64 %idxprom35.i, i64 1 %21 = load i16, i16* %arrayidx55.i, align 2 %conv56.i = sext i16 %21 to i32 %mul57.i = mul nsw i32 %conv56.i, %conv51.i %add58.i = add nsw i32 %add49.i, %mul57.i %arrayidx59.i = getelementptr inbounds i16, i16* %arrayidx.i, i64 7 %22 = load i16, i16* %arrayidx59.i, align 2 %conv60.i = sext i16 %22 to i32 %arrayidx64.i = getelementptr inbounds [12 x [4 x i16]], [12 x [4 x i16]]* @silk_resampler_frac_FIR_12, i64 0, i64 %idxprom35.i, i64 0 %23 = load i16, i16* %arrayidx64.i, align 8 %conv65.i = sext i16 %23 to i32 %mul66.i = mul nsw i32 %conv65.i, %conv60.i %add67.i = add nsw i32 %add58.i, %mul66.i %shr68.i = ashr i32 %add67.i, 14 %add69.i = add nsw i32 %shr68.i, 1 %shr70.i = ashr i32 %add69.i, 1 %cmp71.i = icmp sgt i32 %shr70.i, 32767 %cmp76.i = icmp slt i32 %shr70.i, -32768 %.shr70.i = select i1 %cmp76.i, i32 -32768, i32 %shr70.i %24 = trunc i32 %.shr70.i to i16 %conv85.i = select i1 %cmp71.i, i16 32767, i16 %24 %incdec.ptr.i = getelementptr inbounds i16, i16* %out.addr.0122.i, i64 1 store i16 %conv85.i, i16* %out.addr.0122.i, align 2 %add86.i = add nsw i32 %add86.sink123.i, %5 %cmp.i = icmp slt i32 %add86.i, %shl br i1 %cmp.i, label %for.body.i, label %silk_resampler_private_IIR_FIR_INTERPOL.exit.loopexit silk_resampler_private_IIR_FIR_INTERPOL.exit.loopexit: ; preds = %for.body.i br label %silk_resampler_private_IIR_FIR_INTERPOL.exit silk_resampler_private_IIR_FIR_INTERPOL.exit: ; preds = %silk_resampler_private_IIR_FIR_INTERPOL.exit.loopexit, %while.cond %out.addr.0.lcssa.i = phi i16* [ %out.addr.0, %while.cond ], [ %incdec.ptr.i, %silk_resampler_private_IIR_FIR_INTERPOL.exit.loopexit ] %sub = sub nsw i32 %inLen.addr.0, %7 %cmp4 = icmp sgt i32 %sub, 0 %shl5 = shl i32 %7, 1 %idxprom = sext i32 %shl5 to i64 br i1 %cmp4, label %if.then, label %while.end if.then: ; preds = %silk_resampler_private_IIR_FIR_INTERPOL.exit %idx.ext = sext i32 %7 to i64 %add.ptr = getelementptr inbounds i16, i16* %in.addr.0, i64 %idx.ext %arrayidx6 = getelementptr inbounds i16, i16* %vla, i64 %idxprom %25 = bitcast i16* %arrayidx6 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %25, i64 16, i32 4, i1 false) %.pre = load i32, i32* %0, align 4 br label %while.cond while.end: ; preds = %silk_resampler_private_IIR_FIR_INTERPOL.exit %arrayidx12 = getelementptr inbounds i16, i16* %vla, i64 %idxprom %26 = bitcast i16* %arrayidx12 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %sFIR, i8* %26, i64 16, i32 2, i1 false) ret void } ; Function Attrs: argmemonly nounwind declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture writeonly, i8* nocapture readonly, i64, i32, i1) #1 declare void @silk_resampler_private_up2_HQ(i32*, i16*, i16*, i32) local_unnamed_addr #2 attributes #0 = { nounwind ssp uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "stack-protector-buffer-size"="4" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #1 = { argmemonly nounwind } attributes #2 = { "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "stack-protector-buffer-size"="4" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #3 = { nounwind } !llvm.module.flags = !{!0} !llvm.ident = !{!1} !0 = !{i32 1, !"PIC Level", i32 2} !1 = !{!"clang version 4.0.0 (trunk 279774) (llvm/trunk 279773)"}