790 lines
34 KiB
LLVM
790 lines
34 KiB
LLVM
; ModuleID = 'edn.c'
|
|
source_filename = "edn.c"
|
|
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
|
|
target triple = "x86_64-pc-linux-gnu"
|
|
|
|
@__const.main.a = private unnamed_addr constant [200 x i16] [i16 0, i16 2047, i16 3072, i16 2048, i16 512, i16 -2048, i16 -3328, i16 1024, i16 0, i16 2047, i16 3072, i16 2048, i16 512, i16 -2048, i16 -3328, i16 1024, i16 0, i16 2047, i16 3072, i16 2048, i16 512, i16 -2048, i16 -3328, i16 1024, i16 0, i16 2047, i16 3072, i16 2048, i16 512, i16 -2048, i16 -3328, i16 1024, i16 0, i16 2047, i16 3072, i16 2048, i16 512, i16 -2048, i16 -3328, i16 1024, i16 0, i16 2047, i16 3072, i16 2048, i16 512, i16 -2048, i16 -3328, i16 1024, i16 0, i16 2047, i16 3072, i16 2048, i16 512, i16 -2048, i16 -3328, i16 1024, i16 0, i16 2047, i16 3072, i16 2048, i16 512, i16 -2048, i16 -3328, i16 1024, i16 0, i16 2047, i16 3072, i16 2048, i16 512, i16 -2048, i16 -3328, i16 1024, i16 0, i16 2047, i16 3072, i16 2048, i16 512, i16 -2048, i16 -3328, i16 1024, i16 0, i16 2047, i16 3072, i16 2048, i16 512, i16 -2048, i16 -3328, i16 1024, i16 0, i16 2047, i16 3072, i16 2048, i16 512, i16 -2048, i16 -3328, i16 1024, i16 0, i16 2047, i16 3072, i16 2048, i16 512, i16 -2048, i16 -3328, i16 1024, i16 0, i16 2047, i16 3072, i16 2048, i16 512, i16 -2048, i16 -3328, i16 1024, i16 0, i16 2047, i16 3072, i16 2048, i16 512, i16 -2048, i16 -3328, i16 1024, i16 0, i16 2047, i16 3072, i16 2048, i16 512, i16 -2048, i16 -3328, i16 1024, i16 0, i16 2047, i16 3072, i16 2048, i16 512, i16 -2048, i16 -3328, i16 1024, i16 0, i16 2047, i16 3072, i16 2048, i16 512, i16 -2048, i16 -3328, i16 1024, i16 0, i16 2047, i16 3072, i16 2048, i16 512, i16 -2048, i16 -3328, i16 1024, i16 0, i16 2047, i16 3072, i16 2048, i16 512, i16 -2048, i16 -3328, i16 1024, i16 0, i16 2047, i16 3072, i16 2048, i16 512, i16 -2048, i16 -3328, i16 1024, i16 0, i16 2047, i16 3072, i16 2048, i16 512, i16 -2048, i16 -3328, i16 1024, i16 0, i16 2047, i16 3072, i16 2048, i16 512, i16 -2048, i16 -3328, i16 1024, i16 0, i16 2047, i16 3072, i16 2048, i16 512, i16 -2048, i16 -3328, i16 1024, i16 0, i16 2047, i16 3072, i16 2048, i16 512, i16 -2048, i16 -3328, i16 1024], align 16
|
|
@__const.main.b = private unnamed_addr constant [200 x i16] [i16 3168, i16 3136, i16 3104, i16 3072, i16 -2560, i16 -3072, i16 -3584, i16 -4096, i16 3168, i16 3136, i16 3104, i16 3072, i16 -2560, i16 -3072, i16 -3584, i16 -4096, i16 3168, i16 3136, i16 3104, i16 3072, i16 -2560, i16 -3072, i16 -3584, i16 -4096, i16 3168, i16 3136, i16 3104, i16 3072, i16 -2560, i16 -3072, i16 -3584, i16 -4096, i16 3168, i16 3136, i16 3104, i16 3072, i16 -2560, i16 -3072, i16 -3584, i16 -4096, i16 3168, i16 3136, i16 3104, i16 3072, i16 -2560, i16 -3072, i16 -3584, i16 -4096, i16 3168, i16 3136, i16 3104, i16 3072, i16 -2560, i16 -3072, i16 -3584, i16 -4096, i16 3168, i16 3136, i16 3104, i16 3072, i16 -2560, i16 -3072, i16 -3584, i16 -4096, i16 3168, i16 3136, i16 3104, i16 3072, i16 -2560, i16 -3072, i16 -3584, i16 -4096, i16 3168, i16 3136, i16 3104, i16 3072, i16 -2560, i16 -3072, i16 -3584, i16 -4096, i16 3168, i16 3136, i16 3104, i16 3072, i16 -2560, i16 -3072, i16 -3584, i16 -4096, i16 3168, i16 3136, i16 3104, i16 3072, i16 -2560, i16 -3072, i16 -3584, i16 -4096, i16 3168, i16 3136, i16 3104, i16 3072, i16 -2560, i16 -3072, i16 -3584, i16 -4096, i16 3168, i16 3136, i16 3104, i16 3072, i16 -2560, i16 -3072, i16 -3584, i16 -4096, i16 3168, i16 3136, i16 3104, i16 3072, i16 -2560, i16 -3072, i16 -3584, i16 -4096, i16 3168, i16 3136, i16 3104, i16 3072, i16 -2560, i16 -3072, i16 -3584, i16 -4096, i16 3168, i16 3136, i16 3104, i16 3072, i16 -2560, i16 -3072, i16 -3584, i16 -4096, i16 3168, i16 3136, i16 3104, i16 3072, i16 -2560, i16 -3072, i16 -3584, i16 -4096, i16 3168, i16 3136, i16 3104, i16 3072, i16 -2560, i16 -3072, i16 -3584, i16 -4096, i16 3168, i16 3136, i16 3104, i16 3072, i16 -2560, i16 -3072, i16 -3584, i16 -4096, i16 3168, i16 3136, i16 3104, i16 3072, i16 -2560, i16 -3072, i16 -3584, i16 -4096, i16 3168, i16 3136, i16 3104, i16 3072, i16 -2560, i16 -3072, i16 -3584, i16 -4096, i16 3168, i16 3136, i16 3104, i16 3072, i16 -2560, i16 -3072, i16 -3584, i16 -4096, i16 3168, i16 3136, i16 3104, i16 3072, i16 -2560, i16 -3072, i16 -3584, i16 -4096, i16 3168, i16 3136, i16 3104, i16 3072, i16 -2560, i16 -3072, i16 -3584, i16 -4096], align 16
|
|
|
|
; Function Attrs: nofree norecurse nosync nounwind sspstrong uwtable
|
|
define dso_local void @vec_mpy1(i16* nocapture %0, i16* nocapture readonly %1, i16 signext %2) local_unnamed_addr #0 {
|
|
%4 = sext i16 %2 to i32
|
|
br label %5
|
|
|
|
5: ; preds = %3, %5
|
|
%6 = phi i64 [ 0, %3 ], [ %16, %5 ]
|
|
%7 = getelementptr inbounds i16, i16* %1, i64 %6
|
|
%8 = load i16, i16* %7, align 2, !tbaa !5
|
|
%9 = sext i16 %8 to i32
|
|
%10 = mul nsw i32 %9, %4
|
|
%11 = lshr i32 %10, 15
|
|
%12 = getelementptr inbounds i16, i16* %0, i64 %6
|
|
%13 = load i16, i16* %12, align 2, !tbaa !5
|
|
%14 = trunc i32 %11 to i16
|
|
%15 = add i16 %13, %14
|
|
store i16 %15, i16* %12, align 2, !tbaa !5
|
|
%16 = add nuw nsw i64 %6, 1
|
|
%17 = icmp eq i64 %16, 150
|
|
br i1 %17, label %18, label %5, !llvm.loop !9
|
|
|
|
18: ; preds = %5
|
|
ret void
|
|
}
|
|
|
|
; Function Attrs: argmemonly mustprogress nofree nosync nounwind willreturn
|
|
declare void @llvm.lifetime.start.p0i8(i64 immarg, i8* nocapture) #1
|
|
|
|
; Function Attrs: argmemonly mustprogress nofree nosync nounwind willreturn
|
|
declare void @llvm.lifetime.end.p0i8(i64 immarg, i8* nocapture) #1
|
|
|
|
; Function Attrs: nofree norecurse nosync nounwind sspstrong uwtable
|
|
define dso_local i64 @mac(i16* nocapture readonly %0, i16* nocapture readonly %1, i64 %2, i64* nocapture %3) local_unnamed_addr #0 {
|
|
%5 = load i64, i64* %3, align 8, !tbaa !12
|
|
br label %6
|
|
|
|
6: ; preds = %4, %6
|
|
%7 = phi i64 [ %5, %4 ], [ %18, %6 ]
|
|
%8 = phi i64 [ 0, %4 ], [ %22, %6 ]
|
|
%9 = phi i64 [ %2, %4 ], [ %21, %6 ]
|
|
%10 = getelementptr inbounds i16, i16* %1, i64 %8
|
|
%11 = load i16, i16* %10, align 2, !tbaa !5
|
|
%12 = sext i16 %11 to i32
|
|
%13 = getelementptr inbounds i16, i16* %0, i64 %8
|
|
%14 = load i16, i16* %13, align 2, !tbaa !5
|
|
%15 = sext i16 %14 to i32
|
|
%16 = mul nsw i32 %15, %12
|
|
%17 = sext i32 %16 to i64
|
|
%18 = add nsw i64 %7, %17
|
|
%19 = mul nsw i32 %12, %12
|
|
%20 = zext i32 %19 to i64
|
|
%21 = add nsw i64 %9, %20
|
|
%22 = add nuw nsw i64 %8, 1
|
|
%23 = icmp eq i64 %22, 150
|
|
br i1 %23, label %24, label %6, !llvm.loop !14
|
|
|
|
24: ; preds = %6
|
|
store i64 %18, i64* %3, align 8, !tbaa !12
|
|
ret i64 %21
|
|
}
|
|
|
|
; Function Attrs: nofree norecurse nosync nounwind sspstrong uwtable
|
|
define dso_local void @fir(i16* nocapture readonly %0, i16* nocapture readonly %1, i64* nocapture %2) local_unnamed_addr #0 {
|
|
br label %4
|
|
|
|
4: ; preds = %3, %20
|
|
%5 = phi i64 [ 0, %3 ], [ %23, %20 ]
|
|
br label %6
|
|
|
|
6: ; preds = %4, %6
|
|
%7 = phi i64 [ 0, %4 ], [ %17, %6 ]
|
|
%8 = phi i64 [ 0, %4 ], [ %18, %6 ]
|
|
%9 = add nuw nsw i64 %8, %5
|
|
%10 = getelementptr inbounds i16, i16* %0, i64 %9
|
|
%11 = load i16, i16* %10, align 2, !tbaa !5
|
|
%12 = sext i16 %11 to i64
|
|
%13 = getelementptr inbounds i16, i16* %1, i64 %8
|
|
%14 = load i16, i16* %13, align 2, !tbaa !5
|
|
%15 = sext i16 %14 to i64
|
|
%16 = mul nsw i64 %15, %12
|
|
%17 = add nsw i64 %16, %7
|
|
%18 = add nuw nsw i64 %8, 1
|
|
%19 = icmp eq i64 %18, 50
|
|
br i1 %19, label %20, label %6, !llvm.loop !15
|
|
|
|
20: ; preds = %6
|
|
%21 = ashr i64 %17, 15
|
|
%22 = getelementptr inbounds i64, i64* %2, i64 %5
|
|
store i64 %21, i64* %22, align 8, !tbaa !12
|
|
%23 = add nuw nsw i64 %5, 1
|
|
%24 = icmp eq i64 %23, 50
|
|
br i1 %24, label %25, label %4, !llvm.loop !16
|
|
|
|
25: ; preds = %20
|
|
ret void
|
|
}
|
|
|
|
; Function Attrs: nofree norecurse nosync nounwind sspstrong uwtable
|
|
define dso_local void @fir_no_red_ld(i16* nocapture readonly %0, i16* nocapture readonly %1, i64* nocapture %2) local_unnamed_addr #0 {
|
|
br label %4
|
|
|
|
4: ; preds = %3, %44
|
|
%5 = phi i64 [ 0, %3 ], [ %50, %44 ]
|
|
%6 = getelementptr inbounds i16, i16* %0, i64 %5
|
|
%7 = load i16, i16* %6, align 2, !tbaa !5
|
|
br label %8
|
|
|
|
8: ; preds = %4, %8
|
|
%9 = phi i64 [ 0, %4 ], [ %42, %8 ]
|
|
%10 = phi i64 [ 0, %4 ], [ %37, %8 ]
|
|
%11 = phi i16 [ %7, %4 ], [ %30, %8 ]
|
|
%12 = phi i64 [ 0, %4 ], [ %41, %8 ]
|
|
%13 = add nuw nsw i64 %9, %5
|
|
%14 = or i64 %13, 1
|
|
%15 = getelementptr inbounds i16, i16* %0, i64 %14
|
|
%16 = load i16, i16* %15, align 2, !tbaa !5
|
|
%17 = getelementptr inbounds i16, i16* %1, i64 %9
|
|
%18 = load i16, i16* %17, align 2, !tbaa !5
|
|
%19 = sext i16 %11 to i32
|
|
%20 = sext i16 %18 to i32
|
|
%21 = mul nsw i32 %20, %19
|
|
%22 = sext i32 %21 to i64
|
|
%23 = add nsw i64 %10, %22
|
|
%24 = sext i16 %16 to i32
|
|
%25 = mul nsw i32 %20, %24
|
|
%26 = sext i32 %25 to i64
|
|
%27 = add nsw i64 %12, %26
|
|
%28 = add nuw nsw i64 %13, 2
|
|
%29 = getelementptr inbounds i16, i16* %0, i64 %28
|
|
%30 = load i16, i16* %29, align 2, !tbaa !5
|
|
%31 = or i64 %9, 1
|
|
%32 = getelementptr inbounds i16, i16* %1, i64 %31
|
|
%33 = load i16, i16* %32, align 2, !tbaa !5
|
|
%34 = sext i16 %33 to i32
|
|
%35 = mul nsw i32 %34, %24
|
|
%36 = sext i32 %35 to i64
|
|
%37 = add nsw i64 %23, %36
|
|
%38 = sext i16 %30 to i32
|
|
%39 = mul nsw i32 %34, %38
|
|
%40 = sext i32 %39 to i64
|
|
%41 = add nsw i64 %27, %40
|
|
%42 = add nuw nsw i64 %9, 2
|
|
%43 = icmp ult i64 %9, 30
|
|
br i1 %43, label %8, label %44, !llvm.loop !17
|
|
|
|
44: ; preds = %8
|
|
%45 = ashr i64 %37, 15
|
|
%46 = getelementptr inbounds i64, i64* %2, i64 %5
|
|
store i64 %45, i64* %46, align 8, !tbaa !12
|
|
%47 = ashr i64 %41, 15
|
|
%48 = or i64 %5, 1
|
|
%49 = getelementptr inbounds i64, i64* %2, i64 %48
|
|
store i64 %47, i64* %49, align 8, !tbaa !12
|
|
%50 = add nuw nsw i64 %5, 2
|
|
%51 = icmp ult i64 %5, 98
|
|
br i1 %51, label %4, label %52, !llvm.loop !18
|
|
|
|
52: ; preds = %44
|
|
ret void
|
|
}
|
|
|
|
; Function Attrs: nofree norecurse nosync nounwind sspstrong uwtable
|
|
define dso_local i64 @latsynth(i16* nocapture %0, i16* nocapture readonly %1, i64 %2, i64 %3) local_unnamed_addr #0 {
|
|
%5 = add nsw i64 %2, -1
|
|
%6 = getelementptr inbounds i16, i16* %0, i64 %5
|
|
%7 = load i16, i16* %6, align 2, !tbaa !5
|
|
%8 = sext i16 %7 to i64
|
|
%9 = getelementptr inbounds i16, i16* %1, i64 %5
|
|
%10 = load i16, i16* %9, align 2, !tbaa !5
|
|
%11 = sext i16 %10 to i64
|
|
%12 = mul nsw i64 %11, %8
|
|
%13 = sub nsw i64 %3, %12
|
|
%14 = icmp sgt i64 %2, 1
|
|
br i1 %14, label %15, label %37
|
|
|
|
15: ; preds = %4
|
|
%16 = add nsw i64 %2, -2
|
|
br label %17
|
|
|
|
17: ; preds = %15, %17
|
|
%18 = phi i64 [ %35, %17 ], [ %16, %15 ]
|
|
%19 = phi i64 [ %27, %17 ], [ %13, %15 ]
|
|
%20 = getelementptr inbounds i16, i16* %0, i64 %18
|
|
%21 = load i16, i16* %20, align 2, !tbaa !5
|
|
%22 = sext i16 %21 to i64
|
|
%23 = getelementptr inbounds i16, i16* %1, i64 %18
|
|
%24 = load i16, i16* %23, align 2, !tbaa !5
|
|
%25 = sext i16 %24 to i64
|
|
%26 = mul nsw i64 %25, %22
|
|
%27 = sub nsw i64 %19, %26
|
|
%28 = ashr i64 %27, 16
|
|
%29 = mul nsw i64 %28, %25
|
|
%30 = lshr i64 %29, 16
|
|
%31 = trunc i64 %30 to i16
|
|
%32 = add i16 %21, %31
|
|
%33 = add nsw i64 %18, 1
|
|
%34 = getelementptr inbounds i16, i16* %0, i64 %33
|
|
store i16 %32, i16* %34, align 2, !tbaa !5
|
|
%35 = add nsw i64 %18, -1
|
|
%36 = icmp sgt i64 %18, 0
|
|
br i1 %36, label %17, label %37, !llvm.loop !19
|
|
|
|
37: ; preds = %17, %4
|
|
%38 = phi i64 [ %13, %4 ], [ %27, %17 ]
|
|
%39 = lshr i64 %38, 16
|
|
%40 = trunc i64 %39 to i16
|
|
store i16 %40, i16* %0, align 2, !tbaa !5
|
|
ret i64 %38
|
|
}
|
|
|
|
; Function Attrs: nofree norecurse nosync nounwind sspstrong uwtable
|
|
define dso_local void @iir1(i16* nocapture readonly %0, i16* nocapture readonly %1, i64* nocapture %2, i64* nocapture %3) local_unnamed_addr #0 {
|
|
%5 = load i16, i16* %1, align 2, !tbaa !5
|
|
%6 = sext i16 %5 to i64
|
|
br label %7
|
|
|
|
7: ; preds = %4, %7
|
|
%8 = phi i64 [ 0, %4 ], [ %38, %7 ]
|
|
%9 = phi i16* [ %0, %4 ], [ %36, %7 ]
|
|
%10 = phi i64 [ %6, %4 ], [ %35, %7 ]
|
|
%11 = phi i64* [ %3, %4 ], [ %37, %7 ]
|
|
%12 = getelementptr inbounds i16, i16* %9, i64 2
|
|
%13 = load i16, i16* %12, align 2, !tbaa !5
|
|
%14 = sext i16 %13 to i64
|
|
%15 = load i64, i64* %11, align 8, !tbaa !12
|
|
%16 = mul nsw i64 %15, %14
|
|
%17 = getelementptr inbounds i16, i16* %9, i64 3
|
|
%18 = load i16, i16* %17, align 2, !tbaa !5
|
|
%19 = sext i16 %18 to i64
|
|
%20 = getelementptr inbounds i64, i64* %11, i64 1
|
|
%21 = load i64, i64* %20, align 8, !tbaa !12
|
|
%22 = mul nsw i64 %21, %19
|
|
%23 = add nsw i64 %22, %16
|
|
%24 = ashr i64 %23, 15
|
|
%25 = add nsw i64 %24, %10
|
|
%26 = load i16, i16* %9, align 2, !tbaa !5
|
|
%27 = sext i16 %26 to i64
|
|
%28 = mul nsw i64 %15, %27
|
|
%29 = getelementptr inbounds i16, i16* %9, i64 1
|
|
%30 = load i16, i16* %29, align 2, !tbaa !5
|
|
%31 = sext i16 %30 to i64
|
|
%32 = mul nsw i64 %21, %31
|
|
%33 = add nsw i64 %32, %28
|
|
%34 = ashr i64 %33, 15
|
|
%35 = add nsw i64 %34, %25
|
|
store i64 %15, i64* %20, align 8, !tbaa !12
|
|
store i64 %25, i64* %11, align 8, !tbaa !12
|
|
%36 = getelementptr inbounds i16, i16* %9, i64 4
|
|
%37 = getelementptr inbounds i64, i64* %11, i64 2
|
|
%38 = add nuw nsw i64 %8, 1
|
|
%39 = icmp eq i64 %38, 50
|
|
br i1 %39, label %40, label %7, !llvm.loop !20
|
|
|
|
40: ; preds = %7
|
|
store i64 %35, i64* %2, align 8, !tbaa !12
|
|
ret void
|
|
}
|
|
|
|
; Function Attrs: nofree norecurse nosync nounwind readnone sspstrong uwtable
|
|
define dso_local i64 @codebook(i64 %0, i64 %1, i64 %2, i64 %3, i64 returned %4, i16* nocapture readnone %5, i16 signext %6, i16 signext %7) local_unnamed_addr #2 {
|
|
ret i64 %4
|
|
}
|
|
|
|
; Function Attrs: nofree nosync nounwind sspstrong uwtable
|
|
define dso_local void @jpegdct(i16* nocapture %0, i16* nocapture readonly %1) local_unnamed_addr #3 {
|
|
%3 = alloca [12 x i64], align 16
|
|
%4 = bitcast [12 x i64]* %3 to i8*
|
|
call void @llvm.lifetime.start.p0i8(i64 96, i8* nonnull %4) #5
|
|
%5 = getelementptr inbounds [12 x i64], [12 x i64]* %3, i64 0, i64 0
|
|
%6 = getelementptr inbounds [12 x i64], [12 x i64]* %3, i64 0, i64 3
|
|
%7 = getelementptr inbounds [12 x i64], [12 x i64]* %3, i64 0, i64 8
|
|
%8 = getelementptr inbounds [12 x i64], [12 x i64]* %3, i64 0, i64 9
|
|
%9 = getelementptr inbounds [12 x i64], [12 x i64]* %3, i64 0, i64 1
|
|
%10 = getelementptr inbounds [12 x i64], [12 x i64]* %3, i64 0, i64 2
|
|
%11 = getelementptr inbounds [12 x i64], [12 x i64]* %3, i64 0, i64 10
|
|
%12 = getelementptr inbounds [12 x i64], [12 x i64]* %3, i64 0, i64 11
|
|
%13 = getelementptr inbounds i16, i16* %1, i64 10
|
|
%14 = getelementptr inbounds i16, i16* %1, i64 9
|
|
%15 = getelementptr inbounds i16, i16* %1, i64 11
|
|
%16 = getelementptr inbounds [12 x i64], [12 x i64]* %3, i64 0, i64 4
|
|
%17 = getelementptr inbounds [12 x i64], [12 x i64]* %3, i64 0, i64 7
|
|
%18 = getelementptr inbounds i16, i16* %1, i64 2
|
|
%19 = getelementptr inbounds [12 x i64], [12 x i64]* %3, i64 0, i64 5
|
|
%20 = getelementptr inbounds [12 x i64], [12 x i64]* %3, i64 0, i64 6
|
|
%21 = getelementptr inbounds i16, i16* %1, i64 8
|
|
%22 = getelementptr inbounds i16, i16* %1, i64 1
|
|
%23 = getelementptr inbounds i16, i16* %1, i64 3
|
|
%24 = getelementptr inbounds i16, i16* %1, i64 4
|
|
%25 = getelementptr inbounds i16, i16* %1, i64 6
|
|
%26 = getelementptr inbounds i16, i16* %1, i64 5
|
|
%27 = getelementptr inbounds i16, i16* %1, i64 7
|
|
br label %28
|
|
|
|
28: ; preds = %2, %204
|
|
%29 = phi i64 [ 13, %2 ], [ %207, %204 ]
|
|
%30 = phi i64 [ 0, %2 ], [ %206, %204 ]
|
|
%31 = phi i64 [ 8, %2 ], [ %208, %204 ]
|
|
%32 = phi i32 [ 1, %2 ], [ %210, %204 ]
|
|
%33 = phi i16* [ %0, %2 ], [ %209, %204 ]
|
|
%34 = shl nuw nsw i32 %32, 2
|
|
%35 = zext i32 %34 to i64
|
|
%36 = shl nuw nsw i32 %32, 1
|
|
%37 = zext i32 %36 to i64
|
|
%38 = mul nuw nsw i32 %32, 6
|
|
%39 = zext i32 %38 to i64
|
|
%40 = mul nuw nsw i32 %32, 7
|
|
%41 = zext i32 %40 to i64
|
|
%42 = mul nuw nsw i32 %32, 5
|
|
%43 = zext i32 %42 to i64
|
|
%44 = mul nuw nsw i32 %32, 3
|
|
%45 = zext i32 %44 to i64
|
|
%46 = zext i32 %32 to i64
|
|
%47 = zext i32 %32 to i64
|
|
%48 = zext i32 %32 to i64
|
|
%49 = trunc i64 %29 to i32
|
|
%50 = trunc i64 %29 to i32
|
|
%51 = trunc i64 %29 to i32
|
|
%52 = trunc i64 %29 to i32
|
|
br label %53
|
|
|
|
53: ; preds = %28, %73
|
|
%54 = phi i16 [ 0, %28 ], [ %201, %73 ]
|
|
%55 = phi i16* [ %33, %28 ], [ %202, %73 ]
|
|
br label %56
|
|
|
|
56: ; preds = %53, %56
|
|
%57 = phi i64 [ 0, %53 ], [ %71, %56 ]
|
|
%58 = mul nuw nsw i64 %57, %47
|
|
%59 = getelementptr inbounds i16, i16* %55, i64 %58
|
|
%60 = load i16, i16* %59, align 2, !tbaa !5
|
|
%61 = sext i16 %60 to i64
|
|
%62 = sub nuw nsw i64 7, %57
|
|
%63 = mul nsw i64 %62, %48
|
|
%64 = getelementptr inbounds i16, i16* %55, i64 %63
|
|
%65 = load i16, i16* %64, align 2, !tbaa !5
|
|
%66 = sext i16 %65 to i64
|
|
%67 = add nsw i64 %66, %61
|
|
%68 = getelementptr inbounds [12 x i64], [12 x i64]* %3, i64 0, i64 %57
|
|
store i64 %67, i64* %68, align 8, !tbaa !12
|
|
%69 = sub nsw i64 %61, %66
|
|
%70 = getelementptr inbounds [12 x i64], [12 x i64]* %3, i64 0, i64 %62
|
|
store i64 %69, i64* %70, align 8, !tbaa !12
|
|
%71 = add nuw nsw i64 %57, 1
|
|
%72 = icmp eq i64 %71, 4
|
|
br i1 %72, label %73, label %56, !llvm.loop !21
|
|
|
|
73: ; preds = %56
|
|
%74 = load i64, i64* %5, align 16, !tbaa !12
|
|
%75 = load i64, i64* %6, align 8, !tbaa !12
|
|
%76 = add nsw i64 %75, %74
|
|
store i64 %76, i64* %7, align 16, !tbaa !12
|
|
%77 = sub nsw i64 %74, %75
|
|
store i64 %77, i64* %8, align 8, !tbaa !12
|
|
%78 = load i64, i64* %9, align 8, !tbaa !12
|
|
%79 = load i64, i64* %10, align 16, !tbaa !12
|
|
%80 = add nsw i64 %79, %78
|
|
store i64 %80, i64* %11, align 16, !tbaa !12
|
|
%81 = sub nsw i64 %78, %79
|
|
store i64 %81, i64* %12, align 8, !tbaa !12
|
|
%82 = add nsw i64 %80, %76
|
|
%83 = ashr i64 %82, %30
|
|
%84 = trunc i64 %83 to i16
|
|
store i16 %84, i16* %55, align 2, !tbaa !5
|
|
%85 = sub nsw i64 %76, %80
|
|
%86 = ashr i64 %85, %30
|
|
%87 = trunc i64 %86 to i16
|
|
%88 = getelementptr inbounds i16, i16* %55, i64 %35
|
|
store i16 %87, i16* %88, align 2, !tbaa !5
|
|
%89 = add nsw i64 %81, %77
|
|
%90 = trunc i64 %89 to i32
|
|
%91 = shl i32 %90, 16
|
|
%92 = ashr exact i32 %91, 16
|
|
%93 = load i16, i16* %13, align 2, !tbaa !5
|
|
%94 = sext i16 %93 to i32
|
|
%95 = mul nsw i32 %92, %94
|
|
%96 = sext i32 %95 to i64
|
|
store i64 %96, i64* %7, align 16, !tbaa !12
|
|
%97 = load i16, i16* %14, align 2, !tbaa !5
|
|
%98 = sext i16 %97 to i64
|
|
%99 = mul nsw i64 %77, %98
|
|
%100 = ashr i64 %99, %29
|
|
%101 = add i64 %100, %96
|
|
%102 = trunc i64 %101 to i16
|
|
%103 = getelementptr inbounds i16, i16* %55, i64 %37
|
|
store i16 %102, i16* %103, align 2, !tbaa !5
|
|
%104 = load i16, i16* %15, align 2, !tbaa !5
|
|
%105 = sext i16 %104 to i64
|
|
%106 = mul nsw i64 %81, %105
|
|
%107 = ashr i64 %106, %29
|
|
%108 = add i64 %107, %96
|
|
%109 = trunc i64 %108 to i16
|
|
%110 = getelementptr inbounds i16, i16* %55, i64 %39
|
|
store i16 %109, i16* %110, align 2, !tbaa !5
|
|
%111 = load i64, i64* %16, align 16, !tbaa !12
|
|
%112 = load i64, i64* %17, align 8, !tbaa !12
|
|
%113 = add nsw i64 %112, %111
|
|
%114 = trunc i64 %113 to i32
|
|
%115 = shl i32 %114, 16
|
|
%116 = ashr exact i32 %115, 16
|
|
%117 = load i16, i16* %18, align 2, !tbaa !5
|
|
%118 = sext i16 %117 to i32
|
|
%119 = mul nsw i32 %116, %118
|
|
%120 = sext i32 %119 to i64
|
|
store i64 %120, i64* %5, align 16, !tbaa !12
|
|
%121 = load i64, i64* %19, align 8, !tbaa !12
|
|
%122 = load i64, i64* %20, align 16, !tbaa !12
|
|
%123 = add nsw i64 %122, %121
|
|
%124 = trunc i64 %123 to i32
|
|
%125 = shl i32 %124, 16
|
|
%126 = ashr exact i32 %125, 16
|
|
%127 = load i16, i16* %1, align 2, !tbaa !5
|
|
%128 = sext i16 %127 to i32
|
|
%129 = mul nsw i32 %126, %128
|
|
%130 = sext i32 %129 to i64
|
|
store i64 %130, i64* %9, align 8, !tbaa !12
|
|
%131 = add nsw i64 %122, %111
|
|
store i64 %131, i64* %10, align 16, !tbaa !12
|
|
%132 = add nsw i64 %121, %112
|
|
store i64 %132, i64* %6, align 8, !tbaa !12
|
|
%133 = add nsw i64 %131, %132
|
|
%134 = trunc i64 %133 to i32
|
|
%135 = shl i32 %134, 16
|
|
%136 = ashr exact i32 %135, 16
|
|
%137 = load i16, i16* %21, align 2, !tbaa !5
|
|
%138 = sext i16 %137 to i32
|
|
%139 = mul nsw i32 %136, %138
|
|
%140 = sext i32 %139 to i64
|
|
store i64 %140, i64* %7, align 16, !tbaa !12
|
|
%141 = trunc i64 %131 to i32
|
|
%142 = shl i32 %141, 16
|
|
%143 = ashr exact i32 %142, 16
|
|
%144 = load i16, i16* %22, align 2, !tbaa !5
|
|
%145 = sext i16 %144 to i32
|
|
%146 = mul nsw i32 %143, %145
|
|
%147 = sext i32 %146 to i64
|
|
%148 = add nsw i64 %147, %140
|
|
store i64 %148, i64* %10, align 16, !tbaa !12
|
|
%149 = trunc i64 %132 to i32
|
|
%150 = shl i32 %149, 16
|
|
%151 = ashr exact i32 %150, 16
|
|
%152 = load i16, i16* %23, align 2, !tbaa !5
|
|
%153 = sext i16 %152 to i32
|
|
%154 = mul nsw i32 %151, %153
|
|
%155 = sext i32 %154 to i64
|
|
%156 = add nsw i64 %155, %140
|
|
store i64 %156, i64* %6, align 8, !tbaa !12
|
|
%157 = load i16, i16* %24, align 2, !tbaa !5
|
|
%158 = zext i16 %157 to i64
|
|
%159 = mul i64 %111, %158
|
|
%160 = add nsw i64 %148, %120
|
|
%161 = add i64 %160, %159
|
|
%162 = trunc i64 %161 to i32
|
|
%163 = shl i32 %162, 16
|
|
%164 = ashr exact i32 %163, 16
|
|
%165 = ashr i32 %164, %49
|
|
%166 = trunc i32 %165 to i16
|
|
%167 = getelementptr inbounds i16, i16* %55, i64 %41
|
|
store i16 %166, i16* %167, align 2, !tbaa !5
|
|
%168 = load i16, i16* %25, align 2, !tbaa !5
|
|
%169 = zext i16 %168 to i64
|
|
%170 = mul i64 %121, %169
|
|
%171 = add nsw i64 %156, %130
|
|
%172 = add i64 %171, %170
|
|
%173 = trunc i64 %172 to i32
|
|
%174 = shl i32 %173, 16
|
|
%175 = ashr exact i32 %174, 16
|
|
%176 = ashr i32 %175, %50
|
|
%177 = trunc i32 %176 to i16
|
|
%178 = getelementptr inbounds i16, i16* %55, i64 %43
|
|
store i16 %177, i16* %178, align 2, !tbaa !5
|
|
%179 = load i16, i16* %26, align 2, !tbaa !5
|
|
%180 = zext i16 %179 to i64
|
|
%181 = mul i64 %122, %180
|
|
%182 = add nsw i64 %148, %130
|
|
%183 = add i64 %182, %181
|
|
%184 = trunc i64 %183 to i32
|
|
%185 = shl i32 %184, 16
|
|
%186 = ashr exact i32 %185, 16
|
|
%187 = ashr i32 %186, %51
|
|
%188 = trunc i32 %187 to i16
|
|
%189 = getelementptr inbounds i16, i16* %55, i64 %45
|
|
store i16 %188, i16* %189, align 2, !tbaa !5
|
|
%190 = load i16, i16* %27, align 2, !tbaa !5
|
|
%191 = zext i16 %190 to i64
|
|
%192 = mul i64 %112, %191
|
|
%193 = add nsw i64 %156, %120
|
|
%194 = add i64 %193, %192
|
|
%195 = trunc i64 %194 to i32
|
|
%196 = shl i32 %195, 16
|
|
%197 = ashr exact i32 %196, 16
|
|
%198 = ashr i32 %197, %52
|
|
%199 = trunc i32 %198 to i16
|
|
%200 = getelementptr inbounds i16, i16* %55, i64 %46
|
|
store i16 %199, i16* %200, align 2, !tbaa !5
|
|
%201 = add nuw nsw i16 %54, 1
|
|
%202 = getelementptr inbounds i16, i16* %55, i64 %31
|
|
%203 = icmp eq i16 %201, 8
|
|
br i1 %203, label %204, label %53, !llvm.loop !22
|
|
|
|
204: ; preds = %73
|
|
%205 = add nuw nsw i32 %32, 7
|
|
%206 = add nuw nsw i64 %30, 3
|
|
%207 = add nuw nsw i64 %29, 3
|
|
%208 = add nsw i64 %31, -7
|
|
%209 = getelementptr inbounds i16, i16* %202, i64 -64
|
|
%210 = and i32 %205, 65535
|
|
%211 = icmp ult i32 %210, 9
|
|
br i1 %211, label %28, label %212, !llvm.loop !23
|
|
|
|
212: ; preds = %204
|
|
call void @llvm.lifetime.end.p0i8(i64 96, i8* nonnull %4) #5
|
|
ret void
|
|
}
|
|
|
|
; Function Attrs: nofree nosync nounwind sspstrong uwtable
|
|
define dso_local i32 @main() local_unnamed_addr #3 {
|
|
%1 = alloca [200 x i16], align 16
|
|
%2 = alloca [200 x i16], align 16
|
|
%3 = alloca [200 x i64], align 16
|
|
%4 = bitcast [200 x i16]* %1 to i8*
|
|
call void @llvm.lifetime.start.p0i8(i64 400, i8* nonnull %4) #5
|
|
call void @llvm.memcpy.p0i8.p0i8.i64(i8* noundef nonnull align 16 dereferenceable(400) %4, i8* noundef nonnull align 16 dereferenceable(400) bitcast ([200 x i16]* @__const.main.a to i8*), i64 400, i1 false)
|
|
%5 = bitcast [200 x i16]* %2 to i8*
|
|
call void @llvm.lifetime.start.p0i8(i64 400, i8* nonnull %5) #5
|
|
call void @llvm.memcpy.p0i8.p0i8.i64(i8* noundef nonnull align 16 dereferenceable(400) %5, i8* noundef nonnull align 16 dereferenceable(400) bitcast ([200 x i16]* @__const.main.b to i8*), i64 400, i1 false)
|
|
%6 = bitcast [200 x i64]* %3 to i8*
|
|
call void @llvm.lifetime.start.p0i8(i64 1600, i8* nonnull %6) #5
|
|
%7 = getelementptr inbounds [200 x i16], [200 x i16]* %1, i64 0, i64 0
|
|
br label %8
|
|
|
|
8: ; preds = %8, %0
|
|
%9 = phi i64 [ 0, %0 ], [ %19, %8 ]
|
|
%10 = getelementptr inbounds [200 x i16], [200 x i16]* %2, i64 0, i64 %9
|
|
%11 = load i16, i16* %10, align 2, !tbaa !5
|
|
%12 = sext i16 %11 to i32
|
|
%13 = mul nsw i32 %12, 3
|
|
%14 = lshr i32 %13, 15
|
|
%15 = getelementptr inbounds [200 x i16], [200 x i16]* %1, i64 0, i64 %9
|
|
%16 = load i16, i16* %15, align 2, !tbaa !5
|
|
%17 = trunc i32 %14 to i16
|
|
%18 = add i16 %16, %17
|
|
store i16 %18, i16* %15, align 2, !tbaa !5
|
|
%19 = add nuw nsw i64 %9, 1
|
|
%20 = icmp eq i64 %19, 150
|
|
br i1 %20, label %21, label %8, !llvm.loop !9
|
|
|
|
21: ; preds = %8
|
|
%22 = getelementptr inbounds [200 x i64], [200 x i64]* %3, i64 0, i64 0
|
|
%23 = load i64, i64* %22, align 16, !tbaa !12
|
|
br label %24
|
|
|
|
24: ; preds = %24, %21
|
|
%25 = phi i64 [ %23, %21 ], [ %34, %24 ]
|
|
%26 = phi i64 [ 0, %21 ], [ %35, %24 ]
|
|
%27 = getelementptr inbounds [200 x i16], [200 x i16]* %2, i64 0, i64 %26
|
|
%28 = load i16, i16* %27, align 2, !tbaa !5
|
|
%29 = sext i16 %28 to i64
|
|
%30 = getelementptr inbounds [200 x i16], [200 x i16]* %1, i64 0, i64 %26
|
|
%31 = load i16, i16* %30, align 2, !tbaa !5
|
|
%32 = sext i16 %31 to i64
|
|
%33 = mul nsw i64 %32, %29
|
|
%34 = add nsw i64 %33, %25
|
|
%35 = add nuw nsw i64 %26, 1
|
|
%36 = icmp eq i64 %35, 150
|
|
br i1 %36, label %37, label %24, !llvm.loop !14
|
|
|
|
37: ; preds = %24
|
|
store i64 %34, i64* %22, align 16, !tbaa !12
|
|
br label %38
|
|
|
|
38: ; preds = %54, %37
|
|
%39 = phi i64 [ 0, %37 ], [ %57, %54 ]
|
|
br label %40
|
|
|
|
40: ; preds = %40, %38
|
|
%41 = phi i64 [ 0, %38 ], [ %51, %40 ]
|
|
%42 = phi i64 [ 0, %38 ], [ %52, %40 ]
|
|
%43 = add nuw nsw i64 %42, %39
|
|
%44 = getelementptr inbounds [200 x i16], [200 x i16]* %1, i64 0, i64 %43
|
|
%45 = load i16, i16* %44, align 2, !tbaa !5
|
|
%46 = sext i16 %45 to i64
|
|
%47 = getelementptr inbounds [200 x i16], [200 x i16]* %2, i64 0, i64 %42
|
|
%48 = load i16, i16* %47, align 2, !tbaa !5
|
|
%49 = sext i16 %48 to i64
|
|
%50 = mul nsw i64 %49, %46
|
|
%51 = add nsw i64 %50, %41
|
|
%52 = add nuw nsw i64 %42, 1
|
|
%53 = icmp eq i64 %52, 50
|
|
br i1 %53, label %54, label %40, !llvm.loop !15
|
|
|
|
54: ; preds = %40
|
|
%55 = ashr i64 %51, 15
|
|
%56 = getelementptr inbounds [200 x i64], [200 x i64]* %3, i64 0, i64 %39
|
|
store i64 %55, i64* %56, align 8, !tbaa !12
|
|
%57 = add nuw nsw i64 %39, 1
|
|
%58 = icmp eq i64 %57, 50
|
|
br i1 %58, label %59, label %38, !llvm.loop !16
|
|
|
|
59: ; preds = %54, %99
|
|
%60 = phi i64 [ %105, %99 ], [ 0, %54 ]
|
|
%61 = getelementptr inbounds [200 x i16], [200 x i16]* %1, i64 0, i64 %60
|
|
%62 = load i16, i16* %61, align 4, !tbaa !5
|
|
br label %63
|
|
|
|
63: ; preds = %63, %59
|
|
%64 = phi i64 [ 0, %59 ], [ %97, %63 ]
|
|
%65 = phi i64 [ 0, %59 ], [ %92, %63 ]
|
|
%66 = phi i16 [ %62, %59 ], [ %85, %63 ]
|
|
%67 = phi i64 [ 0, %59 ], [ %96, %63 ]
|
|
%68 = add nuw nsw i64 %64, %60
|
|
%69 = or i64 %68, 1
|
|
%70 = getelementptr inbounds [200 x i16], [200 x i16]* %1, i64 0, i64 %69
|
|
%71 = load i16, i16* %70, align 2, !tbaa !5
|
|
%72 = getelementptr inbounds [200 x i16], [200 x i16]* %2, i64 0, i64 %64
|
|
%73 = load i16, i16* %72, align 4, !tbaa !5
|
|
%74 = sext i16 %66 to i32
|
|
%75 = sext i16 %73 to i32
|
|
%76 = mul nsw i32 %75, %74
|
|
%77 = sext i32 %76 to i64
|
|
%78 = add nsw i64 %65, %77
|
|
%79 = sext i16 %71 to i32
|
|
%80 = mul nsw i32 %75, %79
|
|
%81 = sext i32 %80 to i64
|
|
%82 = add nsw i64 %67, %81
|
|
%83 = add nuw nsw i64 %68, 2
|
|
%84 = getelementptr inbounds [200 x i16], [200 x i16]* %1, i64 0, i64 %83
|
|
%85 = load i16, i16* %84, align 4, !tbaa !5
|
|
%86 = or i64 %64, 1
|
|
%87 = getelementptr inbounds [200 x i16], [200 x i16]* %2, i64 0, i64 %86
|
|
%88 = load i16, i16* %87, align 2, !tbaa !5
|
|
%89 = sext i16 %88 to i32
|
|
%90 = mul nsw i32 %89, %79
|
|
%91 = sext i32 %90 to i64
|
|
%92 = add nsw i64 %78, %91
|
|
%93 = sext i16 %85 to i32
|
|
%94 = mul nsw i32 %89, %93
|
|
%95 = sext i32 %94 to i64
|
|
%96 = add nsw i64 %82, %95
|
|
%97 = add nuw nsw i64 %64, 2
|
|
%98 = icmp ult i64 %64, 30
|
|
br i1 %98, label %63, label %99, !llvm.loop !17
|
|
|
|
99: ; preds = %63
|
|
%100 = ashr i64 %92, 15
|
|
%101 = getelementptr inbounds [200 x i64], [200 x i64]* %3, i64 0, i64 %60
|
|
store i64 %100, i64* %101, align 16, !tbaa !12
|
|
%102 = ashr i64 %96, 15
|
|
%103 = or i64 %60, 1
|
|
%104 = getelementptr inbounds [200 x i64], [200 x i64]* %3, i64 0, i64 %103
|
|
store i64 %102, i64* %104, align 8, !tbaa !12
|
|
%105 = add nuw nsw i64 %60, 2
|
|
%106 = icmp ult i64 %60, 98
|
|
br i1 %106, label %59, label %107, !llvm.loop !18
|
|
|
|
107: ; preds = %99
|
|
%108 = getelementptr inbounds [200 x i16], [200 x i16]* %1, i64 0, i64 99
|
|
%109 = load i16, i16* %108, align 2, !tbaa !5
|
|
%110 = sext i16 %109 to i64
|
|
%111 = getelementptr inbounds [200 x i16], [200 x i16]* %2, i64 0, i64 99
|
|
%112 = load i16, i16* %111, align 2, !tbaa !5
|
|
%113 = sext i16 %112 to i64
|
|
%114 = mul nsw i64 %113, %110
|
|
%115 = sub nsw i64 43690, %114
|
|
br label %116
|
|
|
|
116: ; preds = %116, %107
|
|
%117 = phi i64 [ %134, %116 ], [ 98, %107 ]
|
|
%118 = phi i64 [ %126, %116 ], [ %115, %107 ]
|
|
%119 = getelementptr inbounds [200 x i16], [200 x i16]* %1, i64 0, i64 %117
|
|
%120 = load i16, i16* %119, align 2, !tbaa !5
|
|
%121 = sext i16 %120 to i64
|
|
%122 = getelementptr inbounds [200 x i16], [200 x i16]* %2, i64 0, i64 %117
|
|
%123 = load i16, i16* %122, align 2, !tbaa !5
|
|
%124 = sext i16 %123 to i64
|
|
%125 = mul nsw i64 %124, %121
|
|
%126 = sub nsw i64 %118, %125
|
|
%127 = ashr i64 %126, 16
|
|
%128 = mul nsw i64 %127, %124
|
|
%129 = lshr i64 %128, 16
|
|
%130 = trunc i64 %129 to i16
|
|
%131 = add i16 %120, %130
|
|
%132 = add nuw nsw i64 %117, 1
|
|
%133 = getelementptr inbounds [200 x i16], [200 x i16]* %1, i64 0, i64 %132
|
|
store i16 %131, i16* %133, align 2, !tbaa !5
|
|
%134 = add nsw i64 %117, -1
|
|
%135 = icmp eq i64 %117, 0
|
|
br i1 %135, label %136, label %116, !llvm.loop !19
|
|
|
|
136: ; preds = %116
|
|
%137 = getelementptr inbounds [200 x i16], [200 x i16]* %2, i64 0, i64 0
|
|
%138 = lshr i64 %126, 16
|
|
%139 = trunc i64 %138 to i16
|
|
store i16 %139, i16* %7, align 16, !tbaa !5
|
|
%140 = load i16, i16* %137, align 16, !tbaa !5
|
|
%141 = sext i16 %140 to i64
|
|
br label %142
|
|
|
|
142: ; preds = %142, %136
|
|
%143 = phi i64 [ 0, %136 ], [ %173, %142 ]
|
|
%144 = phi i16* [ %7, %136 ], [ %171, %142 ]
|
|
%145 = phi i64 [ %141, %136 ], [ %170, %142 ]
|
|
%146 = phi i64* [ %22, %136 ], [ %172, %142 ]
|
|
%147 = getelementptr inbounds i16, i16* %144, i64 2
|
|
%148 = load i16, i16* %147, align 2, !tbaa !5
|
|
%149 = sext i16 %148 to i64
|
|
%150 = load i64, i64* %146, align 8, !tbaa !12
|
|
%151 = mul nsw i64 %150, %149
|
|
%152 = getelementptr inbounds i16, i16* %144, i64 3
|
|
%153 = load i16, i16* %152, align 2, !tbaa !5
|
|
%154 = sext i16 %153 to i64
|
|
%155 = getelementptr inbounds i64, i64* %146, i64 1
|
|
%156 = load i64, i64* %155, align 8, !tbaa !12
|
|
%157 = mul nsw i64 %156, %154
|
|
%158 = add nsw i64 %157, %151
|
|
%159 = ashr i64 %158, 15
|
|
%160 = add nsw i64 %159, %145
|
|
%161 = load i16, i16* %144, align 2, !tbaa !5
|
|
%162 = sext i16 %161 to i64
|
|
%163 = mul nsw i64 %150, %162
|
|
%164 = getelementptr inbounds i16, i16* %144, i64 1
|
|
%165 = load i16, i16* %164, align 2, !tbaa !5
|
|
%166 = sext i16 %165 to i64
|
|
%167 = mul nsw i64 %156, %166
|
|
%168 = add nsw i64 %167, %163
|
|
%169 = ashr i64 %168, 15
|
|
%170 = add nsw i64 %169, %160
|
|
store i64 %150, i64* %155, align 8, !tbaa !12
|
|
store i64 %160, i64* %146, align 8, !tbaa !12
|
|
%171 = getelementptr inbounds i16, i16* %144, i64 4
|
|
%172 = getelementptr inbounds i64, i64* %146, i64 2
|
|
%173 = add nuw nsw i64 %143, 1
|
|
%174 = icmp eq i64 %173, 50
|
|
br i1 %174, label %175, label %142, !llvm.loop !20
|
|
|
|
175: ; preds = %142
|
|
%176 = getelementptr inbounds [200 x i64], [200 x i64]* %3, i64 0, i64 100
|
|
store i64 %170, i64* %176, align 16, !tbaa !12
|
|
call void @jpegdct(i16* nonnull %7, i16* nonnull %137)
|
|
call void @llvm.lifetime.end.p0i8(i64 1600, i8* nonnull %6) #5
|
|
call void @llvm.lifetime.end.p0i8(i64 400, i8* nonnull %5) #5
|
|
call void @llvm.lifetime.end.p0i8(i64 400, i8* nonnull %4) #5
|
|
ret i32 0
|
|
}
|
|
|
|
; Function Attrs: argmemonly mustprogress nofree nounwind willreturn
|
|
declare void @llvm.memcpy.p0i8.p0i8.i64(i8* noalias nocapture writeonly, i8* noalias nocapture readonly, i64, i1 immarg) #4
|
|
|
|
attributes #0 = { nofree norecurse nosync nounwind sspstrong uwtable "frame-pointer"="none" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
|
|
attributes #1 = { argmemonly mustprogress nofree nosync nounwind willreturn }
|
|
attributes #2 = { nofree norecurse nosync nounwind readnone sspstrong uwtable "frame-pointer"="none" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
|
|
attributes #3 = { nofree nosync nounwind sspstrong uwtable "frame-pointer"="none" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
|
|
attributes #4 = { argmemonly mustprogress nofree nounwind willreturn }
|
|
attributes #5 = { nounwind }
|
|
|
|
!llvm.module.flags = !{!0, !1, !2, !3}
|
|
!llvm.ident = !{!4}
|
|
|
|
!0 = !{i32 1, !"wchar_size", i32 4}
|
|
!1 = !{i32 7, !"PIC Level", i32 2}
|
|
!2 = !{i32 7, !"PIE Level", i32 2}
|
|
!3 = !{i32 7, !"uwtable", i32 1}
|
|
!4 = !{!"clang version 13.0.1"}
|
|
!5 = !{!6, !6, i64 0}
|
|
!6 = !{!"short", !7, i64 0}
|
|
!7 = !{!"omnipotent char", !8, i64 0}
|
|
!8 = !{!"Simple C/C++ TBAA"}
|
|
!9 = distinct !{!9, !10, !11}
|
|
!10 = !{!"llvm.loop.mustprogress"}
|
|
!11 = !{!"llvm.loop.unroll.disable"}
|
|
!12 = !{!13, !13, i64 0}
|
|
!13 = !{!"long", !7, i64 0}
|
|
!14 = distinct !{!14, !10, !11}
|
|
!15 = distinct !{!15, !10, !11}
|
|
!16 = distinct !{!16, !10, !11}
|
|
!17 = distinct !{!17, !10, !11}
|
|
!18 = distinct !{!18, !10, !11}
|
|
!19 = distinct !{!19, !10, !11}
|
|
!20 = distinct !{!20, !10, !11}
|
|
!21 = distinct !{!21, !10, !11}
|
|
!22 = distinct !{!22, !10, !11}
|
|
!23 = distinct !{!23, !10, !11}
|