164 lines
18 KiB
LLVM
164 lines
18 KiB
LLVM
|
; ModuleID = 'fir.c'
|
||
|
source_filename = "fir.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"
|
||
|
|
||
|
@fir_int = dso_local local_unnamed_addr global [36 x i64] [i64 4294967294, i64 1, i64 4, i64 3, i64 4294967294, i64 4294967292, i64 2, i64 7, i64 0, i64 4294967287, i64 4294967292, i64 12, i64 11, i64 4294967282, i64 4294967270, i64 15, i64 89, i64 127, i64 89, i64 15, i64 4294967270, i64 4294967282, i64 11, i64 12, i64 4294967292, i64 4294967287, i64 0, i64 7, i64 2, i64 4294967292, i64 4294967294, i64 3, i64 4, i64 1, i64 4294967294, i64 0], align 16
|
||
|
@in_data = dso_local global [701 x i64] [i64 0, i64 0, i64 0, i64 0, i64 127, i64 121, i64 114, i64 121, i64 13, i64 13, i64 0, i64 3, i64 5, i64 2, i64 3, i64 127, i64 127, i64 2, i64 126, i64 0, i64 1, i64 126, i64 1, i64 1, i64 127, i64 0, i64 127, i64 0, i64 2, i64 1, i64 1, i64 3, i64 1, i64 127, i64 1, i64 0, i64 1, i64 1, i64 125, i64 123, i64 115, i64 106, i64 119, i64 16, i64 14, i64 1, i64 5, i64 5, i64 5, i64 5, i64 125, i64 0, i64 2, i64 125, i64 0, i64 0, i64 126, i64 1, i64 126, i64 127, i64 3, i64 124, i64 126, i64 6, i64 0, i64 126, i64 3, i64 2, i64 127, i64 126, i64 127, i64 2, i64 1, i64 127, i64 1, i64 1, i64 0, i64 3, i64 0, i64 127, i64 2, i64 0, i64 127, i64 3, i64 1, i64 0, i64 0, i64 125, i64 0, i64 3, i64 0, i64 126, i64 127, i64 2, i64 1, i64 126, i64 0, i64 3, i64 127, i64 125, i64 1, i64 1, i64 1, i64 127, i64 0, i64 5, i64 0, i64 127, i64 2, i64 126, i64 127, i64 2, i64 1, i64 0, i64 126, i64 0, i64 5, i64 0, i64 127, i64 0, i64 126, i64 1, i64 0, i64 125, i64 1, i64 3, i64 127, i64 0, i64 0, i64 126, i64 2, i64 3, i64 126, i64 125, i64 114, i64 104, i64 113, i64 5, i64 12, i64 7, i64 2, i64 6, i64 13, i64 5, i64 125, i64 3, i64 2, i64 127, i64 0, i64 121, i64 122, i64 3, i64 126, i64 125, i64 0, i64 125, i64 2, i64 1, i64 125, i64 8, i64 3, i64 124, i64 6, i64 0, i64 122, i64 6, i64 2, i64 124, i64 3, i64 126, i64 121, i64 6, i64 5, i64 116, i64 127, i64 13, i64 122, i64 120, i64 6, i64 5, i64 1, i64 0, i64 125, i64 1, i64 4, i64 124, i64 127, i64 3, i64 127, i64 5, i64 3, i64 122, i64 6, i64 10, i64 118, i64 124, i64 10, i64 124, i64 127, i64 6, i64 121, i64 3, i64 12, i64 117, i64 120, i64 10, i64 0, i64 121, i64 3, i64 126, i64 124, i64 6, i64 0, i64 121, i64 2, i64 126, i64 127, i64 6, i64 118, i64 127, i64 13, i64 121, i64 127, i64 6, i64 121, i64 6, i64 3, i64 113, i64 6, i64 10, i64 115, i64 127, i64 10, i64 0, i64 127, i64 122, i64 124, i64 10, i64 0, i64 117, i64 127, i64 12, i64 10, i64 124, i64 121, i64 9, i64 13, i64 125, i64 122, i64 5, i64 11, i64 10, i64 121, i64 124, i64 22, i64 3, i64 114, i64 13, i64 7, i64 121, i64 12, i64 7, i64 122, i64 11, i64 7, i64 122, i64 10, i64 7, i64 121, i64 10, i64 5, i64 117, i64 6, i64 5, i64 121, i64 5, i64 6, i64 1, i64 6, i64 0, i64 122, i64 2, i64 7, i64 3, i64 125, i64 1, i64 10, i64 7, i64 2, i64 127, i64 127, i64 9, i64 7, i64 121, i64 121, i64 6, i64 8, i64 125, i64 122, i64 6, i64 12, i64 6, i64 125, i64 127, i64 13, i64 7, i64 121, i64 1, i64 6, i64 127, i64 127, i64 2, i64 3, i64 1, i64 126, i64 1, i64 1, i64 125, i64 1, i64 0, i64 125, i64 6, i64 3, i64 125, i64 5, i64 7, i64 127, i64 124, i64 1, i64 6, i64 6, i64 124, i64 122, i64 7, i64 10, i64 0, i64 120, i64 1, i64 8, i64 0, i64 121, i64 122, i64 4, i64 10, i64 0, i64 120, i64 1, i64 6, i64 122, i64 117, i64 122, i64 0, i64 0, i64 121, i64 118, i64 127, i64 7, i64 0, i64 122, i64 125, i64 2, i64 4, i64 124, i64 122, i64 2, i64 5, i64 124, i64 122, i64 125, i64 127, i64 0, i64 120, i64 117, i64 127, i64 0, i64 121, i64 120, i64 121, i64 1, i64 3, i64 121, i64 121, i64 0, i64 0, i64 127, i64 127, i64 121, i64 127, i64 2, i64 122, i64 124, i64 125, i64 124, i64 127, i64 125, i64 121, i64 125, i64 0, i64 121, i64 122, i64 124, i64 125, i64 0, i64 125, i64 125, i64 0, i64 0, i64 0, i64 0, i64 125, i64 125, i64 0, i64 125, i64 126, i64 0, i64 126, i64 3, i64 3, i64 125, i64 1, i64 5, i64 0, i64 126, i64 125, i64 127, i64 3, i64 125, i64 121, i64 1, i64 2, i64 125, i64 127, i64 1, i64 0, i64 0, i64 127, i64 127, i64 126, i64 127, i64 0, i64 127, i64 0, i64 124, i64 125, i64 0, i64 121, i64 120, i64 124, i64 124, i64 123, i64 123, i64 125, i64 127, i64 0, i64 0, i64 127, i64 0, i64 1, i64 2, i64 0, i64 127, i64 0, i64 0, i64 0, i64 127, i64 126, i64 0, i64 0, i64 127, i64 0, i64 2, i64 1, i64 2, i64 6, i64 5, i64 3, i64 6, i64 8, i64 5, i64 2, i64 1, i64 1, i64 3, i64 0, i64 125, i64 127, i64 0, i64 127, i64 126, i64 0, i64 2, i64 3, i64 2, i64 1, i64 2, i64 3, i64 1, i64 124, i64 125, i64 0, i64 0, i64 126, i64 124, i64 127, i64 1, i64 0, i64 126, i64 124, i64 127, i64 1, i64 0, i6
|
||
|
@out_data = dso_local local_unnamed_addr global <{ [700 x i64], [20 x i64] }> <{ [700 x i64] [i64 3, i64 4294967290, i64 4294967293, i64 29, i64 88, i64 137, i64 135, i64 86, i64 32, i64 7, i64 7, i64 4, i64 4294967289, i64 0, i64 40, i64 91, i64 107, i64 79, i64 43, i64 33, i64 45, i64 48, i64 39, i64 39, i64 55, i64 71, i64 66, i64 39, i64 8, i64 4294967284, i64 4294967285, i64 13, i64 46, i64 59, i64 37, i64 0, i64 4294967288, i64 29, i64 89, i64 131, i64 135, i64 111, i64 78, i64 47, i64 18, i64 4294967295, i64 4294967291, i64 4, i64 21, i64 35, i64 45, i64 49, i64 47, i64 41, i64 38, i64 42, i64 54, i64 72, i64 88, i64 95, i64 90, i64 79, i64 70, i64 65, i64 50, i64 27, i64 23, i64 55, i64 105, i64 123, i64 89, i64 47, i64 36, i64 48, i64 42, i64 8, i64 4294967286, i64 7, i64 36, i64 49, i64 47, i64 51, i64 50, i64 30, i64 4, i64 7, i64 35, i64 51, i64 33, i64 14, i64 30, i64 74, i64 97, i64 75, i64 33, i64 14, i64 34, i64 73, i64 94, i64 77, i64 37, i64 11, i64 24, i64 50, i64 51, i64 21, i64 5, i64 41, i64 100, i64 118, i64 77, i64 22, i64 9, i64 38, i64 55, i64 35, i64 11, i64 21, i64 60, i64 82, i64 64, i64 35, i64 29, i64 45, i64 54, i64 45, i64 36, i64 41, i64 50, i64 44, i64 33, i64 43, i64 80, i64 123, i64 141, i64 115, i64 71, i64 34, i64 15, i64 7, i64 4294967295, i64 0, i64 19, i64 45, i64 54, i64 43, i64 35, i64 50, i64 78, i64 92, i64 85, i64 79, i64 85, i64 92, i64 80, i64 52, i64 32, i64 34, i64 50, i64 56, i64 47, i64 37, i64 42, i64 53, i64 50, i64 35, i64 31, i64 54, i64 87, i64 96, i64 76, i64 49, i64 45, i64 64, i64 87, i64 103, i64 103, i64 76, i64 33, i64 4, i64 8, i64 32, i64 48, i64 44, i64 51, i64 78, i64 97, i64 86, i64 57, i64 38, i64 38, i64 43, i64 46, i64 56, i64 74, i64 87, i64 88, i64 92, i64 95, i64 80, i64 49, i64 29, i64 49, i64 88, i64 93, i64 55, i64 22, i64 35, i64 85, i64 113, i64 86, i64 40, i64 24, i64 48, i64 81, i64 96, i64 92, i64 82, i64 79, i64 84, i64 94, i64 98, i64 87, i64 69, i64 58, i64 53, i64 38, i64 23, i64 35, i64 71, i64 93, i64 72, i64 39, i64 48, i64 97, i64 121, i64 90, i64 49, i64 45, i64 69, i64 79, i64 65, i64 62, i64 72, i64 72, i64 58, i64 61, i64 83, i64 85, i64 47, i64 13, i64 31, i64 85, i64 105, i64 71, i64 30, i64 28, i64 50, i64 60, i64 49, i64 40, i64 45, i64 52, i64 50, i64 46, i64 46, i64 47, i64 45, i64 47, i64 50, i64 47, i64 38, i64 35, i64 48, i64 61, i64 44, i64 3, i64 4294967279, i64 10, i64 52, i64 57, i64 24, i64 10, i64 40, i64 66, i64 40, i64 4294967291, i64 4294967294, i64 55, i64 97, i64 83, i64 50, i64 53, i64 75, i64 76, i64 54, i64 54, i64 78, i64 86, i64 51, i64 14, i64 27, i64 78, i64 105, i64 81, i64 34, i64 13, i64 36, i64 75, i64 94, i64 77, i64 42, i64 18, i64 22, i64 41, i64 53, i64 51, i64 42, i64 37, i64 38, i64 47, i64 56, i64 49, i64 29, i64 29, i64 66, i64 104, i64 88, i64 26, i64 4294967295, i64 42, i64 99, i64 95, i64 39, i64 10, i64 34, i64 52, i64 30, i64 11, i64 39, i64 88, i64 90, i64 46, i64 16, i64 27, i64 40, i64 35, i64 49, i64 96, i64 124, i64 86, i64 27, i64 29, i64 93, i64 129, i64 92, i64 41, i64 44, i64 78, i64 81, i64 53, i64 51, i64 77, i64 83, i64 50, i64 36, i64 80, i64 134, i64 133, i64 90, i64 70, i64 93, i64 107, i64 91, i64 79, i64 99, i64 113, i64 84, i64 42, i64 44, i64 80, i64 86, i64 48, i64 30, i64 77, i64 141, i64 144, i64 91, i64 58, i64 85, i64 128, i64 137, i64 120, i64 123, i64 138, i64 125, i64 83, i64 62, i64 91, i64 131, i64 127, i64 89, i64 74, i64 91, i64 94, i64 46, i64 4294967284, i64 4294967283, i64 45, i64 95, i64 97, i64 80, i64 84, i64 94, i64 80, i64 48, i64 38, i64 52, i64 50, i64 24, i64 9, i64 39, i64 91, i64 116, i64 109, i64 94, i64 82, i64 64, i64 45, i64 52, i64 84, i64 92, i64 49, i64 0, i64 10, i64 86, i64 156, i64 150, i64 89, i64 46, i64 56, i64 87, i64 94, i64 75, i64 70, i64 94, i64 120, i64 124, i64 119, i64 128, i64 141, i64 125, i64 79, i64 43, i64 43, i64 51, i64 30, i64 0, i64 6, i64 40, i64 55, i64 29, i64 9, i64 36, i64 83, i64 93, i64 61, i64 31, i64 33, i64 41, i64 24, i64 4294967292, i64 4294967285, i64 6, i64 18, i64 9, i64 4294967293, i64 1, i64 15
|
||
|
|
||
|
; Function Attrs: nofree nosync nounwind sspstrong uwtable
|
||
|
define dso_local i32 @main() local_unnamed_addr #0 {
|
||
|
%1 = alloca [720 x i64], align 16
|
||
|
%2 = bitcast [720 x i64]* %1 to i8*
|
||
|
call void @llvm.lifetime.start.p0i8(i64 5760, i8* nonnull %2) #3
|
||
|
%3 = getelementptr inbounds [720 x i64], [720 x i64]* %1, i64 0, i64 0
|
||
|
br label %4
|
||
|
|
||
|
4: ; preds = %28, %0
|
||
|
%5 = phi i64* [ %33, %28 ], [ %3, %0 ]
|
||
|
%6 = phi i64* [ %42, %28 ], [ getelementptr inbounds ([36 x i64], [36 x i64]* @fir_int, i64 0, i64 0), %0 ]
|
||
|
%7 = phi i64* [ %41, %28 ], [ getelementptr inbounds ([701 x i64], [701 x i64]* @in_data, i64 0, i64 17), %0 ]
|
||
|
%8 = phi i64 [ %38, %28 ], [ 18, %0 ]
|
||
|
%9 = phi i64 [ %43, %28 ], [ 0, %0 ]
|
||
|
%10 = getelementptr inbounds i64, i64* %6, i64 1
|
||
|
%11 = load i64, i64* %6, align 8, !tbaa !5
|
||
|
%12 = load i64, i64* %7, align 8, !tbaa !5
|
||
|
%13 = mul nsw i64 %12, %11
|
||
|
%14 = icmp sgt i64 %8, 1
|
||
|
br i1 %14, label %15, label %28
|
||
|
|
||
|
15: ; preds = %4, %15
|
||
|
%16 = phi i64* [ %20, %15 ], [ %7, %4 ]
|
||
|
%17 = phi i64* [ %21, %15 ], [ %10, %4 ]
|
||
|
%18 = phi i64 [ %25, %15 ], [ %13, %4 ]
|
||
|
%19 = phi i64 [ %26, %15 ], [ 1, %4 ]
|
||
|
%20 = getelementptr inbounds i64, i64* %16, i64 -1
|
||
|
%21 = getelementptr inbounds i64, i64* %17, i64 1
|
||
|
%22 = load i64, i64* %17, align 8, !tbaa !5
|
||
|
%23 = load i64, i64* %20, align 8, !tbaa !5
|
||
|
%24 = mul nsw i64 %23, %22
|
||
|
%25 = add nsw i64 %24, %18
|
||
|
%26 = add nuw nsw i64 %19, 1
|
||
|
%27 = icmp eq i64 %26, %8
|
||
|
br i1 %27, label %28, label %15, !llvm.loop !9
|
||
|
|
||
|
28: ; preds = %15, %4
|
||
|
%29 = phi i64 [ %13, %4 ], [ %25, %15 ]
|
||
|
%30 = sdiv i64 %29, 285
|
||
|
%31 = shl i64 %30, 32
|
||
|
%32 = ashr exact i64 %31, 32
|
||
|
%33 = getelementptr inbounds i64, i64* %5, i64 1
|
||
|
store i64 %32, i64* %5, align 8, !tbaa !5
|
||
|
%34 = icmp eq i64* %7, getelementptr inbounds ([701 x i64], [701 x i64]* @in_data, i64 0, i64 699)
|
||
|
%35 = icmp slt i64 %8, 35
|
||
|
%36 = zext i1 %35 to i64
|
||
|
%37 = select i1 %34, i64 -1, i64 %36
|
||
|
%38 = add nsw i64 %37, %8
|
||
|
%39 = xor i1 %34, true
|
||
|
%40 = zext i1 %39 to i64
|
||
|
%41 = getelementptr i64, i64* %7, i64 %40
|
||
|
%42 = select i1 %34, i64* %10, i64* %6
|
||
|
%43 = add nuw nsw i64 %9, 1
|
||
|
%44 = icmp eq i64 %43, 700
|
||
|
br i1 %44, label %45, label %4, !llvm.loop !12
|
||
|
|
||
|
45: ; preds = %28
|
||
|
call void @llvm.lifetime.end.p0i8(i64 5760, i8* nonnull %2) #3
|
||
|
ret i32 0
|
||
|
}
|
||
|
|
||
|
; Function Attrs: argmemonly mustprogress nofree nosync nounwind willreturn
|
||
|
declare void @llvm.lifetime.start.p0i8(i64 immarg, i8* nocapture) #1
|
||
|
|
||
|
; Function Attrs: nofree norecurse nosync nounwind sspstrong uwtable
|
||
|
define dso_local void @fir_filter_int(i64* readonly %0, i64* nocapture %1, i64 %2, i64* nocapture readonly %3, i64 %4, i64 %5) local_unnamed_addr #2 {
|
||
|
%7 = add nsw i64 %4, 1
|
||
|
%8 = ashr i64 %7, 1
|
||
|
%9 = add nsw i64 %2, -1
|
||
|
%10 = getelementptr inbounds i64, i64* %0, i64 %9
|
||
|
%11 = icmp sgt i64 %2, 0
|
||
|
br i1 %11, label %12, label %56
|
||
|
|
||
|
12: ; preds = %6
|
||
|
%13 = add nsw i64 %8, -1
|
||
|
%14 = getelementptr inbounds i64, i64* %0, i64 %13
|
||
|
br label %15
|
||
|
|
||
|
15: ; preds = %12, %39
|
||
|
%16 = phi i64* [ %44, %39 ], [ %1, %12 ]
|
||
|
%17 = phi i64* [ %53, %39 ], [ %3, %12 ]
|
||
|
%18 = phi i64* [ %52, %39 ], [ %14, %12 ]
|
||
|
%19 = phi i64 [ %49, %39 ], [ %8, %12 ]
|
||
|
%20 = phi i64 [ %54, %39 ], [ 0, %12 ]
|
||
|
%21 = getelementptr inbounds i64, i64* %17, i64 1
|
||
|
%22 = load i64, i64* %17, align 8, !tbaa !5
|
||
|
%23 = load i64, i64* %18, align 8, !tbaa !5
|
||
|
%24 = mul nsw i64 %23, %22
|
||
|
%25 = icmp sgt i64 %19, 1
|
||
|
br i1 %25, label %26, label %39
|
||
|
|
||
|
26: ; preds = %15, %26
|
||
|
%27 = phi i64* [ %31, %26 ], [ %18, %15 ]
|
||
|
%28 = phi i64* [ %32, %26 ], [ %21, %15 ]
|
||
|
%29 = phi i64 [ %36, %26 ], [ %24, %15 ]
|
||
|
%30 = phi i64 [ %37, %26 ], [ 1, %15 ]
|
||
|
%31 = getelementptr inbounds i64, i64* %27, i64 -1
|
||
|
%32 = getelementptr inbounds i64, i64* %28, i64 1
|
||
|
%33 = load i64, i64* %28, align 8, !tbaa !5
|
||
|
%34 = load i64, i64* %31, align 8, !tbaa !5
|
||
|
%35 = mul nsw i64 %34, %33
|
||
|
%36 = add nsw i64 %35, %29
|
||
|
%37 = add nuw nsw i64 %30, 1
|
||
|
%38 = icmp eq i64 %37, %19
|
||
|
br i1 %38, label %39, label %26, !llvm.loop !9
|
||
|
|
||
|
39: ; preds = %26, %15
|
||
|
%40 = phi i64 [ %24, %15 ], [ %36, %26 ]
|
||
|
%41 = sdiv i64 %40, %5
|
||
|
%42 = shl i64 %41, 32
|
||
|
%43 = ashr exact i64 %42, 32
|
||
|
%44 = getelementptr inbounds i64, i64* %16, i64 1
|
||
|
store i64 %43, i64* %16, align 8, !tbaa !5
|
||
|
%45 = icmp eq i64* %18, %10
|
||
|
%46 = icmp slt i64 %19, %4
|
||
|
%47 = zext i1 %46 to i64
|
||
|
%48 = select i1 %45, i64 -1, i64 %47
|
||
|
%49 = add nsw i64 %48, %19
|
||
|
%50 = xor i1 %45, true
|
||
|
%51 = zext i1 %50 to i64
|
||
|
%52 = getelementptr i64, i64* %18, i64 %51
|
||
|
%53 = select i1 %45, i64* %21, i64* %17
|
||
|
%54 = add nuw nsw i64 %20, 1
|
||
|
%55 = icmp eq i64 %54, %2
|
||
|
br i1 %55, label %56, label %15, !llvm.loop !12
|
||
|
|
||
|
56: ; preds = %39, %6
|
||
|
ret void
|
||
|
}
|
||
|
|
||
|
; Function Attrs: argmemonly mustprogress nofree nosync nounwind willreturn
|
||
|
declare void @llvm.lifetime.end.p0i8(i64 immarg, i8* nocapture) #1
|
||
|
|
||
|
attributes #0 = { 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 #1 = { argmemonly mustprogress nofree nosync nounwind willreturn }
|
||
|
attributes #2 = { 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 #3 = { 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 = !{!"long", !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}
|