diff options
| author | Cliff Click <cliffc@acm.org> | 2025-06-13 15:42:08 -0700 |
|---|---|---|
| committer | Cliff Click <cliffc@acm.org> | 2025-07-08 20:29:09 -0700 |
| commit | fcce1e13814a02d8358eae9a40e33a7e6f2b5400 (patch) | |
| tree | b9623369d88e22a0be21dbba472eebfa476d02ab /src/test/java/com/seaofnodes/simple/Chapter06Test.java | |
| parent | 664761624f4b0e3d6d1593b99e576854beec5949 (diff) | |
| download | Simple-linear-chapter24.tar.gz Simple-linear-chapter24.zip | |
Unifying Structs and Arrayslinear-chapter24
Diffstat (limited to 'src/test/java/com/seaofnodes/simple/Chapter06Test.java')
| -rw-r--r-- | src/test/java/com/seaofnodes/simple/Chapter06Test.java | 305 |
1 files changed, 0 insertions, 305 deletions
diff --git a/src/test/java/com/seaofnodes/simple/Chapter06Test.java b/src/test/java/com/seaofnodes/simple/Chapter06Test.java deleted file mode 100644 index 1ff875b4..00000000 --- a/src/test/java/com/seaofnodes/simple/Chapter06Test.java +++ /dev/null @@ -1,305 +0,0 @@ -package com.seaofnodes.simple; - -import com.seaofnodes.simple.codegen.CodeGen; -import com.seaofnodes.simple.node.*; -import com.seaofnodes.simple.type.TypeInteger; -import org.junit.Test; - -import static org.junit.Assert.*; - -public class Chapter06Test { - - @Test - public void testPeepholeReturn() { - CodeGen code = new CodeGen(""" -if( true ) return 2; -return 1; -"""); - code.parse().opto(); - assertEquals("return 2;", code.print()); - assertTrue(code.ctrl() instanceof FunNode); - } - - @Test - public void testPeepholeRotate() { - CodeGen code = new CodeGen( -""" -int a = 1; -if (arg) - a = 2; -return (arg < a) < 3; // Because (arg < a) is a bool/uint1/[0-1], its always less than 3 -"""); - code.parse().opto(); - assertEquals("return 1;", code.print()); - } - - @Test - public void testPeepholeCFG() { - CodeGen code = new CodeGen( -""" -int a=1; -if( true ) - a=2; -else - a=3; -return a; -"""); - code.parse().opto(); - assertEquals("return 2;", code.print()); - assertTrue(code.ctrl() instanceof FunNode); - } - - @Test - public void testIfIf() { - CodeGen code = new CodeGen( -""" -int a=1; -if( arg!=1 ) - a=2; -else - a=3; -int b=4; -if( a==2 ) - b=42; -else - b=5; -return b; -"""); - code.parse().opto(); - assertEquals("return Phi(Region,42,5);", code.print()); - } - - @Test - public void testIfArgIf() { - CodeGen code = new CodeGen( -""" -int a=1; -if( 1==1 ) - a=2; -else - a=3; -int b=4; -if( arg==2 ) - b=a; -else - b=5; -return b;"""); - code.parse().opto(); - assertEquals("return Phi(Region,2,5);", code.print()); - } - - @Test - public void testMerge3With2() { - CodeGen code = new CodeGen( -""" -arg=2; -int a=1; -if( arg==1 ) - if( arg==2 ) - a=2; - else - a=3; -else if( arg==3 ) - a=4; -else - a=5; -return a; -""", TypeInteger.constant(2), 123L, true).parse().opto(); - assertEquals("return 5;", code.print()); - } - - @Test - public void testMerge3With1() { - CodeGen code = new CodeGen( -""" -arg=1; -int a=1; -if( arg==1 ) - if( arg==2 ) - a=2; - else - a=3; -else if( arg==3 ) - a=4; -else - a=5; -return a; -""", TypeInteger.constant(1), 123L, true).parse().opto(); - assertEquals("return 3;", code.print()); - } - - @Test - public void testMerge3Peephole() { - CodeGen code = new CodeGen( -""" -int a=1; -if( arg==1 ) - if( 1==2 ) - a=2; - else - a=3; -else if( arg==3 ) - a=4; -else - a=5; -return a; -"""); - code.parse().opto(); - assertEquals("return Phi(Region,3,5,4);", code.print()); - } - - @Test - public void testMerge3Peephole1() { - CodeGen code = new CodeGen( -""" -arg=1; -int a=1; -if( arg==1 ) - if( 1==2 ) - a=2; - else - a=3; -else if( arg==3 ) - a=4; -else - a=5; -return a; -""", TypeInteger.constant(1), 123L, true); - code.parse().opto(); - assertEquals("return 3;", code.print()); - } - - @Test - public void testMerge3Peephole3() { - CodeGen code = new CodeGen( -""" -arg=3; -int a=1; -if( arg==1 ) - if( 1==2 ) - a=2; - else - a=3; -else if( arg==3 ) - a=4; -else - a=5; -return a; -""", TypeInteger.constant(3), 123L, true); - code.parse().opto(); - assertEquals("return 4;", code.print()); - } - - @Test - public void testDemo1NonConst() { - CodeGen code = new CodeGen(""" -int a = 0; -int b = 1; -if( arg ) { - a = 2; - if( arg ) { b = 2; } - else b = 3; -} -return a+b; -"""); - code.parse().opto(); - assertEquals("return Phi(Region,4,1);", code.print()); - } - - - @Test - public void testDemo1True() { - CodeGen code = new CodeGen( -""" -arg=1; -int a = 0; -int b = 1; -if( arg ) { - a = 2; - if( arg ) { b = 2; } - else b = 3; -} -return a+b; -""", TypeInteger.constant(1), 123L, true); - code.parse().opto(); - assertEquals("return 4;", code.print()); - } - - @Test - public void testDemo1False() { - CodeGen code = new CodeGen( -""" -arg=0; -int a = 0; -int b = 1; -if( arg ) { - a = 2; - if( arg ) { b = 2; } - else b = 3; -} -return a+b; -""", TypeInteger.constant(0), 123L, true); - code.parse().opto(); - assertEquals("return 1;", code.print()); - } - - @Test - public void testDemo2NonConst() { - CodeGen code = new CodeGen(""" -int a = 0; -int b = 1; -int c = 0; -if( arg ) { - a = 1; - if( arg==2 ) { c=2; } else { c=3; } - if( arg ) { b = 2; } - else b = 3; -} -return a+b+c; -"""); - code.parse().opto(); - assertEquals("return Phi(Region,6,1,5);", code.print()); - } - - - @Test - public void testDemo2True() { - CodeGen code = new CodeGen( -""" -arg=1; -int a = 0; -int b = 1; -int c = 0; -if( arg ) { - a = 1; - if( arg==2 ) { c=2; } else { c=3; } - if( arg ) { b = 2; } - else b = 3; -} -return a+b+c; -""", TypeInteger.constant(1), 123L, true); - code.parse().opto(); - assertEquals("return 6;", code.print()); - } - - @Test - public void testDemo2arg2() { - CodeGen code = new CodeGen( -""" -arg=2; -int a = 0; -int b = 1; -int c = 0; -if( arg ) { - a = 1; - if( arg==2 ) { c=2; } else { c=3; } - if( arg ) { b = 2; } - else b = 3; -} -return a+b+c; -""", TypeInteger.constant(2), 123L, true); - code.parse().opto(); - assertEquals("return 5;", code.print()); - } - -} |
