This makes it a little more consistent; now, "cretonne" is never capitalized in identifier, path, or URL contexts. It is capitalized in natural language contexts when referring to the project.
1264 lines
30 KiB
Plaintext
1264 lines
30 KiB
Plaintext
test regalloc
|
|
set is_64bit
|
|
isa x86 haswell
|
|
|
|
; Reported as https://github.com/cretonne/cretonne/issues/207
|
|
;
|
|
; The coalescer creates a virtual register with two interfering values.
|
|
function %pr207(i64 vmctx, i32, i32) -> i32 system_v {
|
|
gv0 = vmctx-8
|
|
heap0 = static gv0, min 0, bound 0x5000, guard 0x0040_0000
|
|
sig0 = (i64 vmctx, i32, i32) -> i32 system_v
|
|
sig1 = (i64 vmctx, i32, i32, i32) -> i32 system_v
|
|
sig2 = (i64 vmctx, i32, i32, i32) -> i32 system_v
|
|
fn0 = u0:2 sig0
|
|
fn1 = u0:0 sig1
|
|
fn2 = u0:1 sig2
|
|
|
|
ebb0(v0: i64, v1: i32, v2: i32):
|
|
v3 = iconst.i32 0
|
|
v4 = iconst.i32 0
|
|
v5 = iconst.i32 0
|
|
v6 = iconst.i32 0x4ffe
|
|
v7 = icmp uge v5, v6
|
|
brz v7, ebb1
|
|
trap heap_oob
|
|
|
|
ebb1:
|
|
v8 = uextend.i64 v5
|
|
v9 = iadd_imm.i64 v0, -8
|
|
v10 = load.i64 v9
|
|
v11 = iadd v10, v8
|
|
v12 = load.i32 v11+4
|
|
v13 = iconst.i32 1056
|
|
v14 = isub v12, v13
|
|
v15 = iconst.i32 0x4ffe
|
|
v16 = icmp.i32 uge v4, v15
|
|
brz v16, ebb2
|
|
trap heap_oob
|
|
|
|
ebb2:
|
|
v17 = uextend.i64 v4
|
|
v18 = iadd_imm.i64 v0, -8
|
|
v19 = load.i64 v18
|
|
v20 = iadd v19, v17
|
|
store.i32 v14, v20+4
|
|
v21 = iconst.i32 0x4ffe
|
|
v22 = icmp.i32 uge v2, v21
|
|
brz v22, ebb3
|
|
trap heap_oob
|
|
|
|
ebb3:
|
|
v23 = uextend.i64 v2
|
|
v24 = iadd_imm.i64 v0, -8
|
|
v25 = load.i64 v24
|
|
v26 = iadd v25, v23
|
|
v27 = sload8.i32 v26
|
|
v28 = iconst.i32 255
|
|
v29 = band v27, v28
|
|
v30 = iconst.i32 0
|
|
v31 = icmp eq v29, v30
|
|
v32 = bint.i32 v31
|
|
brnz v32, ebb90(v14, v1)
|
|
v33 = call fn0(v0, v1, v27)
|
|
v34 = iconst.i32 0
|
|
v35 = iconst.i32 0
|
|
v36 = icmp eq v33, v35
|
|
v37 = bint.i32 v36
|
|
brnz v37, ebb90(v14, v34)
|
|
v38 = iconst.i32 0x4ffe
|
|
v39 = icmp.i32 uge v2, v38
|
|
brz v39, ebb4
|
|
trap heap_oob
|
|
|
|
ebb4:
|
|
v40 = uextend.i64 v2
|
|
v41 = iadd_imm.i64 v0, -8
|
|
v42 = load.i64 v41
|
|
v43 = iadd v42, v40
|
|
v44 = uload8.i32 v43+1
|
|
v45 = iconst.i32 0
|
|
v46 = icmp eq v44, v45
|
|
v47 = bint.i32 v46
|
|
brnz v47, ebb56(v33, v14)
|
|
v48 = iconst.i32 0x4ffe
|
|
v49 = icmp.i32 uge v33, v48
|
|
brz v49, ebb5
|
|
trap heap_oob
|
|
|
|
ebb5:
|
|
v50 = uextend.i64 v33
|
|
v51 = iadd_imm.i64 v0, -8
|
|
v52 = load.i64 v51
|
|
v53 = iadd v52, v50
|
|
v54 = uload8.i32 v53+1
|
|
v55 = iconst.i32 0
|
|
v56 = icmp eq v54, v55
|
|
v57 = bint.i32 v56
|
|
brnz v57, ebb90(v14, v34)
|
|
v58 = iconst.i32 0x4ffe
|
|
v59 = icmp.i32 uge v2, v58
|
|
brz v59, ebb6
|
|
trap heap_oob
|
|
|
|
ebb6:
|
|
v60 = uextend.i64 v2
|
|
v61 = iadd_imm.i64 v0, -8
|
|
v62 = load.i64 v61
|
|
v63 = iadd v62, v60
|
|
v64 = uload8.i32 v63+2
|
|
v65 = iconst.i32 0
|
|
v66 = icmp eq v64, v65
|
|
v67 = bint.i32 v66
|
|
brnz v67, ebb42
|
|
v68 = iconst.i32 0x4ffe
|
|
v69 = icmp.i32 uge v33, v68
|
|
brz v69, ebb7
|
|
trap heap_oob
|
|
|
|
ebb7:
|
|
v70 = uextend.i64 v33
|
|
v71 = iadd_imm.i64 v0, -8
|
|
v72 = load.i64 v71
|
|
v73 = iadd v72, v70
|
|
v74 = uload8.i32 v73+2
|
|
v75 = iconst.i32 0
|
|
v76 = icmp eq v74, v75
|
|
v77 = bint.i32 v76
|
|
brnz v77, ebb90(v14, v34)
|
|
v78 = iconst.i32 0x4ffe
|
|
v79 = icmp.i32 uge v2, v78
|
|
brz v79, ebb8
|
|
trap heap_oob
|
|
|
|
ebb8:
|
|
v80 = uextend.i64 v2
|
|
v81 = iadd_imm.i64 v0, -8
|
|
v82 = load.i64 v81
|
|
v83 = iadd v82, v80
|
|
v84 = uload8.i32 v83+3
|
|
v85 = iconst.i32 0
|
|
v86 = icmp eq v84, v85
|
|
v87 = bint.i32 v86
|
|
brnz v87, ebb46
|
|
v88 = iconst.i32 0x4ffe
|
|
v89 = icmp.i32 uge v33, v88
|
|
brz v89, ebb9
|
|
trap heap_oob
|
|
|
|
ebb9:
|
|
v90 = uextend.i64 v33
|
|
v91 = iadd_imm.i64 v0, -8
|
|
v92 = load.i64 v91
|
|
v93 = iadd v92, v90
|
|
v94 = uload8.i32 v93+3
|
|
v95 = iconst.i32 0
|
|
v96 = icmp eq v94, v95
|
|
v97 = bint.i32 v96
|
|
brnz v97, ebb90(v14, v34)
|
|
v98 = iconst.i32 0x4ffe
|
|
v99 = icmp.i32 uge v2, v98
|
|
brz v99, ebb10
|
|
trap heap_oob
|
|
|
|
ebb10:
|
|
v100 = uextend.i64 v2
|
|
v101 = iadd_imm.i64 v0, -8
|
|
v102 = load.i64 v101
|
|
v103 = iadd v102, v100
|
|
v104 = uload8.i32 v103+4
|
|
v105 = iconst.i32 0
|
|
v106 = icmp eq v104, v105
|
|
v107 = bint.i32 v106
|
|
brnz v107, ebb54
|
|
v108 = iconst.i32 1
|
|
v109 = iadd.i32 v2, v108
|
|
v110 = iconst.i32 1048
|
|
v111 = iadd.i32 v14, v110
|
|
v112 = iconst.i64 0
|
|
v113 = iconst.i32 0x4ffe
|
|
v114 = icmp uge v111, v113
|
|
brz v114, ebb11
|
|
trap heap_oob
|
|
|
|
ebb11:
|
|
v115 = uextend.i64 v111
|
|
v116 = iadd_imm.i64 v0, -8
|
|
v117 = load.i64 v116
|
|
v118 = iadd v117, v115
|
|
store.i64 v112, v118
|
|
v119 = iconst.i32 1040
|
|
v120 = iadd.i32 v14, v119
|
|
v121 = iconst.i64 0
|
|
v122 = iconst.i32 0x4ffe
|
|
v123 = icmp uge v120, v122
|
|
brz v123, ebb12
|
|
trap heap_oob
|
|
|
|
ebb12:
|
|
v124 = uextend.i64 v120
|
|
v125 = iadd_imm.i64 v0, -8
|
|
v126 = load.i64 v125
|
|
v127 = iadd v126, v124
|
|
store.i64 v121, v127
|
|
v128 = iconst.i64 0
|
|
v129 = iconst.i32 0x4ffe
|
|
v130 = icmp.i32 uge v14, v129
|
|
brz v130, ebb13
|
|
trap heap_oob
|
|
|
|
ebb13:
|
|
v131 = uextend.i64 v14
|
|
v132 = iadd_imm.i64 v0, -8
|
|
v133 = load.i64 v132
|
|
v134 = iadd v133, v131
|
|
store.i64 v128, v134+1032
|
|
v135 = iconst.i64 0
|
|
v136 = iconst.i32 0x4ffe
|
|
v137 = icmp.i32 uge v14, v136
|
|
brz v137, ebb14
|
|
trap heap_oob
|
|
|
|
ebb14:
|
|
v138 = uextend.i64 v14
|
|
v139 = iadd_imm.i64 v0, -8
|
|
v140 = load.i64 v139
|
|
v141 = iadd v140, v138
|
|
store.i64 v135, v141+1024
|
|
v142 = iconst.i32 -1
|
|
jump ebb15(v142, v27)
|
|
|
|
ebb15(v143: i32, v144: i32):
|
|
v145 = iadd.i32 v33, v143
|
|
v146 = iconst.i32 1
|
|
v147 = iadd v145, v146
|
|
v148 = iconst.i32 0x4ffe
|
|
v149 = icmp uge v147, v148
|
|
brz v149, ebb16
|
|
trap heap_oob
|
|
|
|
ebb16:
|
|
v150 = uextend.i64 v147
|
|
v151 = iadd_imm.i64 v0, -8
|
|
v152 = load.i64 v151
|
|
v153 = iadd v152, v150
|
|
v154 = uload8.i32 v153
|
|
v155 = iconst.i32 0
|
|
v156 = icmp eq v154, v155
|
|
v157 = bint.i32 v156
|
|
brnz v157, ebb89(v14)
|
|
v158 = iconst.i32 255
|
|
v159 = band.i32 v144, v158
|
|
v160 = iconst.i32 2
|
|
v161 = ishl v159, v160
|
|
v162 = iadd.i32 v14, v161
|
|
v163 = iconst.i32 2
|
|
v164 = iadd.i32 v143, v163
|
|
v165 = iconst.i32 0x4ffe
|
|
v166 = icmp uge v162, v165
|
|
brz v166, ebb17
|
|
trap heap_oob
|
|
|
|
ebb17:
|
|
v167 = uextend.i64 v162
|
|
v168 = iadd_imm.i64 v0, -8
|
|
v169 = load.i64 v168
|
|
v170 = iadd v169, v167
|
|
store.i32 v164, v170
|
|
v171 = iconst.i32 1024
|
|
v172 = iadd.i32 v14, v171
|
|
v173 = iconst.i32 3
|
|
v174 = ushr.i32 v159, v173
|
|
v175 = iconst.i32 28
|
|
v176 = band v174, v175
|
|
v177 = iadd v172, v176
|
|
v178 = iconst.i32 0x4ffe
|
|
v179 = icmp uge v177, v178
|
|
brz v179, ebb18
|
|
trap heap_oob
|
|
|
|
ebb18:
|
|
v180 = uextend.i64 v177
|
|
v181 = iadd_imm.i64 v0, -8
|
|
v182 = load.i64 v181
|
|
v183 = iadd v182, v180
|
|
v184 = load.i32 v183
|
|
v185 = iconst.i32 1
|
|
v186 = iconst.i32 31
|
|
v187 = band.i32 v144, v186
|
|
v188 = ishl v185, v187
|
|
v189 = bor v184, v188
|
|
v190 = iconst.i32 0x4ffe
|
|
v191 = icmp.i32 uge v177, v190
|
|
brz v191, ebb19
|
|
trap heap_oob
|
|
|
|
ebb19:
|
|
v192 = uextend.i64 v177
|
|
v193 = iadd_imm.i64 v0, -8
|
|
v194 = load.i64 v193
|
|
v195 = iadd v194, v192
|
|
store.i32 v189, v195
|
|
v196 = iadd.i32 v109, v143
|
|
v197 = iconst.i32 1
|
|
v198 = iadd.i32 v143, v197
|
|
v199 = iconst.i32 1
|
|
v200 = iadd v196, v199
|
|
v201 = iconst.i32 0x4ffe
|
|
v202 = icmp uge v200, v201
|
|
brz v202, ebb20
|
|
trap heap_oob
|
|
|
|
ebb20:
|
|
v203 = uextend.i64 v200
|
|
v204 = iadd_imm.i64 v0, -8
|
|
v205 = load.i64 v204
|
|
v206 = iadd v205, v203
|
|
v207 = uload8.i32 v206
|
|
brnz v207, ebb15(v198, v207)
|
|
jump ebb21
|
|
|
|
ebb21:
|
|
v208 = iconst.i32 -1
|
|
v209 = iconst.i32 1
|
|
v210 = iconst.i32 -1
|
|
v211 = iconst.i32 1
|
|
v212 = iconst.i32 1
|
|
v213 = iadd.i32 v198, v212
|
|
v214 = iconst.i32 2
|
|
v215 = icmp ult v213, v214
|
|
v216 = bint.i32 v215
|
|
brnz v216, ebb38(v2, v211, v209, v210, v208, v198, v213, v33, v14)
|
|
v217 = iconst.i32 -1
|
|
v218 = iconst.i32 0
|
|
v219 = iconst.i32 1
|
|
v220 = iconst.i32 1
|
|
v221 = iconst.i32 1
|
|
v222 = copy.i32 v44
|
|
jump ebb22(v217, v221, v44, v220, v218, v219, v213, v222, v198, v33, v14)
|
|
|
|
ebb22(v223: i32, v224: i32, v225: i32, v226: i32, v227: i32, v228: i32, v229: i32, v230: i32, v231: i32, v232: i32, v233: i32):
|
|
v234 = copy v228
|
|
v235 = iadd v223, v224
|
|
v236 = iadd.i32 v2, v235
|
|
v237 = iconst.i32 0x4ffe
|
|
v238 = icmp uge v236, v237
|
|
brz v238, ebb23
|
|
trap heap_oob
|
|
|
|
ebb23:
|
|
v239 = uextend.i64 v236
|
|
v240 = iadd_imm.i64 v0, -8
|
|
v241 = load.i64 v240
|
|
v242 = iadd v241, v239
|
|
v243 = uload8.i32 v242
|
|
v244 = iconst.i32 255
|
|
v245 = band.i32 v225, v244
|
|
v246 = icmp ne v243, v245
|
|
v247 = bint.i32 v246
|
|
brnz v247, ebb24
|
|
v248 = icmp.i32 ne v224, v226
|
|
v249 = bint.i32 v248
|
|
brnz v249, ebb25
|
|
v250 = iadd.i32 v227, v226
|
|
v251 = iconst.i32 1
|
|
jump ebb27(v251, v250, v223, v226)
|
|
|
|
ebb24:
|
|
v252 = icmp.i32 ule v243, v245
|
|
v253 = bint.i32 v252
|
|
brnz v253, ebb26
|
|
v254 = isub.i32 v234, v223
|
|
v255 = iconst.i32 1
|
|
jump ebb27(v255, v234, v223, v254)
|
|
|
|
ebb25:
|
|
v256 = iconst.i32 1
|
|
v257 = iadd.i32 v224, v256
|
|
v258 = copy.i32 v227
|
|
jump ebb27(v257, v258, v223, v226)
|
|
|
|
ebb26:
|
|
v259 = iconst.i32 1
|
|
v260 = iconst.i32 1
|
|
v261 = iadd.i32 v227, v260
|
|
v262 = iconst.i32 1
|
|
v263 = copy.i32 v227
|
|
jump ebb27(v259, v261, v263, v262)
|
|
|
|
ebb27(v264: i32, v265: i32, v266: i32, v267: i32):
|
|
v268 = iadd v264, v265
|
|
v269 = icmp uge v268, v229
|
|
v270 = bint.i32 v269
|
|
brnz v270, ebb29
|
|
v271 = iadd.i32 v2, v268
|
|
v272 = iconst.i32 0x4ffe
|
|
v273 = icmp uge v271, v272
|
|
brz v273, ebb28
|
|
trap heap_oob
|
|
|
|
ebb28:
|
|
v274 = uextend.i64 v271
|
|
v275 = iadd_imm.i64 v0, -8
|
|
v276 = load.i64 v275
|
|
v277 = iadd v276, v274
|
|
v278 = uload8.i32 v277
|
|
v279 = copy.i32 v265
|
|
jump ebb22(v266, v264, v278, v267, v279, v268, v229, v230, v231, v232, v233)
|
|
|
|
ebb29:
|
|
jump ebb30
|
|
|
|
ebb30:
|
|
v280 = iconst.i32 -1
|
|
v281 = iconst.i32 0
|
|
v282 = iconst.i32 1
|
|
v283 = iconst.i32 1
|
|
v284 = iconst.i32 1
|
|
jump ebb31(v280, v284, v230, v283, v281, v282, v229, v267, v266, v231, v232, v233)
|
|
|
|
ebb31(v285: i32, v286: i32, v287: i32, v288: i32, v289: i32, v290: i32, v291: i32, v292: i32, v293: i32, v294: i32, v295: i32, v296: i32):
|
|
v297 = copy v290
|
|
v298 = iadd v285, v286
|
|
v299 = iadd.i32 v2, v298
|
|
v300 = iconst.i32 0x4ffe
|
|
v301 = icmp uge v299, v300
|
|
brz v301, ebb32
|
|
trap heap_oob
|
|
|
|
ebb32:
|
|
v302 = uextend.i64 v299
|
|
v303 = iadd_imm.i64 v0, -8
|
|
v304 = load.i64 v303
|
|
v305 = iadd v304, v302
|
|
v306 = uload8.i32 v305
|
|
v307 = iconst.i32 255
|
|
v308 = band.i32 v287, v307
|
|
v309 = icmp ne v306, v308
|
|
v310 = bint.i32 v309
|
|
brnz v310, ebb33
|
|
v311 = icmp.i32 ne v286, v288
|
|
v312 = bint.i32 v311
|
|
brnz v312, ebb34
|
|
v313 = iadd.i32 v289, v288
|
|
v314 = iconst.i32 1
|
|
jump ebb36(v314, v313, v285, v288)
|
|
|
|
ebb33:
|
|
v315 = icmp.i32 uge v306, v308
|
|
v316 = bint.i32 v315
|
|
brnz v316, ebb35
|
|
v317 = isub.i32 v297, v285
|
|
v318 = iconst.i32 1
|
|
jump ebb36(v318, v297, v285, v317)
|
|
|
|
ebb34:
|
|
v319 = iconst.i32 1
|
|
v320 = iadd.i32 v286, v319
|
|
v321 = copy.i32 v289
|
|
jump ebb36(v320, v321, v285, v288)
|
|
|
|
ebb35:
|
|
v322 = iconst.i32 1
|
|
v323 = iconst.i32 1
|
|
v324 = iadd.i32 v289, v323
|
|
v325 = iconst.i32 1
|
|
v326 = copy.i32 v289
|
|
jump ebb36(v322, v324, v326, v325)
|
|
|
|
ebb36(v327: i32, v328: i32, v329: i32, v330: i32):
|
|
v331 = iadd v327, v328
|
|
v332 = icmp uge v331, v291
|
|
v333 = bint.i32 v332
|
|
brnz v333, ebb38(v2, v330, v292, v329, v293, v294, v291, v295, v296)
|
|
v334 = iadd.i32 v2, v331
|
|
v335 = iconst.i32 0x4ffe
|
|
v336 = icmp uge v334, v335
|
|
brz v336, ebb37
|
|
trap heap_oob
|
|
|
|
ebb37:
|
|
v337 = uextend.i64 v334
|
|
v338 = iadd_imm.i64 v0, -8
|
|
v339 = load.i64 v338
|
|
v340 = iadd v339, v337
|
|
v341 = uload8.i32 v340
|
|
v342 = copy.i32 v328
|
|
jump ebb31(v329, v327, v341, v330, v342, v331, v291, v292, v293, v294, v295, v296)
|
|
|
|
ebb38(v343: i32, v344: i32, v345: i32, v346: i32, v347: i32, v348: i32, v349: i32, v350: i32, v351: i32):
|
|
v352 = iconst.i32 1
|
|
v353 = iadd v346, v352
|
|
v354 = iconst.i32 1
|
|
v355 = iadd v347, v354
|
|
v356 = icmp ugt v353, v355
|
|
v357 = bint.i32 v356
|
|
brnz v357, ebb39(v344)
|
|
v358 = copy v345
|
|
jump ebb39(v358)
|
|
|
|
ebb39(v359: i32):
|
|
v360 = iadd.i32 v343, v359
|
|
brnz.i32 v357, ebb40(v346)
|
|
v361 = copy.i32 v347
|
|
jump ebb40(v361)
|
|
|
|
ebb40(v362: i32):
|
|
v363 = iconst.i32 1
|
|
v364 = iadd v362, v363
|
|
v365 = call fn1(v0, v343, v360, v364)
|
|
v366 = iconst.i32 0
|
|
v367 = icmp eq v365, v366
|
|
v368 = bint.i32 v367
|
|
brnz v368, ebb63
|
|
v369 = iconst.i32 1
|
|
v370 = iadd v362, v369
|
|
v371 = isub.i32 v348, v370
|
|
v372 = iconst.i32 1
|
|
v373 = iadd v371, v372
|
|
v374 = icmp ugt v362, v373
|
|
v375 = bint.i32 v374
|
|
v376 = copy v362
|
|
brnz v375, ebb41(v376)
|
|
v377 = copy v373
|
|
jump ebb41(v377)
|
|
|
|
ebb41(v378: i32):
|
|
v379 = iconst.i32 1
|
|
v380 = iadd v378, v379
|
|
v381 = iconst.i32 0
|
|
jump ebb64(v380, v381)
|
|
|
|
ebb42:
|
|
v382 = iconst.i32 8
|
|
v383 = ishl.i32 v29, v382
|
|
v384 = bor v383, v44
|
|
v385 = iconst.i32 0x4ffe
|
|
v386 = icmp.i32 uge v33, v385
|
|
brz v386, ebb43
|
|
trap heap_oob
|
|
|
|
ebb43:
|
|
v387 = uextend.i64 v33
|
|
v388 = iadd_imm.i64 v0, -8
|
|
v389 = load.i64 v388
|
|
v390 = iadd v389, v387
|
|
v391 = uload8.i32 v390
|
|
jump ebb44(v391, v54, v33)
|
|
|
|
ebb44(v392: i32, v393: i32, v394: i32):
|
|
v395 = iconst.i32 8
|
|
v396 = ishl v392, v395
|
|
v397 = iconst.i32 0xff00
|
|
v398 = band v396, v397
|
|
v399 = iconst.i32 255
|
|
v400 = band v393, v399
|
|
v401 = bor v398, v400
|
|
v402 = icmp eq v401, v384
|
|
v403 = bint.i32 v402
|
|
brnz v403, ebb56(v394, v14)
|
|
v404 = iconst.i32 2
|
|
v405 = iadd v394, v404
|
|
v406 = iconst.i32 1
|
|
v407 = iadd v394, v406
|
|
v408 = iconst.i32 0x4ffe
|
|
v409 = icmp uge v405, v408
|
|
brz v409, ebb45
|
|
trap heap_oob
|
|
|
|
ebb45:
|
|
v410 = uextend.i64 v405
|
|
v411 = iadd_imm.i64 v0, -8
|
|
v412 = load.i64 v411
|
|
v413 = iadd v412, v410
|
|
v414 = uload8.i32 v413
|
|
brnz v414, ebb44(v401, v414, v407)
|
|
jump ebb90(v14, v34)
|
|
|
|
ebb46:
|
|
v415 = iconst.i32 8
|
|
v416 = ishl.i32 v74, v415
|
|
v417 = iconst.i32 16
|
|
v418 = ishl.i32 v54, v417
|
|
v419 = bor v416, v418
|
|
v420 = iconst.i32 0x4ffe
|
|
v421 = icmp.i32 uge v33, v420
|
|
brz v421, ebb47
|
|
trap heap_oob
|
|
|
|
ebb47:
|
|
v422 = uextend.i64 v33
|
|
v423 = iadd_imm.i64 v0, -8
|
|
v424 = load.i64 v423
|
|
v425 = iadd v424, v422
|
|
v426 = uload8.i32 v425
|
|
v427 = iconst.i32 24
|
|
v428 = ishl v426, v427
|
|
v429 = bor.i32 v419, v428
|
|
v430 = iconst.i32 16
|
|
v431 = ishl.i32 v44, v430
|
|
v432 = iconst.i32 24
|
|
v433 = ishl.i32 v29, v432
|
|
v434 = bor v431, v433
|
|
v435 = iconst.i32 8
|
|
v436 = ishl.i32 v64, v435
|
|
v437 = bor v434, v436
|
|
v438 = icmp eq v429, v437
|
|
v439 = bint.i32 v438
|
|
brnz v439, ebb56(v33, v14)
|
|
jump ebb48(v33, v429)
|
|
|
|
ebb48(v440: i32, v441: i32):
|
|
v442 = iconst.i32 1
|
|
v443 = iadd v440, v442
|
|
v444 = iconst.i32 3
|
|
v445 = iadd v440, v444
|
|
v446 = iconst.i32 0x4ffe
|
|
v447 = icmp uge v445, v446
|
|
brz v447, ebb49
|
|
trap heap_oob
|
|
|
|
ebb49:
|
|
v448 = uextend.i64 v445
|
|
v449 = iadd_imm.i64 v0, -8
|
|
v450 = load.i64 v449
|
|
v451 = iadd v450, v448
|
|
v452 = uload8.i32 v451
|
|
v453 = iconst.i32 0
|
|
v454 = icmp eq v452, v453
|
|
v455 = bint.i32 v454
|
|
brnz v455, ebb51(v14)
|
|
v456 = bor.i32 v441, v452
|
|
v457 = iconst.i32 8
|
|
v458 = ishl v456, v457
|
|
v459 = icmp ne v458, v437
|
|
v460 = bint.i32 v459
|
|
v461 = copy.i32 v443
|
|
brnz v460, ebb48(v461, v458)
|
|
jump ebb50
|
|
|
|
ebb50:
|
|
jump ebb51(v14)
|
|
|
|
ebb51(v462: i32):
|
|
v463 = iconst.i32 0
|
|
v464 = iconst.i32 1056
|
|
v465 = iadd v462, v464
|
|
v466 = iconst.i32 0x4ffe
|
|
v467 = icmp uge v463, v466
|
|
brz v467, ebb52
|
|
trap heap_oob
|
|
|
|
ebb52:
|
|
v468 = uextend.i64 v463
|
|
v469 = iadd_imm.i64 v0, -8
|
|
v470 = load.i64 v469
|
|
v471 = iadd v470, v468
|
|
store.i32 v465, v471+4
|
|
v472 = iconst.i32 0
|
|
brnz.i32 v452, ebb53(v443)
|
|
v473 = copy v472
|
|
jump ebb53(v473)
|
|
|
|
ebb53(v474: i32):
|
|
return v474
|
|
|
|
ebb54:
|
|
v475 = iconst.i32 8
|
|
v476 = ishl.i32 v74, v475
|
|
v477 = iconst.i32 16
|
|
v478 = ishl.i32 v54, v477
|
|
v479 = bor v476, v478
|
|
v480 = bor v479, v94
|
|
v481 = iconst.i32 0x4ffe
|
|
v482 = icmp.i32 uge v33, v481
|
|
brz v482, ebb55
|
|
trap heap_oob
|
|
|
|
ebb55:
|
|
v483 = uextend.i64 v33
|
|
v484 = iadd_imm.i64 v0, -8
|
|
v485 = load.i64 v484
|
|
v486 = iadd v485, v483
|
|
v487 = uload8.i32 v486
|
|
v488 = iconst.i32 24
|
|
v489 = ishl v487, v488
|
|
v490 = bor.i32 v480, v489
|
|
v491 = iconst.i32 16
|
|
v492 = ishl.i32 v44, v491
|
|
v493 = iconst.i32 24
|
|
v494 = ishl.i32 v29, v493
|
|
v495 = bor v492, v494
|
|
v496 = iconst.i32 8
|
|
v497 = ishl.i32 v64, v496
|
|
v498 = bor v495, v497
|
|
v499 = bor v498, v84
|
|
v500 = icmp ne v490, v499
|
|
v501 = bint.i32 v500
|
|
brnz v501, ebb57
|
|
jump ebb56(v33, v14)
|
|
|
|
ebb56(v502: i32, v503: i32):
|
|
v504 = copy v502
|
|
jump ebb90(v503, v504)
|
|
|
|
ebb57:
|
|
jump ebb58(v33, v490)
|
|
|
|
ebb58(v505: i32, v506: i32):
|
|
v507 = iconst.i32 4
|
|
v508 = iadd v505, v507
|
|
v509 = iconst.i32 1
|
|
v510 = iadd v505, v509
|
|
v511 = iconst.i32 0x4ffe
|
|
v512 = icmp uge v508, v511
|
|
brz v512, ebb59
|
|
trap heap_oob
|
|
|
|
ebb59:
|
|
v513 = uextend.i64 v508
|
|
v514 = iadd_imm.i64 v0, -8
|
|
v515 = load.i64 v514
|
|
v516 = iadd v515, v513
|
|
v517 = uload8.i32 v516
|
|
v518 = iconst.i32 0
|
|
v519 = icmp eq v517, v518
|
|
v520 = bint.i32 v519
|
|
brnz v520, ebb61(v14)
|
|
v521 = iconst.i32 8
|
|
v522 = ishl.i32 v506, v521
|
|
v523 = bor v522, v517
|
|
v524 = icmp ne v523, v499
|
|
v525 = bint.i32 v524
|
|
brnz v525, ebb58(v510, v523)
|
|
jump ebb60
|
|
|
|
ebb60:
|
|
jump ebb61(v14)
|
|
|
|
ebb61(v526: i32):
|
|
v527 = iconst.i32 0
|
|
brnz.i32 v517, ebb62(v510)
|
|
v528 = copy v527
|
|
jump ebb62(v528)
|
|
|
|
ebb62(v529: i32):
|
|
v530 = copy v529
|
|
jump ebb90(v526, v530)
|
|
|
|
ebb63:
|
|
v531 = isub.i32 v348, v359
|
|
v532 = iconst.i32 1
|
|
v533 = iadd v531, v532
|
|
jump ebb64(v359, v533)
|
|
|
|
ebb64(v534: i32, v535: i32):
|
|
v536 = iconst.i32 1
|
|
v537 = iadd.i32 v343, v536
|
|
v538 = iconst.i32 0
|
|
v539 = isub v538, v362
|
|
v540 = iconst.i32 63
|
|
v541 = bor.i32 v349, v540
|
|
v542 = isub.i32 v348, v534
|
|
v543 = iconst.i32 1
|
|
v544 = iadd v542, v543
|
|
v545 = iconst.i32 0
|
|
v546 = copy.i32 v350
|
|
jump ebb65(v350, v546, v349, v541, v348, v351, v544, v534, v545, v535, v343, v364, v537, v539, v362)
|
|
|
|
ebb65(v547: i32, v548: i32, v549: i32, v550: i32, v551: i32, v552: i32, v553: i32, v554: i32, v555: i32, v556: i32, v557: i32, v558: i32, v559: i32, v560: i32, v561: i32):
|
|
v562 = copy v556
|
|
v563 = isub v547, v548
|
|
v564 = icmp uge v563, v549
|
|
v565 = bint.i32 v564
|
|
brnz v565, ebb67(v547)
|
|
v566 = iconst.i32 0
|
|
v567 = call fn2(v0, v547, v566, v550)
|
|
brnz v567, ebb66
|
|
v568 = iadd v547, v550
|
|
jump ebb67(v568)
|
|
|
|
ebb66:
|
|
v569 = isub.i32 v567, v548
|
|
v570 = icmp ult v569, v549
|
|
v571 = bint.i32 v570
|
|
brnz v571, ebb89(v552)
|
|
v572 = copy.i32 v567
|
|
jump ebb67(v572)
|
|
|
|
ebb67(v573: i32):
|
|
v574 = iconst.i32 1
|
|
v575 = iadd.i32 v548, v551
|
|
v576 = iconst.i32 0x4ffe
|
|
v577 = icmp uge v575, v576
|
|
brz v577, ebb68
|
|
trap heap_oob
|
|
|
|
ebb68:
|
|
v578 = uextend.i64 v575
|
|
v579 = iadd_imm.i64 v0, -8
|
|
v580 = load.i64 v579
|
|
v581 = iadd v580, v578
|
|
v582 = uload8.i32 v581
|
|
v583 = iconst.i32 31
|
|
v584 = band v582, v583
|
|
v585 = ishl.i32 v574, v584
|
|
v586 = iconst.i32 1024
|
|
v587 = iadd.i32 v552, v586
|
|
v588 = iconst.i32 3
|
|
v589 = ushr v582, v588
|
|
v590 = iconst.i32 28
|
|
v591 = band v589, v590
|
|
v592 = iadd v587, v591
|
|
v593 = iconst.i32 0x4ffe
|
|
v594 = icmp uge v592, v593
|
|
brz v594, ebb69
|
|
trap heap_oob
|
|
|
|
ebb69:
|
|
v595 = uextend.i64 v592
|
|
v596 = iadd_imm.i64 v0, -8
|
|
v597 = load.i64 v596
|
|
v598 = iadd v597, v595
|
|
v599 = load.i32 v598
|
|
v600 = band.i32 v585, v599
|
|
v601 = iconst.i32 0
|
|
v602 = icmp eq v600, v601
|
|
v603 = bint.i32 v602
|
|
brnz v603, ebb74
|
|
v604 = iconst.i32 2
|
|
v605 = ishl.i32 v582, v604
|
|
v606 = iadd.i32 v552, v605
|
|
v607 = iconst.i32 0x4ffe
|
|
v608 = icmp uge v606, v607
|
|
brz v608, ebb70
|
|
trap heap_oob
|
|
|
|
ebb70:
|
|
v609 = uextend.i64 v606
|
|
v610 = iadd_imm.i64 v0, -8
|
|
v611 = load.i64 v610
|
|
v612 = iadd v611, v609
|
|
v613 = load.i32 v612
|
|
v614 = isub.i32 v551, v613
|
|
v615 = iconst.i32 -1
|
|
v616 = icmp eq v614, v615
|
|
v617 = bint.i32 v616
|
|
brnz v617, ebb75
|
|
v618 = iconst.i32 1
|
|
v619 = iadd v614, v618
|
|
v620 = icmp ult v619, v554
|
|
v621 = bint.i32 v620
|
|
v622 = copy.i32 v553
|
|
brnz v621, ebb71(v622)
|
|
v623 = copy v619
|
|
jump ebb71(v623)
|
|
|
|
ebb71(v624: i32):
|
|
v625 = copy v624
|
|
brnz.i32 v555, ebb72(v625)
|
|
jump ebb72(v619)
|
|
|
|
ebb72(v626: i32):
|
|
brnz.i32 v562, ebb73(v626)
|
|
jump ebb73(v619)
|
|
|
|
ebb73(v627: i32):
|
|
v628 = copy.i32 v554
|
|
v629 = copy.i32 v562
|
|
jump ebb87(v548, v627, v573, v549, v550, v551, v552, v553, v628, v629, v557, v558, v559, v560, v561)
|
|
|
|
ebb74:
|
|
v630 = copy.i32 v549
|
|
v631 = copy.i32 v554
|
|
v632 = copy.i32 v562
|
|
jump ebb87(v548, v630, v573, v549, v550, v551, v552, v553, v631, v632, v557, v558, v559, v560, v561)
|
|
|
|
ebb75:
|
|
v633 = icmp.i32 ugt v558, v555
|
|
v634 = bint.i32 v633
|
|
v635 = copy.i32 v558
|
|
brnz v634, ebb76(v635)
|
|
v636 = copy.i32 v555
|
|
jump ebb76(v636)
|
|
|
|
ebb76(v637: i32):
|
|
v638 = iadd.i32 v557, v637
|
|
v639 = iconst.i32 0x4ffe
|
|
v640 = icmp uge v638, v639
|
|
brz v640, ebb77
|
|
trap heap_oob
|
|
|
|
ebb77:
|
|
v641 = uextend.i64 v638
|
|
v642 = iadd_imm.i64 v0, -8
|
|
v643 = load.i64 v642
|
|
v644 = iadd v643, v641
|
|
v645 = uload8.i32 v644
|
|
v646 = iconst.i32 0
|
|
v647 = icmp eq v645, v646
|
|
v648 = bint.i32 v647
|
|
brnz v648, ebb82(v548, v549, v551, v552)
|
|
v649 = iadd.i32 v548, v637
|
|
v650 = iadd.i32 v559, v637
|
|
v651 = iadd.i32 v560, v637
|
|
jump ebb78(v645, v649, v651, v650)
|
|
|
|
ebb78(v652: i32, v653: i32, v654: i32, v655: i32):
|
|
v656 = iconst.i32 255
|
|
v657 = band v652, v656
|
|
v658 = iconst.i32 0x4ffe
|
|
v659 = icmp uge v653, v658
|
|
brz v659, ebb79
|
|
trap heap_oob
|
|
|
|
ebb79:
|
|
v660 = uextend.i64 v653
|
|
v661 = iadd_imm.i64 v0, -8
|
|
v662 = load.i64 v661
|
|
v663 = iadd v662, v660
|
|
v664 = uload8.i32 v663
|
|
v665 = icmp.i32 ne v657, v664
|
|
v666 = bint.i32 v665
|
|
v667 = copy.i32 v554
|
|
v668 = copy.i32 v562
|
|
brnz v666, ebb87(v548, v654, v573, v549, v550, v551, v552, v553, v667, v668, v557, v558, v559, v560, v561)
|
|
v669 = iconst.i32 1
|
|
v670 = iadd.i32 v653, v669
|
|
v671 = iconst.i32 1
|
|
v672 = iadd.i32 v654, v671
|
|
v673 = iconst.i32 0x4ffe
|
|
v674 = icmp.i32 uge v655, v673
|
|
brz v674, ebb80
|
|
trap heap_oob
|
|
|
|
ebb80:
|
|
v675 = uextend.i64 v655
|
|
v676 = iadd_imm.i64 v0, -8
|
|
v677 = load.i64 v676
|
|
v678 = iadd v677, v675
|
|
v679 = uload8.i32 v678
|
|
v680 = iconst.i32 1
|
|
v681 = iadd.i32 v655, v680
|
|
brnz v679, ebb78(v679, v670, v672, v681)
|
|
jump ebb81
|
|
|
|
ebb81:
|
|
jump ebb82(v548, v549, v551, v552)
|
|
|
|
ebb82(v682: i32, v683: i32, v684: i32, v685: i32):
|
|
v686 = icmp.i32 ule v558, v555
|
|
v687 = bint.i32 v686
|
|
brnz v687, ebb90(v685, v682)
|
|
v688 = copy.i32 v561
|
|
jump ebb83(v688)
|
|
|
|
ebb83(v689: i32):
|
|
v690 = iadd.i32 v557, v689
|
|
v691 = iconst.i32 0x4ffe
|
|
v692 = icmp uge v690, v691
|
|
brz v692, ebb84
|
|
trap heap_oob
|
|
|
|
ebb84:
|
|
v693 = uextend.i64 v690
|
|
v694 = iadd_imm.i64 v0, -8
|
|
v695 = load.i64 v694
|
|
v696 = iadd v695, v693
|
|
v697 = uload8.i32 v696
|
|
v698 = iadd.i32 v682, v689
|
|
v699 = iconst.i32 0x4ffe
|
|
v700 = icmp uge v698, v699
|
|
brz v700, ebb85
|
|
trap heap_oob
|
|
|
|
ebb85:
|
|
v701 = uextend.i64 v698
|
|
v702 = iadd_imm.i64 v0, -8
|
|
v703 = load.i64 v702
|
|
v704 = iadd v703, v701
|
|
v705 = uload8.i32 v704
|
|
v706 = icmp.i32 ne v697, v705
|
|
v707 = bint.i32 v706
|
|
brnz v707, ebb86
|
|
v708 = icmp.i32 ule v689, v555
|
|
v709 = bint.i32 v708
|
|
v710 = iconst.i32 -1
|
|
v711 = iadd.i32 v689, v710
|
|
v712 = iconst.i32 0
|
|
v713 = icmp eq v709, v712
|
|
v714 = bint.i32 v713
|
|
brnz v714, ebb83(v711)
|
|
jump ebb90(v685, v682)
|
|
|
|
ebb86:
|
|
v715 = copy.i32 v554
|
|
v716 = copy.i32 v562
|
|
jump ebb88(v682, v554, v573, v683, v550, v684, v685, v553, v715, v562, v716, v557, v558, v559, v560, v561)
|
|
|
|
ebb87(v717: i32, v718: i32, v719: i32, v720: i32, v721: i32, v722: i32, v723: i32, v724: i32, v725: i32, v726: i32, v727: i32, v728: i32, v729: i32, v730: i32, v731: i32):
|
|
v732 = copy v718
|
|
v733 = iconst.i32 0
|
|
jump ebb88(v717, v732, v719, v720, v721, v722, v723, v724, v725, v733, v726, v727, v728, v729, v730, v731)
|
|
|
|
ebb88(v734: i32, v735: i32, v736: i32, v737: i32, v738: i32, v739: i32, v740: i32, v741: i32, v742: i32, v743: i32, v744: i32, v745: i32, v746: i32, v747: i32, v748: i32, v749: i32):
|
|
v750 = iadd v734, v735
|
|
v751 = copy v742
|
|
v752 = copy v743
|
|
v753 = copy v744
|
|
jump ebb65(v736, v750, v737, v738, v739, v740, v741, v751, v752, v753, v745, v746, v747, v748, v749)
|
|
|
|
ebb89(v754: i32):
|
|
v755 = iconst.i32 0
|
|
jump ebb90(v754, v755)
|
|
|
|
ebb90(v756: i32, v757: i32):
|
|
v758 = iconst.i32 0
|
|
v759 = iconst.i32 1056
|
|
v760 = iadd v756, v759
|
|
v761 = iconst.i32 0x4ffe
|
|
v762 = icmp uge v758, v761
|
|
brz v762, ebb91
|
|
trap heap_oob
|
|
|
|
ebb91:
|
|
v763 = uextend.i64 v758
|
|
v764 = iadd_imm.i64 v0, -8
|
|
v765 = load.i64 v764
|
|
v766 = iadd v765, v763
|
|
store.i32 v760, v766+4
|
|
jump ebb92(v757)
|
|
|
|
ebb92(v767: i32):
|
|
return v767
|
|
}
|
|
|
|
; Same problem from musl.wasm.
|
|
function %musl(f64 [%xmm0], i64 vmctx [%rdi]) -> f64 [%xmm0] system_v {
|
|
gv0 = vmctx
|
|
heap0 = static gv0, min 0, bound 0x0001_0000_0000, guard 0x8000_0000
|
|
sig0 = (f64 [%xmm0], i32 [%rdi], i64 vmctx [%rsi]) -> f64 [%xmm0] system_v
|
|
fn0 = u0:517 sig0
|
|
|
|
ebb0(v0: f64, v1: i64):
|
|
v3 = iconst.i64 0
|
|
v4 = iconst.i32 0
|
|
v131 = iconst.i64 0
|
|
v5 = bitcast.f64 v131
|
|
v6 = iconst.i32 0
|
|
v7 = iconst.i32 0
|
|
v8 = iconst.i32 0
|
|
v132 = uextend.i64 v8
|
|
v133 = iadd_imm v1, 0
|
|
v134 = load.i64 v133
|
|
v9 = iadd v134, v132
|
|
v10 = load.i32 v9+4
|
|
v11 = iconst.i32 16
|
|
v12 = isub v10, v11
|
|
v135 = uextend.i64 v7
|
|
v136 = iadd_imm v1, 0
|
|
v137 = load.i64 v136
|
|
v13 = iadd v137, v135
|
|
store v12, v13+4
|
|
v14 = bitcast.i64 v0
|
|
v15 = iconst.i64 63
|
|
v16 = ushr v14, v15
|
|
v17 = ireduce.i32 v16
|
|
v18 = iconst.i64 32
|
|
v19 = ushr v14, v18
|
|
v20 = ireduce.i32 v19
|
|
v21 = iconst.i32 0x7fff_ffff
|
|
v22 = band v20, v21
|
|
v23 = iconst.i32 0x4086_232b
|
|
v24 = icmp ult v22, v23
|
|
v25 = bint.i32 v24
|
|
brnz v25, ebb10
|
|
v26 = iconst.i64 0x7fff_ffff_ffff_ffff
|
|
v27 = band v14, v26
|
|
v28 = iconst.i64 0x7ff0_0000_0000_0000
|
|
v29 = icmp ule v27, v28
|
|
v30 = bint.i32 v29
|
|
brnz v30, ebb9
|
|
jump ebb2(v12, v0)
|
|
|
|
ebb10:
|
|
v31 = iconst.i32 0x3fd6_2e43
|
|
v32 = icmp.i32 ult v22, v31
|
|
v33 = bint.i32 v32
|
|
brnz v33, ebb8
|
|
v34 = iconst.i32 0x3ff0_a2b2
|
|
v35 = icmp.i32 uge v22, v34
|
|
v36 = bint.i32 v35
|
|
brnz v36, ebb6
|
|
v37 = iconst.i32 1
|
|
v38 = bxor.i32 v17, v37
|
|
v39 = isub v38, v17
|
|
jump ebb5(v0, v39)
|
|
|
|
ebb9:
|
|
v138 = iconst.i64 0x4086_2e42_fefa_39ef
|
|
v40 = bitcast.f64 v138
|
|
v41 = fcmp ge v40, v0
|
|
v42 = bint.i32 v41
|
|
v139 = fcmp.f64 uno v0, v0
|
|
v140 = fcmp.f64 one v0, v0
|
|
v43 = bor v139, v140
|
|
v44 = bint.i32 v43
|
|
v45 = bor v42, v44
|
|
brnz v45, ebb7
|
|
v141 = iconst.i64 0x7fe0_0000_0000_0000
|
|
v46 = bitcast.f64 v141
|
|
v47 = fmul.f64 v0, v46
|
|
jump ebb2(v12, v47)
|
|
|
|
ebb8:
|
|
v48 = iconst.i32 0x3e30_0000
|
|
v49 = icmp.i32 ule v22, v48
|
|
v50 = bint.i32 v49
|
|
brnz v50, ebb3
|
|
v51 = iconst.i32 0
|
|
v142 = iconst.i64 0
|
|
v52 = bitcast.f64 v142
|
|
v178 = copy.f64 v0
|
|
jump ebb4(v0, v178, v52, v51)
|
|
|
|
ebb7:
|
|
v143 = iconst.i64 0xc086_232b_dd7a_bcd2
|
|
v53 = bitcast.f64 v143
|
|
v54 = fcmp.f64 ge v0, v53
|
|
v55 = bint.i32 v54
|
|
v56 = bor v55, v44
|
|
brnz v56, ebb6
|
|
v144 = iconst.i64 0xb6a0_0000_0000_0000
|
|
v57 = bitcast.f64 v144
|
|
v58 = fdiv v57, v0
|
|
v59 = fdemote.f32 v58
|
|
v145 = uextend.i64 v12
|
|
v146 = iadd_imm.i64 v1, 0
|
|
v147 = load.i64 v146
|
|
v60 = iadd v147, v145
|
|
store v59, v60+12
|
|
v148 = iconst.i64 0
|
|
v61 = bitcast.f64 v148
|
|
v149 = iconst.i64 0xc087_4910_d52d_3051
|
|
v62 = bitcast.f64 v149
|
|
v63 = fcmp gt v62, v0
|
|
v64 = bint.i32 v63
|
|
brnz v64, ebb2(v12, v61)
|
|
jump ebb6
|
|
|
|
ebb6:
|
|
v150 = iconst.i64 0x3ff7_1547_652b_82fe
|
|
v66 = bitcast.f64 v150
|
|
v67 = fmul.f64 v0, v66
|
|
v69 = iconst.i32 3
|
|
v70 = ishl.i32 v17, v69
|
|
v71 = iconst.i32 5040
|
|
v72 = iadd v70, v71
|
|
v151 = uextend.i64 v72
|
|
v152 = iadd_imm.i64 v1, 0
|
|
v153 = load.i64 v152
|
|
v73 = iadd v153, v151
|
|
v74 = load.f64 v73
|
|
v75 = fadd v67, v74
|
|
v76 = x86_cvtt2si.i32 v75
|
|
v158 = iconst.i32 0x8000_0000
|
|
v154 = icmp ne v76, v158
|
|
brnz v154, ebb11
|
|
v155 = fcmp uno v75, v75
|
|
brz v155, ebb12
|
|
trap bad_toint
|
|
|
|
ebb12:
|
|
v159 = iconst.i64 0xc1e0_0000_0020_0000
|
|
v156 = bitcast.f64 v159
|
|
v157 = fcmp ge v156, v75
|
|
brz v157, ebb13
|
|
trap int_ovf
|
|
|
|
ebb13:
|
|
jump ebb11
|
|
|
|
ebb11:
|
|
jump ebb5(v0, v76)
|
|
|
|
ebb5(v77: f64, v78: i32):
|
|
v79 = fcvt_from_sint.f64 v78
|
|
v160 = iconst.i64 0xbfe6_2e42_fee0_0000
|
|
v80 = bitcast.f64 v160
|
|
v81 = fmul v79, v80
|
|
v82 = fadd v77, v81
|
|
v161 = iconst.i64 0x3dea_39ef_3579_3c76
|
|
v83 = bitcast.f64 v161
|
|
v84 = fmul v79, v83
|
|
v85 = fsub v82, v84
|
|
jump ebb4(v82, v85, v84, v78)
|
|
|
|
ebb4(v86: f64, v87: f64, v108: f64, v113: i32):
|
|
v88 = fmul v87, v87
|
|
v162 = iconst.i64 0x3e66_3769_72be_a4d0
|
|
v89 = bitcast.f64 v162
|
|
v90 = fmul v88, v89
|
|
v163 = iconst.i64 0xbebb_bd41_c5d2_6bf1
|
|
v91 = bitcast.f64 v163
|
|
v92 = fadd v90, v91
|
|
v93 = fmul v88, v92
|
|
v164 = iconst.i64 0x3f11_566a_af25_de2c
|
|
v94 = bitcast.f64 v164
|
|
v95 = fadd v93, v94
|
|
v96 = fmul v88, v95
|
|
v165 = iconst.i64 0xbf66_c16c_16be_bd93
|
|
v97 = bitcast.f64 v165
|
|
v98 = fadd v96, v97
|
|
v99 = fmul v88, v98
|
|
v166 = iconst.i64 0x3fc5_5555_5555_553e
|
|
v100 = bitcast.f64 v166
|
|
v101 = fadd v99, v100
|
|
v102 = fmul v88, v101
|
|
v103 = fsub v87, v102
|
|
v104 = fmul v87, v103
|
|
v167 = iconst.i64 0x4000_0000_0000_0000
|
|
v105 = bitcast.f64 v167
|
|
v106 = fsub v105, v103
|
|
v107 = fdiv v104, v106
|
|
v109 = fsub v107, v108
|
|
v110 = fadd v86, v109
|
|
v168 = iconst.i64 0x3ff0_0000_0000_0000
|
|
v111 = bitcast.f64 v168
|
|
v112 = fadd v110, v111
|
|
v169 = iconst.i32 0
|
|
v114 = icmp eq v113, v169
|
|
v115 = bint.i32 v114
|
|
brnz v115, ebb2(v12, v112)
|
|
v116 = call fn0(v112, v113, v1)
|
|
jump ebb2(v12, v116)
|
|
|
|
ebb3:
|
|
v170 = iconst.i64 0x7fe0_0000_0000_0000
|
|
v117 = bitcast.f64 v170
|
|
v118 = fadd.f64 v0, v117
|
|
v171 = uextend.i64 v12
|
|
v172 = iadd_imm.i64 v1, 0
|
|
v173 = load.i64 v172
|
|
v119 = iadd v173, v171
|
|
store v118, v119
|
|
v174 = iconst.i64 0x3ff0_0000_0000_0000
|
|
v120 = bitcast.f64 v174
|
|
v121 = fadd.f64 v0, v120
|
|
jump ebb2(v12, v121)
|
|
|
|
ebb2(v123: i32, v130: f64):
|
|
v122 = iconst.i32 0
|
|
v127 = iconst.i32 16
|
|
v128 = iadd v123, v127
|
|
v175 = uextend.i64 v122
|
|
v176 = iadd_imm.i64 v1, 0
|
|
v177 = load.i64 v176
|
|
v129 = iadd v177, v175
|
|
store v128, v129+4
|
|
jump ebb1(v130)
|
|
|
|
ebb1(v2: f64):
|
|
return v2
|
|
}
|