Repository : ssh://darcs.haskell.org//srv/darcs/ghc On branch : simd
http://hackage.haskell.org/trac/ghc/changeset/f122d0ff4e129b98689677f013e79df5544983a0 >--------------------------------------------------------------- commit f122d0ff4e129b98689677f013e79df5544983a0 Merge: 7707eef... 68b59ce... Author: Geoffrey Mainland <[email protected]> Date: Fri Feb 10 16:39:23 2012 +0000 Merge remote-tracking branch 'origin/master' into simd Conflicts: compiler/llvmGen/Llvm/PpLlvm.hs aclocal.m4 | 30 +- compiler/basicTypes/DataCon.lhs | 93 +- compiler/codeGen/StgCmmPrim.hs | 24 +- compiler/coreSyn/CoreLint.lhs | 231 +- compiler/deSugar/DsBinds.lhs | 5 +- compiler/deSugar/DsExpr.lhs | 10 +- compiler/deSugar/DsExpr.lhs-boot | 15 +- compiler/deSugar/DsForeign.lhs | 2 +- compiler/deSugar/DsListComp.lhs | 2 +- compiler/deSugar/DsMeta.hs | 16 +- compiler/deSugar/DsMonad.lhs | 9 +- compiler/deSugar/Match.lhs | 2 +- compiler/deSugar/Match.lhs-boot | 51 +- compiler/ghc.cabal.in | 6 +- compiler/ghc.mk | 12 +- compiler/hsSyn/Convert.lhs | 20 +- compiler/hsSyn/HsDecls.lhs | 61 +- compiler/hsSyn/HsExpr.lhs-boot | 19 +- compiler/hsSyn/HsUtils.lhs | 24 +- compiler/iface/BinIface.hs | 2 +- compiler/iface/BuildTyCl.lhs | 8 - compiler/iface/LoadIface.lhs | 6 +- compiler/llvmGen/Llvm.hs | 3 + compiler/llvmGen/Llvm/AbsSyn.hs | 25 +- compiler/llvmGen/Llvm/PpLlvm.hs | 14 + compiler/llvmGen/LlvmCodeGen/CodeGen.hs | 31 +- compiler/main/DynFlags.hs | 14 +- compiler/main/HscMain.hs | 68 +- compiler/main/HscStats.lhs | 13 +- compiler/main/HscTypes.lhs | 8 +- compiler/main/InteractiveEval.hs | 21 +- compiler/main/Packages.lhs | 2 +- compiler/nativeGen/SPARC/CodeGen/Gen32.hs-boot | 11 +- compiler/parser/Lexer.x | 2 - compiler/parser/Parser.y.pp | 58 +- compiler/prelude/TysWiredIn.lhs | 20 +- compiler/rename/RnEnv.lhs | 12 +- compiler/rename/RnExpr.lhs | 2 +- compiler/rename/RnExpr.lhs-boot | 19 +- compiler/rename/RnNames.lhs | 38 +- compiler/rename/RnSource.lhs | 25 +- compiler/rename/RnTypes.lhs | 4 +- compiler/simplCore/SimplMonad.lhs | 8 +- compiler/simplCore/SimplUtils.lhs | 4 +- compiler/simplCore/Simplify.lhs | 8 +- compiler/typecheck/FamInst.lhs | 3 +- compiler/typecheck/Inst.lhs | 2 +- compiler/typecheck/TcBinds.lhs | 4 +- compiler/typecheck/TcClassDcl.lhs | 2 +- compiler/typecheck/TcDeriv.lhs | 8 +- compiler/typecheck/TcEnv.lhs | 2 +- compiler/typecheck/TcErrors.lhs | 2 +- compiler/typecheck/TcExpr.lhs | 2 +- compiler/typecheck/TcExpr.lhs-boot | 25 +- compiler/typecheck/TcForeign.lhs | 12 +- compiler/typecheck/TcGenGenerics.lhs | 2 +- compiler/typecheck/TcHsType.lhs | 59 +- compiler/typecheck/TcInstDcls.lhs | 74 +- compiler/typecheck/TcMType.lhs | 4 +- compiler/typecheck/TcMatches.lhs | 2 +- compiler/typecheck/TcMatches.lhs-boot | 23 +- compiler/typecheck/TcRnDriver.lhs | 1279 +++++----- compiler/typecheck/TcRnMonad.lhs | 21 +- compiler/typecheck/TcRnTypes.lhs | 4 + compiler/typecheck/TcSMonad.lhs | 2 +- compiler/typecheck/TcSimplify.lhs-old | 3297 ------------------------ compiler/typecheck/TcSplice.lhs | 3 +- compiler/typecheck/TcSplice.lhs-boot | 27 +- compiler/typecheck/TcTyClsDecls.lhs | 11 +- compiler/typecheck/TcUnify.lhs-boot | 7 - compiler/types/Kind.lhs | 61 +- compiler/types/TyCon.lhs | 48 +- compiler/types/TyCon.lhs-boot | 15 +- compiler/utils/IOEnv.hs | 5 + configure.ac | 93 +- distrib/configure.ac.in | 16 +- distrib/mkDocs/mkDocs | 2 +- docs/users_guide/7.6.1-notes.xml | 427 +++ docs/users_guide/flags.xml | 9 +- docs/users_guide/intro.xml | 2 +- docs/users_guide/ug-ent.xml.in | 2 +- ghc.mk | 51 +- ghc/GhciMonad.hs | 17 +- ghc/InteractiveUI.hs | 28 +- ghc/Main.hs | 11 +- ghc/ghc-bin.cabal.in | 4 +- ghc/ghc.mk | 8 +- includes/ghc.mk | 22 +- libffi/ghc.mk | 2 +- libraries/bin-package-db/bin-package-db.cabal | 2 +- mk/compiler-ghc.mk | 1 - mk/config.mk.in | 49 +- mk/validate-settings.mk | 6 +- rts/Capability.h | 7 +- rts/RtsUtils.c | 2 +- rts/StgCRun.c | 6 +- rts/posix/Select.c | 12 +- rules/build-package-data.mk | 4 +- rules/build-package.mk | 2 +- rules/haddock.mk | 2 +- rules/shell-wrapper.mk | 2 +- sync-all | 4 + utils/ghc-cabal/ghc-cabal.cabal | 4 +- utils/ghc-pkg/ghc.mk | 33 +- utils/ghctags/Main.hs | 2 +- 105 files changed, 2183 insertions(+), 4713 deletions(-) diff --cc compiler/llvmGen/Llvm/PpLlvm.hs index ad435b8,c217778..760cdc1 --- a/compiler/llvmGen/Llvm/PpLlvm.hs +++ b/compiler/llvmGen/Llvm/PpLlvm.hs @@@ -303,31 -302,27 +304,44 @@@ ppCmpOp op left right ppAssignment :: LlvmVar -> Doc -> Doc ppAssignment var expr = (text $ getName var) <+> equals <+> expr +-- XXX: On x86, vector types need to be 16-byte aligned for aligned access, but +-- we have no way of guaranteeing that this is true with GHC (we would need to +-- modify the layout of the stack and closures, change the storage manager, +-- etc.). So, we blindly tell LLVM that *any* vector store or load could be +-- unaligned. In the future we may be able to guarantee that certain vector +-- access patterns are aligned, in which case we will need a more granular way +-- of specifying alignment. + ppFence :: Bool -> LlvmSyncOrdering -> Doc + ppFence st ord = + let singleThread = case st of True -> text "singlethread" + False -> empty + in text "fence" <+> singleThread <+> ppSyncOrdering ord + + ppSyncOrdering :: LlvmSyncOrdering -> Doc + ppSyncOrdering SyncUnord = text "unordered" + ppSyncOrdering SyncMonotonic = text "monotonic" + ppSyncOrdering SyncAcquire = text "acquire" + ppSyncOrdering SyncRelease = text "release" + ppSyncOrdering SyncAcqRel = text "acq_rel" + ppSyncOrdering SyncSeqCst = text "seq_cst" ppLoad :: LlvmVar -> Doc -ppLoad var = text "load" <+> texts var - +ppLoad var + | isVecPtrVar var = text "load" <+> texts var <> + comma <+> text "align 1" + | otherwise = text "load" <+> texts var + where + isVecPtrVar :: LlvmVar -> Bool + isVecPtrVar = isVec . pLower . getVarType ppStore :: LlvmVar -> LlvmVar -> Doc -ppStore val dst = text "store" <+> texts val <> comma <+> texts dst - +ppStore val dst + | isVecPtrVar dst = text "store" <+> texts val <> comma <+> texts dst <> + comma <+> text "align 1" + | otherwise = text "store" <+> texts val <> comma <+> texts dst + where + isVecPtrVar :: LlvmVar -> Bool + isVecPtrVar = isVec . pLower . getVarType ppCast :: LlvmCastOp -> LlvmVar -> LlvmType -> Doc ppCast op from to = texts op <+> texts from <+> text "to" <+> texts to _______________________________________________ Cvs-ghc mailing list [email protected] http://www.haskell.org/mailman/listinfo/cvs-ghc
