summaryrefslogtreecommitdiff
path: root/utils/genprimopcode
diff options
context:
space:
mode:
authorKrzysztof Gogolewski <krzysztof.gogolewski@tweag.io>2020-08-25 20:44:01 +0200
committerMarge Bot <ben+marge-bot@smart-cactus.org>2020-08-26 10:43:13 -0400
commit770100e0266750a313b34a52a60968410fcf0769 (patch)
tree750d2ff949a65b8483f9ba4840aad9378ca17920 /utils/genprimopcode
parentfcb10b6c69e388d8c6e777baf39920e2cc694501 (diff)
downloadhaskell-770100e0266750a313b34a52a60968410fcf0769.tar.gz
primops: Remove Monadic and Dyadic categories
There were four categories of primops: Monadic, Dyadic, Compare, GenPrimOp. The compiler does not treat Monadic and Dyadic in any special way, we can just replace them with GenPrimOp. Compare is still used in isComparisonPrimOp.
Diffstat (limited to 'utils/genprimopcode')
-rw-r--r--utils/genprimopcode/Lexer.x2
-rw-r--r--utils/genprimopcode/Main.hs10
-rw-r--r--utils/genprimopcode/Parser.y6
-rw-r--r--utils/genprimopcode/ParserM.hs2
-rw-r--r--utils/genprimopcode/Syntax.hs6
5 files changed, 2 insertions, 24 deletions
diff --git a/utils/genprimopcode/Lexer.x b/utils/genprimopcode/Lexer.x
index 0de81f9614..13c776fe4a 100644
--- a/utils/genprimopcode/Lexer.x
+++ b/utils/genprimopcode/Lexer.x
@@ -44,8 +44,6 @@ words :-
<0> "defaults" { mkT TDefaults }
<0> "True" { mkT TTrue }
<0> "False" { mkT TFalse }
- <0> "Dyadic" { mkT TDyadic }
- <0> "Monadic" { mkT TMonadic }
<0> "Compare" { mkT TCompare }
<0> "GenPrimOp" { mkT TGenPrimOp }
<0> "fixity" { mkT TFixity }
diff --git a/utils/genprimopcode/Main.hs b/utils/genprimopcode/Main.hs
index 004199a9a4..a817c75a0d 100644
--- a/utils/genprimopcode/Main.hs
+++ b/utils/genprimopcode/Main.hs
@@ -836,16 +836,6 @@ mkPOI_RHS_text i
TyF t1 (TyF _ _)
-> "mkCompare " ++ sl_name i ++ ppType t1
_ -> error "Type error in comparison op"
- Monadic
- -> case ty i of
- TyF t1 _
- -> "mkMonadic " ++ sl_name i ++ ppType t1
- _ -> error "Type error in monadic op"
- Dyadic
- -> case ty i of
- TyF t1 (TyF _ _)
- -> "mkDyadic " ++ sl_name i ++ ppType t1
- _ -> error "Type error in dyadic op"
GenPrimOp
-> let (argTys, resTy) = flatTys (ty i)
tvs = nub (tvsIn (ty i))
diff --git a/utils/genprimopcode/Parser.y b/utils/genprimopcode/Parser.y
index 89e61d5236..efcfee0889 100644
--- a/utils/genprimopcode/Parser.y
+++ b/utils/genprimopcode/Parser.y
@@ -36,8 +36,6 @@ import Syntax
defaults { TDefaults }
true { TTrue }
false { TFalse }
- dyadic { TDyadic }
- monadic { TMonadic }
compare { TCompare }
genprimop { TGenPrimOp }
fixity { TFixity }
@@ -122,9 +120,7 @@ pWithOptions : with pOptions { $2 }
| {- empty -} { [] }
pCategory :: { Category }
-pCategory : dyadic { Dyadic }
- | monadic { Monadic }
- | compare { Compare }
+pCategory : compare { Compare }
| genprimop { GenPrimOp }
pDesc :: { String }
diff --git a/utils/genprimopcode/ParserM.hs b/utils/genprimopcode/ParserM.hs
index e98d6bb11a..6086f6795a 100644
--- a/utils/genprimopcode/ParserM.hs
+++ b/utils/genprimopcode/ParserM.hs
@@ -94,8 +94,6 @@ data Token = TEOF
| TDefaults
| TTrue
| TFalse
- | TDyadic
- | TMonadic
| TCompare
| TGenPrimOp
| TThatsAllFolks
diff --git a/utils/genprimopcode/Syntax.hs b/utils/genprimopcode/Syntax.hs
index 4dc6e7b2dc..3f1f3ef7dc 100644
--- a/utils/genprimopcode/Syntax.hs
+++ b/utils/genprimopcode/Syntax.hs
@@ -65,7 +65,7 @@ data Option
-- categorises primops
data Category
- = Dyadic | Monadic | Compare | GenPrimOp
+ = Compare | GenPrimOp
deriving Show
-- types
@@ -155,10 +155,6 @@ sanityPrimOp def_names p
sane_ty :: Category -> Ty -> Bool
sane_ty Compare (TyF t1 (TyF t2 td))
| t1 == t2 && td == TyApp (TyCon "Int#") [] = True
-sane_ty Monadic (TyF t1 td)
- | t1 == td = True
-sane_ty Dyadic (TyF t1 (TyF t2 td))
- | t1 == td && t2 == td = True
sane_ty GenPrimOp _
= True
sane_ty _ _