487 lines
19 KiB
LLVM
487 lines
19 KiB
LLVM
|
; ModuleID = 'lms.c'
|
||
|
source_filename = "lms.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"
|
||
|
|
||
|
@mu = dso_local local_unnamed_addr global float 0x3F847AE140000000, align 4
|
||
|
@lms_rand.next = internal unnamed_addr global i64 1, align 8
|
||
|
@main.d = internal unnamed_addr global [201 x float] zeroinitializer, align 16
|
||
|
@main.b = internal unnamed_addr global [21 x float] zeroinitializer, align 16
|
||
|
@lms.px = internal unnamed_addr global [51 x float] zeroinitializer, align 16
|
||
|
@lms.sigma = internal unnamed_addr global float 2.000000e+00, align 4
|
||
|
@gaussian.ready = internal unnamed_addr global i1 false, align 4
|
||
|
@gaussian.gstore = internal unnamed_addr global float 0.000000e+00, align 4
|
||
|
|
||
|
; Function Attrs: mustprogress nofree norecurse nosync nounwind sspstrong uwtable willreturn
|
||
|
define dso_local i32 @lms_rand() local_unnamed_addr #0 {
|
||
|
%1 = load i64, i64* @lms_rand.next, align 8, !tbaa !5
|
||
|
%2 = mul i64 %1, 1103515245
|
||
|
%3 = add i64 %2, 12345
|
||
|
store i64 %3, i64* @lms_rand.next, align 8, !tbaa !5
|
||
|
%4 = lshr i64 %3, 16
|
||
|
%5 = trunc i64 %4 to i32
|
||
|
%6 = and i32 %5, 32767
|
||
|
ret i32 %6
|
||
|
}
|
||
|
|
||
|
; Function Attrs: nofree norecurse nosync nounwind sspstrong uwtable
|
||
|
define dso_local i32 @main() local_unnamed_addr #1 {
|
||
|
br label %1
|
||
|
|
||
|
1: ; preds = %23, %0
|
||
|
%2 = phi i32 [ 0, %0 ], [ %25, %23 ]
|
||
|
%3 = phi i32 [ 1, %0 ], [ %26, %23 ]
|
||
|
%4 = phi float [ 0x3FC99999A0000000, %0 ], [ %24, %23 ]
|
||
|
%5 = icmp eq i32 %2, 0
|
||
|
br i1 %5, label %6, label %23
|
||
|
|
||
|
6: ; preds = %1
|
||
|
%7 = fmul float %4, %4
|
||
|
%8 = fsub float 2.000000e+00, %7
|
||
|
%9 = fpext float %8 to double
|
||
|
%10 = fpext float %4 to double
|
||
|
%11 = fmul double %10, 2.000000e+00
|
||
|
%12 = fdiv double %9, %11
|
||
|
%13 = fptrunc double %12 to float
|
||
|
%14 = fadd float %4, %13
|
||
|
%15 = fmul float %14, %14
|
||
|
%16 = fsub float 2.000000e+00, %15
|
||
|
%17 = fcmp ult float %16, 0.000000e+00
|
||
|
%18 = fneg float %16
|
||
|
%19 = select i1 %17, float %18, float %16
|
||
|
%20 = fpext float %19 to double
|
||
|
%21 = fcmp ugt double %20, 1.000000e-05
|
||
|
br i1 %21, label %23, label %22
|
||
|
|
||
|
22: ; preds = %6
|
||
|
br label %23
|
||
|
|
||
|
23: ; preds = %22, %6, %1
|
||
|
%24 = phi float [ %4, %1 ], [ %14, %22 ], [ %14, %6 ]
|
||
|
%25 = phi i32 [ 1, %1 ], [ 1, %22 ], [ 0, %6 ]
|
||
|
%26 = add nuw nsw i32 %3, 1
|
||
|
%27 = icmp eq i32 %26, 20
|
||
|
br i1 %27, label %28, label %1, !llvm.loop !9
|
||
|
|
||
|
28: ; preds = %23, %50
|
||
|
%29 = phi i32 [ %52, %50 ], [ 0, %23 ]
|
||
|
%30 = phi i32 [ %53, %50 ], [ 1, %23 ]
|
||
|
%31 = phi float [ %51, %50 ], [ 0x3FF3333340000000, %23 ]
|
||
|
%32 = icmp eq i32 %29, 0
|
||
|
br i1 %32, label %33, label %50
|
||
|
|
||
|
33: ; preds = %28
|
||
|
%34 = fmul float %31, %31
|
||
|
%35 = fsub float 1.200000e+01, %34
|
||
|
%36 = fpext float %35 to double
|
||
|
%37 = fpext float %31 to double
|
||
|
%38 = fmul double %37, 2.000000e+00
|
||
|
%39 = fdiv double %36, %38
|
||
|
%40 = fptrunc double %39 to float
|
||
|
%41 = fadd float %31, %40
|
||
|
%42 = fmul float %41, %41
|
||
|
%43 = fsub float 1.200000e+01, %42
|
||
|
%44 = fcmp ult float %43, 0.000000e+00
|
||
|
%45 = fneg float %43
|
||
|
%46 = select i1 %44, float %45, float %43
|
||
|
%47 = fpext float %46 to double
|
||
|
%48 = fcmp ugt double %47, 1.000000e-05
|
||
|
br i1 %48, label %50, label %49
|
||
|
|
||
|
49: ; preds = %33
|
||
|
br label %50
|
||
|
|
||
|
50: ; preds = %49, %33, %28
|
||
|
%51 = phi float [ %31, %28 ], [ %41, %49 ], [ %41, %33 ]
|
||
|
%52 = phi i32 [ 1, %28 ], [ 1, %49 ], [ 0, %33 ]
|
||
|
%53 = add nuw nsw i32 %30, 1
|
||
|
%54 = icmp eq i32 %53, 20
|
||
|
br i1 %54, label %55, label %28, !llvm.loop !9
|
||
|
|
||
|
55: ; preds = %50
|
||
|
%56 = fpext float %51 to double
|
||
|
%57 = fmul double %56, 2.000000e-01
|
||
|
%58 = fptrunc double %57 to float
|
||
|
br label %59
|
||
|
|
||
|
59: ; preds = %55, %203
|
||
|
%60 = phi i64 [ 0, %55 ], [ %208, %203 ]
|
||
|
%61 = trunc i64 %60 to i32
|
||
|
%62 = sitofp i32 %61 to float
|
||
|
%63 = fmul float %62, 0x3FD41B2F80000000
|
||
|
%64 = fpext float %63 to double
|
||
|
%65 = fcmp ogt double %64, 0x401921FB54442D18
|
||
|
br i1 %65, label %70, label %66
|
||
|
|
||
|
66: ; preds = %70, %59
|
||
|
%67 = phi float [ %63, %59 ], [ %73, %70 ]
|
||
|
%68 = fpext float %67 to double
|
||
|
%69 = fcmp olt double %68, 0xC01921FB54442D18
|
||
|
br i1 %69, label %76, label %82
|
||
|
|
||
|
70: ; preds = %59, %70
|
||
|
%71 = phi double [ %74, %70 ], [ %64, %59 ]
|
||
|
%72 = fadd double %71, 0xC01921FB54442D18
|
||
|
%73 = fptrunc double %72 to float
|
||
|
%74 = fpext float %73 to double
|
||
|
%75 = fcmp ogt double %74, 0x401921FB54442D18
|
||
|
br i1 %75, label %70, label %66, !llvm.loop !12
|
||
|
|
||
|
76: ; preds = %66, %76
|
||
|
%77 = phi double [ %80, %76 ], [ %68, %66 ]
|
||
|
%78 = fadd double %77, 0x401921FB54442D18
|
||
|
%79 = fptrunc double %78 to float
|
||
|
%80 = fpext float %79 to double
|
||
|
%81 = fcmp olt double %80, 0xC01921FB54442D18
|
||
|
br i1 %81, label %76, label %82, !llvm.loop !13
|
||
|
|
||
|
82: ; preds = %76, %66
|
||
|
%83 = phi float [ %67, %66 ], [ %79, %76 ]
|
||
|
%84 = fneg float %83
|
||
|
%85 = fmul float %83, %84
|
||
|
%86 = fmul float %83, %85
|
||
|
%87 = fdiv float %86, 6.000000e+00
|
||
|
%88 = fadd float %83, %87
|
||
|
%89 = fcmp ult float %87, 0.000000e+00
|
||
|
%90 = fneg float %87
|
||
|
%91 = select i1 %89, float %90, float %87
|
||
|
%92 = fpext float %91 to double
|
||
|
%93 = fcmp ult double %92, 1.000000e-05
|
||
|
br i1 %93, label %113, label %94
|
||
|
|
||
|
94: ; preds = %82, %94
|
||
|
%95 = phi i32 [ %107, %94 ], [ 2, %82 ]
|
||
|
%96 = phi float [ %105, %94 ], [ %87, %82 ]
|
||
|
%97 = phi float [ %106, %94 ], [ %88, %82 ]
|
||
|
%98 = fmul float %85, %96
|
||
|
%99 = fpext float %98 to double
|
||
|
%100 = sitofp i32 %95 to double
|
||
|
%101 = fmul double %100, 2.000000e+00
|
||
|
%102 = fadd double %101, 1.000000e+00
|
||
|
%103 = fmul double %101, %102
|
||
|
%104 = fdiv double %99, %103
|
||
|
%105 = fptrunc double %104 to float
|
||
|
%106 = fadd float %97, %105
|
||
|
%107 = add nuw nsw i32 %95, 1
|
||
|
%108 = fcmp ult float %105, 0.000000e+00
|
||
|
%109 = fneg float %105
|
||
|
%110 = select i1 %108, float %109, float %105
|
||
|
%111 = fpext float %110 to double
|
||
|
%112 = fcmp ult double %111, 1.000000e-05
|
||
|
br i1 %112, label %113, label %94, !llvm.loop !14
|
||
|
|
||
|
113: ; preds = %94, %82
|
||
|
%114 = phi float [ %88, %82 ], [ %106, %94 ]
|
||
|
%115 = fmul float %24, %114
|
||
|
%116 = load i1, i1* @gaussian.ready, align 4
|
||
|
br i1 %116, label %201, label %117
|
||
|
|
||
|
117: ; preds = %113
|
||
|
%118 = load i64, i64* @lms_rand.next, align 8, !tbaa !5
|
||
|
%119 = mul i64 %118, 1103515245
|
||
|
%120 = add i64 %119, 12345
|
||
|
%121 = lshr i64 %120, 16
|
||
|
%122 = trunc i64 %121 to i32
|
||
|
%123 = and i32 %122, 32767
|
||
|
%124 = sitofp i32 %123 to float
|
||
|
%125 = fadd float %124, -1.638400e+04
|
||
|
%126 = mul i64 %120, 1103515245
|
||
|
%127 = add i64 %126, 12345
|
||
|
store i64 %127, i64* @lms_rand.next, align 8, !tbaa !5
|
||
|
%128 = lshr i64 %127, 16
|
||
|
%129 = trunc i64 %128 to i32
|
||
|
%130 = and i32 %129, 32767
|
||
|
%131 = sitofp i32 %130 to float
|
||
|
%132 = fadd float %131, -1.638400e+04
|
||
|
%133 = fmul float %125, 0x3F10000000000000
|
||
|
%134 = fmul float %132, 0x3F10000000000000
|
||
|
%135 = fmul float %133, %133
|
||
|
%136 = fmul float %134, %134
|
||
|
%137 = fadd float %135, %136
|
||
|
%138 = fcmp ogt float %137, 1.000000e+00
|
||
|
br i1 %138, label %139, label %162
|
||
|
|
||
|
139: ; preds = %117, %139
|
||
|
%140 = phi i64 [ %149, %139 ], [ %127, %117 ]
|
||
|
%141 = mul i64 %140, 1103515245
|
||
|
%142 = add i64 %141, 12345
|
||
|
%143 = lshr i64 %142, 16
|
||
|
%144 = trunc i64 %143 to i32
|
||
|
%145 = and i32 %144, 32767
|
||
|
%146 = sitofp i32 %145 to float
|
||
|
%147 = fadd float %146, -1.638400e+04
|
||
|
%148 = mul i64 %142, 1103515245
|
||
|
%149 = add i64 %148, 12345
|
||
|
%150 = lshr i64 %149, 16
|
||
|
%151 = trunc i64 %150 to i32
|
||
|
%152 = and i32 %151, 32767
|
||
|
%153 = sitofp i32 %152 to float
|
||
|
%154 = fadd float %153, -1.638400e+04
|
||
|
%155 = fmul float %147, 0x3F10000000000000
|
||
|
%156 = fmul float %154, 0x3F10000000000000
|
||
|
%157 = fmul float %155, %155
|
||
|
%158 = fmul float %156, %156
|
||
|
%159 = fadd float %157, %158
|
||
|
%160 = fcmp ogt float %159, 1.000000e+00
|
||
|
br i1 %160, label %139, label %161, !llvm.loop !15
|
||
|
|
||
|
161: ; preds = %139
|
||
|
store i64 %149, i64* @lms_rand.next, align 8, !tbaa !5
|
||
|
br label %162
|
||
|
|
||
|
162: ; preds = %161, %117
|
||
|
%163 = phi float [ %156, %161 ], [ %134, %117 ]
|
||
|
%164 = phi float [ %159, %161 ], [ %137, %117 ]
|
||
|
%165 = phi float [ %155, %161 ], [ %133, %117 ]
|
||
|
%166 = fdiv float -9.000000e+00, %164
|
||
|
%167 = fcmp oeq float %166, 0.000000e+00
|
||
|
br i1 %167, label %197, label %168
|
||
|
|
||
|
168: ; preds = %162
|
||
|
%169 = fdiv float %166, 1.000000e+01
|
||
|
br label %170
|
||
|
|
||
|
170: ; preds = %192, %168
|
||
|
%171 = phi i32 [ 0, %168 ], [ %194, %192 ]
|
||
|
%172 = phi i32 [ 1, %168 ], [ %195, %192 ]
|
||
|
%173 = phi float [ %169, %168 ], [ %193, %192 ]
|
||
|
%174 = icmp eq i32 %171, 0
|
||
|
br i1 %174, label %175, label %192
|
||
|
|
||
|
175: ; preds = %170
|
||
|
%176 = fmul float %173, %173
|
||
|
%177 = fsub float %166, %176
|
||
|
%178 = fpext float %177 to double
|
||
|
%179 = fpext float %173 to double
|
||
|
%180 = fmul double %179, 2.000000e+00
|
||
|
%181 = fdiv double %178, %180
|
||
|
%182 = fptrunc double %181 to float
|
||
|
%183 = fadd float %173, %182
|
||
|
%184 = fmul float %183, %183
|
||
|
%185 = fsub float %166, %184
|
||
|
%186 = fcmp ult float %185, 0.000000e+00
|
||
|
%187 = fneg float %185
|
||
|
%188 = select i1 %186, float %187, float %185
|
||
|
%189 = fpext float %188 to double
|
||
|
%190 = fcmp ugt double %189, 1.000000e-05
|
||
|
br i1 %190, label %192, label %191
|
||
|
|
||
|
191: ; preds = %175
|
||
|
br label %192
|
||
|
|
||
|
192: ; preds = %191, %175, %170
|
||
|
%193 = phi float [ %173, %170 ], [ %183, %191 ], [ %183, %175 ]
|
||
|
%194 = phi i32 [ 1, %170 ], [ 1, %191 ], [ 0, %175 ]
|
||
|
%195 = add nuw nsw i32 %172, 1
|
||
|
%196 = icmp eq i32 %195, 20
|
||
|
br i1 %196, label %197, label %170, !llvm.loop !9
|
||
|
|
||
|
197: ; preds = %192, %162
|
||
|
%198 = phi float [ 0.000000e+00, %162 ], [ %193, %192 ]
|
||
|
%199 = fmul float %165, %198
|
||
|
store float %199, float* @gaussian.gstore, align 4, !tbaa !16
|
||
|
%200 = fmul float %163, %198
|
||
|
store i1 true, i1* @gaussian.ready, align 4
|
||
|
br label %203
|
||
|
|
||
|
201: ; preds = %113
|
||
|
store i1 false, i1* @gaussian.ready, align 4
|
||
|
%202 = load float, float* @gaussian.gstore, align 4, !tbaa !16
|
||
|
br label %203
|
||
|
|
||
|
203: ; preds = %197, %201
|
||
|
%204 = phi float [ %200, %197 ], [ %202, %201 ]
|
||
|
%205 = fmul float %204, %58
|
||
|
%206 = fadd float %115, %205
|
||
|
%207 = getelementptr inbounds [201 x float], [201 x float]* @main.d, i64 0, i64 %60
|
||
|
store float %206, float* %207, align 4, !tbaa !16
|
||
|
%208 = add nuw nsw i64 %60, 1
|
||
|
%209 = icmp eq i64 %208, 201
|
||
|
br i1 %209, label %210, label %59, !llvm.loop !18
|
||
|
|
||
|
210: ; preds = %203
|
||
|
%211 = load float, float* @mu, align 4, !tbaa !16
|
||
|
%212 = fpext float %211 to double
|
||
|
%213 = fmul double %212, 2.000000e+00
|
||
|
%214 = fdiv double %213, 2.100000e+01
|
||
|
%215 = fptrunc double %214 to float
|
||
|
store float %215, float* @mu, align 4, !tbaa !16
|
||
|
%216 = load float, float* @lms.sigma, align 4, !tbaa !16
|
||
|
br label %217
|
||
|
|
||
|
217: ; preds = %210, %254
|
||
|
%218 = phi i64 [ 0, %210 ], [ %255, %254 ]
|
||
|
%219 = phi float [ 0.000000e+00, %210 ], [ %222, %254 ]
|
||
|
%220 = phi float [ %216, %210 ], [ %241, %254 ]
|
||
|
%221 = getelementptr inbounds [201 x float], [201 x float]* @main.d, i64 0, i64 %218
|
||
|
%222 = load float, float* %221, align 4, !tbaa !16
|
||
|
store float %219, float* getelementptr inbounds ([51 x float], [51 x float]* @lms.px, i64 0, i64 0), align 16, !tbaa !16
|
||
|
%223 = load float, float* getelementptr inbounds ([21 x float], [21 x float]* @main.b, i64 0, i64 0), align 16, !tbaa !16
|
||
|
%224 = fmul float %219, %223
|
||
|
br label %225
|
||
|
|
||
|
225: ; preds = %225, %217
|
||
|
%226 = phi i64 [ 1, %217 ], [ %234, %225 ]
|
||
|
%227 = phi float [ %224, %217 ], [ %233, %225 ]
|
||
|
%228 = getelementptr inbounds [21 x float], [21 x float]* @main.b, i64 0, i64 %226
|
||
|
%229 = load float, float* %228, align 4, !tbaa !16
|
||
|
%230 = getelementptr inbounds [51 x float], [51 x float]* @lms.px, i64 0, i64 %226
|
||
|
%231 = load float, float* %230, align 4, !tbaa !16
|
||
|
%232 = fmul float %229, %231
|
||
|
%233 = fadd float %227, %232
|
||
|
%234 = add nuw nsw i64 %226, 1
|
||
|
%235 = icmp eq i64 %234, 21
|
||
|
br i1 %235, label %236, label %225, !llvm.loop !19
|
||
|
|
||
|
236: ; preds = %225
|
||
|
%237 = fsub float %222, %233
|
||
|
%238 = fmul float %219, %219
|
||
|
%239 = fmul float %238, 0x3F847AE140000000
|
||
|
%240 = fmul float %220, 0x3FEFAE1480000000
|
||
|
%241 = fadd float %239, %240
|
||
|
%242 = fmul float %237, %215
|
||
|
%243 = fdiv float %242, %241
|
||
|
br label %244
|
||
|
|
||
|
244: ; preds = %244, %236
|
||
|
%245 = phi i64 [ 0, %236 ], [ %252, %244 ]
|
||
|
%246 = getelementptr inbounds [21 x float], [21 x float]* @main.b, i64 0, i64 %245
|
||
|
%247 = load float, float* %246, align 4, !tbaa !16
|
||
|
%248 = getelementptr inbounds [51 x float], [51 x float]* @lms.px, i64 0, i64 %245
|
||
|
%249 = load float, float* %248, align 4, !tbaa !16
|
||
|
%250 = fmul float %243, %249
|
||
|
%251 = fadd float %247, %250
|
||
|
store float %251, float* %246, align 4, !tbaa !16
|
||
|
%252 = add nuw nsw i64 %245, 1
|
||
|
%253 = icmp eq i64 %252, 21
|
||
|
br i1 %253, label %254, label %244, !llvm.loop !20
|
||
|
|
||
|
254: ; preds = %244
|
||
|
call void @llvm.memmove.p0i8.p0i8.i64(i8* noundef nonnull align 4 dereferenceable(80) bitcast (float* getelementptr inbounds ([51 x float], [51 x float]* @lms.px, i64 0, i64 1) to i8*), i8* noundef nonnull align 16 dereferenceable(80) bitcast ([51 x float]* @lms.px to i8*), i64 80, i1 false)
|
||
|
%255 = add nuw nsw i64 %218, 1
|
||
|
%256 = icmp eq i64 %255, 201
|
||
|
br i1 %256, label %257, label %217, !llvm.loop !21
|
||
|
|
||
|
257: ; preds = %254
|
||
|
store float %241, float* @lms.sigma, align 4, !tbaa !16
|
||
|
ret i32 0
|
||
|
}
|
||
|
|
||
|
; Function Attrs: nofree norecurse nosync nounwind sspstrong uwtable
|
||
|
define dso_local float @lms(float %0, float %1, float* nocapture %2, i32 %3, float %4, float %5) local_unnamed_addr #1 {
|
||
|
store float %0, float* getelementptr inbounds ([51 x float], [51 x float]* @lms.px, i64 0, i64 0), align 16, !tbaa !16
|
||
|
%7 = load float, float* %2, align 4, !tbaa !16
|
||
|
%8 = fmul float %7, %0
|
||
|
%9 = icmp slt i32 %3, 1
|
||
|
br i1 %9, label %24, label %10
|
||
|
|
||
|
10: ; preds = %6
|
||
|
%11 = add i32 %3, 1
|
||
|
%12 = zext i32 %11 to i64
|
||
|
br label %13
|
||
|
|
||
|
13: ; preds = %10, %13
|
||
|
%14 = phi i64 [ 1, %10 ], [ %22, %13 ]
|
||
|
%15 = phi float [ %8, %10 ], [ %21, %13 ]
|
||
|
%16 = getelementptr inbounds float, float* %2, i64 %14
|
||
|
%17 = load float, float* %16, align 4, !tbaa !16
|
||
|
%18 = getelementptr inbounds [51 x float], [51 x float]* @lms.px, i64 0, i64 %14
|
||
|
%19 = load float, float* %18, align 4, !tbaa !16
|
||
|
%20 = fmul float %17, %19
|
||
|
%21 = fadd float %15, %20
|
||
|
%22 = add nuw nsw i64 %14, 1
|
||
|
%23 = icmp eq i64 %22, %12
|
||
|
br i1 %23, label %24, label %13, !llvm.loop !19
|
||
|
|
||
|
24: ; preds = %13, %6
|
||
|
%25 = phi float [ %8, %6 ], [ %21, %13 ]
|
||
|
%26 = fsub float %1, %25
|
||
|
%27 = fmul float %0, %0
|
||
|
%28 = fmul float %27, %5
|
||
|
%29 = fsub float 1.000000e+00, %5
|
||
|
%30 = load float, float* @lms.sigma, align 4, !tbaa !16
|
||
|
%31 = fmul float %29, %30
|
||
|
%32 = fadd float %28, %31
|
||
|
store float %32, float* @lms.sigma, align 4, !tbaa !16
|
||
|
%33 = fmul float %26, %4
|
||
|
%34 = fdiv float %33, %32
|
||
|
%35 = icmp slt i32 %3, 0
|
||
|
br i1 %35, label %39, label %36
|
||
|
|
||
|
36: ; preds = %24
|
||
|
%37 = add i32 %3, 1
|
||
|
%38 = zext i32 %37 to i64
|
||
|
br label %43
|
||
|
|
||
|
39: ; preds = %43, %24
|
||
|
%40 = icmp sgt i32 %3, 0
|
||
|
br i1 %40, label %41, label %63
|
||
|
|
||
|
41: ; preds = %39
|
||
|
%42 = zext i32 %3 to i64
|
||
|
br label %53
|
||
|
|
||
|
43: ; preds = %36, %43
|
||
|
%44 = phi i64 [ 0, %36 ], [ %51, %43 ]
|
||
|
%45 = getelementptr inbounds float, float* %2, i64 %44
|
||
|
%46 = load float, float* %45, align 4, !tbaa !16
|
||
|
%47 = getelementptr inbounds [51 x float], [51 x float]* @lms.px, i64 0, i64 %44
|
||
|
%48 = load float, float* %47, align 4, !tbaa !16
|
||
|
%49 = fmul float %34, %48
|
||
|
%50 = fadd float %46, %49
|
||
|
store float %50, float* %45, align 4, !tbaa !16
|
||
|
%51 = add nuw nsw i64 %44, 1
|
||
|
%52 = icmp eq i64 %51, %38
|
||
|
br i1 %52, label %39, label %43, !llvm.loop !20
|
||
|
|
||
|
53: ; preds = %41, %53
|
||
|
%54 = phi i64 [ %42, %41 ], [ %62, %53 ]
|
||
|
%55 = phi i32 [ %3, %41 ], [ %56, %53 ]
|
||
|
%56 = add nsw i32 %55, -1
|
||
|
%57 = zext i32 %56 to i64
|
||
|
%58 = getelementptr inbounds [51 x float], [51 x float]* @lms.px, i64 0, i64 %57
|
||
|
%59 = load float, float* %58, align 4, !tbaa !16
|
||
|
%60 = getelementptr inbounds [51 x float], [51 x float]* @lms.px, i64 0, i64 %54
|
||
|
store float %59, float* %60, align 4, !tbaa !16
|
||
|
%61 = icmp sgt i64 %54, 1
|
||
|
%62 = add nsw i64 %54, -1
|
||
|
br i1 %61, label %53, label %63, !llvm.loop !22
|
||
|
|
||
|
63: ; preds = %53, %39
|
||
|
ret float %25
|
||
|
}
|
||
|
|
||
|
; Function Attrs: argmemonly nofree nounwind willreturn
|
||
|
declare void @llvm.memmove.p0i8.p0i8.i64(i8* nocapture writeonly, i8* nocapture readonly, i64, i1 immarg) #2
|
||
|
|
||
|
attributes #0 = { mustprogress nofree norecurse nosync nounwind sspstrong uwtable willreturn "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 = { 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 #2 = { argmemonly nofree nounwind willreturn }
|
||
|
|
||
|
!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}
|
||
|
!13 = distinct !{!13, !10, !11}
|
||
|
!14 = distinct !{!14, !10, !11}
|
||
|
!15 = distinct !{!15, !10, !11}
|
||
|
!16 = !{!17, !17, i64 0}
|
||
|
!17 = !{!"float", !7, i64 0}
|
||
|
!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}
|