From acd795583625401c5554f8e04ec7efca18814011 Mon Sep 17 00:00:00 2001 From: Abhiroop Sarkar Date: Thu, 27 Sep 2018 15:28:46 -0400 Subject: 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 --- includes/CodeGen.Platform.hs | 72 ++++++++++++++++++++++---------------------- 1 file changed, 36 insertions(+), 36 deletions(-) (limited to 'includes') 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) -- cgit v1.2.1