| 
									
										
										
										
											2016-03-29 23:43:46 -04:00
										 |  |  | USING: tools.test random sorting sequences hashtables assocs | 
					
						
							| 
									
										
										
										
											2009-06-11 18:55:14 -04:00
										 |  |  | kernel fry arrays splitting namespaces math accessors vectors locals | 
					
						
							| 
									
										
										
										
											2009-08-07 18:44:50 -04:00
										 |  |  | math.order grouping strings strings.private classes layouts | 
					
						
							| 
									
										
										
										
											2008-10-09 00:42:53 -04:00
										 |  |  | cpu.architecture | 
					
						
							| 
									
										
										
										
											2009-05-29 14:11:34 -04:00
										 |  |  | compiler.cfg | 
					
						
							|  |  |  | compiler.cfg.optimizer | 
					
						
							| 
									
										
										
										
											2008-10-09 00:42:53 -04:00
										 |  |  | compiler.cfg.instructions | 
					
						
							| 
									
										
										
										
											2008-09-15 02:54:48 -04:00
										 |  |  | compiler.cfg.registers | 
					
						
							| 
									
										
										
										
											2009-06-11 18:55:14 -04:00
										 |  |  | compiler.cfg.predecessors | 
					
						
							|  |  |  | compiler.cfg.rpo | 
					
						
							| 
									
										
										
										
											2009-06-21 01:20:01 -04:00
										 |  |  | compiler.cfg.debugger | 
					
						
							| 
									
										
										
										
											2009-08-08 05:02:18 -04:00
										 |  |  | compiler.cfg.def-use | 
					
						
							| 
									
										
										
										
											2009-07-14 13:06:55 -04:00
										 |  |  | compiler.cfg.comparisons | 
					
						
							| 
									
										
										
										
											2012-12-31 13:30:17 -05:00
										 |  |  | compiler.cfg.ssa.destruction.leaders | 
					
						
							| 
									
										
										
										
											2008-09-17 01:46:38 -04:00
										 |  |  | compiler.cfg.linear-scan | 
					
						
							| 
									
										
										
										
											2008-10-19 02:10:21 -04:00
										 |  |  | compiler.cfg.linear-scan.allocation | 
					
						
							| 
									
										
										
										
											2009-06-11 18:55:14 -04:00
										 |  |  | compiler.cfg.linear-scan.allocation.state | 
					
						
							|  |  |  | compiler.cfg.linear-scan.allocation.splitting | 
					
						
							|  |  |  | compiler.cfg.linear-scan.allocation.spilling | 
					
						
							| 
									
										
										
										
											2015-09-13 12:02:01 -04:00
										 |  |  | compiler.cfg.linear-scan.live-intervals | 
					
						
							|  |  |  | compiler.cfg.linear-scan.numbering | 
					
						
							|  |  |  | compiler.cfg.linear-scan.ranges | 
					
						
							| 
									
										
										
										
											2014-11-07 13:02:14 -05:00
										 |  |  | compiler.cfg.linear-scan.debugger | 
					
						
							|  |  |  | compiler.cfg.utilities ;
 | 
					
						
							| 
									
										
										
										
											2010-02-26 17:17:40 -05:00
										 |  |  | IN: compiler.cfg.linear-scan.tests | 
					
						
							| 
									
										
										
										
											2008-09-15 02:54:48 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-06-11 18:55:14 -04:00
										 |  |  | check-allocation? on
 | 
					
						
							| 
									
										
										
										
											2009-07-07 14:01:27 -04:00
										 |  |  | check-numbering? on
 | 
					
						
							| 
									
										
										
										
											2009-06-11 18:55:14 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-16 19:57:45 -04:00
										 |  |  | ! Live interval calculation | 
					
						
							|  |  |  | : test-live-intervals ( -- )
 | 
					
						
							| 
									
										
										
										
											2015-11-02 12:40:13 -05:00
										 |  |  |     ! A value is defined and never used; make sure it has the right | 
					
						
							|  |  |  |     ! live range | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         T{ ##load-integer f 1 0 } | 
					
						
							|  |  |  |         T{ ##replace-imm f D: 0 "hi" } | 
					
						
							|  |  |  |         T{ ##branch } | 
					
						
							|  |  |  |     } insns>cfg | 
					
						
							| 
									
										
										
										
											2010-07-16 19:57:45 -04:00
										 |  |  |     [ cfg set ] [ number-instructions ] [ compute-live-intervals ] tri
 | 
					
						
							| 
									
										
										
										
											2015-06-14 02:53:00 -04:00
										 |  |  |     drop ;
 | 
					
						
							| 
									
										
										
										
											2010-07-16 19:57:45 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | { } [ | 
					
						
							| 
									
										
										
										
											2010-07-16 19:57:45 -04:00
										 |  |  |     H{ | 
					
						
							|  |  |  |         { 1 int-rep } | 
					
						
							|  |  |  |     } representations set
 | 
					
						
							|  |  |  |     H{ | 
					
						
							|  |  |  |         { 1 1 } | 
					
						
							|  |  |  |     } leader-map set
 | 
					
						
							|  |  |  |     test-live-intervals | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | { 0 0 } [ | 
					
						
							| 
									
										
										
										
											2016-04-01 00:08:40 -04:00
										 |  |  |     1 live-intervals get at ranges>> ranges-endpoints | 
					
						
							| 
									
										
										
										
											2010-07-16 19:57:45 -04:00
										 |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-09-13 22:43:58 -04:00
										 |  |  | ! Live interval splitting | 
					
						
							| 
									
										
										
										
											2015-11-02 12:40:13 -05:00
										 |  |  | { } insns>cfg [ stack-frame>> 4 >>spill-area-align drop ] keep cfg set
 | 
					
						
							| 
									
										
										
										
											2009-07-30 03:13:30 -04:00
										 |  |  | H{ } spill-slots set
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-08 05:02:18 -04:00
										 |  |  | H{ | 
					
						
							| 
									
										
										
										
											2009-09-03 21:58:56 -04:00
										 |  |  |     { 1 float-rep } | 
					
						
							|  |  |  |     { 2 float-rep } | 
					
						
							|  |  |  |     { 3 float-rep } | 
					
						
							| 
									
										
										
										
											2009-08-08 05:02:18 -04:00
										 |  |  | } representations set
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-05-14 17:55:00 -04:00
										 |  |  | : clean-up-split ( a b -- a b )
 | 
					
						
							|  |  |  |     [ dup [ [ >vector ] change-uses [ >vector ] change-ranges ] when ] bi@ ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2013-03-24 04:09:37 -04:00
										 |  |  |     T{ live-interval-state | 
					
						
							| 
									
										
										
										
											2009-08-08 05:02:18 -04:00
										 |  |  |        { vreg 1 } | 
					
						
							| 
									
										
										
										
											2010-05-07 18:22:35 -04:00
										 |  |  |        { uses V{ T{ vreg-use f 0 float-rep f } T{ vreg-use f 1 f float-rep } } } | 
					
						
							| 
									
										
										
										
											2015-09-15 20:14:06 -04:00
										 |  |  |        { ranges V{ { 0 2 } } } | 
					
						
							| 
									
										
										
										
											2009-09-27 20:28:20 -04:00
										 |  |  |        { spill-to T{ spill-slot f 0 } } | 
					
						
							| 
									
										
										
										
											2010-05-07 18:22:35 -04:00
										 |  |  |        { spill-rep float-rep } | 
					
						
							| 
									
										
										
										
											2008-10-19 02:10:21 -04:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2013-03-24 04:09:37 -04:00
										 |  |  |     T{ live-interval-state | 
					
						
							| 
									
										
										
										
											2009-08-08 05:02:18 -04:00
										 |  |  |        { vreg 1 } | 
					
						
							| 
									
										
										
										
											2010-05-07 18:22:35 -04:00
										 |  |  |        { uses V{ T{ vreg-use f 5 f float-rep } } } | 
					
						
							| 
									
										
										
										
											2015-09-15 20:14:06 -04:00
										 |  |  |        { ranges V{ { 5 5 } } } | 
					
						
							| 
									
										
										
										
											2009-09-27 20:28:20 -04:00
										 |  |  |        { reload-from T{ spill-slot f 0 } } | 
					
						
							| 
									
										
										
										
											2010-05-07 18:22:35 -04:00
										 |  |  |        { reload-rep float-rep } | 
					
						
							| 
									
										
										
										
											2008-10-19 02:10:21 -04:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | } [ | 
					
						
							| 
									
										
										
										
											2013-03-24 04:09:37 -04:00
										 |  |  |     T{ live-interval-state | 
					
						
							| 
									
										
										
										
											2009-08-08 05:02:18 -04:00
										 |  |  |        { vreg 1 } | 
					
						
							| 
									
										
										
										
											2015-09-15 20:14:06 -04:00
										 |  |  |        { uses | 
					
						
							|  |  |  |          V{ | 
					
						
							|  |  |  |              T{ vreg-use f 0 float-rep f } | 
					
						
							|  |  |  |              T{ vreg-use f 1 f float-rep } | 
					
						
							|  |  |  |              T{ vreg-use f 5 f float-rep } | 
					
						
							|  |  |  |          } | 
					
						
							|  |  |  |        } | 
					
						
							|  |  |  |        { ranges V{ { 0 5 } } } | 
					
						
							| 
									
										
										
										
											2009-07-30 03:13:30 -04:00
										 |  |  |     } 2 split-for-spill | 
					
						
							| 
									
										
										
										
											2010-05-14 17:55:00 -04:00
										 |  |  |     clean-up-split | 
					
						
							| 
									
										
										
										
											2009-06-11 18:55:14 -04:00
										 |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2010-05-07 18:22:35 -04:00
										 |  |  |     f
 | 
					
						
							| 
									
										
										
										
											2013-03-24 04:09:37 -04:00
										 |  |  |     T{ live-interval-state | 
					
						
							| 
									
										
										
										
											2009-08-08 05:02:18 -04:00
										 |  |  |        { vreg 2 } | 
					
						
							| 
									
										
										
										
											2010-05-07 18:22:35 -04:00
										 |  |  |        { uses V{ T{ vreg-use f 1 f float-rep } T{ vreg-use f 5 f float-rep } } } | 
					
						
							| 
									
										
										
										
											2015-09-15 20:14:06 -04:00
										 |  |  |        { ranges V{ { 1 5 } } } | 
					
						
							| 
									
										
										
										
											2009-09-27 20:28:20 -04:00
										 |  |  |        { reload-from T{ spill-slot f 4 } } | 
					
						
							| 
									
										
										
										
											2010-05-07 18:22:35 -04:00
										 |  |  |        { reload-rep float-rep } | 
					
						
							| 
									
										
										
										
											2009-06-11 18:55:14 -04:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | } [ | 
					
						
							| 
									
										
										
										
											2013-03-24 04:09:37 -04:00
										 |  |  |     T{ live-interval-state | 
					
						
							| 
									
										
										
										
											2009-08-08 05:02:18 -04:00
										 |  |  |        { vreg 2 } | 
					
						
							| 
									
										
										
										
											2015-09-15 20:14:06 -04:00
										 |  |  |        { uses | 
					
						
							|  |  |  |          V{ | 
					
						
							|  |  |  |              T{ vreg-use f 0 float-rep f } | 
					
						
							|  |  |  |              T{ vreg-use f 1 f float-rep } | 
					
						
							|  |  |  |              T{ vreg-use f 5 f float-rep } | 
					
						
							|  |  |  |          } | 
					
						
							|  |  |  |        } | 
					
						
							|  |  |  |        { ranges V{ { 0 5 } } } | 
					
						
							| 
									
										
										
										
											2009-07-30 03:13:30 -04:00
										 |  |  |     } 0 split-for-spill | 
					
						
							| 
									
										
										
										
											2010-05-14 17:55:00 -04:00
										 |  |  |     clean-up-split | 
					
						
							| 
									
										
										
										
											2008-10-19 02:10:21 -04:00
										 |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2013-03-24 04:09:37 -04:00
										 |  |  |     T{ live-interval-state | 
					
						
							| 
									
										
										
										
											2009-08-08 05:02:18 -04:00
										 |  |  |        { vreg 3 } | 
					
						
							| 
									
										
										
										
											2010-05-11 19:11:31 -04:00
										 |  |  |        { uses V{ T{ vreg-use f 0 float-rep f } T{ vreg-use f 1 f float-rep } } } | 
					
						
							| 
									
										
										
										
											2015-09-15 20:14:06 -04:00
										 |  |  |        { ranges V{ { 0 2 } } } | 
					
						
							| 
									
										
										
										
											2010-05-11 19:11:31 -04:00
										 |  |  |        { spill-to T{ spill-slot f 8 } } | 
					
						
							|  |  |  |        { spill-rep float-rep } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     f
 | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | } [ | 
					
						
							| 
									
										
										
										
											2013-03-24 04:09:37 -04:00
										 |  |  |     T{ live-interval-state | 
					
						
							| 
									
										
										
										
											2010-05-11 19:11:31 -04:00
										 |  |  |        { vreg 3 } | 
					
						
							| 
									
										
										
										
											2015-09-15 20:14:06 -04:00
										 |  |  |        { uses | 
					
						
							|  |  |  |          V{ | 
					
						
							|  |  |  |              T{ vreg-use f 0 float-rep f } | 
					
						
							|  |  |  |              T{ vreg-use f 1 f float-rep } | 
					
						
							|  |  |  |              T{ vreg-use f 5 f float-rep } | 
					
						
							|  |  |  |          } | 
					
						
							|  |  |  |        } | 
					
						
							|  |  |  |        { ranges V{ { 0 5 } } } | 
					
						
							| 
									
										
										
										
											2010-05-11 19:11:31 -04:00
										 |  |  |     } 5 split-for-spill | 
					
						
							| 
									
										
										
										
											2010-05-14 17:55:00 -04:00
										 |  |  |     clean-up-split | 
					
						
							| 
									
										
										
										
											2010-05-11 19:11:31 -04:00
										 |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2013-03-24 04:09:37 -04:00
										 |  |  |     T{ live-interval-state | 
					
						
							| 
									
										
										
										
											2010-05-11 19:11:31 -04:00
										 |  |  |        { vreg 4 } | 
					
						
							| 
									
										
										
										
											2010-05-07 18:22:35 -04:00
										 |  |  |        { uses V{ T{ vreg-use f 0 float-rep f } } } | 
					
						
							| 
									
										
										
										
											2015-09-15 20:14:06 -04:00
										 |  |  |        { ranges V{ { 0 1 } } } | 
					
						
							| 
									
										
										
										
											2010-05-11 19:11:31 -04:00
										 |  |  |        { spill-to T{ spill-slot f 12 } } | 
					
						
							| 
									
										
										
										
											2010-05-07 18:22:35 -04:00
										 |  |  |        { spill-rep float-rep } | 
					
						
							| 
									
										
										
										
											2009-07-01 18:41:07 -04:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2013-03-24 04:09:37 -04:00
										 |  |  |     T{ live-interval-state | 
					
						
							| 
									
										
										
										
											2010-05-11 19:11:31 -04:00
										 |  |  |        { vreg 4 } | 
					
						
							| 
									
										
										
										
											2010-05-07 18:22:35 -04:00
										 |  |  |        { uses V{ T{ vreg-use f 20 f float-rep } T{ vreg-use f 30 f float-rep } } } | 
					
						
							| 
									
										
										
										
											2015-09-15 20:14:06 -04:00
										 |  |  |        { ranges V{ { 20 30 } } } | 
					
						
							| 
									
										
										
										
											2010-05-11 19:11:31 -04:00
										 |  |  |        { reload-from T{ spill-slot f 12 } } | 
					
						
							| 
									
										
										
										
											2010-05-07 18:22:35 -04:00
										 |  |  |        { reload-rep float-rep } | 
					
						
							| 
									
										
										
										
											2009-07-01 18:41:07 -04:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | } [ | 
					
						
							| 
									
										
										
										
											2013-03-24 04:09:37 -04:00
										 |  |  |     T{ live-interval-state | 
					
						
							| 
									
										
										
										
											2010-05-11 19:11:31 -04:00
										 |  |  |        { vreg 4 } | 
					
						
							| 
									
										
										
										
											2015-09-15 20:14:06 -04:00
										 |  |  |        { uses | 
					
						
							|  |  |  |          V{ | 
					
						
							|  |  |  |              T{ vreg-use f 0 float-rep f } | 
					
						
							|  |  |  |              T{ vreg-use f 20 f float-rep } | 
					
						
							|  |  |  |              T{ vreg-use f 30 f float-rep } | 
					
						
							|  |  |  |          } | 
					
						
							|  |  |  |        } | 
					
						
							|  |  |  |        { ranges V{ { 0 8 } { 10 18 } { 20 30 } } } | 
					
						
							| 
									
										
										
										
											2010-05-07 18:22:35 -04:00
										 |  |  |     } 10 split-for-spill | 
					
						
							| 
									
										
										
										
											2010-05-14 17:55:00 -04:00
										 |  |  |     clean-up-split | 
					
						
							| 
									
										
										
										
											2010-05-07 18:22:35 -04:00
										 |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ! Don't insert reload if first usage is a def | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2013-03-24 04:09:37 -04:00
										 |  |  |     T{ live-interval-state | 
					
						
							| 
									
										
										
										
											2010-05-11 19:11:31 -04:00
										 |  |  |        { vreg 5 } | 
					
						
							| 
									
										
										
										
											2010-05-07 18:22:35 -04:00
										 |  |  |        { uses V{ T{ vreg-use f 0 float-rep f } } } | 
					
						
							| 
									
										
										
										
											2015-09-15 20:14:06 -04:00
										 |  |  |        { ranges V{ { 0 1 } } } | 
					
						
							| 
									
										
										
										
											2010-05-11 19:11:31 -04:00
										 |  |  |        { spill-to T{ spill-slot f 16 } } | 
					
						
							| 
									
										
										
										
											2010-05-07 18:22:35 -04:00
										 |  |  |        { spill-rep float-rep } | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2013-03-24 04:09:37 -04:00
										 |  |  |     T{ live-interval-state | 
					
						
							| 
									
										
										
										
											2010-05-11 19:11:31 -04:00
										 |  |  |        { vreg 5 } | 
					
						
							| 
									
										
										
										
											2010-05-07 18:22:35 -04:00
										 |  |  |        { uses V{ T{ vreg-use f 20 float-rep f } T{ vreg-use f 30 f float-rep } } } | 
					
						
							| 
									
										
										
										
											2015-09-15 20:14:06 -04:00
										 |  |  |        { ranges V{ { 20 30 } } } | 
					
						
							| 
									
										
										
										
											2010-05-07 18:22:35 -04:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | } [ | 
					
						
							| 
									
										
										
										
											2013-03-24 04:09:37 -04:00
										 |  |  |     T{ live-interval-state | 
					
						
							| 
									
										
										
										
											2010-05-11 19:11:31 -04:00
										 |  |  |        { vreg 5 } | 
					
						
							| 
									
										
										
										
											2015-09-15 20:14:06 -04:00
										 |  |  |        { uses | 
					
						
							|  |  |  |          V{ | 
					
						
							|  |  |  |              T{ vreg-use f 0 float-rep f } | 
					
						
							|  |  |  |              T{ vreg-use f 20 float-rep f } | 
					
						
							|  |  |  |              T{ vreg-use f 30 f float-rep } | 
					
						
							|  |  |  |          } | 
					
						
							|  |  |  |        } | 
					
						
							|  |  |  |        { ranges V{ { 0 8 } { 10 18 } { 20 30 } } } | 
					
						
							| 
									
										
										
										
											2009-07-30 03:13:30 -04:00
										 |  |  |     } 10 split-for-spill | 
					
						
							| 
									
										
										
										
											2010-05-14 17:55:00 -04:00
										 |  |  |     clean-up-split | 
					
						
							| 
									
										
										
										
											2009-07-05 22:32:23 -04:00
										 |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-05-07 18:22:35 -04:00
										 |  |  | ! Multiple representations | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2013-03-24 04:09:37 -04:00
										 |  |  |     T{ live-interval-state | 
					
						
							| 
									
										
										
										
											2010-05-11 19:11:31 -04:00
										 |  |  |        { vreg 6 } | 
					
						
							| 
									
										
										
										
											2010-05-07 18:22:35 -04:00
										 |  |  |        { uses V{ T{ vreg-use f 0 float-rep f } T{ vreg-use f 10 double-rep float-rep } } } | 
					
						
							| 
									
										
										
										
											2015-09-15 20:14:06 -04:00
										 |  |  |        { ranges V{ { 0 11 } } } | 
					
						
							| 
									
										
										
										
											2010-05-11 19:11:31 -04:00
										 |  |  |        { spill-to T{ spill-slot f 24 } } | 
					
						
							| 
									
										
										
										
											2010-05-07 18:22:35 -04:00
										 |  |  |        { spill-rep double-rep } | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2013-03-24 04:09:37 -04:00
										 |  |  |     T{ live-interval-state | 
					
						
							| 
									
										
										
										
											2010-05-11 19:11:31 -04:00
										 |  |  |        { vreg 6 } | 
					
						
							| 
									
										
										
										
											2010-05-07 18:22:35 -04:00
										 |  |  |        { uses V{ T{ vreg-use f 20 f double-rep } } } | 
					
						
							| 
									
										
										
										
											2015-09-15 20:14:06 -04:00
										 |  |  |        { ranges V{ { 20 20 } } } | 
					
						
							| 
									
										
										
										
											2010-05-11 19:11:31 -04:00
										 |  |  |        { reload-from T{ spill-slot f 24 } } | 
					
						
							| 
									
										
										
										
											2010-05-07 18:22:35 -04:00
										 |  |  |        { reload-rep double-rep } | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | } [ | 
					
						
							| 
									
										
										
										
											2013-03-24 04:09:37 -04:00
										 |  |  |     T{ live-interval-state | 
					
						
							| 
									
										
										
										
											2010-05-11 19:11:31 -04:00
										 |  |  |        { vreg 6 } | 
					
						
							| 
									
										
										
										
											2015-09-15 20:14:06 -04:00
										 |  |  |        { uses | 
					
						
							|  |  |  |          V{ | 
					
						
							|  |  |  |              T{ vreg-use f 0 float-rep f } | 
					
						
							|  |  |  |              T{ vreg-use f 10 double-rep float-rep } | 
					
						
							|  |  |  |              T{ vreg-use f 20 f double-rep } | 
					
						
							|  |  |  |          } | 
					
						
							|  |  |  |        } | 
					
						
							|  |  |  |        { ranges V{ { 0 20 } } } | 
					
						
							| 
									
										
										
										
											2010-05-07 18:22:35 -04:00
										 |  |  |     } 15 split-for-spill | 
					
						
							| 
									
										
										
										
											2010-05-14 17:55:00 -04:00
										 |  |  |     clean-up-split | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2010-05-14 17:55:00 -04:00
										 |  |  |     f
 | 
					
						
							| 
									
										
										
										
											2013-03-24 04:09:37 -04:00
										 |  |  |     T{ live-interval-state | 
					
						
							| 
									
										
										
										
											2010-05-14 17:55:00 -04:00
										 |  |  |         { vreg 7 } | 
					
						
							| 
									
										
										
										
											2015-09-15 20:14:06 -04:00
										 |  |  |         { ranges V{ { 8 8 } } } | 
					
						
							| 
									
										
										
										
											2010-05-14 17:55:00 -04:00
										 |  |  |         { uses V{ T{ vreg-use f 8 int-rep } } } | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | } [ | 
					
						
							| 
									
										
										
										
											2013-03-24 04:09:37 -04:00
										 |  |  |     T{ live-interval-state | 
					
						
							| 
									
										
										
										
											2010-05-14 17:55:00 -04:00
										 |  |  |         { vreg 7 } | 
					
						
							| 
									
										
										
										
											2015-09-15 20:14:06 -04:00
										 |  |  |         { ranges V{ { 4 8 } } } | 
					
						
							| 
									
										
										
										
											2010-05-14 17:55:00 -04:00
										 |  |  |         { uses V{ T{ vreg-use f 8 int-rep } } } | 
					
						
							|  |  |  |     } 4 split-for-spill | 
					
						
							|  |  |  |     clean-up-split | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ! trim-before-ranges, trim-after-ranges | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2013-03-24 04:09:37 -04:00
										 |  |  |     T{ live-interval-state | 
					
						
							| 
									
										
										
										
											2010-05-14 17:55:00 -04:00
										 |  |  |         { vreg 8 } | 
					
						
							| 
									
										
										
										
											2015-09-15 20:14:06 -04:00
										 |  |  |         { ranges V{ { 0 3 } } } | 
					
						
							| 
									
										
										
										
											2010-05-14 17:55:00 -04:00
										 |  |  |         { uses V{ T{ vreg-use f 0 f int-rep } T{ vreg-use f 2 f int-rep } } } | 
					
						
							|  |  |  |         { spill-to T{ spill-slot f 32 } } | 
					
						
							|  |  |  |         { spill-rep int-rep } | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2013-03-24 04:09:37 -04:00
										 |  |  |     T{ live-interval-state | 
					
						
							| 
									
										
										
										
											2010-05-14 17:55:00 -04:00
										 |  |  |         { vreg 8 } | 
					
						
							| 
									
										
										
										
											2015-09-15 20:14:06 -04:00
										 |  |  |         { ranges V{ { 14 16 } } } | 
					
						
							| 
									
										
										
										
											2010-05-14 17:55:00 -04:00
										 |  |  |         { uses V{ T{ vreg-use f 14 f int-rep } } } | 
					
						
							|  |  |  |         { reload-from T{ spill-slot f 32 } } | 
					
						
							|  |  |  |         { reload-rep int-rep } | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | } [ | 
					
						
							| 
									
										
										
										
											2013-03-24 04:09:37 -04:00
										 |  |  |     T{ live-interval-state | 
					
						
							| 
									
										
										
										
											2010-05-14 17:55:00 -04:00
										 |  |  |         { vreg 8 } | 
					
						
							| 
									
										
										
										
											2015-09-15 20:14:06 -04:00
										 |  |  |         { ranges V{ { 0 4 } { 6 10 } { 12 16 } } } | 
					
						
							| 
									
										
										
										
											2015-09-14 12:49:18 -04:00
										 |  |  |         { uses | 
					
						
							|  |  |  |           V{ | 
					
						
							|  |  |  |               T{ vreg-use f 0 f int-rep } | 
					
						
							|  |  |  |               T{ vreg-use f 2 f int-rep } | 
					
						
							|  |  |  |               T{ vreg-use f 14 f int-rep } } | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2010-05-14 17:55:00 -04:00
										 |  |  |     } 8 split-for-spill | 
					
						
							|  |  |  |     clean-up-split | 
					
						
							| 
									
										
										
										
											2010-05-07 18:22:35 -04:00
										 |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-08 05:02:18 -04:00
										 |  |  | H{ | 
					
						
							|  |  |  |     { 1 int-rep } | 
					
						
							|  |  |  |     { 2 int-rep } | 
					
						
							|  |  |  |     { 3 int-rep } | 
					
						
							|  |  |  | } representations set
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2009-07-07 04:28:55 -04:00
										 |  |  |     { | 
					
						
							|  |  |  |         3
 | 
					
						
							|  |  |  |         10
 | 
					
						
							| 
									
										
										
										
											2008-10-19 02:10:21 -04:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | } [ | 
					
						
							| 
									
										
										
										
											2009-07-07 04:28:55 -04:00
										 |  |  |     H{ | 
					
						
							|  |  |  |         { int-regs | 
					
						
							|  |  |  |           V{ | 
					
						
							| 
									
										
										
										
											2013-03-24 04:09:37 -04:00
										 |  |  |               T{ live-interval-state | 
					
						
							| 
									
										
										
										
											2009-08-08 05:02:18 -04:00
										 |  |  |                  { vreg 1 } | 
					
						
							| 
									
										
										
										
											2009-07-07 04:28:55 -04:00
										 |  |  |                  { reg 1 } | 
					
						
							| 
									
										
										
										
											2016-04-01 18:23:49 -04:00
										 |  |  |                  { ranges V{ { 1 15 } } } | 
					
						
							| 
									
										
										
										
											2015-09-15 20:14:06 -04:00
										 |  |  |                  { uses | 
					
						
							|  |  |  |                    V{ | 
					
						
							|  |  |  |                        T{ vreg-use f 1 int-rep f } | 
					
						
							|  |  |  |                        T{ vreg-use f 3 f int-rep } | 
					
						
							|  |  |  |                        T{ vreg-use f 7 f int-rep } | 
					
						
							|  |  |  |                        T{ vreg-use f 10 f int-rep } | 
					
						
							|  |  |  |                        T{ vreg-use f 15 f int-rep } | 
					
						
							|  |  |  |                    } | 
					
						
							|  |  |  |                  } | 
					
						
							| 
									
										
										
										
											2009-07-07 04:28:55 -04:00
										 |  |  |               } | 
					
						
							| 
									
										
										
										
											2013-03-24 04:09:37 -04:00
										 |  |  |               T{ live-interval-state | 
					
						
							| 
									
										
										
										
											2009-08-08 05:02:18 -04:00
										 |  |  |                  { vreg 2 } | 
					
						
							| 
									
										
										
										
											2009-07-07 04:28:55 -04:00
										 |  |  |                  { reg 2 } | 
					
						
							| 
									
										
										
										
											2016-04-01 18:23:49 -04:00
										 |  |  |                  { ranges V{ { 3 8 } } } | 
					
						
							| 
									
										
										
										
											2015-09-15 20:14:06 -04:00
										 |  |  |                  { uses | 
					
						
							|  |  |  |                    V{ | 
					
						
							|  |  |  |                        T{ vreg-use f 3 int-rep f } | 
					
						
							|  |  |  |                        T{ vreg-use f 4 f int-rep } | 
					
						
							|  |  |  |                        T{ vreg-use f 8 f int-rep } | 
					
						
							|  |  |  |                    } | 
					
						
							|  |  |  |                  } | 
					
						
							| 
									
										
										
										
											2009-07-07 04:28:55 -04:00
										 |  |  |               } | 
					
						
							| 
									
										
										
										
											2013-03-24 04:09:37 -04:00
										 |  |  |               T{ live-interval-state | 
					
						
							| 
									
										
										
										
											2009-08-08 05:02:18 -04:00
										 |  |  |                  { vreg 3 } | 
					
						
							| 
									
										
										
										
											2009-07-07 04:28:55 -04:00
										 |  |  |                  { reg 3 } | 
					
						
							| 
									
										
										
										
											2016-04-01 18:23:49 -04:00
										 |  |  |                  { ranges V{ { 3 10 } } } | 
					
						
							| 
									
										
										
										
											2010-05-07 18:22:35 -04:00
										 |  |  |                  { uses V{ T{ vreg-use f 3 int-rep f } T{ vreg-use f 10 f int-rep } } } | 
					
						
							| 
									
										
										
										
											2009-07-07 04:28:55 -04:00
										 |  |  |               } | 
					
						
							|  |  |  |           } | 
					
						
							| 
									
										
										
										
											2008-10-19 02:10:21 -04:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2009-07-07 04:28:55 -04:00
										 |  |  |     } active-intervals set
 | 
					
						
							|  |  |  |     H{ } inactive-intervals set
 | 
					
						
							| 
									
										
										
										
											2013-03-24 04:09:37 -04:00
										 |  |  |     T{ live-interval-state | 
					
						
							| 
									
										
										
										
											2016-04-01 00:08:40 -04:00
										 |  |  |        { vreg 1 } | 
					
						
							| 
									
										
										
										
											2016-04-01 18:23:49 -04:00
										 |  |  |        { ranges V{ { 5 5 } } } | 
					
						
							| 
									
										
										
										
											2016-04-01 00:08:40 -04:00
										 |  |  |        { uses V{ T{ vreg-use f 5 int-rep f } } } | 
					
						
							| 
									
										
										
										
											2008-10-19 02:10:21 -04:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2009-07-07 04:28:55 -04:00
										 |  |  |     spill-status | 
					
						
							| 
									
										
										
										
											2008-10-19 02:10:21 -04:00
										 |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2009-07-07 04:28:55 -04:00
										 |  |  |     { | 
					
						
							|  |  |  |         1
 | 
					
						
							|  |  |  |         1/0. | 
					
						
							| 
									
										
										
										
											2008-10-19 02:10:21 -04:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | } [ | 
					
						
							| 
									
										
										
										
											2009-07-07 04:28:55 -04:00
										 |  |  |     H{ | 
					
						
							|  |  |  |         { int-regs | 
					
						
							|  |  |  |           V{ | 
					
						
							| 
									
										
										
										
											2013-03-24 04:09:37 -04:00
										 |  |  |               T{ live-interval-state | 
					
						
							| 
									
										
										
										
											2009-08-08 05:02:18 -04:00
										 |  |  |                  { vreg 1 } | 
					
						
							| 
									
										
										
										
											2009-07-07 04:28:55 -04:00
										 |  |  |                  { reg 1 } | 
					
						
							| 
									
										
										
										
											2016-04-01 18:23:49 -04:00
										 |  |  |                  { ranges V{ { 1 15 } } } | 
					
						
							| 
									
										
										
										
											2010-05-07 18:22:35 -04:00
										 |  |  |                  { uses V{ T{ vreg-use f 1 int-rep f } } } | 
					
						
							| 
									
										
										
										
											2009-07-07 04:28:55 -04:00
										 |  |  |               } | 
					
						
							| 
									
										
										
										
											2013-03-24 04:09:37 -04:00
										 |  |  |               T{ live-interval-state | 
					
						
							| 
									
										
										
										
											2009-08-08 05:02:18 -04:00
										 |  |  |                  { vreg 2 } | 
					
						
							| 
									
										
										
										
											2009-07-07 04:28:55 -04:00
										 |  |  |                  { reg 2 } | 
					
						
							| 
									
										
										
										
											2010-05-07 18:22:35 -04:00
										 |  |  |                  { uses V{ T{ vreg-use f 3 int-rep f } T{ vreg-use f 8 f int-rep } } } | 
					
						
							| 
									
										
										
										
											2009-07-07 04:28:55 -04:00
										 |  |  |               } | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } active-intervals set
 | 
					
						
							|  |  |  |     H{ } inactive-intervals set
 | 
					
						
							| 
									
										
										
										
											2013-03-24 04:09:37 -04:00
										 |  |  |     T{ live-interval-state | 
					
						
							| 
									
										
										
										
											2016-04-01 00:08:40 -04:00
										 |  |  |        { vreg 3 } | 
					
						
							| 
									
										
										
										
											2016-04-01 18:23:49 -04:00
										 |  |  |        { ranges V{ { 5 5 } } } | 
					
						
							| 
									
										
										
										
											2016-04-01 00:08:40 -04:00
										 |  |  |        { uses V{ T{ vreg-use f 5 int-rep f } } } | 
					
						
							| 
									
										
										
										
											2008-10-19 02:10:21 -04:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2009-07-07 04:28:55 -04:00
										 |  |  |     spill-status | 
					
						
							| 
									
										
										
										
											2008-10-19 02:10:21 -04:00
										 |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-08 05:02:18 -04:00
										 |  |  | H{ { 1 int-rep } { 2 int-rep } } representations set
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | { } [ | 
					
						
							| 
									
										
										
										
											2008-09-15 02:54:48 -04:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2013-03-24 04:09:37 -04:00
										 |  |  |         T{ live-interval-state | 
					
						
							| 
									
										
										
										
											2009-08-08 05:02:18 -04:00
										 |  |  |            { vreg 1 } | 
					
						
							| 
									
										
										
										
											2010-05-07 18:22:35 -04:00
										 |  |  |            { uses V{ T{ vreg-use f 0 int-rep f } T{ vreg-use f 100 f int-rep } } } | 
					
						
							| 
									
										
										
										
											2015-09-15 20:14:06 -04:00
										 |  |  |            { ranges V{ { 0 100 } } } | 
					
						
							| 
									
										
										
										
											2009-06-04 19:53:02 -04:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2008-09-15 02:54:48 -04:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2008-10-19 02:10:21 -04:00
										 |  |  |     H{ { int-regs { "A" } } } | 
					
						
							| 
									
										
										
										
											2008-09-15 02:54:48 -04:00
										 |  |  |     check-linear-scan | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | { } [ | 
					
						
							| 
									
										
										
										
											2008-09-15 02:54:48 -04:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2013-03-24 04:09:37 -04:00
										 |  |  |         T{ live-interval-state | 
					
						
							| 
									
										
										
										
											2009-08-08 05:02:18 -04:00
										 |  |  |            { vreg 1 } | 
					
						
							| 
									
										
										
										
											2010-05-07 18:22:35 -04:00
										 |  |  |            { uses V{ T{ vreg-use f 0 int-rep f } T{ vreg-use f 10 f int-rep } } } | 
					
						
							| 
									
										
										
										
											2015-09-15 20:14:06 -04:00
										 |  |  |            { ranges V{ { 0 10 } } } | 
					
						
							| 
									
										
										
										
											2009-06-04 19:53:02 -04:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2013-03-24 04:09:37 -04:00
										 |  |  |         T{ live-interval-state | 
					
						
							| 
									
										
										
										
											2009-08-08 05:02:18 -04:00
										 |  |  |            { vreg 2 } | 
					
						
							| 
									
										
										
										
											2010-05-07 18:22:35 -04:00
										 |  |  |            { uses V{ T{ vreg-use f 11 int-rep f } T{ vreg-use f 20 f int-rep } } } | 
					
						
							| 
									
										
										
										
											2015-09-15 20:14:06 -04:00
										 |  |  |            { ranges V{ { 11 20 } } } | 
					
						
							| 
									
										
										
										
											2009-06-04 19:53:02 -04:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2008-09-15 02:54:48 -04:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2008-10-19 02:10:21 -04:00
										 |  |  |     H{ { int-regs { "A" } } } | 
					
						
							| 
									
										
										
										
											2008-09-15 02:54:48 -04:00
										 |  |  |     check-linear-scan | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | { } [ | 
					
						
							| 
									
										
										
										
											2008-09-15 02:54:48 -04:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2013-03-24 04:09:37 -04:00
										 |  |  |         T{ live-interval-state | 
					
						
							| 
									
										
										
										
											2009-08-08 05:02:18 -04:00
										 |  |  |            { vreg 1 } | 
					
						
							| 
									
										
										
										
											2010-05-07 18:22:35 -04:00
										 |  |  |            { uses V{ T{ vreg-use f 0 int-rep f } T{ vreg-use f 100 f int-rep } } } | 
					
						
							| 
									
										
										
										
											2015-09-15 20:14:06 -04:00
										 |  |  |            { ranges V{ { 0 100 } } } | 
					
						
							| 
									
										
										
										
											2009-06-04 19:53:02 -04:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2013-03-24 04:09:37 -04:00
										 |  |  |         T{ live-interval-state | 
					
						
							| 
									
										
										
										
											2009-08-08 05:02:18 -04:00
										 |  |  |            { vreg 2 } | 
					
						
							| 
									
										
										
										
											2010-05-07 18:22:35 -04:00
										 |  |  |            { uses V{ T{ vreg-use f 30 int-rep f } T{ vreg-use f 60 f int-rep } } } | 
					
						
							| 
									
										
										
										
											2015-09-15 20:14:06 -04:00
										 |  |  |            { ranges V{ { 30 60 } } } | 
					
						
							| 
									
										
										
										
											2009-06-04 19:53:02 -04:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2008-09-15 02:54:48 -04:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2008-10-19 02:10:21 -04:00
										 |  |  |     H{ { int-regs { "A" } } } | 
					
						
							| 
									
										
										
										
											2008-09-15 02:54:48 -04:00
										 |  |  |     check-linear-scan | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | { } [ | 
					
						
							| 
									
										
										
										
											2008-09-15 02:54:48 -04:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2013-03-24 04:09:37 -04:00
										 |  |  |         T{ live-interval-state | 
					
						
							| 
									
										
										
										
											2009-08-08 05:02:18 -04:00
										 |  |  |            { vreg 1 } | 
					
						
							| 
									
										
										
										
											2010-05-07 18:22:35 -04:00
										 |  |  |            { uses V{ T{ vreg-use f 0 int-rep f } T{ vreg-use f 100 f int-rep } } } | 
					
						
							| 
									
										
										
										
											2015-09-15 20:14:06 -04:00
										 |  |  |            { ranges V{ { 0 100 } } } | 
					
						
							| 
									
										
										
										
											2009-06-04 19:53:02 -04:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2013-03-24 04:09:37 -04:00
										 |  |  |         T{ live-interval-state | 
					
						
							| 
									
										
										
										
											2009-08-08 05:02:18 -04:00
										 |  |  |            { vreg 2 } | 
					
						
							| 
									
										
										
										
											2010-05-07 18:22:35 -04:00
										 |  |  |            { uses V{ T{ vreg-use f 30 int-rep f } T{ vreg-use f 200 f int-rep } } } | 
					
						
							| 
									
										
										
										
											2015-09-15 20:14:06 -04:00
										 |  |  |            { ranges V{ { 30 200 } } } | 
					
						
							| 
									
										
										
										
											2009-06-04 19:53:02 -04:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2008-09-15 02:54:48 -04:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2008-10-19 02:10:21 -04:00
										 |  |  |     H{ { int-regs { "A" } } } | 
					
						
							| 
									
										
										
										
											2008-09-15 02:54:48 -04:00
										 |  |  |     check-linear-scan | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2013-03-24 04:09:37 -04:00
										 |  |  |         T{ live-interval-state | 
					
						
							| 
									
										
										
										
											2009-08-08 05:02:18 -04:00
										 |  |  |            { vreg 1 } | 
					
						
							| 
									
										
										
										
											2010-05-07 18:22:35 -04:00
										 |  |  |            { uses V{ T{ vreg-use f 0 int-rep f } T{ vreg-use f 100 f int-rep } } } | 
					
						
							| 
									
										
										
										
											2015-09-15 20:14:06 -04:00
										 |  |  |            { ranges V{ { 0 100 } } } | 
					
						
							| 
									
										
										
										
											2009-06-04 19:53:02 -04:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2013-03-24 04:09:37 -04:00
										 |  |  |         T{ live-interval-state | 
					
						
							| 
									
										
										
										
											2009-08-08 05:02:18 -04:00
										 |  |  |            { vreg 2 } | 
					
						
							| 
									
										
										
										
											2010-05-07 18:22:35 -04:00
										 |  |  |            { uses V{ T{ vreg-use f 30 int-rep f } T{ vreg-use f 100 f int-rep } } } | 
					
						
							| 
									
										
										
										
											2015-09-15 20:14:06 -04:00
										 |  |  |            { ranges V{ { 30 100 } } } | 
					
						
							| 
									
										
										
										
											2009-06-04 19:53:02 -04:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2008-09-15 02:54:48 -04:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2008-10-19 02:10:21 -04:00
										 |  |  |     H{ { int-regs { "A" } } } | 
					
						
							| 
									
										
										
										
											2008-09-15 02:54:48 -04:00
										 |  |  |     check-linear-scan | 
					
						
							|  |  |  | ] must-fail | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-07-30 03:13:30 -04:00
										 |  |  | ! Problem with spilling intervals with no more usages after the spill location | 
					
						
							| 
									
										
										
										
											2009-08-08 05:02:18 -04:00
										 |  |  | H{ | 
					
						
							|  |  |  |     { 1 int-rep } | 
					
						
							|  |  |  |     { 2 int-rep } | 
					
						
							|  |  |  |     { 3 int-rep } | 
					
						
							|  |  |  |     { 4 int-rep } | 
					
						
							|  |  |  |     { 5 int-rep } | 
					
						
							|  |  |  | } representations set
 | 
					
						
							| 
									
										
										
										
											2009-07-30 03:13:30 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | { } [ | 
					
						
							| 
									
										
										
										
											2009-07-30 03:13:30 -04:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2013-03-24 04:09:37 -04:00
										 |  |  |         T{ live-interval-state | 
					
						
							| 
									
										
										
										
											2009-08-08 05:02:18 -04:00
										 |  |  |            { vreg 1 } | 
					
						
							| 
									
										
										
										
											2015-09-15 20:14:06 -04:00
										 |  |  |            { uses | 
					
						
							|  |  |  |              V{ | 
					
						
							|  |  |  |                  T{ vreg-use f 0 int-rep f } | 
					
						
							|  |  |  |                  T{ vreg-use f 10 f int-rep } | 
					
						
							|  |  |  |                  T{ vreg-use f 20 f int-rep } | 
					
						
							|  |  |  |              } | 
					
						
							|  |  |  |            } | 
					
						
							|  |  |  |            { ranges V{ { 0 2 } { 10 20 } } } | 
					
						
							| 
									
										
										
										
											2009-07-30 03:13:30 -04:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2013-03-24 04:09:37 -04:00
										 |  |  |         T{ live-interval-state | 
					
						
							| 
									
										
										
										
											2009-08-08 05:02:18 -04:00
										 |  |  |            { vreg 2 } | 
					
						
							| 
									
										
										
										
											2015-09-15 20:14:06 -04:00
										 |  |  |            { uses | 
					
						
							|  |  |  |              V{ | 
					
						
							|  |  |  |                  T{ vreg-use f 0 int-rep f } | 
					
						
							|  |  |  |                  T{ vreg-use f 10 f int-rep } | 
					
						
							|  |  |  |                  T{ vreg-use f 20 f int-rep } | 
					
						
							|  |  |  |              } | 
					
						
							|  |  |  |            } | 
					
						
							|  |  |  |            { ranges V{ { 0 2 } { 10 20 } } } | 
					
						
							| 
									
										
										
										
											2009-07-30 03:13:30 -04:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2013-03-24 04:09:37 -04:00
										 |  |  |         T{ live-interval-state | 
					
						
							| 
									
										
										
										
											2009-08-08 05:02:18 -04:00
										 |  |  |            { vreg 3 } | 
					
						
							| 
									
										
										
										
											2010-05-07 18:22:35 -04:00
										 |  |  |            { uses V{ T{ vreg-use f 6 int-rep f } } } | 
					
						
							| 
									
										
										
										
											2015-09-15 20:14:06 -04:00
										 |  |  |            { ranges V{ { 4 8 } } } | 
					
						
							| 
									
										
										
										
											2009-07-30 03:13:30 -04:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2013-03-24 04:09:37 -04:00
										 |  |  |         T{ live-interval-state | 
					
						
							| 
									
										
										
										
											2009-08-08 05:02:18 -04:00
										 |  |  |            { vreg 4 } | 
					
						
							| 
									
										
										
										
											2010-05-07 18:22:35 -04:00
										 |  |  |            { uses V{ T{ vreg-use f 8 int-rep f } } } | 
					
						
							| 
									
										
										
										
											2015-09-15 20:14:06 -04:00
										 |  |  |            { ranges V{ { 4 8 } } } | 
					
						
							| 
									
										
										
										
											2009-07-30 03:13:30 -04:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         ! This guy will invoke the 'spill partially available' code path | 
					
						
							| 
									
										
										
										
											2013-03-24 04:09:37 -04:00
										 |  |  |         T{ live-interval-state | 
					
						
							| 
									
										
										
										
											2009-08-08 05:02:18 -04:00
										 |  |  |            { vreg 5 } | 
					
						
							| 
									
										
										
										
											2010-05-07 18:22:35 -04:00
										 |  |  |            { uses V{ T{ vreg-use f 8 int-rep f } } } | 
					
						
							| 
									
										
										
										
											2015-09-15 20:14:06 -04:00
										 |  |  |            { ranges V{ { 4 8 } } } | 
					
						
							| 
									
										
										
										
											2009-07-30 03:13:30 -04:00
										 |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     H{ { int-regs { "A" "B" } } } | 
					
						
							|  |  |  |     check-linear-scan | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ! Test spill-new code path | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | { } [ | 
					
						
							| 
									
										
										
										
											2009-07-30 03:13:30 -04:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2013-03-24 04:09:37 -04:00
										 |  |  |         T{ live-interval-state | 
					
						
							| 
									
										
										
										
											2009-08-08 05:02:18 -04:00
										 |  |  |            { vreg 1 } | 
					
						
							| 
									
										
										
										
											2010-05-07 18:22:35 -04:00
										 |  |  |            { uses V{ T{ vreg-use f 0 int-rep f } T{ vreg-use f 6 f int-rep } T{ vreg-use f 10 f int-rep } } } | 
					
						
							| 
									
										
										
										
											2015-09-15 20:14:06 -04:00
										 |  |  |            { ranges V{ { 0 10 } } } | 
					
						
							| 
									
										
										
										
											2009-07-30 03:13:30 -04:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         ! This guy will invoke the 'spill new' code path | 
					
						
							| 
									
										
										
										
											2013-03-24 04:09:37 -04:00
										 |  |  |         T{ live-interval-state | 
					
						
							| 
									
										
										
										
											2009-08-08 05:02:18 -04:00
										 |  |  |            { vreg 5 } | 
					
						
							| 
									
										
										
										
											2010-05-07 18:22:35 -04:00
										 |  |  |            { uses V{ T{ vreg-use f 8 int-rep f } } } | 
					
						
							| 
									
										
										
										
											2015-09-15 20:14:06 -04:00
										 |  |  |            { ranges V{ { 2 8 } } } | 
					
						
							| 
									
										
										
										
											2009-07-30 03:13:30 -04:00
										 |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     H{ { int-regs { "A" } } } | 
					
						
							|  |  |  |     check-linear-scan | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-07-01 18:41:07 -04:00
										 |  |  | ! register-status had problems because it used map>assoc where the sequence | 
					
						
							| 
									
										
										
										
											2009-06-30 17:07:58 -04:00
										 |  |  | ! had multiple keys | 
					
						
							| 
									
										
										
										
											2009-08-08 05:02:18 -04:00
										 |  |  | H{ | 
					
						
							|  |  |  |     { 1 int-rep } | 
					
						
							|  |  |  |     { 2 int-rep } | 
					
						
							|  |  |  |     { 3 int-rep } | 
					
						
							|  |  |  |     { 4 int-rep } | 
					
						
							|  |  |  | } representations set
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | { { 0 10 } } [ | 
					
						
							| 
									
										
										
										
											2009-06-30 17:07:58 -04:00
										 |  |  |     H{ | 
					
						
							|  |  |  |         { int-regs | 
					
						
							|  |  |  |           { | 
					
						
							| 
									
										
										
										
											2013-03-24 04:09:37 -04:00
										 |  |  |               T{ live-interval-state | 
					
						
							| 
									
										
										
										
											2009-08-08 05:02:18 -04:00
										 |  |  |                  { vreg 1 } | 
					
						
							| 
									
										
										
										
											2009-06-30 17:07:58 -04:00
										 |  |  |                  { reg 0 } | 
					
						
							| 
									
										
										
										
											2015-09-15 20:14:06 -04:00
										 |  |  |                  { ranges V{ { 0 2 } { 10 20 } } } | 
					
						
							| 
									
										
										
										
											2009-06-30 17:07:58 -04:00
										 |  |  |                  { uses V{ 0 2 10 20 } } | 
					
						
							|  |  |  |               } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-03-24 04:09:37 -04:00
										 |  |  |               T{ live-interval-state | 
					
						
							| 
									
										
										
										
											2009-08-08 05:02:18 -04:00
										 |  |  |                  { vreg 2 } | 
					
						
							| 
									
										
										
										
											2009-06-30 17:07:58 -04:00
										 |  |  |                  { reg 0 } | 
					
						
							| 
									
										
										
										
											2015-09-15 20:14:06 -04:00
										 |  |  |                  { ranges V{ { 4 6 } { 30 40 } } } | 
					
						
							| 
									
										
										
										
											2009-06-30 17:07:58 -04:00
										 |  |  |                  { uses V{ 4 6 30 40 } } | 
					
						
							|  |  |  |               } | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } inactive-intervals set
 | 
					
						
							|  |  |  |     H{ | 
					
						
							|  |  |  |         { int-regs | 
					
						
							|  |  |  |           { | 
					
						
							| 
									
										
										
										
											2013-03-24 04:09:37 -04:00
										 |  |  |               T{ live-interval-state | 
					
						
							| 
									
										
										
										
											2009-08-08 05:02:18 -04:00
										 |  |  |                  { vreg 3 } | 
					
						
							| 
									
										
										
										
											2009-06-30 17:07:58 -04:00
										 |  |  |                  { reg 1 } | 
					
						
							| 
									
										
										
										
											2015-09-15 20:14:06 -04:00
										 |  |  |                  { ranges V{ { 0 40 } } } | 
					
						
							| 
									
										
										
										
											2009-06-30 17:07:58 -04:00
										 |  |  |                  { uses V{ 0 40 } } | 
					
						
							|  |  |  |               } | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } active-intervals set
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-03-24 04:09:37 -04:00
										 |  |  |     T{ live-interval-state | 
					
						
							| 
									
										
										
										
											2010-04-28 03:35:46 -04:00
										 |  |  |         { vreg 4 } | 
					
						
							| 
									
										
										
										
											2015-09-15 20:14:06 -04:00
										 |  |  |         { ranges V{ { 8 10 } } } | 
					
						
							| 
									
										
										
										
											2010-05-07 18:22:35 -04:00
										 |  |  |         { uses V{ T{ vreg-use f 8 int-rep f } T{ vreg-use f 10 f int-rep } } } | 
					
						
							| 
									
										
										
										
											2009-06-30 17:07:58 -04:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2015-04-20 15:22:09 -04:00
										 |  |  |     H{ { int-regs { 0 1 } } } register-status | 
					
						
							| 
									
										
										
										
											2009-06-30 17:07:58 -04:00
										 |  |  | ] unit-test | 
					
						
							| 
									
										
										
										
											2014-10-14 07:41:14 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | { t } [ | 
					
						
							|  |  |  |     T{ cfg { frame-pointer? f } } admissible-registers machine-registers =
 | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | { f } [ | 
					
						
							|  |  |  |     T{ cfg { frame-pointer? t } } admissible-registers | 
					
						
							|  |  |  |     int-regs of frame-reg swap member?
 | 
					
						
							|  |  |  | ] unit-test |