@N = dso_local global i32 0 @M = dso_local global i32 0 @L = dso_local global i32 0 declare i32 @getint() declare i32 @getch() declare float @getfloat() declare void @putint(i32 %p0) declare void @putch(i32 %p0) declare void @putfloat(float %p0) declare i32 @getarray(i32* %p0) declare i32 @getfarray(float* %p0) declare void @putarray(i32 %p0, i32* %p1) declare void @putfarray(i32 %p0, float* %p1) declare void @_sysy_starttime(i32 %p0) declare void @_sysy_stoptime(i32 %p0) declare i32 @thrd_create(i32 %p0) declare void @thrd_join() declare void @putf() declare void @llvm.memset.p0.i32(i32* %p0, i8 %p1, i32 %p2, i1 %p3) define i32 @main() { entry: store i32 3, ptr @N store i32 3, ptr @M store i32 3, ptr @L %alloca_85 = alloca [3 x float] %alloca_86 = alloca [3 x float] %alloca_87 = alloca [3 x float] %alloca_88 = alloca [3 x float] %alloca_89 = alloca [3 x float] %alloca_90 = alloca [3 x float] %alloca_91 = alloca [6 x float] %alloca_92 = alloca [3 x float] %alloca_93 = alloca [3 x float] %getelementptr_281 = getelementptr [3 x float], ptr %alloca_90, i32 0 %getelementptr_282 = getelementptr [3 x float], ptr %alloca_88, i32 0 %getelementptr_283 = getelementptr [3 x float], ptr %alloca_85, i32 0 %getelementptr_284 = getelementptr [3 x float], ptr %alloca_87, i32 0 %getelementptr_285 = getelementptr [3 x float], ptr %alloca_89, i32 0 %getelementptr_286 = getelementptr [3 x float], ptr %alloca_86, i32 0 %call_287 = call i32 @thrd_create(i32 4) %Mul_289 = mul i32 %call_287, 3 %SDiv_290 = sdiv i32 %Mul_289, 5 %Add_292 = add i32 %Mul_289, 3 %SDiv_293 = sdiv i32 %Add_292, 5 br label %cond0 cond0: %phi_217 = phi i32 [%SDiv_290, %entry], [%Add_131, %body1] %icmp_295 = icmp slt i32 %phi_217, %SDiv_293 br i1 %icmp_295, label %body1, label %entry_inline0 body1: %getelementptr_101 = getelementptr [3 x float], ptr %getelementptr_283, i32 0, i32 %phi_217 %itofp_103 = sitofp i32 %phi_217 to float store float %itofp_103, ptr %getelementptr_101 %getelementptr_106 = getelementptr [3 x float], ptr %getelementptr_286, i32 0, i32 %phi_217 store float %itofp_103, ptr %getelementptr_106 %getelementptr_111 = getelementptr [3 x float], ptr %getelementptr_284, i32 0, i32 %phi_217 store float %itofp_103, ptr %getelementptr_111 %getelementptr_116 = getelementptr [3 x float], ptr %getelementptr_282, i32 0, i32 %phi_217 store float %itofp_103, ptr %getelementptr_116 %getelementptr_121 = getelementptr [3 x float], ptr %getelementptr_285, i32 0, i32 %phi_217 store float %itofp_103, ptr %getelementptr_121 %getelementptr_126 = getelementptr [3 x float], ptr %getelementptr_281, i32 0, i32 %phi_217 store float %itofp_103, ptr %getelementptr_126 %Add_131 = add i32 %phi_217, 1 br label %cond0 entry_inline0: call void @thrd_join() %getelementptr_297 = getelementptr [3 x float], ptr %alloca_86, i32 0 %getelementptr_298 = getelementptr [3 x float], ptr %alloca_90, i32 0 %getelementptr_299 = getelementptr [3 x float], ptr %alloca_88, i32 0 %getelementptr_300 = getelementptr [3 x float], ptr %alloca_93, i32 0 %getelementptr_301 = getelementptr [3 x float], ptr %alloca_92, i32 0 %getelementptr_302 = getelementptr [3 x float], ptr %alloca_89, i32 0 %getelementptr_303 = getelementptr [3 x float], ptr %alloca_85, i32 0 %getelementptr_304 = getelementptr [3 x float], ptr %alloca_87, i32 0 %getelementptr_305 = getelementptr [6 x float], ptr %alloca_91, i32 0 %call_306 = call i32 @thrd_create(i32 4) %Mul_308 = mul i32 %call_306, 3 %SDiv_309 = sdiv i32 %Mul_308, 5 %Add_311 = add i32 %Mul_308, 3 %SDiv_312 = sdiv i32 %Add_311, 5 br label %cond0_inline1 cond0_inline1: %phi_238 = phi i32 [%SDiv_309, %entry_inline0], [%Add_267, %body1_inline4] %icmp_314 = icmp slt i32 %phi_238, %SDiv_312 br i1 %icmp_314, label %body1_inline4, label %final2_split5 body1_inline4: %getelementptr_272 = getelementptr [3 x float], ptr %getelementptr_303, i32 0, i32 %phi_238 %getelementptr_273 = getelementptr [3 x float], ptr %getelementptr_299, i32 0, i32 %phi_238 %load_248 = load float, ptr %getelementptr_272 %load_249 = load float, ptr %getelementptr_273 %FSub_250 = fsub float %load_248, %load_249 %getelementptr_274 = getelementptr [6 x float], ptr %getelementptr_305, i32 0, i32 %phi_238 store float %FSub_250, ptr %getelementptr_274 %getelementptr_275 = getelementptr [3 x float], ptr %getelementptr_297, i32 0, i32 %phi_238 %getelementptr_276 = getelementptr [3 x float], ptr %getelementptr_302, i32 0, i32 %phi_238 %load_255 = load float, ptr %getelementptr_275 %load_256 = load float, ptr %getelementptr_276 %FSub_257 = fsub float %load_255, %load_256 %getelementptr_277 = getelementptr [3 x float], ptr %getelementptr_301, i32 0, i32 %phi_238 store float %FSub_257, ptr %getelementptr_277 %getelementptr_278 = getelementptr [3 x float], ptr %getelementptr_304, i32 0, i32 %phi_238 %getelementptr_279 = getelementptr [3 x float], ptr %getelementptr_298, i32 0, i32 %phi_238 %load_262 = load float, ptr %getelementptr_278 %load_263 = load float, ptr %getelementptr_279 %FSub_264 = fsub float %load_262, %load_263 %getelementptr_280 = getelementptr [3 x float], ptr %getelementptr_300, i32 0, i32 %phi_238 store float %FSub_264, ptr %getelementptr_280 %Add_267 = add i32 %phi_238, 1 br label %cond0_inline1 final2_split5: call void @thrd_join() %getelementptr_316 = getelementptr [6 x float], ptr %alloca_91, i32 0 %call_317 = call i32 @thrd_create(i32 4) %Mul_319 = mul i32 %call_317, 3 %SDiv_320 = sdiv i32 %Mul_319, 5 %Add_322 = add i32 %Mul_319, 3 %SDiv_323 = sdiv i32 %Add_322, 5 br label %cond3 cond3: %phi_218 = phi i32 [%SDiv_320, %final2_split5], [%Add_161, %body4] %icmp_325 = icmp slt i32 %phi_218, %SDiv_323 br i1 %icmp_325, label %body4, label %final5 body4: %getelementptr_154 = getelementptr [6 x float], ptr %getelementptr_316, i32 0, i32 %phi_218 %load_155 = load float, ptr %getelementptr_154 %fptoi_156 = fptosi float %load_155 to i32 call void @putint(i32 %fptoi_156) %Add_161 = add i32 %phi_218, 1 br label %cond3 final5: call void @thrd_join() call void @putch(i32 10) %getelementptr_327 = getelementptr [3 x float], ptr %alloca_92, i32 0 %call_328 = call i32 @thrd_create(i32 4) %Mul_330 = mul i32 %call_328, 3 %SDiv_331 = sdiv i32 %Mul_330, 5 %Add_333 = add i32 %Mul_330, 3 %SDiv_334 = sdiv i32 %Add_333, 5 br label %cond6 cond6: %phi_219 = phi i32 [%SDiv_331, %final5], [%Add_183, %body7] %icmp_336 = icmp slt i32 %phi_219, %SDiv_334 br i1 %icmp_336, label %body7, label %final8 body7: %getelementptr_176 = getelementptr [3 x float], ptr %getelementptr_327, i32 0, i32 %phi_219 %load_177 = load float, ptr %getelementptr_176 %fptoi_178 = fptosi float %load_177 to i32 call void @putint(i32 %fptoi_178) %Add_183 = add i32 %phi_219, 1 br label %cond6 final8: call void @thrd_join() call void @putch(i32 10) %getelementptr_338 = getelementptr [3 x float], ptr %alloca_93, i32 0 %call_339 = call i32 @thrd_create(i32 4) %Mul_341 = mul i32 %call_339, 3 %SDiv_342 = sdiv i32 %Mul_341, 5 %Add_344 = add i32 %Mul_341, 3 %SDiv_345 = sdiv i32 %Add_344, 5 br label %cond9 cond9: %phi_220 = phi i32 [%SDiv_342, %final8], [%Add_205, %body10] %icmp_347 = icmp slt i32 %phi_220, %SDiv_345 br i1 %icmp_347, label %body10, label %exit body10: %getelementptr_198 = getelementptr [3 x float], ptr %getelementptr_338, i32 0, i32 %phi_220 %load_199 = load float, ptr %getelementptr_198 %fptoi_200 = fptosi float %load_199 to i32 call void @putint(i32 %fptoi_200) %Add_205 = add i32 %phi_220, 1 br label %cond9 exit: call void @thrd_join() call void @putch(i32 10) ret i32 0 }