diff options
author | Geoffrey Mainland <gmainlan@microsoft.com> | 2013-02-14 23:28:39 +0000 |
---|---|---|
committer | Geoffrey Mainland <gmainlan@microsoft.com> | 2013-07-08 10:28:37 +0100 |
commit | 8fb5fd9429a5c62d83402cb54b1de1ae908f9b54 (patch) | |
tree | d7fd489e8a48b348a6ae1c874c4a9858f29a8f05 /compiler/cmm/CmmExpr.hs | |
parent | a7a9b85ca19f7f5ac555e855a03cc60154ff185e (diff) | |
download | haskell-8fb5fd9429a5c62d83402cb54b1de1ae908f9b54.tar.gz |
Pass 256-bit-wide vectors in registers.simd
Diffstat (limited to 'compiler/cmm/CmmExpr.hs')
-rw-r--r-- | compiler/cmm/CmmExpr.hs | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/compiler/cmm/CmmExpr.hs b/compiler/cmm/CmmExpr.hs index 1df8e848b8..320c09f801 100644 --- a/compiler/cmm/CmmExpr.hs +++ b/compiler/cmm/CmmExpr.hs @@ -339,6 +339,9 @@ data GlobalReg | XmmReg -- 128-bit SIMD vector register {-# UNPACK #-} !Int -- its number + | YmmReg -- 256-bit SIMD vector register + {-# UNPACK #-} !Int -- its number + -- STG registers | Sp -- Stack ptr; points to last occupied stack location. | SpLim -- Stack limit @@ -375,6 +378,7 @@ instance Eq GlobalReg where DoubleReg i == DoubleReg j = i==j LongReg i == LongReg j = i==j XmmReg i == XmmReg j = i==j + YmmReg i == YmmReg j = i==j Sp == Sp = True SpLim == SpLim = True Hp == Hp = True @@ -397,6 +401,7 @@ instance Ord GlobalReg where compare (DoubleReg i) (DoubleReg j) = compare i j compare (LongReg i) (LongReg j) = compare i j compare (XmmReg i) (XmmReg j) = compare i j + compare (YmmReg i) (YmmReg j) = compare i j compare Sp Sp = EQ compare SpLim SpLim = EQ compare Hp Hp = EQ @@ -420,6 +425,8 @@ instance Ord GlobalReg where compare _ (LongReg _) = GT compare (XmmReg _) _ = LT compare _ (XmmReg _) = GT + compare (YmmReg _) _ = LT + compare _ (YmmReg _) = GT compare Sp _ = LT compare _ Sp = GT compare SpLim _ = LT @@ -463,6 +470,7 @@ globalRegType _ (FloatReg _) = cmmFloat W32 globalRegType _ (DoubleReg _) = cmmFloat W64 globalRegType _ (LongReg _) = cmmBits W64 globalRegType _ (XmmReg _) = cmmVec 4 (cmmBits W32) +globalRegType _ (YmmReg _) = cmmVec 8 (cmmBits W32) globalRegType dflags Hp = gcWord dflags -- The initialiser for all @@ -475,4 +483,5 @@ isArgReg (FloatReg {}) = True isArgReg (DoubleReg {}) = True isArgReg (LongReg {}) = True isArgReg (XmmReg {}) = True +isArgReg (YmmReg {}) = True isArgReg _ = False |