summaryrefslogtreecommitdiff
path: root/ghc/compiler
diff options
context:
space:
mode:
authorsimonm <unknown>1997-11-05 16:11:34 +0000
committersimonm <unknown>1997-11-05 16:11:34 +0000
commit62dfd96cf8239ceb7cb65e955c29c57f6c798517 (patch)
treecb8a7558145759e81322d80c8939360e786f1aaf /ghc/compiler
parent705f3b64dec2b8d8340b3d370d76a70500833268 (diff)
downloadhaskell-62dfd96cf8239ceb7cb65e955c29c57f6c798517.tar.gz
[project @ 1997-11-05 16:11:17 by simonm]
add xor# word operation
Diffstat (limited to 'ghc/compiler')
-rw-r--r--ghc/compiler/absCSyn/Costs.lhs2
-rw-r--r--ghc/compiler/nativeGen/AsmCodeGen.lhs1
-rw-r--r--ghc/compiler/nativeGen/MachCode.lhs5
-rw-r--r--ghc/compiler/prelude/PrimOp.lhs366
4 files changed, 191 insertions, 183 deletions
diff --git a/ghc/compiler/absCSyn/Costs.lhs b/ghc/compiler/absCSyn/Costs.lhs
index 4c0a636ff9..eb641bc88f 100644
--- a/ghc/compiler/absCSyn/Costs.lhs
+++ b/ghc/compiler/absCSyn/Costs.lhs
@@ -518,7 +518,7 @@ data PrimOp
-- Rest is unchecked so far -- HWL
-- Word#-related ops:
- | AndOp | OrOp | NotOp | ShiftLOp | ShiftROp
+ | AndOp | OrOp | NotOp | XorOp | ShiftLOp | ShiftROp
| Int2WordOp | Word2IntOp -- casts
-- Addr#-related ops:
diff --git a/ghc/compiler/nativeGen/AsmCodeGen.lhs b/ghc/compiler/nativeGen/AsmCodeGen.lhs
index d5926765b4..b94efa4cf4 100644
--- a/ghc/compiler/nativeGen/AsmCodeGen.lhs
+++ b/ghc/compiler/nativeGen/AsmCodeGen.lhs
@@ -248,6 +248,7 @@ primOpt op args@[x, y@(StInt 0)]
IntMulOp -> y
AndOp -> y
OrOp -> x
+ XorOp -> x
SllOp -> x
SraOp -> x
SrlOp -> x
diff --git a/ghc/compiler/nativeGen/MachCode.lhs b/ghc/compiler/nativeGen/MachCode.lhs
index c649d875de..8c2b59445d 100644
--- a/ghc/compiler/nativeGen/MachCode.lhs
+++ b/ghc/compiler/nativeGen/MachCode.lhs
@@ -404,6 +404,7 @@ getRegister (StPrim primop [x, y]) -- dyadic PrimOps
AndOp -> trivialCode AND x y
OrOp -> trivialCode OR x y
+ XorOp -> trivialCode XOR x y
SllOp -> trivialCode SLL x y
SraOp -> trivialCode SRA x y
SrlOp -> trivialCode SRL x y
@@ -662,6 +663,7 @@ getRegister (StPrim primop [x, y]) -- dyadic PrimOps
AndOp -> trivialCode (AND L) x y {-True-}
OrOp -> trivialCode (OR L) x y {-True-}
+ XorOp -> trivialCode (XOR L) x y {-True-}
{- Shift ops on x86s have constraints on their source, it
either has to be Imm, CL or 1
@@ -1071,7 +1073,8 @@ getRegister (StPrim primop [x, y]) -- dyadic PrimOps
DoubleDivOp -> trivialFCode DoubleRep FDIV x y
AndOp -> trivialCode (AND False) x y
- OrOp -> trivialCode (OR False) x y
+ OrOp -> trivialCode (OR False) x y
+ XorOp -> trivialCode (XOR False) x y
SllOp -> trivialCode SLL x y
SraOp -> trivialCode SRA x y
SrlOp -> trivialCode SRL x y
diff --git a/ghc/compiler/prelude/PrimOp.lhs b/ghc/compiler/prelude/PrimOp.lhs
index ab2428c4e3..f9818b0727 100644
--- a/ghc/compiler/prelude/PrimOp.lhs
+++ b/ghc/compiler/prelude/PrimOp.lhs
@@ -81,7 +81,7 @@ data PrimOp
| IntRemOp | IntNegOp | IntAbsOp
-- Word#-related ops:
- | AndOp | OrOp | NotOp
+ | AndOp | OrOp | NotOp | XorOp
| SllOp | SraOp | SrlOp -- shift {left,right} {arithmetic,logical}
| ISllOp | ISraOp | ISrlOp -- equivs on Int#s
| Int2WordOp | Word2IntOp -- casts
@@ -261,186 +261,187 @@ about using it this way?? ADR)
Deriving Ix is what we really want! ToDo
(Chk around before deleting...)
\begin{code}
-tagOf_PrimOp CharGtOp = (ILIT(1) :: FAST_INT)
-tagOf_PrimOp CharGeOp = ILIT( 2)
-tagOf_PrimOp CharEqOp = ILIT( 3)
-tagOf_PrimOp CharNeOp = ILIT( 4)
-tagOf_PrimOp CharLtOp = ILIT( 5)
-tagOf_PrimOp CharLeOp = ILIT( 6)
-tagOf_PrimOp IntGtOp = ILIT( 7)
-tagOf_PrimOp IntGeOp = ILIT( 8)
-tagOf_PrimOp IntEqOp = ILIT( 9)
-tagOf_PrimOp IntNeOp = ILIT( 10)
-tagOf_PrimOp IntLtOp = ILIT( 11)
-tagOf_PrimOp IntLeOp = ILIT( 12)
-tagOf_PrimOp WordGtOp = ILIT( 13)
-tagOf_PrimOp WordGeOp = ILIT( 14)
-tagOf_PrimOp WordEqOp = ILIT( 15)
-tagOf_PrimOp WordNeOp = ILIT( 16)
-tagOf_PrimOp WordLtOp = ILIT( 17)
-tagOf_PrimOp WordLeOp = ILIT( 18)
-tagOf_PrimOp AddrGtOp = ILIT( 19)
-tagOf_PrimOp AddrGeOp = ILIT( 20)
-tagOf_PrimOp AddrEqOp = ILIT( 21)
-tagOf_PrimOp AddrNeOp = ILIT( 22)
-tagOf_PrimOp AddrLtOp = ILIT( 23)
-tagOf_PrimOp AddrLeOp = ILIT( 24)
-tagOf_PrimOp FloatGtOp = ILIT( 25)
-tagOf_PrimOp FloatGeOp = ILIT( 26)
-tagOf_PrimOp FloatEqOp = ILIT( 27)
-tagOf_PrimOp FloatNeOp = ILIT( 28)
-tagOf_PrimOp FloatLtOp = ILIT( 29)
-tagOf_PrimOp FloatLeOp = ILIT( 30)
-tagOf_PrimOp DoubleGtOp = ILIT( 31)
-tagOf_PrimOp DoubleGeOp = ILIT( 32)
-tagOf_PrimOp DoubleEqOp = ILIT( 33)
-tagOf_PrimOp DoubleNeOp = ILIT( 34)
-tagOf_PrimOp DoubleLtOp = ILIT( 35)
-tagOf_PrimOp DoubleLeOp = ILIT( 36)
-tagOf_PrimOp OrdOp = ILIT( 37)
-tagOf_PrimOp ChrOp = ILIT( 38)
-tagOf_PrimOp IntAddOp = ILIT( 39)
-tagOf_PrimOp IntSubOp = ILIT( 40)
-tagOf_PrimOp IntMulOp = ILIT( 41)
-tagOf_PrimOp IntQuotOp = ILIT( 42)
-tagOf_PrimOp IntRemOp = ILIT( 44)
-tagOf_PrimOp IntNegOp = ILIT( 45)
-tagOf_PrimOp IntAbsOp = ILIT( 46)
-tagOf_PrimOp AndOp = ILIT( 47)
-tagOf_PrimOp OrOp = ILIT( 48)
-tagOf_PrimOp NotOp = ILIT( 49)
-tagOf_PrimOp SllOp = ILIT( 50)
-tagOf_PrimOp SraOp = ILIT( 51)
-tagOf_PrimOp SrlOp = ILIT( 52)
-tagOf_PrimOp ISllOp = ILIT( 53)
-tagOf_PrimOp ISraOp = ILIT( 54)
-tagOf_PrimOp ISrlOp = ILIT( 55)
-tagOf_PrimOp Int2WordOp = ILIT( 56)
-tagOf_PrimOp Word2IntOp = ILIT( 57)
-tagOf_PrimOp Int2AddrOp = ILIT( 58)
-tagOf_PrimOp Addr2IntOp = ILIT( 59)
-tagOf_PrimOp FloatAddOp = ILIT( 60)
-tagOf_PrimOp FloatSubOp = ILIT( 61)
-tagOf_PrimOp FloatMulOp = ILIT( 62)
-tagOf_PrimOp FloatDivOp = ILIT( 63)
-tagOf_PrimOp FloatNegOp = ILIT( 64)
-tagOf_PrimOp Float2IntOp = ILIT( 65)
-tagOf_PrimOp Int2FloatOp = ILIT( 66)
-tagOf_PrimOp FloatExpOp = ILIT( 67)
-tagOf_PrimOp FloatLogOp = ILIT( 68)
-tagOf_PrimOp FloatSqrtOp = ILIT( 69)
-tagOf_PrimOp FloatSinOp = ILIT( 70)
-tagOf_PrimOp FloatCosOp = ILIT( 71)
-tagOf_PrimOp FloatTanOp = ILIT( 72)
-tagOf_PrimOp FloatAsinOp = ILIT( 73)
-tagOf_PrimOp FloatAcosOp = ILIT( 74)
-tagOf_PrimOp FloatAtanOp = ILIT( 75)
-tagOf_PrimOp FloatSinhOp = ILIT( 76)
-tagOf_PrimOp FloatCoshOp = ILIT( 77)
-tagOf_PrimOp FloatTanhOp = ILIT( 78)
-tagOf_PrimOp FloatPowerOp = ILIT( 79)
-tagOf_PrimOp DoubleAddOp = ILIT( 80)
-tagOf_PrimOp DoubleSubOp = ILIT( 81)
-tagOf_PrimOp DoubleMulOp = ILIT( 82)
-tagOf_PrimOp DoubleDivOp = ILIT( 83)
-tagOf_PrimOp DoubleNegOp = ILIT( 84)
-tagOf_PrimOp Double2IntOp = ILIT( 85)
-tagOf_PrimOp Int2DoubleOp = ILIT( 86)
-tagOf_PrimOp Double2FloatOp = ILIT( 87)
-tagOf_PrimOp Float2DoubleOp = ILIT( 88)
-tagOf_PrimOp DoubleExpOp = ILIT( 89)
-tagOf_PrimOp DoubleLogOp = ILIT( 90)
-tagOf_PrimOp DoubleSqrtOp = ILIT( 91)
-tagOf_PrimOp DoubleSinOp = ILIT( 92)
-tagOf_PrimOp DoubleCosOp = ILIT( 93)
-tagOf_PrimOp DoubleTanOp = ILIT( 94)
-tagOf_PrimOp DoubleAsinOp = ILIT( 95)
-tagOf_PrimOp DoubleAcosOp = ILIT( 96)
-tagOf_PrimOp DoubleAtanOp = ILIT( 97)
-tagOf_PrimOp DoubleSinhOp = ILIT( 98)
-tagOf_PrimOp DoubleCoshOp = ILIT( 99)
-tagOf_PrimOp DoubleTanhOp = ILIT(100)
-tagOf_PrimOp DoublePowerOp = ILIT(101)
-tagOf_PrimOp IntegerAddOp = ILIT(102)
-tagOf_PrimOp IntegerSubOp = ILIT(103)
-tagOf_PrimOp IntegerMulOp = ILIT(104)
-tagOf_PrimOp IntegerQuotRemOp = ILIT(105)
-tagOf_PrimOp IntegerDivModOp = ILIT(106)
-tagOf_PrimOp IntegerNegOp = ILIT(107)
-tagOf_PrimOp IntegerCmpOp = ILIT(108)
-tagOf_PrimOp Integer2IntOp = ILIT(109)
-tagOf_PrimOp Int2IntegerOp = ILIT(110)
-tagOf_PrimOp Word2IntegerOp = ILIT(111)
-tagOf_PrimOp Addr2IntegerOp = ILIT(112)
-tagOf_PrimOp FloatEncodeOp = ILIT(113)
-tagOf_PrimOp FloatDecodeOp = ILIT(114)
-tagOf_PrimOp DoubleEncodeOp = ILIT(115)
-tagOf_PrimOp DoubleDecodeOp = ILIT(116)
-tagOf_PrimOp NewArrayOp = ILIT(117)
-tagOf_PrimOp (NewByteArrayOp CharRep) = ILIT(118)
-tagOf_PrimOp (NewByteArrayOp IntRep) = ILIT(119)
-tagOf_PrimOp (NewByteArrayOp AddrRep) = ILIT(120)
-tagOf_PrimOp (NewByteArrayOp FloatRep) = ILIT(121)
-tagOf_PrimOp (NewByteArrayOp DoubleRep)= ILIT(122)
-tagOf_PrimOp SameMutableArrayOp = ILIT(123)
-tagOf_PrimOp SameMutableByteArrayOp = ILIT(124)
-tagOf_PrimOp ReadArrayOp = ILIT(125)
-tagOf_PrimOp WriteArrayOp = ILIT(126)
-tagOf_PrimOp IndexArrayOp = ILIT(127)
-tagOf_PrimOp (ReadByteArrayOp CharRep) = ILIT(128)
-tagOf_PrimOp (ReadByteArrayOp IntRep) = ILIT(129)
-tagOf_PrimOp (ReadByteArrayOp AddrRep) = ILIT(130)
-tagOf_PrimOp (ReadByteArrayOp FloatRep) = ILIT(131)
-tagOf_PrimOp (ReadByteArrayOp DoubleRep) = ILIT(132)
-tagOf_PrimOp (WriteByteArrayOp CharRep) = ILIT(133)
-tagOf_PrimOp (WriteByteArrayOp IntRep) = ILIT(134)
-tagOf_PrimOp (WriteByteArrayOp AddrRep) = ILIT(135)
-tagOf_PrimOp (WriteByteArrayOp FloatRep) = ILIT(136)
-tagOf_PrimOp (WriteByteArrayOp DoubleRep) = ILIT(137)
-tagOf_PrimOp (IndexByteArrayOp CharRep) = ILIT(138)
-tagOf_PrimOp (IndexByteArrayOp IntRep) = ILIT(139)
-tagOf_PrimOp (IndexByteArrayOp AddrRep) = ILIT(140)
-tagOf_PrimOp (IndexByteArrayOp FloatRep) = ILIT(141)
-tagOf_PrimOp (IndexByteArrayOp DoubleRep) = ILIT(142)
-tagOf_PrimOp (IndexOffAddrOp CharRep) = ILIT(143)
-tagOf_PrimOp (IndexOffAddrOp IntRep) = ILIT(144)
-tagOf_PrimOp (IndexOffAddrOp AddrRep) = ILIT(145)
-tagOf_PrimOp (IndexOffAddrOp FloatRep) = ILIT(146)
-tagOf_PrimOp (IndexOffAddrOp DoubleRep) = ILIT(147)
-tagOf_PrimOp (IndexOffForeignObjOp CharRep) = ILIT(148)
-tagOf_PrimOp (IndexOffForeignObjOp IntRep) = ILIT(149)
-tagOf_PrimOp (IndexOffForeignObjOp AddrRep) = ILIT(150)
-tagOf_PrimOp (IndexOffForeignObjOp FloatRep) = ILIT(151)
-tagOf_PrimOp (IndexOffForeignObjOp DoubleRep) = ILIT(152)
-tagOf_PrimOp UnsafeFreezeArrayOp = ILIT(153)
-tagOf_PrimOp UnsafeFreezeByteArrayOp = ILIT(154)
-tagOf_PrimOp NewSynchVarOp = ILIT(155)
-tagOf_PrimOp TakeMVarOp = ILIT(156)
-tagOf_PrimOp PutMVarOp = ILIT(157)
-tagOf_PrimOp ReadIVarOp = ILIT(158)
-tagOf_PrimOp WriteIVarOp = ILIT(159)
-tagOf_PrimOp MakeForeignObjOp = ILIT(160)
-tagOf_PrimOp WriteForeignObjOp = ILIT(161)
-tagOf_PrimOp MakeStablePtrOp = ILIT(162)
-tagOf_PrimOp DeRefStablePtrOp = ILIT(163)
-tagOf_PrimOp (CCallOp _ _ _ _ _) = ILIT(164)
-tagOf_PrimOp ErrorIOPrimOp = ILIT(165)
-tagOf_PrimOp ReallyUnsafePtrEqualityOp = ILIT(166)
-tagOf_PrimOp SeqOp = ILIT(167)
-tagOf_PrimOp ParOp = ILIT(168)
-tagOf_PrimOp ForkOp = ILIT(169)
-tagOf_PrimOp DelayOp = ILIT(170)
-tagOf_PrimOp WaitReadOp = ILIT(171)
-tagOf_PrimOp WaitWriteOp = ILIT(172)
-
-tagOf_PrimOp ParGlobalOp = ILIT(173)
-tagOf_PrimOp ParLocalOp = ILIT(174)
-tagOf_PrimOp ParAtOp = ILIT(175)
-tagOf_PrimOp ParAtAbsOp = ILIT(176)
-tagOf_PrimOp ParAtRelOp = ILIT(177)
-tagOf_PrimOp ParAtForNowOp = ILIT(178)
-tagOf_PrimOp CopyableOp = ILIT(179)
-tagOf_PrimOp NoFollowOp = ILIT(180)
+tagOf_PrimOp CharGtOp = (ILIT(1) :: FAST_INT)
+tagOf_PrimOp CharGeOp = ILIT( 2)
+tagOf_PrimOp CharEqOp = ILIT( 3)
+tagOf_PrimOp CharNeOp = ILIT( 4)
+tagOf_PrimOp CharLtOp = ILIT( 5)
+tagOf_PrimOp CharLeOp = ILIT( 6)
+tagOf_PrimOp IntGtOp = ILIT( 7)
+tagOf_PrimOp IntGeOp = ILIT( 8)
+tagOf_PrimOp IntEqOp = ILIT( 9)
+tagOf_PrimOp IntNeOp = ILIT( 10)
+tagOf_PrimOp IntLtOp = ILIT( 11)
+tagOf_PrimOp IntLeOp = ILIT( 12)
+tagOf_PrimOp WordGtOp = ILIT( 13)
+tagOf_PrimOp WordGeOp = ILIT( 14)
+tagOf_PrimOp WordEqOp = ILIT( 15)
+tagOf_PrimOp WordNeOp = ILIT( 16)
+tagOf_PrimOp WordLtOp = ILIT( 17)
+tagOf_PrimOp WordLeOp = ILIT( 18)
+tagOf_PrimOp AddrGtOp = ILIT( 19)
+tagOf_PrimOp AddrGeOp = ILIT( 20)
+tagOf_PrimOp AddrEqOp = ILIT( 21)
+tagOf_PrimOp AddrNeOp = ILIT( 22)
+tagOf_PrimOp AddrLtOp = ILIT( 23)
+tagOf_PrimOp AddrLeOp = ILIT( 24)
+tagOf_PrimOp FloatGtOp = ILIT( 25)
+tagOf_PrimOp FloatGeOp = ILIT( 26)
+tagOf_PrimOp FloatEqOp = ILIT( 27)
+tagOf_PrimOp FloatNeOp = ILIT( 28)
+tagOf_PrimOp FloatLtOp = ILIT( 29)
+tagOf_PrimOp FloatLeOp = ILIT( 30)
+tagOf_PrimOp DoubleGtOp = ILIT( 31)
+tagOf_PrimOp DoubleGeOp = ILIT( 32)
+tagOf_PrimOp DoubleEqOp = ILIT( 33)
+tagOf_PrimOp DoubleNeOp = ILIT( 34)
+tagOf_PrimOp DoubleLtOp = ILIT( 35)
+tagOf_PrimOp DoubleLeOp = ILIT( 36)
+tagOf_PrimOp OrdOp = ILIT( 37)
+tagOf_PrimOp ChrOp = ILIT( 38)
+tagOf_PrimOp IntAddOp = ILIT( 39)
+tagOf_PrimOp IntSubOp = ILIT( 40)
+tagOf_PrimOp IntMulOp = ILIT( 41)
+tagOf_PrimOp IntQuotOp = ILIT( 42)
+tagOf_PrimOp IntRemOp = ILIT( 44)
+tagOf_PrimOp IntNegOp = ILIT( 45)
+tagOf_PrimOp IntAbsOp = ILIT( 46)
+tagOf_PrimOp AndOp = ILIT( 47)
+tagOf_PrimOp OrOp = ILIT( 48)
+tagOf_PrimOp NotOp = ILIT( 49)
+tagOf_PrimOp XorOp = ILIT( 50)
+tagOf_PrimOp SllOp = ILIT( 51)
+tagOf_PrimOp SraOp = ILIT( 52)
+tagOf_PrimOp SrlOp = ILIT( 53)
+tagOf_PrimOp ISllOp = ILIT( 54)
+tagOf_PrimOp ISraOp = ILIT( 55)
+tagOf_PrimOp ISrlOp = ILIT( 56)
+tagOf_PrimOp Int2WordOp = ILIT( 57)
+tagOf_PrimOp Word2IntOp = ILIT( 58)
+tagOf_PrimOp Int2AddrOp = ILIT( 59)
+tagOf_PrimOp Addr2IntOp = ILIT( 60)
+tagOf_PrimOp FloatAddOp = ILIT( 61)
+tagOf_PrimOp FloatSubOp = ILIT( 62)
+tagOf_PrimOp FloatMulOp = ILIT( 63)
+tagOf_PrimOp FloatDivOp = ILIT( 64)
+tagOf_PrimOp FloatNegOp = ILIT( 65)
+tagOf_PrimOp Float2IntOp = ILIT( 66)
+tagOf_PrimOp Int2FloatOp = ILIT( 67)
+tagOf_PrimOp FloatExpOp = ILIT( 68)
+tagOf_PrimOp FloatLogOp = ILIT( 69)
+tagOf_PrimOp FloatSqrtOp = ILIT( 70)
+tagOf_PrimOp FloatSinOp = ILIT( 71)
+tagOf_PrimOp FloatCosOp = ILIT( 72)
+tagOf_PrimOp FloatTanOp = ILIT( 73)
+tagOf_PrimOp FloatAsinOp = ILIT( 74)
+tagOf_PrimOp FloatAcosOp = ILIT( 75)
+tagOf_PrimOp FloatAtanOp = ILIT( 76)
+tagOf_PrimOp FloatSinhOp = ILIT( 77)
+tagOf_PrimOp FloatCoshOp = ILIT( 78)
+tagOf_PrimOp FloatTanhOp = ILIT( 79)
+tagOf_PrimOp FloatPowerOp = ILIT( 80)
+tagOf_PrimOp DoubleAddOp = ILIT( 81)
+tagOf_PrimOp DoubleSubOp = ILIT( 82)
+tagOf_PrimOp DoubleMulOp = ILIT( 83)
+tagOf_PrimOp DoubleDivOp = ILIT( 84)
+tagOf_PrimOp DoubleNegOp = ILIT( 85)
+tagOf_PrimOp Double2IntOp = ILIT( 86)
+tagOf_PrimOp Int2DoubleOp = ILIT( 87)
+tagOf_PrimOp Double2FloatOp = ILIT( 88)
+tagOf_PrimOp Float2DoubleOp = ILIT( 89)
+tagOf_PrimOp DoubleExpOp = ILIT( 90)
+tagOf_PrimOp DoubleLogOp = ILIT( 91)
+tagOf_PrimOp DoubleSqrtOp = ILIT( 92)
+tagOf_PrimOp DoubleSinOp = ILIT( 93)
+tagOf_PrimOp DoubleCosOp = ILIT( 94)
+tagOf_PrimOp DoubleTanOp = ILIT( 95)
+tagOf_PrimOp DoubleAsinOp = ILIT( 96)
+tagOf_PrimOp DoubleAcosOp = ILIT( 97)
+tagOf_PrimOp DoubleAtanOp = ILIT( 98)
+tagOf_PrimOp DoubleSinhOp = ILIT( 99)
+tagOf_PrimOp DoubleCoshOp = ILIT(100)
+tagOf_PrimOp DoubleTanhOp = ILIT(101)
+tagOf_PrimOp DoublePowerOp = ILIT(102)
+tagOf_PrimOp IntegerAddOp = ILIT(103)
+tagOf_PrimOp IntegerSubOp = ILIT(104)
+tagOf_PrimOp IntegerMulOp = ILIT(105)
+tagOf_PrimOp IntegerQuotRemOp = ILIT(106)
+tagOf_PrimOp IntegerDivModOp = ILIT(107)
+tagOf_PrimOp IntegerNegOp = ILIT(108)
+tagOf_PrimOp IntegerCmpOp = ILIT(109)
+tagOf_PrimOp Integer2IntOp = ILIT(110)
+tagOf_PrimOp Int2IntegerOp = ILIT(111)
+tagOf_PrimOp Word2IntegerOp = ILIT(112)
+tagOf_PrimOp Addr2IntegerOp = ILIT(113)
+tagOf_PrimOp FloatEncodeOp = ILIT(114)
+tagOf_PrimOp FloatDecodeOp = ILIT(115)
+tagOf_PrimOp DoubleEncodeOp = ILIT(116)
+tagOf_PrimOp DoubleDecodeOp = ILIT(117)
+tagOf_PrimOp NewArrayOp = ILIT(118)
+tagOf_PrimOp (NewByteArrayOp CharRep) = ILIT(119)
+tagOf_PrimOp (NewByteArrayOp IntRep) = ILIT(120)
+tagOf_PrimOp (NewByteArrayOp AddrRep) = ILIT(121)
+tagOf_PrimOp (NewByteArrayOp FloatRep) = ILIT(122)
+tagOf_PrimOp (NewByteArrayOp DoubleRep) = ILIT(123)
+tagOf_PrimOp SameMutableArrayOp = ILIT(124)
+tagOf_PrimOp SameMutableByteArrayOp = ILIT(125)
+tagOf_PrimOp ReadArrayOp = ILIT(126)
+tagOf_PrimOp WriteArrayOp = ILIT(127)
+tagOf_PrimOp IndexArrayOp = ILIT(128)
+tagOf_PrimOp (ReadByteArrayOp CharRep) = ILIT(129)
+tagOf_PrimOp (ReadByteArrayOp IntRep) = ILIT(130)
+tagOf_PrimOp (ReadByteArrayOp AddrRep) = ILIT(131)
+tagOf_PrimOp (ReadByteArrayOp FloatRep) = ILIT(132)
+tagOf_PrimOp (ReadByteArrayOp DoubleRep) = ILIT(133)
+tagOf_PrimOp (WriteByteArrayOp CharRep) = ILIT(134)
+tagOf_PrimOp (WriteByteArrayOp IntRep) = ILIT(135)
+tagOf_PrimOp (WriteByteArrayOp AddrRep) = ILIT(136)
+tagOf_PrimOp (WriteByteArrayOp FloatRep) = ILIT(137)
+tagOf_PrimOp (WriteByteArrayOp DoubleRep) = ILIT(138)
+tagOf_PrimOp (IndexByteArrayOp CharRep) = ILIT(139)
+tagOf_PrimOp (IndexByteArrayOp IntRep) = ILIT(140)
+tagOf_PrimOp (IndexByteArrayOp AddrRep) = ILIT(141)
+tagOf_PrimOp (IndexByteArrayOp FloatRep) = ILIT(142)
+tagOf_PrimOp (IndexByteArrayOp DoubleRep) = ILIT(143)
+tagOf_PrimOp (IndexOffAddrOp CharRep) = ILIT(144)
+tagOf_PrimOp (IndexOffAddrOp IntRep) = ILIT(145)
+tagOf_PrimOp (IndexOffAddrOp AddrRep) = ILIT(146)
+tagOf_PrimOp (IndexOffAddrOp FloatRep) = ILIT(147)
+tagOf_PrimOp (IndexOffAddrOp DoubleRep) = ILIT(148)
+tagOf_PrimOp (IndexOffForeignObjOp CharRep) = ILIT(149)
+tagOf_PrimOp (IndexOffForeignObjOp IntRep) = ILIT(150)
+tagOf_PrimOp (IndexOffForeignObjOp AddrRep) = ILIT(151)
+tagOf_PrimOp (IndexOffForeignObjOp FloatRep) = ILIT(152)
+tagOf_PrimOp (IndexOffForeignObjOp DoubleRep) = ILIT(153)
+tagOf_PrimOp UnsafeFreezeArrayOp = ILIT(154)
+tagOf_PrimOp UnsafeFreezeByteArrayOp = ILIT(155)
+tagOf_PrimOp NewSynchVarOp = ILIT(156)
+tagOf_PrimOp TakeMVarOp = ILIT(157)
+tagOf_PrimOp PutMVarOp = ILIT(158)
+tagOf_PrimOp ReadIVarOp = ILIT(159)
+tagOf_PrimOp WriteIVarOp = ILIT(160)
+tagOf_PrimOp MakeForeignObjOp = ILIT(161)
+tagOf_PrimOp WriteForeignObjOp = ILIT(162)
+tagOf_PrimOp MakeStablePtrOp = ILIT(163)
+tagOf_PrimOp DeRefStablePtrOp = ILIT(164)
+tagOf_PrimOp (CCallOp _ _ _ _ _) = ILIT(165)
+tagOf_PrimOp ErrorIOPrimOp = ILIT(166)
+tagOf_PrimOp ReallyUnsafePtrEqualityOp = ILIT(167)
+tagOf_PrimOp SeqOp = ILIT(168)
+tagOf_PrimOp ParOp = ILIT(169)
+tagOf_PrimOp ForkOp = ILIT(170)
+tagOf_PrimOp DelayOp = ILIT(171)
+tagOf_PrimOp WaitReadOp = ILIT(172)
+tagOf_PrimOp WaitWriteOp = ILIT(173)
+
+tagOf_PrimOp ParGlobalOp = ILIT(174)
+tagOf_PrimOp ParLocalOp = ILIT(175)
+tagOf_PrimOp ParAtOp = ILIT(176)
+tagOf_PrimOp ParAtAbsOp = ILIT(177)
+tagOf_PrimOp ParAtRelOp = ILIT(178)
+tagOf_PrimOp ParAtForNowOp = ILIT(179)
+tagOf_PrimOp CopyableOp = ILIT(180)
+tagOf_PrimOp NoFollowOp = ILIT(181)
tagOf_PrimOp _ = panic# "tagOf_PrimOp: pattern-match"
@@ -498,6 +499,7 @@ allThePrimOps
AndOp,
OrOp,
NotOp,
+ XorOp,
SllOp,
SraOp,
SrlOp,
@@ -792,6 +794,7 @@ A @Word#@ is an unsigned @Int#@.
primOpInfo AndOp = Dyadic SLIT("and#") wordPrimTy
primOpInfo OrOp = Dyadic SLIT("or#") wordPrimTy
primOpInfo NotOp = Monadic SLIT("not#") wordPrimTy
+primOpInfo XorOp = Monadic SLIT("xor#") wordPrimTy
primOpInfo SllOp
= PrimResult SLIT("shiftL#") [] [wordPrimTy, intPrimTy] wordPrimTyCon WordRep []
@@ -1765,6 +1768,7 @@ commutableOp IntAddOp = True
commutableOp IntMulOp = True
commutableOp AndOp = True
commutableOp OrOp = True
+commutableOp XorOp = True
commutableOp IntEqOp = True
commutableOp IntNeOp = True
commutableOp IntegerAddOp = True