diff options
author | Paul Monday <paul.monday@parsci.com> | 2011-11-03 15:35:37 -0600 |
---|---|---|
committer | Geoffrey Mainland <gmainlan@microsoft.com> | 2013-02-01 22:00:24 +0000 |
commit | 3984b912854a2261f5bf35e25bf929c15490e71a (patch) | |
tree | 318403ba7b6550e878b9f09574741dea759f1f58 /compiler/nativeGen/X86 | |
parent | 4af62075bbe9e96a3678fc90288496e0c4c7c17d (diff) | |
download | haskell-3984b912854a2261f5bf35e25bf929c15490e71a.tar.gz |
Add the Int32X4# primitive type and associated primops.
Diffstat (limited to 'compiler/nativeGen/X86')
-rw-r--r-- | compiler/nativeGen/X86/CodeGen.hs | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/compiler/nativeGen/X86/CodeGen.hs b/compiler/nativeGen/X86/CodeGen.hs index 46e8e9b81f..0df95a2f73 100644 --- a/compiler/nativeGen/X86/CodeGen.hs +++ b/compiler/nativeGen/X86/CodeGen.hs @@ -604,6 +604,12 @@ getRegister' dflags is32Bit (CmmMachOp mop [x]) = do -- unary MachOps MO_V_Insert {} -> needLlvm MO_V_Extract {} -> needLlvm + MO_V_Add {} -> needLlvm + MO_V_Sub {} -> needLlvm + MO_V_Mul {} -> needLlvm + MO_VS_Quot {} -> needLlvm + MO_VS_Rem {} -> needLlvm + MO_VS_Neg {} -> needLlvm MO_VF_Add {} -> needLlvm MO_VF_Sub {} -> needLlvm MO_VF_Mul {} -> needLlvm @@ -704,6 +710,12 @@ getRegister' _ is32Bit (CmmMachOp mop [x, y]) = do -- dyadic MachOps MO_V_Insert {} -> needLlvm MO_V_Extract {} -> needLlvm + MO_V_Add {} -> needLlvm + MO_V_Sub {} -> needLlvm + MO_V_Mul {} -> needLlvm + MO_VS_Quot {} -> needLlvm + MO_VS_Rem {} -> needLlvm + MO_VS_Neg {} -> needLlvm MO_VF_Add {} -> needLlvm MO_VF_Sub {} -> needLlvm MO_VF_Mul {} -> needLlvm @@ -2712,6 +2724,12 @@ sse2NegCode w x = do isVecExpr :: CmmExpr -> Bool isVecExpr (CmmMachOp (MO_V_Insert {}) _) = True isVecExpr (CmmMachOp (MO_V_Extract {}) _) = True +isVecExpr (CmmMachOp (MO_V_Add {}) _) = True +isVecExpr (CmmMachOp (MO_V_Sub {}) _) = True +isVecExpr (CmmMachOp (MO_V_Mul {}) _) = True +isVecExpr (CmmMachOp (MO_VS_Quot {}) _) = True +isVecExpr (CmmMachOp (MO_VS_Rem {}) _) = True +isVecExpr (CmmMachOp (MO_VS_Neg {}) _) = True isVecExpr (CmmMachOp (MO_VF_Add {}) _) = True isVecExpr (CmmMachOp (MO_VF_Sub {}) _) = True isVecExpr (CmmMachOp (MO_VF_Mul {}) _) = True |