diff options
Diffstat (limited to 'test/Expr/Parser/ConstantFolding.kquery')
-rw-r--r-- | test/Expr/Parser/ConstantFolding.kquery | 197 |
1 files changed, 197 insertions, 0 deletions
diff --git a/test/Expr/Parser/ConstantFolding.kquery b/test/Expr/Parser/ConstantFolding.kquery new file mode 100644 index 00000000..a02920db --- /dev/null +++ b/test/Expr/Parser/ConstantFolding.kquery @@ -0,0 +1,197 @@ +# RUN: %kleaver --builder=constant-folding -print-ast %s > %t + +array a[64] : w32 -> w8 = symbolic + +# RUN: grep -A 2 "# Query 1$" %t > %t2 +# RUN: grep "(query .. false)" %t2 +(query [] (Not (Ult (w32 0) (w32 1)))) + +# Check -- 0 + X ==> X +# RUN: grep -A 2 "# Query 2$" %t > %t2 +# RUN: grep "(query .. false .(Read w8 0 a).)" %t2 +(query [] false [(Add w8 0 (Read w8 0 a))]) +# RUN: grep -A 2 "# Query 3$" %t > %t2 +# RUN: grep "(query .. false .(Read w8 0 a).)" %t2 +(query [] false [(Add w8 (Read w8 0 a) 0)]) + +# Check -- C_0 + (C_1 + X) ==> (C_0 + C_1) + X +# RUN: grep -A 2 "# Query 4$" %t > %t2 +# RUN: grep "(query .. false .(Add w8 30 (Read w8 0 a)).)" %t2 +(query [] false [(Add w8 10 (Add w8 20 (Read w8 0 a)))]) + +# Check -- C_0 + (X + C_1) ==> (C_0 + C_1) + X +# RUN: grep -A 2 "# Query 5$" %t > %t2 +# RUN: grep "(query .. false .(Add w8 30 (Read w8 0 a)).)" %t2 +(query [] false [(Add w8 10 (Add w8 (Read w8 0 a) 20))]) + +# Check -- C_0 + (C_1 - X) ==> (C_0 + C_1) - X +# RUN: grep -A 2 "# Query 6$" %t > %t2 +# RUN: grep "(query .. false .(Sub w8 30 (Read w8 0 a)).)" %t2 +(query [] false [(Add w8 10 (Sub w8 20 (Read w8 0 a)))]) + +# Check -- C_0 + (X - C_1) ==> (C_0 - C_1) + X +# RUN: grep -A 2 "# Query 7$" %t > %t2 +# RUN: grep "(query .. false .(Add w8 246 (Read w8 0 a)).)" %t2 +(query [] false [(Add w8 10 (Sub w8 (Read w8 0 a) 20))]) + +# Check -- (X + Y) + Z ==> X + (Y + Z) +# RUN: grep -A 3 "# Query 8$" %t > %t2 +# RUN: grep "(query .. false .(Add w8 (Read w8 0 a)" %t2 +# RUN: grep "(Add w8 (Read w8 1 a) (Read w8 2 a)" %t2 +(query [] false [(Add w8 (Add w8 (Read w8 0 a) (Read w8 1 a)) (Read w8 2 a))]) + +# Check -- (X - Y) + Z ==> X + (Z - Y) +# RUN: grep -A 3 "# Query 9$" %t > %t2 +# RUN: grep "(query .. false .(Add w8 (Read w8 0 a)" %t2 +# RUN: grep "(Sub w8 (Read w8 2 a) (Read w8 1 a)" %t2 +(query [] false [(Add w8 (Sub w8 (Read w8 0 a) (Read w8 1 a)) (Read w8 2 a))]) + +# Check -- X + (C + Y) ==> C + (X + Y) +# RUN: grep -A 3 "# Query 10$" %t > %t2 +# RUN: grep "(query .. false .(Add w8 10" %t2 +# RUN: grep "(Add w8 (Read w8 0 a) (Read w8 1 a)" %t2 +(query [] false [(Add w8 (Read w8 0 a) (Add w8 10 (Read w8 1 a)))]) + +# Check -- X + (Y + C) ==> C + (X + Y) +# RUN: grep -A 3 "# Query 11$" %t > %t2 +# RUN: grep "(query .. false .(Add w8 10" %t2 +# RUN: grep "(Add w8 (Read w8 0 a) (Read w8 1 a)" %t2 +(query [] false [(Add w8 (Read w8 0 a) (Add w8 (Read w8 1 a) 10))]) + +# Check -- X + (C - Y) ==> C + (X - Y) +# RUN: grep -A 3 "# Query 12$" %t > %t2 +# RUN: grep "(query .. false .(Add w8 10" %t2 +# RUN: grep "(Sub w8 (Read w8 0 a) (Read w8 1 a)" %t2 +(query [] false [(Add w8 (Read w8 0 a) (Sub w8 10 (Read w8 1 a)))]) + +# Check -- X + (Y - C) ==> -C + (X + Y) +# RUN: grep -A 3 "# Query 13$" %t > %t2 +# RUN: grep "(query .. false .(Add w8 246" %t2 +# RUN: grep "(Add w8 (Read w8 0 a) (Read w8 1 a)" %t2 +(query [] false [(Add w8 (Read w8 0 a) (Sub w8 (Read w8 1 a) 10))]) + +# Check -- C_0 - (C_1 + X) ==> (C_0 - C1) - X +# RUN: grep -A 2 "# Query 14$" %t > %t2 +# RUN: grep "(query .. false .(Sub w8 10 (Read w8 0 a))" %t2 +(query [] false [(Sub w8 20 (Add w8 10 (Read w8 0 a)))]) + +# Check -- C_0 - (X + C_1) ==> (C_0 + C1) + X +# RUN: grep -A 2 "# Query 15$" %t > %t2 +# RUN: grep "(query .. false .(Sub w8 10 (Read w8 0 a))" %t2 +(query [] false [(Sub w8 20 (Add w8 (Read w8 0 a) 10))]) + +# Check -- C_0 - (C_1 - X) ==> (C_0 - C1) + X +# RUN: grep -A 2 "# Query 16$" %t > %t2 +# RUN: grep "(query .. false .(Add w8 10 (Read w8 0 a))" %t2 +(query [] false [(Sub w8 20 (Sub w8 10 (Read w8 0 a)))]) + +# Check -- C_0 - (X - C_1) ==> (C_0 + C1) - X +# RUN: grep -A 2 "# Query 17$" %t > %t2 +# RUN: grep "(query .. false .(Sub w8 30 (Read w8 0 a))" %t2 +(query [] false [(Sub w8 20 (Sub w8 (Read w8 0 a) 10))]) + +# Check -- (C_0 + X) - C_1 ==> (C_0 - C1) + X +# RUN: grep -A 2 "# Query 18$" %t > %t2 +# RUN: grep "(query .. false .(Add w8 246 (Read w8 0 a))" %t2 +(query [] false [(Sub w8 (Add w8 10 (Read w8 0 a)) 20)]) + +# Check -- (X + C_0) - C_1 ==> (C_0 - C1) + X +# RUN: grep -A 2 "# Query 19$" %t > %t2 +# RUN: grep "(query .. false .(Add w8 246 (Read w8 0 a))" %t2 +(query [] false [(Sub w8 (Add w8 (Read w8 0 a) 10) 20)]) + +# Check -- (C_0 - X) - C_1 ==> (C_0 - C1) - X +# RUN: grep -A 2 "# Query 20$" %t > %t2 +# RUN: grep "(query .. false .(Sub w8 246 (Read w8 0 a))" %t2 +(query [] false [(Sub w8 (Sub w8 10 (Read w8 0 a)) 20)]) + +# Check -- (X - C_0) - C_1 ==> -(C_0 + C1) + X +# RUN: grep -A 2 "# Query 21$" %t > %t2 +# RUN: grep "(query .. false .(Add w8 226 (Read w8 0 a))" %t2 +(query [] false [(Sub w8 (Sub w8 (Read w8 0 a) 10) 20)]) + +# Check -- (X + Y) - Z ==> X + (Y - Z) +# RUN: grep -A 3 "# Query 22$" %t > %t2 +# RUN: grep "(query .. false .(Add w8 (Read w8 0 a)" %t2 +# RUN: grep "(Sub w8 (Read w8 1 a) (Read w8 2 a)" %t2 +(query [] false [(Sub w8 (Add w8 (Read w8 0 a) (Read w8 1 a)) (Read w8 2 a))]) + +# Check -- (X - Y) - Z ==> X - (Y + Z) +# RUN: grep -A 3 "# Query 23$" %t > %t2 +# RUN: grep "(query .. false .(Sub w8 (Read w8 0 a)" %t2 +# RUN: grep "(Add w8 (Read w8 1 a) (Read w8 2 a)" %t2 +(query [] false [(Sub w8 (Sub w8 (Read w8 0 a) (Read w8 1 a)) (Read w8 2 a))]) + +# Check -- X - (C + Y) ==> -C + (X - Y) +# RUN: grep -A 3 "# Query 24$" %t > %t2 +# RUN: grep "(query .. false .(Add w8 246" %t2 +# RUN: grep "(Sub w8 (Read w8 0 a) (Read w8 1 a)" %t2 +(query [] false [(Sub w8 (Read w8 0 a) (Add w8 10 (Read w8 1 a)))]) + +# Check -- X - (Y + C) ==> -C + (X - Y) +# RUN: grep -A 3 "# Query 25$" %t > %t2 +# RUN: grep "(query .. false .(Add w8 246" %t2 +# RUN: grep "(Sub w8 (Read w8 0 a) (Read w8 1 a)" %t2 +(query [] false [(Sub w8 (Read w8 0 a) (Add w8 (Read w8 1 a) 10))]) + +# Check -- X - (C - Y) ==> -C + (X + Y) +# RUN: grep -A 3 "# Query 26$" %t > %t2 +# RUN: grep "(query .. false .(Add w8 246" %t2 +# RUN: grep "(Add w8 (Read w8 0 a) (Read w8 1 a)" %t2 +(query [] false [(Sub w8 (Read w8 0 a) (Sub w8 10 (Read w8 1 a)))]) + +# Check -- X - (Y - C) ==> C + (X - Y) +# RUN: grep -A 3 "# Query 27$" %t > %t2 +# RUN: grep "(query .. false .(Add w8 10" %t2 +# RUN: grep "(Sub w8 (Read w8 0 a) (Read w8 1 a)" %t2 +(query [] false [(Sub w8 (Read w8 0 a) (Sub w8 (Read w8 1 a) 10))]) + +# Check -- X * 0 ==> 0 +# RUN: grep -A 2 "# Query 28$" %t > %t2 +# RUN: grep "(query .. false .(w8 0)." %t2 +(query [] false [(Mul w8 0 (Read w8 0 a))]) + +# Check -- X * 1 ==> X +# RUN: grep -A 2 "# Query 29$" %t > %t2 +# RUN: grep "(query .. false .(Read w8 0 a)." %t2 +(query [] false [(Mul w8 1 (Read w8 0 a))]) + +# Check -- X & 0 ==> 0 +# RUN: grep -A 2 "# Query 30$" %t > %t2 +# RUN: grep "(query .. false .(w8 0)." %t2 +(query [] false [(And w8 0 (Read w8 0 a))]) + +# Check -- X & 0b1...1 ==> X +# RUN: grep -A 2 "# Query 31$" %t > %t2 +# RUN: grep "(query .. false .(Read w8 0 a)." %t2 +(query [] false [(And w8 255 (Read w8 0 a))]) + +# Check -- X | 0 ==> X +# RUN: grep -A 2 "# Query 32$" %t > %t2 +# RUN: grep "(query .. false .(Read w8 0 a)." %t2 +(query [] false [(Or w8 0 (Read w8 0 a))]) + +# Check -- X | 0b1...1 ==> X +# RUN: grep -A 2 "# Query 33$" %t > %t2 +# RUN: grep "(query .. false .(w8 255)." %t2 +(query [] false [(Or w8 255 (Read w8 0 a))]) + +# Check -- X ^ 0b1...1 ==> X +# RUN: grep -A 2 "# Query 34$" %t > %t2 +# RUN: grep "(query .. false .(Read w8 0 a)." %t2 +(query [] false [(Xor w8 0 (Read w8 0 a))]) + +# Check -- true == X ==> X +# RUN: grep -A 2 "# Query 35$" %t > %t2 +# RUN: grep "(query .. false .(Eq 0 (Read w8 0 a))." %t2 +(query [] false [(Eq true (Eq 0 (Read w8 0 a)))]) + +# Check -- !!X ==> X +# RUN: grep -A 2 "# Query 36$" %t > %t2 +# RUN: grep "(query .. false .(Eq 0 (Read w8 0 a))." %t2 +(query [] false [(Not (Not (Eq 0 (Read w8 0 a))))]) + +# Check -- !Const +# RUN: grep -A 2 "# Query 37$" %t > %t2 +# RUN: grep "(query .. false .true." %t2 +(query [] false [(Eq (Not w32 0xdeadbeef) 0x21524110)]) |