on master help sign in
javascript: make folding002 pass
commit3f404616075bd897591c02912cd7d41b4a030043 authorraichoo <raichoo@googlemail.com> dateSat 12 Apr 2014, 17:45 (13 years ago) parenta461b62
2 files changed+24−6
src/IRTS/CodegenJavaScript.hs+23−5 test/Makefile+1−1
src/IRTS/CodegenJavaScript.hs+23−5
@@ -1843,7 +1843,7 @@ translateExpression (SOp op vars)
18431843
18441844 | (LLSHR (ITFixed IT64)) <- op
18451845 , (lhs:rhs:_) <- vars =
1846− jsMeth (jsMeth (JSVar lhs) "shiftRight" [JSVar rhs]) "intValue" []
1846+ jsMeth (JSVar lhs) "shiftRight" [JSVar rhs]
18471847
18481848 | (LZExt _ ITBig) <- op = jsBigInt $ jsCall "String" [JSVar (last vars)]
18491849 | (LPlus (ATInt ITBig)) <- op
@@ -1898,15 +1898,33 @@ translateExpression (SOp op vars)
18981898
18991899 | (LTrunc (ITFixed IT16) (ITFixed IT8)) <- op
19001900 , (arg:_) <- vars =
1901− JSBinOp "&" (JSVar arg) (JSNum (JSInt 0xFF))
1901+ JSParens $ JSBinOp "&" (JSVar arg) (JSNum (JSInt 0xFF))
19021902
19031903 | (LTrunc (ITFixed IT32) (ITFixed IT16)) <- op
19041904 , (arg:_) <- vars =
1905− JSBinOp "&" (JSVar arg) (JSNum (JSInt 0xFFFF))
1905+ JSParens $ JSBinOp "&" (JSVar arg) (JSNum (JSInt 0xFFFF))
19061906
19071907 | (LTrunc (ITFixed IT64) (ITFixed IT32)) <- op
19081908 , (arg:_) <- vars =
1909− jsMeth (JSVar arg) "and" [jsBigInt (JSString $ show 0xFFFFFFFF)]
1909+ jsMeth (jsMeth (JSVar arg) "and" [
1910+ jsBigInt (JSString $ show 0xFFFFFFFF)
1911+ ]) "intValue" []
1912+
1913+ | (LTrunc ITBig (ITFixed IT64)) <- op
1914+ , (arg:_) <- vars =
1915+ jsMeth (JSVar arg) "and" [
1916+ jsBigInt (JSString $ show 0xFFFFFFFF)
1917+ ]
1918+
1919+ | (LAnd (ITFixed IT64)) <- op
1920+ , (lhs:rhs:_) <- vars =
1921+ jsMeth (JSVar lhs) "and" [JSVar rhs]
1922+
1923+ | (LPlus (ATInt (ITFixed IT64))) <- op
1924+ , (lhs:rhs:_) <- vars =
1925+ jsMeth (jsMeth (JSVar lhs) "add" [JSVar rhs]) "and" [
1926+ jsBigInt (JSString $ show 0xFFFFFFFFFFFFFFFF)
1927+ ]
19101928
19111929 | (LPlus _) <- op
19121930 , (lhs:rhs:_) <- vars = translateBinaryOp "+" lhs rhs
@@ -2017,7 +2035,7 @@ translateExpression (SOp op vars)
20172035
20182036 where
20192037 translateBinaryOp :: String -> LVar -> LVar -> JS
2020− translateBinaryOp f lhs rhs = JSBinOp f (JSVar lhs) (JSVar rhs)
2038+ translateBinaryOp f lhs rhs = JSParens $ JSBinOp f (JSVar lhs) (JSVar rhs)
20212039
20222040
20232041 invokeMeth :: LVar -> String -> [LVar] -> JS
test/Makefile+1−1
@@ -11,7 +11,7 @@ test_java:
1111 perl ./runtest.pl without sugar004 buffer001 --codegen Java
1212
1313test_js:
14− @perl ./runtest.pl without sugar004 reg029 io001 dsl002 io003 effects001 effects002 buffer001 folding002 --codegen node
14+ @perl ./runtest.pl without sugar004 reg029 io001 dsl002 io003 effects001 effects002 buffer001 --codegen node
1515
1616test_llvm:
1717 @perl ./runtest.pl without sugar004 io003 buffer001 --codegen llvm