forked from NUDT-compiler/nudt-compiler-cpp
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
661 lines
21 KiB
661 lines
21 KiB
@w = global i32 512
|
|
@h = global i32 270
|
|
@imgIn = global [138240 x float] zeroinitializer
|
|
@imgOut = global [138240 x float] zeroinitializer
|
|
@my_y1 = global [138240 x float] zeroinitializer
|
|
@my_y2 = global [138240 x float] zeroinitializer
|
|
@alpha = global float 0x3FD0000000000000
|
|
|
|
declare i32 @getint()
|
|
declare float @getfloat()
|
|
declare i32 @getarray(i32* %arg.a)
|
|
declare i32 @getfarray(float* %arg.a)
|
|
declare i32 @getch()
|
|
declare void @putint(i32 %arg.x)
|
|
declare void @putfloat(float %arg.x)
|
|
declare void @putarray(i32 %arg.n, i32* %arg.a)
|
|
declare void @putfarray(i32 %arg.n, float* %arg.a)
|
|
declare void @putch(i32 %arg.x)
|
|
declare void @starttime()
|
|
declare void @stoptime()
|
|
define float @newExp(float %arg.x) {
|
|
entry:
|
|
%t0 = alloca float
|
|
store float %arg.x, float* %t0
|
|
%t1 = load float, float* %t0
|
|
%t2 = fdiv float %t1, 0x4070000000000000
|
|
%t3 = fadd float 0x3FF0000000000000, %t2
|
|
store float %t3, float* %t0
|
|
%t4 = load float, float* %t0
|
|
%t5 = load float, float* %t0
|
|
%t6 = fmul float %t4, %t5
|
|
store float %t6, float* %t0
|
|
%t7 = load float, float* %t0
|
|
%t8 = load float, float* %t0
|
|
%t9 = fmul float %t7, %t8
|
|
store float %t9, float* %t0
|
|
%t10 = load float, float* %t0
|
|
%t11 = load float, float* %t0
|
|
%t12 = fmul float %t10, %t11
|
|
store float %t12, float* %t0
|
|
%t13 = load float, float* %t0
|
|
%t14 = load float, float* %t0
|
|
%t15 = fmul float %t13, %t14
|
|
store float %t15, float* %t0
|
|
%t16 = load float, float* %t0
|
|
%t17 = load float, float* %t0
|
|
%t18 = fmul float %t16, %t17
|
|
store float %t18, float* %t0
|
|
%t19 = load float, float* %t0
|
|
%t20 = load float, float* %t0
|
|
%t21 = fmul float %t19, %t20
|
|
store float %t21, float* %t0
|
|
%t22 = load float, float* %t0
|
|
%t23 = load float, float* %t0
|
|
%t24 = fmul float %t22, %t23
|
|
store float %t24, float* %t0
|
|
%t25 = load float, float* %t0
|
|
%t26 = load float, float* %t0
|
|
%t27 = fmul float %t25, %t26
|
|
store float %t27, float* %t0
|
|
%t28 = load float, float* %t0
|
|
ret float %t28
|
|
}
|
|
define float @newPow(float %arg.num, i32 %arg.n) {
|
|
entry:
|
|
%t29 = alloca float
|
|
store float %arg.num, float* %t29
|
|
%t30 = alloca i32
|
|
store i32 %arg.n, i32* %t30
|
|
%t31 = load i32, i32* %t30
|
|
%t32 = icmp slt i32 %t31, 0
|
|
%t33 = zext i1 %t32 to i32
|
|
%t34 = icmp ne i32 %t33, 0
|
|
br i1 %t34, label %if.then.1, label %if.else.2
|
|
if.then.1:
|
|
%t35 = load float, float* %t29
|
|
%t36 = load i32, i32* %t30
|
|
%t37 = sub i32 0, %t36
|
|
%t38 = call float @newPow(float %t35, i32 %t37)
|
|
%t39 = fdiv float 0x3FF0000000000000, %t38
|
|
ret float %t39
|
|
if.else.2:
|
|
%t40 = load i32, i32* %t30
|
|
%t41 = icmp eq i32 %t40, 0
|
|
%t42 = zext i1 %t41 to i32
|
|
%t43 = icmp ne i32 %t42, 0
|
|
br i1 %t43, label %if.then.4, label %if.else.5
|
|
if.end.3:
|
|
ret float 0x0000000000000000
|
|
if.then.4:
|
|
ret float 0x3FF0000000000000
|
|
if.else.5:
|
|
%t44 = load i32, i32* %t30
|
|
%t45 = icmp sgt i32 %t44, 0
|
|
%t46 = zext i1 %t45 to i32
|
|
%t47 = icmp ne i32 %t46, 0
|
|
br i1 %t47, label %if.then.7, label %if.end.8
|
|
if.end.6:
|
|
br label %if.end.3
|
|
if.then.7:
|
|
%t48 = load float, float* %t29
|
|
%t49 = load float, float* %t29
|
|
%t50 = load i32, i32* %t30
|
|
%t51 = sub i32 %t50, 1
|
|
%t52 = call float @newPow(float %t49, i32 %t51)
|
|
%t53 = fmul float %t48, %t52
|
|
ret float %t53
|
|
if.end.8:
|
|
br label %if.end.6
|
|
}
|
|
define void @kernel_deriche(i32 %arg.w, i32 %arg.h, float %arg.alpha, float* %arg.imgIn, float* %arg.imgOut, float* %arg.y1, float* %arg.y2) {
|
|
entry:
|
|
%t57 = alloca i32
|
|
%t58 = alloca i32
|
|
%t59 = alloca float
|
|
%t60 = alloca float
|
|
%t61 = alloca float
|
|
%t62 = alloca float
|
|
%t63 = alloca float
|
|
%t64 = alloca float
|
|
%t65 = alloca float
|
|
%t66 = alloca float
|
|
%t67 = alloca float
|
|
%t68 = alloca float
|
|
%t69 = alloca float
|
|
%t70 = alloca float
|
|
%t71 = alloca float
|
|
%t72 = alloca float
|
|
%t73 = alloca float
|
|
%t74 = alloca float
|
|
%t75 = alloca float
|
|
%t76 = alloca float
|
|
%t77 = alloca float
|
|
%t78 = alloca float
|
|
%t79 = alloca float
|
|
%t80 = alloca float
|
|
%t81 = alloca float
|
|
%t54 = alloca i32
|
|
store i32 %arg.w, i32* %t54
|
|
%t55 = alloca i32
|
|
store i32 %arg.h, i32* %t55
|
|
%t56 = alloca float
|
|
store float %arg.alpha, float* %t56
|
|
store i32 0, i32* %t57
|
|
store i32 0, i32* %t58
|
|
store float 0x0000000000000000, float* %t59
|
|
store float 0x0000000000000000, float* %t60
|
|
store float 0x0000000000000000, float* %t61
|
|
store float 0x0000000000000000, float* %t62
|
|
store float 0x0000000000000000, float* %t63
|
|
store float 0x0000000000000000, float* %t64
|
|
store float 0x0000000000000000, float* %t65
|
|
store float 0x0000000000000000, float* %t66
|
|
store float 0x0000000000000000, float* %t67
|
|
store float 0x0000000000000000, float* %t68
|
|
store float 0x0000000000000000, float* %t69
|
|
store float 0x0000000000000000, float* %t70
|
|
store float 0x0000000000000000, float* %t71
|
|
store float 0x0000000000000000, float* %t72
|
|
store float 0x0000000000000000, float* %t73
|
|
store float 0x0000000000000000, float* %t74
|
|
store float 0x0000000000000000, float* %t75
|
|
store float 0x0000000000000000, float* %t76
|
|
store float 0x0000000000000000, float* %t77
|
|
store float 0x0000000000000000, float* %t78
|
|
store float 0x0000000000000000, float* %t79
|
|
store float 0x0000000000000000, float* %t80
|
|
store float 0x0000000000000000, float* %t81
|
|
%t82 = load float, float* %t56
|
|
%t83 = fsub float 0x0000000000000000, %t82
|
|
%t84 = call float @newExp(float %t83)
|
|
%t85 = fsub float 0x3FF0000000000000, %t84
|
|
%t86 = load float, float* %t56
|
|
%t87 = fsub float 0x0000000000000000, %t86
|
|
%t88 = call float @newExp(float %t87)
|
|
%t89 = fsub float 0x3FF0000000000000, %t88
|
|
%t90 = fmul float %t85, %t89
|
|
%t91 = load float, float* %t56
|
|
%t92 = fmul float 0x4000000000000000, %t91
|
|
%t93 = load float, float* %t56
|
|
%t94 = fsub float 0x0000000000000000, %t93
|
|
%t95 = call float @newExp(float %t94)
|
|
%t96 = fmul float %t92, %t95
|
|
%t97 = fadd float 0x3FF0000000000000, %t96
|
|
%t98 = load float, float* %t56
|
|
%t99 = fmul float 0x4000000000000000, %t98
|
|
%t100 = call float @newExp(float %t99)
|
|
%t101 = fsub float %t97, %t100
|
|
%t102 = fdiv float %t90, %t101
|
|
store float %t102, float* %t69
|
|
%t103 = load float, float* %t69
|
|
store float %t103, float* %t70
|
|
%t104 = load float, float* %t69
|
|
store float %t104, float* %t74
|
|
%t105 = load float, float* %t69
|
|
%t106 = load float, float* %t56
|
|
%t107 = fsub float 0x0000000000000000, %t106
|
|
%t108 = call float @newExp(float %t107)
|
|
%t109 = fmul float %t105, %t108
|
|
%t110 = load float, float* %t56
|
|
%t111 = fsub float %t110, 0x3FF0000000000000
|
|
%t112 = fmul float %t109, %t111
|
|
store float %t112, float* %t75
|
|
%t113 = load float, float* %t75
|
|
store float %t113, float* %t71
|
|
%t114 = load float, float* %t69
|
|
%t115 = load float, float* %t56
|
|
%t116 = fsub float 0x0000000000000000, %t115
|
|
%t117 = call float @newExp(float %t116)
|
|
%t118 = fmul float %t114, %t117
|
|
%t119 = load float, float* %t56
|
|
%t120 = fadd float %t119, 0x3FF0000000000000
|
|
%t121 = fmul float %t118, %t120
|
|
store float %t121, float* %t76
|
|
%t122 = load float, float* %t76
|
|
store float %t122, float* %t72
|
|
%t123 = load float, float* %t69
|
|
%t124 = fsub float 0x0000000000000000, %t123
|
|
%t125 = load float, float* %t56
|
|
%t126 = fmul float 0xC000000000000000, %t125
|
|
%t127 = call float @newExp(float %t126)
|
|
%t128 = fmul float %t124, %t127
|
|
store float %t128, float* %t77
|
|
%t129 = load float, float* %t77
|
|
store float %t129, float* %t73
|
|
%t130 = load float, float* %t56
|
|
%t131 = fsub float 0x0000000000000000, %t130
|
|
%t132 = fptosi float %t131 to i32
|
|
%t133 = call float @newPow(float 0x4000000000000000, i32 %t132)
|
|
store float %t133, float* %t78
|
|
%t134 = load float, float* %t56
|
|
%t135 = fmul float 0xC000000000000000, %t134
|
|
%t136 = call float @newExp(float %t135)
|
|
%t137 = fsub float 0x0000000000000000, %t136
|
|
store float %t137, float* %t79
|
|
store float 0x3FF0000000000000, float* %t80
|
|
store float 0x3FF0000000000000, float* %t81
|
|
store i32 0, i32* %t57
|
|
br label %while.cond.9
|
|
while.cond.9:
|
|
%t138 = load i32, i32* %t57
|
|
%t139 = load i32, i32* %t54
|
|
%t140 = icmp slt i32 %t138, %t139
|
|
%t141 = zext i1 %t140 to i32
|
|
%t142 = icmp ne i32 %t141, 0
|
|
br i1 %t142, label %while.body.10, label %while.end.11
|
|
while.body.10:
|
|
store float 0x0000000000000000, float* %t61
|
|
store float 0x0000000000000000, float* %t62
|
|
store float 0x0000000000000000, float* %t59
|
|
store i32 0, i32* %t58
|
|
br label %while.cond.12
|
|
while.end.11:
|
|
store i32 0, i32* %t57
|
|
br label %while.cond.15
|
|
while.cond.12:
|
|
%t143 = load i32, i32* %t58
|
|
%t144 = load i32, i32* %t55
|
|
%t145 = icmp slt i32 %t143, %t144
|
|
%t146 = zext i1 %t145 to i32
|
|
%t147 = icmp ne i32 %t146, 0
|
|
br i1 %t147, label %while.body.13, label %while.end.14
|
|
while.body.13:
|
|
%t148 = load i32, i32* %t57
|
|
%t149 = load i32, i32* %t58
|
|
%t150 = mul i32 %t148, 270
|
|
%t151 = add i32 %t150, %t149
|
|
%t152 = getelementptr inbounds float, float* %arg.y1, i32 %t151
|
|
%t153 = load float, float* %t70
|
|
%t154 = load i32, i32* %t57
|
|
%t155 = load i32, i32* %t58
|
|
%t156 = mul i32 %t154, 270
|
|
%t157 = add i32 %t156, %t155
|
|
%t158 = getelementptr inbounds float, float* %arg.imgIn, i32 %t157
|
|
%t159 = load float, float* %t158
|
|
%t160 = fmul float %t153, %t159
|
|
%t161 = load float, float* %t71
|
|
%t162 = load float, float* %t59
|
|
%t163 = fmul float %t161, %t162
|
|
%t164 = fadd float %t160, %t163
|
|
%t165 = load float, float* %t78
|
|
%t166 = load float, float* %t61
|
|
%t167 = fmul float %t165, %t166
|
|
%t168 = fadd float %t164, %t167
|
|
%t169 = load float, float* %t79
|
|
%t170 = load float, float* %t62
|
|
%t171 = fmul float %t169, %t170
|
|
%t172 = fadd float %t168, %t171
|
|
store float %t172, float* %t152
|
|
%t173 = load i32, i32* %t57
|
|
%t174 = load i32, i32* %t58
|
|
%t175 = mul i32 %t173, 270
|
|
%t176 = add i32 %t175, %t174
|
|
%t177 = getelementptr inbounds float, float* %arg.imgIn, i32 %t176
|
|
%t178 = load float, float* %t177
|
|
store float %t178, float* %t59
|
|
%t179 = load float, float* %t61
|
|
store float %t179, float* %t62
|
|
%t180 = load i32, i32* %t57
|
|
%t181 = load i32, i32* %t58
|
|
%t182 = mul i32 %t180, 270
|
|
%t183 = add i32 %t182, %t181
|
|
%t184 = getelementptr inbounds float, float* %arg.y1, i32 %t183
|
|
%t185 = load float, float* %t184
|
|
store float %t185, float* %t61
|
|
%t186 = load i32, i32* %t58
|
|
%t187 = add i32 %t186, 1
|
|
store i32 %t187, i32* %t58
|
|
br label %while.cond.12
|
|
while.end.14:
|
|
%t188 = load i32, i32* %t57
|
|
%t189 = add i32 %t188, 1
|
|
store i32 %t189, i32* %t57
|
|
br label %while.cond.9
|
|
while.cond.15:
|
|
%t190 = load i32, i32* %t57
|
|
%t191 = load i32, i32* %t54
|
|
%t192 = icmp slt i32 %t190, %t191
|
|
%t193 = zext i1 %t192 to i32
|
|
%t194 = icmp ne i32 %t193, 0
|
|
br i1 %t194, label %while.body.16, label %while.end.17
|
|
while.body.16:
|
|
store float 0x0000000000000000, float* %t67
|
|
store float 0x0000000000000000, float* %t68
|
|
store float 0x0000000000000000, float* %t63
|
|
store float 0x0000000000000000, float* %t64
|
|
%t195 = load i32, i32* %t55
|
|
%t196 = sub i32 %t195, 1
|
|
store i32 %t196, i32* %t58
|
|
br label %while.cond.18
|
|
while.end.17:
|
|
store i32 0, i32* %t57
|
|
br label %while.cond.21
|
|
while.cond.18:
|
|
%t197 = load i32, i32* %t58
|
|
%t198 = icmp sge i32 %t197, 0
|
|
%t199 = zext i1 %t198 to i32
|
|
%t200 = icmp ne i32 %t199, 0
|
|
br i1 %t200, label %while.body.19, label %while.end.20
|
|
while.body.19:
|
|
%t201 = load i32, i32* %t57
|
|
%t202 = load i32, i32* %t58
|
|
%t203 = mul i32 %t201, 270
|
|
%t204 = add i32 %t203, %t202
|
|
%t205 = getelementptr inbounds float, float* %arg.y2, i32 %t204
|
|
%t206 = load float, float* %t72
|
|
%t207 = load float, float* %t63
|
|
%t208 = fmul float %t206, %t207
|
|
%t209 = load float, float* %t73
|
|
%t210 = load float, float* %t64
|
|
%t211 = fmul float %t209, %t210
|
|
%t212 = fadd float %t208, %t211
|
|
%t213 = load float, float* %t78
|
|
%t214 = load float, float* %t67
|
|
%t215 = fmul float %t213, %t214
|
|
%t216 = fadd float %t212, %t215
|
|
%t217 = load float, float* %t79
|
|
%t218 = load float, float* %t68
|
|
%t219 = fmul float %t217, %t218
|
|
%t220 = fadd float %t216, %t219
|
|
store float %t220, float* %t205
|
|
%t221 = load float, float* %t63
|
|
store float %t221, float* %t64
|
|
%t222 = load i32, i32* %t57
|
|
%t223 = load i32, i32* %t58
|
|
%t224 = mul i32 %t222, 270
|
|
%t225 = add i32 %t224, %t223
|
|
%t226 = getelementptr inbounds float, float* %arg.imgIn, i32 %t225
|
|
%t227 = load float, float* %t226
|
|
store float %t227, float* %t63
|
|
%t228 = load float, float* %t67
|
|
store float %t228, float* %t68
|
|
%t229 = load i32, i32* %t57
|
|
%t230 = load i32, i32* %t58
|
|
%t231 = mul i32 %t229, 270
|
|
%t232 = add i32 %t231, %t230
|
|
%t233 = getelementptr inbounds float, float* %arg.y2, i32 %t232
|
|
%t234 = load float, float* %t233
|
|
store float %t234, float* %t67
|
|
%t235 = load i32, i32* %t58
|
|
%t236 = sub i32 %t235, 1
|
|
store i32 %t236, i32* %t58
|
|
br label %while.cond.18
|
|
while.end.20:
|
|
%t237 = load i32, i32* %t57
|
|
%t238 = add i32 %t237, 1
|
|
store i32 %t238, i32* %t57
|
|
br label %while.cond.15
|
|
while.cond.21:
|
|
%t239 = load i32, i32* %t57
|
|
%t240 = load i32, i32* %t54
|
|
%t241 = icmp slt i32 %t239, %t240
|
|
%t242 = zext i1 %t241 to i32
|
|
%t243 = icmp ne i32 %t242, 0
|
|
br i1 %t243, label %while.body.22, label %while.end.23
|
|
while.body.22:
|
|
store i32 0, i32* %t58
|
|
br label %while.cond.24
|
|
while.end.23:
|
|
store i32 0, i32* %t58
|
|
br label %while.cond.27
|
|
while.cond.24:
|
|
%t244 = load i32, i32* %t58
|
|
%t245 = load i32, i32* %t55
|
|
%t246 = icmp slt i32 %t244, %t245
|
|
%t247 = zext i1 %t246 to i32
|
|
%t248 = icmp ne i32 %t247, 0
|
|
br i1 %t248, label %while.body.25, label %while.end.26
|
|
while.body.25:
|
|
%t249 = load i32, i32* %t57
|
|
%t250 = load i32, i32* %t58
|
|
%t251 = mul i32 %t249, 270
|
|
%t252 = add i32 %t251, %t250
|
|
%t253 = getelementptr inbounds float, float* %arg.imgOut, i32 %t252
|
|
%t254 = load float, float* %t80
|
|
%t255 = load i32, i32* %t57
|
|
%t256 = load i32, i32* %t58
|
|
%t257 = mul i32 %t255, 270
|
|
%t258 = add i32 %t257, %t256
|
|
%t259 = getelementptr inbounds float, float* %arg.y1, i32 %t258
|
|
%t260 = load float, float* %t259
|
|
%t261 = load i32, i32* %t57
|
|
%t262 = load i32, i32* %t58
|
|
%t263 = mul i32 %t261, 270
|
|
%t264 = add i32 %t263, %t262
|
|
%t265 = getelementptr inbounds float, float* %arg.y2, i32 %t264
|
|
%t266 = load float, float* %t265
|
|
%t267 = fadd float %t260, %t266
|
|
%t268 = fmul float %t254, %t267
|
|
store float %t268, float* %t253
|
|
%t269 = load i32, i32* %t58
|
|
%t270 = add i32 %t269, 1
|
|
store i32 %t270, i32* %t58
|
|
br label %while.cond.24
|
|
while.end.26:
|
|
%t271 = load i32, i32* %t57
|
|
%t272 = add i32 %t271, 1
|
|
store i32 %t272, i32* %t57
|
|
br label %while.cond.21
|
|
while.cond.27:
|
|
%t273 = load i32, i32* %t58
|
|
%t274 = load i32, i32* %t55
|
|
%t275 = icmp slt i32 %t273, %t274
|
|
%t276 = zext i1 %t275 to i32
|
|
%t277 = icmp ne i32 %t276, 0
|
|
br i1 %t277, label %while.body.28, label %while.end.29
|
|
while.body.28:
|
|
store float 0x0000000000000000, float* %t60
|
|
store float 0x0000000000000000, float* %t61
|
|
store float 0x0000000000000000, float* %t62
|
|
store i32 0, i32* %t57
|
|
br label %while.cond.30
|
|
while.end.29:
|
|
store i32 0, i32* %t58
|
|
br label %while.cond.33
|
|
while.cond.30:
|
|
%t278 = load i32, i32* %t57
|
|
%t279 = load i32, i32* %t54
|
|
%t280 = icmp slt i32 %t278, %t279
|
|
%t281 = zext i1 %t280 to i32
|
|
%t282 = icmp ne i32 %t281, 0
|
|
br i1 %t282, label %while.body.31, label %while.end.32
|
|
while.body.31:
|
|
%t283 = load i32, i32* %t57
|
|
%t284 = load i32, i32* %t58
|
|
%t285 = mul i32 %t283, 270
|
|
%t286 = add i32 %t285, %t284
|
|
%t287 = getelementptr inbounds float, float* %arg.y1, i32 %t286
|
|
%t288 = load float, float* %t74
|
|
%t289 = load i32, i32* %t57
|
|
%t290 = load i32, i32* %t58
|
|
%t291 = mul i32 %t289, 270
|
|
%t292 = add i32 %t291, %t290
|
|
%t293 = getelementptr inbounds float, float* %arg.imgOut, i32 %t292
|
|
%t294 = load float, float* %t293
|
|
%t295 = fmul float %t288, %t294
|
|
%t296 = load float, float* %t75
|
|
%t297 = load float, float* %t60
|
|
%t298 = fmul float %t296, %t297
|
|
%t299 = fadd float %t295, %t298
|
|
%t300 = load float, float* %t78
|
|
%t301 = load float, float* %t61
|
|
%t302 = fmul float %t300, %t301
|
|
%t303 = fadd float %t299, %t302
|
|
%t304 = load float, float* %t79
|
|
%t305 = load float, float* %t62
|
|
%t306 = fmul float %t304, %t305
|
|
%t307 = fadd float %t303, %t306
|
|
store float %t307, float* %t287
|
|
%t308 = load i32, i32* %t57
|
|
%t309 = load i32, i32* %t58
|
|
%t310 = mul i32 %t308, 270
|
|
%t311 = add i32 %t310, %t309
|
|
%t312 = getelementptr inbounds float, float* %arg.imgOut, i32 %t311
|
|
%t313 = load float, float* %t312
|
|
store float %t313, float* %t60
|
|
%t314 = load float, float* %t61
|
|
store float %t314, float* %t62
|
|
%t315 = load i32, i32* %t57
|
|
%t316 = load i32, i32* %t58
|
|
%t317 = mul i32 %t315, 270
|
|
%t318 = add i32 %t317, %t316
|
|
%t319 = getelementptr inbounds float, float* %arg.y1, i32 %t318
|
|
%t320 = load float, float* %t319
|
|
store float %t320, float* %t61
|
|
%t321 = load i32, i32* %t57
|
|
%t322 = add i32 %t321, 1
|
|
store i32 %t322, i32* %t57
|
|
br label %while.cond.30
|
|
while.end.32:
|
|
%t323 = load i32, i32* %t58
|
|
%t324 = add i32 %t323, 1
|
|
store i32 %t324, i32* %t58
|
|
br label %while.cond.27
|
|
while.cond.33:
|
|
%t325 = load i32, i32* %t58
|
|
%t326 = load i32, i32* %t55
|
|
%t327 = icmp slt i32 %t325, %t326
|
|
%t328 = zext i1 %t327 to i32
|
|
%t329 = icmp ne i32 %t328, 0
|
|
br i1 %t329, label %while.body.34, label %while.end.35
|
|
while.body.34:
|
|
store float 0x0000000000000000, float* %t65
|
|
store float 0x0000000000000000, float* %t66
|
|
store float 0x0000000000000000, float* %t67
|
|
store float 0x0000000000000000, float* %t68
|
|
%t330 = load i32, i32* %t54
|
|
%t331 = sub i32 %t330, 1
|
|
store i32 %t331, i32* %t57
|
|
br label %while.cond.36
|
|
while.end.35:
|
|
store i32 0, i32* %t57
|
|
br label %while.cond.39
|
|
while.cond.36:
|
|
%t332 = load i32, i32* %t57
|
|
%t333 = icmp sge i32 %t332, 0
|
|
%t334 = zext i1 %t333 to i32
|
|
%t335 = icmp ne i32 %t334, 0
|
|
br i1 %t335, label %while.body.37, label %while.end.38
|
|
while.body.37:
|
|
%t336 = load i32, i32* %t57
|
|
%t337 = load i32, i32* %t58
|
|
%t338 = mul i32 %t336, 270
|
|
%t339 = add i32 %t338, %t337
|
|
%t340 = getelementptr inbounds float, float* %arg.y2, i32 %t339
|
|
%t341 = load float, float* %t76
|
|
%t342 = load float, float* %t65
|
|
%t343 = fmul float %t341, %t342
|
|
%t344 = load float, float* %t77
|
|
%t345 = load float, float* %t66
|
|
%t346 = fmul float %t344, %t345
|
|
%t347 = fadd float %t343, %t346
|
|
%t348 = load float, float* %t78
|
|
%t349 = load float, float* %t67
|
|
%t350 = fmul float %t348, %t349
|
|
%t351 = fadd float %t347, %t350
|
|
%t352 = load float, float* %t79
|
|
%t353 = load float, float* %t68
|
|
%t354 = fmul float %t352, %t353
|
|
%t355 = fadd float %t351, %t354
|
|
store float %t355, float* %t340
|
|
%t356 = load float, float* %t65
|
|
store float %t356, float* %t66
|
|
%t357 = load i32, i32* %t57
|
|
%t358 = load i32, i32* %t58
|
|
%t359 = mul i32 %t357, 270
|
|
%t360 = add i32 %t359, %t358
|
|
%t361 = getelementptr inbounds float, float* %arg.imgOut, i32 %t360
|
|
%t362 = load float, float* %t361
|
|
store float %t362, float* %t65
|
|
%t363 = load float, float* %t67
|
|
store float %t363, float* %t68
|
|
%t364 = load i32, i32* %t57
|
|
%t365 = load i32, i32* %t58
|
|
%t366 = mul i32 %t364, 270
|
|
%t367 = add i32 %t366, %t365
|
|
%t368 = getelementptr inbounds float, float* %arg.y2, i32 %t367
|
|
%t369 = load float, float* %t368
|
|
store float %t369, float* %t67
|
|
%t370 = load i32, i32* %t57
|
|
%t371 = sub i32 %t370, 1
|
|
store i32 %t371, i32* %t57
|
|
br label %while.cond.36
|
|
while.end.38:
|
|
%t372 = load i32, i32* %t58
|
|
%t373 = add i32 %t372, 1
|
|
store i32 %t373, i32* %t58
|
|
br label %while.cond.33
|
|
while.cond.39:
|
|
%t374 = load i32, i32* %t57
|
|
%t375 = load i32, i32* %t54
|
|
%t376 = icmp slt i32 %t374, %t375
|
|
%t377 = zext i1 %t376 to i32
|
|
%t378 = icmp ne i32 %t377, 0
|
|
br i1 %t378, label %while.body.40, label %while.end.41
|
|
while.body.40:
|
|
store i32 0, i32* %t58
|
|
br label %while.cond.42
|
|
while.end.41:
|
|
ret void
|
|
while.cond.42:
|
|
%t379 = load i32, i32* %t58
|
|
%t380 = load i32, i32* %t55
|
|
%t381 = icmp slt i32 %t379, %t380
|
|
%t382 = zext i1 %t381 to i32
|
|
%t383 = icmp ne i32 %t382, 0
|
|
br i1 %t383, label %while.body.43, label %while.end.44
|
|
while.body.43:
|
|
%t384 = load i32, i32* %t57
|
|
%t385 = load i32, i32* %t58
|
|
%t386 = mul i32 %t384, 270
|
|
%t387 = add i32 %t386, %t385
|
|
%t388 = getelementptr inbounds float, float* %arg.imgOut, i32 %t387
|
|
%t389 = load float, float* %t81
|
|
%t390 = load i32, i32* %t57
|
|
%t391 = load i32, i32* %t58
|
|
%t392 = mul i32 %t390, 270
|
|
%t393 = add i32 %t392, %t391
|
|
%t394 = getelementptr inbounds float, float* %arg.y1, i32 %t393
|
|
%t395 = load float, float* %t394
|
|
%t396 = load i32, i32* %t57
|
|
%t397 = load i32, i32* %t58
|
|
%t398 = mul i32 %t396, 270
|
|
%t399 = add i32 %t398, %t397
|
|
%t400 = getelementptr inbounds float, float* %arg.y2, i32 %t399
|
|
%t401 = load float, float* %t400
|
|
%t402 = fadd float %t395, %t401
|
|
%t403 = fmul float %t389, %t402
|
|
store float %t403, float* %t388
|
|
%t404 = load i32, i32* %t58
|
|
%t405 = add i32 %t404, 1
|
|
store i32 %t405, i32* %t58
|
|
br label %while.cond.42
|
|
while.end.44:
|
|
%t406 = load i32, i32* %t57
|
|
%t407 = add i32 %t406, 1
|
|
store i32 %t407, i32* %t57
|
|
br label %while.cond.39
|
|
}
|
|
define i32 @main() {
|
|
entry:
|
|
%t408 = getelementptr inbounds [138240 x float], [138240 x float]* @imgIn, i32 0, i32 0
|
|
%t409 = call i32 @getfarray(float* %t408)
|
|
call void @starttime()
|
|
%t411 = load i32, i32* @w
|
|
%t412 = load i32, i32* @h
|
|
%t413 = load float, float* @alpha
|
|
%t414 = getelementptr inbounds [138240 x float], [138240 x float]* @imgIn, i32 0, i32 0
|
|
%t415 = getelementptr inbounds [138240 x float], [138240 x float]* @imgOut, i32 0, i32 0
|
|
%t416 = getelementptr inbounds [138240 x float], [138240 x float]* @my_y1, i32 0, i32 0
|
|
%t417 = getelementptr inbounds [138240 x float], [138240 x float]* @my_y2, i32 0, i32 0
|
|
call void @kernel_deriche(i32 %t411, i32 %t412, float %t413, float* %t414, float* %t415, float* %t416, float* %t417)
|
|
call void @stoptime()
|
|
%t420 = load i32, i32* @w
|
|
%t421 = load i32, i32* @h
|
|
%t422 = mul i32 %t420, %t421
|
|
%t423 = getelementptr inbounds [138240 x float], [138240 x float]* @imgOut, i32 0, i32 0
|
|
call void @putfarray(i32 %t422, float* %t423)
|
|
ret i32 0
|
|
}
|