summaryrefslogtreecommitdiff
path: root/includes/CodeGen.Platform.hs
diff options
context:
space:
mode:
authorGeoffrey Mainland <gmainlan@microsoft.com>2013-02-14 23:28:39 +0000
committerGeoffrey Mainland <gmainlan@microsoft.com>2013-09-22 22:33:59 -0400
commit0b561f17f158ebd7bba841a3cf6ef602b55e7c61 (patch)
tree1e283bf675a53598fb1a169d89bd63c21333c854 /includes/CodeGen.Platform.hs
parentf8c51678b0e60aad8ee1e4c57af746fa792a3546 (diff)
downloadhaskell-0b561f17f158ebd7bba841a3cf6ef602b55e7c61.tar.gz
Pass 256-bit-wide vectors in registers.
Diffstat (limited to 'includes/CodeGen.Platform.hs')
-rw-r--r--includes/CodeGen.Platform.hs55
1 files changed, 55 insertions, 0 deletions
diff --git a/includes/CodeGen.Platform.hs b/includes/CodeGen.Platform.hs
index ca0a905d40..cff60b3e8c 100644
--- a/includes/CodeGen.Platform.hs
+++ b/includes/CodeGen.Platform.hs
@@ -65,6 +65,23 @@ import Reg
# define xmm14 38
# define xmm15 39
+# define ymm0 40
+# define ymm1 41
+# define ymm2 42
+# define ymm3 43
+# define ymm4 44
+# define ymm5 45
+# define ymm6 46
+# define ymm7 47
+# define ymm8 48
+# define ymm9 49
+# define ymm10 50
+# define ymm11 51
+# define ymm12 52
+# define ymm13 53
+# define ymm14 54
+# define ymm15 55
+
#elif MACHREGS_powerpc
# define r0 0
@@ -391,6 +408,9 @@ activeStgRegs = [
#ifdef REG_XMM1
,XmmReg 1
#endif
+#ifdef REG_YMM1
+ ,YmmReg 1
+#endif
#ifdef REG_F2
,FloatReg 2
#endif
@@ -400,6 +420,9 @@ activeStgRegs = [
#ifdef REG_XMM2
,XmmReg 2
#endif
+#ifdef REG_YMM2
+ ,YmmReg 2
+#endif
#ifdef REG_F3
,FloatReg 3
#endif
@@ -409,6 +432,9 @@ activeStgRegs = [
#ifdef REG_XMM3
,XmmReg 3
#endif
+#ifdef REG_YMM3
+ ,YmmReg 3
+#endif
#ifdef REG_F4
,FloatReg 4
#endif
@@ -418,6 +444,9 @@ activeStgRegs = [
#ifdef REG_XMM4
,XmmReg 4
#endif
+#ifdef REG_YMM4
+ ,YmmReg 4
+#endif
#ifdef REG_F5
,FloatReg 5
#endif
@@ -427,6 +456,9 @@ activeStgRegs = [
#ifdef REG_XMM5
,XmmReg 5
#endif
+#ifdef REG_YMM5
+ ,YmmReg 5
+#endif
#ifdef REG_F6
,FloatReg 6
#endif
@@ -436,6 +468,9 @@ activeStgRegs = [
#ifdef REG_XMM6
,XmmReg 6
#endif
+#ifdef REG_YMM6
+ ,YmmReg 6
+#endif
#else /* MAX_REAL_XMM_REG == 0 */
#ifdef REG_F1
,FloatReg 1
@@ -607,6 +642,26 @@ globalRegMaybe (XmmReg 5) = Just (RealRegSingle REG_XMM5)
globalRegMaybe (XmmReg 6) = Just (RealRegSingle REG_XMM6)
# endif
# endif
+# if MAX_REAL_YMM_REG != 0
+# ifdef REG_YMM1
+globalRegMaybe (YmmReg 1) = Just (RealRegSingle REG_YMM1)
+# endif
+# ifdef REG_YMM2
+globalRegMaybe (YmmReg 2) = Just (RealRegSingle REG_YMM2)
+# endif
+# ifdef REG_YMM3
+globalRegMaybe (YmmReg 3) = Just (RealRegSingle REG_YMM3)
+# endif
+# ifdef REG_YMM4
+globalRegMaybe (YmmReg 4) = Just (RealRegSingle REG_YMM4)
+# endif
+# ifdef REG_YMM5
+globalRegMaybe (YmmReg 5) = Just (RealRegSingle REG_YMM5)
+# endif
+# ifdef REG_YMM6
+globalRegMaybe (YmmReg 6) = Just (RealRegSingle REG_YMM6)
+# endif
+# endif
# ifdef REG_Sp
globalRegMaybe Sp = Just (RealRegSingle REG_Sp)
# endif