236 lines
8.1 KiB
LLVM
236 lines
8.1 KiB
LLVM
|
; ModuleID = 'jfdctint.c'
|
||
|
source_filename = "jfdctint.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"
|
||
|
|
||
|
@data = dso_local local_unnamed_addr global [64 x i32] zeroinitializer, align 16
|
||
|
|
||
|
; Function Attrs: nofree norecurse nosync nounwind sspstrong uwtable
|
||
|
define dso_local void @jpeg_fdct_islow() local_unnamed_addr #0 {
|
||
|
br label %1
|
||
|
|
||
|
1: ; preds = %0, %1
|
||
|
%2 = phi i32 [ 7, %0 ], [ %78, %1 ]
|
||
|
%3 = phi i32* [ getelementptr inbounds ([64 x i32], [64 x i32]* @data, i64 0, i64 0), %0 ], [ %77, %1 ]
|
||
|
%4 = load i32, i32* %3, align 4, !tbaa !5
|
||
|
%5 = getelementptr inbounds i32, i32* %3, i64 7
|
||
|
%6 = load i32, i32* %5, align 4, !tbaa !5
|
||
|
%7 = add nsw i32 %6, %4
|
||
|
%8 = sub nsw i32 %4, %6
|
||
|
%9 = getelementptr inbounds i32, i32* %3, i64 1
|
||
|
%10 = load i32, i32* %9, align 4, !tbaa !5
|
||
|
%11 = getelementptr inbounds i32, i32* %3, i64 6
|
||
|
%12 = load i32, i32* %11, align 4, !tbaa !5
|
||
|
%13 = add nsw i32 %12, %10
|
||
|
%14 = sub nsw i32 %10, %12
|
||
|
%15 = getelementptr inbounds i32, i32* %3, i64 2
|
||
|
%16 = load i32, i32* %15, align 4, !tbaa !5
|
||
|
%17 = getelementptr inbounds i32, i32* %3, i64 5
|
||
|
%18 = load i32, i32* %17, align 4, !tbaa !5
|
||
|
%19 = add nsw i32 %18, %16
|
||
|
%20 = sub nsw i32 %16, %18
|
||
|
%21 = getelementptr inbounds i32, i32* %3, i64 3
|
||
|
%22 = load i32, i32* %21, align 4, !tbaa !5
|
||
|
%23 = getelementptr inbounds i32, i32* %3, i64 4
|
||
|
%24 = load i32, i32* %23, align 4, !tbaa !5
|
||
|
%25 = add nsw i32 %24, %22
|
||
|
%26 = sub nsw i32 %22, %24
|
||
|
%27 = add nsw i32 %25, %7
|
||
|
%28 = sub nsw i32 %7, %25
|
||
|
%29 = add nsw i32 %19, %13
|
||
|
%30 = sub nsw i32 %13, %19
|
||
|
%31 = add nsw i32 %27, %29
|
||
|
%32 = shl i32 %31, 2
|
||
|
store i32 %32, i32* %3, align 4, !tbaa !5
|
||
|
%33 = sub nsw i32 %27, %29
|
||
|
%34 = shl i32 %33, 2
|
||
|
store i32 %34, i32* %23, align 4, !tbaa !5
|
||
|
%35 = add nsw i32 %28, %30
|
||
|
%36 = mul nsw i32 %35, 4433
|
||
|
%37 = mul nsw i32 %28, 6270
|
||
|
%38 = add i32 %36, 1024
|
||
|
%39 = add i32 %38, %37
|
||
|
%40 = ashr i32 %39, 11
|
||
|
store i32 %40, i32* %15, align 4, !tbaa !5
|
||
|
%41 = mul nsw i32 %30, -15137
|
||
|
%42 = add i32 %36, 1024
|
||
|
%43 = add i32 %42, %41
|
||
|
%44 = ashr i32 %43, 11
|
||
|
store i32 %44, i32* %11, align 4, !tbaa !5
|
||
|
%45 = add nsw i32 %26, %8
|
||
|
%46 = add nsw i32 %20, %14
|
||
|
%47 = add nsw i32 %26, %14
|
||
|
%48 = add nsw i32 %20, %8
|
||
|
%49 = add nsw i32 %47, %48
|
||
|
%50 = mul nsw i32 %49, 9633
|
||
|
%51 = mul nsw i32 %26, 2446
|
||
|
%52 = mul nsw i32 %20, 16819
|
||
|
%53 = mul nsw i32 %14, 25172
|
||
|
%54 = mul nsw i32 %8, 12299
|
||
|
%55 = mul nsw i32 %45, -7373
|
||
|
%56 = mul nsw i32 %46, -20995
|
||
|
%57 = mul nsw i32 %47, -16069
|
||
|
%58 = mul nsw i32 %48, -3196
|
||
|
%59 = add nsw i32 %50, %57
|
||
|
%60 = add nsw i32 %50, %58
|
||
|
%61 = add i32 %55, 1024
|
||
|
%62 = add i32 %61, %51
|
||
|
%63 = add i32 %62, %59
|
||
|
%64 = ashr i32 %63, 11
|
||
|
store i32 %64, i32* %5, align 4, !tbaa !5
|
||
|
%65 = add i32 %56, 1024
|
||
|
%66 = add i32 %65, %52
|
||
|
%67 = add i32 %66, %60
|
||
|
%68 = ashr i32 %67, 11
|
||
|
store i32 %68, i32* %17, align 4, !tbaa !5
|
||
|
%69 = add i32 %56, 1024
|
||
|
%70 = add i32 %69, %53
|
||
|
%71 = add i32 %70, %59
|
||
|
%72 = ashr i32 %71, 11
|
||
|
store i32 %72, i32* %21, align 4, !tbaa !5
|
||
|
%73 = add i32 %55, 1024
|
||
|
%74 = add i32 %73, %54
|
||
|
%75 = add i32 %74, %60
|
||
|
%76 = ashr i32 %75, 11
|
||
|
store i32 %76, i32* %9, align 4, !tbaa !5
|
||
|
%77 = getelementptr inbounds i32, i32* %3, i64 8
|
||
|
%78 = add nsw i32 %2, -1
|
||
|
%79 = icmp eq i32 %2, 0
|
||
|
br i1 %79, label %80, label %1, !llvm.loop !9
|
||
|
|
||
|
80: ; preds = %1, %80
|
||
|
%81 = phi i32 [ %159, %80 ], [ 7, %1 ]
|
||
|
%82 = phi i32* [ %158, %80 ], [ getelementptr inbounds ([64 x i32], [64 x i32]* @data, i64 0, i64 0), %1 ]
|
||
|
%83 = load i32, i32* %82, align 4, !tbaa !5
|
||
|
%84 = getelementptr inbounds i32, i32* %82, i64 56
|
||
|
%85 = load i32, i32* %84, align 4, !tbaa !5
|
||
|
%86 = add nsw i32 %85, %83
|
||
|
%87 = sub nsw i32 %83, %85
|
||
|
%88 = getelementptr inbounds i32, i32* %82, i64 8
|
||
|
%89 = load i32, i32* %88, align 4, !tbaa !5
|
||
|
%90 = getelementptr inbounds i32, i32* %82, i64 48
|
||
|
%91 = load i32, i32* %90, align 4, !tbaa !5
|
||
|
%92 = add nsw i32 %91, %89
|
||
|
%93 = sub nsw i32 %89, %91
|
||
|
%94 = getelementptr inbounds i32, i32* %82, i64 16
|
||
|
%95 = load i32, i32* %94, align 4, !tbaa !5
|
||
|
%96 = getelementptr inbounds i32, i32* %82, i64 40
|
||
|
%97 = load i32, i32* %96, align 4, !tbaa !5
|
||
|
%98 = add nsw i32 %97, %95
|
||
|
%99 = sub nsw i32 %95, %97
|
||
|
%100 = getelementptr inbounds i32, i32* %82, i64 24
|
||
|
%101 = load i32, i32* %100, align 4, !tbaa !5
|
||
|
%102 = getelementptr inbounds i32, i32* %82, i64 32
|
||
|
%103 = load i32, i32* %102, align 4, !tbaa !5
|
||
|
%104 = add nsw i32 %103, %101
|
||
|
%105 = sub nsw i32 %101, %103
|
||
|
%106 = add nsw i32 %104, %86
|
||
|
%107 = sub nsw i32 %86, %104
|
||
|
%108 = add nsw i32 %98, %92
|
||
|
%109 = sub nsw i32 %92, %98
|
||
|
%110 = add i32 %108, 2
|
||
|
%111 = add i32 %110, %106
|
||
|
%112 = ashr i32 %111, 2
|
||
|
store i32 %112, i32* %82, align 4, !tbaa !5
|
||
|
%113 = sub i32 2, %108
|
||
|
%114 = add i32 %113, %106
|
||
|
%115 = ashr i32 %114, 2
|
||
|
store i32 %115, i32* %102, align 4, !tbaa !5
|
||
|
%116 = add nsw i32 %107, %109
|
||
|
%117 = mul nsw i32 %116, 4433
|
||
|
%118 = mul nsw i32 %107, 6270
|
||
|
%119 = add i32 %117, 16384
|
||
|
%120 = add i32 %119, %118
|
||
|
%121 = ashr i32 %120, 15
|
||
|
store i32 %121, i32* %94, align 4, !tbaa !5
|
||
|
%122 = mul nsw i32 %109, -15137
|
||
|
%123 = add i32 %117, 16384
|
||
|
%124 = add i32 %123, %122
|
||
|
%125 = ashr i32 %124, 15
|
||
|
store i32 %125, i32* %90, align 4, !tbaa !5
|
||
|
%126 = add nsw i32 %105, %87
|
||
|
%127 = add nsw i32 %99, %93
|
||
|
%128 = add nsw i32 %105, %93
|
||
|
%129 = add nsw i32 %99, %87
|
||
|
%130 = add nsw i32 %128, %129
|
||
|
%131 = mul nsw i32 %130, 9633
|
||
|
%132 = mul nsw i32 %105, 2446
|
||
|
%133 = mul nsw i32 %99, 16819
|
||
|
%134 = mul nsw i32 %93, 25172
|
||
|
%135 = mul nsw i32 %87, 12299
|
||
|
%136 = mul nsw i32 %126, -7373
|
||
|
%137 = mul nsw i32 %127, -20995
|
||
|
%138 = mul nsw i32 %128, -16069
|
||
|
%139 = mul nsw i32 %129, -3196
|
||
|
%140 = add nsw i32 %131, %138
|
||
|
%141 = add nsw i32 %131, %139
|
||
|
%142 = add i32 %136, 16384
|
||
|
%143 = add i32 %142, %132
|
||
|
%144 = add i32 %143, %140
|
||
|
%145 = ashr i32 %144, 15
|
||
|
store i32 %145, i32* %84, align 4, !tbaa !5
|
||
|
%146 = add i32 %137, 16384
|
||
|
%147 = add i32 %146, %133
|
||
|
%148 = add i32 %147, %141
|
||
|
%149 = ashr i32 %148, 15
|
||
|
store i32 %149, i32* %96, align 4, !tbaa !5
|
||
|
%150 = add i32 %137, 16384
|
||
|
%151 = add i32 %150, %134
|
||
|
%152 = add i32 %151, %140
|
||
|
%153 = ashr i32 %152, 15
|
||
|
store i32 %153, i32* %100, align 4, !tbaa !5
|
||
|
%154 = add i32 %136, 16384
|
||
|
%155 = add i32 %154, %135
|
||
|
%156 = add i32 %155, %141
|
||
|
%157 = ashr i32 %156, 15
|
||
|
store i32 %157, i32* %88, align 4, !tbaa !5
|
||
|
%158 = getelementptr inbounds i32, i32* %82, i64 1
|
||
|
%159 = add nsw i32 %81, -1
|
||
|
%160 = icmp eq i32 %81, 0
|
||
|
br i1 %160, label %161, label %80, !llvm.loop !12
|
||
|
|
||
|
161: ; preds = %80
|
||
|
ret void
|
||
|
}
|
||
|
|
||
|
; Function Attrs: nofree norecurse nosync nounwind sspstrong uwtable
|
||
|
define dso_local void @main() local_unnamed_addr #0 {
|
||
|
br label %1
|
||
|
|
||
|
1: ; preds = %0, %1
|
||
|
%2 = phi i64 [ 0, %0 ], [ %8, %1 ]
|
||
|
%3 = phi i32 [ 1, %0 ], [ %6, %1 ]
|
||
|
%4 = mul nsw i32 %3, 133
|
||
|
%5 = add nsw i32 %4, 81
|
||
|
%6 = srem i32 %5, 65535
|
||
|
%7 = getelementptr inbounds [64 x i32], [64 x i32]* @data, i64 0, i64 %2
|
||
|
store i32 %6, i32* %7, align 4, !tbaa !5
|
||
|
%8 = add nuw nsw i64 %2, 1
|
||
|
%9 = icmp eq i64 %8, 64
|
||
|
br i1 %9, label %10, label %1, !llvm.loop !13
|
||
|
|
||
|
10: ; preds = %1
|
||
|
call void @jpeg_fdct_islow()
|
||
|
ret void
|
||
|
}
|
||
|
|
||
|
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" }
|
||
|
|
||
|
!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 = !{!"int", !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 = distinct !{!12, !10, !11}
|
||
|
!13 = distinct !{!13, !10, !11}
|