IN: compiler.cfg.linear-scan.tests USING: tools.test random sorting sequences sets hashtables assocs kernel fry arrays splitting namespaces math accessors vectors math.order grouping cpu.architecture compiler.cfg compiler.cfg.optimizer compiler.cfg.instructions compiler.cfg.registers compiler.cfg.linear-scan compiler.cfg.linear-scan.live-intervals compiler.cfg.linear-scan.allocation compiler.cfg.linear-scan.debugger ; [ 7 ] [ T{ live-interval { vreg T{ vreg { reg-class int-regs } { n 2 } } } { start 0 } { end 10 } { uses V{ 0 1 3 7 10 } } } 4 [ >= ] find-use nip ] unit-test [ 4 ] [ T{ live-interval { vreg T{ vreg { reg-class int-regs } { n 2 } } } { start 0 } { end 10 } { uses V{ 0 1 3 4 10 } } } 4 [ >= ] find-use nip ] unit-test [ f ] [ T{ live-interval { vreg T{ vreg { reg-class int-regs } { n 2 } } } { start 0 } { end 10 } { uses V{ 0 1 3 4 10 } } } 100 [ >= ] find-use nip ] unit-test [ T{ live-interval { vreg T{ vreg { reg-class int-regs } { n 1 } } } { start 0 } { end 1 } { uses V{ 0 1 } } } T{ live-interval { vreg T{ vreg { reg-class int-regs } { n 1 } } } { start 5 } { end 5 } { uses V{ 5 } } } ] [ T{ live-interval { vreg T{ vreg { reg-class int-regs } { n 1 } } } { start 0 } { end 5 } { uses V{ 0 1 5 } } } 2 split-interval ] unit-test [ T{ live-interval { vreg T{ vreg { reg-class int-regs } { n 1 } } } { start 0 } { end 0 } { uses V{ 0 } } } T{ live-interval { vreg T{ vreg { reg-class int-regs } { n 1 } } } { start 1 } { end 5 } { uses V{ 1 5 } } } ] [ T{ live-interval { vreg T{ vreg { reg-class int-regs } { n 1 } } } { start 0 } { end 5 } { uses V{ 0 1 5 } } } 0 split-interval ] unit-test [ T{ live-interval { vreg T{ vreg { reg-class int-regs } { n 1 } } } { start 3 } { end 10 } { uses V{ 3 10 } } } ] [ { T{ live-interval { vreg T{ vreg { reg-class int-regs } { n 1 } } } { start 1 } { end 15 } { uses V{ 1 3 7 10 15 } } } T{ live-interval { vreg T{ vreg { reg-class int-regs } { n 1 } } } { start 3 } { end 8 } { uses V{ 3 4 8 } } } T{ live-interval { vreg T{ vreg { reg-class int-regs } { n 1 } } } { start 3 } { end 10 } { uses V{ 3 10 } } } } T{ live-interval { vreg T{ vreg { reg-class int-regs } { n 1 } } } { start 5 } { end 5 } { uses V{ 5 } } } interval-to-spill ] unit-test [ t ] [ T{ live-interval { vreg T{ vreg { reg-class int-regs } { n 1 } } } { start 5 } { end 15 } { uses V{ 5 10 15 } } } T{ live-interval { vreg T{ vreg { reg-class int-regs } { n 1 } } } { start 1 } { end 20 } { uses V{ 1 20 } } } spill-existing? ] unit-test [ f ] [ T{ live-interval { vreg T{ vreg { reg-class int-regs } { n 1 } } } { start 5 } { end 15 } { uses V{ 5 10 15 } } } T{ live-interval { vreg T{ vreg { reg-class int-regs } { n 1 } } } { start 1 } { end 20 } { uses V{ 1 7 20 } } } spill-existing? ] unit-test [ t ] [ T{ live-interval { vreg T{ vreg { reg-class int-regs } { n 1 } } } { start 5 } { end 5 } { uses V{ 5 } } } T{ live-interval { vreg T{ vreg { reg-class int-regs } { n 1 } } } { start 1 } { end 20 } { uses V{ 1 7 20 } } } spill-existing? ] unit-test [ ] [ { T{ live-interval { vreg T{ vreg { n 1 } { reg-class int-regs } } } { start 0 } { end 100 } { uses V{ 0 100 } } } } H{ { int-regs { "A" } } } check-linear-scan ] unit-test [ ] [ { T{ live-interval { vreg T{ vreg { n 1 } { reg-class int-regs } } } { start 0 } { end 10 } { uses V{ 0 10 } } } T{ live-interval { vreg T{ vreg { n 2 } { reg-class int-regs } } } { start 11 } { end 20 } { uses V{ 11 20 } } } } H{ { int-regs { "A" } } } check-linear-scan ] unit-test [ ] [ { T{ live-interval { vreg T{ vreg { n 1 } { reg-class int-regs } } } { start 0 } { end 100 } { uses V{ 0 100 } } } T{ live-interval { vreg T{ vreg { n 2 } { reg-class int-regs } } } { start 30 } { end 60 } { uses V{ 30 60 } } } } H{ { int-regs { "A" } } } check-linear-scan ] unit-test [ ] [ { T{ live-interval { vreg T{ vreg { n 1 } { reg-class int-regs } } } { start 0 } { end 100 } { uses V{ 0 100 } } } T{ live-interval { vreg T{ vreg { n 2 } { reg-class int-regs } } } { start 30 } { end 200 } { uses V{ 30 200 } } } } H{ { int-regs { "A" } } } check-linear-scan ] unit-test [ { T{ live-interval { vreg T{ vreg { n 1 } { reg-class int-regs } } } { start 0 } { end 100 } { uses V{ 0 100 } } } T{ live-interval { vreg T{ vreg { n 2 } { reg-class int-regs } } } { start 30 } { end 100 } { uses V{ 30 100 } } } } H{ { int-regs { "A" } } } check-linear-scan ] must-fail SYMBOL: available SYMBOL: taken SYMBOL: max-registers SYMBOL: max-insns SYMBOL: max-uses : not-taken ( -- n ) available get keys dup empty? [ "Oops" throw ] when random dup taken get nth 1 + max-registers get = [ dup available get delete-at ] [ dup taken get [ 1 + ] change-nth ] if ; : random-live-intervals ( num-intervals max-uses max-registers max-insns -- seq ) [ max-insns set max-registers set max-uses set max-insns get [ 0 ] replicate taken set max-insns get [ dup ] H{ } map>assoc available set [ live-interval new swap int-regs swap vreg boa >>vreg max-uses get random 2 max [ not-taken ] replicate natural-sort [ >>uses ] [ first >>start ] bi dup uses>> last >>end ] map ] with-scope ; : random-test ( num-intervals max-uses max-registers max-insns -- ) over [ random-live-intervals ] dip int-regs associate check-linear-scan ; [ ] [ 30 2 1 60 random-test ] unit-test [ ] [ 60 2 2 60 random-test ] unit-test [ ] [ 80 2 3 200 random-test ] unit-test [ ] [ 70 2 5 30 random-test ] unit-test [ ] [ 60 2 6 30 random-test ] unit-test [ ] [ 1 2 10 10 random-test ] unit-test [ ] [ 10 4 2 60 random-test ] unit-test [ ] [ 10 20 2 400 random-test ] unit-test [ ] [ 10 20 4 300 random-test ] unit-test USING: math.private compiler.cfg.debugger ; [ ] [ [ float+ float>fixnum 3 fixnum*fast ] test-cfg first optimize-cfg linear-scan drop ] unit-test [ f ] [ T{ basic-block { instructions V{ T{ ##allot f T{ vreg f int-regs 1 } 40 array T{ vreg f int-regs 2 } f } } } } clone [ [ clone ] map ] change-instructions dup 1array (linear-scan) instructions>> first regs>> values all-equal? ] unit-test [ 0 1 ] [ { T{ live-interval { vreg T{ vreg { reg-class int-regs } { n 1 } } } { start 0 } { end 5 } { uses V{ 0 1 5 } } } T{ live-interval { vreg T{ vreg { reg-class int-regs } { n 2 } } } { start 3 } { end 4 } { uses V{ 3 4 } } } T{ live-interval { vreg T{ vreg { reg-class int-regs } { n 3 } } } { start 2 } { end 6 } { uses V{ 2 4 6 } } } } [ clone ] map H{ { int-regs { "A" "B" } } } allocate-registers first split-before>> [ start>> ] [ end>> ] bi ] unit-test ! Coalescing interacted badly with splitting [ ] [ { T{ live-interval { vreg V int-regs 70 } { start 14 } { end 17 } { uses V{ 14 15 16 17 } } { copy-from V int-regs 67 } } T{ live-interval { vreg V int-regs 67 } { start 13 } { end 14 } { uses V{ 13 14 } } } T{ live-interval { vreg V int-regs 30 } { start 4 } { end 18 } { uses V{ 4 12 16 17 18 } } } T{ live-interval { vreg V int-regs 27 } { start 3 } { end 13 } { uses V{ 3 7 13 } } } T{ live-interval { vreg V int-regs 59 } { start 10 } { end 18 } { uses V{ 10 11 12 18 } } { copy-from V int-regs 56 } } T{ live-interval { vreg V int-regs 60 } { start 12 } { end 17 } { uses V{ 12 17 } } } T{ live-interval { vreg V int-regs 56 } { start 9 } { end 10 } { uses V{ 9 10 } } } } { { int-regs { 0 1 2 3 } } } allocate-registers drop ] unit-test [ ] [ { T{ live-interval { vreg V int-regs 3687168 } { start 106 } { end 112 } { uses V{ 106 112 } } } T{ live-interval { vreg V int-regs 3687169 } { start 107 } { end 113 } { uses V{ 107 113 } } } T{ live-interval { vreg V int-regs 3687727 } { start 190 } { end 198 } { uses V{ 190 195 198 } } } T{ live-interval { vreg V int-regs 3686445 } { start 43 } { end 44 } { uses V{ 43 44 } } } T{ live-interval { vreg V int-regs 3686195 } { start 5 } { end 11 } { uses V{ 5 11 } } } T{ live-interval { vreg V int-regs 3686449 } { start 44 } { end 56 } { uses V{ 44 45 45 46 56 } } { copy-from V int-regs 3686445 } } T{ live-interval { vreg V int-regs 3686198 } { start 8 } { end 10 } { uses V{ 8 9 10 } } } T{ live-interval { vreg V int-regs 3686454 } { start 46 } { end 49 } { uses V{ 46 47 47 49 } } { copy-from V int-regs 3686449 } } T{ live-interval { vreg V int-regs 3686196 } { start 6 } { end 12 } { uses V{ 6 12 } } } T{ live-interval { vreg V int-regs 3686197 } { start 7 } { end 14 } { uses V{ 7 13 14 } } } T{ live-interval { vreg V int-regs 3686455 } { start 48 } { end 51 } { uses V{ 48 51 } } } T{ live-interval { vreg V int-regs 3686463 } { start 52 } { end 53 } { uses V{ 52 53 } } } T{ live-interval { vreg V int-regs 3686460 } { start 49 } { end 52 } { uses V{ 49 50 50 52 } } { copy-from V int-regs 3686454 } } T{ live-interval { vreg V int-regs 3686461 } { start 51 } { end 71 } { uses V{ 51 52 64 68 71 } } } T{ live-interval { vreg V int-regs 3686464 } { start 53 } { end 54 } { uses V{ 53 54 } } } T{ live-interval { vreg V int-regs 3686465 } { start 54 } { end 76 } { uses V{ 54 55 55 76 } } { copy-from V int-regs 3686464 } } T{ live-interval { vreg V int-regs 3686470 } { start 58 } { end 60 } { uses V{ 58 59 59 60 } } { copy-from V int-regs 3686469 } } T{ live-interval { vreg V int-regs 3686469 } { start 56 } { end 58 } { uses V{ 56 57 57 58 } } { copy-from V int-regs 3686449 } } T{ live-interval { vreg V int-regs 3686473 } { start 60 } { end 62 } { uses V{ 60 61 61 62 } } { copy-from V int-regs 3686470 } } T{ live-interval { vreg V int-regs 3686479 } { start 62 } { end 64 } { uses V{ 62 63 63 64 } } { copy-from V int-regs 3686473 } } T{ live-interval { vreg V int-regs 3686735 } { start 78 } { end 96 } { uses V{ 78 79 79 96 } } { copy-from V int-regs 3686372 } } T{ live-interval { vreg V int-regs 3686482 } { start 64 } { end 65 } { uses V{ 64 65 } } } T{ live-interval { vreg V int-regs 3686483 } { start 65 } { end 66 } { uses V{ 65 66 } } } T{ live-interval { vreg V int-regs 3687510 } { start 168 } { end 171 } { uses V{ 168 171 } } } T{ live-interval { vreg V int-regs 3687511 } { start 169 } { end 176 } { uses V{ 169 176 } } } T{ live-interval { vreg V int-regs 3686484 } { start 66 } { end 75 } { uses V{ 66 67 67 75 } } { copy-from V int-regs 3686483 } } T{ live-interval { vreg V int-regs 3687509 } { start 162 } { end 163 } { uses V{ 162 163 } } } T{ live-interval { vreg V int-regs 3686491 } { start 68 } { end 69 } { uses V{ 68 69 } } } T{ live-interval { vreg V int-regs 3687512 } { start 170 } { end 178 } { uses V{ 170 177 178 } } } T{ live-interval { vreg V int-regs 3687515 } { start 172 } { end 173 } { uses V{ 172 173 } } } T{ live-interval { vreg V int-regs 3686492 } { start 69 } { end 74 } { uses V{ 69 70 70 74 } } { copy-from V int-regs 3686491 } } T{ live-interval { vreg V int-regs 3687778 } { start 202 } { end 208 } { uses V{ 202 208 } } } T{ live-interval { vreg V int-regs 3686499 } { start 71 } { end 72 } { uses V{ 71 72 } } } T{ live-interval { vreg V int-regs 3687520 } { start 174 } { end 175 } { uses V{ 174 175 } } } T{ live-interval { vreg V int-regs 3687779 } { start 203 } { end 209 } { uses V{ 203 209 } } } T{ live-interval { vreg V int-regs 3687782 } { start 206 } { end 207 } { uses V{ 206 207 } } } T{ live-interval { vreg V int-regs 3686503 } { start 74 } { end 75 } { uses V{ 74 75 } } } T{ live-interval { vreg V int-regs 3686500 } { start 72 } { end 74 } { uses V{ 72 73 73 74 } } { copy-from V int-regs 3686499 } } T{ live-interval { vreg V int-regs 3687780 } { start 204 } { end 210 } { uses V{ 204 210 } } } T{ live-interval { vreg V int-regs 3686506 } { start 75 } { end 76 } { uses V{ 75 76 } } } T{ live-interval { vreg V int-regs 3687530 } { start 185 } { end 192 } { uses V{ 185 192 } } } T{ live-interval { vreg V int-regs 3687528 } { start 183 } { end 198 } { uses V{ 183 198 } } } T{ live-interval { vreg V int-regs 3687529 } { start 184 } { end 197 } { uses V{ 184 197 } } } T{ live-interval { vreg V int-regs 3687781 } { start 205 } { end 211 } { uses V{ 205 211 } } } T{ live-interval { vreg V int-regs 3687535 } { start 187 } { end 194 } { uses V{ 187 194 } } } T{ live-interval { vreg V int-regs 3686252 } { start 9 } { end 17 } { uses V{ 9 15 17 } } } T{ live-interval { vreg V int-regs 3686509 } { start 76 } { end 90 } { uses V{ 76 87 90 } } } T{ live-interval { vreg V int-regs 3687532 } { start 186 } { end 196 } { uses V{ 186 196 } } } T{ live-interval { vreg V int-regs 3687538 } { start 188 } { end 193 } { uses V{ 188 193 } } } T{ live-interval { vreg V int-regs 3687827 } { start 217 } { end 219 } { uses V{ 217 219 } } } T{ live-interval { vreg V int-regs 3687825 } { start 215 } { end 218 } { uses V{ 215 216 218 } } } T{ live-interval { vreg V int-regs 3687831 } { start 218 } { end 219 } { uses V{ 218 219 } } } T{ live-interval { vreg V int-regs 3686296 } { start 16 } { end 18 } { uses V{ 16 18 } } } T{ live-interval { vreg V int-regs 3686302 } { start 29 } { end 31 } { uses V{ 29 31 } } } T{ live-interval { vreg V int-regs 3687838 } { start 231 } { end 232 } { uses V{ 231 232 } } } T{ live-interval { vreg V int-regs 3686300 } { start 26 } { end 27 } { uses V{ 26 27 } } } T{ live-interval { vreg V int-regs 3686301 } { start 27 } { end 30 } { uses V{ 27 28 28 30 } } { copy-from V int-regs 3686300 } } T{ live-interval { vreg V int-regs 3686306 } { start 37 } { end 93 } { uses V{ 37 82 93 } } } T{ live-interval { vreg V int-regs 3686307 } { start 38 } { end 88 } { uses V{ 38 85 88 } } } T{ live-interval { vreg V int-regs 3687837 } { start 222 } { end 223 } { uses V{ 222 223 } } } T{ live-interval { vreg V int-regs 3686305 } { start 36 } { end 81 } { uses V{ 36 42 77 81 } } } T{ live-interval { vreg V int-regs 3686310 } { start 39 } { end 95 } { uses V{ 39 84 95 } } } T{ live-interval { vreg V int-regs 3687836 } { start 227 } { end 228 } { uses V{ 227 228 } } } T{ live-interval { vreg V int-regs 3687839 } { start 239 } { end 246 } { uses V{ 239 245 246 } } } T{ live-interval { vreg V int-regs 3687841 } { start 240 } { end 241 } { uses V{ 240 241 } } } T{ live-interval { vreg V int-regs 3687845 } { start 241 } { end 243 } { uses V{ 241 243 } } } T{ live-interval { vreg V int-regs 3686315 } { start 40 } { end 94 } { uses V{ 40 83 94 } } } T{ live-interval { vreg V int-regs 3687846 } { start 242 } { end 245 } { uses V{ 242 245 } } } T{ live-interval { vreg V int-regs 3687849 } { start 243 } { end 245 } { uses V{ 243 244 244 245 } } { copy-from V int-regs 3687845 } } T{ live-interval { vreg V int-regs 3687850 } { start 245 } { end 245 } { uses V{ 245 } } } T{ live-interval { vreg V int-regs 3687851 } { start 246 } { end 246 } { uses V{ 246 } } } T{ live-interval { vreg V int-regs 3687852 } { start 246 } { end 246 } { uses V{ 246 } } } T{ live-interval { vreg V int-regs 3687853 } { start 247 } { end 248 } { uses V{ 247 248 } } } T{ live-interval { vreg V int-regs 3687854 } { start 249 } { end 250 } { uses V{ 249 250 } } } T{ live-interval { vreg V int-regs 3687855 } { start 258 } { end 259 } { uses V{ 258 259 } } } T{ live-interval { vreg V int-regs 3687080 } { start 280 } { end 285 } { uses V{ 280 285 } } } T{ live-interval { vreg V int-regs 3687081 } { start 281 } { end 286 } { uses V{ 281 286 } } } T{ live-interval { vreg V int-regs 3687082 } { start 282 } { end 287 } { uses V{ 282 287 } } } T{ live-interval { vreg V int-regs 3687083 } { start 283 } { end 288 } { uses V{ 283 288 } } } T{ live-interval { vreg V int-regs 3687085 } { start 284 } { end 299 } { uses V{ 284 285 286 287 288 296 299 } } } T{ live-interval { vreg V int-regs 3687086 } { start 284 } { end 284 } { uses V{ 284 } } } T{ live-interval { vreg V int-regs 3687087 } { start 289 } { end 293 } { uses V{ 289 293 } } } T{ live-interval { vreg V int-regs 3687088 } { start 290 } { end 294 } { uses V{ 290 294 } } } T{ live-interval { vreg V int-regs 3687089 } { start 291 } { end 297 } { uses V{ 291 297 } } } T{ live-interval { vreg V int-regs 3687090 } { start 292 } { end 298 } { uses V{ 292 298 } } } T{ live-interval { vreg V int-regs 3687363 } { start 118 } { end 119 } { uses V{ 118 119 } } } T{ live-interval { vreg V int-regs 3686599 } { start 77 } { end 89 } { uses V{ 77 86 89 } } } T{ live-interval { vreg V int-regs 3687370 } { start 131 } { end 132 } { uses V{ 131 132 } } } T{ live-interval { vreg V int-regs 3687371 } { start 138 } { end 143 } { uses V{ 138 143 } } } T{ live-interval { vreg V int-regs 3687368 } { start 127 } { end 128 } { uses V{ 127 128 } } } T{ live-interval { vreg V int-regs 3687369 } { start 122 } { end 123 } { uses V{ 122 123 } } } T{ live-interval { vreg V int-regs 3687373 } { start 139 } { end 140 } { uses V{ 139 140 } } } T{ live-interval { vreg V int-regs 3686352 } { start 41 } { end 91 } { uses V{ 41 43 79 91 } } } T{ live-interval { vreg V int-regs 3687377 } { start 140 } { end 141 } { uses V{ 140 141 } } } T{ live-interval { vreg V int-regs 3687382 } { start 143 } { end 143 } { uses V{ 143 } } } T{ live-interval { vreg V int-regs 3687383 } { start 144 } { end 161 } { uses V{ 144 159 161 } } } T{ live-interval { vreg V int-regs 3687380 } { start 141 } { end 143 } { uses V{ 141 142 142 143 } } { copy-from V int-regs 3687377 } } T{ live-interval { vreg V int-regs 3687381 } { start 143 } { end 160 } { uses V{ 143 160 } } } T{ live-interval { vreg V int-regs 3687384 } { start 145 } { end 158 } { uses V{ 145 158 } } } T{ live-interval { vreg V int-regs 3687385 } { start 146 } { end 157 } { uses V{ 146 157 } } } T{ live-interval { vreg V int-regs 3687640 } { start 189 } { end 191 } { uses V{ 189 191 } } } T{ live-interval { vreg V int-regs 3687388 } { start 147 } { end 152 } { uses V{ 147 152 } } } T{ live-interval { vreg V int-regs 3687393 } { start 148 } { end 153 } { uses V{ 148 153 } } } T{ live-interval { vreg V int-regs 3687398 } { start 149 } { end 154 } { uses V{ 149 154 } } } T{ live-interval { vreg V int-regs 3686372 } { start 42 } { end 92 } { uses V{ 42 45 78 80 92 } } } T{ live-interval { vreg V int-regs 3687140 } { start 293 } { end 295 } { uses V{ 293 294 294 295 } } { copy-from V int-regs 3687087 } } T{ live-interval { vreg V int-regs 3687403 } { start 150 } { end 155 } { uses V{ 150 155 } } } T{ live-interval { vreg V int-regs 3687150 } { start 304 } { end 306 } { uses V{ 304 306 } } } T{ live-interval { vreg V int-regs 3687151 } { start 305 } { end 307 } { uses V{ 305 307 } } } T{ live-interval { vreg V int-regs 3687408 } { start 151 } { end 156 } { uses V{ 151 156 } } } T{ live-interval { vreg V int-regs 3687153 } { start 312 } { end 313 } { uses V{ 312 313 } } } T{ live-interval { vreg V int-regs 3686902 } { start 267 } { end 272 } { uses V{ 267 272 } } } T{ live-interval { vreg V int-regs 3686903 } { start 268 } { end 273 } { uses V{ 268 273 } } } T{ live-interval { vreg V int-regs 3686900 } { start 265 } { end 270 } { uses V{ 265 270 } } } T{ live-interval { vreg V int-regs 3686901 } { start 266 } { end 271 } { uses V{ 266 271 } } } T{ live-interval { vreg V int-regs 3687162 } { start 100 } { end 119 } { uses V{ 100 114 117 119 } } } T{ live-interval { vreg V int-regs 3687163 } { start 101 } { end 118 } { uses V{ 101 115 116 118 } } } T{ live-interval { vreg V int-regs 3686904 } { start 269 } { end 274 } { uses V{ 269 274 } } } T{ live-interval { vreg V int-regs 3687166 } { start 104 } { end 110 } { uses V{ 104 110 } } } T{ live-interval { vreg V int-regs 3687167 } { start 105 } { end 111 } { uses V{ 105 111 } } } T{ live-interval { vreg V int-regs 3687164 } { start 102 } { end 108 } { uses V{ 102 108 } } } T{ live-interval { vreg V int-regs 3687165 } { start 103 } { end 109 } { uses V{ 103 109 } } } } { { int-regs { 0 1 2 3 4 } } } allocate-registers drop ] unit-test ! A reduction of the above [ ] [ { T{ live-interval { vreg V int-regs 6449 } { start 44 } { end 56 } { uses V{ 44 45 46 56 } } } T{ live-interval { vreg V int-regs 6454 } { start 46 } { end 49 } { uses V{ 46 47 49 } } } T{ live-interval { vreg V int-regs 6455 } { start 48 } { end 51 } { uses V{ 48 51 } } } T{ live-interval { vreg V int-regs 6460 } { start 49 } { end 52 } { uses V{ 49 50 52 } } } T{ live-interval { vreg V int-regs 6461 } { start 51 } { end 71 } { uses V{ 51 52 64 68 71 } } } T{ live-interval { vreg V int-regs 6464 } { start 53 } { end 54 } { uses V{ 53 54 } } } T{ live-interval { vreg V int-regs 6470 } { start 58 } { end 60 } { uses V{ 58 59 60 } } } T{ live-interval { vreg V int-regs 6469 } { start 56 } { end 58 } { uses V{ 56 57 58 } } } T{ live-interval { vreg V int-regs 6473 } { start 60 } { end 62 } { uses V{ 60 61 62 } } } T{ live-interval { vreg V int-regs 6479 } { start 62 } { end 64 } { uses V{ 62 63 64 } } } T{ live-interval { vreg V int-regs 6735 } { start 78 } { end 96 } { uses V{ 78 79 96 } } { copy-from V int-regs 6372 } } T{ live-interval { vreg V int-regs 6483 } { start 65 } { end 66 } { uses V{ 65 66 } } } T{ live-interval { vreg V int-regs 7845 } { start 91 } { end 93 } { uses V{ 91 93 } } } T{ live-interval { vreg V int-regs 6372 } { start 42 } { end 92 } { uses V{ 42 45 78 80 92 } } } } { { int-regs { 0 1 2 3 } } } allocate-registers drop ] unit-test