summaryrefslogtreecommitdiff
path: root/includes
diff options
context:
space:
mode:
authorAbhiroop Sarkar <asiamgenius@gmail.com>2018-09-27 15:28:46 -0400
committerMarge Bot <ben+marge-bot@smart-cactus.org>2019-07-03 09:33:39 -0400
commitacd795583625401c5554f8e04ec7efca18814011 (patch)
tree545e529eed21e78592ff326d4ebf9804095ad2cb /includes
parentdf3e5b744db29c085f5bc05f8b609197bcbf9b0c (diff)
downloadhaskell-acd795583625401c5554f8e04ec7efca18814011.tar.gz
Add support for SIMD operations in the NCG
This adds support for constructing vector types from Float#, Double# etc and performing arithmetic operations on them Cleaned-Up-By: Ben Gamari <ben@well-typed.com>
Diffstat (limited to 'includes')
-rw-r--r--includes/CodeGen.Platform.hs72
1 files changed, 36 insertions, 36 deletions
diff --git a/includes/CodeGen.Platform.hs b/includes/CodeGen.Platform.hs
index 27a9324438..34c943d053 100644
--- a/includes/CodeGen.Platform.hs
+++ b/includes/CodeGen.Platform.hs
@@ -495,13 +495,13 @@ activeStgRegs = [
,DoubleReg 1
#endif
#if defined(REG_XMM1)
- ,XmmReg 1
+ ,XmmReg 1 2 W64 Integer
#endif
#if defined(REG_YMM1)
- ,YmmReg 1
+ ,YmmReg 1 4 W64 Integer
#endif
#if defined(REG_ZMM1)
- ,ZmmReg 1
+ ,ZmmReg 1 8 W64 Integer
#endif
#if defined(REG_F2)
,FloatReg 2
@@ -510,13 +510,13 @@ activeStgRegs = [
,DoubleReg 2
#endif
#if defined(REG_XMM2)
- ,XmmReg 2
+ ,XmmReg 2 2 W64 Integer
#endif
#if defined(REG_YMM2)
- ,YmmReg 2
+ ,YmmReg 2 4 W64 Integer
#endif
#if defined(REG_ZMM2)
- ,ZmmReg 2
+ ,ZmmReg 2 8 W64 Integer
#endif
#if defined(REG_F3)
,FloatReg 3
@@ -525,13 +525,13 @@ activeStgRegs = [
,DoubleReg 3
#endif
#if defined(REG_XMM3)
- ,XmmReg 3
+ ,XmmReg 3 2 W64 Integer
#endif
#if defined(REG_YMM3)
- ,YmmReg 3
+ ,YmmReg 3 4 W64 Integer
#endif
#if defined(REG_ZMM3)
- ,ZmmReg 3
+ ,ZmmReg 3 8 W64 Integer
#endif
#if defined(REG_F4)
,FloatReg 4
@@ -540,13 +540,13 @@ activeStgRegs = [
,DoubleReg 4
#endif
#if defined(REG_XMM4)
- ,XmmReg 4
+ ,XmmReg 4 2 W64 Integer
#endif
#if defined(REG_YMM4)
- ,YmmReg 4
+ ,YmmReg 4 4 W64 Integer
#endif
#if defined(REG_ZMM4)
- ,ZmmReg 4
+ ,ZmmReg 4 8 W64 Integer
#endif
#if defined(REG_F5)
,FloatReg 5
@@ -555,13 +555,13 @@ activeStgRegs = [
,DoubleReg 5
#endif
#if defined(REG_XMM5)
- ,XmmReg 5
+ ,XmmReg 5 2 W64 Integer
#endif
#if defined(REG_YMM5)
- ,YmmReg 5
+ ,YmmReg 5 4 W64 Integer
#endif
#if defined(REG_ZMM5)
- ,ZmmReg 5
+ ,ZmmReg 5 8 W64 Integer
#endif
#if defined(REG_F6)
,FloatReg 6
@@ -570,13 +570,13 @@ activeStgRegs = [
,DoubleReg 6
#endif
#if defined(REG_XMM6)
- ,XmmReg 6
+ ,XmmReg 6 2 W64 Integer
#endif
#if defined(REG_YMM6)
- ,YmmReg 6
+ ,YmmReg 6 4 W64 Integer
#endif
#if defined(REG_ZMM6)
- ,ZmmReg 6
+ ,ZmmReg 6 8 W64 Integer
#endif
#else /* MAX_REAL_XMM_REG == 0 */
#if defined(REG_F1)
@@ -733,62 +733,62 @@ globalRegMaybe (DoubleReg 6) =
# endif
# if MAX_REAL_XMM_REG != 0
# if defined(REG_XMM1)
-globalRegMaybe (XmmReg 1) = Just (RealRegSingle REG_XMM1)
+globalRegMaybe (XmmReg 1 _ _ _) = Just (RealRegSingle REG_XMM1)
# endif
# if defined(REG_XMM2)
-globalRegMaybe (XmmReg 2) = Just (RealRegSingle REG_XMM2)
+globalRegMaybe (XmmReg 2 _ _ _) = Just (RealRegSingle REG_XMM2)
# endif
# if defined(REG_XMM3)
-globalRegMaybe (XmmReg 3) = Just (RealRegSingle REG_XMM3)
+globalRegMaybe (XmmReg 3 _ _ _) = Just (RealRegSingle REG_XMM3)
# endif
# if defined(REG_XMM4)
-globalRegMaybe (XmmReg 4) = Just (RealRegSingle REG_XMM4)
+globalRegMaybe (XmmReg 4 _ _ _) = Just (RealRegSingle REG_XMM4)
# endif
# if defined(REG_XMM5)
-globalRegMaybe (XmmReg 5) = Just (RealRegSingle REG_XMM5)
+globalRegMaybe (XmmReg 5 _ _ _) = Just (RealRegSingle REG_XMM5)
# endif
# if defined(REG_XMM6)
-globalRegMaybe (XmmReg 6) = Just (RealRegSingle REG_XMM6)
+globalRegMaybe (XmmReg 6 _ _ _) = Just (RealRegSingle REG_XMM6)
# endif
# endif
# if defined(MAX_REAL_YMM_REG) && MAX_REAL_YMM_REG != 0
# if defined(REG_YMM1)
-globalRegMaybe (YmmReg 1) = Just (RealRegSingle REG_YMM1)
+globalRegMaybe (YmmReg 1 _ _ _) = Just (RealRegSingle REG_YMM1)
# endif
# if defined(REG_YMM2)
-globalRegMaybe (YmmReg 2) = Just (RealRegSingle REG_YMM2)
+globalRegMaybe (YmmReg 2 _ _ _) = Just (RealRegSingle REG_YMM2)
# endif
# if defined(REG_YMM3)
-globalRegMaybe (YmmReg 3) = Just (RealRegSingle REG_YMM3)
+globalRegMaybe (YmmReg 3 _ _ _) = Just (RealRegSingle REG_YMM3)
# endif
# if defined(REG_YMM4)
-globalRegMaybe (YmmReg 4) = Just (RealRegSingle REG_YMM4)
+globalRegMaybe (YmmReg 4 _ _ _) = Just (RealRegSingle REG_YMM4)
# endif
# if defined(REG_YMM5)
-globalRegMaybe (YmmReg 5) = Just (RealRegSingle REG_YMM5)
+globalRegMaybe (YmmReg 5 _ _ _) = Just (RealRegSingle REG_YMM5)
# endif
# if defined(REG_YMM6)
-globalRegMaybe (YmmReg 6) = Just (RealRegSingle REG_YMM6)
+globalRegMaybe (YmmReg 6 _ _ _) = Just (RealRegSingle REG_YMM6)
# endif
# endif
# if defined(MAX_REAL_ZMM_REG) && MAX_REAL_ZMM_REG != 0
# if defined(REG_ZMM1)
-globalRegMaybe (ZmmReg 1) = Just (RealRegSingle REG_ZMM1)
+globalRegMaybe (ZmmReg 1 _ _ _) = Just (RealRegSingle REG_ZMM1)
# endif
# if defined(REG_ZMM2)
-globalRegMaybe (ZmmReg 2) = Just (RealRegSingle REG_ZMM2)
+globalRegMaybe (ZmmReg 2 _ _ _) = Just (RealRegSingle REG_ZMM2)
# endif
# if defined(REG_ZMM3)
-globalRegMaybe (ZmmReg 3) = Just (RealRegSingle REG_ZMM3)
+globalRegMaybe (ZmmReg 3 _ _ _) = Just (RealRegSingle REG_ZMM3)
# endif
# if defined(REG_ZMM4)
-globalRegMaybe (ZmmReg 4) = Just (RealRegSingle REG_ZMM4)
+globalRegMaybe (ZmmReg 4 _ _ _) = Just (RealRegSingle REG_ZMM4)
# endif
# if defined(REG_ZMM5)
-globalRegMaybe (ZmmReg 5) = Just (RealRegSingle REG_ZMM5)
+globalRegMaybe (ZmmReg 5 _ _ _) = Just (RealRegSingle REG_ZMM5)
# endif
# if defined(REG_ZMM6)
-globalRegMaybe (ZmmReg 6) = Just (RealRegSingle REG_ZMM6)
+globalRegMaybe (ZmmReg 6 _ _ _) = Just (RealRegSingle REG_ZMM6)
# endif
# endif
# if defined(REG_Sp)