diff options
author | Sylvain Henry <sylvain@haskus.fr> | 2021-10-21 11:13:23 +0200 |
---|---|---|
committer | Marge Bot <ben+marge-bot@smart-cactus.org> | 2021-11-06 07:53:42 -0400 |
commit | e279ea6479279b0899d1d2cd683ceb70bb4a77f3 (patch) | |
tree | 7ec338811028c6eac4d16e09544b9501fdfafbf3 | |
parent | ecd6d14215eb40ac441c075e432ddaa0237f3c72 (diff) | |
download | haskell-e279ea6479279b0899d1d2cd683ceb70bb4a77f3.tar.gz |
Add missing Int64/Word64 constant-folding rules
-rw-r--r-- | compiler/GHC/Core/Opt/ConstantFold.hs | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/compiler/GHC/Core/Opt/ConstantFold.hs b/compiler/GHC/Core/Opt/ConstantFold.hs index 85327c56a4..0d2db119a8 100644 --- a/compiler/GHC/Core/Opt/ConstantFold.hs +++ b/compiler/GHC/Core/Opt/ConstantFold.hs @@ -690,6 +690,9 @@ primOpRules nm = \case Int32EqOp -> mkRelOpRule nm (==) [ litEq True ] Int32NeOp -> mkRelOpRule nm (/=) [ litEq False ] + Int64EqOp -> mkRelOpRule nm (==) [ litEq True ] + Int64NeOp -> mkRelOpRule nm (/=) [ litEq False ] + IntEqOp -> mkRelOpRule nm (==) [ litEq True ] IntNeOp -> mkRelOpRule nm (/=) [ litEq False ] @@ -702,6 +705,9 @@ primOpRules nm = \case Word32EqOp -> mkRelOpRule nm (==) [ litEq True ] Word32NeOp -> mkRelOpRule nm (/=) [ litEq False ] + Word64EqOp -> mkRelOpRule nm (==) [ litEq True ] + Word64NeOp -> mkRelOpRule nm (/=) [ litEq False ] + WordEqOp -> mkRelOpRule nm (==) [ litEq True ] WordNeOp -> mkRelOpRule nm (/=) [ litEq False ] @@ -731,6 +737,11 @@ primOpRules nm = \case Int32LeOp -> mkRelOpRule nm (<=) [ boundsCmp Le ] Int32LtOp -> mkRelOpRule nm (<) [ boundsCmp Lt ] + Int64GtOp -> mkRelOpRule nm (>) [ boundsCmp Gt ] + Int64GeOp -> mkRelOpRule nm (>=) [ boundsCmp Ge ] + Int64LeOp -> mkRelOpRule nm (<=) [ boundsCmp Le ] + Int64LtOp -> mkRelOpRule nm (<) [ boundsCmp Lt ] + IntGtOp -> mkRelOpRule nm (>) [ boundsCmp Gt ] IntGeOp -> mkRelOpRule nm (>=) [ boundsCmp Ge ] IntLeOp -> mkRelOpRule nm (<=) [ boundsCmp Le ] @@ -751,6 +762,11 @@ primOpRules nm = \case Word32LeOp -> mkRelOpRule nm (<=) [ boundsCmp Le ] Word32LtOp -> mkRelOpRule nm (<) [ boundsCmp Lt ] + Word64GtOp -> mkRelOpRule nm (>) [ boundsCmp Gt ] + Word64GeOp -> mkRelOpRule nm (>=) [ boundsCmp Ge ] + Word64LeOp -> mkRelOpRule nm (<=) [ boundsCmp Le ] + Word64LtOp -> mkRelOpRule nm (<) [ boundsCmp Lt ] + WordGtOp -> mkRelOpRule nm (>) [ boundsCmp Gt ] WordGeOp -> mkRelOpRule nm (>=) [ boundsCmp Ge ] WordLeOp -> mkRelOpRule nm (<=) [ boundsCmp Le ] |