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-07-08 10:28:37 +0100
commit8fb5fd9429a5c62d83402cb54b1de1ae908f9b54 (patch)
treed7fd489e8a48b348a6ae1c874c4a9858f29a8f05 /includes/CodeGen.Platform.hs
parenta7a9b85ca19f7f5ac555e855a03cc60154ff185e (diff)
downloadhaskell-simd.tar.gz
Pass 256-bit-wide vectors in registers.simd
Diffstat (limited to 'includes/CodeGen.Platform.hs')
-rw-r--r--includes/CodeGen.Platform.hs41
1 files changed, 41 insertions, 0 deletions
diff --git a/includes/CodeGen.Platform.hs b/includes/CodeGen.Platform.hs
index beff19601d..9be7c054ab 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_SSE_REG == 0 */
#ifdef REG_F1
,FloatReg 1
@@ -594,6 +629,12 @@ globalRegMaybe (XmmReg 3) = Just (RealRegSingle REG_XMM3)
globalRegMaybe (XmmReg 4) = Just (RealRegSingle REG_XMM4)
globalRegMaybe (XmmReg 5) = Just (RealRegSingle REG_XMM5)
globalRegMaybe (XmmReg 6) = Just (RealRegSingle REG_XMM6)
+globalRegMaybe (YmmReg 1) = Just (RealRegSingle REG_YMM1)
+globalRegMaybe (YmmReg 2) = Just (RealRegSingle REG_YMM2)
+globalRegMaybe (YmmReg 3) = Just (RealRegSingle REG_YMM3)
+globalRegMaybe (YmmReg 4) = Just (RealRegSingle REG_YMM4)
+globalRegMaybe (YmmReg 5) = Just (RealRegSingle REG_YMM5)
+globalRegMaybe (YmmReg 6) = Just (RealRegSingle REG_YMM6)
# endif
# ifdef REG_Sp
globalRegMaybe Sp = Just (RealRegSingle REG_Sp)