Files
wasmtime/cranelift/filetests/filetests/runtests/issue5569.clif
Chris Fallin 230e2135d6 Cranelift: remove non-egraphs optimization pipeline and use_egraphs option. (#6167)
* Cranelift: remove non-egraphs optimization pipeline and `use_egraphs` option.

This PR removes the LICM, GVN, and preopt passes, and associated support
pieces, from `cranelift-codegen`. Not to worry, we still have
optimizations: the egraph framework subsumes all of these, and has been
on by default since #5181.

A few decision points:

- Filetests for the legacy LICM, GVN and simple_preopt were removed too.
  As we built optimizations in the egraph framework we wrote new tests
  for the equivalent functionality, and many of the old tests were
  testing specific behaviors in the old implementations that may not be
  relevant anymore. However if folks prefer I could take a different
  approach here and try to port over all of the tests.

- The corresponding filetest modes (commands) were deleted too. The
  `test alias_analysis` mode remains, but no longer invokes a separate
  GVN first (since there is no separate GVN that will not also do alias
  analysis) so the tests were tweaked slightly to work with that. The
  egrpah testsuite also covers alias analysis.

- The `divconst_magic_numbers` module is removed since it's unused
  without `simple_preopt`, though this is the one remaining optimization
  we still need to build in the egraphs framework, pending #5908. The
  magic numbers will live forever in git history so removing this in the
  meantime is not a major issue IMHO.

- The `use_egraphs` setting itself was removed at both the Cranelift and
  Wasmtime levels. It has been marked deprecated for a few releases now
  (Wasmtime 6.0, 7.0, upcoming 8.0, and corresponding Cranelift
  versions) so I think this is probably OK. As an alternative if anyone
  feels strongly, we could leave the setting and make it a no-op.

* Update test outputs for remaining test differences.
2023-04-06 18:11:03 +00:00

394 lines
12 KiB
Plaintext

test run
target riscv64
function %a(i16, f64, i32, i64, i16, i128, f32) -> i16 {
ss0 = explicit_slot 24
block0(v0: i16, v1: f64, v2: i32, v3: i64, v4: i16, v5: i128, v6: f32):
v8 = iconst.i8 0
v9 = iconst.i16 0
v10 = iconst.i32 0
v11 = iconst.i64 0
v12 = uextend.i128 v11 ; v11 = 0
stack_store v12, ss0
stack_store v11, ss0+16 ; v11 = 0
v55 = iconst.i32 0
v56 = iconst.i32 1
v57 = icmp eq v2, v55 ; v55 = 0
v58 = ishl_imm v56, 31 ; v56 = 1
v59 = isub v55, v56 ; v55 = 0, v56 = 1
v60 = icmp eq v2, v58
v61 = icmp eq v2, v59
v62 = band v60, v61
v63 = bor v57, v62
v64 = select v63, v56, v2 ; v56 = 1
v13 = sdiv v2, v64
v65 = iconst.i32 0
v66 = iconst.i32 1
v67 = icmp eq v13, v65 ; v65 = 0
v68 = ishl_imm v66, 31 ; v66 = 1
v69 = isub v65, v66 ; v65 = 0, v66 = 1
v70 = icmp eq v13, v68
v71 = icmp eq v13, v69
v72 = band v70, v71
v73 = bor v67, v72
v74 = select v73, v66, v13 ; v66 = 1
v14 = sdiv v13, v74
v75 = iconst.i32 0
v76 = iconst.i32 1
v77 = icmp eq v14, v75 ; v75 = 0
v78 = ishl_imm v76, 31 ; v76 = 1
v79 = isub v75, v76 ; v75 = 0, v76 = 1
v80 = icmp eq v14, v78
v81 = icmp eq v14, v79
v82 = band v80, v81
v83 = bor v77, v82
v84 = select v83, v76, v14 ; v76 = 1
v15 = sdiv v14, v84
v85 = iconst.i64 0
v86 = iconst.i64 1
v87 = icmp eq v3, v85 ; v85 = 0
v88 = ishl_imm v86, 63 ; v86 = 1
v89 = isub v85, v86 ; v85 = 0, v86 = 1
v90 = icmp eq v3, v88
v91 = icmp eq v3, v89
v92 = band v90, v91
v93 = bor v87, v92
v94 = select v93, v86, v3 ; v86 = 1
v16 = sdiv v3, v94
v95 = iconst.i32 0
v96 = iconst.i32 1
v97 = icmp eq v15, v95 ; v95 = 0
v98 = ishl_imm v96, 31 ; v96 = 1
v99 = isub v95, v96 ; v95 = 0, v96 = 1
v100 = icmp eq v15, v98
v101 = icmp eq v15, v99
v102 = band v100, v101
v103 = bor v97, v102
v104 = select v103, v96, v15 ; v96 = 1
v17 = sdiv v15, v104
v18 = fmax_pseudo v6, v6
v105 = iconst.i32 0
v106 = iconst.i32 1
v107 = icmp eq v17, v105 ; v105 = 0
v108 = ishl_imm v106, 31 ; v106 = 1
v109 = isub v105, v106 ; v105 = 0, v106 = 1
v110 = icmp eq v17, v108
v111 = icmp eq v17, v109
v112 = band v110, v111
v113 = bor v107, v112
v114 = select v113, v106, v17 ; v106 = 1
v19 = sdiv v17, v114
v115 = iconst.i32 0
v116 = iconst.i32 1
v117 = icmp eq v19, v115 ; v115 = 0
v118 = ishl_imm v116, 31 ; v116 = 1
v119 = isub v115, v116 ; v115 = 0, v116 = 1
v120 = icmp eq v19, v118
v121 = icmp eq v19, v119
v122 = band v120, v121
v123 = bor v117, v122
v124 = select v123, v116, v19 ; v116 = 1
v20 = sdiv v19, v124
v125 = iconst.i32 0
v126 = iconst.i32 1
v127 = icmp eq v20, v125 ; v125 = 0
v128 = ishl_imm v126, 31 ; v126 = 1
v129 = isub v125, v126 ; v125 = 0, v126 = 1
v130 = icmp eq v20, v128
v131 = icmp eq v20, v129
v132 = band v130, v131
v133 = bor v127, v132
v134 = select v133, v126, v20 ; v126 = 1
v21 = sdiv v20, v134
stack_store v16, ss0+4
v135 = iconst.i32 0
v136 = iconst.i32 1
v137 = icmp eq v21, v135 ; v135 = 0
v138 = ishl_imm v136, 31 ; v136 = 1
v139 = isub v135, v136 ; v135 = 0, v136 = 1
v140 = icmp eq v21, v138
v141 = icmp eq v21, v139
v142 = band v140, v141
v143 = bor v137, v142
v144 = select v143, v136, v21 ; v136 = 1
v22 = sdiv v21, v144
v145 = iconst.i32 0
v146 = iconst.i32 1
v147 = icmp eq v22, v145 ; v145 = 0
v148 = ishl_imm v146, 31 ; v146 = 1
v149 = isub v145, v146 ; v145 = 0, v146 = 1
v150 = icmp eq v22, v148
v151 = icmp eq v22, v149
v152 = band v150, v151
v153 = bor v147, v152
v154 = select v153, v146, v22 ; v146 = 1
v23 = sdiv v22, v154
v155 = iconst.i32 0
v156 = iconst.i32 1
v157 = icmp eq v23, v155 ; v155 = 0
v158 = ishl_imm v156, 31 ; v156 = 1
v159 = isub v155, v156 ; v155 = 0, v156 = 1
v160 = icmp eq v23, v158
v161 = icmp eq v23, v159
v162 = band v160, v161
v163 = bor v157, v162
v164 = select v163, v156, v23 ; v156 = 1
v24 = sdiv v23, v164
v165 = iconst.i32 0
v166 = iconst.i32 1
v167 = icmp eq v24, v165 ; v165 = 0
v168 = ishl_imm v166, 31 ; v166 = 1
v169 = isub v165, v166 ; v165 = 0, v166 = 1
v170 = icmp eq v24, v168
v171 = icmp eq v24, v169
v172 = band v170, v171
v173 = bor v167, v172
v174 = select v173, v166, v24 ; v166 = 1
v25 = sdiv v24, v174
v175 = iconst.i32 0
v176 = iconst.i32 1
v177 = icmp eq v25, v175 ; v175 = 0
v178 = ishl_imm v176, 31 ; v176 = 1
v179 = isub v175, v176 ; v175 = 0, v176 = 1
v180 = icmp eq v25, v178
v181 = icmp eq v25, v179
v182 = band v180, v181
v183 = bor v177, v182
v184 = select v183, v176, v25 ; v176 = 1
v26 = sdiv v25, v184
v185 = iconst.i32 0
v186 = iconst.i32 1
v187 = icmp eq v26, v185 ; v185 = 0
v188 = ishl_imm v186, 31 ; v186 = 1
v189 = isub v185, v186 ; v185 = 0, v186 = 1
v190 = icmp eq v26, v188
v191 = icmp eq v26, v189
v192 = band v190, v191
v193 = bor v187, v192
v194 = select v193, v186, v26 ; v186 = 1
v27 = sdiv v26, v194
v195 = iconst.i32 0
v196 = iconst.i32 1
v197 = icmp eq v27, v195 ; v195 = 0
v198 = ishl_imm v196, 31 ; v196 = 1
v199 = isub v195, v196 ; v195 = 0, v196 = 1
v200 = icmp eq v27, v198
v201 = icmp eq v27, v199
v202 = band v200, v201
v203 = bor v197, v202
v204 = select v203, v196, v27 ; v196 = 1
v28 = sdiv v27, v204
v205 = iconst.i32 0
v206 = iconst.i32 1
v207 = icmp eq v28, v205 ; v205 = 0
v208 = ishl_imm v206, 31 ; v206 = 1
v209 = isub v205, v206 ; v205 = 0, v206 = 1
v210 = icmp eq v28, v208
v211 = icmp eq v28, v209
v212 = band v210, v211
v213 = bor v207, v212
v214 = select v213, v206, v28 ; v206 = 1
v29 = sdiv v28, v214
v52 = nearest v1
v53 = fcmp ne v52, v52
v54 = f64const +NaN
v30 = select v53, v54, v52 ; v54 = +NaN
v215 = iconst.i32 0
v216 = iconst.i32 1
v217 = icmp eq v29, v215 ; v215 = 0
v218 = ishl_imm v216, 31 ; v216 = 1
v219 = isub v215, v216 ; v215 = 0, v216 = 1
v220 = icmp eq v29, v218
v221 = icmp eq v29, v219
v222 = band v220, v221
v223 = bor v217, v222
v224 = select v223, v216, v29 ; v216 = 1
v31 = sdiv v29, v224
v225 = iconst.i32 0
v226 = iconst.i32 1
v227 = icmp eq v31, v225 ; v225 = 0
v228 = ishl_imm v226, 31 ; v226 = 1
v229 = isub v225, v226 ; v225 = 0, v226 = 1
v230 = icmp eq v31, v228
v231 = icmp eq v31, v229
v232 = band v230, v231
v233 = bor v227, v232
v234 = select v233, v226, v31 ; v226 = 1
v32 = sdiv v31, v234
v235 = iconst.i32 0
v236 = iconst.i32 1
v237 = icmp eq v32, v235 ; v235 = 0
v238 = ishl_imm v236, 31 ; v236 = 1
v239 = isub v235, v236 ; v235 = 0, v236 = 1
v240 = icmp eq v32, v238
v241 = icmp eq v32, v239
v242 = band v240, v241
v243 = bor v237, v242
v244 = select v243, v236, v32 ; v236 = 1
v33 = sdiv v32, v244
v245 = iconst.i32 0
v246 = iconst.i32 1
v247 = icmp eq v33, v245 ; v245 = 0
v248 = ishl_imm v246, 31 ; v246 = 1
v249 = isub v245, v246 ; v245 = 0, v246 = 1
v250 = icmp eq v33, v248
v251 = icmp eq v33, v249
v252 = band v250, v251
v253 = bor v247, v252
v254 = select v253, v246, v33 ; v246 = 1
v34 = sdiv v33, v254
v35 = fmax_pseudo v18, v18
v255 = iconst.i32 0
v256 = iconst.i32 1
v257 = icmp eq v34, v255 ; v255 = 0
v258 = ishl_imm v256, 31 ; v256 = 1
v259 = isub v255, v256 ; v255 = 0, v256 = 1
v260 = icmp eq v34, v258
v261 = icmp eq v34, v259
v262 = band v260, v261
v263 = bor v257, v262
v264 = select v263, v256, v34 ; v256 = 1
v36 = sdiv v34, v264
v265 = iconst.i32 0
v266 = iconst.i32 1
v267 = icmp eq v36, v265 ; v265 = 0
v268 = ishl_imm v266, 31 ; v266 = 1
v269 = isub v265, v266 ; v265 = 0, v266 = 1
v270 = icmp eq v36, v268
v271 = icmp eq v36, v269
v272 = band v270, v271
v273 = bor v267, v272
v274 = select v273, v266, v36 ; v266 = 1
v37 = sdiv v36, v274
v275 = iconst.i32 0
v276 = iconst.i32 1
v277 = icmp eq v37, v275 ; v275 = 0
v278 = ishl_imm v276, 31 ; v276 = 1
v279 = isub v275, v276 ; v275 = 0, v276 = 1
v280 = icmp eq v37, v278
v281 = icmp eq v37, v279
v282 = band v280, v281
v283 = bor v277, v282
v284 = select v283, v276, v37 ; v276 = 1
v38 = sdiv v37, v284
stack_store v16, ss0+4
v285 = iconst.i32 0
v286 = iconst.i32 1
v287 = icmp eq v38, v285 ; v285 = 0
v288 = ishl_imm v286, 31 ; v286 = 1
v289 = isub v285, v286 ; v285 = 0, v286 = 1
v290 = icmp eq v38, v288
v291 = icmp eq v38, v289
v292 = band v290, v291
v293 = bor v287, v292
v294 = select v293, v286, v38 ; v286 = 1
v39 = sdiv v38, v294
v295 = iconst.i32 0
v296 = iconst.i32 1
v297 = icmp eq v39, v295 ; v295 = 0
v298 = ishl_imm v296, 31 ; v296 = 1
v299 = isub v295, v296 ; v295 = 0, v296 = 1
v300 = icmp eq v39, v298
v301 = icmp eq v39, v299
v302 = band v300, v301
v303 = bor v297, v302
v304 = select v303, v296, v39 ; v296 = 1
v40 = sdiv v39, v304
v41 = rotr v16, v16
v305 = iconst.i32 0
v306 = iconst.i32 1
v307 = icmp eq v40, v305 ; v305 = 0
v308 = ishl_imm v306, 31 ; v306 = 1
v309 = isub v305, v306 ; v305 = 0, v306 = 1
v310 = icmp eq v40, v308
v311 = icmp eq v40, v309
v312 = band v310, v311
v313 = bor v307, v312
v314 = select v313, v306, v40 ; v306 = 1
v42 = sdiv v40, v314
v315 = iconst.i32 0
v316 = iconst.i32 1
v317 = icmp eq v42, v315 ; v315 = 0
v318 = ishl_imm v316, 31 ; v316 = 1
v319 = isub v315, v316 ; v315 = 0, v316 = 1
v320 = icmp eq v42, v318
v321 = icmp eq v42, v319
v322 = band v320, v321
v323 = bor v317, v322
v324 = select v323, v316, v42 ; v316 = 1
v43 = sdiv v42, v324
v325 = iconst.i32 0
v326 = iconst.i32 1
v327 = icmp eq v43, v325 ; v325 = 0
v328 = ishl_imm v326, 31 ; v326 = 1
v329 = isub v325, v326 ; v325 = 0, v326 = 1
v330 = icmp eq v43, v328
v331 = icmp eq v43, v329
v332 = band v330, v331
v333 = bor v327, v332
v334 = select v333, v326, v43 ; v326 = 1
v44 = sdiv v43, v334
v335 = iconst.i32 0
v336 = iconst.i32 1
v337 = icmp eq v44, v335 ; v335 = 0
v338 = ishl_imm v336, 31 ; v336 = 1
v339 = isub v335, v336 ; v335 = 0, v336 = 1
v340 = icmp eq v44, v338
v341 = icmp eq v44, v339
v342 = band v340, v341
v343 = bor v337, v342
v344 = select v343, v336, v44 ; v336 = 1
v45 = sdiv v44, v344
v345 = iconst.i32 0
v346 = iconst.i32 1
v347 = icmp eq v45, v345 ; v345 = 0
v348 = ishl_imm v346, 31 ; v346 = 1
v349 = isub v345, v346 ; v345 = 0, v346 = 1
v350 = icmp eq v45, v348
v351 = icmp eq v45, v349
v352 = band v350, v351
v353 = bor v347, v352
v354 = select v353, v346, v45 ; v346 = 1
v46 = sdiv v45, v354
v355 = iconst.i32 0
v356 = iconst.i32 1
v357 = icmp eq v46, v355 ; v355 = 0
v358 = ishl_imm v356, 31 ; v356 = 1
v359 = isub v355, v356 ; v355 = 0, v356 = 1
v360 = icmp eq v46, v358
v361 = icmp eq v46, v359
v362 = band v360, v361
v363 = bor v357, v362
v364 = select v363, v356, v46 ; v356 = 1
v47 = sdiv v46, v364
v48 = bxor v5, v5
v365 = iconst.i32 0
v366 = iconst.i32 1
v367 = icmp eq v47, v365 ; v365 = 0
v368 = ishl_imm v366, 31 ; v366 = 1
v369 = isub v365, v366 ; v365 = 0, v366 = 1
v370 = icmp eq v47, v368
v371 = icmp eq v47, v369
v372 = band v370, v371
v373 = bor v367, v372
v374 = select v373, v366, v47 ; v366 = 1
v49 = sdiv v47, v374
v375 = iconst.i32 0
v376 = iconst.i32 1
v377 = icmp eq v49, v375 ; v375 = 0
v378 = ishl_imm v376, 31 ; v376 = 1
v379 = isub v375, v376 ; v375 = 0, v376 = 1
v380 = icmp eq v49, v378
v381 = icmp eq v49, v379
v382 = band v380, v381
v383 = bor v377, v382
v384 = select v383, v376, v49 ; v376 = 1
v50 = sdiv v49, v384
v51 = stack_addr.i64 ss0+4
store v30, v51+6
return v0
}
; run: %a(8, 0.0, 0, 0, 0, 0, 0.0) == 8