summaryrefslogtreecommitdiff
path: root/compiler/GHC/Builtin/Names.hs
diff options
context:
space:
mode:
authorSylvain Henry <sylvain@haskus.fr>2021-10-06 12:35:58 +0200
committerMarge Bot <ben+marge-bot@smart-cactus.org>2021-10-07 20:20:01 -0400
commit44886aaba46230de003fb99153a3120667225302 (patch)
tree30fa4a9f9202da98cd1a26af1f848e23a19b1a5c /compiler/GHC/Builtin/Names.hs
parente1d02fb0f04bcf3acea1da96d291a03bb749718d (diff)
downloadhaskell-44886aaba46230de003fb99153a3120667225302.tar.gz
Bignum: allow inlining of naturalEq/Ne/Gt/Lt/Ge/Le/Compare (#20361)
Perform constant folding on bigNatCompare instead. Some functions of the Enum class for Natural now need to be inlined explicitly to be specialized at call sites (because `x > lim` for Natural is inlined and the resulting function is a little too big to inline). If we don't do this, T17499 runtime allocations regresses by 16%.
Diffstat (limited to 'compiler/GHC/Builtin/Names.hs')
-rw-r--r--compiler/GHC/Builtin/Names.hs31
1 files changed, 5 insertions, 26 deletions
diff --git a/compiler/GHC/Builtin/Names.hs b/compiler/GHC/Builtin/Names.hs
index 91c9c80cef..5407e16b90 100644
--- a/compiler/GHC/Builtin/Names.hs
+++ b/compiler/GHC/Builtin/Names.hs
@@ -398,11 +398,6 @@ basicKnownKeyNames
naturalToWordName,
naturalToWordClampName,
- naturalGeName,
- naturalLeName,
- naturalGtName,
- naturalLtName,
- naturalCompareName,
naturalPopCountName,
naturalShiftRName,
naturalShiftLName,
@@ -1195,11 +1190,6 @@ integerFromNaturalName
, integerShiftRName
, naturalToWordName
, naturalToWordClampName
- , naturalGeName
- , naturalLeName
- , naturalGtName
- , naturalLtName
- , naturalCompareName
, naturalPopCountName
, naturalShiftRName
, naturalShiftLName
@@ -1228,6 +1218,7 @@ integerFromNaturalName
, naturalSizeInBaseName
, bignatFromWordListName
, bignatEqName
+ , bignatCompareName
:: Name
bnbVarQual, bnnVarQual, bniVarQual :: String -> Unique -> Name
@@ -1238,14 +1229,10 @@ bniVarQual str key = varQual gHC_NUM_INTEGER (fsLit str) key
-- Types and DataCons
bignatFromWordListName = bnbVarQual "bigNatFromWordList#" bignatFromWordListIdKey
bignatEqName = bnbVarQual "bigNatEq#" bignatEqIdKey
+bignatCompareName = bnbVarQual "bigNatCompare" bignatCompareIdKey
naturalToWordName = bnnVarQual "naturalToWord#" naturalToWordIdKey
naturalToWordClampName = bnnVarQual "naturalToWordClamp#" naturalToWordClampIdKey
-naturalGeName = bnnVarQual "naturalGe#" naturalGeIdKey
-naturalLeName = bnnVarQual "naturalLe#" naturalLeIdKey
-naturalGtName = bnnVarQual "naturalGt#" naturalGtIdKey
-naturalLtName = bnnVarQual "naturalLt#" naturalLtIdKey
-naturalCompareName = bnnVarQual "naturalCompare" naturalCompareIdKey
naturalPopCountName = bnnVarQual "naturalPopCount#" naturalPopCountIdKey
naturalShiftRName = bnnVarQual "naturalShiftR#" naturalShiftRIdKey
naturalShiftLName = bnnVarQual "naturalShiftL#" naturalShiftLIdKey
@@ -2592,14 +2579,8 @@ integerFromNaturalIdKey
, integerFromWordIdKey
, integerFromWord64IdKey
, integerFromInt64IdKey
- , bignatEqIdKey
, naturalToWordIdKey
, naturalToWordClampIdKey
- , naturalGeIdKey
- , naturalLeIdKey
- , naturalGtIdKey
- , naturalLtIdKey
- , naturalCompareIdKey
, naturalPopCountIdKey
, naturalShiftRIdKey
, naturalShiftLIdKey
@@ -2627,6 +2608,8 @@ integerFromNaturalIdKey
, naturalPowModIdKey
, naturalSizeInBaseIdKey
, bignatFromWordListIdKey
+ , bignatEqIdKey
+ , bignatCompareIdKey
:: Unique
integerFromNaturalIdKey = mkPreludeMiscIdUnique 600
@@ -2675,11 +2658,6 @@ integerFromInt64IdKey = mkPreludeMiscIdUnique 644
naturalToWordIdKey = mkPreludeMiscIdUnique 650
naturalToWordClampIdKey = mkPreludeMiscIdUnique 651
-naturalGeIdKey = mkPreludeMiscIdUnique 654
-naturalLeIdKey = mkPreludeMiscIdUnique 655
-naturalGtIdKey = mkPreludeMiscIdUnique 656
-naturalLtIdKey = mkPreludeMiscIdUnique 657
-naturalCompareIdKey = mkPreludeMiscIdUnique 658
naturalPopCountIdKey = mkPreludeMiscIdUnique 659
naturalShiftRIdKey = mkPreludeMiscIdUnique 660
naturalShiftLIdKey = mkPreludeMiscIdUnique 661
@@ -2709,6 +2687,7 @@ naturalSizeInBaseIdKey = mkPreludeMiscIdUnique 684
bignatFromWordListIdKey = mkPreludeMiscIdUnique 690
bignatEqIdKey = mkPreludeMiscIdUnique 691
+bignatCompareIdKey = mkPreludeMiscIdUnique 692
------------------------------------------------------