sysy-data/quick_test/ll/97_matrix_sub.ll

195 lines
7.3 KiB
LLVM

@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
}