1264 lines
30 KiB
Plaintext
1264 lines
30 KiB
Plaintext
test regalloc
|
|
set is_64bit
|
|
isa intel 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 native {
|
|
gv0 = vmctx-8
|
|
heap0 = static gv0, min 0, bound 0x5000, guard 0x0040_0000
|
|
sig0 = (i64 vmctx, i32, i32) -> i32 native
|
|
sig1 = (i64 vmctx, i32, i32, i32) -> i32 native
|
|
sig2 = (i64 vmctx, i32, i32, i32) -> i32 native
|
|
fn0 = sig0 u0:2
|
|
fn1 = sig1 u0:0
|
|
fn2 = sig2 u0:1
|
|
|
|
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] native {
|
|
gv0 = vmctx
|
|
heap0 = static gv0, min 0, bound 0x0001_0000_0000, guard 0x8000_0000
|
|
sig0 = (f64 [%xmm0], i32 [%rdi], i64 vmctx [%rsi]) -> f64 [%xmm0] native
|
|
fn0 = sig0 u0:517
|
|
|
|
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
|
|
}
|