2009-08-02 09:11:30 -04:00
|
|
|
USING: accessors compiler.cfg compiler.cfg.debugger
|
|
|
|
compiler.cfg.def-use compiler.cfg.dominance
|
2009-08-02 18:04:45 -04:00
|
|
|
compiler.cfg.instructions compiler.cfg.ssa.liveness
|
2009-08-02 09:11:30 -04:00
|
|
|
compiler.cfg.registers compiler.cfg.predecessors
|
2009-08-02 09:15:36 -04:00
|
|
|
compiler.cfg.ssa.interference
|
|
|
|
compiler.cfg.ssa.interference.live-ranges cpu.architecture
|
2009-08-02 09:11:30 -04:00
|
|
|
kernel namespaces tools.test ;
|
2009-08-02 09:15:36 -04:00
|
|
|
IN: compiler.cfg.ssa.interference.tests
|
2009-08-02 09:11:30 -04:00
|
|
|
|
|
|
|
: test-interference ( -- )
|
|
|
|
cfg new 0 get >>entry
|
|
|
|
compute-predecessors
|
2009-08-02 18:04:45 -04:00
|
|
|
dup precompute-liveness
|
2009-08-02 11:26:52 -04:00
|
|
|
dup compute-defs
|
2009-08-02 09:11:30 -04:00
|
|
|
dup compute-dominance
|
|
|
|
compute-live-ranges ;
|
|
|
|
|
|
|
|
V{
|
|
|
|
T{ ##peek f V int-regs 0 D 0 }
|
|
|
|
T{ ##peek f V int-regs 2 D 0 }
|
|
|
|
T{ ##copy f V int-regs 1 V int-regs 0 }
|
|
|
|
T{ ##copy f V int-regs 3 V int-regs 2 }
|
|
|
|
T{ ##branch }
|
|
|
|
} 0 test-bb
|
|
|
|
|
|
|
|
V{
|
|
|
|
T{ ##peek f V int-regs 4 D 0 }
|
|
|
|
T{ ##peek f V int-regs 5 D 0 }
|
|
|
|
T{ ##replace f V int-regs 3 D 0 }
|
|
|
|
T{ ##peek f V int-regs 6 D 0 }
|
|
|
|
T{ ##replace f V int-regs 5 D 0 }
|
|
|
|
T{ ##return }
|
|
|
|
} 1 test-bb
|
|
|
|
|
|
|
|
0 1 edge
|
|
|
|
|
|
|
|
[ ] [ test-interference ] unit-test
|
|
|
|
|
2009-08-02 11:35:02 -04:00
|
|
|
[ f ] [ V int-regs 0 V int-regs 1 vregs-interfere? ] unit-test
|
|
|
|
[ f ] [ V int-regs 1 V int-regs 0 vregs-interfere? ] unit-test
|
|
|
|
[ f ] [ V int-regs 2 V int-regs 3 vregs-interfere? ] unit-test
|
|
|
|
[ f ] [ V int-regs 3 V int-regs 2 vregs-interfere? ] unit-test
|
|
|
|
[ t ] [ V int-regs 0 V int-regs 2 vregs-interfere? ] unit-test
|
|
|
|
[ t ] [ V int-regs 2 V int-regs 0 vregs-interfere? ] unit-test
|
|
|
|
[ f ] [ V int-regs 1 V int-regs 3 vregs-interfere? ] unit-test
|
|
|
|
[ f ] [ V int-regs 3 V int-regs 1 vregs-interfere? ] unit-test
|
|
|
|
[ t ] [ V int-regs 3 V int-regs 4 vregs-interfere? ] unit-test
|
|
|
|
[ t ] [ V int-regs 4 V int-regs 3 vregs-interfere? ] unit-test
|
|
|
|
[ t ] [ V int-regs 3 V int-regs 5 vregs-interfere? ] unit-test
|
|
|
|
[ t ] [ V int-regs 5 V int-regs 3 vregs-interfere? ] unit-test
|
|
|
|
[ f ] [ V int-regs 3 V int-regs 6 vregs-interfere? ] unit-test
|
2009-08-02 18:04:45 -04:00
|
|
|
[ f ] [ V int-regs 6 V int-regs 3 vregs-interfere? ] unit-test
|