linearscan-hoopl-0.6.0.0: test/Programs/Exhaustion.hs
module Programs.Exhaustion where
import Assembly
import LinearScan.Hoopl.DSL
exhaustion1 :: Program (Node IRVar)
exhaustion1 = do
label "entry" $ do
move pr1 v4
move pr2 v5
move pr3 v6
alloc Nothing pr0
move v4 v1
move v5 v2
move v6 v3
lc v8
move v8 v9
lc v10
move v10 v11
lc v12
move v12 v13
move v1 v16
copy v16 v14
offlpi v16
copy v16 v15
move v14 v17
move v15 v18
move v2 v21
copy v21 v19
offlpi v21
copy v21 v20
move v19 v22
move v20 v23
move v3 v26
copy v26 v24
offlpi v26
copy v26 v25
move v25 v28
move v17 v30
move v30 v29
move v29 v32
move v22 v34
move v34 v33
move v33 v36
move v18 v39
move v39 v37
move v37 v40
move v23 v43
move v43 v41
move v41 v44
move v28 v47
move v47 v45
move v45 v48
jump "L2"
label "L2" $ do
move v9 v51
move v32 v52
lc v53
move v53 v54
lc v55
move v55 v56
move v51 v58
move v52 v59
add v58 v59 v60
move v60 v57
jump "L9"
label "L9" $ do
move v57 v61
branch v61 "L10" "L11"
label "L11" $ do
move v54 v62
jump "L12"
label "L10" $ do
move v56 v62
jump "L12"
label "L12" $ do
move v62 v50
jump "L8"
label "L8" $ do
branch v50 "L5" "L6"
label "L6" $ do
lc v49
jump "L7"
label "L5" $ do
move v11 v64
move v36 v65
lc v66
move v66 v67
lc v68
move v68 v69
move v64 v71
move v65 v72
add v71 v72 v73
move v73 v70
jump "L18"
label "L18" $ do
move v70 v74
branch v74 "L19" "L20"
label "L20" $ do
move v67 v75
jump "L21"
label "L19" $ do
move v69 v75
jump "L21"
label "L21" $ do
move v75 v63
jump "L17"
label "L17" $ do
branch v63 "L14" "L15"
label "L15" $ do
lc v49
jump "L7"
label "L14" $ do
move v13 v76
lc v77
lc v78
move v78 v79
lc v80
move v80 v81
move v76 v83
move v77 v84
add v83 v84 v85
move v85 v82
jump "L24"
label "L24" $ do
move v82 v86
branch v86 "L25" "L26"
label "L26" $ do
move v79 v87
jump "L27"
label "L25" $ do
move v81 v87
jump "L27"
label "L27" $ do
move v87 v49
jump "L7"
label "L7" $ do
branch v49 "L3" "L75"
label "L3" $ do
move v40 v90
move v9 v91
move v91 v92
offp v92 v90 v89
copy v89 v88
move v88 v93
move v44 v96
move v11 v97
move v97 v98
offp v98 v96 v95
copy v95 v94
move v94 v99
move v93 v113
copy v113 v101
move v99 v114
copy v114 v102
lc v103
move v103 v104
lc v105
move v105 v106
move v101 v108
move v102 v109
add v108 v109 v110
move v110 v107
jump "L33"
label "L33" $ do
move v107 v111
branch v111 "L34" "L35"
label "L35" $ do
move v104 v112
jump "L36"
label "L34" $ do
move v106 v112
jump "L36"
label "L36" $ do
move v112 v100
jump "L32"
label "L32" $ do
branch v100 "L29" "L30"
label "L30" $ do
move v44 v130
move v11 v131
move v131 v132
offp v132 v130 v129
copy v129 v128
move v48 v134
move v13 v135
move v135 v136
offp v136 v134 v133
move v128 v133
move v11 v138
lc v139
add v138 v139 v140
move v140 v137
jump "L39"
label "L39" $ do
move v137 v11
move v93 v145
copy v145 v142
move v99 v146
copy v146 v143
add v142 v143 v144
move v144 v141
jump "L43"
label "L43" $ do
branch v141 "L40" "L73"
label "L40" $ do
move v9 v148
lc v149
add v148 v149 v150
move v150 v147
jump "L44"
label "L44" $ do
move v147 v9
jump "L31"
label "L29" $ do
move v40 v117
move v9 v118
move v118 v119
offp v119 v117 v116
copy v116 v115
move v48 v121
move v13 v122
move v122 v123
offp v123 v121 v120
move v115 v120
move v9 v125
lc v126
add v125 v126 v127
move v127 v124
jump "L38"
label "L38" $ do
move v124 v9
jump "L31"
label "L31" $ do
move v13 v152
lc v153
add v152 v153 v154
move v154 v151
jump "L45"
label "L45" $ do
move v151 v13
jump "L2"
label "L73" $ do
move v206 v210
branch v210 "L74" "L75"
label "L75" $ do
jump "L46"
label "L46" $ do
move v9 v157
move v32 v158
lc v159
move v159 v160
lc v161
move v161 v162
move v157 v164
move v158 v165
add v164 v165 v166
move v166 v163
jump "L53"
label "L53" $ do
move v163 v167
branch v167 "L54" "L55"
label "L55" $ do
move v160 v168
jump "L56"
label "L54" $ do
move v162 v168
jump "L56"
label "L56" $ do
move v168 v156
jump "L52"
label "L52" $ do
branch v156 "L49" "L50"
label "L50" $ do
lc v155
jump "L51"
label "L49" $ do
move v13 v169
lc v170
lc v171
move v171 v172
lc v173
move v173 v174
move v169 v176
move v170 v177
add v176 v177 v178
move v178 v175
jump "L59"
label "L59" $ do
move v175 v179
branch v179 "L60" "L61"
label "L61" $ do
move v172 v180
jump "L62"
label "L60" $ do
move v174 v180
jump "L62"
label "L62" $ do
move v180 v155
jump "L51"
label "L51" $ do
branch v155 "L47" "L74"
label "L47" $ do
move v40 v183
move v9 v184
move v184 v185
offp v185 v183 v182
copy v182 v181
move v48 v187
move v13 v188
move v188 v189
offp v189 v187 v186
move v181 v186
move v9 v191
lc v192
add v191 v192 v193
move v193 v190
jump "L64"
label "L64" $ do
move v190 v9
move v13 v195
lc v196
add v195 v196 v197
move v197 v194
jump "L65"
label "L65" $ do
move v194 v13
jump "L46"
label "L74" $ do
jump "L66"
label "L66" $ do
move v11 v200
move v36 v201
lc v202
move v202 v203
lc v204
move v204 v205
move v200 v207
move v201 v208
add v207 v208 v209
move v209 v206
jump "L73"